{"version":3,"sources":["actions/main.js","modules/auth.js","services/helper/protectedAxiosRequest.js","PortalModeWrapper/constants.js","CommunityPortal/apiServices/constants.js","config/keys.js","utility/localStorageService.js","services/helper/index.js","modules/history.js","actions/auth.js","actions/routes.js","data/wisenetMapCountryList.js","utility/formHelper.js","components/Form/Input/Input.js","components/Form/Input/index.js","utility/domHelpers.js","components/Button/Button.js","components/Button/index.js","CommunityPortal/config/general.js","CommunityPortal/config/index.js","utility/sessionStorageService.js","PortalModeWrapper/utils/storageUtils.js","modules/config.js","contexts/WindowWidthContext/WindowWidthContext.js","services/checkoutServices/communityEventCheckoutServices.js","components/Image/Image.js","components/Image/index.js","components/Icons/ErrorAlertWarningIcon.jsx","CommunityPortal/components/ToastContainer/Toast.jsx","CommunityPortal/components/ToastContainer/ToastContainer.jsx","CommunityPortal/components/Icons/CalendarDaysFilledIcon/index.js","CommunityPortal/components/Icons/CalendarDaysFilledIcon/CalendarDaysFilledIcon.jsx","CommunityPortal/components/Icons/CalendarDaysIcon/index.js","CommunityPortal/components/Icons/CalendarDaysIcon/CalendarDaysIcon.jsx","CommunityPortal/components/Icons/ChatFilledIcon/index.js","CommunityPortal/components/Icons/ChatFilledIcon/ChatFilledIcon.jsx","CommunityPortal/components/Icons/ChatIcon/index.js","CommunityPortal/components/Icons/ChatIcon/ChatIcon.jsx","CommunityPortal/components/Icons/ConversationIcon/ConversationIcon.js","CommunityPortal/components/Icons/ConversationIcon/index.js","CommunityPortal/components/Icons/HomeIcon/HomeIcon.js","CommunityPortal/components/Icons/HomeIcon/index.js","CommunityPortal/components/Icons/HouseFilledIcon/index.js","CommunityPortal/components/Icons/HouseFilledIcon/HouseFilledIcon.jsx","CommunityPortal/components/Icons/HouseIcon/index.js","CommunityPortal/components/Icons/HouseIcon/HouseIcon.jsx","CommunityPortal/components/Icons/LibraryIcon/LibraryIcon.js","CommunityPortal/components/Icons/LibraryIcon/index.js","CommunityPortal/components/Icons/LiveSessionIcon/LiveSessionIcon.js","CommunityPortal/components/Icons/LiveSessionIcon/index.js","CommunityPortal/components/Icons/MembersIcon/MembersIcon.js","CommunityPortal/components/Icons/MembersIcon/index.js","CommunityPortal/components/Icons/ProfileFilledIcon/index.js","CommunityPortal/components/Icons/ProfileFilledIcon/ProfileFilledIcon.jsx","CommunityPortal/components/Icons/ProfileIcon/index.js","CommunityPortal/components/Icons/ProfileIcon/ProfileIcon.jsx","CommunityPortal/components/Icons/RowFilledIcon/RowFilledIcon.jsx","CommunityPortal/components/Icons/RowFilledIcon/index.js","CommunityPortal/components/Icons/RowIcon/RowIcon.jsx","CommunityPortal/components/Icons/RowIcon/index.js","CommunityPortal/constants/pages.js","CommunityPortal/hooks/useCommunitieBookingData.js","CommunityPortal/contexts/CommunityPortalContext.js","hooks/payment/constants.js","CommunityPortal/components/Button/constants.js","CommunityPortal/components/Button/Button.js","CommunityPortal/components/Button/index.js","CommunityPortal/utils/dateUtils.js","components/Common/LoadingCircle/LoadingCircle.js","CommunityPortal/constants.js","utility/dateHelper.js","actions/user.js","CommunityPortal/components/ToastContainer/index.js","CommunityPortal/hooks/useCommunitiesData.js","CommunityPortal/hooks/useLibraryData.js","CommunityPortal/hooks/usePrevious.js","CommunityPortal/hooks/useCommunityEventsData.js","CommunityPortal/hooks/useOutsideComponentClickDetect.js","CommunityPortal/hooks/useMembersData.js","CommunityPortal/hooks/useSearchDataLibrary.js","CommunityPortal/apiServices/communityService.js","CommunityPortal/apiServices/membersService.js","components/Common/ErrorPage/ErrorPage.module.css","CommunityPortal/apiServices/libraryService.js","CommunityPortal/components/RoundedButton/RoundedButton.jsx","services/userProfile.js","modules/stringHelpers.js","modules/timeFormatter.js","CommunityPortal/pages/LiveSessionsPage/constants.js","utility/analytics.js","CommunityPortal/components/Icons/CloseIcon/index.js","CommunityPortal/components/Header/Header.js","CommunityPortal/components/Header/index.js","CommunityPortal/components/Aside/Aside.js","CommunityPortal/components/Aside/index.js","CommunityPortal/components/PageTemplate/PageTemplate.js","CommunityPortal/components/PageTemplate/index.js","components/Modal/Modal.js","components/Modal/index.js","components/Text/Text.js","components/Text/index.js","utility/profileValidation.js","CommunityPortal/components/RoundedButton/index.js","CommunityPortal/components/Modal/index.js","components/Icons/CloseIcon/CloseIcon.js","components/Icons/CloseIcon/index.js","components/Icons/FacebookIconV2Colored/FacebookIconV2Colored.js","components/Icons/FacebookGreyIcon/FacebookGreyIcon.js","components/Icons/FacebookGreyIcon/index.js","utility/validationHelper.js","CommunityPortal/pages/MembersPage/constants.js","components/Icons/DiscoardV2/DiscoardV2.js","components/Icons/InstagramIconV2Colored/InstagramIconV2Colored.js","components/Icons/LinkedIconV2Colored/LinkedIconV2Colored.js","components/Icons/OpenSeaV2Colored/OpenSeaV2Colored.js","components/Icons/TiktokV2/TiktokV2.js","components/Icons/TwitterIconV2Colored/TwitterIconV2Colored.js","components/Icons/WebsiteIconV2/WebsiteIconV2.js","components/Icons/YoutubeIconV2Colored/YoutubeIconV2Colored.js","components/Icons/EyeVisible/EyeVisible.js","components/Icons/EyeVisible/index.js","CommunityPortal/utils/productDemoUtils.js","utility/locale.js","PortalModeWrapper/contexts/RouterContext/utils.js","PortalModeWrapper/contexts/RouterContext/RouterContext.js","PortalModeWrapper/contexts/RouterContext/index.js","CommunityPortal/apiServices/eventsService.js","modules/domHelpers.js","i18n.js","utility/courseHelper.js","CommunityPortal/apiServices/cancelSubscriptionService.js","components/CheckboxV2/CheckboxV2.module.scss","CommunityPortal/hooks/useNewMPPageRedirection.js","CommunityPortal/apiServices/communityBookingService.js","data/countryList.js","CommunityPortal/hooks/useCommunitiesInvoiceData.js","components/Icons/DribbleIconV2Colored/DribbleIconV2Colored.js","CommunityPortal/components/ToastContainer/ToastContainer.module.scss","CommunityPortal/utils/linkUtils.js","components/Loading/Loading.js","components/Loading/index.js","components/Icons/MoreVerticalIcon/MoreVerticalIcon.js","components/Icons/MoreVerticalIcon/index.js","CommunityPortal/components/Icons/InfoCircleOutlineIcon/InfoCircleOutlineIcon.jsx","CommunityPortal/util.js","PortalModeWrapper/utils/urlUtils.js","components/Icons/CheckWithCircleIcon.js","CommunityPortal/components/DiscordButton/constants.js","CommunityPortal/apiServices/discordService.js","modules/preRecordedCourseHelper.js","CommunityPortal/components/Modal/Modal.js","CommunityPortal/components/Icons/CloseIcon/CloseIcon.js","CommunityPortal/components/NPLAlert/index.js","CommunityPortal/components/NPLAlert/NPLAlert.jsx","hooks/userProfileData.js","CommunityPortal/pages/LibraryPage/components/SingleSearchResultContainer/index.js","CommunityPortal/pages/LibraryPage/components/SingleSearchResultContainer/SingleSearchResultContainer.js","components/SearchBoxDropdown/SearchBoxDropdown.js","components/SearchBoxDropdown/index.js","components/Icons/SettingIcon/SettingIcon.js","components/Icons/SettingIcon/index.js","components/Icons/CopyIcon/CopyIcon.js","components/Icons/CopyIcon/index.js","serviceWorker.js","components/Common/LoadingCircle/LoadingCircle.module.css","pages/SettingPage/pages/MembershipPage/components/CancelModal/CancelModal.module.scss","CommunityPortal/components/Aside/Aside.module.scss","pages/SettingPage/components/NewPreferencesPage/NewPreferences.module.scss","pages/SettingPage/components/SettingsNavigation/SettingsNavigation.module.scss","components/Form/FloatingLabelInput/FloatingLabelInput.module.scss","components/Common/ErrorPage/ErrorPage.js","utility/formatHelper.js","hooks/payment/usePayment.js","utility/checkoutHelper.js","contexts/EventsCheckoutContext/EventsCheckoutContext.js","utility/constants.js","utility/validation.js","components/Icons/CheckIcon/index.js","components/Icons/CheckIcon/CheckIcon.js","hooks/useQueryParams.js","components/Authentication/TriggerResetPasswordForm/TriggerResetPasswordForm.js","components/Authentication/TriggerResetPasswordForm/index.js","pages/ForgetPasswordPage/index.js","pages/ForgetPasswordPage/ForgetPasswordPage.js","contexts/LibraryCheckoutContext/LibraryCheckoutContext.js","pages/LoginPage/constants.js","components/PasswordExpiredModal/PasswordExpiredModal.js","components/PasswordExpiredModal/index.js","components/Icons/DiscordIcon/index.js","components/Icons/DiscordIcon/DiscordIcon.js","components/DiscordLogin/index.js","components/DiscordLogin/DiscordLogin.js","components/SocialLogins/SocialLogins.js","components/SocialLogins/index.js","components/Authentication/LoginForm/LoginForm.js","components/Authentication/LoginForm/index.js","pages/LoginPage/LoginPage.js","pages/LoginPage/index.js","components/Icons/CalendarIconV2/CalendarIconV2.js","components/Icons/CalendarIconV2/index.js","components/Icons/GiftIconV2/GiftIconV2.js","components/Icons/GiftIconV2/index.js","components/Icons/ProfileIconLight/ProfileIconLight.js","components/Icons/ProfileIconLight/index.js","pages/SettingPage/constants.js","CommunityPortal/components/Icons/MasterCardIcon/MasterCardIcon.js","CommunityPortal/components/Icons/MasterCardIcon/index.js","CommunityPortal/components/Icons/VisaCardIcon/VisaCardIcon.js","CommunityPortal/components/Icons/VisaCardIcon/index.js","pages/SettingPage/pages/MembershipPage/components/BillingHistory/BilllingHistory.js","pages/SettingPage/pages/MembershipPage/components/BillingHistory/index.js","pages/SettingPage/pages/MembershipPage/components/CancelModal/constants.js","components/CheckboxV2/CheckboxV2.js","components/CheckboxV2/index.js","CommunityPortal/components/Icons/PlusFilledIcon/PlusFilledIcon.js","CommunityPortal/components/Icons/PlusFilledIcon/index.js","pages/SettingPage/pages/MembershipPage/components/CancelModal/CancelModal.js","pages/SettingPage/pages/MembershipPage/components/CancelModal/index.js","pages/SettingPage/pages/MembershipPage/components/SubscriptionCard/constants.js","pages/SettingPage/pages/MembershipPage/components/SubscriptionCard/SubscriptionCard.js","pages/SettingPage/pages/MembershipPage/components/SubscriptionCard/index.js","components/Icons/Tool02/index.js","components/Icons/Tool02/Tool02.jsx","components/Icons/UserLeft01/UserLeft01.jsx","components/Icons/Info/index.js","components/Icons/Info/Info.jsx","pages/SettingPage/pages/MembershipPage/components/LeaveCommunityModal/LeaveCommunityModal.jsx","pages/SettingPage/pages/MembershipPage/components/LeaveCommunityModal/index.js","pages/SettingPage/pages/MembershipPage/components/SubscriptionCardV2/SubscriptionCardV2.jsx","pages/SettingPage/pages/MembershipPage/MembershipPage.js","pages/SettingPage/pages/MembershipPage/index.js","pages/SettingPage/components/CommonSettingWidget/index.js","pages/SettingPage/components/CommonSettingWidget/CommonSettingWidget.js","components/Checkbox/index.js","components/Checkbox/Checkbox.js","components/Icons/InstagramGreyIcon/InstagramGreyIcon.js","components/Icons/InstagramGreyIcon/index.js","components/Form/Select/index.js","components/Form/Select/Select.js","components/Icons/YoutubeGreyIcon/YoutubeGreyIcon.js","components/Icons/YoutubeGreyIcon/index.js","pages/SettingPage/components/FormInput/FormInput.js","pages/SettingPage/components/FormInput/index.js","pages/SettingPage/components/CommentSettingWidget/index.js","pages/SettingPage/components/CommentSettingWidget/CommentSettingWidget.js","pages/SettingPage/components/NewPreferencesPage/NewPreferencesPage.js","pages/SettingPage/components/NewPreferencesPage/index.js","pages/SettingPage/components/NewProfilePage/constants.js","pages/SettingPage/components/EditProfileComponent/EditProfilePage.js","pages/SettingPage/components/EditProfileComponent/index.js","components/Icons/CameraIcon/index.js","components/Icons/CameraIcon/CameraIcon.js","pages/SettingPage/components/ProfileImageSetting/index.js","pages/SettingPage/components/ProfileImageSetting/ProfileImageSetting.js","components/ResetPassword/components/PasswordInput/PasswordInput.js","components/ResetPassword/components/PasswordInput/index.js","components/ResetPassword/components/BackToLoginButton/index.js","components/ResetPassword/components/BackToLoginButton/BackToLoginButton.js","components/ResetPassword/components/ResetPasswordForm/ResetPasswordForm.js","components/ResetPassword/constants.js","components/Divider/Divider.js","components/Divider/index.js","components/ResetPasswordContainer/ResetPasswordContainer.js","pages/SettingPage/components/PasswordSettingWidget/index.js","pages/SettingPage/components/PasswordSettingWidget/PasswordSettingWidget.js","pages/SettingPage/components/PasswordResetComponent/index.js","pages/SettingPage/components/PasswordResetComponent/ShowPasswordResetUpdateInput.js","pages/SettingPage/components/SocialMediaUpdateComponent/ShowSocialMediaUpdateInputs.js","pages/SettingPage/components/SocialMediaUpdateComponent/index.js","pages/SettingPage/components/NewProfilePage/utils.js","pages/SettingPage/components/NewProfilePage/NewProfilePage.js","pages/NewReferralPage/contants.js","pages/SettingPage/components/RedeemBox/RedeemBox.js","pages/SettingPage/components/RedeemBox/index.js","components/Profile/components/SuccessMessage/SuccessMessage.js","pages/NewReferralPage/NewReferralPage.js","pages/NewReferralPage/index.js","constants/links.js","components/Icons/CaretLeftIcon/index.js","components/Icons/CaretLeftIcon/CaretLeftIcon.js","components/Icons/SettingIcon01/SettingIcon01.jsx","pages/SettingPage/components/SettingsNavigation/SettingsNavigation.js","pages/SettingPage/components/SettingsNavigation/index.js","pages/SettingPage/SettingsPageV2.js","pages/SettingPage/utils/linkUtils.js","PortalModeWrapper/PortalModeWrapper.js","PortalModeWrapper/index.js","pages/ResetPasswordPage/hooks/useNewResetPasswordPageRedirection.js","pages/ResetPasswordPage/index.js","pages/ResetPasswordPage/ResetPasswordPage.js","components/Icons/AcademyLogoShortIcon/index.js","components/Icons/AcademyLogoShortIcon/AcademyLogoShortIcon.js","components/Form/FloatingLabelInput/FloatingLabelInput.js","components/Form/FloatingLabelInput/index.js","components/Form/FormField/FormField.js","components/Form/FormField/index.js","reducers/openModalsData.js","services/authService.js","hooks/useUpdateBasicInfo.js","CommunityPortal/components/NPLFloatingLabelInput/NPLFloatingLabelInput.jsx","components/SetUserBasicDataModal/SetUserBasicDataModal.js","components/SetUserBasicDataModal/index.js","components/Authentication/AuthenticationWrapper/constant.js","components/Authentication/AuthenticationWrapper/AuthenticationWrapper.js","components/Authentication/SignupForm/SignupForm.js","components/Authentication/SignupForm/index.js","pages/SignupPage/index.js","pages/SignupPage/SignupPage.js","reducers/auth.js","reducers/booking.js","reducers/courseOverview.js","reducers/featureFlag.js","reducers/main.js","utility/webview.js","reducers/routes.js","reducers/user.js","components/AuthWrapper/index.js","components/AuthWrapper/AuthWrapper.js","App.js","stores/configureStore.js","index.js","CommunityPortal/apiServices/communityInvoiceService.js"],"names":["setLoginFailed","message","type","setResetPasswordFailed","setUpdateProfileStatus","updateProfileStatus","setSuccess","setLoading","load","authCookieDomain","config","ACCESS_TOKEN_KEY_COOKIE","REFRESH_TOKEN_KEY_COOKIE","Auth","userData","accessToken","localStorageService","setItem","JSON","stringify","Cookies","set","path","domain","getPrimaryDomain","refreshToken","removeItem","remove","deleteUriTokens","get","userDataStr","getItem","parse","referralCode","trainerData","value","token","this","setCookies","baseURL","keys","protectedAxiosRequest","axios","create","setAuthHeadersMiddleware","request","concat","getUserToken","argHeaders","headers","Authorization","interceptors","use","error","Promise","reject","response","Sentry","logErrorMiddleware","status","originalRequest","getUriTokens","getRefreshToken","payload","getTokensService","then","data","catch","COMMUNITY_PORTAL","CLASSES_PORTAL","CREATOR_PORTAL","COMMUNITY_PORTAL_PATH","CREATOR_PORTAL_PATH","COMMUNITY_PORTAL_HOMEPAGE_ENDPOINT","COMMUNITY_PORTAL_EVENTS_PAGE_ENDPOINT","COMMUNITY_PORTAL_LIBRARY_PAGE_ENDPOINT","COMMUNITY_PORTAL_MEMBERS_PAGE_ENDPOINT","COMMUNITY_PORTAL_MEET_AN_EXPERT_PAGE_ENDPOINT","CLASSES_PORTAL_ROOT","COMMUNITY_PORTAL_ROOT","CREATOR_PORTAL_ROOT","SETTINGS_PORTAL_ROOT","COMMUNITY_PORTAL_HOME_PAGE_PATH","COMMUNITY_PORTAL_EVENTS_PAGE_PATH","COMMUNITY_PORTAL_LIBRARY_PAGE_PATH","COMMUNITY_PORTAL_LIBRARY_FOLDER_PATH","COMMUNITY_PORTAL_MEMBERS_PAGE_PATH","COMMUNITY_PORTAL_TRAIN_A_MENTOR_PAGE_PATH","COMMUNITY_PORTAL_SINGLE_POST_PAGE_PATH","communityPortalPaths","STORED_ACTIVE_COMMUNITY_SESSION_CODE","sharedRequestOptions","withCredentials","device","deviceType","isios","isIOS","ismobile","isMobile","istablet","isTablet","UPCOMING_EVENTS_ENDPOINT","PAST_EVENTS_ENDPOINT","NEWEST_DATA_SORTING_PARAM","OLDEST_DATA_SORTING_PARAM","ALL_MEMBERSHIPS_FILTER","NAS_ACADEMY_MEMBERSHIPS_FILTER","NEAR_YOU_MEMBERSHIPS_FILTER","communitiesURL","id","BASE_BE_URL","lastInteractedCommunityURL","process","communityInvoicesURL","MAIN_WEBSITE_URL","cancelCommunityURL","eventsURL","communityId","eventsType","eventRegistrationURL","eventId","getTimezoneId","bookingRegistrationURL","bookingCancellationURL","libraryURL","dataType","membersURL","libraryFolderGeneralURL","folderType","librarySingleFolderURL","folderId","librarySearchURL","search","libraryFolderClickedURL","communityFolderObjId","adminCommunityURL","paymentURL","imagesBasePath","gtmContainerId","mainWebsiteUrl","courseAssetBaseUrl","referFreindUrl","redeemFormLink","configCatKey","referralBaseLink","nasIOBaseUrl","metaphiSdkApiKey","metaphiSdkAccountId","authApiBaseUrl","soldOutResourcePaths","newMemberPortalRedirection","newResetPasswordRedirection","localStorageInstance","LocalStorageService","currentLocalStorage","key","window","localStorage","e","isSupported","clear","length","Object","getAxiosError","history","createBrowserHistory","login","user","updateAuthUserData","_checkFieldNotEmpty","field","_passwordIsStrong","password","RegExp","test","startSignUp","email","confirmPassword","dispatch","dt","password2","post","refresh_token","learner_role","learner","instructor_role","trainer","user_id","authenticateUser","setTokens","setUser","_id","push","pathname","err","startLogin","currentRoute","callback","switchToUserPreferredLanguage","_postLoginProcess","resolve","includes","startGetTokens","startLoginCheck","setData","a","setUserData","setToken","AuthStr","promoCode","setReferralCode","initializeTrackUserId","deauthenticateUser","redirectTo","location","href","queryStr","encodeURIComponent","startLogout","sessionStorageService","route","clearTrackUserId","triggerResetPassword","phoneNumber","resetTriggerResetPasswordSuccess","sendResetPassword","oldPassword","bearerToken","afterResetHandler","apiUrl","countries","SG","name","dialCode","wisenetCode","rapidId","paypalAllowed","countryCode","flag","PH","IN","MY","ID","countryList","INPUT_FIELD_TYPE","DROPDOWN_FIELD_TYPE","dialCodeOptions","map","label","sort","b","localeCompare","optionDisplay","getDialCodeById","countryId","country","find","parseInt","getDialCodeIdFromPhoneNumber","startsWith","PhoneNumberUtil","getInstance","getCountryCode","dial","toString","getDialCodeIdByDialCode","getPhoneNumberWithoutDial","getNationalNumber","Input","onChange","eyeIcon","icon","iconPosition","v2","prefix","focusOnLoad","customClassforInputContainer","renderLogobesidelabel","typeoflogo","customClassForLabel","customClassForTopContainer","customInnerClassName","disabled","register","rest","className","baseClassNames","join","hasIcon","hasPrefix","containerClassName","containerClassNames","inputRef","useRef","useState","isEyeIconVisible","setIsEyeIconVisible","toggleInputVisibility","inputType","current","prevBool","useEffect","focus","FacebookIconV2Colored","InstagramIconV2Colored","YoutubeIconV2Colored","TwitterIconV2Colored","TiktokV2","LinkedIconV2Colored","OpenSeaV2Colored","WebsiteIconV2","DribbleIconV2Colored","FacebookGreyIcon","customClassName","renderLogo","style","marginBottom","htmlFor","ref","onClick","EyeVisible","isOpen","defaultProps","COMMUNITY_PORTAL_BREAKPOINTS","sm","md","lg","xl","checkIfMoreThanBreakpoint","breakpoint","innerWidth","isDesktop","isMobileLandScape","innerHeight","checkIsDesktop","checkIsMobileLandscape","getQueryHashParams","hash","convertQueryStringToJson","getQueryParams","resetQueryParams","pushState","origin","Button","displayType","fluid","withShadow","narrow","children","newVersion","customClassNames","btnProps","classNames","NAS_IO_GET_MOBILE_APP","sessionStorageInstance","SessionStorageService","currentSessionStorage","sessionStorage","storeActiveCommunity","code","storageUtils","readActiveCommunity","activeCommunityId","app_env","googleClientId","fbAppId","appleClientId","appleRedirectLink","isDevEnv","apiStaticDataPath","checkoutEndpoint","nasIOWeb3BaseUrl","nftCertificateContractAdress","getStreamApiKey","getStreamAppId","intercomAppId","intercomApiBase","pixelId","REACT_APP_FB_PIXEL_ID","WindowWidthContext","createContext","WindowWidthContextProvider","isGtEqSm","setIsGtEqSm","isGtEqMd","setIsGtEqMd","isGtEqLg","setIsGtEqLg","isGtEqXl","setIsGtEqXl","useMemo","isDesktopView","setIsDesktopView","isMobileLandscape","setIsMobileLandscape","updateModeOnWindowChange","initListener","useCallback","addEventListener","removeListener","removeEventListener","Provider","useWindowWidthContext","useContext","learnPortalBasePath","signUpForPaymentAndGetClientInfoService","params","endpoint","getCurrentCountry","mainBackendBasePath","Error","getPaymentMethods","checkoutType","verifyPaymentForEntitySignUp","entityType","entitySignUpId","getTypeFromEnum","COMMUNITY_ONE_TIME_PAYMENT_ENTITIES","signUpForEntity","entityId","console","log","options","timezone","getCommunityInfoForCheckout","getCommunityEventInfoForEventCheckoutById","createEwalletChargeForEntityId","getEwalletChargeStatus","chargeId","ImgSrcDataType","src","PropTypes","string","webpSrc","ImageDataType","alt","mobileImgData","shape","desktopImgData","customImgClassname","Image","mobileWebpSrc","mobileSrc","desktopWebpSrc","desktopSrc","imgSrc","minDesktopWidthMedia","minDesktopWidth","maxDesktopWidthMedia","mobileMetaData","meta","desktopMetaData","metaData","restProps","media","srcSet","ErrorAlertWarningIcon","width","height","fill","viewBox","d","Toast","props","text","DEFAULT_MSG","dismissOnClick","removeToast","isVisible","nplVersion","description","CTAButtonProps","customIcon","toastRef","visibilityClassNames","showToast","hideToast","shadowClassName","boxShadowForToast","tabIndex","role","TOAST_TYPE","SUCCESS","ERROR","INFORMATION","WARNING","NEUTRAL","getTypeClassNamesForVersion_2","CheckWithCircleIcon","getIconForNPLv2","slim","rounded","getTypeClassNames","DEFAULT","NEUTRAL_LIGHT","globalStore","func","listener","forEach","emit","showErrorToast","removeAllToasts","removeAll","ToastContainer","on","addToast","ToastPortal","forwardRef","_document","setDocument","toastList","setToastList","removeId","setRemoveId","modalEl","getElementById","useImperativeHandle","nanoid","toast","toasts","setTimeout","filter","autoCloseTime","document","createPortal","toastItemData","propsToFwd","CalendarDaysFilledIcon","stroke","strokeLinecap","strokeLinejoin","strokeWidth","fillRule","clipRule","CalendarDaysIcon","ChatFilledIcon","ChatIcon","ConversationIcon","fillColor","strokeColor","HomeIcon","HouseFilledIcon","HouseIcon","LibraryIcon","LiveSessionIcon","MembersIcon","ProfileFilledIcon","ProfileIcon","RowFilledIcon","classnames","RowIcon","PROFILE_LINK","HOME_PAGE","labelKey","dataTestId","Icon","mobileIcon","mobileActiveIcon","EVENTS_PAGE","LIBRARY_PAGE","LIBRARY_FOLDER_PAGE","MEMBERS_PAGE","MEET_AN_EXPERT_PAGE","useCommunitiesBookingData","existingBookings","loading","getBookingDetails","eventUri","inviteeUri","bookTrainerForCalendly","cancelBooking","cancelReason","setcancel","cancel","cancelTrainerBookingForCalendly","CommunityPortalContext","CommunityPortalContextProvider","activePagePaths","split","useSelector","state","auth","activeCommunity","setActiveCommunity","activePage","setActivePage","tags","activeTag","setActiveTag","setCountry","showNavigationSidebar","setShowNavigationSidebar","useCommunitiesData","doesCommunityIdExist","activeCommunityData","communities","getCommunitiesData","allCommunities","isManager","useMembersData","membersData","membersDataLoading","pageNumber","setNextPage","hasMore","totalMembers","getCountryData","useCommunityEventsData","eventsData","eventsDataLoading","fetchMorePastEvents","fetchMoreUpcomingEvents","registerForEvent","cancelEventRegistration","bookings","bookingLoading","calendarData","useLibraryData","dataForLibrary","selectedFolderData","setSortState","selectSortState","sortState","libraryLoading","useSearchDataLibrary","searchData","searchLoading","searchError","showSearchDropDown","setSearch","searchDropDownRef","onSearchBoxFocus","setShowSearchDropDown","useCommunitiesInvoiceData","invoices","invoiceLoading","updateActiveCommunity","shouldRedirect","subroute","isUserBasicProfileIncomplete","useCommunityPortalContext","PAYMENT_FAILURE","PAYMENT_SUCCESS","PAYMENT_PENDING","freeze","EVENT","FOLDER","displayTypeToClassNamesMap","primary","secondary","outline","plain","sizeToClassNamesMap","bt","size","customInnerClassNames","customClassForButtonDiv","leftIcon","rightIcon","formatDate","date","Date","isDateInFuture","formattedDate","presentDate","getTime","timeSince","t","seconds","Math","floor","interval","inWeeks","isTimeinBetweenTwoTimes","date1","date2","minus_minutes_on_start_time","minus_minutes_on_start_time_in_milliseconds","formattedDate1","formattedDate2","getRelativeDescriptivePastDate","formatDistanceToNowStrict","getDateItemsObject","dateInput","isMobileView","month","Intl","DateTimeFormat","format","getDate","day","weekday","isFuture","presentDateDay","isCurrentMonth","getMonth","isCurrentYear","getFullYear","isActivePeriod","getPlainTime","getLongTimeZoneName","timeZoneName","getDifferenceBetweenDatesInMinutes","startDate","endDate","startDateInMilliseconds","getDifferenceBetweenDatesInDays","diffInMins","subtractMinutesFromDate","minutes","dateInMilliseconds","getNextBillingDateFromDate","statusOfSubscription","cancelledAt","result","setMonth","toISOString","formatDateInDDMMYYYY","loadingCircle","classes","Loader","DISCOVER_MORE_LINK","DISCOVER_MORE_CLASSES_LINK","COMMUNITY_EXPIRED","COMMUNITY_RENEWAL_AVAILABLE","COMMUNITY_AUTO_RENEWAL_SOON","COMMUNITY_GRACE_PERIOD","defaultHostProfileImage","NASIO_LIGHT_IMAGE_DATA","getHours","hour","mins","time","formatDateTime","dateString","withTime","getMonthName","getMinutes","monthIndex","short","months","getDayName","dayIndex","days","formatAMPM","ampm","cap","hours","getLocalCourseTime","startDateTimeLocal","endDateTimeLocal","formattedStartDateTimeLocal","formattedEndDateTimeLocal","lessonStartTime","lessonEndTime","firstLessonDay","getDay","secondLessonDay","resolvedOptions","timeZone","moment","tz","guess","formatCalendarEndDateTime","formatStartDate","formatEndDate","startDateHours","endDateHours","endDateMinutes","setHours","setMinutes","setDate","isDateInPast","isPast","setUserToken","actionSetUserProfile","userEmail","paramActiveCommunityId","communityCode","c","useTranslation","getDiscountTagText","intervalCount","trialDays","percentage","fetchAndSetData","currentActiveCommunity","getCommunityData","formattedCommunities","item","subscription","subscriptions","f","isFreeCommunity","stripeCurrency","xenditCurrency","xenditPrice","stripePrice","amount","isManualEnrolment","isPaidCommunity","membersWithRoles","some","isFreeTrial","discountdetails","promoDetails","isIntervalDiscount","discount","price","paidPrice","toFixed","title","By","img","thumbnailImgData","discountTagText","isTokenGated","nextBillingDate","applicationReviewDate","pricePerMonthString","discountedCommunity","couponName","couponValue","isDiscountedPricing","isSubscriptionFree","isSubscriptionPaid","isMember","communityEventsPurchased","communityFoldersPurchased","subscriptionObjectId","stripeSubscriptionId","onCancelSubscriptionClick","cancellationReason","community","cancelSubscription","SORT_STATE_NEWEST","SORT_STATE_OLDEST","SORT_STATE_DEFAULT","setDataForLibrary","setSelectedFolderData","getSortedData","createdAt","fetchAndSetAllDataForLibrary","getLibraryFoldersData","foldersData","isDraft","index","fetchAndSetSelectedFolderData","selectedFolderId","getLibrarySingleFolderData","libraryDataForSingleFolder","folderClickLogOnLibraryPage","selectedState","sortedData","reverse","usePrevious","valueRef","pastEventList","setPastEventList","pastEventListMetadata","setPastEventListMetadata","isPastEventsLoading","setIsPastEventsLoading","pastEventPageNumber","setPastEventPageNumber","upcomingEventList","setUpcomingEventList","upcomingEventListMetadata","setUpcomingEventListMetadata","isUpcomingEventsLoading","setIsUpcomingEventsLoading","upcomingPageNumber","setUpcomingPageNumber","isLoading","UPCOMING_EVENTS_TAB","PAST_EVENTS_TAB","prevPastPageNumber","prevUpcomingPageNumber","postEventRegistration","prevEvents","eventToUpdateIdx","findIndex","eventToUpdate","registered","eventAttendee","updatedEvents","event","attendeeId","cancelEventAttendanceService","userId","fetchPastEvents","getEventsData","pageNum","pageSize","paginate","pastEventsList","metadata","prev","fetchUpcomingEvents","upcomingEventsList","next","useOutsideComponentClickDetect","cb","handleClickOutside","contains","target","setPageNumber","setHasMore","setTotalMembers","getFilterAndSortQueries","membershipsParamsMapping","isValidCommunityMembers","every","x","getMembersData","responseData","formattedData","warn","pageData","total","require","getLibrarySearchData","communityObjectId","setSearchLoading","setError","fetchData","module","exports","getLibraryData","buttonType","buttonSize","RoundedButton","allClassNames","getDisplayTypeClassnames","getSizeClassnames","setUpdateUserProfileReqOptions","contentType","accept","maxContentLength","MAX_FILE_SIZE","maxBodyLength","updateUserProfile","Axios","put","updateUserProfileV2","res","info","getProfileByRoleType","uploadPhoto","updateUserPhoneConfirmation","queryString","slice","reduce","acc","pair","keyValPair","val","decodeURIComponent","primaryDomain","hostname","TimeFormatter","min","setSeconds","diff","timeLeft","years","sec","convertTime12To24","time12h","hourMinuteSeparator","amPmSeparator","modifier","trimmedTime12h","trim","toUpperCase","match","getFullDateISOString","time24Hour","dateCopy","setUTCHours","setUTCMinutes","getFullDateStartEndISOString","timeFromToEnd","startTime","endTime","start","end","strTime","formatDDMMYYYY","getTimeDiffFrom24HourFormat","timing","startHour","startMin","endHour","endMin","diffHour","diffMin","diffHours","diffMinutes","getFormattedDate","getFormattedTime","minute","getFormattedDay","getFormattedTimeFromSeconds","hrs","secs","ret","getFormattedTimeFromMs","ms","getCommentTime","numyears","nummonths","numweeks","numdays","numhours","numminutes","ONGOING_EVENTS_TAB","ZOOM_LABEL","ZOOM_LINK","EVENT_TYPE_LIVE","EVENT_TYPE_IN_PERSON","initiateGTM","tagManagerArgs","gtmId","TagManager","initialize","dataLayer","getCommunityDataForAnalytics","communityTitle","getEventDataForAnalytics","isPaidEvent","access","eventAmountCents","eventCurrency","currency","trackGeneralEvent","actionId","getLoggedInUserEmail","postId","platform","paymentMethod","timestamp","getLoggedInUserId","CloseIcon","TabItemPropTypes","isRequired","isActive","bool","Header","arrayOf","any","activeTab","number","tabItems","CTA","body","selectedPathOfFile","contentOfSelectedContent","titleOfTheSelectedContent","marginForHeaderComponent","searchBar","searchInputProps","showBorder","renderTabItems","items","Children","toArray","renderSearchBar","SearchBoxDropdown","paddingTop","Aside","toRender","isHidden","onHide","showCloseIcon","renderContent","PageTemplate","headerProps","chidren","renderAside","isAsideHidden","showAsideCloseIcon","onAsideHide","customContentClass","Modal","open","onClose","closeOnBackdropClick","customBaseClass","backgroundBlur","customContainerClass","customInnerClass","customCloseIconClass","useLayoutEffect","originalStyle","getComputedStyle","overflow","TextArrType","isHighlighted","isBolder","isAnchorText","isCustomColor","link","isNewLine","isNewParagraph","isStrikeThrough","isUnderlined","TextType","oneOfType","Text","isArrText","Array","isArray","textData","strText","spanClass","Link","to","rel","basicInfoFormSchema","yup","firstName","required","lastName","max","longDescription","notRequired","corporateEmail","dialCodeId","default","whatsAppNumber","matches","excludeEmptyString","commentPreferenceFormSchema","hasSubscribedToCommentEmails","videoPreferenceFormSchema","subtitlePreference","customUrlValidator","transform","str","substring","url","conditionalUrlValidation","isValidSync","SUPPORTED_FORMATS","fileValidator","socialMediaFormSchema","facebook","instagram","youtube","twitter","linkedin","photo","cx","cy","r","x1","y1","x2","y2","gradientUnits","stop-color","offset","fillOpacity","validate","schema","formData","setErrors","abortEarly","validationErr","inner","errors","isValid","isValidUrl","NEAR_YOU","NEWEST","NAS_ACADEMY","DiscordV2","gradientTransform","stop-opacity","y","fill-rule","clip-rule","isSessionInSandboxEnv","parent","handleGetEventTicketClickInDemo","showStartOnboardingModalInDemo","handlePurchaseFolderClickInDemo","handleSettingsClickInDemo","handleJoinChatClickInDemo","handleLeaveCommunityClickInDemo","locationOfCta","fromDemo","postMessage","switchDemoToCmView","handleLogoutClickFromProductDemo","LANGUAGE_KEY","langOptions","acceptedLanguages","langOption","getRegionInUpperCase","locale","parts","getSelectedLangStr","i18n","language","getLanguageInStorage","languageInStorage","setLanguageInStorage","localeInLowerCase","toLowerCase","isLocalhost","cookieOptions","languagePreference","reload","getInitialLocale","browserLang","navigator","getBrowserLanguagePreference","langInStorage","getCommunityPortalPath","pageEndpoint","RouterContext","useRouterContext","RouterContextProvider","urlUtils","readCurrentPath","activePath","setActivePath","currUrlPath","switchToClassesPortal","isOnCommunityPortal","isOnCreatorPortal","goToPortalPage","switchToCommunityPortal","isOnSettingsPortal","getCommunityPortalHomePageLink","getMeetAnExpertPageLink","getCommunityPortalEventsPageLink","getCommunityPortalLibraryPageLink","getCommunityPortalLibraryFolderPageLink","getCommunityPortalMembersPageLink","activePortal","getActivePortal","isInViewport","rect","getBoundingClientRect","top","left","bottom","documentElement","clientHeight","right","clientWidth","namespace","lang","initReactI18next","init","resources","fallbackLng","ns","interpolation","escapeValue","fetchTranslations","fetch","langResponse","json","langTranslations","enLangResponse","enLangTranslations","translation","setTranslations","addResourceBundle","en","loadTranslations","mainWebsiteJwtToken","sign","cancelFreeOrTokenGatedSubscription","useNewMPPageRedirection","newPagePath","URLSearchParams","append","shortCode","getCommunityInvoices","activeCommunityCode","setActiveCommunityCode","openInNewTab","newWindow","opener","openManagerPortal","uriToken","tokens","uriRefreshToken","getActiveCommunityPortalPage","pathItems","pagesData","i","discoverCommunitiesLinkOpener","resolveEventSlugUrl","communityLink","slug","communityLinkWithoutSlash","replace","slugWithoutSlash","getEventProminentUrlProps","eventInfo","EVENT_LOCATION_TEXT","LIVE","IN_PERSON","isRegistered","locationText","liveLink","showCopyIcon","inPersonLocation","getFormattedEventDescription","Loading","MoreVerticalIcon","InfoCircleOutlineIcon","goToCommunityCheckout","expired","isDateLessThanXDaysInFuture","currentDate","differenceInDays","getExpiredStatus","communitySubscription","paymentProvider","recurringPurchase","cancelledAtDate","prefixWithHttps","DISCORD_OAUTH_REDIRECT_URL","redirectUrl","getDiscordUserData","learnerId","avatar","avatarUrl","getDiscordUserRole","guildId","discordUserId","loginUsingDiscord","access_token","convertCourseTimeFromToMinAndHours","timeInSecs","customBackdropClass","customBaseStyle","customContainerStyle","customInnerStyle","customBackdropStyle","showCloseOnPageEnd","customCloseIcon","NPLAlert","NPLALERT_TYPE","getAlertIcon","subtitle","chin","alertClassNames","getAlertClassnames","useProfileData","afterUserProfileUpdateCallback","useDispatch","main","setIsLoading","isBasicInfoUpdateLoading","setIsBasicInfoUpdateLoading","showStatus","setShowStatus","updateProfile","useForm","resolver","yupResolver","mode","registerBasicInfo","handleBasicInfoSubmit","handleSubmit","errorsBasicInfo","getBasicInfoValues","getValues","registerSocialMedia","handleSocialMediaSubmit","errorsSocialMedia","registerCommentPreference","handleCommentPreferenceSubmit","errorsCommentPreference","registerVideoPreference","handleVideoPreferenceSubmit","errorsVideoPreference","whatsAppNumberSameAsPhoneNumber","setWhatsAppNumberSameAsPhoneNumber","corporateEmailSameAsLoginEmail","setCorporateEmailSameAsLoginEmail","service","shouldUpdateStatus","afterUpdateCallback","doc","getUserData","updatedData","assign","profile","statusPop","updateBasicInfo","obj1","obj2","updateSocialMedia","socialMedia","tiktok","opensea","discord","dribble","socialDetails","undefined","updateCommentPreference","updateVideoPreference","basicInfoInputProps","defaultValue","placeholder","optionsList","withCheckbox","checkboxLabel","checkboxName","checked","handleChecking","commentPreferenceInputProps","videoPreferenceInputProps","socialMediaInputProps","defaultValues","showLogo","getSocialMediaInputProps","updateSocialMediaHandleSubmit","updateSocialMediaCallback","SingleSearchResultContainer","renderImage","thumbnail","currentUrl","newUrl","communityFolderObjectId","idx","SettingIcon","CopyIcon","Boolean","unregister","serviceWorker","ready","registration","withRouter","what","Container","ErrorType","Yellow","PageNotFound","Description","Bold","formatCentsIntToUSD","cents","COUNTRY_CHECKOUT_TYPE","redirectToUnifiedCheckout","communityInfo","entityInfo","query","requestor","isWhatsappExperienceCommunity","sourceInfoType","sourceInfoOrigin","obj","keyValuePairs","convertObjToQueryString","EventsCheckoutContext","EventsCheckoutContextProvider","checkoutEventInfo","setCheckoutEventInfo","eventCommunityInfo","setEventCommunityInfo","eventCommunityInfoLoader","setEventCommunityInfoLoader","queryParams","fetchedPaymentMethods","setFetchedPaymentMethods","getPaymentMethodsHandler","paymentModesAllowed","getEventInformation","eventObjectId","getCommunityInfo","shortLogoImageData","isValidEmailFormat","isValidPhoneFormat","isNaN","Number","phoneUtil","parseAndKeepRawInput","isValidNumber","CheckIcon","useQueryParams","setQueryParams","queryParamsJson","resetPasswordFormSchema","TriggerResetPasswordForm","connect","resetPasswordFailed","success","setFormData","reset","preventDefault","requestBody","onSubmit","LoadingCircle","ForgetPasswordPage","LibraryCheckoutContext","LibraryCheckoutContextProvider","checkoutFolderInfo","setCheckoutFolderInfo","setCommunityInfo","folderCommunityInfoLoader","setFolderCommunityInfoLoader","getLibraryFolderInformation","sideImageData","loginFormSchema","PasswordExpiredModal","show","onClickReset","onClickLogin","customContainerClassName","onConfirm","DiscordIcon","DiscordLogin","onSuccessHandler","onFailureHandler","isLoginForm","asyncCallback","protocol","host","SocialLogins","loginFailed","isSignup","isWebView","showGoogleLoginCta","showAppleLoginCta","handleSocialAuth","provider","authToken","credential","authorization","id_token","appleUserData","socialBtnClass","googleBtnClass","appleBtnClass","fbBtnClass","onSuccess","onError","useOneTap","appId","fields","autoLoad","disableMobileRedirect","render","renderProps","authOptions","clientId","scope","redirectURI","nonce","usePopup","uiType","LoginForm","routes","setFocusPassword","showPasswordExpiredModal","setShowPasswordExpiredModal","onFieldChange","parseObj","LoginPage","CalendarIconV2","xmlns","GiftIconV2","ProfileIconLight","ReferralStyle","TextforReferral","TagLineForReferral","marginTop","ShareCTALabelforrefferral","SETTINGS_PAGE_REFERRAL_PATH","SETTINGS_PAGE_PROFILE_PATH","SETTINGS_PAGE_MEMBERSHIP_PATH","SETTINGS_PAGE_PREFERENCES_PATH","settingsPagePaths","SETTINGS_PAGE_REFERRAL","SETTINGS_PAGE_PROFILE","SETTINGS_PAGE_MEMBERSHIP","SETTINGS_PAGE_PREFERENCES","pagesList","MasterCardIcon","VisaCardIcon","BillingHistory","renderCardIcon","brand","renderPaymentMethod","invoice","payment_method_details","card","last4","getUTCDateStringFromCreated","dateObj","setUTCSeconds","colSpan","created","NumberFormat","maximumFractionDigits","trailingZeroDisplay","amount_captured","CANCEL_OPTIONS","CheckboxV2","checkmarkClassName","checkmarkClassNames","data-testid","PlusFilledIcon","CancelModal","showModal","step","setStep","reason","setReason","isfirstClick","setIsFirstClick","otherReason","setOtherReason","MEMBER_BENEFITS_TEXT","errorInput","errorOther","onCloseModal","onConfirmClick","reasonAsArray","reasonAsString","daysBeforeBillingDate","count","renderStep1","ArrowRenderer","expanded","labelledBy","hasSelectAll","disableSearch","valueRenderer","selected","_options","option","ItemRenderer","NEXT_BILLING_DATE","SUBSCRIPTION_END_DATE","SubscriptionCard","onCtaClick","isAlreadyCancelled","cancelledSubscriptionDivClass","getCTAText","SUBSCRIPTION_WILL_END","Tool02","UserLeft01","Info","OTHER_MSG_NAME","MODAL_STEP","LeaveCommunityModal","communityName","OTHER_CHECK_NAME","FORM_CHECKBOX_LIST","FORM_CHECKBOX_MAP","check","eventsPurchased","foldersPurchased","hasPaidContent","isOtherChecked","isAtleastOneSelected","formDataKeys","checkIfAtleastOneCheckboxSelected","onInputChange","persist","onModalClose","submitForm","confirmLeave","formattedCancellationReason","checkKey","isChecked","isEnrolledToSingleCommunity","isEnrolledCommunityFreeOrGated","maxLength","renderModalContent","SubscriptionCardV2","isDemoCommunity","optionMenuRef","isOptionMenuOpen","setIsOptionMenuOpen","isLeaveCommunityModalOpen","setIsLeaveCommunityModalOpen","isAdminOrManager","isEnrolledDetail","roles","userObjectId","checkIfUserIsManagerOrAdmin","MembershipPage","headerStaticProps","setShowModal","isRedirecting","activeCommunities","onManageSubscriptionClick","onConfirmCancelClick","renderSubtitle","isDemo","CommonSettingWidget","header","Checkbox","InstagramGreyIcon","Select","noChevron","hasOptionsDisplay","YoutubeGreyIcon","fill-opacity","FormInput","showLogoBesideLabel","customClassForInputWrapper","checkboxClass","inputWrapperBaseClass","inputWrapperBaseClassNames","inputWrapperClassName","inputWrapperClassNames","messages","renderErrors","CommentSettingWidget","inputProps","HeaderContentForCommonSettingWidget","input","NewPreferencesPage","headerStaticPropsPreferences","findCountryWithCountryID","allSocialMediaValues","iconLink","SOCIAL_MEDIA_MODAL","PASSWORD_MODAL","EDIT_PROFILE_MODAL","getPhoneNumberWithDialCode","EditProfilePage","showPhoneUpdateModal","setShowPhoneUpdateModal","isPhoneNumberEdited","setIsPhoneNumberEdited","dialCodeValue","phoneNumberWithoutDialCode","isEditedPhoneNumberEqual","setDescription","inputText","CameraIcon","ProfileImageSetting","getImage","profileImage","imageInputRef","editorRef","editorShow","setEditorShow","file","imageFile","setImageFile","errorMessage","setErrorMessage","imageUploadLoading","setImageUploadLoading","checkImageSize","imageData","files","URL","createObjectURL","backgroundImage","display","image","border","color","scale","rotate","getImageScaledToCanvas","toBlob","blob","FormData","photoUrl","PasswordInput","legend","showLabel","BackToLoginButton","successMsg","ResetPasswordForm","inputs","includeBackToLogin","btnText","btnIsFluid","showForgotPassword","passwordIsFilled","loginLogoStaticProps","imgProps","Divider","narrowClass","ResetPasswordContainer","flowType","redirectToLogin","resetToken","renderSubtext","baseClassName","mainState","setOldPassword","newPassword","setNewPassword","confirmNewPassword","setConfirmNewPassword","isFlowType","changeField","resetStateData","formInputProps","flowProps","setupFlow","changeFlow","PasswordSettingWidget","listStyle","wordBreak","ShowPasswordResetUpdateInput","ShowSocialMediaUpdateInputs","onDiscardChanges","socialLinks","HandleInputChangeForSocialMediaField","selectedSocialmediaElement","onSocialMediaSelectChange","getLabelfromSocialMediaArray","onSaveTheChanges","allsocialMediaLinks","showLogoBeside","userSocialMediaLinks","DEFAULT_SOCIAL_MEDIA_OPTION","setSocailLinks","socialLinksdefault","setSocialLinksdefault","setSocialMediaelement","fullName","textStyleforEmail","commonElements","element","socialLink","commonElement","setSocialLinksAndSaveTheCopyOfSocialMediaLink","socilMediaLinks","socialMediaParameter","oldArray","newArray","saveCopyOfSocialMediaLinkStates","RunStarterCodeForFilteringSocialMediaList","socialMediaLinks","social","updated_constantvalues_with_socialMediaLinks","constantvalues","constantvalue","socialMediaLink","Set","answer","updatedvalue","socialMediaArray","newSocialMediaLink","showSocialMediaModel","showPasswordModel","showEditProfileModel","handleInputChangeForSocialMediaField","renderSocialMediaIcons","getSocialMediaComponentProps","class","headerStaticPropsReferral","RedeemBox","referralCredit","giftCredit","ctaHandler","ctaLabel","note","noCreditText","disabledButtonClassName","shouldRenderAmount","formattedReferralCredit","giftCreditNote","credit","padding","SuccessMessage","position","msg","NewReferralPage","referralProps","shareCTALabel","shareCTAOnClick","redeemBox","copyReferralSuccess","setCopyReferralSuccess","copyReferralCode","clipboard","writeText","ReferralCard","share","socialMediaProps","REFERRAL_BASE_LINK","CaretLeftIcon","SettingIcon01","SettingsNavigation","pageItems","onBackClick","prevLocation","renderNavItems","hidden","headingColorClass","whiteSpace","SettingsPageV2","getReferralWidgetProps","getReferralCode","referralUrl","referralWidgetStaticProps","restStaticProps","credits","formattedRedeemBoxProps","textToShare","getNavigationItems","navigationHandlers","hiddenStatus","getFilteredProfileModalInputFields","fieldsNames","renderPage","exact","inputPropsSocialMedia","getActiveSettingsPage","CommunityPortal","lazy","PortalModeWrapper","communityItems","renderActiveNonClassesPortal","useNewResetPasswordPageRedirection","ResetPasswordPage","titleText","rulesList","onFormSubmit","rule","AcademyLogoShortIcon","variant","clipPath","FloatingLabelInput","customInputClasses","customLabelClasses","optional","FormField","fieldType","isFloating","renderField","defaultState","isAnyModalOpen","listOfOpenModals","modalDataActions","openModalsDataReducer","action","updatedListOfOpenModals","modalName","updateUserBasicProfile","apiPath","borderRadius","defaultInitialValues","getBasicInfoValidationSchema","withPassword","phoneNumberRequired","passwordSchema","phoneRequiredSchema","fullPhoneNumber","useUpdateBasicInfo","_setUser","values","setValues","isSubmitting","setIsSubmitting","apiError","setApiError","passwordResetRequired","isWhatsappExperienceSubscriber","handleApiError","formattedUser","countryIdString","formatAlumniLearnerData","prevValues","update","fieldName","prevErrors","resetFieldError","resetApiError","NPLFloatingLabelInput","SetUserBasicDataModal","signupOriginData","data-test-id","renderFormField","login_logo","loginBackground","AuthenticationWrapper","formChildren","SignupForm","setEmail","setPassword","setConfirmPassword","SignupPage","authReducer","updatedUserData","bookingStart","bookingEnd","lesson","featureFlagReducer","creatorAcademy","removeSignupOriginQueryParams","urlSearchParams","delete","newURL","replaceState","announcement","userAgent","webviewRegExp","checkIsWebView","showParam","entityTypeParam","entityIdParam","getSingupOriginData","redirectRoute","AuthWrapper","isDemoUser","setUriTokens","parsedParamsObj","accessTokenCookie","getUserTokenFromCookies","refreshTokenCookie","getRefreshTokenFromCookies","areTokenInCookie","pathnameWithParams","loginWithToken","FacebookCommunityAuthPage","store","createStore","combineReducers","mainReducer","routesReducer","booking","bookingReducer","courseOverview","courseOverviewReducer","userReducer","featureFlag","openModalsData","applyMiddleware","thunk","hotjar","newLayoutPaths","App","Router","getUserConfirmation","confirm","fallback","background","Switch","Route","component","Redirect","ErrorPage","IS_DEV_ENV","NODE_ENV","GOOGLE_CLIENT_ID","REACT_APP_GOOGLE_CLIENT_ID","dsn","integrations","Integrations","BrowserTracing","tracesSampleRate","environment","ReactDOM","StrictMode"],"mappings":"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","file":"static/js/main.cfbf5dfb.chunk.js","sourcesContent":["export const setLoginFailed = (message) => ({\n type: 'SET_LOGIN_FAILED',\n message,\n});\n\nexport const setResetPasswordFailed = (message) => ({\n type: 'SET_RESET_PASSWORD_FAILED',\n message,\n});\n\nexport const setUpdateProfileStatus = (updateProfileStatus) => ({\n type: 'SET_UPDATE_PROFILE_STATUS',\n updateProfileStatus,\n});\n\nexport const setSuccess = (message) => ({\n type: 'SET_SUCCESS',\n message,\n});\n\nexport const setLoading = (load) => ({\n type: 'SET_LOADING',\n load,\n});\n\nexport const setAnnouncement = (announcement) => ({\n type: 'SET_ANNOUNCEMENT_SHOWN_STATUS',\n announcement,\n});\n","import Cookies from 'js-cookie';\nimport config from './config.js';\nimport { getPrimaryDomain } from './stringHelpers.js';\nimport localStorageService from '../utility/localStorageService.js';\nconst { authCookieDomain } = config;\nconst ACCESS_TOKEN_KEY_COOKIE = 'accessTokenNA';\nconst REFRESH_TOKEN_KEY_COOKIE = 'refreshTokenNA';\n\nclass Auth {\n /**\n * Save the user data in session Storage\n *\n * @param {string} userData\n * @param {string} accessToken\n */\n static authenticateUser(userData, accessToken) {\n if (userData)\n localStorageService.setItem('userData', JSON.stringify(userData));\n\n Cookies.set(ACCESS_TOKEN_KEY_COOKIE, accessToken, {\n path: '/',\n domain: getPrimaryDomain(),\n });\n }\n\n static setTokens(accessToken, refreshToken) {\n Cookies.set(ACCESS_TOKEN_KEY_COOKIE, accessToken, {\n path: '/',\n domain: getPrimaryDomain(),\n });\n Cookies.set(REFRESH_TOKEN_KEY_COOKIE, refreshToken, {\n path: '/',\n domain: getPrimaryDomain(),\n });\n }\n\n /**\n * De-authenticate a user.\n * Remove a token from session Storage.\n *\n */\n static deauthenticateUser() {\n localStorageService.removeItem('userData');\n localStorageService.removeItem('course');\n localStorageService.removeItem('isEnrolledinCMC');\n Cookies.remove(ACCESS_TOKEN_KEY_COOKIE, {\n path: '/',\n domain: authCookieDomain,\n });\n Cookies.remove(REFRESH_TOKEN_KEY_COOKIE, {\n path: '/',\n domain: authCookieDomain,\n });\n Auth.deleteUriTokens();\n }\n\n /**\n * return user token\n *\n * @returns {string}\n */\n static getUserToken() {\n return Cookies.get(ACCESS_TOKEN_KEY_COOKIE);\n }\n\n /**\n * return user token\n *\n * @returns {string}\n */\n static getRefreshToken() {\n return Cookies.get(REFRESH_TOKEN_KEY_COOKIE);\n }\n\n /**\n * return user token\n *\n * @returns {string}\n */\n static getUserTokenFromCookies() {\n return Cookies.get(ACCESS_TOKEN_KEY_COOKIE, {\n path: '/',\n domain: authCookieDomain,\n });\n }\n\n /**\n * return user token\n *\n * @returns {string}\n */\n static getRefreshTokenFromCookies() {\n return Cookies.get(REFRESH_TOKEN_KEY_COOKIE, {\n path: '/',\n domain: authCookieDomain,\n });\n }\n\n /**\n * return user data\n *\n * @returns {object}\n */\n static getUserData() {\n const userDataStr = localStorageService.getItem('userData');\n\n if (userDataStr === 'undefined') return null; // for backward compatability\n\n return userDataStr ? JSON.parse(userDataStr) : null;\n }\n\n /**\n * set user data\n *\n */\n static setUserData(userData) {\n if (userData)\n localStorageService.setItem('userData', JSON.stringify(userData));\n }\n\n static setReferralCode(referralCode) {\n if (referralCode) localStorageService.setItem('referralCode', referralCode);\n }\n\n static getReferralCode(referralCode) {\n return localStorageService.getItem('referralCode');\n }\n /**\n * set trainer data\n *\n */\n static setTrainerData(trainerData) {\n localStorageService.setItem('trainerData', JSON.stringify(trainerData));\n }\n\n static setIfUserEnrolledInCMC(value) {\n localStorageService.setItem('isEnrolledinCMC', value);\n }\n\n static getIfUserEnrolledInCMC() {\n return localStorageService.getItem('isEnrolledinCMC');\n }\n\n static clearIfUserEnrolledInCMC() {\n localStorageService.removeItem('isEnrolledinCMC');\n }\n\n static setUriTokens(token, refreshToken) {\n localStorageService.setItem('uriAccessToken', token);\n localStorageService.setItem('uriRefreshToken', refreshToken);\n this.setCookies(token, refreshToken);\n }\n\n static setCookies(token, refreshToken) {\n Cookies.set(ACCESS_TOKEN_KEY_COOKIE, token, {\n path: '/',\n domain: authCookieDomain,\n });\n Cookies.set(REFRESH_TOKEN_KEY_COOKIE, refreshToken, {\n path: '/',\n domain: authCookieDomain,\n });\n }\n\n static getUriTokens() {\n return {\n token: localStorageService.getItem('uriAccessToken') || '',\n refreshToken: localStorageService.getItem('uriRefreshToken') || '',\n };\n }\n\n static deleteUriTokens() {\n localStorageService.removeItem('uriAccessToken');\n localStorageService.removeItem('uriRefreshToken');\n }\n}\n\nexport default Auth;\n","import * as Sentry from '@sentry/react';\n\nimport Auth from '../../modules/auth';\nimport axios from 'axios';\nimport { getTokensService } from '../../actions/auth';\nimport keys from '../../config/keys';\nconst { baseURL } = keys;\n\nconst protectedAxiosRequest = axios.create({\n baseURL,\n});\n\nconst protectedReqConfigMiddleware = (request) => {\n return setAuthHeadersMiddleware(request);\n};\n\nexport const setAuthHeadersMiddleware = (request) => {\n const accessToken = 'Bearer '.concat(Auth.getUserToken());\n\n if (accessToken) {\n const argHeaders = request?.headers || {};\n request.headers = {\n Authorization: accessToken,\n ...argHeaders,\n };\n }\n\n return request;\n};\n\nexport const logErrorMiddleware = (error) => {\n Sentry.captureException(error.response);\n};\n\nexport const handle401ResponseMiddleware = async (error, fetchFn) => {\n const status = error?.response?.status;\n const originalRequest = error.config;\n const uriTokens = Auth.getUriTokens();\n const refreshToken = uriTokens.refreshToken || Auth.getRefreshToken();\n\n if (refreshToken && status === 401) {\n const payload = { refreshToken };\n return getTokensService(payload)\n .then((response) => {\n originalRequest.headers.Authorization = `Bearer ${response.data.token}`;\n return protectedAxiosRequest(originalRequest);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n};\n\nconst protectedReqErrorMiddleware = (error) => {\n return Promise.reject(error);\n};\n\nconst protectedResMiddleware = (response) => response;\nconst protectedResErrorMiddleware = (error) => {\n // Log error\n logErrorMiddleware(error);\n\n const status = error?.response?.status;\n const originalRequest = error.config;\n const uriTokens = Auth.getUriTokens();\n const refreshToken = uriTokens.refreshToken || Auth.getRefreshToken();\n\n if (refreshToken && status === 401) {\n const payload = { refreshToken };\n return getTokensService(payload)\n .then((response) => {\n originalRequest.headers.Authorization = `Bearer ${response.data.token}`;\n return protectedAxiosRequest(originalRequest);\n })\n .catch((error) => {\n return Promise.reject(error);\n });\n }\n\n return Promise.reject(error);\n};\n\n// Request interceptors\nprotectedAxiosRequest.interceptors.request.use(\n protectedReqConfigMiddleware,\n protectedReqErrorMiddleware\n);\n\n// Response interceptors\nprotectedAxiosRequest.interceptors.response.use(\n protectedResMiddleware,\n protectedResErrorMiddleware\n);\n\nexport default protectedAxiosRequest;\n","export const COMMUNITY_PORTAL = 'COMMUNITY_PORTAL';\nexport const CLASSES_PORTAL = 'CLASSES_PORTAL';\nexport const CREATOR_PORTAL = 'CREATOR_PORTAL';\n\n// page endpoints\nexport const COMMUNITY_PORTAL_PATH = 'communities';\nexport const CREATOR_PORTAL_PATH = 'creator';\nexport const COMMUNITY_PORTAL_HOMEPAGE_ENDPOINT = 'home';\nexport const COMMUNITY_PORTAL_EVENTS_PAGE_ENDPOINT = 'events';\nexport const COMMUNITY_PORTAL_LIBRARY_PAGE_ENDPOINT = 'library';\nexport const COMMUNITY_PORTAL_MEMBERS_PAGE_ENDPOINT = 'members';\nexport const COMMUNITY_PORTAL_MEET_AN_EXPERT_PAGE_ENDPOINT = 'meet-an-trainer';\n// routes\nexport const CLASSES_PORTAL_ROOT = '/';\nexport const COMMUNITY_PORTAL_ROOT = '/communities';\nexport const CREATOR_PORTAL_ROOT = '/creator';\nexport const SETTINGS_PORTAL_ROOT = '/setting';\n\nexport const COMMUNITY_PORTAL_HOME_PAGE_PATH = `/communities/:communityId/${COMMUNITY_PORTAL_HOMEPAGE_ENDPOINT}`;\nexport const COMMUNITY_PORTAL_EVENTS_PAGE_PATH = `/communities/:communityId/${COMMUNITY_PORTAL_EVENTS_PAGE_ENDPOINT}`;\nexport const COMMUNITY_PORTAL_LIBRARY_PAGE_PATH = `/communities/:communityId/${COMMUNITY_PORTAL_LIBRARY_PAGE_ENDPOINT}`;\nexport const COMMUNITY_PORTAL_LIBRARY_FOLDER_PATH = `/communities/:communityId/${COMMUNITY_PORTAL_LIBRARY_PAGE_ENDPOINT}/:folderId`;\nexport const COMMUNITY_PORTAL_MEMBERS_PAGE_PATH = `/communities/:communityId/${COMMUNITY_PORTAL_MEMBERS_PAGE_ENDPOINT}`;\nexport const COMMUNITY_PORTAL_TRAIN_A_MENTOR_PAGE_PATH = `/communities/:communityId/${COMMUNITY_PORTAL_MEET_AN_EXPERT_PAGE_ENDPOINT}`;\nexport const COMMUNITY_PORTAL_SINGLE_POST_PAGE_PATH = `/communities/:communityId/post/:postId`;\nexport const communityPortalPaths = [\n COMMUNITY_PORTAL_ROOT,\n COMMUNITY_PORTAL_HOME_PAGE_PATH,\n COMMUNITY_PORTAL_EVENTS_PAGE_PATH,\n COMMUNITY_PORTAL_LIBRARY_PAGE_PATH,\n COMMUNITY_PORTAL_LIBRARY_FOLDER_PATH,\n COMMUNITY_PORTAL_MEMBERS_PAGE_PATH,\n COMMUNITY_PORTAL_TRAIN_A_MENTOR_PAGE_PATH,\n COMMUNITY_PORTAL_SINGLE_POST_PAGE_PATH,\n];\n\nexport const STORED_ACTIVE_COMMUNITY_SESSION_CODE =\n 'STORED_ACTIVE_COMMUNITY_SESSION_CODE';\n","import { deviceType, isIOS, isMobile, isTablet } from 'react-device-detect';\n\nimport config from '../config';\nimport { getTimezoneId } from '../../utility/dateHelper';\n\nexport const sharedRequestOptions = {\n withCredentials: true,\n headers: {\n device: deviceType,\n isios: isIOS,\n ismobile: isMobile,\n istablet: isTablet,\n },\n};\n\nexport const UPCOMING_EVENTS_ENDPOINT = 'upcoming';\nexport const PAST_EVENTS_ENDPOINT = 'past';\n\nexport const NEWEST_DATA_SORTING_PARAM = 'desc';\nexport const OLDEST_DATA_SORTING_PARAM = 'asc';\nexport const ALL_MEMBERSHIPS_FILTER = 'all';\nexport const NAS_ACADEMY_MEMBERSHIPS_FILTER = 'nas';\nexport const NEAR_YOU_MEMBERSHIPS_FILTER = 'country';\n\nexport const communitiesURL = (id) =>\n id ? `${config.BASE_BE_URL}?activeCommunityId=${id}` : config.BASE_BE_URL;\n\nexport const lastInteractedCommunityURL = () =>\n `${process.env.REACT_APP_AUTH_SERVER_URL}/api/v1/last-interacted-community`;\n\nexport const communityInvoicesURL = () =>\n `${config.MAIN_WEBSITE_URL}/get-community-invoices`;\nexport const cancelCommunityURL = () =>\n `${config.MAIN_WEBSITE_URL}/community-cancel`;\n\nexport const eventsURL = (communityId, eventsType) =>\n `${config.BASE_BE_URL}/${communityId}/events/${eventsType}`;\n\nexport const upcomingEventsURL = (communityId) =>\n eventsURL(communityId, UPCOMING_EVENTS_ENDPOINT);\nexport const pastEventsURL = (communityId) =>\n eventsURL(communityId, PAST_EVENTS_ENDPOINT);\n\nexport const eventRegistrationURL = (eventId) =>\n `${\n config.BASE_BE_URL\n }/event/${eventId}/register?timezoneId=${getTimezoneId()}`;\n\nexport const bookingRegistrationURL = (communityId) =>\n `${config.BASE_BE_URL}/${communityId}/trainers/book`;\n\nexport const bookingCancellationURL = (communityId) =>\n `${config.BASE_BE_URL}/${communityId}/trainers/cancel`;\n\nexport const libraryURL = (communityId, dataType) =>\n `${config.BASE_BE_URL}/${communityId}/${dataType}`;\n\nexport const membersURL = (communityId) =>\n `${config.BASE_BE_URL}/${communityId}/memberships`;\nexport const libraryFolderURL = (communityId, folderType) =>\n `${config.BASE_BE_URL}/${communityId}/folders?type=${folderType}`;\nexport const libraryFolderGeneralURL = (communityId, folderType) =>\n `${config.BASE_BE_URL}/${communityId}/folders`;\nexport const librarySingleFolderURL = (communityId, folderId) =>\n `${config.BASE_BE_URL}/${communityId}/folder/${folderId}`;\n\nexport const librarySearchURL = (communityId, search) =>\n `${config.BASE_BE_URL}/${communityId}/search?filter=${search}`;\n\nexport const libraryFolderClickedURL = (communityFolderObjId) =>\n `${config.BASE_BE_URL}/folder/${communityFolderObjId}/log`;\n\nexport const adminCommunityURL = `${config.BASE_BE_URL}/admin-community`;\n","const keys = {\n baseURL: process.env.REACT_APP_AUTH_SERVER_URL,\n paymentURL: process.env.REACT_APP_PAYMENT_SERVER_URL,\n imagesBasePath: process.env.REACT_APP_CLOUDFRONT_URL,\n // gtmId: process.env.REACT_APP_GTM_ID,\n gtmContainerId: process.env.REACT_APP_GTM_CONTAINER_ID,\n mainWebsiteUrl: process.env.REACT_APP_MAIN_WEBSITE_URL,\n courseAssetBaseUrl: process.env.REACT_APP_COURSE_ASSET_BASE_URL,\n referFreindUrl: process.env.REACT_APP_REFER_FREIND_LINK,\n redeemFormLink: process.env.REACT_APP_REDEEM_FORM_LINK,\n configCatKey: process.env.REACT_APP_CONFIG_CAT_KEY,\n referralBaseLink: process.env.REACT_APP_REFERRAL_BASE_URL,\n nasIOBaseUrl: process.env.REACT_APP_NASIO_BASE_URL,\n metaphiSdkApiKey: process.env.REACT_APP_METAPHI_SDK_API_KEY,\n metaphiSdkAccountId: process.env.REACT_APP_METAPHI_SDK_ACCOUNT_ID,\n authApiBaseUrl: process.env.REACT_APP_LOGIN_ROUTE,\n soldOutResourcePaths: process.env.REACT_APP_SOLD_OUT_RESOURCES,\n newMemberPortalRedirection:\n process.env.REACT_APP_NEW_MEMBER_PORTAL_REDIRECTION === 'true',\n newResetPasswordRedirection:\n process.env.REACT_APP_RESET_PASSWORD_REDIRECTION === 'true',\n};\n\nexport default keys;\n","let localStorageInstance = null;\n\n//in anonymous mode of browsers, we are unable to save data in localStorage\n//in some cases, users' browsers don't allow localStorage either\n//so we need to replicate localStorage and keep all changes in local data\nclass LocalStorageService {\n constructor() {\n if (!localStorageInstance) {\n this.currentLocalStorage = {};\n localStorageInstance = this;\n }\n\n return localStorageInstance;\n }\n\n isSupported() {\n try {\n const key = '_this_key_should_not_use_anywhere_';\n const value = '_this_value_should_not_use_anywhere_';\n if (typeof window === 'undefined' || !window.localStorage) {\n return false;\n }\n window.localStorage.setItem(key, value);\n window.localStorage.removeItem(key);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n getItem(key) {\n if (this.isSupported()) {\n return window.localStorage.getItem(key) || this.currentLocalStorage[key];\n }\n return this.currentLocalStorage[key];\n }\n\n setItem(key, value) {\n if (this.isSupported()) {\n window.localStorage.setItem(key, value);\n }\n this.currentLocalStorage[key] = value;\n }\n\n removeItem(key) {\n if (this.isSupported()) {\n window.localStorage.removeItem(key);\n }\n delete this.currentLocalStorage[key];\n }\n\n clear() {\n if (this.isSupported()) {\n window.localStorage.clear();\n }\n this.currentLocalStorage = {};\n }\n\n length() {\n if (this.isSupported()) {\n return window.localStorage.length;\n }\n return Object.keys(this.currentLocalStorage).length;\n }\n}\n\nexport default new LocalStorageService();\n","export const getAxiosError = (error) => ({\n error: error?.response?.data?.message || 'Something went wrong!',\n});\n\nexport const getQueryStrFromObj = (obj) => {\n return Object.keys(obj)\n .map((key) => `${key}=${obj[key]}`)\n .join('&');\n};\n","import { createBrowserHistory } from 'history';\n\nconst history = createBrowserHistory();\n\nexport default history;\n","import * as Sentry from '@sentry/react';\nimport axios from 'axios';\nimport keys from '../config/keys';\nimport Auth from '../modules/auth';\nimport history from '../modules/history';\nimport protectedAxiosRequest from '../services/helper/protectedAxiosRequest';\nimport { clearTrackUserId, initializeTrackUserId } from '../utility/analytics';\nimport {\n setLoading,\n setLoginFailed,\n setResetPasswordFailed,\n setSuccess,\n} from './main';\nimport { setToken, setUser } from './user';\nimport { setCurrentRoute } from './routes';\nimport sessionStorageService from '../utility/sessionStorageService';\nimport { switchToUserPreferredLanguage } from '../utility/locale';\n\nconst { baseURL, authApiBaseUrl } = keys;\n\nexport const login = (id, user) => ({\n type: 'LOGIN',\n id,\n user,\n});\n\nexport const signup = (user) => ({\n type: 'SIGNUP',\n user,\n});\n\nexport const logout = () => ({\n type: 'LOGOUT',\n});\n\nexport const setCreatorFeatureFlag = (flag) => ({\n type: 'SET_CREATOR_FF',\n payload: flag,\n});\n\nexport const resetPassword = () => ({\n type: 'TRIGGER_RESETPASSWORD',\n});\n\nexport const verifyEmail = () => ({\n type: 'VERIFY_EMAIL',\n});\n\nexport const updateAuthUserData = (user) => ({\n type: 'UPDATE_USER_DATA',\n user,\n});\n\nconst _checkFieldNotEmpty = (field) => {\n return field && field !== '';\n};\n\nconst _passwordIsStrong = (password) => {\n const strongRegex = new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})');\n return strongRegex.test(password);\n};\n\nexport const startSignUp = (email, password, confirmPassword, token) => {\n return (dispatch) => {\n dispatch(setLoading(true));\n\n let dt = {};\n // Check token\n if (token) {\n dt = { email, password, password2: confirmPassword, token };\n } else {\n dt = { email, password, password2: confirmPassword };\n }\n if (\n _checkFieldNotEmpty(password) &&\n _checkFieldNotEmpty(confirmPassword) &&\n password === confirmPassword\n ) {\n if (password !== confirmPassword) {\n dispatch(setLoading(false));\n dispatch(setLoginFailed('Confirm Password does not match.'));\n } else if (!_passwordIsStrong(password)) {\n dispatch(setLoading(false));\n dispatch(\n setLoginFailed(\n 'Please choose a stronger password. Password has to contain at least 1 uppercase alphabetical character, 1 lowercase alphabetical character, 1 numeric character and eight characters or longer'\n )\n );\n } else {\n axios\n .post(`${baseURL}/api/v1/sign-up`, dt, {\n withCredentials: true,\n })\n .then((response) => {\n const { token, refresh_token, user } = response.data;\n let userData = {};\n if (user.learner_role) {\n userData = user.learner;\n userData.learner_role = user.learner_role;\n } else if (user.instructor_role) {\n userData = user.trainer;\n userData.instructor_role = user.instructor_role;\n }\n userData.user_id = user.user_id;\n\n // Set user data\n Auth.authenticateUser(userData, token);\n Auth.setTokens(token, refresh_token);\n\n dispatch(setUser(userData));\n\n dispatch(setLoginFailed(false));\n dispatch(login(user._id, user));\n dispatch(setLoading(false));\n // clear token on route params and route to home page\n history.push({\n pathname: '/',\n search: '',\n });\n })\n .catch((err) => {\n Sentry.captureException(err.response);\n if (err.response) {\n dispatch(setResetPasswordFailed(err.response.data.message));\n } else {\n dispatch(setResetPasswordFailed(err.response));\n }\n });\n }\n } else {\n dispatch(setLoginFailed('Invalid password'));\n dispatch(setLoading(false));\n }\n };\n};\n\nconst _authenticationPromise = (callback) => {\n return new Promise((resolve, reject) => {\n resolve(callback);\n });\n};\n\nconst _postLoginProcess = (userData, token, refreshToken, dispatch) => {\n Auth.authenticateUser(userData, token);\n Auth.setTokens(token, refreshToken);\n dispatch(setUser(userData));\n};\n\nexport const startLogin = (email, password, currentRoute) => {\n return (dispatch) => {\n const dt = { email, password };\n dispatch(setLoading(true));\n\n axios\n .post(`${baseURL}/api/v1/log-in`, dt, {\n withCredentials: true,\n })\n .then((response) => {\n const { token, refresh_token } = response.data;\n const { user } = response.data;\n let userData = {};\n if (user.learner_role) {\n userData = user.learner;\n userData.learner_role = user.status;\n userData.status = user.learner_role;\n } else if (user.instructor_role) {\n userData = user.trainer;\n userData.instructor_role = user.instructor_role;\n }\n userData.user_id = user.user_id;\n\n switchToUserPreferredLanguage(user);\n\n // Set user data\n _authenticationPromise(\n _postLoginProcess(userData, token, refresh_token, dispatch)\n ).then(() => {\n dispatch(setLoginFailed(false));\n dispatch(login(user._id, user));\n dispatch(setLoading(false));\n if (!currentRoute || currentRoute.includes('/login'))\n history.push({\n pathname: '/',\n search: '',\n });\n else history.push(currentRoute);\n });\n })\n .catch((err) => {\n Sentry.captureException(err.response);\n if (err.response) {\n dispatch(setLoginFailed(err.response.data.message));\n } else {\n dispatch(setLoginFailed(err.response));\n }\n dispatch(setLoading(false));\n });\n };\n};\n\nexport const getTokensService = (payload) => {\n return axios\n .post(`${baseURL}/api/v1/get-token`, payload, {\n withCredentials: true,\n })\n .then((response) => {\n const { token, refresh_token } = response.data;\n Auth.setTokens(token, refresh_token);\n Auth.deleteUriTokens(token);\n return response;\n });\n};\n\n/**\n * Payload should send either authToken or refreshToken\n * @param {*} payload | Object\n * @param {*} payload.authToken | String\n * @param {*} payload.refreshToken | String\n * @param {*} currentRoute\n * @returns Promise\n */\n// export const startGetTokens = (socialToken, currentRoute) => {\nexport const startGetTokens = (payload, currentRoute) => {\n return (dispatch) => {\n dispatch(setLoading(true));\n\n getTokensService(payload)\n .then((response) => {\n const { token, refresh_token } = response.data;\n\n Auth.setTokens(token, refresh_token);\n dispatch(setLoading(false));\n dispatch(startLoginCheck(token, refresh_token, currentRoute));\n })\n .catch((err) => {\n Sentry.captureException(err.response);\n if (err.response) {\n dispatch(setLoginFailed(err.response.data.message));\n } else {\n dispatch(setLoginFailed(err.response));\n }\n dispatch(setLoading(false));\n });\n };\n};\n\nconst setData = async (dispatch, userData, token) => {\n Auth.setUserData(userData);\n Auth.authenticateUser(userData, token);\n dispatch(setUser(userData));\n dispatch(setToken(token));\n};\n\nexport const startLoginCheck = (\n token,\n refreshToken,\n currentRoute,\n email = ''\n) => {\n return (dispatch) => {\n if (token) {\n // Check if token expired\n const AuthStr = 'Bearer '.concat(token);\n protectedAxiosRequest\n .get(`${baseURL}/api/v1/user-profile`, {\n headers: {\n Authorization: AuthStr,\n },\n })\n .then(async (response) => {\n const promoCode = response?.data?.learner?.promoCode;\n Auth.setReferralCode(promoCode);\n const user = response.data;\n let userData = {};\n if (user.learner_role) {\n userData = user.learner;\n userData.learner_role = user.learner_role;\n userData.status = user.status;\n } else if (user.instructor_role) {\n userData = user.trainer;\n userData.instructor_role = user.instructor_role;\n }\n userData.user_id = user.user_id;\n\n switchToUserPreferredLanguage(user);\n\n //GA user tracking\n initializeTrackUserId(user.user_id);\n\n await setData(dispatch, userData, token);\n\n dispatch(setLoginFailed(false));\n dispatch(login(user._id, user));\n dispatch(setLoading(false));\n\n if (currentRoute === '/login') {\n history.push({ pathname: '/', search: '' });\n } else if (currentRoute === '/') {\n history.push({ pathname: currentRoute, search: '' });\n }\n })\n .catch((err) => {\n Sentry.captureException(err.response);\n Auth.deauthenticateUser();\n dispatch(setLoginFailed(true));\n history.push({ pathname: '/login', search: '' });\n });\n } else if (currentRoute === '/login') {\n // Already in /Login route so dont redirect again\n dispatch(setLoginFailed(true));\n } else {\n if (currentRoute === '/login') return;\n\n const redirectTo = currentRoute === '/login' ? '' : window.location.href;\n let queryStr = redirectTo ? `?redirectTo=${redirectTo}&` : '';\n\n if (email) {\n queryStr += `email=${encodeURIComponent(email)}`;\n }\n window.location.href = `${process.env.REACT_APP_NASIO_BASE_URL}/login${queryStr}`;\n }\n };\n};\n\nexport const startLogout = (currentRoute) => {\n return (dispatch) => {\n Auth.deauthenticateUser();\n sessionStorageService.clear();\n dispatch(setCurrentRoute(currentRoute));\n dispatch(setLoginFailed(false));\n dispatch(logout());\n\n //GA user tracking\n clearTrackUserId();\n if (currentRoute !== '/login') {\n window.location.href = `${process.env.REACT_APP_NASIO_BASE_URL}/login${window.location.search}`;\n }\n };\n};\n\nexport const triggerResetPassword = ({ email = '', phoneNumber = '' }) => {\n return (dispatch) => {\n dispatch(setLoading(true));\n dispatch(setSuccess(false));\n axios\n .post(`${authApiBaseUrl}/api/v1/forget-password`, { email, phoneNumber })\n .then((response) => {\n dispatch(setSuccess('A request for reset password has been sent.'));\n dispatch(setResetPasswordFailed(''));\n dispatch(setLoading(false));\n })\n .catch((err) => {\n Sentry.captureException(err.response);\n dispatch(\n setResetPasswordFailed(err?.response?.data?.message || err?.message)\n );\n dispatch(setLoading(false));\n });\n };\n};\n\nexport const resetTriggerResetPasswordSuccess = () => {\n return (dispatch) => {\n dispatch(setSuccess(''));\n };\n};\n\nexport const sendResetPassword = (\n password,\n confirmPassword,\n token,\n oldPassword = '',\n bearerToken = '',\n afterResetHandler\n) => {\n return (dispatch) => {\n dispatch(setLoading(true));\n if (password === '' || confirmPassword === '') {\n dispatch(setLoading(false));\n dispatch(setResetPasswordFailed('Please key in password.'));\n } else if (password !== confirmPassword) {\n dispatch(setLoading(false));\n dispatch(setResetPasswordFailed('Confirm Password does not match.'));\n } else if (password === oldPassword) {\n dispatch(setLoading(false));\n dispatch(\n setResetPasswordFailed(\n 'New password cannot be the same as your previous password.'\n )\n );\n } else if (!_passwordIsStrong(password)) {\n dispatch(setLoading(false));\n dispatch(\n setResetPasswordFailed(\n 'Password is not strong enough.\\nPassword has to contain at least 1 uppercase alphabetical character.\\n1 lowercase alphabetical character.\\n1 numeric character and eight characters or longer\\n'\n )\n );\n } else {\n let dt;\n let apiUrl;\n let headers;\n\n // Reset password with previous password\n if (\n !token &&\n oldPassword &&\n oldPassword !== '' &&\n bearerToken &&\n bearerToken !== ''\n ) {\n dt = {\n password,\n password2: confirmPassword,\n oldPassword,\n };\n // protected endpoint so not on auth-service, its on learning-portal-backend\n apiUrl = `${baseURL}/api/v1/auth/reset-password`;\n headers = { headers: { Authorization: bearerToken } };\n }\n\n // Reset password with token\n else if (token && token !== '') {\n dt = {\n password,\n password2: confirmPassword,\n };\n apiUrl = `${authApiBaseUrl}/api/v1/reset-password/${token}`;\n headers = { headers: {} };\n }\n\n axios\n .post(apiUrl, dt, headers)\n .then((response) => {\n if (afterResetHandler) {\n afterResetHandler();\n }\n dispatch(setSuccess('Password has been reset.'));\n dispatch(setLoading(false));\n dispatch(setResetPasswordFailed(false));\n })\n .catch((err) => {\n Sentry.captureException(err.response);\n if (err.response) {\n dispatch(setResetPasswordFailed(err.response.data.message));\n } else {\n dispatch(setResetPasswordFailed(err.response));\n }\n dispatch(setLoading(false));\n });\n }\n };\n};\n\nexport const setLoginFailStatus = (message) => {\n return (dispatch) => {\n dispatch(setLoginFailed(message));\n };\n};\n\nexport const sendVerifyEmailToken = (token) => {\n return (dispatch) => {\n dispatch(setLoading(true));\n dispatch(setSuccess(false));\n axios\n .post(`${baseURL}/api/v1/verify-email/${token}`)\n .then((response) => {\n dispatch(\n setSuccess(\n 'Email has been verified. You will be redirected to login.'\n )\n );\n _redirect('/login', 4000, dispatch);\n dispatch(setLoading(false));\n })\n .catch((err) => {\n Sentry.captureException(err.response);\n if (err.response) {\n dispatch(\n setResetPasswordFailed(\n `${err.response.data.message}. You will be redirected to login`\n )\n );\n } else {\n dispatch(\n setResetPasswordFailed(\n `${err.response}. You will be redirected to login`\n )\n );\n }\n _redirect('/login', 4000, dispatch);\n dispatch(setLoading(false));\n });\n };\n};\n\nconst _redirect = (route, delay, dispatch) => {\n setTimeout(() => {\n dispatch(setLoginFailed(false));\n dispatch(setSuccess(false));\n history.replace({\n pathname: route,\n search: '',\n });\n }, delay);\n};\n","export const setCurrentRoute = (route) => ({\n type: 'SET_CURRENT_ROUTE',\n route,\n});\n\nexport const resetCurrentRoute = () => ({\n type: 'RESET_CURRENT_ROUTE',\n});\n","const countries = {\n SG: {\n name: 'Singapore',\n id: 153,\n dialCode: '+65',\n wisenetCode: '5205',\n rapidId: 'SG',\n paypalAllowed: false,\n countryCode: 'SG',\n flag: '🇸🇬',\n },\n PH: {\n name: 'Philippines',\n id: 139,\n dialCode: '+63',\n wisenetCode: '5204',\n rapidId: 'PH',\n paypalAllowed: false,\n countryCode: 'PH',\n flag: '🇵🇭',\n },\n IN: {\n name: 'India',\n id: 79,\n dialCode: '+91',\n wisenetCode: '7103',\n rapidId: 'IN',\n paypalAllowed: false,\n countryCode: 'IN',\n flag: '🇮🇳',\n },\n MY: {\n name: 'Malaysia',\n id: 125,\n dialCode: '+60',\n wisenetCode: '5203',\n rapidId: 'MY',\n paypalAllowed: false,\n countryCode: 'MY',\n flag: '🇲🇾',\n },\n ID: {\n name: 'Indonesia',\n id: 78,\n dialCode: '+62',\n wisenetCode: '5202',\n rapidId: 'ID',\n // rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'ID',\n flag: '🇮🇩',\n },\n};\n\nexport const countryList = [\n { ...countries.SG },\n { ...countries.MY },\n { ...countries.ID },\n { ...countries.IN },\n { ...countries.PH },\n {\n name: 'United Kingdom',\n id: 63,\n dialCode: '+44',\n wisenetCode: '2100',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GB',\n flag: '🇬🇧',\n },\n {\n name: 'United States',\n id: 184,\n dialCode: '+1',\n wisenetCode: '8104',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'US',\n flag: '🇺🇸',\n },\n {\n name: 'Afghanistan',\n id: 1,\n dialCode: '+93',\n wisenetCode: '7201',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'AF',\n flag: '🇦🇫',\n },\n {\n name: 'Albania',\n id: 3,\n dialCode: '+355',\n wisenetCode: '3201',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AL',\n flag: '🇦🇱',\n },\n {\n name: 'Algeria',\n id: 50,\n dialCode: '+213',\n wisenetCode: '4101',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'DZ',\n flag: '🇩🇿',\n },\n {\n name: 'Andorra',\n id: 4,\n dialCode: '+376',\n wisenetCode: '3101',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AD',\n flag: '🇦🇩',\n },\n {\n name: 'Angola',\n id: 2,\n dialCode: '+244',\n wisenetCode: '9201',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AO',\n flag: '🇦🇴',\n },\n {\n name: 'Antigua and Barbuda',\n id: 8,\n dialCode: '+1268',\n wisenetCode: '8402',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AG',\n flag: '🇦🇬',\n },\n {\n name: 'Argentina',\n id: 6,\n dialCode: '+54',\n wisenetCode: '8201',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AR',\n flag: '🇦🇷',\n },\n {\n name: 'Armenia',\n id: 7,\n dialCode: '+374',\n wisenetCode: '7202',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AM',\n flag: '🇦🇲',\n },\n {\n name: 'Australia',\n id: 9,\n dialCode: '+61',\n wisenetCode: '1101',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AU',\n flag: '🇦🇺',\n },\n {\n name: 'Austria',\n id: 10,\n dialCode: '+43',\n wisenetCode: '2301',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AT',\n flag: '🇦🇹',\n },\n {\n name: 'Azerbaijan',\n id: 11,\n dialCode: '+994',\n wisenetCode: '7203',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AZ',\n flag: '🇦🇿',\n },\n {\n name: 'Bahamas',\n id: 19,\n dialCode: '+1242',\n wisenetCode: '8404',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BS',\n flag: '🇧🇸',\n },\n {\n name: 'Bahrain',\n id: 18,\n dialCode: '+973',\n wisenetCode: '4201',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BH',\n flag: '🇧🇭',\n },\n {\n name: 'Bangladesh',\n id: 16,\n dialCode: '+880',\n wisenetCode: '7101',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'BD',\n flag: '🇧🇩',\n },\n {\n name: 'Barbados',\n id: 25,\n dialCode: '+1246',\n wisenetCode: '8405',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BB',\n flag: '🇧🇧',\n },\n {\n name: 'Belarus',\n id: 21,\n dialCode: '+375',\n wisenetCode: '3301',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BY',\n flag: '🇧🇾',\n },\n {\n name: 'Belgium',\n id: 13,\n dialCode: '+32',\n wisenetCode: '2302',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BE',\n flag: '🇧🇪',\n },\n {\n name: 'Belize',\n id: 22,\n dialCode: '+501',\n wisenetCode: '8301',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BZ',\n flag: '🇧🇿',\n },\n {\n name: 'Benin',\n id: 14,\n dialCode: '+229',\n wisenetCode: '9101',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BJ',\n flag: '🇧🇯',\n },\n {\n name: 'Bhutan',\n id: 27,\n dialCode: '+975',\n wisenetCode: '7102',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BT',\n flag: '🇧🇹',\n },\n {\n name: 'Bolivia',\n id: 23,\n dialCode: '+591',\n wisenetCode: '8202',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BO',\n },\n {\n name: 'Bosnia and Herzegovina',\n id: 20,\n dialCode: '+387',\n wisenetCode: '3202',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BA',\n flag: '🇧🇦',\n },\n {\n name: 'Botswana',\n id: 28,\n dialCode: '+267',\n wisenetCode: '9202',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BW',\n flag: '🇧🇼',\n },\n {\n name: 'Brazil',\n id: 24,\n dialCode: '+55',\n wisenetCode: '8203',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BR',\n flag: '🇧🇷',\n },\n {\n name: 'Brunei Darussalam',\n id: 26,\n dialCode: '+673',\n wisenetCode: '5201',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BN',\n flag: '🇧🇳',\n },\n {\n name: 'Bulgaria',\n id: 17,\n dialCode: '+359',\n wisenetCode: '3203',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BG',\n flag: '🇧🇬',\n },\n {\n name: 'Burkina Faso',\n id: 15,\n dialCode: '+226',\n wisenetCode: '9102',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BF',\n flag: '🇧🇫',\n },\n {\n name: 'Burundi',\n id: 12,\n dialCode: '+257',\n wisenetCode: '9203',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'BI',\n flag: '🇧🇮',\n },\n {\n name: 'Cambodia',\n id: 92,\n dialCode: '+855',\n wisenetCode: '5102',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'KH',\n flag: '🇰🇭',\n },\n {\n name: 'Cameroon',\n id: 35,\n dialCode: '+237',\n wisenetCode: '9103',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CM',\n flag: '🇨🇲',\n },\n {\n name: 'Canada',\n id: 30,\n dialCode: '+1',\n wisenetCode: '8102',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CA',\n flag: '🇨🇦',\n },\n {\n name: 'Cape Verde',\n id: 40,\n dialCode: '+238',\n wisenetCode: '9104',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CV',\n flag: '🇨🇻',\n },\n {\n name: 'Central African Republic',\n id: 29,\n dialCode: '+236',\n wisenetCode: '9105',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'CF',\n flag: '🇨🇫',\n },\n {\n name: 'Chad',\n id: 168,\n dialCode: '+235',\n wisenetCode: '9106',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TD',\n flag: '🇹🇩',\n },\n {\n name: 'Chile',\n id: 32,\n dialCode: '+56',\n wisenetCode: '8204',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CL',\n flag: '🇨🇱',\n },\n {\n name: 'China',\n id: 33,\n dialCode: '+86',\n wisenetCode: '6101',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CN',\n flag: '🇨🇳',\n },\n {\n name: 'Colombia',\n id: 38,\n dialCode: '+57',\n wisenetCode: '8205',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CO',\n flag: '🇨🇴',\n },\n {\n name: 'Comoros',\n id: 39,\n dialCode: '+269',\n wisenetCode: '9204',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'KM',\n flag: '🇰🇲',\n },\n {\n name: 'Curaçao',\n id: 10004,\n dialCode: '+599',\n wisenetCode: '',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'CW',\n flag: '🇨🇼',\n },\n {\n name: \"People's Republic of the Congo\",\n id: 37,\n dialCode: '+242',\n wisenetCode: '9107',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CG',\n flag: '🇨🇬',\n },\n {\n name: 'Democratic Republic of the Congo',\n id: 36,\n dialCode: '+243',\n wisenetCode: '9108',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CD',\n flag: '🇨🇩',\n },\n {\n name: 'Costa Rica',\n id: 41,\n dialCode: '+506',\n wisenetCode: '8302',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CR',\n flag: '🇨🇷',\n },\n {\n name: 'Croatia',\n id: 75,\n dialCode: '+385',\n wisenetCode: '3204',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'HR',\n flag: '🇭🇷',\n },\n {\n name: 'Cuba',\n id: 42,\n dialCode: '+53',\n wisenetCode: '8407',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'CU',\n flag: '🇨🇺',\n },\n {\n name: 'Cyprus',\n id: 43,\n dialCode: '+357',\n wisenetCode: '3205',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CY',\n flag: '🇨🇾',\n },\n {\n name: 'Czech Republic',\n id: 44,\n dialCode: '+420',\n wisenetCode: '3302',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CZ',\n flag: '🇨🇿',\n },\n {\n name: 'Denmark',\n id: 48,\n dialCode: '+45',\n wisenetCode: '2401',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'DK',\n flag: '🇩🇰',\n },\n {\n name: 'Djibouti',\n id: 46,\n dialCode: '+253',\n wisenetCode: '9205',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'DJ',\n flag: '🇩🇯',\n },\n {\n name: 'Dominica',\n id: 47,\n dialCode: '+1767',\n wisenetCode: '8408',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'DM',\n flag: '🇩🇲',\n },\n {\n name: 'Dominican Republic',\n id: 49,\n dialCode: '+1',\n wisenetCode: '8411',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'DO',\n flag: '🇩🇴',\n },\n {\n name: 'Timor-Leste',\n id: 173,\n dialCode: '+670',\n wisenetCode: '5206',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'TL',\n flag: '🇹🇱',\n },\n {\n name: 'Ecuador',\n id: 51,\n dialCode: '+593',\n wisenetCode: '8206',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'EC',\n flag: '🇪🇨',\n },\n {\n name: 'Egypt',\n id: 52,\n dialCode: '+20',\n wisenetCode: '4102',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'EG',\n flag: '🇪🇬',\n },\n {\n name: 'El Salvador',\n id: 156,\n dialCode: '+503',\n wisenetCode: '8303',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SV',\n flag: '🇸🇻',\n },\n {\n name: 'Equatorial Guinea',\n id: 69,\n dialCode: '+240',\n wisenetCode: '9112',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'GQ',\n flag: '🇬🇶',\n },\n {\n name: 'Eritrea',\n id: 53,\n dialCode: '+291',\n wisenetCode: '9206',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'ER',\n flag: '🇪🇷',\n },\n {\n name: 'Estonia',\n id: 56,\n dialCode: '+372',\n wisenetCode: '3303',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'EE',\n flag: '🇪🇪',\n },\n {\n name: 'Ethiopia',\n id: 57,\n dialCode: '+251',\n wisenetCode: '9207',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'ET',\n flag: '🇪🇹',\n },\n {\n name: 'Fiji',\n id: 59,\n dialCode: '+679',\n wisenetCode: '1502',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'FJ',\n flag: '🇫🇯',\n },\n {\n name: 'Finland',\n id: 58,\n dialCode: '+358',\n wisenetCode: '2403',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'FI',\n flag: '🇫🇮',\n },\n {\n name: 'France',\n id: 60,\n dialCode: '+33',\n wisenetCode: '2303',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'FR',\n flag: '🇫🇷',\n },\n {\n name: 'French Polynesia',\n id: 2000,\n dialCode: '+689',\n wisenetCode: '5205',\n rapidId: 'PF',\n paypalAllowed: true,\n countryCode: 'PF',\n flag: '🇵🇫',\n },\n {\n name: 'Gabon',\n id: 62,\n dialCode: '+241',\n wisenetCode: '9113',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GA',\n flag: '🇬🇦',\n },\n {\n name: 'Gambia',\n id: 67,\n dialCode: '+220',\n wisenetCode: '9114',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GM',\n flag: '🇬🇲',\n },\n {\n name: 'Georgia',\n id: 64,\n dialCode: '+995',\n wisenetCode: '7204',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GE',\n flag: '🇬🇪',\n },\n {\n name: 'Germany',\n id: 45,\n dialCode: '+49',\n wisenetCode: '2304',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'DE',\n flag: '🇩🇪',\n },\n {\n name: 'Ghana',\n id: 65,\n dialCode: '+233',\n wisenetCode: '9115',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'GH',\n flag: '🇬🇭',\n },\n {\n name: 'Greece',\n id: 70,\n dialCode: '+30',\n wisenetCode: '3207',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GR',\n flag: '🇬🇷',\n },\n {\n name: 'Grenada',\n id: 71,\n dialCode: '+1473',\n wisenetCode: '8412',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GD',\n flag: '🇬🇩',\n },\n {\n name: 'Guatemala',\n id: 72,\n dialCode: '+502',\n wisenetCode: '8304',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GT',\n flag: '🇬🇹',\n },\n {\n name: 'Guinea',\n id: 66,\n dialCode: '+224',\n wisenetCode: '9116',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GN',\n flag: '🇬🇳',\n },\n {\n name: 'Guinea-Bissau',\n id: 68,\n dialCode: '+245',\n wisenetCode: '9117',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GW',\n flag: '🇬🇼',\n },\n {\n name: 'Guyana',\n id: 73,\n dialCode: '+592',\n wisenetCode: '8211',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'GY',\n flag: '🇬🇾',\n },\n {\n name: 'Haiti',\n id: 76,\n dialCode: '+509',\n wisenetCode: '8414',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'HT',\n flag: '🇭🇹',\n },\n {\n name: 'Honduras',\n id: 74,\n dialCode: '+504',\n wisenetCode: '8305',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'HN',\n flag: '🇭🇳',\n },\n {\n name: 'Hong Kong',\n id: 0,\n dialCode: '+852',\n wisenetCode: '',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'HK',\n flag: '🇭🇰',\n },\n {\n name: 'Hungary',\n id: 77,\n dialCode: '+36',\n wisenetCode: '3304',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'HU',\n flag: '🇭🇺',\n },\n {\n name: 'Iceland',\n id: 83,\n dialCode: '+354',\n wisenetCode: '2405',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'IS',\n flag: '🇮🇸',\n },\n {\n name: 'Iran',\n id: 81,\n dialCode: '+98',\n wisenetCode: '4203',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'IR',\n flag: '🇮🇷',\n },\n {\n name: 'Iraq',\n id: 82,\n dialCode: '+964',\n wisenetCode: '4204',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'IQ',\n flag: '🇮🇶',\n },\n {\n name: 'Ireland',\n id: 80,\n dialCode: '+353',\n wisenetCode: '2201',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'IE',\n flag: '🇮🇪',\n },\n {\n name: 'Israel',\n id: 84,\n dialCode: '+972',\n wisenetCode: '4205',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'IL',\n flag: '🇮🇱',\n },\n {\n name: 'Italy',\n id: 85,\n dialCode: '+39',\n wisenetCode: '3104',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'IT',\n flag: '🇮🇹',\n },\n {\n name: 'Ivory Coast',\n id: 34,\n dialCode: '+225',\n wisenetCode: '9111',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CI',\n },\n {\n name: 'Jamaica',\n id: 86,\n dialCode: '+1876',\n wisenetCode: '8415',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'JM',\n flag: '🇯🇲',\n },\n {\n name: 'Japan',\n id: 88,\n dialCode: '+81',\n wisenetCode: '6201',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'JP',\n flag: '🇯🇵',\n },\n {\n name: 'Jordan',\n id: 87,\n dialCode: '+962',\n wisenetCode: '4206',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'JO',\n flag: '🇯🇴',\n },\n {\n name: 'Kazakhstan',\n id: 89,\n dialCode: '+77',\n wisenetCode: '7205',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'KZ',\n flag: '🇰🇿',\n },\n {\n name: 'Kenya',\n id: 90,\n dialCode: '+254',\n wisenetCode: '9208',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'KE',\n flag: '🇰🇪',\n },\n {\n name: 'Kiribati',\n id: 93,\n dialCode: '+686',\n wisenetCode: '1402',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'KI',\n flag: '🇰🇮',\n },\n {\n name: 'North Korea',\n id: 10001,\n dialCode: '+850',\n wisenetCode: '',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'KP',\n flag: '🇰🇵',\n },\n {\n name: 'South Korea',\n id: 95,\n dialCode: '+82',\n wisenetCode: '6203',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'KR',\n flag: '🇰🇷',\n },\n {\n name: 'Kosovo',\n id: 10002,\n dialCode: '+383',\n wisenetCode: '',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'XK',\n flag: '🇽🇰',\n },\n {\n name: 'Kuwait',\n id: 96,\n dialCode: '+965',\n wisenetCode: '4207',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'KW',\n flag: '🇰🇼',\n },\n {\n name: 'Kyrgyzstan',\n id: 91,\n dialCode: '+996',\n wisenetCode: '7206',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'KG',\n flag: '🇰🇬',\n },\n {\n name: 'Laos',\n id: 97,\n dialCode: '+856',\n wisenetCode: '5103',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'LA',\n flag: '🇱🇦',\n },\n {\n name: 'Latvia',\n id: 107,\n dialCode: '+371',\n wisenetCode: '3305',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'LV',\n flag: '🇱🇻',\n },\n {\n name: 'Lebanon',\n id: 98,\n dialCode: '+961',\n wisenetCode: '4208',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'LB',\n flag: '🇱🇧',\n },\n {\n name: 'Lesotho',\n id: 104,\n dialCode: '+266',\n wisenetCode: '9211',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'LS',\n flag: '🇱🇸',\n },\n {\n name: 'Liberia',\n id: 99,\n dialCode: '+231',\n wisenetCode: '9118',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'LR',\n flag: '🇱🇷',\n },\n {\n name: 'Libya',\n id: 100,\n dialCode: '+218',\n wisenetCode: '4103',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'LY',\n flag: '🇱🇾',\n },\n {\n name: 'Liechtenstein',\n id: 102,\n dialCode: '+423',\n wisenetCode: '2305',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'LI',\n flag: '🇱🇮',\n },\n {\n name: 'Lithuania',\n id: 105,\n dialCode: '+370',\n wisenetCode: '3306',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'LT',\n flag: '🇱🇹',\n },\n {\n name: 'Luxembourg',\n id: 106,\n dialCode: '+352',\n wisenetCode: '2306',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'LU',\n flag: '🇱🇺',\n },\n {\n name: 'North Macedonia',\n id: 115,\n dialCode: '+389',\n wisenetCode: '3206',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MK',\n flag: '🇲🇰',\n },\n {\n name: 'Madagascar',\n id: 111,\n dialCode: '+261',\n wisenetCode: '9212',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MG',\n flag: '🇲🇬',\n },\n {\n name: 'Malawi',\n id: 124,\n dialCode: '+265',\n wisenetCode: '9213',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MW',\n flag: '🇲🇼',\n },\n {\n name: 'Maldives',\n id: 112,\n dialCode: '+960',\n wisenetCode: '7104',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MV',\n flag: '🇲🇻',\n },\n {\n name: 'Mali',\n id: 116,\n dialCode: '+223',\n wisenetCode: '9121',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'ML',\n flag: '🇲🇱',\n },\n {\n name: 'Malta',\n id: 117,\n dialCode: '+356',\n wisenetCode: '3105',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MT',\n flag: '🇲🇹',\n },\n {\n name: 'Marshall Islands',\n id: 114,\n dialCode: '+692',\n wisenetCode: '1403',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MH',\n flag: '🇲🇭',\n },\n {\n name: 'Mauritania',\n id: 122,\n dialCode: '+222',\n wisenetCode: '9122',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MR',\n flag: '🇲🇷',\n },\n {\n name: 'Mauritius',\n id: 123,\n dialCode: '+230',\n wisenetCode: '9214',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MU',\n flag: '🇲🇺',\n },\n {\n name: 'Mexico',\n id: 113,\n dialCode: '+52',\n wisenetCode: '8306',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MX',\n flag: '🇲🇽',\n },\n {\n name: 'Micronesia',\n id: 61,\n dialCode: '+691',\n wisenetCode: '1404',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'FM',\n flag: '🇫🇲',\n },\n {\n name: 'Moldova',\n id: 110,\n dialCode: '+373',\n wisenetCode: '3208',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MD',\n flag: '🇲🇩',\n },\n {\n name: 'Monaco',\n id: 109,\n dialCode: '+377',\n wisenetCode: '2307',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MC',\n flag: '🇲🇨',\n },\n {\n name: 'Mongolia',\n id: 120,\n dialCode: '+976',\n wisenetCode: '6104',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MN',\n flag: '🇲🇳',\n },\n {\n name: 'Montenegro',\n id: 119,\n dialCode: '+382',\n wisenetCode: '3214',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'ME',\n flag: '🇲🇪',\n },\n {\n name: 'Morocco',\n id: 108,\n dialCode: '+212',\n wisenetCode: '4104',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MA',\n flag: '🇲🇦',\n },\n {\n name: 'Mozambique',\n id: 121,\n dialCode: '+258',\n wisenetCode: '9216',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'MZ',\n flag: '🇲🇿',\n },\n {\n name: 'Myanmar (Burma)',\n id: 118,\n dialCode: '+95',\n wisenetCode: '5101',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'MM',\n flag: '🇲🇲',\n },\n {\n name: 'Namibia',\n id: 126,\n dialCode: '+264',\n wisenetCode: '9217',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'NA',\n flag: '🇳🇦',\n },\n {\n name: 'Nauru',\n id: 133,\n dialCode: '+674',\n wisenetCode: '1405',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'NR',\n flag: '🇳🇷',\n },\n {\n name: 'Nepal',\n id: 132,\n dialCode: '+977',\n wisenetCode: '7105',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'NP',\n flag: '🇳🇵',\n },\n {\n name: 'Netherlands',\n id: 130,\n dialCode: '+31',\n wisenetCode: '2308',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'NL',\n flag: '🇳🇱',\n },\n {\n name: 'New Zealand',\n id: 134,\n dialCode: '+64',\n wisenetCode: '1201',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'NZ',\n flag: '🇳🇿',\n },\n {\n name: 'Nicaragua',\n id: 129,\n dialCode: '+505',\n wisenetCode: '8307',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'NI',\n flag: '🇳🇮',\n },\n {\n name: 'Niger',\n id: 127,\n dialCode: '+227',\n wisenetCode: '9123',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'NE',\n flag: '🇳🇪',\n },\n {\n name: 'Nigeria',\n id: 128,\n dialCode: '+234',\n wisenetCode: '9124',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'NG',\n flag: '🇳🇬',\n },\n {\n name: 'Norway',\n id: 131,\n dialCode: '+47',\n wisenetCode: '2406',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'NO',\n flag: '🇳🇴',\n },\n {\n name: 'Oman',\n id: 135,\n dialCode: '+968',\n wisenetCode: '4211',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'OM',\n flag: '🇴🇲',\n },\n {\n name: 'Pakistan',\n id: 136,\n dialCode: '+92',\n wisenetCode: '7106',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'PK',\n flag: '🇵🇰',\n },\n {\n name: 'Palau',\n id: 140,\n dialCode: '+680',\n wisenetCode: '1407',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'PW',\n flag: '🇵🇼',\n },\n {\n name: 'Palestine',\n id: 10003,\n dialCode: '+970',\n wisenetCode: '',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'PS',\n flag: '🇵🇸',\n },\n {\n name: 'Panama',\n id: 137,\n dialCode: '+507',\n wisenetCode: '8308',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'PA',\n flag: '🇵🇦',\n },\n {\n name: 'Papua New Guinea',\n id: 141,\n dialCode: '+675',\n wisenetCode: '1302',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'PG',\n flag: '🇵🇬',\n },\n {\n name: 'Paraguay',\n id: 144,\n dialCode: '+595',\n wisenetCode: '8212',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'PY',\n flag: '🇵🇾',\n },\n {\n name: 'Peru',\n id: 138,\n dialCode: '+51',\n wisenetCode: '8213',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'PE',\n flag: '🇵🇪',\n },\n {\n name: 'Poland',\n id: 142,\n dialCode: '+48',\n wisenetCode: '3307',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'PL',\n flag: '🇵🇱',\n },\n {\n name: 'Portugal',\n id: 143,\n dialCode: '+351',\n wisenetCode: '3106',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'PT',\n flag: '🇵🇹',\n },\n {\n name: 'Qatar',\n id: 146,\n dialCode: '+974',\n wisenetCode: '4212',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'QA',\n flag: '🇶🇦',\n },\n {\n name: 'Romania',\n id: 147,\n dialCode: '+40',\n wisenetCode: '3211',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'RO',\n flag: '🇷🇴',\n },\n {\n name: 'Russia',\n id: 148,\n dialCode: '+7',\n wisenetCode: '3308',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'RU',\n flag: '🇷🇺',\n },\n {\n name: 'Rwanda',\n id: 149,\n dialCode: '+250',\n wisenetCode: '9221',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'RW',\n flag: '🇷🇼',\n },\n {\n name: 'Saint Kitts and Nevis',\n id: 94,\n dialCode: '+1869',\n wisenetCode: '8422',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'KN',\n flag: '🇰🇳',\n },\n {\n name: 'Saint Lucia',\n id: 101,\n dialCode: '+1758',\n wisenetCode: '8423',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'LC',\n flag: '🇱🇨',\n },\n {\n name: 'Saint Vincent and the Grenadines',\n id: 187,\n dialCode: '+1784',\n wisenetCode: '8424',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'VC',\n flag: '🇻🇨',\n },\n {\n name: 'Samoa',\n id: 191,\n dialCode: '+685',\n wisenetCode: '1505',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'WS',\n flag: '🇼🇸',\n },\n {\n name: 'San Marino',\n id: 157,\n dialCode: '+378',\n wisenetCode: '3107',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SM',\n flag: '🇸🇲',\n },\n {\n name: 'Sao Tomé and Principe',\n id: 160,\n dialCode: '+239',\n wisenetCode: '9125',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'ST',\n flag: '🇸🇹',\n },\n {\n name: 'Saudi Arabia',\n id: 150,\n dialCode: '+966',\n wisenetCode: '4213',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SA',\n flag: '🇸🇦',\n },\n {\n name: 'Senegal',\n id: 152,\n dialCode: '+221',\n wisenetCode: '9126',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SN',\n flag: '🇸🇳',\n },\n {\n name: 'Serbia',\n id: 159,\n dialCode: '+381',\n wisenetCode: '3215',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'RS',\n flag: '🇷🇸',\n },\n {\n name: 'Seychelles',\n id: 166,\n dialCode: '+248',\n wisenetCode: '9223',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SC',\n flag: '🇸🇨',\n },\n {\n name: 'Sierra Leone',\n id: 155,\n dialCode: '+232',\n wisenetCode: '9127',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SL',\n flag: '🇸🇱',\n },\n {\n name: 'Slovakia',\n id: 162,\n dialCode: '+421',\n wisenetCode: '3311',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SK',\n flag: '🇸🇰',\n },\n {\n name: 'Slovenia',\n id: 163,\n dialCode: '+386',\n wisenetCode: '3212',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SI',\n flag: '🇸🇮',\n },\n {\n name: 'Solomon Islands',\n id: 154,\n dialCode: '+677',\n wisenetCode: '1303',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SB',\n flag: '🇸🇧',\n },\n {\n name: 'Somalia',\n id: 158,\n dialCode: '+252',\n wisenetCode: '9224',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SO',\n flag: '🇸🇴',\n },\n {\n name: 'South Africa',\n id: 193,\n dialCode: '+27',\n wisenetCode: '9225',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'ZA',\n flag: '🇿🇦',\n },\n {\n name: 'South Sudan',\n id: 197,\n dialCode: '+211',\n wisenetCode: '4111',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SS',\n flag: '🇸🇸',\n },\n {\n name: 'Spain',\n id: 55,\n dialCode: '+34',\n wisenetCode: '3108',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'ES',\n flag: '🇪🇸',\n },\n {\n name: 'Sri Lanka',\n id: 103,\n dialCode: '+94',\n wisenetCode: '7107',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'LK',\n flag: '🇱🇰',\n },\n {\n name: 'Sudan',\n id: 151,\n dialCode: '+249',\n wisenetCode: '4105',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'SD',\n flag: '🇸🇩',\n },\n {\n name: 'Suriname',\n id: 161,\n dialCode: '+597',\n wisenetCode: '8214',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SR',\n flag: '🇸🇷',\n },\n {\n name: 'Swaziland',\n id: 165,\n dialCode: '+268',\n wisenetCode: '9226',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SZ',\n flag: '🇸🇿',\n },\n {\n name: 'Sweden',\n id: 164,\n dialCode: '+46',\n wisenetCode: '2407',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'SE',\n flag: '🇸🇪',\n },\n {\n name: 'Switzerland',\n id: 31,\n dialCode: '+41',\n wisenetCode: '2311',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'CH',\n flag: '🇨🇭',\n },\n {\n name: 'Syrian Arab Republic',\n id: 167,\n dialCode: '+963',\n wisenetCode: '4214',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'SY',\n flag: '🇸🇾',\n },\n {\n name: 'Taiwan',\n id: 179,\n dialCode: '+886',\n wisenetCode: '6105',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TW',\n flag: '🇹🇼',\n },\n {\n name: 'Tajikistan',\n id: 171,\n dialCode: '+992',\n wisenetCode: '7207',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TJ',\n flag: '🇹🇯',\n },\n {\n name: 'Tanzania',\n id: 180,\n dialCode: '+255',\n wisenetCode: '9227',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TZ',\n flag: '🇹🇿',\n },\n {\n name: 'Thailand',\n id: 170,\n dialCode: '+66',\n wisenetCode: '5104',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TH',\n flag: '🇹🇭',\n },\n {\n name: 'Togo',\n id: 169,\n dialCode: '+228',\n wisenetCode: '9128',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TG',\n flag: '🇹🇬',\n },\n {\n name: 'Tonga',\n id: 174,\n dialCode: '+676',\n wisenetCode: '1508',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TO',\n flag: '🇹🇴',\n },\n {\n name: 'Trinidad and Tobago',\n id: 175,\n dialCode: '+1868',\n wisenetCode: '8425',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TT',\n flag: '🇹🇹',\n },\n {\n name: 'Tunisia',\n id: 176,\n dialCode: '+216',\n wisenetCode: '4106',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TN',\n flag: '🇹🇳',\n },\n {\n name: 'Turkey',\n id: 177,\n dialCode: '+90',\n wisenetCode: '4215',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'TR',\n flag: '🇹🇷',\n },\n {\n name: 'Turks and Caicos Islands',\n id: 2001,\n dialCode: '+1',\n wisenetCode: '5205',\n rapidId: 'TC',\n paypalAllowed: true,\n countryCode: 'TC',\n flag: '🇹🇨',\n },\n {\n name: 'Turkmenistan',\n id: 172,\n dialCode: '+993',\n wisenetCode: '7208',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TM',\n flag: '🇹🇲',\n },\n {\n name: 'Tuvalu',\n id: 178,\n dialCode: '+688',\n wisenetCode: '1511',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'TV',\n flag: '🇹🇻',\n },\n {\n name: 'Uganda',\n id: 181,\n dialCode: '+256',\n wisenetCode: '9228',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'UG',\n flag: '🇺🇬',\n },\n {\n name: 'Ukraine',\n id: 182,\n dialCode: '+380',\n wisenetCode: '3312',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'UA',\n flag: '🇺🇦',\n },\n {\n name: 'United Arab Emirates',\n id: 5,\n dialCode: '+971',\n wisenetCode: '4216',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'AE',\n flag: '🇦🇪',\n },\n {\n name: 'Uruguay',\n id: 183,\n dialCode: '+598',\n wisenetCode: '8215',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'UY',\n flag: '🇺🇾',\n },\n {\n name: 'Uzbekistan',\n id: 185,\n dialCode: '+998',\n wisenetCode: '7211',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'UZ',\n flag: '🇺🇿',\n },\n {\n name: 'Vanuatu',\n id: 190,\n dialCode: '+678',\n wisenetCode: '1304',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'VU',\n flag: '🇻🇺',\n },\n {\n name: 'Vatican City',\n id: 186,\n dialCode: '+379',\n wisenetCode: '3103',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'VA',\n flag: '🇻🇦',\n },\n {\n name: 'Venezuela',\n id: 188,\n dialCode: '+58',\n wisenetCode: '8216',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'VE',\n flag: '🇻🇪',\n },\n {\n name: 'Vietnam',\n id: 189,\n dialCode: '+84',\n wisenetCode: '5105',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'VN',\n flag: '🇻🇳',\n },\n {\n name: 'Yemen',\n id: 192,\n dialCode: '+967',\n wisenetCode: '4217',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'YE',\n flag: '🇾🇪',\n },\n {\n name: 'Zambia',\n id: 194,\n dialCode: '+260',\n wisenetCode: '9231',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'ZM',\n flag: '🇿🇲',\n },\n {\n name: 'Zimbabwe',\n id: 195,\n dialCode: '+263',\n wisenetCode: '9232',\n rapidId: 'NIL',\n paypalAllowed: true,\n countryCode: 'ZW',\n flag: '🇿🇼',\n },\n {\n name: 'Cayman Islands',\n id: 1234,\n dialCode: '+1',\n wisenetCode: '',\n rapidId: 'NIL',\n paypalAllowed: false,\n countryCode: 'KY',\n flag: '🇰🇾',\n },\n {\n name: 'Gibraltar UK',\n id: 999,\n dialCode: '+350',\n wisenetCode: '',\n rapidId: 'GUK',\n paypalAllowed: false,\n countryCode: 'GUK',\n flag: '🇬🇮',\n },\n {\n name: 'Aruba',\n id: 20004,\n dialCode: '+297',\n wisenetCode: '',\n rapidId: 'ABW',\n paypalAllowed: false,\n countryCode: 'ABW',\n flag: '🇦🇼',\n },\n];\n\nexport const localPaymentSupportCountryList = [\n countries.PH,\n countries.IN,\n countries.SG,\n countries.MY,\n countries.ID,\n];\n","import { PhoneNumberUtil } from 'google-libphonenumber';\nimport { countryList } from '../data/wisenetMapCountryList';\n\nexport const INPUT_FIELD_TYPE = 'input';\nexport const DROPDOWN_FIELD_TYPE = 'select';\nexport const CHECKBOX_FIELD_TYPE = 'checkbox';\nexport const TEXTAREA_FIELD_TYPE = 'textarea';\n\nexport const countryOptions = countryList.map(({ name, id }) => ({\n value: id,\n label: name,\n}));\nconst getFlagEmoji = (countryCode) => {\n if (countryCode) {\n const codePoints = countryCode\n .toUpperCase()\n .split('')\n .map((char) => 127397 + char.charCodeAt());\n return String.fromCodePoint(...codePoints);\n }\n return '';\n};\n\nexport const dialCodeOptions = [...countryList]\n .sort((a, b) => a.name.localeCompare(b.name))\n .map(({ id, countryCode, dialCode, flag, name }) => ({\n value: id,\n label: `${flag ?? ''} ${dialCode}`,\n optionDisplay: `${name} ${flag && flag} :(${dialCode}) `,\n }));\n\nexport const getCountryById = (countryId) => {\n const country = countryList.find(({ id }) => id === parseInt(countryId, 10));\n return country;\n};\n\nexport const getCountryNameById = (countryId) => {\n const country = countryList.find(({ id }) => id === parseInt(countryId, 10));\n return country?.name || '';\n};\n\nexport const getDialCodeById = (countryId) => {\n const country = countryList.find(({ id }) => id === parseInt(countryId, 10));\n return country?.dialCode || '';\n};\n\nexport const getCountryIdByName = (countryName) => {\n return countryList.find(({ name }) => name === countryName);\n};\n\n/**\n * Return the id of the country object\n *\n * @param {string} dial //+65\n * @returns {number} //153\n */\nexport const getDialCodeIdByDialCode = (dial) => {\n const country = countryList.find(({ dialCode }) => dialCode === dial);\n return country?.id?.toString() ? country?.id : ''; // id - undefined or null\n};\n\n/**\n * Extract the country id from phone number\n *\n * @param {string} phoneNumber //+65 87932774\n * @returns {number} //153\n */\nexport const getDialCodeIdFromPhoneNumber = (phoneNumber) => {\n if (!phoneNumber) return '';\n // if phone number doesn't start with +, add it\n if (!phoneNumber.startsWith('+')) {\n phoneNumber = `+${phoneNumber}`;\n }\n\n const phoneUtil = PhoneNumberUtil.getInstance();\n const parsedNumber = phoneUtil.parse(phoneNumber);\n const dialCode = parsedNumber.getCountryCode();\n return getDialCodeIdByDialCode(`+${dialCode}`);\n};\n\nexport const getPhoneNumberWithoutDial = (phoneNumber) => {\n try {\n if (!phoneNumber) return '';\n // if phone number doesn't start with +, add it\n if (!phoneNumber.startsWith('+')) {\n phoneNumber = `+${phoneNumber}`;\n }\n\n const phoneUtil = PhoneNumberUtil.getInstance();\n const parsedNumber = phoneUtil.parse(phoneNumber);\n return parsedNumber.getNationalNumber().toString();\n } catch (e) {\n return '';\n }\n};\n","import './Input.scss';\n\nimport { useRef, useState } from 'react';\n\nimport DiscordV2 from '../../Icons/DiscoardV2/DiscoardV2';\nimport DribbleIconV2Colored from '../../Icons/DribbleIconV2Colored/DribbleIconV2Colored';\nimport EyeVisible from '../../Icons/EyeVisible';\nimport FacebookGreyIcon from '../../Icons/FacebookGreyIcon';\nimport FacebookIconV2Colored from '../../Icons/FacebookIconV2Colored/FacebookIconV2Colored';\nimport InstagramIconV2Colored from '../../Icons/InstagramIconV2Colored/InstagramIconV2Colored';\nimport LinkedIconV2Colored from '../../Icons/LinkedIconV2Colored/LinkedIconV2Colored';\nimport OpenSeaV2Colored from '../../Icons/OpenSeaV2Colored/OpenSeaV2Colored';\nimport TiktokV2 from '../../Icons/TiktokV2/TiktokV2';\nimport TwitterIconV2Colored from '../../Icons/TwitterIconV2Colored/TwitterIconV2Colored';\nimport WebsiteIconV2 from '../../Icons/WebsiteIconV2/WebsiteIconV2';\nimport YoutubeIconV2Colored from '../../Icons/YoutubeIconV2Colored/YoutubeIconV2Colored';\nimport { useEffect } from 'react';\n\nconst Input = ({\n type,\n name,\n label,\n onChange,\n error,\n eyeIcon,\n icon,\n iconPosition,\n v2,\n prefix,\n focusOnLoad,\n customClassforInputContainer,\n renderLogobesidelabel,\n typeoflogo,\n customClassForLabel,\n customClassForTopContainer,\n customInnerClassName = '',\n disabled,\n register,\n ...rest\n}) => {\n const className = 'c-Input';\n const baseClassNames = [\n className,\n error ? ` ${className}--error` : '',\n disabled ? ` ${className}--disabled` : '',\n v2 ? ` ${className}--v2` : '',\n v2 && error ? ` ${className}--v2--error` : '',\n ].join('');\n\n const hasIcon = !!icon;\n const hasPrefix = !!prefix;\n\n const containerClassName = [\n `${className}__container`,\n v2 ? ` ${className}--v2__container` : '',\n ].join('');\n const containerClassNames = [\n containerClassName,\n hasIcon ? ` ${containerClassName}--w-${iconPosition}-icon` : '',\n hasPrefix ? ` ${containerClassName}--w-left-icon` : '',\n eyeIcon ? ` ${containerClassName}--w-right-icon` : '',\n ].join('');\n\n const inputRef = useRef(null);\n const [isEyeIconVisible, setIsEyeIconVisible] = useState(false);\n\n // Set focus of field once loaded\n useEffect(() => {\n if (focusOnLoad) inputRef.current?.focus();\n }, [focusOnLoad]);\n\n function toggleInputVisibility() {\n const inputType = inputRef?.current?.type;\n if (inputType === 'password') inputRef.current.type = 'text';\n else inputRef.current.type = 'password';\n\n setIsEyeIconVisible((prevBool) => !prevBool);\n }\n\n function renderEyeIcon() {\n return (\n eyeIcon && (\n \n \n \n )\n );\n }\n\n const renderLogo = (type) => {\n switch (type) {\n case 'facebook':\n return ;\n case 'instagram':\n return ;\n case 'youtube':\n return ;\n case 'twitter':\n return ;\n case 'tiktok':\n return ;\n case 'linkedin':\n return ;\n case 'discord':\n return ;\n case 'opensea':\n return ;\n case 'website':\n return ;\n case 'dribble':\n return ;\n default:\n return ;\n }\n };\n\n return (\n \n {renderLogobesidelabel && (\n <>\n
\n {renderLogobesidelabel && renderLogo(typeoflogo)}{' '}\n {label && (\n \n {label}\n \n )}\n
\n \n )}\n {label && !renderLogobesidelabel && (\n \n )}\n
\n {hasIcon ? (\n \n {icon}\n \n ) : null}\n {hasPrefix ? (\n \n {prefix}\n \n ) : null}\n \n {renderEyeIcon()}\n
\n {error &&

{error}

}\n \n );\n};\n\nInput.defaultProps = {\n type: 'text',\n name: '',\n label: '',\n error: '',\n eyeIcon: false,\n iconPosition: 'left',\n};\n\nexport default Input;\n","import Input from './Input';\nexport default Input;\n","import { convertQueryStringToJson } from '../modules/stringHelpers';\n\nexport const COMMUNITY_PORTAL_BREAKPOINTS = {\n sm: 480,\n md: 768, // Tablet\n lg: 992, // Desktop Small\n xl: 1200, // Desktop Large is 1440px\n};\n\nexport const scrollToTop = () => {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n};\n\nexport const scrollToRef = (ref, negOffset = 0) =>\n window.scrollTo(0, ref?.current?.offsetTop - negOffset);\nexport const checkIfLessThanBreakpoint = (breakpoint) =>\n window.innerWidth <= breakpoint;\nexport const checkIfMoreThanBreakpoint = (breakpoint) =>\n window.innerWidth >= breakpoint;\n\nexport const minDesktopWidth = 1200;\nexport const isDesktop = window.innerWidth >= minDesktopWidth;\nexport const isMobileLandScape =\n window.innerWidth >= 320 && window.innerHeight <= 640;\n\nexport const checkIsDesktop = () => window.innerWidth >= minDesktopWidth;\nexport const checkIsMobileLandscape = () =>\n window.innerWidth >= 320 && window.innerHeight <= 640;\n\nexport const getQueryHashParams = () => {\n const queryStr = window.location.hash || '';\n const queryParamsJson = convertQueryStringToJson(queryStr);\n return queryParamsJson;\n};\n\nexport const getQueryParams = () => {\n const queryStr = window.location.search || '';\n const queryParamsJson = convertQueryStringToJson(queryStr);\n return queryParamsJson;\n};\n\nexport const resetQueryParams = () => {\n window.history.pushState(\n {\n path: window.location.origin + window.location.pathname,\n },\n '',\n window.location.origin + window.location.pathname\n );\n};\n","import './Button.scss';\n\nimport { PropTypes } from 'prop-types';\n\nconst buttonDisplayTypes = {\n primary: 'primary',\n secondary: 'secondary',\n disabled: 'disabled',\n flat: 'flat',\n 'form-primary': 'form-primary',\n 'form-secondary': 'form-secondary',\n 'standard-inverse': 'standard-inverse',\n 'dark-inverse': 'dark-inverse',\n inverse: 'inverse',\n 'table-btn': 'table-btn',\n};\n\nconst buttonDisplayTypesArr = [...Object.keys(buttonDisplayTypes), ''];\n\nconst Button = ({\n displayType,\n fluid,\n withShadow,\n narrow,\n children,\n newVersion,\n customClassNames,\n ...btnProps\n}) => {\n const className = 'c-Button';\n const classNames = [\n className,\n displayType ? ` ${className}--${displayType}` : '',\n fluid ? ` ${className}--fluid` : '',\n withShadow ? ` ${className}--shadow` : '',\n narrow ? ` ${className}--narrow` : '',\n newVersion ? ` ${className}--new-version` : '',\n customClassNames ? customClassNames : '',\n ].join('');\n\n return (\n \n );\n};\n\nButton.propTypes = {\n fluid: PropTypes.bool,\n displayType: PropTypes.oneOf(buttonDisplayTypesArr),\n withShadow: PropTypes.bool,\n narrow: PropTypes.bool,\n newVersion: PropTypes.bool,\n};\n\nexport default Button;\n","import Button from './Button';\nexport default Button;\n","// until we have more complete picture of what do we want to do with config setup\n// this file can be used as a default location for any configs\n\nconst config = {\n BASE_BE_URL: `${process.env.REACT_APP_AUTH_SERVER_URL}/api/v1/communities`,\n MAIN_WEBSITE_URL: `${process.env.REACT_APP_PAYMENT_SERVER_URL}/api/v1`, // TODO: Make this configurable\n NAS_IO_GET_MOBILE_APP: `${process.env.REACT_APP_NASIO_BASE_URL}/install`,\n};\n\nexport default config;\n","import config from './general';\n\nexport default config;\n","let sessionStorageInstance = null;\n\n//in anonymous mode of browsers, we are unable to save data in sessionStorage\n//in some cases, users' browsers don't allow sessionStorage either\n//so we need to replicate localStorage and keep all changes in local data\nclass SessionStorageService {\n constructor() {\n if (!sessionStorageInstance) {\n this.currentSessionStorage = {};\n sessionStorageInstance = this;\n }\n\n return sessionStorageInstance;\n }\n\n isSupported() {\n try {\n const key = '_this_key_should_not_use_anywhere_';\n const value = '_this_value_should_not_use_anywhere_';\n if (typeof window === 'undefined' || !window.sessionStorage) {\n return false;\n }\n window.sessionStorage.setItem(key, value);\n window.sessionStorage.removeItem(key);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n getItem(key) {\n if (this.isSupported()) {\n return (\n window.sessionStorage.getItem(key) || this.currentSessionStorage[key]\n );\n }\n return this.currentSessionStorage[key];\n }\n\n setItem(key, value) {\n if (this.isSupported()) {\n window.sessionStorage.setItem(key, value);\n }\n this.currentSessionStorage[key] = value;\n }\n\n removeItem(key) {\n if (this.isSupported()) {\n window.sessionStorage.removeItem(key);\n }\n delete this.currentSessionStorage[key];\n }\n\n clear() {\n if (this.isSupported()) {\n window.sessionStorage.clear();\n }\n this.currentSessionStorage = {};\n }\n\n length() {\n if (this.isSupported()) {\n return window.sessionStorage.length;\n }\n return Object.keys(this.currentSessionStorage).length;\n }\n}\n\nexport default new SessionStorageService();\n","import { getQueryParams } from '../../utility/domHelpers';\nimport sessionStorageService from '../../utility/sessionStorageService';\nimport { STORED_ACTIVE_COMMUNITY_SESSION_CODE } from '../constants';\n\nconst readActiveCommunity = () => {\n const activeCommunityInSessionStorage = sessionStorageService.getItem(\n STORED_ACTIVE_COMMUNITY_SESSION_CODE\n );\n\n if (activeCommunityInSessionStorage) {\n return sessionStorageService.getItem(STORED_ACTIVE_COMMUNITY_SESSION_CODE);\n }\n const { activeCommunityId } = getQueryParams() || {};\n if (activeCommunityId) {\n storeActiveCommunity(activeCommunityId);\n }\n return activeCommunityId;\n};\n\nconst storeActiveCommunity = (code) => {\n sessionStorageService.setItem(STORED_ACTIVE_COMMUNITY_SESSION_CODE, code);\n};\n\nconst storageUtils = {\n storeActiveCommunity,\n readActiveCommunity,\n};\n\nexport default storageUtils;\n","const config = {\n app_env: process.env.REACT_APP_ENV,\n googleClientId: process.env.REACT_APP_GOOGLE_CLIENT_ID,\n fbAppId: process.env.REACT_APP_FB_APP_ID,\n appleClientId: process.env.REACT_APP_APPLE_CLIENT_ID,\n appleRedirectLink: process.env.REACT_APP_APPLE_REDIRECT_LINK,\n isDevEnv: process.env.NODE_ENV === 'development',\n apiStaticDataPath: process.env.REACT_APP_BACKEND_STATIC_DATA_SEVER,\n authCookieDomain: process.env.REACT_APP_AUTH_COOKIE_DOMAIN,\n imagesBasePath: process.env.REACT_APP_COURSE_ASSET_BASE_URL,\n nasIOBaseUrl: process.env.REACT_APP_NASIO_BASE_URL,\n checkoutEndpoint: process.env.REACT_APP_CHECKOUT_ENDPOINT,\n nasIOWeb3BaseUrl: process.env.REACT_APP_NASIO_WEB3_BASE_URL,\n nftCertificateContractAdress: process.env.REACT_APP_NFT_CERT_CONTRACT_ADDRESS,\n getStreamApiKey: process.env.REACT_APP_GETSTREAM_API_KEY,\n getStreamAppId: process.env.REACT_APP_GETSTREAM_APP_ID,\n intercomAppId: process.env.REACT_APP_INTERCOM_APP_ID,\n intercomApiBase: process.env.REACT_APP_INTERCOM_API_BASE,\n pixelId: process.env.REACT_APP_FB_PIXEL_ID,\n};\n\nexport default config;\n","import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport {\n checkIfMoreThanBreakpoint,\n checkIsDesktop,\n checkIsMobileLandscape,\n COMMUNITY_PORTAL_BREAKPOINTS,\n isDesktop,\n isMobileLandScape\n} from '../../utility/domHelpers';\n\nconst WindowWidthContext = createContext();\n\nexport const WindowWidthContextProvider = ({ children }) => {\n const [isGtEqSm, setIsGtEqSm] = useState(false);\n const [isGtEqMd, setIsGtEqMd] = useState(false);\n const [isGtEqLg, setIsGtEqLg] = useState(false);\n const [isGtEqXl, setIsGtEqXl] = useState(false);\n\n // Default is SM\n const breakpoint = useMemo(() => {\n if (isGtEqXl) return 'xl';\n if (isGtEqLg) return 'lg';\n if (isGtEqMd) return 'md';\n if (isGtEqSm) return 'sm';\n return 'xs';\n }, [isGtEqLg, isGtEqMd, isGtEqSm, isGtEqXl]);\n\n const [isDesktopView, setIsDesktopView] = useState(isDesktop);\n const [isMobileLandscape, setIsMobileLandscape] = useState(isMobileLandScape);\n\n const updateModeOnWindowChange = () => {\n setIsGtEqSm(checkIfMoreThanBreakpoint(COMMUNITY_PORTAL_BREAKPOINTS.sm));\n setIsGtEqMd(checkIfMoreThanBreakpoint(COMMUNITY_PORTAL_BREAKPOINTS.md));\n setIsGtEqLg(checkIfMoreThanBreakpoint(COMMUNITY_PORTAL_BREAKPOINTS.lg));\n setIsGtEqXl(checkIfMoreThanBreakpoint(COMMUNITY_PORTAL_BREAKPOINTS.xl));\n\n setIsDesktopView(checkIsDesktop());\n setIsMobileLandscape(checkIsMobileLandscape());\n };\n\n const initListener = useCallback(() => {\n // Needed to call the function for first time load\n updateModeOnWindowChange();\n window.addEventListener('resize', () => updateModeOnWindowChange());\n }, []);\n\n const removeListener = useCallback(() => {\n window.removeEventListener('resize', updateModeOnWindowChange);\n }, []);\n\n useEffect(() => {\n initListener();\n\n return removeListener();\n }, [initListener, removeListener]);\n\n const value = {\n isDesktopView,\n isMobileLandscape,\n breakpoint,\n isGtEqSm,\n isGtEqMd,\n isGtEqLg,\n isGtEqXl,\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useWindowWidthContext = () => useContext(WindowWidthContext);\n","import { COMMUNITY_ONE_TIME_PAYMENT_ENTITIES } from '../../hooks/payment/constants';\nimport { getTimezoneId } from '../../utility/dateHelper';\nimport protectedAxiosRequest from '../helper/protectedAxiosRequest';\nconst learnPortalBasePath = process.env.REACT_APP_AUTH_SERVER_URL;\nconst mainBackendBasePath = process.env.REACT_APP_PAYMENT_SERVER_URL;\nconst paymemtBackendPath = process.env.REACT_APP_PAYMENT_BE_URL;\nexport const signUpForPaymentAndGetClientInfoService = async (\n params,\n communityId,\n endpoint\n) => {\n const path =\n learnPortalBasePath +\n `/api/v1/communities/${communityId}/entity/${endpoint}`;\n\n const response = await protectedAxiosRequest.post(path, params);\n return response;\n};\n\nexport const getCurrentCountry = async () => {\n try {\n const path = mainBackendBasePath + `/api/v1/get-country-data`;\n const { data, error } = await protectedAxiosRequest.get(path);\n if (error) {\n throw new Error(error);\n }\n return { data: data, error: null };\n } catch (e) {\n return { data: null, error: e };\n }\n};\n\n/**\n * This function gets the payment method for a given country and checkout type.\n *\n * @param {string} country The country name.\n * @param {string} checkoutType The checkout type. Can be one of \"recurring\" or \"onetime\".\n */\nexport const getPaymentMethods = async ({\n country,\n checkoutType,\n communityId,\n}) => {\n try {\n const path =\n paymemtBackendPath +\n `/api/v1/local-payment-methods?country=${country}&communityId=${communityId}&checkoutType=${checkoutType}`;\n const { data, error } = await protectedAxiosRequest.get(path);\n\n if (error) {\n throw new Error(error);\n }\n return { data: data, error: null };\n } catch (e) {\n return { data: null, error: e };\n }\n};\n\nexport const verifyPaymentForEntitySignUp = async (\n communityId,\n entityType,\n entitySignUpId\n) => {\n try {\n const path =\n learnPortalBasePath +\n `/api/v1/communities/${communityId}/entity/verify-payment?entitySignupId=${entitySignUpId}&entityType=${entityType}`;\n const { data, error } = await protectedAxiosRequest.get(path);\n\n if (error) {\n throw new Error(error);\n }\n return { data: data, error: null };\n } catch (e) {\n return { data: null, error: e };\n }\n};\n\nconst getTypeFromEnum = (type) => {\n return Object.keys(COMMUNITY_ONE_TIME_PAYMENT_ENTITIES).find(\n (key) => COMMUNITY_ONE_TIME_PAYMENT_ENTITIES[key] === type\n );\n};\n\nexport const signUpForEntity = async (entityId, entityType, communityId) => {\n try {\n console.log(getTypeFromEnum(entityType));\n if (!getTypeFromEnum(entityType))\n return {\n data: null,\n error: `request not sent, invalid entityType, ${entityType}`,\n };\n const path =\n learnPortalBasePath + `/api/v1/communities/${communityId}/entity/signup`;\n const options = {\n entityId: entityId,\n entityType: entityType,\n timezone: getTimezoneId(),\n };\n const { data, error } = await protectedAxiosRequest.post(path, options);\n if (error) {\n throw new Error(error);\n }\n return { data: data, error: null };\n } catch (error) {\n console.log(error);\n return { data: null, error };\n }\n};\n\nexport const getCommunityInfoForCheckout = async (communityId) => {\n try {\n const path = learnPortalBasePath + `/api/v1/communities/${communityId}`;\n const { data, error } = await protectedAxiosRequest.get(path);\n if (error) {\n throw new Error(error);\n }\n return { data: data, error: null };\n } catch (error) {\n console.log(error);\n return { data: null, error };\n }\n};\n\nexport const getCommunityEventInfoForEventCheckoutById = async (\n communityId,\n eventId\n) => {\n try {\n const path =\n learnPortalBasePath +\n `/api/v1/communities/${communityId}/event/${eventId}`;\n const { data, error } = await protectedAxiosRequest.get(path);\n if (error) {\n throw new Error(error);\n }\n return { data: data, error: null };\n } catch (error) {\n console.log(error);\n return { data: null, error };\n }\n};\n\n// Xendit\n\nexport const createEwalletChargeForEntityId = async (params, communityId) => {\n const path =\n // Neil-todo\n learnPortalBasePath +\n `/api/v1/communities/${communityId}/entity/xendit-ewallet-checkout`;\n\n const response = await protectedAxiosRequest.post(path, params);\n return response;\n};\n\nexport const getEwalletChargeStatus = async (chargeId) => {\n const path = learnPortalBasePath + `/api/v1/charge-status/${chargeId}`;\n\n const response = await protectedAxiosRequest.get(path);\n return response;\n};\n","import './Image.scss';\n\nimport { PropTypes } from 'prop-types';\nimport React from 'react';\n\nimport { isDesktop, minDesktopWidth } from '../../modules/domHelpers';\n\nconst Image = ({ alt, mobileImgData, desktopImgData, customImgClassname }) => {\n const className = 'c-Image';\n\n const mobileWebpSrc = mobileImgData?.webpSrc || '';\n const mobileSrc = mobileImgData?.src || '';\n const desktopWebpSrc = desktopImgData?.webpSrc || mobileWebpSrc || '';\n const desktopSrc = desktopImgData?.src || mobileSrc || '';\n const imgSrc = isDesktop ? desktopSrc : mobileSrc;\n const minDesktopWidthMedia = `(min-width: ${minDesktopWidth}px)`;\n const maxDesktopWidthMedia = `(max-width: ${minDesktopWidth}px)`;\n\n const mobileMetaData = mobileImgData?.meta || {};\n const desktopMetaData = desktopImgData?.meta || mobileMetaData || {};\n const metaData = isDesktop ? desktopMetaData : mobileMetaData;\n\n const restProps = { ...metaData };\n\n if (!imgSrc) return null;\n\n return (\n \n {mobileWebpSrc && (\n \n )}\n {mobileSrc && }\n {desktopWebpSrc && (\n \n )}\n {desktopSrc && (\n \n )}\n \n \n );\n};\n\nexport const ImgSrcDataType = {\n src: PropTypes.string,\n webpSrc: PropTypes.string,\n};\n\nexport const ImageDataType = {\n alt: PropTypes.string,\n mobileImgData: PropTypes.shape(ImgSrcDataType),\n desktopImgData: PropTypes.shape(ImgSrcDataType),\n customImgClassname: PropTypes.string,\n};\n\nImage.propTypes = ImageDataType;\n\nexport default Image;\n","import Image, { ImageDataType, ImgSrcDataType } from './Image';\n\nexport { ImageDataType, ImgSrcDataType };\nexport default Image;\n","import React from 'react';\nconst className = 'c-ErrorAlertWarningIcon';\nconst ErrorAlertWarningIcon = ({ width, height, customClassName, fill }) => {\n return (\n \n \n \n );\n};\n\nErrorAlertWarningIcon.defaultProps = {\n width: 20,\n height: 20,\n customClassName: '',\n fill: '#594400',\n};\n\nexport default ErrorAlertWarningIcon;\n","import { DEFAULT_MSG, TOAST_TYPE } from './ToastContainer';\n\nimport Button from '../Button';\nimport CheckWithCircleIcon from '../../../components/Icons/CheckWithCircleIcon';\nimport ErrorAlertWarningIcon from '../../../components/Icons/ErrorAlertWarningIcon';\nimport style from './ToastContainer.module.scss';\nimport { useRef } from 'react';\n\nconst Toast = (props) => {\n const {\n id,\n type,\n text = DEFAULT_MSG,\n dismissOnClick = false,\n removeToast,\n customClassNames,\n isVisible,\n nplVersion,\n description,\n CTAButtonProps,\n customIcon,\n } = props;\n\n const toastRef = useRef();\n\n const getTypeClassNames = ({ type }) => {\n switch (type) {\n case TOAST_TYPE.SUCCESS:\n return 'bg-success-dark text-neutral-99';\n case TOAST_TYPE.ERROR:\n return 'bg-error text-neutral-99';\n default:\n return 'bg-neutral-10 text-neutral-99';\n }\n };\n\n const getTypeClassNamesForVersion_2 = ({ type }) => {\n switch (type) {\n case TOAST_TYPE.SUCCESS:\n return 'bg-npl-succes-light-3 text-npl-text-icon-on-light-surface-primary';\n case TOAST_TYPE.ERROR:\n return 'bg-npl-error-light-3 text-npl-text-icon-on-light-surface-primary';\n case TOAST_TYPE.INFORMATION:\n return 'bg-npl-blurple-light-3 text-npl-text-icon-on-light-surface-primary';\n case TOAST_TYPE.WARNING:\n return 'bg-npl-yellow-light-3 text-npl-text-icon-on-light-surface-primary';\n case TOAST_TYPE.NEUTRAL:\n return 'bg-npl-neutral-dark-3 text-npl-text-icon-on-dark-primary';\n default:\n return 'bg-neutral-10 text-neutral-99';\n }\n };\n\n const getIconForNPLv2 = ({ type }) => {\n if (customIcon) return customIcon;\n\n switch (type) {\n case TOAST_TYPE.SUCCESS:\n return ;\n case TOAST_TYPE.ERROR:\n return ;\n case TOAST_TYPE.INFORMATION:\n return ;\n case TOAST_TYPE.WARNING:\n return ;\n case TOAST_TYPE.NEUTRAL:\n return ;\n default:\n return <>;\n }\n };\n const visibilityClassNames = isVisible ? style.showToast : style.hideToast;\n\n const shadowClassName = style.boxShadowForToast;\n if (nplVersion == 2) {\n return (\n \n dismissOnClick && removeToast && id ? removeToast(id) : null\n }\n ref={toastRef}\n >\n
\n
{getIconForNPLv2({ type })}
\n
\n {text} \n {description && (\n \n {description}\n \n )}\n {CTAButtonProps && (\n \n {CTAButtonProps.text}\n \n )}\n
\n
\n (removeToast && id ? removeToast(id) : null)}\n >\n ×\n \n \n );\n } else {\n return (\n \n dismissOnClick && removeToast && id ? removeToast(id) : null\n }\n ref={toastRef}\n >\n {text}\n \n );\n }\n};\n\nToast.defaultProps = {\n nplVersion: 1,\n customIcon: null,\n};\n\nexport default Toast;\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\n\nimport Toast from './Toast';\nimport { createPortal } from 'react-dom';\nimport { nanoid } from 'nanoid';\n\nexport const DEFAULT_MSG = '';\nexport const TOAST_TYPE = {\n DEFAULT: 'default',\n SUCCESS: 'success',\n ERROR: 'error',\n WARNING: 'warning',\n INFORMATION: 'information',\n NEUTRAL: 'neutral',\n NEUTRAL_LIGHT: 'neutral-light',\n};\n\n//this is a global store for toast event listener\nclass GlobalStore {\n constructor() {\n this.func = [];\n }\n\n // we store listener function and subscribe them to executes on an event emit\n on(listener) {\n this.func.push(listener);\n }\n\n //this runs all the listerner functions that are subscribed to global store\n emit(options) {\n this.func.forEach((listener) => listener(options));\n }\n}\n\n// creating a reference to the global store\nconst globalStore = new GlobalStore();\n\nexport const showToast = (options) => {\n globalStore.emit({ ...options });\n};\n\nexport const showSuccessToast = (text) => {\n showToast({ text, type: 'success', nplVersion: 2 });\n};\n\nexport const showErrorToast = (error) => {\n //capture the error for logs\n console.error(error);\n showToast({ text: error, type: 'error', nplVersion: 2 });\n};\n\nexport const removeAllToasts = () => {\n globalStore.emit({ removeAll: true });\n};\n\nexport const ToastContainer = () => {\n const toastRef = useRef();\n\n useEffect(() => {\n const addToastListener = (options) => {\n if (options.removeAll) {\n toastRef.current?.removeAllToasts();\n return;\n }\n toastRef.current?.addToast(options);\n };\n globalStore.on(addToastListener);\n }, []);\n\n return ;\n};\n\n// eslint-disable-next-line react/display-name\nconst ToastPortal = forwardRef((props, ref) => {\n const [_document, setDocument] = useState(null);\n const [toastList, setToastList] = useState([]);\n const [removeId, setRemoveId] = useState('');\n\n const modalEl = _document?.getElementById('toast-container');\n\n useImperativeHandle(ref, () => ({\n addToast(options) {\n setToastList([\n ...toastList,\n { ...options, isVisible: true, id: nanoid() },\n ]);\n },\n removeAllToasts() {\n toastList.forEach((toast) => {\n removeToast(toast.id);\n });\n },\n }));\n\n const removeToast = (id) => {\n if (id) {\n setToastList((toasts) =>\n toasts.map((toast) => {\n if (toast.id === id) {\n return { ...toast, isVisible: false };\n }\n\n return toast;\n })\n );\n\n setTimeout(() => {\n setToastList((toasts) => toasts.filter((toast) => toast.id !== id));\n }, 200);\n }\n };\n\n useEffect(() => {\n if (removeId) {\n removeToast(removeId);\n }\n }, [removeId]);\n\n useEffect(() => {\n if (toastList.length) {\n const { id, autoCloseTime, dismissOnClick = false } = toastList[\n toastList.length - 1\n ];\n if (!dismissOnClick) {\n setTimeout(() => {\n setRemoveId(id);\n }, autoCloseTime || 3000);\n }\n }\n }, [toastList]);\n\n // Access document in Next after page renders\n useEffect(() => {\n setDocument(document);\n }, []);\n\n if (!toastList) return null;\n if (toastList && !toastList.length) return null;\n\n // backup - fixed bottom-[48px] left-1/2 -translate-x-1/2 z-[10000] flex flex-col justify-center space-y-12\n\n return createPortal(\n \n {toastList.map((toastItemData) => {\n const { id, ...propsToFwd } = toastItemData;\n return (\n \n );\n })}\n ,\n modalEl\n );\n});\n\nexport default ToastContainer;\n","import CalendarDaysFilledIcon from './CalendarDaysFilledIcon';\nexport default CalendarDaysFilledIcon;\n","import React from 'react';\n\nconst CalendarDaysFilledIcon = () => {\n return (\n \n \n \n \n \n );\n};\n\nexport default CalendarDaysFilledIcon;\n","import CalendarDaysIcon from './CalendarDaysIcon';\nexport default CalendarDaysIcon;\n","import React from 'react';\n\nconst CalendarDaysIcon = () => {\n return (\n \n \n \n \n );\n};\n\nexport default CalendarDaysIcon;\n","import ChatFilledIcon from './ChatFilledIcon';\nexport default ChatFilledIcon;\n","import React from 'react';\n\nconst ChatFilledIcon = () => {\n return (\n \n \n \n \n \n );\n};\n\nexport default ChatFilledIcon;\n","import ChatIcon from './ChatIcon';\nexport default ChatIcon;\n","import React from 'react';\n\nconst ChatIcon = () => {\n return (\n \n \n \n );\n};\n\nexport default ChatIcon;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const ConversationIcon = ({\n width,\n height,\n displayType,\n fillColor,\n strokeColor,\n}) => (\n <>\n \n {displayType === 'filled' && (\n \n )}\n \n \n \n \n);\n\nConversationIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n fillColor: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nConversationIcon.defaultProps = {\n width: '24',\n height: '24',\n fillColor: '#FBC91B',\n strokeColor: '#AAABAE',\n};\n","import { ConversationIcon } from './ConversationIcon';\n\nexport default ConversationIcon;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const HomeIcon = ({\n width,\n height,\n displayType,\n fillColor,\n strokeColor,\n}) => (\n \n \n \n);\n\nHomeIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n fillColor: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nHomeIcon.defaultProps = {\n width: '18',\n height: '19',\n fillColor: '#FBC91B',\n strokeColor: '#AAABAE',\n};\n","import { HomeIcon } from \"./HomeIcon\";\n\nexport default HomeIcon;\n","import HouseFilledIcon from './HouseFilledIcon';\nexport default HouseFilledIcon;\n","import React from 'react';\n\nconst HouseFilledIcon = () => {\n return (\n \n \n \n \n );\n};\n\nexport default HouseFilledIcon;\n","import HouseIcon from './HouseIcon';\nexport default HouseIcon;\n","import React from 'react';\n\nconst HouseIcon = () => {\n return (\n \n \n \n );\n};\n\nexport default HouseIcon;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const LibraryIcon = ({\n width,\n height,\n displayType,\n fillColor,\n strokeColor,\n}) =>\n displayType === 'outline' ? (\n \n \n \n \n ) : (\n \n \n \n \n \n \n );\n\nLibraryIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n fillColor: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nLibraryIcon.defaultProps = {\n width: '24',\n height: '24',\n fillColor: '#FBC91B',\n strokeColor: '#AAABAE',\n};\n","import { LibraryIcon } from \"./LibraryIcon\";\n\nexport default LibraryIcon;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const LiveSessionIcon = ({\n width,\n height,\n displayType,\n fillColor,\n strokeColor,\n}) => (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nLiveSessionIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n fillColor: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nLiveSessionIcon.defaultProps = {\n width: '24',\n height: '24',\n fillColor: '#FBC91B',\n strokeColor: '#AAABAE',\n};\n","import { LiveSessionIcon } from \"./LiveSessionIcon\";\n\nexport default LiveSessionIcon;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst MembersIcon = ({\n width,\n height,\n displayType,\n fillColor,\n strokeColor,\n}) => (\n \n \n \n \n);\n\nMembersIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n fillColor: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nMembersIcon.defaultProps = {\n width: '24',\n height: '24',\n fillColor: '#FBC91B',\n strokeColor: '#AAABAE',\n};\n\nexport default MembersIcon;\n","import MembersIcon from './MembersIcon';\n\nexport default MembersIcon;\n","import ProfileFilledIcon from './ProfileFilledIcon';\nexport default ProfileFilledIcon;\n","import React from 'react';\n\nconst ProfileFilledIcon = () => {\n return (\n \n \n \n );\n};\n\nexport default ProfileFilledIcon;\n","import ProfileIcon from './ProfileIcon';\nexport default ProfileIcon;\n","import React from 'react';\n\nconst ProfileIcon = () => {\n return (\n \n \n \n );\n};\n\nexport default ProfileIcon;\n","import PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nconst RowFilledIcon = ({\n width,\n height,\n strokeColor,\n fillColor,\n customClassNames,\n displayType,\n}) => {\n const className = 'c-RowFilledIcon';\n\n return (\n \n {/* // TODO: Add paths and def here */}\n \n \n );\n};\n\nRowFilledIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n strokeColor: PropTypes.string,\n fillColor: PropTypes.string,\n customClassNames: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n};\nRowFilledIcon.defaultProps = {\n width: '24',\n height: '24',\n strokeColor: '#1B1B18',\n fillColor: '#FBC91B',\n customClassNames: '',\n displayType: 'outline',\n};\n\nexport default RowFilledIcon;\n","import RowFilledIcon from './RowFilledIcon';\n\nexport default RowFilledIcon;\n","import PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nconst RowIcon = ({\n width,\n height,\n strokeColor,\n fillColor,\n customClassNames,\n displayType,\n}) => {\n const className = 'c-RowIcon';\n\n return (\n \n {/* // TODO: Add paths and def here */}\n \n \n );\n};\n\nRowIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n strokeColor: PropTypes.string,\n fillColor: PropTypes.string,\n customClassNames: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n};\nRowIcon.defaultProps = {\n width: '24',\n height: '24',\n strokeColor: '#91918D',\n fillColor: '#FBC91B',\n customClassNames: '',\n displayType: 'outline',\n};\n\nexport default RowIcon;\n","import RowIcon from './RowIcon';\n\nexport default RowIcon;\n","import {\n COMMUNITY_PORTAL_EVENTS_PAGE_ENDPOINT,\n COMMUNITY_PORTAL_HOMEPAGE_ENDPOINT,\n COMMUNITY_PORTAL_LIBRARY_FOLDER_PATH,\n COMMUNITY_PORTAL_LIBRARY_PAGE_ENDPOINT,\n COMMUNITY_PORTAL_MEET_AN_EXPERT_PAGE_ENDPOINT,\n COMMUNITY_PORTAL_MEMBERS_PAGE_ENDPOINT,\n} from '../../PortalModeWrapper/constants';\n\nimport BookOpenFilledIcon from '../components/Icons/BookOpenFilledIcon';\nimport BookOpenIcon from '../components/Icons/BookOpenIcon';\nimport CalendarDaysFilledIcon from '../components/Icons/CalendarDaysFilledIcon';\nimport CalendarDaysIcon from '../components/Icons/CalendarDaysIcon';\nimport ChatFilledIcon from '../components/Icons/ChatFilledIcon';\nimport ChatIcon from '../components/Icons/ChatIcon';\nimport ConversationIcon from '../components/Icons/ConversationIcon';\nimport HomeIcon from '../components/Icons/HomeIcon';\nimport HouseFilledIcon from '../components/Icons/HouseFilledIcon';\nimport HouseIcon from '../components/Icons/HouseIcon';\nimport LibraryIcon from '../components/Icons/LibraryIcon';\nimport LiveSessionIcon from '../components/Icons/LiveSessionIcon';\nimport MembersIcon from '../components/Icons/MembersIcon';\nimport ProfileFilledIcon from '../components/Icons/ProfileFilledIcon';\nimport ProfileIcon from '../components/Icons/ProfileIcon';\nimport RowFilledIcon from '../components/Icons/RowFilledIcon';\nimport RowIcon from '../components/Icons/RowIcon';\n\nexport const PROFILE_LINK = '/setting/profile';\n\nexport const HOME_PAGE = {\n name: 'HOME_PAGE',\n label: 'Home',\n labelKey: 'home',\n dataTestId: 'nav-item-home',\n Icon: HomeIcon,\n endpoint: COMMUNITY_PORTAL_HOMEPAGE_ENDPOINT,\n mobileIcon: HouseIcon,\n mobileActiveIcon: HouseFilledIcon,\n};\nexport const EVENTS_PAGE = {\n name: 'EVENTS_PAGE',\n label: 'Events',\n labelKey: 'events',\n dataTestId: 'nav-item-events',\n Icon: LiveSessionIcon,\n endpoint: COMMUNITY_PORTAL_EVENTS_PAGE_ENDPOINT,\n mobileIcon: CalendarDaysIcon,\n mobileActiveIcon: CalendarDaysFilledIcon,\n};\nexport const LIBRARY_PAGE = {\n name: 'LIBRARY_PAGE',\n label: 'Content',\n labelKey: 'content',\n dataTestId: 'nav-item-library',\n Icon: RowIcon,\n endpoint: COMMUNITY_PORTAL_LIBRARY_PAGE_ENDPOINT,\n mobileIcon: RowFilledIcon,\n mobileActiveIcon: RowFilledIcon,\n};\nexport const LIBRARY_FOLDER_PAGE = {\n name: 'LIBRARY_FOLDER_PAGE',\n label: 'Library Folder',\n labelKey: 'library-folder',\n dataTestId: 'nav-item-folder',\n Icon: LibraryIcon,\n endpoint: COMMUNITY_PORTAL_LIBRARY_FOLDER_PATH,\n mobileIcon: RowFilledIcon,\n mobileActiveIcon: RowFilledIcon,\n};\nexport const MEMBERS_PAGE = {\n name: 'MEMBERS_PAGE',\n label: 'Members',\n labelKey: 'members',\n dataTestId: 'nav-item-member',\n Icon: MembersIcon,\n endpoint: COMMUNITY_PORTAL_MEMBERS_PAGE_ENDPOINT,\n mobileIcon: ProfileIcon,\n mobileActiveIcon: ProfileFilledIcon,\n};\nexport const MEET_AN_EXPERT_PAGE = {\n name: 'MEET_AN_EXPERT_PAGE',\n label: 'Meet an Expert',\n labelKey: 'meet-an-expert',\n dataTestId: 'nav-item-expert',\n Icon: ConversationIcon,\n endpoint: COMMUNITY_PORTAL_MEET_AN_EXPERT_PAGE_ENDPOINT,\n mobileIcon: ChatIcon,\n mobileActiveIcon: ChatFilledIcon,\n};\n\nexport const pagesList = [\n HOME_PAGE,\n EVENTS_PAGE,\n LIBRARY_PAGE,\n MEMBERS_PAGE,\n MEET_AN_EXPERT_PAGE,\n];\n","import React, { useEffect, useState } from 'react';\n\nimport { bookTrainerForCalendly } from '../apiServices';\nimport { cancelTrainerBookingForCalendly } from '../apiServices/communityBookingService';\n\nconst useCommunitiesBookingData = (communityId, existingBookings) => {\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(existingBookings ?? []);\n\n const getBookingDetails = async (eventUri, inviteeUri) => {\n setLoading(true);\n const response = await bookTrainerForCalendly(\n communityId,\n eventUri,\n inviteeUri\n );\n if (response.status === 200) {\n setData([response.data]);\n setLoading(false);\n }\n };\n\n const cancelBooking = async (cancelReason, setcancel, cancel) => {\n setLoading(true);\n const reponse = await cancelTrainerBookingForCalendly(\n communityId,\n cancelReason\n );\n if (reponse.status === 200) {\n setData([]);\n setcancel(!cancel);\n setLoading(false);\n }\n };\n\n useEffect(() => {\n setData(existingBookings);\n }, [existingBookings]);\n\n // Reset Data in case there's a change in community Id\n useEffect(() => {\n setData([]);\n }, [communityId]);\n\n return {\n loading,\n data,\n getBookingDetails,\n cancelBooking,\n };\n};\n\nexport default useCommunitiesBookingData;\n","import {\n useCommunitiesData,\n useCommunityEventsData,\n useLibraryData,\n useMembersData,\n useSearchDataLibrary,\n} from '../hooks';\n\nimport { HOME_PAGE } from '../constants/pages';\nimport { createContext } from 'react';\nimport history from '../../modules/history';\nimport { storageUtils } from '../../PortalModeWrapper/utils';\nimport { tags } from '../pages/MembersPage/constants';\nimport { useCallback } from 'react';\nimport useCommunitiesBookingData from '../hooks/useCommunitieBookingData';\nimport useCommunitiesInvoiceData from '../hooks/useCommunitiesInvoiceData';\nimport { useContext } from 'react';\nimport { useEffect } from 'react';\nimport { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useState } from 'react';\nimport { getCurrentCountry } from '../../services/checkoutServices/communityEventCheckoutServices';\n\nexport const CommunityPortalContext = createContext();\n\nexport const CommunityPortalContextProvider = ({ children }) => {\n const { folderId } = useMemo(() => {\n const activePagePaths = window.location.pathname.split('/');\n const [\n root,\n community_portal,\n activeCommunityId,\n route,\n folderId,\n ] = activePagePaths;\n return { activeCommunityId, folderId };\n }, [window.location.pathname]);\n\n const user = useSelector((state) => {\n return state?.auth?.user;\n });\n const [activeCommunity, setActiveCommunity] = useState(null);\n\n const [activePage, setActivePage] = useState(HOME_PAGE.name);\n // const [activeTag, setActiveTag] = useState(tags?.[0]);\n const [activeTag, setActiveTag] = useState(tags?.[0]);\n const [country, setCountry] = useState(null);\n const [showNavigationSidebar, setShowNavigationSidebar] = useState(true);\n\n const {\n doesCommunityIdExist,\n activeCommunityData,\n communities,\n loading,\n getCommunitiesData,\n } = useCommunitiesData(activeCommunity);\n\n const allCommunities = useMemo(() => {\n return communities?.sort((a, b) => {\n if (a.isManager && !b.isManager) return -1;\n if (!a.isManager && b.isManager) return 1;\n return a.name.localeCompare(b.name);\n });\n }, [communities]);\n\n const {\n data: membersData,\n loading: membersDataLoading,\n pageNumber,\n setNextPage,\n hasMore,\n totalMembers,\n } = useMembersData(\n activeCommunityData?._id,\n activeTag,\n activeCommunityData?.code\n );\n\n const getCountryData = async () => {\n const { data, error } = await getCurrentCountry();\n if (error) return;\n setCountry(data?.country);\n };\n\n useEffect(() => {\n if (country) return;\n getCountryData();\n }, []);\n\n const {\n data: eventsData,\n loading: eventsDataLoading,\n fetchMorePastEvents,\n fetchMoreUpcomingEvents,\n registerForEvent,\n cancelEventRegistration,\n } = useCommunityEventsData(activeCommunityData?._id);\n\n const {\n loading: bookingLoading,\n data: calendarData,\n getBookingDetails,\n cancelBooking,\n } = useCommunitiesBookingData(\n activeCommunityData?._id,\n activeCommunityData?.bookings\n );\n const {\n dataForLibrary,\n selectedFolderData,\n setSortState,\n selectSortState,\n sortState,\n loading: libraryLoading,\n } = useLibraryData(activeCommunityData?._id, folderId);\n\n const {\n searchData,\n searchLoading,\n error: searchError,\n showSearchDropDown,\n search,\n setSearch,\n searchDropDownRef,\n onSearchBoxFocus,\n setShowSearchDropDown,\n } = useSearchDataLibrary(activeCommunityData?._id);\n\n const { invoices, loading: invoiceLoading } = useCommunitiesInvoiceData(\n activeCommunityData?.code\n );\n\n const updateActiveCommunity = useCallback((id, shouldRedirect = true) => {\n // Safety check to make sure the community exists\n if (id && id !== 'undefined') {\n setActiveCommunity(id);\n storageUtils.storeActiveCommunity(id);\n const activePagePaths = window.location.pathname.split('/');\n const [\n root,\n community_portal,\n activeCommunityId,\n route,\n subroute,\n ] = activePagePaths;\n\n if (route && shouldRedirect) {\n if (subroute) history.push(`/communities/${id}/${route}/${subroute}`);\n else history.push(`/communities/${id}/${route}`);\n }\n }\n }, []);\n\n useEffect(() => {\n if (!user?.isUserBasicProfileIncomplete && !communities) {\n getCommunitiesData();\n }\n }, [activeCommunity, communities, getCommunitiesData, user]);\n\n const value = {\n country,\n // Community Data\n activeCommunity,\n setActiveCommunity,\n doesCommunityIdExist,\n activeCommunityData,\n updateActiveCommunity,\n communities: allCommunities,\n loading,\n getCommunitiesData,\n\n // Tab data\n activePage,\n setActivePage,\n setShowNavigationSidebar,\n showNavigationSidebar,\n\n // Members data\n activeTag,\n setActiveTag,\n membersData,\n membersDataLoading,\n pageNumber,\n setNextPage,\n hasMore,\n totalMembers,\n\n // Events Data\n eventsData,\n eventsDataLoading,\n fetchMorePastEvents,\n fetchMoreUpcomingEvents,\n registerForEvent,\n cancelEventRegistration,\n\n // Booking Data\n bookingLoading,\n calendarData,\n getBookingDetails,\n cancelBooking,\n\n // Library Data\n dataForLibrary,\n searchData,\n searchLoading,\n searchError,\n showSearchDropDown,\n setSortState,\n selectSortState,\n sortState,\n search,\n setSearch,\n searchDropDownRef,\n onSearchBoxFocus,\n selectedFolderData,\n setShowSearchDropDown,\n libraryLoading,\n\n // Invoices Data\n invoices,\n invoiceLoading,\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useCommunityPortalContext = () =>\n useContext(CommunityPortalContext);\n","export const PAYMENT_FAILURE = 'PAYMENT_FAILURE';\nexport const PAYMENT_SUCCESS = 'PAYMENT_SUCCESS';\nexport const PAYMENT_PENDING = 'PAYMENT_PENDING';\nexport const FULL_PAYMENT = 'FULL_PAYMENT';\n\nexport const COMMUNITY_ONE_TIME_PAYMENT_ENTITIES = Object.freeze({\n EVENT: 'community_events',\n FOLDER: 'community_folders',\n});\n","export const displayTypeToClassNamesMap = {\n primary:\n 'rounded-4 bg-button-primary focus:bg-button-primary-focus hover:bg-button-primary-hover',\n secondary:\n 'rounded-4 bg-button-secondary active:bg-button-primary-active hover:bg-button-secondary-hover',\n outline: 'rounded-4 border-1 border-neutral-80 hover:bg-button-outline-hover',\n plain: 'rounded-4 hover:bg-button-outline-hover',\n disabled: 'rounded-4 bg-[#FCCB1D] opacity-40',\n};\n\nexport const sizeToClassNamesMap = {\n sm: 'font-medium text-button-md px-12 py-8',\n md: 'font-medium text-button-md px-24 py-12',\n lg: 'font-medium text-button-lg px-24 py-12',\n xl: 'font-medium text-button-lg px-24 py-16',\n bt: 'font-medium text-button-lg px-15 py-16',\n};\n\nexport const DISPLAY_TYPE_OPTIONS = [\n 'primary',\n 'secondary',\n 'plain',\n 'outline',\n 'disabled',\n];\nexport const SIZE_OPTIONS = ['sm', 'md', 'lg', 'xl'];\n","import {\n DISPLAY_TYPE_OPTIONS,\n SIZE_OPTIONS,\n displayTypeToClassNamesMap,\n sizeToClassNamesMap,\n} from './constants';\n\nimport PropTypes from 'prop-types';\n\nconst Button = (props) => {\n const {\n displayType,\n size,\n fluid,\n customClassNames,\n customInnerClassNames,\n customClassForButtonDiv,\n leftIcon,\n rightIcon,\n children,\n disabled,\n loading,\n rounded,\n ...btnProps\n } = props;\n\n const className = 'p-CommunityPortal-c-Button';\n\n const classNames = [\n className,\n displayTypeToClassNamesMap?.[displayType] ?? '',\n sizeToClassNamesMap?.[size] ?? '',\n fluid ? 'w-full' : '',\n rounded ? 'rounded-[100px]' : '',\n disabled ? 'pointer-events-none cursor-not-allowed' : '',\n ].join(' ');\n\n return (\n \n );\n};\n\nButton.propTypes = {\n displayType: PropTypes.oneOf(DISPLAY_TYPE_OPTIONS),\n size: PropTypes.oneOf(SIZE_OPTIONS),\n fluid: PropTypes.bool,\n customClassNames: PropTypes.string,\n customInnerClassNames: PropTypes.string,\n leftIcon: PropTypes.element,\n rightIcon: PropTypes.element,\n children: PropTypes.arrayOf(PropTypes.element),\n disabled: PropTypes.bool,\n};\n\nButton.defaultProps = {\n displayType: 'primary',\n size: 'md',\n fluid: false,\n customClassNames: '',\n customInnerClassNames: '',\n leftIcon: null,\n rightIcon: null,\n disabled: false,\n customClassForButtonDiv: 'justify-center',\n loading: false,\n};\n\nexport default Button;\n","import Button from './Button';\n\nexport default Button;\n","import format from 'date-fns/format';\nimport formatDistanceToNowStrict from 'date-fns/formatDistanceToNowStrict';\nimport isFuture from 'date-fns/isFuture';\n\nexport const formatDate = (date) =>\n typeof date === 'string' ? new Date(date) : date;\n\nexport const isDateInFuture = (date) => {\n try {\n const formattedDate = formatDate(date);\n const presentDate = new Date().getTime();\n\n return formattedDate.getTime() > presentDate;\n } catch (err) {\n return null;\n }\n};\n\n/**\n *\n * @param {*} t - translation\n * @param {*} date - the first date (date in the past)\n * @returns '1y' || '1m' || '1d' || '1h' || '1m' || '1s'\n */\nexport function timeSince(t, date) {\n var seconds = Math.floor((new Date() - date) / 1000);\n\n var interval = seconds / 31536000;\n\n if (interval <= 0) return t('just-now');\n\n if (interval > 1) {\n return Math.floor(interval) + 'y';\n }\n interval = seconds / 2592000;\n if (interval > 1) {\n return Math.floor(interval) + 'mo';\n }\n interval = seconds / 86400;\n if (interval > 1) {\n if (interval > 7) {\n const inWeeks = interval / 7;\n return Math.floor(inWeeks) + 'w';\n }\n\n return Math.floor(interval) + 'd';\n }\n interval = seconds / 3600;\n if (interval > 1) {\n return Math.floor(interval) + 'h';\n }\n interval = seconds / 60;\n if (interval > 1) {\n return Math.floor(interval) + 'm';\n }\n return t('just-now');\n}\n\nexport const isTimeinBetweenTwoTimes = (\n date1,\n date2,\n minus_minutes_on_start_time\n) => {\n try {\n const minus_minutes_on_start_time_in_milliseconds =\n minus_minutes_on_start_time * 60 * 1000;\n const formattedDate1 = new Date(date1).getTime();\n const formattedDate2 = new Date(date2).getTime();\n const presentDate = new Date().getTime();\n const formattedDate1_minus_minutes_on_start_time =\n formattedDate1 - minus_minutes_on_start_time_in_milliseconds;\n\n return (\n formattedDate1_minus_minutes_on_start_time < presentDate &&\n formattedDate2 > presentDate\n );\n } catch (err) {\n return null;\n }\n};\n\nexport const checkIfStartTimelessthanCustomMinutes = (date, minutes) => {\n const minutesinmilliseconds = minutes * 60 * 1000;\n\n const givendateinMilliseconds = new Date(date).getTime();\n const currentDateinMilliseconds = new Date().getTime();\n\n const difference = givendateinMilliseconds - currentDateinMilliseconds;\n\n return difference < minutesinmilliseconds;\n};\nexport const getRelativeDescriptivePastDate = (date) => {\n try {\n const formattedDate = formatDate(date);\n return `${formatDistanceToNowStrict(formattedDate)} ago`;\n } catch (err) {\n return null;\n }\n};\n\nexport const getDateItemsObject = (t, dateInput, isMobileView) => {\n try {\n const formattedDate = formatDate(dateInput);\n const month = new Intl.DateTimeFormat('en-US', {\n month: isMobileView ? 'short' : 'long',\n }).format(formattedDate);\n const date = formattedDate.getDate();\n\n let day = new Intl.DateTimeFormat('en-US', {\n weekday: isMobileView ? 'short' : 'long',\n }).format(formattedDate);\n\n if (isFuture(formattedDate)) {\n const presentDate = new Date();\n\n const presentDateDay = presentDate.getDate();\n const isCurrentMonth =\n presentDate.getMonth() === formattedDate.getMonth();\n const isCurrentYear =\n presentDate.getFullYear() === formattedDate.getFullYear();\n\n const isActivePeriod = isCurrentMonth && isCurrentYear;\n\n day =\n presentDateDay === date && isActivePeriod\n ? isMobileView\n ? t('now')\n : t('today')\n : (presentDateDay - date) * -1 === 1 && isActivePeriod\n ? isMobileView\n ? t('tomorrow-short')\n : t('tomorrow')\n : day;\n }\n\n return {\n month,\n date,\n day,\n };\n } catch (err) {\n return {};\n }\n};\n\nexport const getPlainTime = (date) => {\n try {\n // am aaa\n // hour h\n // minute mm\n return format(formatDate(date), 'h:mm aaa');\n } catch (err) {\n return null;\n }\n};\n\nexport const getLongTimeZoneName = (date) => {\n try {\n const timezoneWithDate = Intl.DateTimeFormat('en-US', {\n timeZoneName: 'longGeneric',\n })\n .format(formatDate(date))\n .split(',');\n\n return timezoneWithDate[1];\n } catch (err) {\n return null;\n }\n};\n\nexport const getDifferenceBetweenDatesInMinutes = (startDate, endDate) => {\n try {\n const startDateInMilliseconds = new Date(startDate).getTime();\n const endDateInMilliseconds = new Date(endDate).getTime();\n const difference = endDateInMilliseconds - startDateInMilliseconds;\n return difference / (1000 * 60);\n } catch (err) {\n return null;\n }\n};\n\nexport const getDifferenceBetweenDatesInDays = (startDate, endDate) => {\n const diffInMins = getDifferenceBetweenDatesInMinutes(startDate, endDate);\n return Math.floor(diffInMins / (60 * 24));\n};\n\nexport const subtractMinutesFromDate = (date, minutes) => {\n try {\n const dateInMilliseconds = new Date(date).getTime();\n const minutesInMilliseconds = minutes * 60 * 1000;\n const newDateInMilliseconds = dateInMilliseconds - minutesInMilliseconds;\n return new Date(newDateInMilliseconds);\n } catch (err) {\n return null;\n }\n};\n\nexport const getNextBillingDateFromDate = (\n date,\n statusOfSubscription,\n cancelledAt\n) => {\n if (!date) return null;\n\n // handling all cancelled states\n if (statusOfSubscription === 'Cancelled') {\n if (!isDateInFuture(cancelledAt)) {\n return null;\n }\n return cancelledAt;\n } else {\n // Handling current State\n const result = date ? formatDate(date) : new Date();\n\n if (isDateInFuture(result)) {\n // This is the correct date already\n return result.toISOString();\n } else {\n result.setMonth(result.getMonth() + 1);\n return result.toISOString();\n }\n }\n};\n\nexport const formatDateInDDMMYYYY = (date) => {\n if (!date) return null;\n return new Intl.DateTimeFormat().format(formatDate(date));\n};\n","import React from \"react\";\nimport classes from \"./LoadingCircle.module.css\";\n\nconst loadingCircle = () =>
Loading...
;\n\nexport default loadingCircle;\n","export const DISCOVER_MORE_LINK = 'https://nasacademy.com/communities';\nexport const DISCOVER_MORE_CLASSES_LINK = 'https://nasacademy.com/courses';\nexport const COMMUNITY_EXPIRED = 'Expired'; // Status, not a string\nexport const COMMUNITY_RENEWAL_AVAILABLE = 'Renewal_Available';\nexport const COMMUNITY_AUTO_RENEWAL_SOON = 'Auto_Renewal_Soon';\nexport const COMMUNITY_GRACE_PERIOD = 'Grace_Period';\n\nexport const defaultHostProfileImage =\n 'https://d2oi1rqwb0pj00.cloudfront.net/nasIO/portal/png/placeholder-guest-profile-picture.png';\n\nexport const NASIO_LIGHT_IMAGE_DATA = {\n alt: 'icon',\n mobileImgData: {\n src:\n 'https://d2oi1rqwb0pj00.cloudfront.net/nasIO/portal/png/nasio_mobile_banner.png',\n webpSrc:\n 'https://d2oi1rqwb0pj00.cloudfront.net/nasIO/portal/png/nasio_mobile_banner.png',\n meta: {\n width: 56,\n height: 56,\n },\n },\n};\n","import { format, isAfter, isBefore, isPast } from 'date-fns';\n\nimport moment from 'moment-timezone';\n\n/**\n * Get the 12 hour format from a 24hours formatted hour and mins\n * @param {number} hour Hours between 0 and 23 (inclusive)\n * @param {number} mins Minutes between 0 and 59 (inclusive)\n * @return {string} The time in 12 hours format - HH:MM AM/PM\n */\nexport const getHours = (hour, mins) => {\n const time = hour > 12 ? hour % 12 : hour;\n const format = hour >= 12 ? ' PM' : ' AM';\n const minutes = mins >= 10 ? mins : `0${mins}`;\n return `${time}:${minutes}${format}`;\n};\n\n/**\n * Format a date into DD MMM YYYY\n * @param {date} dateString\n * @return {string} Date format in DD MMM YYYY\n */\nexport const formatTime = (dateString) => {\n const date = new Date(dateString);\n const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n return `${date.getDate()} ${months[date.getMonth()]} ${date.getFullYear()}`;\n};\n\n/**\n * Format a date into DD MMM YYYY HH:MM\n * @param {date} dateString\n * @return {string} Date format in DD MMM YYYY HH:MM\n */\nexport const formatDateTime = (dateString, withTime = true) => {\n const date = new Date(dateString);\n if (withTime) {\n return `${date.getDate()} ${getMonthName(\n date.getMonth()\n )} ${date.getFullYear()} ${getHours(date.getHours(), date.getMinutes())}`;\n }\n return `${date.getDate()} ${getMonthName(\n date.getMonth()\n )} ${date.getFullYear()}`;\n};\n\n/**\n * Get the name of the month\n * @param {number} monthIndex Index of the month. 0 = January, 1 = February, ..., 11 = December\n * @return {string} Name of the month\n */\nexport const getMonthName = (monthIndex, short = false) => {\n const months = short\n ? [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ]\n : [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n return months[monthIndex];\n};\n\nexport const getDayName = (dayIndex, short = false) => {\n const days = short\n ? ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat']\n : [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ];\n return days[dayIndex];\n};\n\n/**\n * Convert date into client's browser timezone\n * @param {date} dateString Date to be converted\n * @return {date} A date converted to client's browser timezone.\n */\nexport const convertToBrowserTimeZone = (dateString) => {\n return new Date(dateString).toLocaleString('en-US', {\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n });\n};\n\nexport const convertMinsToHrsMins = (mins) => {\n try {\n let h = Math.floor(mins / 60);\n let m = mins % 60;\n h = h < 10 ? '0' + h : h;\n m = m < 10 ? '0' + m : m;\n return `${h}:${m}`;\n } catch (err) {\n console.log('Error converting mins to hr mins ', err);\n }\n};\n\n/**\n * Get the timezone offset in GMT\n * @param {date} dateObject The date to get the timezone offset from\n * @return {string} The timezone offset in GMT\n */\nexport const getTimeZoneOffset = (dateObject) => {\n let offset = dateObject.getTimezoneOffset();\n const sign = offset < 0 ? '+' : '-';\n offset = Math.abs(offset);\n offset = convertMinsToHrsMins(offset);\n return 'GMT ' + sign + offset;\n};\n\n/*\n\n*/\n\n/**\n * Create date as UTC\n * @param {number} year The full year of the date in UTC\n * @param {number} month The month of the date in UTC. Note that month January is 1 and month December is 12 (different from Javascript default Date implementation)\n * @param {number} day The day of the month in UTC.\n * @param {number} hour The hour of the day in UTC.\n * @param {number} minute The minute in UTC.\n * @param {number} second The second in UTC.\n *\n * @return {date} A date with the UTC details\n */\nexport const createDateAsUTC = (year, month, day, hour, minute, second) => {\n const date = new Date(\n Date.UTC(year, parseInt(month) - 1, day, hour, minute, second)\n );\n return date;\n};\n\n/**\n * Convert date in ISO format to an object with the year, month, date, hours, minutes, and seconds.\n * @param {date} dateTimeString Date in ISO format. Must be in the format of yyyy-mm-ddThh:mm:ss e.g. 2020-07-23T04:30:15\n * @return {object} A custom date object\n */\nexport const createDateTimeObject = (dateTimeString) => {\n const dateTimeToken = dateTimeString.split('T');\n const dateString = dateTimeToken[0];\n const timeString = dateTimeToken[1];\n\n const dateToken = dateString.split('-');\n const timeToken = timeString.split(':');\n\n return {\n year: dateToken[0],\n month: dateToken[1],\n date: dateToken[2],\n hours: timeToken[0],\n minutes: timeToken[1],\n seconds: timeToken[2],\n };\n};\n\n/**\n *\n * @param {\"2020-09-23T04:30:00\"} dateTimeString\n * @param {\"13\"} customHoursString is the hours in 24-hour format\n * @param {\"45\"} customMinutesString is the minutes\n * @param {\"Moment timezone\"} timezone\n */\nexport const convertFromStringToUTCDateTime = (\n dateTimeString,\n customHourString,\n customMinutesString\n) => {\n const dateTimeObject = createDateTimeObject(dateTimeString);\n const startDateUTC = createDateAsUTC(\n dateTimeObject.year,\n dateTimeObject.month,\n dateTimeObject.date,\n dateTimeObject.hours,\n dateTimeObject.minutes,\n dateTimeObject.seconds\n );\n startDateUTC.setUTCHours(customHourString);\n startDateUTC.setUTCMinutes(customMinutesString);\n\n return startDateUTC;\n};\n\n/**\n * Convert time from 12 hour format to 24 hour format.\n * @param {string} time12h Time in 12hour format\n * @param {string} hourMinuteSeparator The string that separates the hours from minutes.\n * @param {string} amPmSeparator The string that separates the modifier (AM/PM) from the time\n * @return {string} The time in 24 hour format\n */\nexport const convertTime12To24 = (\n time12h,\n hourMinuteSeparator,\n amPmSeparator\n) => {\n let time;\n let modifier;\n let hours;\n let minutes;\n\n // IF format is 1.03AM\n const trimmedTime12h = time12h.trim().toUpperCase();\n if (!amPmSeparator && trimmedTime12h.match(/AM|PM/)) {\n const { index } = trimmedTime12h.match(/AM|PM/);\n time = trimmedTime12h.slice(0, index);\n modifier = trimmedTime12h.slice(index);\n } else {\n // IF format is 1.03 PM\n [time, modifier] = trimmedTime12h.split(' ');\n }\n\n [hours, minutes] = time.split(hourMinuteSeparator);\n\n hours = hours.trim();\n minutes = minutes.trim();\n if (hours === '12') {\n hours = '00';\n }\n\n if (modifier.toUpperCase() === 'PM') {\n hours = parseInt(hours, 10) + 12;\n }\n\n return `${hours}:${minutes}`;\n};\n\n/**\n * Convert time from 24 hour format to 12 hour format.\n * @param {string} time24h Time in 24hour format\n * @param {string} currentHourMinuteSeparator The string that separates the hours from minutes.\n * @param {string} newHourMinuteSeparator The string that separates the hours from minutes\n * @return {string} The time in 12 hour format\n */\nexport const convertTime24To12 = (\n time24h,\n currentHourMinuteSeparator,\n newHourMinuteSeparator\n) => {\n const [hours, minutes] = time24h.split(currentHourMinuteSeparator);\n\n let modifier;\n let newHours;\n // Validate hours\n if (parseInt(hours) === 0) newHours = 12;\n else if (parseInt(hours) >= 1 && parseInt(hours) <= 12)\n newHours = parseInt(hours);\n else if (parseInt(hours) >= 13 && parseInt(hours) <= 23)\n newHours = parseInt(hours) - 12;\n else\n throw new Error(\n 'Hours is out of range. Hours should be between 0 to 23 (inclusive).'\n );\n\n // Validate minutes\n if (parseInt(minutes) < 0 || parseInt(minutes) >= 60)\n throw new Error(\n 'Minutes is out of range. Minutes should be between 0 to 59 (inclusive).'\n );\n\n // Identify identifier for PM or AM\n if (parseInt(hours) >= 12 && parseInt(hours) <= 23) {\n modifier = 'PM';\n } else if (parseInt(hours) >= 0 && parseInt(hours) <= 11) modifier = 'AM';\n else throw new Error('Invalid 12-hour time format');\n\n const separator = newHourMinuteSeparator || '.';\n\n return `${newHours}${separator}${minutes} ${modifier}`;\n};\n\n/**\n * Get the time difference between a 24 hour start time and 24 hour end time\n * @param {string} timing The start time to end time in 24 hour format\n * @return {string} The custom time diff object that contain the hours and minutes difference\n */\nexport const getTimeDiff = (timing) => {\n // example 07:00 - 09:30\n // example 23:00 - 01:30\n // example 7:30 - 09:15\n\n const [startTime, endTime] = timing.split('-');\n let [startHour, startMin] = startTime.split(':');\n let [endHour, endMin] = endTime.split(':');\n\n startHour = parseInt(startHour);\n startMin = parseInt(startMin);\n\n endHour = parseInt(endHour);\n endMin = parseInt(endMin);\n\n let diffHour;\n let diffMin = 0;\n if (startHour <= endHour) diffHour = endHour - startHour;\n else diffHour = endHour - startHour + 24;\n\n if (startMin <= endMin) diffMin = endMin - startMin;\n else {\n diffMin = endMin - startMin + 60;\n diffHour -= 1;\n }\n\n return {\n diffHours: diffHour,\n diffMinutes: diffMin,\n };\n};\n\n/**\n * Get the timezone offset from a given timezone name.\n * @param {string} timezone Timezone name in accordance to IANA\n * @return {string} The timezone offset\n */\nexport const getTimezoneOffsetFromTimezone = (timezone) => {\n return moment.tz(timezone).format('Z');\n};\n\n/**\n * Get updated lesson days based on timezone.\n * The conversion of date and time may shift the day (e.g. Monday to Tuesday or Sunday)\n * depending on the GMT offset.\n * @param {string} startTimeUTC Start time of the course offer in UTC and in 24 hour format.\n * @param {string} timezone Timezone name in accordance to IANA\n * @param {string} lessonDays Days of lesson within a week. Each day is separated by '&'. Example ('Mon & Wed & Fri')\n * @return {array} Updated lesson days after converting the date to the given timezone\n */\nexport const getUpdatedLessonDays = (startTimeUTC, timezone, lessonDays) => {\n const timezoneOffset = moment.tz(timezone).format('Z');\n\n let [startHoursUTC, startMinutesUTC] = startTimeUTC.split(':');\n let [offsetHours, offsetMinutes] = timezoneOffset.split(':');\n const plusOrMinus = offsetHours[0];\n\n startHoursUTC = parseInt(startHoursUTC);\n startMinutesUTC = parseInt(startMinutesUTC);\n\n offsetHours = parseInt(offsetHours);\n offsetMinutes = parseInt(offsetMinutes);\n\n let offsetDays = 0;\n const afterOffsetHours = startHoursUTC + offsetHours;\n if (afterOffsetHours < 0) offsetDays = -1;\n else if (afterOffsetHours > 23) offsetDays = 1;\n\n if (\n plusOrMinus === '+' &&\n startMinutesUTC + offsetMinutes >= 60 &&\n offsetDays !== 1\n )\n offsetDays += 1;\n else if (\n plusOrMinus === '-' &&\n startMinutesUTC - offsetMinutes < 0 &&\n offsetDays !== -1\n )\n offsetDays -= 1;\n\n // convert lesson days to integer\n const lessonDaysArr = ['Mon', 'Tues', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun'];\n const lessonDaysObj = {\n MON: 0,\n MONDAY: 0,\n TUE: 1,\n TUES: 1,\n TUESDAY: 1,\n WED: 2,\n WEDNESDAY: 2,\n THUR: 3,\n THURS: 3,\n THURSDAY: 3,\n FRI: 4,\n FRIDAY: 4,\n SAT: 5,\n SATURDAY: 5,\n SUN: 6,\n SUNDAY: 6,\n };\n\n const givenLessonDays = lessonDays.split('&'); // ['Mon', 'Fri', 'Sun']\n const newLessonDays = [];\n for (const i in givenLessonDays) {\n const day = givenLessonDays[i].trim();\n let afterOffsetDays = lessonDaysObj[day.toUpperCase()] + offsetDays;\n\n if (afterOffsetDays < 0) afterOffsetDays = 6;\n else if (afterOffsetDays > 6) afterOffsetDays = 0;\n\n newLessonDays.push(lessonDaysArr[afterOffsetDays]);\n }\n\n return newLessonDays;\n};\n\n/**\n * Get the upcoming date of the selected day.\n * For example:\n * - If today is Tuesday (21-July-2020) and you want to get the upcoming Thursday, you will get 30-July-2020.\n * - If today is Friday (24-July-2020) and you want to get the upcoming Monday, you will get 27-July-2020.\n * @param {date} startDate Start date to be used as a base date and time\n * @param {number} targetDay Day of the week for the upcoming date you want. Sunday = 0, Monday = 1, ... Saturday = 6.\n * @param {number} targetStartUTCHours Hours in UTC 24 hour format for the upcoming date you want.\n * @param {number} targetStartUTCMinutes Minutes in UTC 24 hour format for the upcoming date you want.\n * @return {date} The upcoming date based on the day you want.\n */\nexport const getDateOfNextDay = (\n startDate,\n targetDay,\n targetStartUTCHours,\n targetStartUTCMinutes\n) => {\n const offset = targetDay - startDate.getUTCDay();\n const nextWeek = startDate;\n\n if (offset > 0) nextWeek.setUTCDate(startDate.getUTCDate() + offset);\n else if (offset < 0) nextWeek.setUTCDate(startDate.getUTCDate() + offset + 7);\n else if (\n startDate.getUTCHours() > targetStartUTCHours ||\n (startDate.getUTCHours() === targetStartUTCHours &&\n startDate.getUTCMinutes() > targetStartUTCMinutes)\n )\n nextWeek.setUTCDate(startDate.getUTCDate() + offset + 7);\n\n nextWeek.setUTCHours(targetStartUTCHours);\n nextWeek.setUTCMinutes(targetStartUTCMinutes);\n\n return nextWeek;\n};\n\nexport const getDayOfWeek = (dayString) => {\n const daysOfWeek = {\n 0: 'Sun',\n 1: 'Mon',\n 2: 'Tues',\n 3: 'Wednes',\n 4: 'Thurs',\n 5: 'Fri',\n 6: 'Satur',\n 7: 'Sun',\n };\n\n return daysOfWeek[dayString.getDay()];\n};\n\nexport const getLocalDate = (gmtDate, time) => {\n time = time\n .replace('.', ':')\n .replace('am', ' AM GMT')\n .replace('pm', ' PM GMT');\n const date = moment\n .utc(`${gmtDate.split('T')[0]} ${time}`, 'YYYY-MM-DD HH:mm A')\n .toDate();\n return date;\n};\n\nexport const getFormattedDateRange = (start, end, shortFormat, longFormat) => {\n const startDateFormatted = new Date(start).toLocaleString(\n 'en-US',\n shortFormat\n );\n const endDateFormatted = new Date(end).toLocaleString('en-US', longFormat);\n\n const dateToRender =\n startDateFormatted === endDateFormatted.split(',')[0]\n ? endDateFormatted\n : `${startDateFormatted} - ${endDateFormatted}`;\n\n return dateToRender;\n};\n\nexport const formatAMPM = (date, cap = false) => {\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let ampm;\n if (cap) {\n ampm = hours >= 12 ? 'PM' : 'AM';\n } else {\n ampm = hours >= 12 ? 'pm' : 'am';\n }\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? '0' + minutes : minutes;\n return `${hours}:${minutes} ${ampm}`;\n};\n\n/**\n * @param {*} startDate\n * @param {*} endDate\n * @param {string} courseTiming\n */\nexport const getLocalCourseTime = (startDate, endDate) => {\n let startDateTimeLocal = new Date(startDate);\n let endDateTimeLocal = new Date(endDate);\n return {\n startDateTimeLocal,\n endDateTimeLocal,\n formattedStartDateTimeLocal: formatDateTime(startDateTimeLocal, false),\n formattedEndDateTimeLocal: formatDateTime(endDateTimeLocal, false),\n lessonStartTime: formatAMPM(startDateTimeLocal, true),\n lessonEndTime: formatAMPM(endDateTimeLocal, true),\n firstLessonDay: getDayName(startDateTimeLocal.getDay()),\n secondLessonDay: getDayName(endDateTimeLocal.getDay()),\n };\n};\n\nexport const getTimezoneId = () => {\n return Intl.DateTimeFormat().resolvedOptions().timeZone || moment.tz.guess();\n};\n\nexport const longDateFormat = 'EEEE, d MMMM yyyy';\n\nexport const courseBannerDateFormat = longDateFormat;\n\nexport const formatCourseDateForBanner = (courseDate) => {\n return courseDate ? format(new Date(courseDate), courseBannerDateFormat) : '';\n};\n\nexport const getDateWithShortNamedMonth = (date) => {\n const dateFormat = 'd MMM, R';\n return date ? format(new Date(date), dateFormat) : '';\n};\n\nexport const formatCalendarEndDateTime = (startDate, endDate) => {\n if (startDate && endDate) {\n const formatStartDate = new Date(startDate);\n const formatEndDate = new Date(endDate);\n\n const startDateHours = formatStartDate.getHours();\n const endDateHours = formatEndDate.getHours();\n const endDateMinutes = formatEndDate.getMinutes();\n\n formatStartDate.setHours(endDateHours);\n formatStartDate.setMinutes(endDateMinutes);\n\n if (endDateHours < startDateHours) {\n formatStartDate.setDate(formatStartDate.getDate() + 1);\n }\n\n return formatStartDate;\n }\n return new Date();\n};\n\nexport const convertMsToTime = (msDuration) => {\n const h = Math.floor(msDuration / 1000 / 60 / 60);\n const m = Math.floor((msDuration / 1000 / 60 / 60 - h) * 60);\n const s = Math.floor(((msDuration / 1000 / 60 / 60 - h) * 60 - m) * 60);\n\n return {\n hrs: h,\n mins: m,\n secs: s,\n };\n};\n\nexport const addHoursToDate = (date, hours) => {\n try {\n const result = new Date(date);\n result.setTime(result.getTime() + hours * 60 * 60 * 1000);\n return result;\n } catch {\n return date;\n }\n};\n\nexport const isInActiveDatetimeWindow = (windowStart, windowEnd) => {\n const currentMS = Date.now();\n const startMS = new Date(windowStart);\n const endMS = new Date(windowEnd).time;\n\n return isAfter(currentMS, startMS) && isBefore(currentMS, endMS);\n};\n\nexport const isDateInPast = (date) => {\n try {\n return isPast(new Date(date));\n } catch {\n return null;\n }\n};\n\nexport const computeLiveSessionHourDuration = (startDate, endDate) => {\n const start = new Date(startDate);\n const end = new Date(endDate);\n return (\n Math.round(((end.getTime() - start.getTime()) / (1000 * 60 * 60)) * 2) / 2\n );\n};\n","export const setUserData = (user) => ({\n type: 'SET_USER_DATA',\n user,\n});\n\nexport const setUserToken = (token) => ({\n type: 'SET_USER_TOKEN',\n token: token,\n});\n\nexport const setUser = (user) => {\n return (dispatch) => {\n dispatch(setUserData(user));\n };\n};\n\nexport const setToken = (token) => {\n return (dispatch) => {\n dispatch(setUserToken(token));\n };\n};\n\nexport const actionSetUserProfile = (user) => ({\n type: 'SET_USER_PROFILE',\n user,\n});\n","import { ToastContainer, showToast } from './ToastContainer';\nexport { ToastContainer, showToast };\n","import { formatDate, getNextBillingDateFromDate } from '../utils/dateUtils';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { cancelSubscription } from '../apiServices/cancelSubscriptionService';\nimport { getCommunityData } from '../apiServices';\nimport { storageUtils } from '../../PortalModeWrapper/utils';\nimport { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\nconst PENDING_STATUS = 'Pending';\n\nconst useCommunitiesData = (communityId) => {\n const [data, setData] = useState({});\n const [loading, setLoading] = useState(true);\n const user = useSelector((state) => state.auth.user);\n const userEmail = useMemo(() => user?.email, [user]);\n const paramActiveCommunityId = useMemo(() => {\n const activePagePaths = window.location.pathname.split('/');\n const [root, community_portal, activeCommunityId, route] = activePagePaths;\n return activeCommunityId;\n }, [window.location.pathname]);\n const communityCode = useMemo(\n () => data?.communities?.find((c) => c.id === communityId)?.code,\n [communityId, data?.communities]\n );\n const { t } = useTranslation();\n\n const doesCommunityIdExist = useMemo(() => {\n if (data) {\n // If the data exists\n if (communityCode) {\n return true;\n } else {\n return false;\n }\n }\n return false;\n }, [communityCode, data]);\n\n const getDiscountTagText = ({ intervalCount, value, trialDays }) => {\n // Ensure backward compatibility by making all that does not have a intervalAccount = forever/EY\n if (trialDays) {\n if (trialDays === 30) {\n return t('1-month-free-trial');\n } else {\n return t('trialdays-days-free-trial', { trialDays });\n }\n } else {\n if (intervalCount) {\n if (intervalCount === 0) {\n return t('value-forever', { percentage: value });\n } else {\n return t('percentage-discount-tag', {\n percentage: value,\n intervalCount: intervalCount === 12 ? '1' : intervalCount,\n interval:\n intervalCount === 12\n ? t('year')\n : intervalCount > 1\n ? t('months')\n : t('month'),\n });\n }\n } else {\n return t('value-forever', { percentage: value });\n }\n }\n };\n\n const fetchAndSetData = useCallback(async () => {\n if (!userEmail) return;\n\n setLoading(true);\n\n const currentActiveCommunity =\n paramActiveCommunityId || storageUtils.readActiveCommunity() || data?._id;\n const { communities, activeCommunity } = await getCommunityData(\n currentActiveCommunity\n );\n\n if (activeCommunity) {\n storageUtils.storeActiveCommunity(activeCommunity?._id);\n }\n const formattedCommunities = communities\n ?.filter((item) => {\n const subscription = item?.subscriptions?.find(\n (f) => userEmail === f.email\n );\n\n //if the subscription is available, we need to make sure the status is not pending\n //`Pending` means that user has not paid yet or the application is still pending\n if (subscription) {\n return subscription.status !== PENDING_STATUS;\n }\n\n //if the subscription is not available, that community has to be a free one\n return item.isFreeCommunity;\n })\n .map((item) => {\n const subscription = item?.subscriptions?.find(\n (f) => userEmail === f.email\n );\n\n const {\n stripeCurrency,\n xenditCurrency,\n xenditPrice,\n stripePrice,\n intervalCount,\n interval,\n amount,\n } = subscription ?? {};\n\n const isManualEnrolment =\n item.isPaidCommunity &&\n !stripePrice &&\n !stripeCurrency &&\n !xenditPrice &&\n !xenditCurrency;\n const isManager =\n item?.membersWithRoles?.[0]?.role.some((f) => f === 'manager') ??\n false;\n const isFreeTrial =\n subscription?.discountdetails?.promoDetails?.trialDays > 0;\n const isIntervalDiscount =\n subscription?.discountdetails?.promoDetails?.intervalCount;\n const discount = subscription?.discountdetails?.promoDetails?.value;\n\n const price = (stripePrice ? stripePrice : xenditPrice) / 100 || 0;\n const paidPrice = isFreeTrial\n ? price\n : isIntervalDiscount\n ? price\n : discount\n ? (price - (price * discount) / 100).toFixed(2)\n : price;\n\n return {\n code: item?.code,\n name: item?.title,\n By: item?.By,\n img: item?.thumbnailImgData,\n isFreeTrial,\n isIntervalDiscount,\n discountTagText: discount\n ? getDiscountTagText(\n subscription?.discountdetails?.promoDetails ?? {}\n )\n : '',\n isFreeCommunity: item.isFreeCommunity ? true : false,\n isPaidCommunity: item.isPaidCommunity ? true : false,\n isTokenGated: item?.isTokenGated ?? false,\n isManualEnrolment: isManualEnrolment ?? false,\n nextBillingDate: subscription?.nextBillingDate\n ? formatDate(subscription.nextBillingDate)\n : getNextBillingDateFromDate(\n subscription?.applicationReviewDate,\n subscription?.status,\n subscription?.cancelledAt\n ),\n status: subscription?.status,\n pricePerMonthString: `${\n stripeCurrency ? stripeCurrency : xenditCurrency ?? 'USD'\n } ${paidPrice}/${(intervalCount ?? 1) > 1 ? intervalCount : ''}${\n interval ?? 'month'\n }`,\n id: item?._id,\n discountedCommunity: {\n couponName: subscription?.discountdetails?.promoDetails?.code,\n couponValue: subscription?.discountdetails?.promoDetails?.value,\n },\n isDiscountedPricing: subscription?.discountdetails?.promoDetails\n ?.value\n ? true\n : false,\n isSubscriptionFree: (amount ?? 0) === 0 ? true : false,\n isSubscriptionPaid: amount > 0 ? true : false,\n subscription: item?.subscriptions?.[0] ?? {},\n isMember: true,\n isManager,\n communityEventsPurchased: item?.communityEventsPurchased ?? {},\n communityFoldersPurchased: item?.communityFoldersPurchased ?? {},\n subscriptionObjectId: subscription?._id,\n stripeSubscriptionId: subscription?.stripeSubscriptionId,\n membersWithRoles: item?.membersWithRoles,\n };\n });\n setData({ communities: formattedCommunities, activeCommunity });\n setLoading(false);\n }, [data?._id, paramActiveCommunityId, userEmail]);\n\n const onCancelSubscriptionClick = useCallback(\n async (cancellationReason) => {\n const community = data?.communities?.find((f) => f.code === communityId);\n setLoading(true);\n const response = await cancelSubscription(\n community?.stripeSubscriptionId,\n cancellationReason\n );\n setLoading(false);\n await fetchAndSetData();\n },\n [communityId, data?.communities, fetchAndSetData]\n );\n\n useEffect(() => {\n fetchAndSetData();\n // dont want it fetched twice\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data?._id, paramActiveCommunityId, userEmail]);\n\n return {\n doesCommunityIdExist,\n communities: data.communities,\n activeCommunityData: data.activeCommunity,\n loading,\n onCancelSubscriptionClick,\n getCommunitiesData: fetchAndSetData,\n };\n};\n\nexport default useCommunitiesData;\n","import {\n folderClickLogOnLibraryPage,\n getLibraryFoldersData,\n getLibrarySingleFolderData,\n} from '../apiServices/libraryService';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nconst useLibraryData = (communityId, folderId) => {\n const { t } = useTranslation();\n const SORT_STATE_NEWEST = t('newest');\n const SORT_STATE_OLDEST = t('oldest');\n const SORT_STATE_DEFAULT = t('default');\n\n const [loading, setLoading] = useState(false);\n const [dataForLibrary, setDataForLibrary] = useState([]);\n const [selectedFolderData, setSelectedFolderData] = useState(null);\n const [sortState, setSortState] = useState(SORT_STATE_DEFAULT);\n\n const getSortedData = (data) => {\n const sortedData = data?.sort((a, b) => {\n return new Date(a?.createdAt) - new Date(b?.createdAt);\n });\n return sortedData;\n };\n\n const selectSortState = (selectedState) => {\n setSortState(selectedState);\n let sortedData = [];\n if (selectedState === SORT_STATE_OLDEST) {\n sortedData = getSortedData(dataForLibrary);\n } else if (selectedState === SORT_STATE_NEWEST) {\n sortedData = getSortedData(dataForLibrary).reverse();\n } else {\n dataForLibrary.sort((a, b) => a.index - b.index);\n sortedData = dataForLibrary;\n }\n setDataForLibrary(sortedData);\n };\n\n const fetchAndSetAllDataForLibrary = useCallback(async () => {\n if (communityId) {\n setLoading(true);\n const data = await getLibraryFoldersData(communityId);\n\n let foldersData = data?.data;\n // remove all isDraft folder\n foldersData =\n foldersData?.filter((item) => {\n return !item?.isDraft;\n }) ?? [];\n // sort default on fetching\n foldersData.sort((a, b) => a.index - b.index);\n setDataForLibrary(foldersData);\n setLoading(false);\n }\n }, [communityId]);\n\n const fetchAndSetSelectedFolderData = async (selectedFolderId) => {\n setLoading(true);\n const libraryDataForSingleFolder = await getLibrarySingleFolderData(\n communityId,\n selectedFolderId\n );\n // :TODO: add click tracking endpoints\n await folderClickLogOnLibraryPage(selectedFolderId);\n setSelectedFolderData(libraryDataForSingleFolder?.data);\n setLoading(false);\n };\n\n useEffect(() => {\n fetchAndSetAllDataForLibrary();\n }, [communityId]);\n\n useEffect(() => {\n if (folderId && communityId) {\n fetchAndSetSelectedFolderData(folderId);\n }\n }, [folderId, communityId]);\n\n return {\n loading,\n dataForLibrary,\n setSortState,\n selectSortState,\n sortState,\n selectedFolderData,\n };\n};\n\nexport default useLibraryData;\n","import { useEffect, useRef } from 'react';\n\nconst usePrevious = (value) => {\n const valueRef = useRef();\n\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n return valueRef.current;\n};\n\nexport default usePrevious;\n","import {\n PAST_EVENTS_ENDPOINT,\n UPCOMING_EVENTS_ENDPOINT,\n} from '../apiServices/constants';\nimport {\n PAST_EVENTS_TAB,\n UPCOMING_EVENTS_TAB,\n} from '../pages/LiveSessionsPage/constants';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { getEventsData, postEventRegistration } from '../apiServices';\nimport usePrevious from './usePrevious';\nimport { cancelEventAttendanceService } from '../apiServices/eventsService';\nimport {\n showErrorToast,\n showToast,\n} from '../components/ToastContainer/ToastContainer';\nimport { useTranslation } from 'react-i18next';\n\nconst DEFAULT_PAGE_NUMBER = 1;\nconst DEFAULTPAGE_SIZE = 10;\n\n// TODO: refactor the hook\nconst useCommunityEventsData = (communityId) => {\n const { t } = useTranslation();\n const [pastEventList, setPastEventList] = useState([]);\n const [pastEventListMetadata, setPastEventListMetadata] = useState([]);\n const [isPastEventsLoading, setIsPastEventsLoading] = useState(false);\n const [pastEventPageNumber, setPastEventPageNumber] = useState(0);\n\n const [upcomingEventList, setUpcomingEventList] = useState([]);\n const [upcomingEventListMetadata, setUpcomingEventListMetadata] = useState(\n []\n );\n const [isUpcomingEventsLoading, setIsUpcomingEventsLoading] = useState(false);\n const [upcomingPageNumber, setUpcomingPageNumber] = useState(0);\n\n const isLoading = isPastEventsLoading || isUpcomingEventsLoading;\n\n const eventsData = useMemo(\n () => ({\n [UPCOMING_EVENTS_TAB]: upcomingEventList,\n [PAST_EVENTS_TAB]: pastEventList,\n }),\n [pastEventList, upcomingEventList]\n );\n\n const prevPastPageNumber = usePrevious(pastEventPageNumber);\n const prevUpcomingPageNumber = usePrevious(upcomingPageNumber);\n\n const registerForEvent = useCallback(\n async (eventId) => {\n const response = await postEventRegistration(eventId);\n\n // if success, update registered field\n if (response.status === 200) {\n setUpcomingEventList((prevEvents) => {\n const eventToUpdateIdx = prevEvents.findIndex(\n ({ _id }) => _id === eventId\n );\n if (eventToUpdateIdx === -1) return prevEvents;\n\n // get event to update\n let eventToUpdate = JSON.parse(\n JSON.stringify(prevEvents[eventToUpdateIdx])\n );\n\n // modify event status\n eventToUpdate = {\n ...eventToUpdate,\n registered: true,\n eventAttendee: {\n _id: response?.data?._id,\n status: response?.data?.status, // 'GOING'\n },\n };\n\n // replace old event data with modified event data\n let updatedEvents = [...prevEvents];\n updatedEvents[eventToUpdateIdx] = eventToUpdate;\n\n return updatedEvents;\n });\n\n showToast({ text: t('registration-successful') });\n }\n },\n [t]\n );\n\n const cancelEventRegistration = useCallback(\n async (event) => {\n const eventId = event?._id;\n const attendeeId = event?.eventAttendee?._id;\n\n const { error } = await cancelEventAttendanceService({\n communityId,\n eventId,\n userId: attendeeId,\n });\n\n if (error) {\n showErrorToast(error);\n return;\n }\n\n setUpcomingEventList((prevEvents) => {\n const eventToUpdateIdx = prevEvents.findIndex(\n ({ _id }) => _id === eventId\n );\n if (eventToUpdateIdx === -1) return prevEvents;\n\n // get event to update\n let eventToUpdate = JSON.parse(\n JSON.stringify(prevEvents[eventToUpdateIdx])\n );\n\n // modify event status\n eventToUpdate = {\n ...eventToUpdate,\n registered: false,\n eventAttendee: {\n ...eventToUpdate.eventAttendee,\n status: 'NOT_GOING',\n },\n };\n\n // replace old event data with modified event data\n let updatedEvents = [...prevEvents];\n updatedEvents[eventToUpdateIdx] = eventToUpdate;\n\n return updatedEvents;\n });\n showToast({ text: t('your-attendance-is-cancelled') });\n },\n [communityId, t]\n );\n\n const fetchPastEvents = useCallback(async () => {\n if (!pastEventPageNumber) return;\n\n try {\n setIsPastEventsLoading(true);\n const { data, error } = await getEventsData(\n communityId,\n PAST_EVENTS_ENDPOINT,\n {\n pageNum: pastEventPageNumber,\n pageSize: DEFAULTPAGE_SIZE,\n paginate: 1,\n }\n );\n\n if (error) throw new Error(error);\n\n const { data: pastEventsList, metadata } = data;\n\n if (pastEventPageNumber === prevPastPageNumber)\n setPastEventList(pastEventsList);\n else\n setPastEventList((prev) => {\n return [...prev, ...pastEventsList];\n });\n\n setPastEventListMetadata(metadata);\n } catch (error) {\n console.error(error);\n } finally {\n setIsPastEventsLoading(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [communityId, pastEventPageNumber]);\n\n const fetchUpcomingEvents = useCallback(async () => {\n if (!upcomingPageNumber) return;\n\n try {\n setIsUpcomingEventsLoading(true);\n const { data, error } = await getEventsData(\n communityId,\n UPCOMING_EVENTS_ENDPOINT,\n {\n pageNum: upcomingPageNumber,\n pageSize: DEFAULTPAGE_SIZE,\n paginate: 1,\n }\n );\n\n if (error) throw new Error(error);\n\n const { data: upcomingEventsList, metadata } = data;\n\n if (upcomingPageNumber === prevUpcomingPageNumber)\n setUpcomingEventList(upcomingEventsList);\n else\n setUpcomingEventList((prev) => {\n return [...prev, ...upcomingEventsList];\n });\n\n setUpcomingEventListMetadata(metadata);\n } catch (error) {\n console.error(error);\n } finally {\n setIsUpcomingEventsLoading(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [communityId, upcomingPageNumber]);\n\n const fetchMoreUpcomingEvents = useCallback(() => {\n if (upcomingEventListMetadata?.next)\n setUpcomingPageNumber((prev) => prev + 1);\n }, [upcomingEventListMetadata?.next]);\n\n const fetchMorePastEvents = useCallback(() => {\n if (pastEventListMetadata?.next) setPastEventPageNumber((prev) => prev + 1);\n }, [pastEventListMetadata?.next]);\n\n useEffect(() => {\n fetchPastEvents();\n }, [fetchPastEvents]);\n\n useEffect(() => {\n if (communityId) {\n setPastEventPageNumber(DEFAULT_PAGE_NUMBER);\n }\n }, [communityId]);\n\n useEffect(() => {\n fetchUpcomingEvents();\n }, [fetchUpcomingEvents]);\n\n useEffect(() => {\n if (communityId) {\n setUpcomingPageNumber(DEFAULT_PAGE_NUMBER);\n }\n }, [communityId]);\n\n return {\n loading: isLoading,\n data: eventsData,\n fetchMorePastEvents,\n fetchMoreUpcomingEvents,\n registerForEvent,\n cancelEventRegistration,\n };\n};\n\nexport default useCommunityEventsData;\n","import { useEffect } from 'react';\n\n/**\n * Hook that alerts clicks outside of the passed ref\n */\nconst useOutsideComponentClickDetect = (ref, cb) => {\n useEffect(() => {\n /**\n * Alert if clicked on outside of element\n */\n const handleClickOutside = (event) => {\n if (ref.current && !ref.current.contains(event.target)) {\n cb(event);\n }\n };\n // Bind the event listener\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [cb, ref]);\n};\n\nexport default useOutsideComponentClickDetect;\n","import { useCallback, useEffect, useState } from 'react';\n\nimport { getMembersData } from '../apiServices';\nimport { membershipsParamsMapping } from '../pages/MembersPage/constants';\nimport { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nconst PAGE_SIZE = 10;\nconst useMembersData = (communityId, activeTag, communityCode) => {\n const { user } = useSelector((state) => state.auth);\n const [data, setData] = useState([]);\n const [pageNumber, setPageNumber] = useState(1);\n const [hasMore, setHasMore] = useState(true);\n const [loading, setLoading] = useState(false);\n const [totalMembers, setTotalMembers] = useState(null);\n const setNextPage = () => {\n setPageNumber((prev) => prev + 1);\n };\n\n const getFilterAndSortQueries = useCallback(\n () => membershipsParamsMapping[activeTag],\n [activeTag]\n );\n\n const isValidCommunityMembers = useMemo(\n () =>\n data?.every((f) =>\n f?.subscriptions?.some((x) => x?.communityCode === communityCode)\n ),\n [data, communityCode]\n );\n\n const fetchAndSetData = useCallback(async () => {\n if (!communityId) {\n // Don't process if no community ID\n return;\n }\n setLoading(true);\n if (hasMore) {\n const responseData = await getMembersData({\n communityId,\n pageNum: pageNumber,\n paginate: 1,\n pageSize: PAGE_SIZE,\n ...getFilterAndSortQueries(),\n countryId: user?.learner?.countryId,\n });\n let formattedData = [];\n if (responseData?.error) {\n console.warn('Error: ', responseData.error);\n return;\n }\n if (!responseData.error && responseData?.data) {\n formattedData = responseData?.data;\n const { data: pageData, metadata } = formattedData;\n\n if (!metadata?.next) {\n setHasMore(false);\n }\n\n setData((prev) => [...prev, ...pageData]);\n setTotalMembers(metadata?.total);\n }\n setLoading(false);\n }\n }, [\n communityId,\n getFilterAndSortQueries,\n hasMore,\n pageNumber,\n user?.learner?.countryId,\n ]);\n\n useEffect(() => {\n if (!isValidCommunityMembers) {\n setData([]);\n setPageNumber(1);\n setHasMore(true);\n }\n }, [isValidCommunityMembers]);\n\n // In case of change of community Id or active tag, reset the page data and number\n useEffect(() => {\n setData([]);\n setPageNumber(1);\n setHasMore(true);\n }, [communityId, activeTag]);\n\n useEffect(() => {\n fetchAndSetData();\n }, [fetchAndSetData]);\n\n return { data, loading, pageNumber, setNextPage, hasMore, totalMembers };\n};\n\nexport default useMembersData;\n","import useOutsideComponentClickDetect from './useOutsideComponentClickDetect';\nimport { useRef } from 'react';\n\nconst { useState } = require('react');\nconst { useEffect } = require('react');\nconst { getLibrarySearchData } = require('../apiServices/libraryService');\n\nconst useSearchDataLibrary = (communityObjectId) => {\n const [search, setSearch] = useState('');\n const searchDropDownRef = useRef();\n const [searchData, setData] = useState([]);\n const [searchLoading, setSearchLoading] = useState(false);\n const [error, setError] = useState(null);\n const [showSearchDropDown, setShowSearchDropDown] = useState(false);\n useOutsideComponentClickDetect(searchDropDownRef, () =>\n setShowSearchDropDown(false)\n );\n\n const onSearchBoxFocus = () => {\n if (search !== '' && showSearchDropDown === false) {\n setShowSearchDropDown(true);\n }\n };\n useEffect(() => {\n if (search !== '') {\n setShowSearchDropDown(true);\n }\n if (search === '') {\n setShowSearchDropDown(false);\n }\n const fetchData = async () => {\n if (!communityObjectId) {\n // Don't process if no community ID\n return;\n }\n setSearchLoading(true);\n\n try {\n const response = await getLibrarySearchData(communityObjectId, search);\n setData(response.data);\n } catch (error) {\n setError(error);\n }\n setSearchLoading(false);\n };\n if (search !== '') {\n fetchData();\n }\n }, [communityObjectId, search]);\n\n return {\n searchData,\n searchLoading,\n error,\n showSearchDropDown,\n search,\n setSearch,\n searchDropDownRef,\n onSearchBoxFocus,\n setShowSearchDropDown,\n };\n};\n\nexport default useSearchDataLibrary;\n","import {\n adminCommunityURL,\n communitiesURL,\n lastInteractedCommunityURL,\n sharedRequestOptions,\n} from './constants';\n\nimport { getAxiosError } from '../../services/helper';\nimport protectedAxiosRequest from '../../services/helper/protectedAxiosRequest';\n\nexport const getCommunityData = async (communityId = '') => {\n try {\n const response = await protectedAxiosRequest.get(\n communitiesURL(communityId),\n sharedRequestOptions\n );\n\n return {\n communities: response?.data?.communities,\n activeCommunity: response?.data?.activeCommunity?.[0],\n };\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const getLastInteractedCommunity = async () => {\n try {\n const response = await protectedAxiosRequest.get(\n lastInteractedCommunityURL(),\n sharedRequestOptions\n );\n return response;\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const getAdminCommunityData = async () => {\n try {\n const response = await protectedAxiosRequest.get(adminCommunityURL);\n return response?.data;\n } catch (error) {\n return getAxiosError(error);\n }\n};\n","import { membersURL, sharedRequestOptions } from './constants';\n\nimport { getAxiosError } from '../../services/helper';\nimport protectedAxiosRequest from '../../services/helper/protectedAxiosRequest';\n\nexport const getMembersData = async ({\n communityId,\n pageSize,\n sort,\n filter,\n countryId,\n paginate = 1,\n pageNum,\n}) => {\n try {\n if (!pageNum) pageNum = 1;\n if (!pageSize) pageSize = 10;\n const params = { pageNum, pageSize, sort, filter, countryId, paginate };\n if (!sort) delete params.sort;\n if (!filter) delete params.filter;\n\n return await protectedAxiosRequest.get(membersURL(communityId), {\n ...sharedRequestOptions,\n params,\n });\n } catch (error) {\n return getAxiosError(error);\n }\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"ErrorPage_Container__2Z6FL\",\"Yellow\":\"ErrorPage_Yellow__31iae\",\"Bold\":\"ErrorPage_Bold__1KO31\",\"ErrorType\":\"ErrorPage_ErrorType__22l3E\",\"PageNotFound\":\"ErrorPage_PageNotFound__199AS\",\"Description\":\"ErrorPage_Description__29XIu\",\"Button\":\"ErrorPage_Button__3T75q\"};","import { getAxiosError } from '../../services/helper';\nimport protectedAxiosRequest from '../../services/helper/protectedAxiosRequest';\nimport {\n libraryFolderClickedURL,\n libraryFolderGeneralURL,\n libraryFolderURL,\n librarySearchURL,\n librarySingleFolderURL,\n libraryURL,\n sharedRequestOptions,\n} from './constants';\n\nexport const getLibraryData = async (communityId, dataType) => {\n try {\n return await protectedAxiosRequest.get(\n libraryURL(communityId, dataType),\n sharedRequestOptions\n );\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const getLibraryFoldersData = async (communityId, folderType) => {\n try {\n return await protectedAxiosRequest.get(\n libraryFolderGeneralURL(communityId, folderType),\n sharedRequestOptions\n );\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const getLibrarySingleFolderData = async (communityId, folderId) => {\n try {\n return await protectedAxiosRequest.get(\n librarySingleFolderURL(communityId, folderId),\n sharedRequestOptions\n );\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const getLibrarySearchData = async (communityId, search) => {\n try {\n return await protectedAxiosRequest.get(\n librarySearchURL(communityId, search),\n sharedRequestOptions\n );\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const folderClickLogOnLibraryPage = async (communityFolderObjId) => {\n try {\n return await protectedAxiosRequest.post(\n libraryFolderClickedURL(communityFolderObjId)\n );\n } catch (error) {\n return getAxiosError(error);\n }\n};\n","import PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst buttonType = {\n primary: 'primary',\n secondary: 'secondary',\n disabled: 'disabled',\n outline: 'outline',\n neutral: 'neutral',\n 'static-primary': 'static-primary',\n danger: 'danger',\n custom: 'custom',\n plain: 'plain',\n};\n\nconst buttonSize = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n};\n\nconst RoundedButton = ({\n displayType,\n size,\n children,\n disabled,\n customClassNames,\n isLoading,\n ...btnProps\n}) => {\n const getDisplayTypeClassnames = ({ type }) => {\n switch (type) {\n case buttonType.primary:\n return 'bg-npl-yellow-light-9 hover:bg-npl-yellow-light-10 active:bg-npl-yellow-light-10 text-npl-text-icon-on-light-surface-primary';\n case buttonType.secondary:\n return 'bg-none';\n case buttonType.disabled:\n return 'bg-npl-neutral-light-5 text-neutral-70 cursor cursor-not-allowed';\n case buttonType.outline:\n return 'bg-none border-1 border-neutral-70 hover:bg-button-outline-hover';\n case buttonType.neutral:\n return 'bg-neutral-10 text-npl-text-icon-on-dark-primary hover:bg-neutral-40 active:bg-neutral-50';\n case buttonType.danger:\n return 'bg-npl-error-light-9 text-npl-text-icon-on-dark-primary';\n case buttonType['static-primary']:\n return 'bg-npl-neutral-dark-3 text-npl-text-icon-on-dark-primary';\n case buttonType.plain:\n return 'text-npl-text-icon-on-light-surface-primary hover:bg-npl-neutral-light-3 active:bg-npl-neutral-light-5';\n default:\n return 'bg-primary';\n }\n };\n\n const getSizeClassnames = ({ size }) => {\n switch (size) {\n case buttonSize.sm:\n return 'h-32 text-button-md font-medium px-16';\n case buttonSize.md:\n return 'h-[44px] text-button-md font-medium px-24';\n case buttonSize.lg:\n return 'h-[56px] text-18 font-medium px-24';\n default:\n return 'h-[44px] text-16 font-medium px-24';\n }\n };\n\n const allClassNames = classNames(\n 'font-poppins rounded-full flex space-x-8 items-center cursor-pointer text-neutral-10 duration-150',\n getDisplayTypeClassnames({\n type: disabled ? buttonType.disabled : displayType,\n }),\n getSizeClassnames({ size }),\n customClassNames\n );\n\n return (\n \n {isLoading && (\n
\n )}\n {children}\n \n );\n};\n\nRoundedButton.defaultProps = {\n displayType: buttonType.secondary,\n size: buttonSize.md,\n isLoading: false,\n};\n\nRoundedButton.propTypes = {\n displayType: PropTypes.oneOf(Object.values(buttonType)),\n size: PropTypes.oneOf(Object.values(buttonSize)),\n disabled: PropTypes.bool,\n customClassNames: PropTypes.string,\n isLoading: PropTypes.bool,\n};\n\nexport default RoundedButton;\n","import Axios from 'axios';\nimport { MAX_FILE_SIZE } from '../utility/profileValidation';\nimport keys from '../config/keys';\nimport protectedAxiosRequest from './helper/protectedAxiosRequest';\n\nconst setUpdateUserProfileReqOptions = (\n token,\n contentType = 'application/json'\n) => ({\n headers: {\n 'Content-Type': contentType,\n Authorization: token,\n accept: '*/*',\n },\n maxContentLength: MAX_FILE_SIZE,\n maxBodyLength: MAX_FILE_SIZE,\n});\n\nconst formatAsFormData = (data) => {\n const formData = new FormData();\n\n for (let key in data) {\n formData.append(key, data[key]);\n }\n\n return formData;\n};\n\nexport const updateUserProfile = (payload, token) =>\n Axios.put(\n `${keys.baseURL}/api/v1/update-profile`,\n payload,\n setUpdateUserProfileReqOptions(token)\n );\n\nexport const updateUserProfileV2 = async (payload) => {\n try {\n const path = `${keys.baseURL}/api/v1/update-profile`;\n\n const res = await protectedAxiosRequest.put(path, payload);\n return { data: res.data, error: false };\n } catch (e) {\n return {\n error: e?.response?.data?.info ?? 'Something went wrong!',\n };\n }\n};\n\nexport const removeContentItemAndUpdateUserProfile = (\n contentType,\n contentId,\n token\n) =>\n Axios.patch(\n `${keys.baseURL}/api/v1/user-profile/contents/${contentType}`,\n { contentId },\n setUpdateUserProfileReqOptions(token)\n );\n\nexport const addContentItemAndUpdateUserProfile = (\n payload,\n contentType,\n token\n) =>\n Axios.post(\n `${keys.baseURL}/api/v1/user-profile/contents/${contentType}`,\n formatAsFormData(payload),\n setUpdateUserProfileReqOptions(token, 'multipart/form-data')\n );\n\nexport const editContentItemAndUpdateUserProfile = (\n payload,\n contentType,\n token\n) => {\n const withPhoto = payload.photo !== undefined ? 'true' : 'false';\n return Axios.put(\n `${keys.baseURL}/api/v1/user-profile/contents/${contentType}?withPhoto=${withPhoto}`,\n formatAsFormData(payload),\n setUpdateUserProfileReqOptions(token, 'multipart/form-data')\n );\n};\n\nexport const getProfileByRoleType = (token) =>\n protectedAxiosRequest.get(`${keys.baseURL}/api/v1/user-profile/contents`);\n\nexport const uploadPhoto = async (data, config) =>\n protectedAxiosRequest.post(\n `${keys.baseURL}/api/v1/photo-upload/`,\n data,\n config\n );\n\nexport const updateUserPhoneConfirmation = () =>\n protectedAxiosRequest.put(`${keys.baseURL}/api/v1/confirm-phoneNumber`);\n","/**\n * Sample queryString = '&coupon=ABC&email=abc@gmail.com\n * Sample Response : {\n * coupon: 'ABC',\n * email: 'abc@gmail.com'\n * }\n */\nexport const convertQueryStringToJson = (queryString) => {\n if (!queryString) return {};\n const pairs = queryString.slice(1).split('&');\n\n const responseJson = pairs.reduce((acc, pair) => {\n const keyValPair = pair.split('=');\n const key = keyValPair[0];\n const val = decodeURIComponent(keyValPair[1] || '');\n acc[key] = val;\n\n return acc;\n }, {});\n\n return responseJson;\n};\n\nexport const getPrimaryDomain = () => {\n //server-side rendering does not have window object\n if (typeof window === 'undefined') {\n return '';\n }\n\n const parts = window.location.hostname.split('.');\n let primaryDomain = parts.slice(-2).join('.');\n\n //the preview links are dynamic, so we cannot apply any specific domain to cookies\n if (primaryDomain === 'vercel.app') {\n primaryDomain = '';\n }\n\n return primaryDomain;\n};\n","class TimeFormatter {\n static setTime(date, hour, min, sec = 0) {\n return new Date(\n new Date(new Date(date.setHours(hour)).setMinutes(min)).setSeconds(0)\n );\n }\n\n static presentStandardDateTime(date) {\n date = new Date(date);\n const hours = date.getHours();\n const mins = date.getMinutes();\n const time =\n (hours > 12 ? hours - 12 : hours) +\n ':' +\n (mins > 10 ? mins : '0' + mins) +\n (hours > 11 ? ' PM' : ' AM');\n const month_list = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n const week_date_list = ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'];\n return (\n date.getDate() +\n ' ' +\n month_list[date.getMonth()] +\n ' ' +\n date.getFullYear() +\n ' (' +\n week_date_list[date.getDay()] +\n '), ' +\n time\n );\n }\n\n static convertTime12To24 = (time12h, hourMinuteSeparator, amPmSeparator) => {\n let time, modifier, hours, minutes;\n\n // IF format is 1.03AM\n let trimmedTime12h = time12h.trim().toUpperCase();\n if (!amPmSeparator && trimmedTime12h.match(/AM|PM/)) {\n let index = trimmedTime12h.match(/AM|PM/).index;\n time = trimmedTime12h.slice(0, index);\n modifier = trimmedTime12h.slice(index);\n } else {\n // IF format is 1.03 PM\n [time, modifier] = trimmedTime12h.split(' ');\n }\n\n [hours, minutes] = time.split(hourMinuteSeparator);\n\n hours = hours.trim();\n minutes = minutes.trim();\n if (hours === '12') {\n hours = '00';\n }\n\n if (modifier.toUpperCase() === 'PM') {\n hours = parseInt(hours, 10) + 12;\n }\n\n return `${hours}:${minutes}`;\n };\n\n static getFullDateISOString = (date, time) => {\n let time24Hour;\n try {\n try {\n time24Hour = this.convertTime12To24(time, ':');\n } catch {\n try {\n time24Hour = this.convertTime12To24(time, '.');\n } catch {}\n }\n } catch {}\n let [hour, min] = time24Hour.split(':');\n let dateCopy = new Date(date);\n dateCopy.setUTCHours(parseInt(hour));\n dateCopy.setUTCMinutes(parseInt(min));\n return dateCopy.toISOString(); // to get it in YYYY-MM-DDTHH:mm:ss.sssZ format\n };\n\n static getFullDateStartEndISOString = (date, timeFromToEnd) => {\n // timeFromToEnd will be something like 1.30pm - 3.30pm\n // date is purely date such as 2020-08-20T00:00:00Z without the time\n\n // split the start time and end time\n let [startTime, endTime] = timeFromToEnd.split('-');\n startTime = startTime.trim();\n endTime = endTime.trim();\n\n let startFullDate = this.getFullDateISOString(date, startTime);\n let endFullDate = this.getFullDateISOString(date, endTime);\n return {\n start: startFullDate,\n end: endFullDate,\n };\n };\n\n static getMonthName = (monthIndex) => {\n // monthIndex starts from 0 -- 0 = Jan, 11 = Dec\n const monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n\n return monthNames[monthIndex];\n };\n\n static getDayName = (dayIndex, short = false) => {\n var days = short\n ? ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat']\n : [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ];\n return days[dayIndex];\n };\n\n static formatAMPM = (date, cap = false) => {\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let ampm;\n if (cap) {\n ampm = hours >= 12 ? 'PM' : 'AM';\n } else {\n ampm = hours >= 12 ? 'pm' : 'am';\n }\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? '0' + minutes : minutes;\n const strTime = hours + ':' + minutes + ' ' + ampm;\n return strTime;\n };\n\n static formatDDMMYYYY = (date) => {\n return (\n date.getDate() +\n ' ' +\n TimeFormatter.getMonthName(date.getMonth()) +\n ' ' +\n date.getFullYear()\n );\n };\n\n /**\n *\n * @param {String} timing refers to the start time to end time in 24 hour format\n */\n static getTimeDiffFrom24HourFormat = (timing) => {\n // example 07:00 - 09:30\n // example 23:00 - 01:30\n // example 7:30 - 09:15\n\n let [startTime, endTime] = timing.split('-');\n let [startHour, startMin] = startTime.split(':');\n let [endHour, endMin] = endTime.split(':');\n\n startHour = parseInt(startHour);\n startMin = parseInt(startMin);\n\n endHour = parseInt(endHour);\n endMin = parseInt(endMin);\n\n let diffHour,\n diffMin = 0;\n if (startHour <= endHour) diffHour = endHour - startHour;\n else diffHour = endHour - startHour + 24;\n\n if (startMin <= endMin) diffMin = endMin - startMin;\n else {\n diffMin = endMin - startMin + 60;\n diffHour = diffHour - 1;\n }\n\n return {\n diffHours: diffHour,\n diffMinutes: diffMin,\n };\n };\n\n static getFormattedDate = (date, short = false) => {\n let formattedDate = new Intl.DateTimeFormat('en-US', {\n month: short ? 'short' : 'long',\n day: 'numeric',\n }).format(new Date(date));\n\n return formattedDate;\n };\n\n static getFormattedTime = (date) => {\n let formattedDate = new Intl.DateTimeFormat('en-US', {\n hour: 'numeric',\n minute: 'numeric',\n }).format(new Date(date));\n\n return formattedDate;\n };\n\n static getFormattedDay = (date) => {\n let formattedDate = new Intl.DateTimeFormat('en-US', {\n weekday: 'short',\n }).format(new Date(date));\n\n return formattedDate;\n };\n\n static calculateCountdown(startDate, endDate) {\n let diff = (Date.parse(new Date(endDate)) - Date.parse(startDate)) / 1000;\n\n // clear countdown when date is reached\n if (diff <= 0) return false;\n\n const timeLeft = {\n years: 0,\n days: 0,\n hours: 0,\n min: 0,\n sec: 0,\n };\n\n // calculate time difference between now and expected date\n if (diff >= 365.25 * 86400) {\n // 365.25 * 24 * 60 * 60\n timeLeft.years = Math.floor(diff / (365.25 * 86400));\n diff -= timeLeft.years * 365.25 * 86400;\n }\n if (diff >= 86400) {\n // 24 * 60 * 60\n timeLeft.days = Math.floor(diff / 86400);\n diff -= timeLeft.days * 86400;\n }\n if (diff >= 3600) {\n // 60 * 60\n timeLeft.hours = Math.floor(diff / 3600);\n diff -= timeLeft.hours * 3600;\n }\n if (diff >= 60) {\n timeLeft.min = Math.floor(diff / 60);\n diff -= timeLeft.min * 60;\n }\n timeLeft.sec = diff;\n\n return timeLeft;\n }\n\n static getFormattedTimeFromSeconds = (seconds) => {\n // Hours, minutes and seconds\n var hrs = ~~(seconds / 3600);\n var mins = ~~((seconds % 3600) / 60);\n var secs = ~~seconds % 60;\n\n // Output like \"1:01\" or \"4:03:59\" or \"123:03:59\"\n var ret = '';\n\n if (hrs > 0) {\n ret += '' + hrs + ':' + (mins < 10 ? '0' : '');\n }\n\n ret += '' + mins + ':' + (secs < 10 ? '0' : '');\n ret += '' + secs;\n return ret;\n };\n\n static getFormattedTimeFromMs = (ms) => {\n const sec = ms ? ~~(ms / 1000) : 0; // ~~ = Bitwise operator for Math.floor. Is Faster.\n return TimeFormatter.getFormattedTimeFromSeconds(sec);\n };\n\n static getCommentTime = (date) => {\n var seconds = Math.floor((new Date() - date) / 1000);\n var numyears = Math.floor(seconds / 31536000);\n var nummonths = Math.floor((seconds % 31536000) / 2628000);\n var numweeks = Math.floor(((seconds % 31536000) % 2628000) / 604800);\n var numdays = Math.floor((seconds % 31536000) / 86400);\n var numhours = Math.floor(((seconds % 31536000) % 86400) / 3600);\n var numminutes = Math.floor((((seconds % 31536000) % 86400) % 3600) / 60);\n var numseconds = (((seconds % 31536000) % 86400) % 3600) % 60;\n return numyears > 0\n ? `${numyears}y`\n : nummonths > 0\n ? `${nummonths}mo`\n : numweeks > 0\n ? `${numweeks}w`\n : numdays > 0\n ? `${numdays}d`\n : numhours > 0\n ? `${numhours}h`\n : numminutes > 0\n ? `${numminutes}m`\n : 'Just now';\n };\n}\n\nexport default TimeFormatter;\n","export const UPCOMING_EVENTS_TAB = 'upcomingEvents';\nexport const PAST_EVENTS_TAB = 'pastEvents';\nexport const ONGOING_EVENTS_TAB = 'ongoing';\n\nexport const ZOOM_LABEL = (t) => t('on-zoom');\nexport const ZOOM_LINK = 'https://zoom.us/';\n\nexport const [EVENT_TYPE_LIVE, EVENT_TYPE_IN_PERSON] = ['live', 'inPerson'];\n\nexport const defaultHostProfileImage =\n 'https://d2oi1rqwb0pj00.cloudfront.net/nasIO/portal/png/placeholder-guest-profile-picture.png';\n","import TagManager from 'react-gtm-module';\nimport keys from '../config/keys';\nimport { getTimezoneId } from './dateHelper';\nimport localStorageService from './localStorageService';\n\nexport const initiateGTM = () => {\n const tagManagerArgs = {\n gtmId: keys?.gtmContainerId,\n };\n\n TagManager.initialize(tagManagerArgs);\n};\n\nexport const initializeTrackUserId = (id) => {\n window?.dataLayer?.push({ userId: id });\n};\n\nexport const clearTrackUserId = () => {\n window?.dataLayer?.push({ userId: null });\n};\n\nexport const getCommunityDataForAnalytics = (community) => {\n return {\n communityId: community?._id,\n communityCode: community?.code,\n communityTitle: community?.name,\n };\n};\n\nexport const getEventDataForAnalytics = (event) => {\n const isPaidEvent = event?.access === 'paid';\n return {\n eventId: event?._id,\n eventAmountCents: isPaidEvent ? event?.amount || 0 : 0,\n eventCurrency: isPaidEvent ? event?.currency || 'USD' : 'USD',\n };\n};\n\nexport const trackGeneralEvent = (actionId, payload = {}) => {\n const params = {\n actionId: actionId,\n email: getLoggedInUserEmail(),\n communityId: payload?.communityId,\n communityCode: payload?.communityCode,\n communityTitle: payload?.communityTitle,\n eventId: payload?.eventId,\n eventAmountCents: payload?.eventAmountCents,\n eventCurrency: payload?.eventCurrency,\n postId: payload?.postId,\n folderId: payload?.folderId,\n platform: payload?.platform,\n paymentMethod: payload?.paymentMethod,\n timestamp: new Date().getTime(),\n timezone: getTimezoneId(),\n userId: getLoggedInUserId(),\n ...payload,\n };\n\n window?.dataLayer?.push({\n event: 'general_event',\n params,\n });\n\n // console.group();\n // console.log('>> trackGeneralEvent func call > ', { actionId, payload });\n // console.log('>> trackGeneralEvent w/ param > ', { actionId, params });\n // console.log('>> trackGeneralEvent Datalayer > ', window?.dataLayer);\n // console.groupEnd();\n};\n\nconst getLoggedInUserEmail = () => {\n try {\n return JSON.parse(localStorageService.userData).email;\n } catch (e) {\n return '';\n }\n};\n\nconst getLoggedInUserId = () => {\n try {\n return JSON.parse(localStorageService.userData)._id;\n } catch (e) {\n return '';\n }\n};\n","import CloseIcon from './CloseIcon';\n\nexport default CloseIcon;\n","import React, { Children, useCallback } from 'react';\n\nimport Input from '../../../components/Form/Input';\nimport PropTypes from 'prop-types';\nimport SearchBoxDropdown from '../../../components/SearchBoxDropdown';\n\nconst Header = ({\n title,\n description,\n tabItems,\n CTA,\n body,\n selectedPathOfFile,\n contentOfSelectedContent,\n titleOfTheSelectedContent,\n marginForHeaderComponent,\n searchBar,\n searchData,\n showSearchDropDown,\n searchDropDownRef,\n searchInputProps,\n setShowSearchDropDown,\n showBorder = true,\n}) => {\n const className = 'c-CommunityPageHeader';\n\n const renderTabItems = useCallback(\n (items) =>\n Children.toArray(\n items.map(({ label, isActive, onClick }) => (\n \n {label}\n {isActive && (\n
\n )}\n \n ))\n ),\n []\n );\n\n const renderSearchBar = useCallback(() => {\n return (\n searchBar && (\n
\n \n {showSearchDropDown && (\n \n )}\n
\n )\n );\n }, [\n searchBar,\n searchData,\n searchDropDownRef,\n searchInputProps,\n setShowSearchDropDown,\n showSearchDropDown,\n ]);\n return (\n \n {/* file path */}\n {selectedPathOfFile && (\n \n selectedPathOfFile.onClick()}\n className=\"text-[#AAAAAA] text-label-lg whitespace-pre font-normal capitalize hover:cursor-pointer\"\n >\n {selectedPathOfFile.activeTab} >\n \n \n {titleOfTheSelectedContent}\n \n \n )}\n {contentOfSelectedContent && (\n
{contentOfSelectedContent()}
\n )}\n {/* Left Wrapper */}\n
\n {/* Title */}\n
\n

\n {title}\n

\n {/* Search bar */}\n {renderSearchBar()}\n
\n {/* Description */}\n {description && (\n

\n {description}\n

\n )}\n\n {/* Tabs */}\n {tabItems && (\n
    \n
    \n {renderTabItems(tabItems)}\n
    \n
\n )}\n
\n\n {/* Right Wrapper */}\n {CTA && (\n
\n {/*
*/}\n {/* PassedCta component */}\n \n
\n )}\n {body && (\n
\n {/*
*/}\n {/* body text */}\n

{body}

\n
\n )}\n \n );\n};\n\nconst TabItemPropTypes = PropTypes.shape({\n label: PropTypes.string.isRequired,\n isActive: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n});\n\nexport const HeaderPropTypes = {\n title: PropTypes.string.isRequired,\n description: PropTypes.string,\n tabItems: PropTypes.arrayOf(TabItemPropTypes),\n CTA: PropTypes.any,\n body: PropTypes.string,\n selectedPathOfFile: PropTypes.shape({\n activeTab: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n }),\n contentOfSelectedContent: PropTypes.func,\n titleOfTheSelectedContent: PropTypes.string,\n marginForHeaderComponent: PropTypes.number,\n searchBar: PropTypes.bool,\n searchData: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n })\n ),\n};\n\nHeader.propTypes = HeaderPropTypes;\n\nexport default Header;\n","import Header, { HeaderPropTypes } from './Header';\n\nexport { HeaderPropTypes };\nexport default Header;\n","import CloseIcon from '../Icons/CloseIcon';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport style from './Aside.module.scss';\nimport { useCallback } from 'react';\nimport { useWindowWidthContext } from '../../../contexts/WindowWidthContext';\n\nconst className = 'c-CommunityAside';\n\nconst Aside = ({ toRender, isHidden, onHide, showCloseIcon }) => {\n const { isGtEqMd } = useWindowWidthContext();\n\n const renderContent = useCallback(() => {\n return (\n \n \n {showCloseIcon && (\n \n \n \n )}\n {toRender && toRender()}\n \n \n );\n }, [isHidden, onHide, showCloseIcon, toRender]);\n\n if (!isGtEqMd) {\n // For Mobile phones\n const modalEl = document.getElementById('modal');\n return createPortal(\n \n {renderContent()}\n ,\n modalEl\n );\n }\n\n return renderContent();\n};\n\nAside.propTypes = {\n toRender: PropTypes.func,\n isHidden: PropTypes.bool,\n showCloseIcon: PropTypes.bool,\n onHide: PropTypes.func,\n};\n\nAside.defaultProps = {\n isHidden: true,\n showCloseIcon: true,\n};\n\nexport default Aside;\n","import Aside from './Aside';\n\nexport default Aside;\n","import Header, { HeaderPropTypes } from '../Header';\n\nimport Aside from '../Aside';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nconst className = 'c-CommunityPageTemplate';\n\nconst PageTemplate = ({\n headerProps,\n chidren,\n toRender,\n renderAside,\n isAsideHidden,\n showAsideCloseIcon,\n onAsideHide,\n customContentClass,\n}) => {\n return (\n \n
\n {headerProps &&
}\n\n {/* Content */}\n
\n {chidren}\n {toRender && toRender()}\n
\n
\n {renderAside && (\n \n )}\n \n );\n};\n\nPageTemplate.propTypes = {\n headerProps: PropTypes.shape(HeaderPropTypes).isRequired,\n toRender: PropTypes.func,\n renderAside: PropTypes.func,\n isAsideHidden: PropTypes.bool,\n showAsideCloseIcon: PropTypes.bool,\n onAsideHide: PropTypes.func,\n};\n\nPageTemplate.defaultProps = {\n isAsideHidden: true,\n showAsideCloseIcon: true,\n};\n\nexport default PageTemplate;\n","import PageTemplate from './PageTemplate';\n\nexport default PageTemplate;\n","import React, { useLayoutEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport CloseIcon from '../Icons/CloseIcon';\n\nimport './Modal.scss';\n\nconst Modal = ({\n open,\n onClose,\n closeOnBackdropClick,\n customBaseClass,\n backgroundBlur,\n customContainerClass,\n customInnerClass,\n children,\n showCloseIcon,\n customCloseIconClass,\n}) => {\n const className = 'c-Modal';\n const baseClassNames = [className, open ? ` ${className}--open` : ''].join(\n ''\n );\n const modalEl = document.getElementById('modal');\n\n useLayoutEffect(() => {\n const originalStyle = window.getComputedStyle(document.body).overflow;\n\n if (document.body) {\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = originalStyle;\n }\n }\n\n return () => {\n if (document.body) return (document.body.style.overflow = 'visible');\n };\n }, [open]);\n\n if (!modalEl) return null;\n\n const handleBackdropClick = () => {\n if (closeOnBackdropClick) onClose();\n };\n\n return createPortal(\n
\n \n
\n {showCloseIcon && (\n \n \n
\n )}\n
\n {children}\n
\n
\n ,\n modalEl\n );\n};\n\nModal.defaultProps = {\n open: false,\n showCloseIcon: true,\n closeOnBackdropClick: true,\n customBaseClass: '',\n customContainerClass: '',\n customInnerClass: '',\n backgroundBlur: false,\n};\n\nModal.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n children: PropTypes.any.isRequired,\n closeOnBackdropClick: PropTypes.bool,\n customBaseClass: PropTypes.string.isRequired,\n customContainerClass: PropTypes.string.isRequired,\n customInnerClass: PropTypes.string.isRequired,\n showCloseIcon: PropTypes.bool,\n backgroundBlur: PropTypes.bool,\n};\n\nexport default Modal;\n","import Modal from './Modal';\nexport default Modal;\n","import React from 'react';\nimport './Text.scss';\nimport { PropTypes } from 'prop-types';\nimport { Link } from 'react-router-dom';\n\nconst Text = ({ text }) => {\n const className = 'c-Text';\n\n const isArrText = Array.isArray(text);\n\n const renderArrayTitle = () => {\n return text.map((textData, key) => {\n const {\n text: strText,\n isHighlighted,\n isBolder,\n isAnchorText,\n isNewLine,\n isNewParagraph,\n isStrikeThrough,\n isUnderlined,\n isCustomColor,\n link,\n ...rest\n } = textData;\n\n const spanClass = [\n isHighlighted ? `${className}--highlighted` : '',\n isBolder ? ` ${className}--bolder` : '',\n isAnchorText ? ` ${className}--anchor` : '',\n isNewLine ? ` ${className}--newline` : '',\n isStrikeThrough ? ` ${className}--striked` : '',\n isUnderlined ? ` ${className}--underline` : '',\n isCustomColor ? ` ${className}--custom-color` : '',\n isNewParagraph ? `${className}--new-paragraph` : '',\n link ? ` ${className}--link` : '',\n ].join('');\n\n if (link) {\n return (\n \n \n {strText}\n \n \n );\n }\n\n return (\n \n {strText}\n \n );\n });\n };\n\n return

{isArrText ? renderArrayTitle() : text}

;\n};\n\nexport const TextArrType = PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string.isRequired,\n isHighlighted: PropTypes.bool,\n isBolder: PropTypes.bool,\n isAnchorText: PropTypes.bool,\n isCustomColor: PropTypes.bool,\n link: PropTypes.string,\n isNewLine: PropTypes.bool,\n isNewParagraph: PropTypes.bool,\n isStrikeThrough: PropTypes.bool,\n isUnderlined: PropTypes.bool,\n })\n);\n\nexport const TextType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n TextArrType,\n]);\n\nText.propTypes = {\n text: TextType,\n};\n\nexport default Text;\n","import Text, { TextType } from './Text';\nexport { TextType };\nexport default Text;\n","import * as yup from 'yup';\n\nexport const emptyOptionLabel = 'Choose One';\n\nexport const MAX_FILE_SIZE = 2000000;\n\nexport const IMAGE_REQUIRED_MESSAGE = 'Image is required.';\n\nexport const socialMediaContentProps = {\n label: `What's your content style?`,\n items: [\n 'Travel',\n 'Comedy',\n 'Inspirational',\n 'Family',\n 'Tech/Product',\n 'Education',\n 'Fitness',\n 'Art & Design',\n 'Lifestyle',\n 'Food',\n 'Wellness',\n 'Mental Health',\n 'Beauty',\n 'Politics',\n 'Others',\n ],\n labels: undefined,\n};\n\nexport const EQUIPMENT_SUBTEXT_MESSAGE =\n 'This information is necessary for Creator Mastercourse students.';\n\nexport const editingSoftwareStaticProps = {\n label: 'Editing software',\n items: ['fcp', 'pp', 'others'],\n labels: {\n fcp: 'Final Cut Pro',\n pp: 'Premiere Pro',\n others: 'Others',\n '': emptyOptionLabel,\n },\n};\nexport const cameraStaticProps = {\n label: 'Camera',\n items: ['dslr', 'phone', 'others'],\n labels: {\n dslr: 'DSLR',\n phone: 'Phone Camera',\n others: 'Others',\n '': emptyOptionLabel,\n },\n};\n\nconst phoneRegExp = /^\\s*(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)\\s*$/gm;\n\nexport const basicInfoFormSchema = yup.object().shape({\n firstName: yup.string().required(),\n lastName: yup.string(),\n description: yup.string().max(140),\n longDescription: yup.string().max(250).notRequired(),\n corporateEmail: yup.string().email('Not valid email.'),\n dialCodeId: yup.string().default(''),\n phoneNumber: yup.string().default(''),\n whatsAppNumber: yup.string().matches(phoneRegExp, {\n excludeEmptyString: true,\n message: 'Phone number is not valid',\n }),\n});\n\nexport const commentPreferenceFormSchema = yup.object().shape({\n hasSubscribedToCommentEmails: yup.string().required(),\n});\n\nexport const videoPreferenceFormSchema = yup.object().shape({\n subtitlePreference: yup.string().required(),\n});\n\nconst addProtocol = (str) => {\n const protocol = str.substring(0, 4);\n\n return protocol === 'http' ? str : 'https://' + str;\n};\n\nconst customUrlValidator = yup.string().transform(addProtocol).url();\nconst conditionalUrlValidation = (field) =>\n yup\n .string()\n .test(field, `Enter complete url: www.${field}.com/username`, (val) => {\n return val.length > 0 ? customUrlValidator.isValidSync(val) : true;\n });\n\nconst SUPPORTED_FORMATS = ['image/jpg', 'image/jpeg', 'image/png'];\n\nconst fileValidator = yup\n .mixed()\n .test('fileSize', 'File is too large', (value) => {\n return value.length > 0 ? value[0].size < MAX_FILE_SIZE : true;\n })\n .test('fileType', 'Not supported format. (Add JPG or PNG file)', (value) =>\n value.length > 0 ? SUPPORTED_FORMATS.includes(value[0]?.type) : true\n );\n\nexport const socialMediaFormSchema = yup.object().shape({\n facebook: conditionalUrlValidation('facebook'),\n instagram: conditionalUrlValidation('instagram'),\n youtube: conditionalUrlValidation('youtube'),\n twitter: conditionalUrlValidation('twitter'),\n linkedin: conditionalUrlValidation('linkedin'),\n});\n\nexport const creationsSchema = yup.object().shape({\n title: yup.string().max(50).required(),\n description: yup.string().max(250).required(),\n link: customUrlValidator.required(),\n});\n\nexport const postsSchema = yup.object().shape({\n title: yup.string().max(50).required(),\n description: yup.string().max(140).required(),\n photo: fileValidator.notRequired(),\n});\n","import RoundedButton from './RoundedButton';\nexport default RoundedButton;\n","import Modal from './Modal';\nexport default Modal;\n","import React from 'react';\n\nfunction CloseIcon({ width = 24, height = 24, fill = '#333333' }) {\n const className = 'c-CloseIcon';\n\n return (\n \n \n \n \n \n );\n}\n\nexport default CloseIcon;\n","import CloseIcon from './CloseIcon';\nexport default CloseIcon;\n","import React from 'react';\n\nconst className = 'c-FacebookV2Colored';\nconst FacebookIconV2Colored = ({\n customClassName,\n width = '24',\n height = '25',\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default FacebookIconV2Colored;\n","import React from 'react';\n\nfunction FacebookGreyIcon({ customClassName }) {\n return (\n \n \n \n );\n}\n\nexport default FacebookGreyIcon;\n","import FacebookGreyIcon from './FacebookGreyIcon';\nexport default FacebookGreyIcon;\n","import * as yup from 'yup';\n\nexport const validate = async ({ schema, formData, setErrors }) => {\n setErrors({});\n\n let isValid = await schema\n .validate(formData, {\n abortEarly: false,\n })\n .then(() => true)\n .catch((validationErr) => {\n if (Array.isArray(validationErr.inner)) {\n let errors = {};\n validationErr.inner.forEach(\n ({ path, message }) => (errors[path] = message)\n );\n setErrors(errors);\n }\n return false;\n });\n\n return isValid;\n};\n\nexport const isValidUrl = ({ url }) => {\n if (!url) return false;\n\n let schema = yup.string().url();\n return schema.isValidSync(url);\n};\n","import {\n ALL_MEMBERSHIPS_FILTER,\n NAS_ACADEMY_MEMBERSHIPS_FILTER,\n NEAR_YOU_MEMBERSHIPS_FILTER,\n NEWEST_DATA_SORTING_PARAM,\n OLDEST_DATA_SORTING_PARAM,\n} from '../../apiServices/constants';\n\nexport const ALL = 'all';\nexport const NEAR_YOU = 'near-you';\nexport const NEWEST = 'newest';\nexport const NAS_ACADEMY = 'nas-academy';\n\nexport const tags = [ALL, NEAR_YOU, NEWEST];\n\nexport const membershipsParamsMapping = {\n [ALL]: { filter: ALL_MEMBERSHIPS_FILTER, sort: OLDEST_DATA_SORTING_PARAM },\n [NEAR_YOU]: {\n filter: NEAR_YOU_MEMBERSHIPS_FILTER,\n sort: OLDEST_DATA_SORTING_PARAM,\n },\n [NEWEST]: { filter: '', sort: NEWEST_DATA_SORTING_PARAM },\n [NAS_ACADEMY]: {\n filter: NAS_ACADEMY_MEMBERSHIPS_FILTER,\n sort: OLDEST_DATA_SORTING_PARAM,\n },\n};\n","import React from 'react';\n\nconst className = 'c-DiscordV2';\nconst DiscordV2 = ({ customClassName }) => {\n return (\n \n \n \n );\n};\n\nexport default DiscordV2;\n","import React from 'react';\n\nconst className = 'c-InstagramIconV2Colored';\nconst InstagramIconV2Colored = ({ customClassName }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default InstagramIconV2Colored;\n","import React from 'react';\n\nconst className = 'c-LinkedIconV2Colored';\nconst LinkedIconV2Colored = ({ customClassName }) => {\n return (\n \n \n \n \n );\n};\n\nexport default LinkedIconV2Colored;\n","import React from 'react';\n\nconst className = 'c-OpenSeaV2Colored';\nconst OpenSeaV2Colored = ({ customClassName }) => {\n return (\n \n \n \n \n \n );\n};\n\nexport default OpenSeaV2Colored;\n","import React from 'react';\n\nconst className = 'c-TiktokV2';\nconst TiktokV2 = ({ customClassName }) => {\n return (\n \n \n \n \n \n );\n};\n\nexport default TiktokV2;\n","import React from 'react';\n\nconst className = 'c-TwitterIconV2Colored';\nconst TwitterIconV2Colored = ({ customClassName }) => {\n return (\n \n \n \n );\n};\n\nexport default TwitterIconV2Colored;\n","import React from 'react';\n\nconst className = 'c-WebsiteIconV2';\nconst WebsiteIconV2 = ({ customClassName }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default WebsiteIconV2;\n","import React from 'react';\n\nconst className = 'c-YoutubeIconV2Colored';\nconst YoutubeIconV2Colored = ({ customClassName }) => {\n return (\n \n \n \n \n );\n};\n\nexport default YoutubeIconV2Colored;\n","import React from 'react';\nimport { PropTypes } from 'prop-types';\n\nfunction EyeVisible({ isOpen }) {\n const className = 'c-EyeVisible';\n\n return (\n \n \n \n \n \n );\n}\n\nEyeVisible.defaultProps = {\n isOpen: true,\n};\n\nEyeVisible.propTypes = {\n isOpen: PropTypes.bool,\n};\n\nexport default EyeVisible;\n","import EyeVisible from './EyeVisible';\nexport default EyeVisible;\n","export const SHOW_START_COMMUNITY_MODAL = 'SHOW_START_COMMUNITY_MODAL';\nexport const DEMO_MEMBER_PORTAL_NAV_SETTINGS =\n 'DEMO_MEMBER_PORTAL_NAV_SETTINGS';\nexport const DEMO_MEMBER_PORTAL_JOIN_CHAT = 'DEMO_MEMBER_PORTAL_JOIN_CHAT';\nexport const DEMO_TOGGLE_TO_CM_VIEW = 'DEMO_TOGGLE_TO_CM_VIEW';\nexport const DEMO_CLICK_MP_LOGOUT = 'DEMO_CLICK_MP_LOGOUT';\nexport const DEMO_MP_GET_EVENT_TICKET_CLICK = 'DEMO_MP_GET_EVENT_TICKET_CLICK';\nexport const DEMO_MP_PURCHASE_FOLDER_CLICK = 'DEMO_MP_PURCHASE_FOLDER_CLICK';\nexport const DEMO_MEMBER_PORTAL_LEAVE_COMMUNITY =\n 'DEMO_MEMBER_PORTAL_LEAVE_COMMUNITY';\n\nexport function isSessionInSandboxEnv() {\n try {\n return window !== window.parent;\n } catch (e) {\n return false;\n }\n}\n\nexport function handleGetEventTicketClickInDemo() {\n showStartOnboardingModalInDemo(DEMO_MP_GET_EVENT_TICKET_CLICK);\n}\n\nexport function handlePurchaseFolderClickInDemo() {\n showStartOnboardingModalInDemo(DEMO_MP_PURCHASE_FOLDER_CLICK);\n}\n\nexport function handleSettingsClickInDemo() {\n showStartOnboardingModalInDemo(DEMO_MEMBER_PORTAL_NAV_SETTINGS);\n}\n\nexport function handleJoinChatClickInDemo() {\n showStartOnboardingModalInDemo(DEMO_MEMBER_PORTAL_JOIN_CHAT);\n}\n\nexport function handleLeaveCommunityClickInDemo() {\n showStartOnboardingModalInDemo(DEMO_MEMBER_PORTAL_LEAVE_COMMUNITY);\n}\n\nexport function showStartOnboardingModalInDemo(locationOfCta) {\n if (isSessionInSandboxEnv()) {\n const targetOrigin = '*';\n const message = {\n fromDemo: true,\n type: SHOW_START_COMMUNITY_MODAL,\n locationOfCta,\n };\n window.parent.postMessage(message, targetOrigin);\n }\n}\n\nexport function switchDemoToCmView() {\n if (isSessionInSandboxEnv()) {\n const targetOrigin = '*';\n const message = {\n fromDemo: true,\n type: DEMO_TOGGLE_TO_CM_VIEW,\n };\n window.parent.postMessage(message, targetOrigin);\n }\n}\n\nexport function handleLogoutClickFromProductDemo() {\n if (isSessionInSandboxEnv()) {\n const targetOrigin = '*';\n const message = {\n fromDemo: true,\n type: DEMO_CLICK_MP_LOGOUT,\n };\n window.parent.postMessage(message, targetOrigin);\n }\n}\n","import Cookies from 'js-cookie';\nimport localStorageService from './localStorageService';\n\nexport const LANGUAGE_KEY = 'NEXT_LOCALE';\nexport const langOptions = [\n {\n value: 'en',\n label: 'English (US)',\n },\n {\n value: 'es-MX',\n label: 'Español (LATAM)',\n },\n {\n value: 'pt-BR',\n label: 'Portugués (BR)',\n },\n];\n\nexport const acceptedLanguages = langOptions.map(\n (langOption) => langOption.value\n);\n\nexport const getRegionInUpperCase = (locale) => {\n const parts = locale?.split('-') || [];\n\n if (parts.length === 2) {\n parts[1] = parts[1].toUpperCase();\n return parts.join('-');\n }\n\n return locale;\n};\n\nexport const getSelectedLangStr = (i18n) => {\n const { language } = i18n;\n switch (language) {\n case 'en':\n return 'English (US)';\n case 'es-MX':\n return 'Español (MX)';\n case 'pt-BR':\n return 'Portugués (BR)';\n default:\n return 'English (US)';\n }\n};\n\nconst getLanguageInStorage = () => {\n let languageInStorage =\n Cookies.get(LANGUAGE_KEY) || localStorageService.getItem(LANGUAGE_KEY);\n\n languageInStorage = getRegionInUpperCase(languageInStorage);\n if (acceptedLanguages.includes(languageInStorage)) return languageInStorage;\n\n return '';\n};\n\nexport const setLanguageInStorage = (language) => {\n const localeInLowerCase = language.toLowerCase();\n const isLocalhost = window.location.hostname === 'localhost';\n let domain = '';\n if (!isLocalhost) {\n const domainParts = window.location.hostname.split('.');\n domain = '.' + domainParts.slice(-2).join('.'); // .nas.io or .dev-nas.io\n }\n const cookieOptions = isLocalhost ? {} : { domain };\n Cookies.set(LANGUAGE_KEY, localeInLowerCase, cookieOptions);\n localStorageService.setItem(LANGUAGE_KEY, localeInLowerCase);\n};\n\nexport const switchToUserPreferredLanguage = (user) => {\n const languagePreference = user?.learner?.languagePreference || '';\n const languageInStorage = getLanguageInStorage() || 'en';\n\n if (languageInStorage.toLowerCase() !== languagePreference.toLowerCase()) {\n setLanguageInStorage(languagePreference);\n window.location.reload();\n }\n};\n\nconst getBrowserLanguagePreference = () => {\n const browserLang = navigator?.language;\n\n // use es-MX for all spanish languages.\n if (browserLang.includes('es')) return 'es-MX';\n\n switch (browserLang) {\n case 'es-MX':\n case 'pt-BR':\n return browserLang;\n case 'en':\n case 'en-US':\n default:\n return 'en';\n }\n};\n\nexport const getInitialLocale = () => {\n const browserLang = getBrowserLanguagePreference();\n const langInStorage = getLanguageInStorage();\n let initialLocale = langInStorage || browserLang || 'en';\n return getRegionInUpperCase(initialLocale);\n};\n","import {\n CLASSES_PORTAL,\n CLASSES_PORTAL_ROOT,\n COMMUNITY_PORTAL,\n COMMUNITY_PORTAL_ROOT,\n CREATOR_PORTAL,\n CREATOR_PORTAL_ROOT,\n} from '../../constants';\n\nexport const getActivePortal = (path) => {\n const pathRoot = `/${path.split('/')?.[1]}`;\n\n let activePortal = '';\n switch (pathRoot) {\n case CLASSES_PORTAL_ROOT:\n activePortal = CLASSES_PORTAL;\n break;\n case COMMUNITY_PORTAL_ROOT:\n activePortal = COMMUNITY_PORTAL;\n break;\n case CREATOR_PORTAL_ROOT:\n activePortal = CREATOR_PORTAL;\n break;\n default:\n activePortal = CLASSES_PORTAL;\n break;\n }\n\n return activePortal;\n};\n\nexport const getCommunityPortalPath = (pageEndpoint) => (communityId) =>\n `/communities/${communityId}/${pageEndpoint}`;\n","import {\n CLASSES_PORTAL_ROOT,\n COMMUNITY_PORTAL_EVENTS_PAGE_ENDPOINT,\n COMMUNITY_PORTAL_LIBRARY_FOLDER_PATH,\n COMMUNITY_PORTAL_HOMEPAGE_ENDPOINT,\n COMMUNITY_PORTAL_LIBRARY_PAGE_ENDPOINT,\n COMMUNITY_PORTAL_MEET_AN_EXPERT_PAGE_ENDPOINT,\n COMMUNITY_PORTAL_MEMBERS_PAGE_ENDPOINT,\n COMMUNITY_PORTAL_ROOT,\n} from '../../constants';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { getActivePortal, getCommunityPortalPath } from './utils';\n\nimport history from '../../../modules/history';\nimport { urlUtils } from '../../utils';\n\nconst RouterContext = createContext();\n\nexport const RouterContextProvider = ({ children }) => {\n const [activePath, setActivePath] = useState(urlUtils.readCurrentPath());\n\n const currUrlPath = window.location.pathname;\n\n const switchToClassesPortal = useCallback(() => {\n if (urlUtils.isOnCommunityPortal() || urlUtils.isOnCreatorPortal()) {\n urlUtils.goToPortalPage(CLASSES_PORTAL_ROOT);\n }\n }, []);\n const switchToCommunityPortal = useCallback(() => {\n if (!urlUtils.isOnSettingsPortal() && !urlUtils.isOnCommunityPortal()) {\n urlUtils.goToPortalPage(COMMUNITY_PORTAL_ROOT);\n }\n }, []);\n\n const getCommunityPortalHomePageLink = useCallback((communityId) => {\n return getCommunityPortalPath(COMMUNITY_PORTAL_HOMEPAGE_ENDPOINT)(\n communityId\n );\n }, []);\n\n const getMeetAnExpertPageLink = useCallback((communityId) => {\n return getCommunityPortalPath(\n COMMUNITY_PORTAL_MEET_AN_EXPERT_PAGE_ENDPOINT\n )(communityId);\n }, []);\n const getCommunityPortalEventsPageLink = useCallback(\n (communityId) =>\n getCommunityPortalPath(COMMUNITY_PORTAL_EVENTS_PAGE_ENDPOINT)(\n communityId\n ),\n []\n );\n const getCommunityPortalLibraryPageLink = useCallback(\n (communityId) =>\n getCommunityPortalPath(COMMUNITY_PORTAL_LIBRARY_PAGE_ENDPOINT)(\n communityId\n ),\n []\n );\n const getCommunityPortalLibraryFolderPageLink = useCallback(\n (communityId) =>\n getCommunityPortalPath(COMMUNITY_PORTAL_LIBRARY_FOLDER_PATH)(communityId),\n []\n );\n\n const getCommunityPortalMembersPageLink = useCallback(\n (communityId) =>\n getCommunityPortalPath(COMMUNITY_PORTAL_MEMBERS_PAGE_ENDPOINT)(\n communityId\n ),\n []\n );\n\n const activePortal = useMemo(() => getActivePortal(activePath), [activePath]);\n\n // Reaction to update the active path whenever a manual URL change occurs\n useEffect(() => {\n setActivePath(urlUtils.readCurrentPath());\n }, [currUrlPath]);\n\n const value = {\n switchToClassesPortal,\n switchToCommunityPortal,\n activePortal,\n getCommunityPortalHomePageLink,\n getCommunityPortalEventsPageLink,\n getCommunityPortalLibraryPageLink,\n getCommunityPortalMembersPageLink,\n getCommunityPortalLibraryFolderPageLink,\n getMeetAnExpertPageLink,\n };\n\n return (\n {children}\n );\n};\n\nexport const useRouterContext = () => useContext(RouterContext);\n","import { RouterContextProvider, useRouterContext } from './RouterContext';\n\nexport { useRouterContext };\n\nexport default RouterContextProvider;\n","import { getAxiosError } from '../../services/helper';\nimport protectedAxiosRequest from '../../services/helper/protectedAxiosRequest';\nimport config from '../config';\nimport {\n eventRegistrationURL,\n eventsURL,\n sharedRequestOptions,\n} from './constants';\n\nconst { BASE_BE_URL } = config;\n\nexport const getEventsData = async (communityId, eventsType, params) => {\n try {\n return await protectedAxiosRequest.get(eventsURL(communityId, eventsType), {\n ...sharedRequestOptions,\n params,\n });\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const postEventRegistration = async (eventId) => {\n try {\n return await protectedAxiosRequest.post(\n eventRegistrationURL(eventId),\n sharedRequestOptions\n );\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const cancelEventAttendanceService = async ({\n communityId,\n eventId,\n userId,\n}) => {\n try {\n return await protectedAxiosRequest.put(\n `${BASE_BE_URL}/${communityId}/events/${eventId}/attendees/${userId}/not-going`\n );\n } catch (error) {\n return getAxiosError(error);\n }\n};\n","export const isInViewport = (ref) => {\n const rect = ref.current.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n};\n\nexport const videoOnScroll = (videoWrap, video) => {\n const videoHeight = video.clientHeight;\n const windowScrollTop = window.pageYOffset;\n const videoBottom = videoHeight / 4;\n if (windowScrollTop > videoBottom) {\n video.classList.add('c-Video--sticky');\n } else {\n video.classList.remove('c-Video--sticky');\n }\n};\n\nexport const minDesktopWidth = 1200;\nexport const isDesktop = window.innerWidth >= minDesktopWidth;\nexport const isMobile = window.innerWidth < 470;\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport { getInitialLocale } from './utility/locale';\n\nconst namespace = 'member';\nconst lang = getInitialLocale();\n\ni18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources: {},\n // resources,\n // lng: 'en', // language to use, more information here: https://www.i18next.com/overview/configuration-options#languages-namespaces-resources\n // you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage\n // if you're using a language detector, do not define the lng option\n\n fallbackLng: lang,\n ns: namespace,\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n });\n\n// Function to fetch translations from an external URL\nconst fetchTranslations = async (namespace, lang) => {\n try {\n const langResponse = await fetch(\n `https://localization.nas.io/production/${namespace}/${lang.toLowerCase()}.json`\n );\n const langTranslations = await langResponse.json();\n\n // if lang is not english, then fetch english as well. To be used as fallback\n if (lang !== 'en') {\n const enLangResponse = await fetch(\n `https://localization.nas.io/production/${namespace}/en.json`\n );\n const enLangTranslations = await enLangResponse.json();\n\n return {\n [lang]: { translation: langTranslations },\n en: {\n translation: enLangTranslations,\n },\n };\n }\n\n return { [lang]: { translation: langTranslations } };\n // return { [lang]: { [namespace]: translations } };\n } catch (error) {\n console.error('Error loading translations:', error);\n return {};\n }\n};\n\n// Function to set the loaded translations for a specific namespace and language\nconst setTranslations = async (namespace, lang) => {\n try {\n const resources = await fetchTranslations(namespace, lang);\n\n if (lang === 'en') {\n i18n.addResourceBundle(lang, namespace, resources[lang].translation);\n } else {\n i18n.addResourceBundle(lang, namespace, {\n ...resources.en.translation,\n ...resources[lang].translation,\n });\n }\n } catch (e) {\n console.warn('Error setting translation ', e);\n }\n};\n\nexport const loadTranslations = async () => {\n await setTranslations(namespace, lang);\n};\n\nexport default i18n;\n","import TimeFormatter from '../modules/timeFormatter';\nimport { convertCourseTimeFromToMinAndHours } from '../modules/preRecordedCourseHelper';\nimport { formatCalendarEndDateTime, getLocalCourseTime } from './dateHelper';\n\nexport const LIVE_COURSE_TYPE = 'live';\nexport const ON_DEMAND_COURSE_TYPE = 'preRecorded';\nexport const ACTIVE_STATUS = 'active';\nexport const COMPLETED_STATUS = 'completed';\n\nexport const formatLiveCourses = (courses) =>\n courses?.map((course) => {\n if (course.bundlePurchase) {\n const {\n courseDescription,\n bundlePurchase,\n slotRequested,\n courseCode,\n imgData,\n type,\n courseDuration,\n sessionCount,\n } = course;\n\n return {\n sessionCount,\n code: courseCode,\n title: courseDescription,\n courseDuration,\n progress: 0,\n slotRequested,\n bundlePurchase,\n imgData,\n type,\n };\n } else {\n const {\n startDate,\n endDate,\n unitOffers,\n courseDescription,\n completeLessonCounts,\n lessonCounts,\n courseOfferId,\n imgData,\n type,\n frequency,\n code,\n courseDuration,\n sessionCount,\n } = course || {};\n const courseStart = TimeFormatter.getFormattedDate(startDate);\n const courseEnd = TimeFormatter.getFormattedDate(endDate);\n const progress = (completeLessonCounts / lessonCounts).toFixed(2) * 100;\n const lessonStartTime = unitOffers[0]?.startDate;\n const lessonEndTime = unitOffers[0]?.endDate;\n const formattedFrequency = frequency\n .map((date) => {\n return TimeFormatter.getFormattedDay(date);\n })\n .join(' & ');\n\n return {\n sessionCount,\n courseDate: formatCourseDate(courseStart, courseEnd),\n progress: progress ? progress : 0,\n title: courseDescription,\n courseId: courseOfferId,\n courseDuration,\n frequency: formattedFrequency,\n lessonTime: formatCourseTime(\n TimeFormatter.getFormattedTime(lessonStartTime),\n TimeFormatter.getFormattedTime(lessonEndTime)\n ),\n bundlePurchase: false,\n imgData,\n type,\n code,\n };\n }\n });\n\nexport const formatCourseDate = (courseStart, courseEnd) => {\n if (courseStart === courseEnd) {\n return courseStart;\n } else {\n const courseStartDateMonth = courseStart.split(' ');\n const courseEndDateMonth = courseEnd.split(' ');\n if (courseStartDateMonth[0] === courseEndDateMonth[0]) {\n return `${courseStartDateMonth[1]} - ${courseEndDateMonth[1]} ${courseStartDateMonth[0]}`;\n } else {\n return `${courseStart} - ${courseEnd}`;\n }\n }\n};\n\nexport const formatCourseTime = (courseStart, courseEnd) => {\n if (courseStart === courseEnd) {\n return courseStart;\n } else {\n const courseStartPeriod = courseStart.split(' ');\n const courseEndPeriod = courseEnd.split(' ');\n if (courseStartPeriod[1] === courseEndPeriod[1]) {\n return `${courseStartPeriod[0]}-${courseEndPeriod[0]} ${courseStartPeriod[1]}`;\n } else {\n return `${courseStart}-${courseEnd}`;\n }\n }\n};\n\nexport const formatOnDemandCourses = (courses) =>\n courses?.map((course) => {\n const {\n title,\n progress,\n totalVideos,\n courseOfferObjectId,\n imgData,\n type,\n courseDuration,\n } = course || {};\n\n return {\n title,\n progress,\n courseDuration,\n imgData,\n type,\n sessionCount: `${totalVideos} ${totalVideos > 1 ? 'videos' : 'video'}`,\n courseId: courseOfferObjectId,\n };\n });\n\nexport const getLessonDuration = (lessonStartTime, lessonEndTime) => {\n const timeDiff = new Date(lessonEndTime) - new Date(lessonStartTime);\n const timeObj = convertCourseTimeFromToMinAndHours(timeDiff / 1000);\n return timeObj;\n};\n\nexport const getCourseCountdown = (startDate, endDate = new Date()) => {\n const countdown = TimeFormatter.calculateCountdown(endDate, startDate);\n const { days, hours, min, sec } = countdown;\n if (days && days > 0) {\n return `${days} ${days > 1 ? 'days' : 'day'}`;\n } else if (hours && hours > 0) {\n return `${hours} ${hours > 1 ? 'hours' : 'hour'}`;\n } else if (min && min > 0) {\n return `${min} min`;\n } else if (sec && sec > 0) {\n return `${sec} sec`;\n }\n};\n\nexport const countdownExpires = (countdown) => {\n const { years, days, hrs, mins, secs } = countdown || {};\n return years === 0 && days === 0 && hrs === 0 && mins === 0 && secs === 0;\n};\n\nexport const currentTimeWithinRange = (startDate, endDate) => {\n const currentTime = Date.parse(new Date());\n\n return (\n currentTime >= Date.parse(new Date(startDate)) &&\n currentTime <= Date.parse(new Date(endDate))\n );\n};\n\nexport const calculateDifferenceInTime = (endDate, startDate = new Date()) => {\n return Date.parse(endDate) - Date.parse(new Date(startDate));\n};\n\n/**\n * Get the course type from course code.\n * @param {string} courseCode The course code\n * @return {string} The course type\n */\nexport const courseType = (courseCode) => {\n if (courseCode.match(/^NT/)) return 'teen';\n else return 'general';\n};\n\n/**\n * Get the currency for the transaction of course with the given course code.\n * @param {string} courseCode The course code.\n * @return {string} The currency for the sale of the course with the given course code.\n */\nexport const getCourseCurrency = (courseCode) => {\n if (courseCode.match(/^NG/)) return 'USD';\n else if (courseCode.match(/^NC/) || courseCode.match(/^SG-NC/)) return 'SGD';\n else return 'USD';\n};\n\n/**\n * Format the date into DD MMM, YYYY\n * @param {date} dateString The date to be formatted\n * @return The formatted date into the form of DD MMM, YYYY. Example, 15 May, 2020\n */\nexport const formatDate = (dateString) => {\n const date = new Date(dateString);\n const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n return (\n date.getDate() + ' ' + months[date.getMonth()] + ' ' + date.getFullYear()\n );\n};\n\n/**\n * Get the net payable after discount (if any).\n * @param {object} course The course offer\n * @param {object} discount The discount to be applied\n * @return {number} The net amount of the course after discount (if any).\n */\nexport const getNetPayable = (course, discount) => {\n if (!discount) return course.courseFees;\n\n let discountApplied = 0;\n if (discount.type === 'percent_off') {\n discountApplied = course.courseFees * (discount.value / 100);\n } else if (discount.type === 'amount_off') {\n discountApplied = discount.value / 100;\n }\n return course.courseFees - discountApplied;\n};\n\nexport const getNetCreditPayable = (course, credit) => {\n if (credit < course.courseFees) return course.courseFees - credit;\n else return 0;\n};\n\n/*\n Convention to follow\n\n \"CourseOfferStatusId\":\n 1 -- pending (haven't start, still taking in enrollment)\n 2 -- active (started, currently still teaching)\n 3 -- completed (ended, no more class)\n*/\nexport const processWisenetCourses = (courses) => {\n let slimCourses = {};\n\n for (let i in courses) {\n const course = courses[i];\n\n const data = course.Data;\n const description = data.Description;\n const courseOfferCode = data.Code;\n const courseOfferId = data.CourseOfferId;\n const courseStartDate = data.CourseOfferStartDate;\n const courseEndDate = data.CourseOfferEndDate;\n const maxRegistrations = data.MaxRegistrations;\n const courseFees = data.CourseFees;\n const deposit = data.Deposit;\n const courseCode = course.Relationships.Course.CourseCode;\n const courseOfferStatusId = data.CourseOfferStatusId;\n\n let location;\n if (course.Relationships.Location)\n location = course.Relationships.Location.Description;\n\n if (!(courseCode in slimCourses)) slimCourses[courseCode] = [];\n\n slimCourses[courseCode].push({\n courseCode: courseCode,\n courseOfferId: courseOfferId,\n courseOfferCode: courseOfferCode,\n description: description,\n courseStartDate: courseStartDate,\n courseEndDate: courseEndDate,\n maxRegistrations: maxRegistrations,\n courseFees: courseFees,\n deposit: deposit,\n courseOfferStatusId: courseOfferStatusId,\n location: location,\n });\n }\n\n return slimCourses;\n};\n\n/**\n * Convert the courses from wisenet into the format needed by front-end.\n * @param {array} courses Courses from wisenet\n * @return {array} Processed courses\n */\nexport const processWisenetCoursesNew = (courses) => {\n let slimCourses = {};\n\n const mappingCourseOfferStatus = {\n Pending: 1,\n Active: 2,\n Inactive: 3,\n Cancelled: 4,\n };\n\n for (let i in courses) {\n const course = courses[i];\n\n const data = course.Data;\n const description = data.CourseOfferDescription;\n const courseOfferCode = data.CourseOfferCode;\n const courseOfferId = data.CourseOfferId;\n const courseStartDate = data.OfferingStartDate;\n const courseEndDate = data.OfferingEndDate;\n const maxRegistrations = data.MaxRegistrations;\n const courseFees = data.CourseFees;\n const deposit = data.Deposit;\n const courseCode = data.Course.CourseCode;\n const courseOfferStatusId =\n mappingCourseOfferStatus[data.CourseOfferStatus];\n const location = data.Location;\n const vacancy = data.VacancyCount;\n\n if (!(courseCode in slimCourses)) slimCourses[courseCode] = [];\n\n slimCourses[courseCode].push({\n courseCode: courseCode,\n courseOfferId: courseOfferId,\n courseOfferCode: courseOfferCode,\n description: description,\n courseStartDate: courseStartDate,\n courseEndDate: courseEndDate,\n maxRegistrations: maxRegistrations,\n courseFees: courseFees,\n deposit: deposit,\n courseOfferStatusId: courseOfferStatusId,\n location: location,\n vacancy: vacancy,\n });\n }\n\n return slimCourses;\n};\n\n/*\n params courses must be processed by processWisenetCourses\n*/\n\n/**\n * Filter wisenet courses by course code and course offer status id.\n * @param {object} courses Courses from wisenet.\n * @param {string} filterCourseCategory Course code as a filter.\n * @param {number} filterCourseOfferStatusId Course offer status id as a filter.\n * @return {array} Filtered courses.\n */\nexport const filterWisenetCourses = (\n courses,\n filterCourseCategory,\n filterCourseOfferStatusId\n) => {\n if (filterCourseCategory in courses)\n return courses[filterCourseCategory].filter(\n (c) => c.courseOfferStatusId === filterCourseOfferStatusId\n );\n};\n\n/**\n * Filter wisenet courses that are starting later than today or the specified 'today' date.\n * @param {array} courses Courses.\n * @param {date} todayDate Optional date as a base reference.\n * @return {array} Filtered courses that are later than the specified 'today' date.\n */\nexport const filterFutureWisenetCourses = (courses, todayDate) => {\n let today = todayDate ? todayDate : new Date();\n return courses.filter((course) => {\n const courseStartDate = new Date(course.courseStartDate);\n return today < courseStartDate;\n });\n};\n\n/**\n * Sort courses by start date in ascending order.\n * @param {array} courses Courses to be sorted\n * @return {array} Sorted courses in ascending order of start date.\n */\nexport const sortCoursesByStartDate = (courses) => {\n return courses.sort((c1, c2) => {\n const c1StartDate = new Date(c1.courseStartDate);\n const c2StartDate = new Date(c2.courseStartDate);\n\n if (c1StartDate > c2StartDate) {\n return 1;\n } else if (c1StartDate < c2StartDate) {\n return -1;\n } else {\n return 0;\n }\n });\n};\n\n/**\n * Comparator for course start date\n * @param {object} a Course A\n * @param {object} b Course B\n * @return {number} -1 if a start date is less than b start date, 1 if a start date is more than b start date, 0 otherwise.\n */\nexport const compareCoursesStartDate = (a, b) => {\n const aDate = new Date(a.courseStartDate);\n const bDate = new Date(b.courseStartDate);\n if (aDate < bDate) return -1;\n if (aDate > bDate) return 1;\n else return 0;\n};\n\n/**\n * Get the date, frequency, and end day of a course.\n * @param {object} course Course offer\n * @param {string} timezoneSelected The timezone to be converted to\n * @return {object} Object containing the local start date, end date, frequency of lesson, and end day in the selected timezone format.\n */\nexport const getCourseLocalDateAndTime = (course) => {\n const moment = require('moment-timezone');\n\n const frequency = course?.frequency?.localFrequency;\n const startLocalDateTime = course?.localCourseStartDate;\n const endLocalDateTime = course?.localCourseEndDate;\n\n return {\n startLocalDateTime: moment(startLocalDateTime),\n endLocalDateTime: moment(endLocalDateTime),\n displayFrequency: frequency,\n endLocalDay: moment(endLocalDateTime),\n };\n};\n\nexport const calculateDateToCourse = (course) => {\n let diff =\n (Date.parse(new Date(course.ApplicationStartDate)) -\n Date.parse(new Date())) /\n 1000;\n\n // clear countdown when date is reached\n if (diff <= 0) return false;\n\n const timeLeft = {\n years: 0,\n days: 0,\n hours: 0,\n min: 0,\n sec: 0,\n };\n\n // calculate time difference between now and expected date\n if (diff >= 365.25 * 86400) {\n // 365.25 * 24 * 60 * 60\n timeLeft.years = Math.floor(diff / (365.25 * 86400));\n diff -= timeLeft.years * 365.25 * 86400;\n }\n if (diff >= 86400) {\n // 24 * 60 * 60\n timeLeft.days = Math.floor(diff / 86400);\n diff -= timeLeft.days * 86400;\n }\n if (diff >= 3600) {\n // 60 * 60\n timeLeft.hours = Math.floor(diff / 3600);\n diff -= timeLeft.hours * 3600;\n }\n if (diff >= 60) {\n timeLeft.min = Math.floor(diff / 60);\n diff -= timeLeft.min * 60;\n }\n timeLeft.sec = diff;\n\n return timeLeft;\n};\n\nexport const isVacancyBelowThreshold = (\n maxRegistration,\n vacancy,\n thresholdPercent = 20\n) => {\n const thresholdCount = parseInt(\n Math.floor(thresholdPercent * maxRegistration) / 100\n );\n return vacancy < thresholdCount;\n};\n\nexport const getScheduledInStrFromCountdown = (countdown) => {\n const { years, days, hrs, mins, secs } = countdown || {};\n\n if (years) {\n const plurifiedYearsLabel = years > 1 ? 'Years' : 'Year';\n return `${years} ${plurifiedYearsLabel}`;\n }\n\n if (days) {\n const plurifiedDaysLabel = days > 1 ? 'Days' : 'Day';\n return `${days} ${plurifiedDaysLabel}`;\n }\n\n if (hrs) {\n const plurifiedHrsLabel = hrs > 1 ? 'Hours' : 'Hour';\n return `${hrs} ${plurifiedHrsLabel}`;\n }\n\n if (mins) {\n const plurifiedMinsLabel = mins > 1 ? 'Minutes' : 'Minute';\n return `${mins} ${plurifiedMinsLabel}`;\n }\n\n if (secs) {\n const plurifiedSecsLabel = secs > 1 ? 'Seconds' : 'Second';\n return `${secs} ${plurifiedSecsLabel}`;\n }\n\n return '';\n};\n\nexport const getCountdownToDate = (dt) => {\n let diff = (Date.parse(new Date(dt)) - Date.parse(new Date())) / 1000;\n\n const countdown = {\n years: 0,\n days: 0,\n hrs: 0,\n mins: 0,\n secs: 0,\n };\n\n if (diff <= 0) {\n return countdown;\n }\n\n const SECONDS_IN_MIN = 60;\n const SECONDS_IN_HR = 60 * 60;\n const SECONDS_IN_DAY = 24 * SECONDS_IN_HR;\n const SECONDS_IN_YEAR = 365.25 * SECONDS_IN_DAY;\n\n // calculate time difference between now and expected date\n if (diff >= SECONDS_IN_YEAR) {\n countdown.years = Math.floor(diff / SECONDS_IN_YEAR);\n diff -= countdown.years * SECONDS_IN_YEAR;\n }\n if (diff >= SECONDS_IN_DAY) {\n countdown.days = Math.floor(diff / SECONDS_IN_DAY);\n diff -= countdown.days * SECONDS_IN_DAY;\n }\n if (diff >= SECONDS_IN_HR) {\n countdown.hrs = Math.floor(diff / SECONDS_IN_HR);\n diff -= countdown.hrs * SECONDS_IN_HR;\n }\n if (diff >= SECONDS_IN_MIN) {\n countdown.mins = Math.floor(diff / SECONDS_IN_MIN);\n diff -= countdown.mins * SECONDS_IN_MIN;\n }\n\n countdown.secs = diff;\n\n return countdown;\n};\n\nexport const getScheduledInStr = (nextDate) => {\n const countdown = getCountdownToDate(nextDate);\n return getScheduledInStrFromCountdown(countdown);\n};\n\nexport const getCoursePeriod = (courseOfferingDetails) => {\n const courseLocalTime = getLocalCourseTime(\n `${courseOfferingDetails?.localStartDate}`,\n `${courseOfferingDetails?.localEndDate}`\n );\n const formattedStartDate = courseLocalTime?.formattedStartDateTimeLocal ?? '';\n const formattedEndDate = courseLocalTime?.formattedEndDateTimeLocal ?? '';\n return formattedStartDate === formattedEndDate\n ? formattedStartDate\n : `${formattedStartDate} - ${formattedEndDate}`;\n};\n\nexport const getFormattedCourseSchedule = (courseOfferingDetails) => {\n const courseFreq = courseOfferingDetails?.frequency?.localFrequency ?? '';\n const courseLocalTime = getLocalCourseTime(\n `${courseOfferingDetails?.localStartDate}`,\n `${courseOfferingDetails?.localEndDate}`\n );\n const { lessonStartTime, lessonEndTime } = courseLocalTime;\n const formattedCourseSchedule = `${courseFreq} ${lessonStartTime} - ${lessonEndTime}`;\n return formattedCourseSchedule;\n};\n\nexport const getCalendarEvents = (courseOfferingDetails) => {\n const timezoneId = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n return {\n title: courseOfferingDetails?.courseDescription,\n description: `${timezoneId} ${courseOfferingDetails?.generalNotes}`,\n location: timezoneId,\n startTime: courseOfferingDetails?.localStartDate,\n endTime: formatCalendarEndDateTime(\n courseOfferingDetails?.localStartDate,\n courseOfferingDetails?.localEndDate\n ),\n recurring: {\n repeat: 'weekly',\n byDay: courseOfferingDetails?.frequency?.localFrequency\n ?.split('&')\n ?.map((day) => day?.trim()?.toUpperCase()?.substr(0, 2))\n ?.join(','),\n interval: 1,\n weekStart: 'SU',\n count: courseOfferingDetails?.numberOfLessons,\n },\n };\n};\n\nexport const getCourseOfferingTypeLabel = (desc, type) => {\n const labels = {\n live: '(LIVE)',\n preRecorded: '(On-Demand)',\n };\n\n return `${desc} ${labels[type]}`;\n};\n","import axios from 'axios';\nimport { cancelCommunityURL } from './constants';\nimport { getAxiosError } from '../../services/helper';\nimport sign from 'jwt-encode';\nimport protectedAxiosRequest from '../../services/helper/protectedAxiosRequest';\nimport config from '../config';\n\nexport const cancelSubscription = async (\n stripeSubscriptionId,\n cancellationReason\n) => {\n try {\n debugger;\n const mainWebsiteJwtToken = sign(\n { stripeSubscriptionId },\n process.env.REACT_APP_JWT_SECRET\n );\n const response = await axios.post(\n `${cancelCommunityURL()}`,\n { cancellationReason },\n { headers: { Authorization: `Bearer ${mainWebsiteJwtToken}` } }\n );\n\n if (response.status === 200) {\n return response.data;\n }\n } catch (err) {\n return getAxiosError(err);\n }\n};\n\nexport const cancelFreeOrTokenGatedSubscription = async ({\n cancellationReason,\n communityCode,\n communityId,\n subscriptionObjectId,\n}) => {\n try {\n const response = await protectedAxiosRequest.put(\n `${config.BASE_BE_URL}/leave-community/${communityId}`,\n {\n cancellationReason,\n communityCode,\n subscriptionObjectId,\n }\n );\n\n if (response.status === 200) {\n return response.data;\n }\n } catch (err) {\n return getAxiosError(err);\n }\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"c-CheckboxV2\":\"CheckboxV2_c-CheckboxV2__3EPom\",\"c-CheckboxV2__checkmark\":\"CheckboxV2_c-CheckboxV2__checkmark__3O1fS\",\"c-CheckboxV2__checkmark--checked\":\"CheckboxV2_c-CheckboxV2__checkmark--checked__EfxQ9\",\"c-CheckboxV2__error\":\"CheckboxV2_c-CheckboxV2__error__1clbv\"};","import keys from '../../config/keys';\n\nconst useNewMPPageRedirection = ({ queryString, communityId, newPagePath }) => {\n if (keys.newMemberPortalRedirection) {\n const params = new URLSearchParams(queryString);\n\n if (communityId) {\n params.append('activeCommunityId', communityId);\n }\n\n window.location.href = `${\n process.env.REACT_APP_NASIO_BASE_URL\n }${newPagePath}?${params.toString()}`;\n return true;\n }\n\n return false;\n};\n\nexport default useNewMPPageRedirection;\n","import {\n bookingCancellationURL,\n bookingRegistrationURL,\n sharedRequestOptions,\n} from './constants';\n\nimport { getAxiosError } from '../../services/helper';\nimport protectedAxiosRequest from '../../services/helper/protectedAxiosRequest';\n\nexport const bookTrainerForCalendly = async (\n communityId,\n eventUri,\n inviteeUri\n) => {\n try {\n return await protectedAxiosRequest.post(\n bookingRegistrationURL(communityId),\n { eventUri, inviteeUri },\n sharedRequestOptions\n );\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const cancelTrainerBookingForCalendly = async (\n communityId,\n cancelReason\n) => {\n try {\n return await protectedAxiosRequest.put(\n bookingCancellationURL(communityId),\n { cancelReason },\n sharedRequestOptions\n );\n } catch (error) {\n return getAxiosError(error);\n }\n};\n","export const countryList = [\n {\n name: 'Singapore',\n id: 153,\n dialCode: '+65',\n wisenetCode: '5205',\n shortCode: 'SG',\n },\n {\n name: 'United Kingdom',\n id: 63,\n dialCode: '+44',\n wisenetCode: '2100',\n shortCode: 'GB',\n },\n {\n name: 'United States of America',\n id: 184,\n dialCode: '+1',\n wisenetCode: '8104',\n shortCode: 'US',\n },\n {\n name: 'Afghanistan',\n id: 1,\n dialCode: '+93',\n wisenetCode: '7201',\n shortCode: 'AF',\n },\n {\n name: 'Albania',\n id: 3,\n dialCode: '+355',\n wisenetCode: '3201',\n shortCode: 'AL',\n },\n {\n name: 'Algeria',\n id: 50,\n dialCode: '+213',\n wisenetCode: '4101',\n shortCode: 'DZ',\n },\n {\n name: 'Andorra',\n id: 4,\n dialCode: '+376',\n wisenetCode: '3101',\n shortCode: 'AD',\n },\n {\n name: 'Angola',\n id: 2,\n dialCode: '+244',\n wisenetCode: '9201',\n shortCode: 'AO',\n },\n {\n name: 'Antigua and Barbuda',\n id: 8,\n dialCode: '+1268',\n wisenetCode: '8402',\n shortCode: 'AG',\n },\n {\n name: 'Argentina',\n id: 6,\n dialCode: '+54',\n wisenetCode: '8201',\n shortCode: 'AR',\n },\n {\n name: 'Armenia',\n id: 7,\n dialCode: '+374',\n wisenetCode: '7202',\n shortCode: 'AM',\n },\n {\n name: 'Australia',\n id: 9,\n dialCode: '+61',\n wisenetCode: '1101',\n shortCode: 'AU',\n },\n {\n name: 'Austria',\n id: 10,\n dialCode: '+43',\n wisenetCode: '2301',\n shortCode: 'AT',\n },\n {\n name: 'Azerbaijan',\n id: 11,\n dialCode: '+994',\n wisenetCode: '7203',\n shortCode: 'AZ',\n },\n {\n name: 'Bahamas',\n id: 19,\n dialCode: '+1242',\n wisenetCode: '8404',\n shortCode: 'BS',\n },\n {\n name: 'Bahrain',\n id: 18,\n dialCode: '+973',\n wisenetCode: '4201',\n shortCode: 'BH',\n },\n {\n name: 'Bangladesh',\n id: 16,\n dialCode: '+880',\n wisenetCode: '7101',\n shortCode: 'BD',\n },\n {\n name: 'Barbados',\n id: 25,\n dialCode: '+1246',\n wisenetCode: '8405',\n shortCode: 'BB',\n },\n {\n name: 'Belarus',\n id: 21,\n dialCode: '+375',\n wisenetCode: '3301',\n shortCode: 'BY',\n },\n {\n name: 'Belgium',\n id: 13,\n dialCode: '+32',\n wisenetCode: '2302',\n shortCode: 'BE',\n },\n {\n name: 'Belize',\n id: 22,\n dialCode: '+501',\n wisenetCode: '8301',\n shortCode: 'BZ',\n },\n {\n name: 'Benin',\n id: 14,\n dialCode: '+229',\n wisenetCode: '9101',\n shortCode: 'BJ',\n },\n {\n name: 'Bhutan',\n id: 27,\n dialCode: '+975',\n wisenetCode: '7102',\n shortCode: 'BT',\n },\n {\n name: 'Bolivia',\n id: '23',\n dialCode: '+591',\n wisenetCode: '8202',\n shortCode: 'BO',\n },\n {\n name: 'Bosnia and Herzegovina',\n id: 20,\n dialCode: '+387',\n wisenetCode: '3202',\n shortCode: 'BA',\n },\n {\n name: 'Botswana',\n id: 28,\n dialCode: '+267',\n wisenetCode: '9202',\n shortCode: 'BW',\n },\n {\n name: 'Brazil',\n id: 24,\n dialCode: '+55',\n wisenetCode: '8203',\n shortCode: 'BR',\n },\n {\n name: 'Brunei Darussalam',\n id: 26,\n dialCode: '+673',\n wisenetCode: '5201',\n shortCode: 'BN',\n },\n {\n name: 'Bulgaria',\n id: 17,\n dialCode: '+359',\n wisenetCode: '3203',\n shortCode: 'BG',\n },\n {\n name: 'Burkina Faso',\n id: 15,\n dialCode: '+226',\n wisenetCode: '9102',\n shortCode: 'BF',\n },\n {\n name: 'Burundi',\n id: 12,\n dialCode: '+257',\n wisenetCode: '9203',\n shortCode: 'BI',\n },\n {\n name: 'Cambodia',\n id: 92,\n dialCode: '+855',\n wisenetCode: '5102',\n shortCode: 'KH',\n },\n {\n name: 'Cameroon',\n id: 35,\n dialCode: '+237',\n wisenetCode: '9103',\n shortCode: 'CM',\n },\n {\n name: 'Canada',\n id: 30,\n dialCode: '+1',\n wisenetCode: '8102',\n shortCode: 'CA',\n },\n {\n name: 'CapeVerde',\n id: '40',\n dialCode: '+238',\n wisenetCode: '9104',\n shortCode: 'CV',\n },\n {\n name: 'Central African Republic',\n id: 29,\n dialCode: '+236',\n wisenetCode: '9105',\n shortCode: 'CF',\n },\n {\n name: 'Chad',\n id: 168,\n dialCode: '+235',\n wisenetCode: '9106',\n shortCode: 'TD',\n },\n {\n name: 'Chile',\n id: 32,\n dialCode: '+56',\n wisenetCode: '8204',\n shortCode: 'CL',\n },\n {\n name: 'China',\n id: 33,\n dialCode: '+86',\n wisenetCode: '6101',\n shortCode: 'CN',\n },\n {\n name: 'Colombia',\n id: 38,\n dialCode: '+57',\n wisenetCode: '8205',\n shortCode: 'CO',\n },\n {\n name: 'Comoros',\n id: 39,\n dialCode: '+269',\n wisenetCode: '9204',\n shortCode: 'KM',\n },\n {\n name: \"People's Republic of the Congo\",\n id: '37',\n dialCode: '+242',\n wisenetCode: '9107',\n shortCode: 'CG',\n },\n {\n name: 'Democratic Republic of the Congo',\n id: '36',\n dialCode: '+243',\n wisenetCode: '9108',\n shortCode: 'CD',\n },\n {\n name: 'Costa Rica',\n id: 41,\n dialCode: '+506',\n wisenetCode: '8302',\n shortCode: 'CR',\n },\n {\n name: 'Croatia',\n id: 75,\n dialCode: '+385',\n wisenetCode: '3204',\n shortCode: 'HR',\n },\n {\n name: 'Cuba',\n id: 42,\n dialCode: '+53',\n wisenetCode: '8407',\n shortCode: 'CU',\n },\n {\n name: 'Cyprus',\n id: 43,\n dialCode: '+357',\n wisenetCode: '3205',\n shortCode: 'CY',\n },\n {\n name: 'Czech Republic',\n id: 44,\n dialCode: '+420',\n wisenetCode: '3302',\n shortCode: 'CZ',\n },\n {\n name: 'Denmark',\n id: 48,\n dialCode: '+45',\n wisenetCode: '2401',\n shortCode: 'DK',\n },\n {\n name: 'Djibouti',\n id: 46,\n dialCode: '+253',\n wisenetCode: '9205',\n shortCode: 'DJ',\n },\n {\n name: 'Dominica',\n id: 47,\n dialCode: '+1767',\n wisenetCode: '8408',\n shortCode: 'DM',\n },\n {\n name: 'Dominican Republic',\n id: 49,\n dialCode: '+1',\n wisenetCode: '8411',\n shortCode: 'DO',\n },\n {\n name: 'Timor-Leste',\n id: 173,\n dialCode: '+670',\n wisenetCode: '5206',\n shortCode: 'TL',\n },\n {\n name: 'Ecuador',\n id: 51,\n dialCode: '+593',\n wisenetCode: '8206',\n shortCode: 'EC',\n },\n {\n name: 'Egypt',\n id: 52,\n dialCode: '+20',\n wisenetCode: '4102',\n shortCode: 'EG',\n },\n {\n name: 'El Salvador',\n id: 156,\n dialCode: '+503',\n wisenetCode: '8303',\n shortCode: 'SV',\n },\n {\n name: 'Equatorial Guinea',\n id: 69,\n dialCode: '+240',\n wisenetCode: '9112',\n shortCode: 'GQ',\n },\n {\n name: 'Eritrea',\n id: 53,\n dialCode: '+291',\n wisenetCode: '9206',\n shortCode: 'ER',\n },\n {\n name: 'Estonia',\n id: 56,\n dialCode: '+372',\n wisenetCode: '3303',\n shortCode: 'EE',\n },\n {\n name: 'Ethiopia',\n id: 57,\n dialCode: '+251',\n wisenetCode: '9207',\n shortCode: 'ET',\n },\n {\n name: 'Fiji',\n id: 59,\n dialCode: '+679',\n wisenetCode: '1502',\n shortCode: 'FJ',\n },\n {\n name: 'Finland',\n id: 58,\n dialCode: '+358',\n wisenetCode: '2403',\n shortCode: 'FI',\n },\n {\n name: 'France',\n id: 60,\n dialCode: '+33',\n wisenetCode: '2303',\n shortCode: 'FR',\n },\n {\n name: 'Gabon',\n id: 62,\n dialCode: '+241',\n wisenetCode: '9113',\n shortCode: 'GA',\n },\n {\n name: 'Gambia',\n id: 67,\n dialCode: '+220',\n wisenetCode: '9114',\n shortCode: 'GM',\n },\n {\n name: 'Georgia',\n id: 64,\n dialCode: '+995',\n wisenetCode: '7204',\n shortCode: 'GE',\n },\n {\n name: 'Germany',\n id: 45,\n dialCode: '+49',\n wisenetCode: '2304',\n shortCode: 'DE',\n },\n {\n name: 'Ghana',\n id: 65,\n dialCode: '+233',\n wisenetCode: '9115',\n shortCode: 'GH',\n },\n {\n name: 'Greece',\n id: 70,\n dialCode: '+30',\n wisenetCode: '3207',\n shortCode: 'GR',\n },\n {\n name: 'Grenada',\n id: 71,\n dialCode: '+1473',\n wisenetCode: '8412',\n shortCode: 'GD',\n },\n {\n name: 'Guatemala',\n id: 72,\n dialCode: '+502',\n wisenetCode: '8304',\n shortCode: 'GT',\n },\n {\n name: 'Guinea',\n id: 66,\n dialCode: '+224',\n wisenetCode: '9116',\n shortCode: 'GN',\n },\n {\n name: 'Guinea-Bissau',\n id: 68,\n dialCode: '+245',\n wisenetCode: '9117',\n shortCode: 'GW',\n },\n {\n name: 'Guyana',\n id: 73,\n dialCode: '+592',\n wisenetCode: '8211',\n shortCode: 'GY',\n },\n {\n name: 'Haiti',\n id: 76,\n dialCode: '+509',\n wisenetCode: '8414',\n shortCode: 'HT',\n },\n {\n name: 'Honduras',\n id: 74,\n dialCode: '+504',\n wisenetCode: '8305',\n shortCode: 'HN',\n },\n {\n name: 'Hong Kong',\n id: 0,\n dialCode: '+852',\n wisenetCode: '',\n shortCode: 'HK',\n },\n {\n name: 'Hungary',\n id: 77,\n dialCode: '+36',\n wisenetCode: '3304',\n shortCode: 'HU',\n },\n {\n name: 'Iceland',\n id: 83,\n dialCode: '+354',\n wisenetCode: '2405',\n shortCode: 'IS',\n },\n {\n name: 'India',\n id: 79,\n dialCode: '+91',\n wisenetCode: '7103',\n shortCode: 'IN',\n },\n {\n name: 'Indonesia',\n id: 78,\n dialCode: '+62',\n wisenetCode: '5202',\n shortCode: 'ID',\n },\n {\n name: 'Iran',\n id: '81',\n dialCode: '+98',\n wisenetCode: '4203',\n shortCode: 'IR',\n },\n {\n name: 'Iraq',\n id: 82,\n dialCode: '+964',\n wisenetCode: '4204',\n shortCode: 'IQ',\n },\n {\n name: 'Ireland',\n id: 80,\n dialCode: '+353',\n wisenetCode: '2201',\n shortCode: 'IE',\n },\n {\n name: 'Israel',\n id: 84,\n dialCode: '+972',\n wisenetCode: '4205',\n shortCode: 'IL',\n },\n {\n name: 'Italy',\n id: 85,\n dialCode: '+39',\n wisenetCode: '3104',\n shortCode: 'IT',\n },\n {\n name: 'Ivory Coast',\n id: '34',\n dialCode: '+225',\n wisenetCode: '9111',\n shortCode: 'IC',\n },\n {\n name: 'Jamaica',\n id: 86,\n dialCode: '+1876',\n wisenetCode: '8415',\n shortCode: 'JM',\n },\n {\n name: 'Japan',\n id: 88,\n dialCode: '+81',\n wisenetCode: '6201',\n shortCode: 'JP',\n },\n {\n name: 'Jordan',\n id: 87,\n dialCode: '+962',\n wisenetCode: '4206',\n shortCode: 'JO',\n },\n {\n name: 'Kazakhstan',\n id: 89,\n dialCode: '+77',\n wisenetCode: '7205',\n shortCode: 'KZ',\n },\n {\n name: 'Kenya',\n id: 90,\n dialCode: '+254',\n wisenetCode: '9208',\n shortCode: 'KE',\n },\n {\n name: 'Kiribati',\n id: 93,\n dialCode: '+686',\n wisenetCode: '1402',\n shortCode: 'KI',\n },\n {\n name: 'North Korea',\n id: '',\n dialCode: '+850',\n wisenetCode: '6202',\n shortCode: 'KP',\n },\n {\n name: 'South Korea',\n id: '95',\n dialCode: '+82',\n wisenetCode: '6203',\n shortCode: 'KR',\n },\n {\n name: 'Kosovo',\n id: '',\n dialCode: '+383',\n wisenetCode: '3216',\n shortCode: 'XK',\n },\n {\n name: 'Kuwait',\n id: 96,\n dialCode: '+965',\n wisenetCode: '4207',\n shortCode: 'KW',\n },\n {\n name: 'Kyrgyzstan',\n id: 91,\n dialCode: '+996',\n wisenetCode: '7206',\n shortCode: 'KG',\n },\n {\n name: 'Laos',\n id: '97',\n dialCode: '+856',\n wisenetCode: '5103',\n shortCode: 'LA',\n },\n {\n name: 'Latvia',\n id: 107,\n dialCode: '+371',\n wisenetCode: '3305',\n shortCode: 'LV',\n },\n {\n name: 'Lebanon',\n id: 98,\n dialCode: '+961',\n wisenetCode: '4208',\n shortCode: 'LB',\n },\n {\n name: 'Lesotho',\n id: 104,\n dialCode: '+266',\n wisenetCode: '9211',\n shortCode: 'LS',\n },\n {\n name: 'Liberia',\n id: 99,\n dialCode: '+231',\n wisenetCode: '9118',\n shortCode: 'LR',\n },\n {\n name: 'Libya',\n id: 100,\n dialCode: '+218',\n wisenetCode: '4103',\n shortCode: 'LY',\n },\n {\n name: 'Liechtenstein',\n id: 102,\n dialCode: '+423',\n wisenetCode: '2305',\n shortCode: 'LI',\n },\n {\n name: 'Lithuania',\n id: 105,\n dialCode: '+370',\n wisenetCode: '3306',\n shortCode: 'LT',\n },\n {\n name: 'Luxembourg',\n id: 106,\n dialCode: '+352',\n wisenetCode: '2306',\n shortCode: 'LU',\n },\n {\n name: 'Macedonia',\n id: '115',\n dialCode: '+389',\n wisenetCode: '3206',\n shortCode: 'MK',\n },\n {\n name: 'Madagascar',\n id: 111,\n dialCode: '+261',\n wisenetCode: '9212',\n shortCode: 'MG',\n },\n {\n name: 'Malawi',\n id: 124,\n dialCode: '+265',\n wisenetCode: '9213',\n shortCode: 'MW',\n },\n {\n name: 'Malaysia',\n id: 125,\n dialCode: '+60',\n wisenetCode: '5203',\n shortCode: 'MY',\n },\n {\n name: 'Maldives',\n id: 112,\n dialCode: '+960',\n wisenetCode: '7104',\n shortCode: 'MV',\n },\n {\n name: 'Mali',\n id: 116,\n dialCode: '+223',\n wisenetCode: '9121',\n shortCode: 'ML',\n },\n {\n name: 'Malta',\n id: 117,\n dialCode: '+356',\n wisenetCode: '3105',\n shortCode: 'MT',\n },\n {\n name: 'Marshall Islands',\n id: 114,\n dialCode: '+692',\n wisenetCode: '1403',\n shortCode: 'MH',\n },\n {\n name: 'Mauritania',\n id: 122,\n dialCode: '+222',\n wisenetCode: '9122',\n shortCode: 'MR',\n },\n {\n name: 'Mauritius',\n id: 123,\n dialCode: '+230',\n wisenetCode: '9214',\n shortCode: 'MU',\n },\n {\n name: 'Mexico',\n id: 113,\n dialCode: '+52',\n wisenetCode: '8306',\n shortCode: 'MX',\n },\n {\n name: 'Micronesia',\n id: '61',\n dialCode: '+691',\n wisenetCode: '1404',\n shortCode: 'FM',\n },\n {\n name: 'Moldova',\n id: '110',\n dialCode: '+373',\n wisenetCode: '3208',\n shortCode: 'MD',\n },\n {\n name: 'Monaco',\n id: 109,\n dialCode: '+377',\n wisenetCode: '2307',\n shortCode: 'MC',\n },\n {\n name: 'Mongolia',\n id: 120,\n dialCode: '+976',\n wisenetCode: '6104',\n shortCode: 'MN',\n },\n {\n name: 'Montenegro',\n id: 119,\n dialCode: '+382',\n wisenetCode: '3214',\n shortCode: 'ME',\n },\n {\n name: 'Morocco',\n id: 108,\n dialCode: '+212',\n wisenetCode: '4104',\n shortCode: 'MA',\n },\n {\n name: 'Mozambique',\n id: 121,\n dialCode: '+258',\n wisenetCode: '9216',\n shortCode: 'MZ',\n },\n {\n name: 'Myanmar (Burma)',\n id: '118',\n dialCode: '+95',\n wisenetCode: '5101',\n shortCode: 'MM',\n },\n {\n name: 'Namibia',\n id: 126,\n dialCode: '+264',\n wisenetCode: '9217',\n shortCode: 'NA',\n },\n {\n name: 'Nauru',\n id: 133,\n dialCode: '+674',\n wisenetCode: '1405',\n shortCode: 'NR',\n },\n {\n name: 'Nepal',\n id: 132,\n dialCode: '+977',\n wisenetCode: '7105',\n shortCode: 'NP',\n },\n {\n name: 'Netherlands',\n id: 130,\n dialCode: '+31',\n wisenetCode: '2308',\n shortCode: 'NL',\n },\n {\n name: 'New Zealand',\n id: 134,\n dialCode: '+64',\n wisenetCode: '1201',\n shortCode: 'NZ',\n },\n {\n name: 'Nicaragua',\n id: 129,\n dialCode: '+505',\n wisenetCode: '8307',\n shortCode: 'NI',\n },\n {\n name: 'Niger',\n id: 127,\n dialCode: '+227',\n wisenetCode: '9123',\n shortCode: 'NE',\n },\n {\n name: 'Nigeria',\n id: 128,\n dialCode: '+234',\n wisenetCode: '9124',\n shortCode: 'NG',\n },\n {\n name: 'Norway',\n id: 131,\n dialCode: '+47',\n wisenetCode: '2406',\n shortCode: 'NO',\n },\n {\n name: 'Oman',\n id: 135,\n dialCode: '+968',\n wisenetCode: '4211',\n shortCode: 'OM',\n },\n {\n name: 'Pakistan',\n id: 136,\n dialCode: '+92',\n wisenetCode: '7106',\n shortCode: 'PK',\n },\n {\n name: 'Palau',\n id: 140,\n dialCode: '+680',\n wisenetCode: '1407',\n shortCode: 'PW',\n },\n {\n name: 'Panama',\n id: 137,\n dialCode: '+507',\n wisenetCode: '8308',\n shortCode: 'PA',\n },\n {\n name: 'Papua New Guinea',\n id: 141,\n dialCode: '+675',\n wisenetCode: '1302',\n shortCode: 'PG',\n },\n {\n name: 'Paraguay',\n id: 144,\n dialCode: '+595',\n wisenetCode: '8212',\n shortCode: 'PY',\n },\n {\n name: 'Peru',\n id: 138,\n dialCode: '+51',\n wisenetCode: '8213',\n shortCode: 'PE',\n },\n {\n name: 'Philippines',\n id: 139,\n dialCode: '+63',\n wisenetCode: '5204',\n shortCode: 'PH',\n },\n {\n name: 'Poland',\n id: 142,\n dialCode: '+48',\n wisenetCode: '3307',\n shortCode: 'PL',\n },\n {\n name: 'Portugal',\n id: 143,\n dialCode: '+351',\n wisenetCode: '3106',\n shortCode: 'PT',\n },\n {\n name: 'Qatar',\n id: 146,\n dialCode: '+974',\n wisenetCode: '4212',\n shortCode: 'QA',\n },\n {\n name: 'Romania',\n id: 147,\n dialCode: '+40',\n wisenetCode: '3211',\n shortCode: 'RO',\n },\n {\n name: 'Russia',\n id: '148',\n dialCode: '+7',\n wisenetCode: '3308',\n shortCode: 'RU',\n },\n {\n name: 'Rwanda',\n id: 149,\n dialCode: '+250',\n wisenetCode: '9221',\n shortCode: 'RW',\n },\n {\n name: 'Saint Kitts and Nevis',\n id: 94,\n dialCode: '+1869',\n wisenetCode: '8422',\n shortCode: 'KN',\n },\n {\n name: 'Saint Lucia',\n id: 101,\n dialCode: '+1758',\n wisenetCode: '8423',\n shortCode: 'LC',\n },\n {\n name: 'Saint Vincent and the Grenadines',\n id: '187',\n dialCode: '+1784',\n wisenetCode: '8424',\n shortCode: 'VC',\n },\n {\n name: 'Samoa',\n id: 191,\n dialCode: '+685',\n wisenetCode: '1505',\n shortCode: 'WS',\n },\n {\n name: 'San Marino',\n id: 157,\n dialCode: '+378',\n wisenetCode: '3107',\n shortCode: 'SM',\n },\n {\n name: 'Sao Tomé and Principe',\n id: '160',\n dialCode: '+239',\n wisenetCode: '9125',\n shortCode: 'ST',\n },\n {\n name: 'Saudi Arabia',\n id: 150,\n dialCode: '+966',\n wisenetCode: '4213',\n shortCode: 'SA',\n },\n {\n name: 'Senegal',\n id: 152,\n dialCode: '+221',\n wisenetCode: '9126',\n shortCode: 'SN',\n },\n {\n name: 'Serbia',\n id: 159,\n dialCode: '+381',\n wisenetCode: '3215',\n shortCode: 'RS',\n },\n {\n name: 'Seychelles',\n id: 166,\n dialCode: '+248',\n wisenetCode: '9223',\n shortCode: 'SC',\n },\n {\n name: 'Sierra Leone',\n id: 155,\n dialCode: '+232',\n wisenetCode: '9127',\n shortCode: 'SL',\n },\n {\n name: 'Slovakia',\n id: 162,\n dialCode: '+421',\n wisenetCode: '3311',\n shortCode: 'SK',\n },\n {\n name: 'Slovenia',\n id: 163,\n dialCode: '+386',\n wisenetCode: '3212',\n shortCode: 'SI',\n },\n {\n name: 'Solomon Islands',\n id: 154,\n dialCode: '+677',\n wisenetCode: '1303',\n shortCode: 'SB',\n },\n {\n name: 'Somalia',\n id: 158,\n dialCode: '+252',\n wisenetCode: '9224',\n shortCode: 'SO',\n },\n {\n name: 'South Africa',\n id: 193,\n dialCode: '+27',\n wisenetCode: '9225',\n shortCode: 'ZA',\n },\n {\n name: 'South Sudan',\n id: 197,\n dialCode: '+211',\n wisenetCode: '4111',\n shortCode: 'SS',\n },\n {\n name: 'Spain',\n id: 55,\n dialCode: '+34',\n wisenetCode: '3108',\n shortCode: 'ES',\n },\n {\n name: 'Sri Lanka',\n id: 103,\n dialCode: '+94',\n wisenetCode: '7107',\n shortCode: 'LK',\n },\n {\n name: 'Sudan',\n id: 151,\n dialCode: '+249',\n wisenetCode: '4105',\n shortCode: 'SD',\n },\n {\n name: 'Suriname',\n id: 161,\n dialCode: '+597',\n wisenetCode: '8214',\n shortCode: 'SR',\n },\n {\n name: 'Swaziland',\n id: 165,\n dialCode: '+268',\n wisenetCode: '9226',\n shortCode: 'SZ',\n },\n {\n name: 'Sweden',\n id: 164,\n dialCode: '+46',\n wisenetCode: '2407',\n shortCode: 'SE',\n },\n {\n name: 'Switzerland',\n id: 31,\n dialCode: '+41',\n wisenetCode: '2311',\n shortCode: 'CH',\n },\n {\n name: 'Syrian Arab Republic',\n id: 167,\n dialCode: '+963',\n wisenetCode: '4214',\n shortCode: 'SY',\n },\n {\n name: 'Taiwan',\n id: '179',\n dialCode: '+886',\n wisenetCode: '6105',\n shortCode: 'TW',\n },\n {\n name: 'Tajikistan',\n id: 171,\n dialCode: '+992',\n wisenetCode: '7207',\n shortCode: 'TJ',\n },\n {\n name: 'Tanzania',\n id: '180',\n dialCode: '+255',\n wisenetCode: '9227',\n shortCode: 'TZ',\n },\n {\n name: 'Thailand',\n id: 170,\n dialCode: '+66',\n wisenetCode: '5104',\n shortCode: 'TH',\n },\n {\n name: 'Togo',\n id: 169,\n dialCode: '+228',\n wisenetCode: '9128',\n shortCode: 'TG',\n },\n {\n name: 'Tonga',\n id: 174,\n dialCode: '+676',\n wisenetCode: '1508',\n shortCode: 'TO',\n },\n {\n name: 'Trinidad and Tobago',\n id: 175,\n dialCode: '+1868',\n wisenetCode: '8425',\n shortCode: 'TT',\n },\n {\n name: 'Tunisia',\n id: 176,\n dialCode: '+216',\n wisenetCode: '4106',\n shortCode: 'TN',\n },\n {\n name: 'Turkey',\n id: 177,\n dialCode: '+90',\n wisenetCode: '4215',\n shortCode: 'TR',\n },\n {\n name: 'Turkmenistan',\n id: 172,\n dialCode: '+993',\n wisenetCode: '7208',\n shortCode: 'TM',\n },\n {\n name: 'Tuvalu',\n id: 178,\n dialCode: '+688',\n wisenetCode: '1511',\n shortCode: 'TV',\n },\n {\n name: 'Uganda',\n id: 181,\n dialCode: '+256',\n wisenetCode: '9228',\n shortCode: 'UG',\n },\n {\n name: 'Ukraine',\n id: 182,\n dialCode: '+380',\n wisenetCode: '3312',\n shortCode: 'UA',\n },\n {\n name: 'United Arab Emirates',\n id: 5,\n dialCode: '+971',\n wisenetCode: '4216',\n shortCode: 'AE',\n },\n {\n name: 'Uruguay',\n id: 183,\n dialCode: '+598',\n wisenetCode: '8215',\n shortCode: 'UY',\n },\n {\n name: 'Uzbekistan',\n id: 185,\n dialCode: '+998',\n wisenetCode: '7211',\n shortCode: 'UZ',\n },\n {\n name: 'Vanuatu',\n id: 190,\n dialCode: '+678',\n wisenetCode: '1304',\n shortCode: 'VU',\n },\n {\n name: 'Vatican City',\n id: '186',\n dialCode: '+379',\n wisenetCode: '3103',\n shortCode: 'VA',\n },\n {\n name: 'Venezuela',\n id: '188',\n dialCode: '+58',\n wisenetCode: '8216',\n shortCode: 'VE',\n },\n {\n name: 'Vietnam',\n id: 189,\n dialCode: '+84',\n wisenetCode: '5105',\n shortCode: 'VN',\n },\n {\n name: 'Yemen',\n id: 192,\n dialCode: '+967',\n wisenetCode: '4217',\n shortCode: 'YE',\n },\n {\n name: 'Zambia',\n id: 194,\n dialCode: '+260',\n wisenetCode: '9231',\n shortCode: 'ZM',\n },\n {\n name: 'Zimbabwe',\n id: 195,\n dialCode: '+263',\n wisenetCode: '9232',\n shortCode: 'ZW',\n },\n];\n","const { useCallback } = require('react');\nconst { useEffect } = require('react');\nconst { useState } = require('react');\nconst { useSelector } = require('react-redux');\nconst {\n getCommunityInvoices,\n} = require('../apiServices/communityInvoiceService');\n\nconst useCommunitiesInvoiceData = (communityCode) => {\n const user = useSelector((state) => state.auth.user);\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState([]);\n const [error, setError] = useState(null);\n const [activeCommunityCode, setActiveCommunityCode] = useState(communityCode);\n\n const fetchAndSetData = useCallback(async () => {\n if (user?.email && communityCode) {\n setLoading(true);\n const invoices = await getCommunityInvoices(communityCode, user.email);\n if (invoices?.error) {\n setError(invoices.error);\n } else {\n setData(invoices.data);\n }\n setLoading(false);\n } else {\n setData([]);\n setLoading(false);\n }\n }, [communityCode, user?.email]);\n\n useEffect(() => {\n if (activeCommunityCode !== communityCode) {\n setActiveCommunityCode(communityCode);\n fetchAndSetData();\n }\n }, [activeCommunityCode, communityCode, fetchAndSetData]);\n\n return {\n invoices: data,\n loading,\n };\n};\n\nexport default useCommunitiesInvoiceData;\n","import React from 'react';\n\nconst className = 'c-DribbleIconV2Colored';\nconst DribbleIconV2Colored = ({ customClassName }) => {\n return (\n \n \n \n );\n};\n\nexport default DribbleIconV2Colored;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"showToast\":\"ToastContainer_showToast__2Yg8Q\",\"toastFadeIn\":\"ToastContainer_toastFadeIn__Z4oNU\",\"hideToast\":\"ToastContainer_hideToast__2WGlP\",\"toastFadeOut\":\"ToastContainer_toastFadeOut___Qbkj\"};","import {\n DISCOVER_MORE_CLASSES_LINK,\n DISCOVER_MORE_LINK,\n EVENT_LOCATION_TEXT,\n} from '../constants';\nimport {\n EVENTS_PAGE,\n HOME_PAGE,\n LIBRARY_PAGE,\n MEET_AN_EXPERT_PAGE,\n MEMBERS_PAGE,\n} from '../constants/pages';\n\nimport Auth from '../../modules/auth.js';\nimport config from '../../modules/config.js';\nimport {\n EVENT_TYPE_IN_PERSON,\n EVENT_TYPE_LIVE,\n} from '../pages/LiveSessionsPage/constants';\n\nexport const openInNewTab = (url) => {\n const newWindow = window.open(url, '_blank', 'noopener,noreferrer');\n if (newWindow) newWindow.opener = null;\n};\n\nexport const openManagerPortal = (communityId) => {\n const {\n tokens: uriToken,\n refreshToken: uriRefreshToken,\n } = Auth.getUriTokens();\n const accessToken =\n uriToken && uriToken !== '' ? uriToken : Auth.getUserToken();\n const refreshToken =\n uriRefreshToken && uriRefreshToken !== ''\n ? uriRefreshToken\n : Auth.getRefreshToken();\n openInNewTab(\n `${process.env.REACT_APP_NASIO_BASE_URL}/portal?token=${accessToken}&refreshToken=${refreshToken}&activeCommunityId=${communityId}`\n );\n};\n\nexport const getActiveCommunityPortalPage = () => {\n let activePage = HOME_PAGE.name;\n const pathItems = window.location.pathname.split('/');\n\n const pagesData = [\n { name: MEET_AN_EXPERT_PAGE.name, endpoint: MEET_AN_EXPERT_PAGE.endpoint },\n {\n name: EVENTS_PAGE.name,\n endpoint: EVENTS_PAGE.endpoint,\n },\n {\n name: LIBRARY_PAGE.name,\n endpoint: LIBRARY_PAGE.endpoint,\n },\n {\n name: MEMBERS_PAGE.name,\n endpoint: MEMBERS_PAGE.endpoint,\n },\n { name: HOME_PAGE.name, endpoint: HOME_PAGE.endpoint },\n ];\n for (let i = 0; i < pagesData.length; i++) {\n if (pathItems.includes(pagesData[i].endpoint)) {\n activePage = pagesData[i].name;\n break;\n }\n }\n\n return activePage;\n};\n\nexport const discoverCommunitiesLinkOpener = () => {\n openInNewTab(DISCOVER_MORE_LINK);\n};\n\nexport const discoverClassesLinkOpener = () => {\n openInNewTab(DISCOVER_MORE_CLASSES_LINK);\n};\n\nexport const resolveEventSlugUrl = (communityLink, slug) => {\n const communityLinkWithoutSlash = communityLink.replace(/\\//g, '');\n const slugWithoutSlash = slug.replace(/\\//g, '');\n if (config.isDevEnv) {\n return `http://localhost:3000/${communityLinkWithoutSlash}/${slugWithoutSlash}`;\n }\n return `https://nas.io/${communityLinkWithoutSlash}/${slugWithoutSlash}`;\n};\n\nexport const getEventProminentUrlProps = ({ t, eventInfo }) => {\n const EVENT_LOCATION_TEXT = {\n LIVE: t('online'),\n IN_PERSON: t('in-person'),\n };\n\n const isRegistered = eventInfo?.registered;\n\n if (eventInfo.type === EVENT_TYPE_LIVE) {\n const locationText = isRegistered\n ? eventInfo?.liveLink ?? EVENT_LOCATION_TEXT.LIVE\n : EVENT_LOCATION_TEXT.LIVE;\n return {\n type: eventInfo.type,\n text: locationText.trim(),\n showCopyIcon: locationText !== EVENT_LOCATION_TEXT.LIVE,\n };\n }\n\n if (eventInfo.type === EVENT_TYPE_IN_PERSON) {\n const locationText = isRegistered\n ? eventInfo?.inPersonLocation ?? EVENT_LOCATION_TEXT.IN_PERSON\n : EVENT_LOCATION_TEXT.IN_PERSON;\n return {\n type: eventInfo.type,\n text: locationText.trim(),\n showCopyIcon: locationText !== EVENT_LOCATION_TEXT.IN_PERSON,\n };\n }\n\n return {};\n};\n\nexport const getFormattedEventDescription = (event) => {\n if (!event) return '';\n\n if (event.type === EVENT_TYPE_LIVE)\n return `Meeting link: ${event.liveLink}\\n\\n${event?.description}`;\n if (event.type === EVENT_TYPE_IN_PERSON)\n return `Location: ${event.inPersonLocation}\\n\\n${event?.description} `;\n return '';\n};\n","import React from 'react';\nimport './Loading.scss';\n\nconst className = 'c-Loading';\n\nconst Loading = () =>
;\n\nexport default Loading;\n","import Loading from './Loading';\nexport default Loading;\n","import React from 'react';\n\nexport const MoreVerticalIcon = ({ fill, width, height }) => {\n return (\n \n \n \n );\n};\nMoreVerticalIcon.defaultProps = {\n width: 24,\n height: 24,\n fill: '#F2F2F2',\n};\n","import { MoreVerticalIcon } from './MoreVerticalIcon';\n\nexport default MoreVerticalIcon;","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst className = 'c-InfoCircleOutlineIcon';\nconst InfoCircleOutlineIcon = ({\n width,\n height,\n customClassNames,\n fillColor,\n}) => {\n return (\n \n \n \n \n \n );\n};\n\nInfoCircleOutlineIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n customClassNames: PropTypes.string,\n};\n\nInfoCircleOutlineIcon.defaultProps = {\n width: '16',\n height: '16',\n};\n\nexport default InfoCircleOutlineIcon;\n","import config from '../modules/config';\nimport {\n COMMUNITY_AUTO_RENEWAL_SOON,\n COMMUNITY_EXPIRED,\n COMMUNITY_GRACE_PERIOD,\n COMMUNITY_RENEWAL_AVAILABLE,\n} from './constants';\n\nexport const goToCommunityCheckout = ({\n activeCommunityData,\n email,\n expired,\n}) => {\n if (!activeCommunityData) return '';\n\n window.open(\n `${config.nasIOBaseUrl}/${\n config.checkoutEndpoint\n }?type=community&communityCode=${\n activeCommunityData?.code\n }&step=enroll&interval=month&intervalCount=1&slug=${activeCommunityData?.link\n ?.split('/')\n .join('')}&${expired ? '' : `renewal=true&`}email=${encodeURIComponent(\n email\n )}&requestor=`\n );\n};\n\nfunction isDateLessThanXDaysInFuture(date, x) {\n var currentDate = new Date();\n var futureDate = new Date(date);\n\n // Calculate the difference in milliseconds between the current date and the future date\n var differenceInMilliseconds = futureDate - currentDate;\n\n // Calculate the number of days from milliseconds\n var differenceInDays = differenceInMilliseconds / (1000 * 60 * 60 * 24);\n\n // Check if the difference is less than 10 days\n return differenceInDays > 0 && differenceInDays < x;\n}\n\nexport const getExpiredStatus = (communitySubscription) => {\n if (!communitySubscription) return null;\n\n const {\n status,\n cancelledAt,\n nextBillingDate,\n paymentProvider,\n recurringPurchase,\n } = communitySubscription;\n\n const cancelledAtDate = new Date(cancelledAt);\n const currentDate = new Date();\n\n // Membership is expired\n if (status === 'Cancelled' && cancelledAtDate < currentDate)\n return COMMUNITY_EXPIRED;\n\n // Stripe will attempt auto renewal 7 days before the next billing date\n if (\n status === 'Current' &&\n isDateLessThanXDaysInFuture(nextBillingDate, 7) &&\n paymentProvider === 'stripe'\n )\n return COMMUNITY_AUTO_RENEWAL_SOON;\n\n // If first recurring payment attempt failed and is in grace period (currently 7 days)\n if (\n status === 'Current' &&\n new Date(nextBillingDate) < new Date() &&\n paymentProvider === 'stripe'\n )\n return COMMUNITY_GRACE_PERIOD;\n\n // Stripe will attempt auto renewal 7 days before the next billing date\n if (\n status === 'Current' &&\n isDateLessThanXDaysInFuture(nextBillingDate, 7) &&\n paymentProvider === 'stripe-india' &&\n recurringPurchase\n )\n return COMMUNITY_AUTO_RENEWAL_SOON;\n\n // If first recurring payment attempt failed and is in grace period (currently 7 days)\n if (\n status === 'Current' &&\n new Date(nextBillingDate) < new Date() &&\n paymentProvider === 'stripe-india' &&\n recurringPurchase\n )\n return COMMUNITY_GRACE_PERIOD;\n\n // Renewal window is open for Stripe-india users 10 days before the next billing date\n if (\n status === 'Current' &&\n isDateLessThanXDaysInFuture(nextBillingDate, 10) &&\n paymentProvider === 'stripe-india'\n )\n return COMMUNITY_RENEWAL_AVAILABLE;\n\n return null;\n};\n","import { COMMUNITY_PORTAL_PATH, CREATOR_PORTAL_PATH } from '../constants';\n\nimport history from '../../modules/history';\n\nconst readCurrentPath = () => history.location.pathname;\nconst goToPortalPage = (path) => history.push(path);\n\nconst isOnCommunityPortal = () => {\n const pathItems = history.location.pathname.split('/');\n\n return pathItems.includes(COMMUNITY_PORTAL_PATH);\n};\n\nconst isOnCreatorPortal = () => {\n const pathItems = window.location.pathname.split('/');\n\n return pathItems.includes(CREATOR_PORTAL_PATH);\n};\n\nconst isOnSettingsPortal = () => {\n const pathItems = window.location.pathname.split('/');\n\n return pathItems.includes('setting');\n};\n\nconst prefixWithHttps = (url) => {\n if (url && !url.toLowerCase().startsWith('http')) {\n return `https://${url}`;\n }\n\n return url;\n};\n\nconst urlUtils = {\n readCurrentPath,\n goToPortalPage,\n isOnCommunityPortal,\n isOnCreatorPortal,\n isOnSettingsPortal,\n prefixWithHttps,\n};\n\nexport default urlUtils;\n","import React from 'react';\n\nconst CheckWithCircleIcon = () => {\n return (\n \n \n \n \n );\n};\n\nexport default CheckWithCircleIcon;\n","const clientId = process.env.REACT_APP_DISCORD_CLIENT_ID;\n\nexport const DISCORD_OAUTH_REDIRECT_URL = (redirectUrl) =>\n `https://discord.com/api/oauth2/authorize?client_id=${clientId}&redirect_uri=${encodeURIComponent(\n redirectUrl\n )}&response_type=token&scope=identify`;\n","import { getAxiosError } from '../../services/helper';\nimport keys from '../../config/keys';\nimport protectedAxiosRequest from '../../services/helper/protectedAxiosRequest';\n\nexport const getDiscordUserData = async (accessToken, learnerId) => {\n const url = `${keys.baseURL}/api/v1/discord-user-info`;\n try {\n const response = await protectedAxiosRequest.post(url, {\n accessToken,\n learnerId,\n });\n return {\n ...response,\n ...(response.avatar && {\n avatarUrl: `https://cdn.discordapp.com/avatars/${response.id}/${response.avatar}`,\n }),\n };\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const getDiscordUserRole = async (guildId, discordUserId) => {\n const url = `${keys.baseURL}/api/v1/communities/getDiscordRoles/${guildId}/${discordUserId}`;\n try {\n const response = await protectedAxiosRequest.post(url, {});\n return {\n ...response,\n };\n } catch (error) {\n return getAxiosError(error);\n }\n};\n\nexport const loginUsingDiscord = async (access_token) => {\n const url = `${keys.baseURL}/api/v1/discord-login`;\n try {\n const response = await protectedAxiosRequest.post(url, {\n accessToken: access_token,\n });\n return response;\n } catch (error) {\n return getAxiosError(error);\n }\n};\n","import TimeFormatter from './timeFormatter';\n\nexport const convertCourseTimeFromToMinAndHours = (timeInSecs) => {\n const hours = Math.floor(timeInSecs / 3600);\n const minutes = Math.floor((timeInSecs - hours * 3600) / 60);\n const remainingSecs = timeInSecs - hours * 3600 - minutes * 60;\n return {\n hours: hours > 0 ? hours : null,\n minutes: minutes > 0 ? minutes : null,\n secs: remainingSecs,\n };\n};\n\n// return 10h 30m 20s format\nexport const getFormattedTimeStrFromMs = (timeInMs) => {\n const { hours, minutes, secs } = convertCourseTimeFromToMinAndHours(\n timeInMs / 1000\n );\n let formattedStr = '';\n\n if (hours) formattedStr += `${hours}h`;\n if (minutes) formattedStr += ` ${minutes}m`;\n if (secs) formattedStr += ` ${secs}s`;\n\n return formattedStr.trim();\n};\n\nexport const convertSubUnitWatchTime = (durationInSecs, currentTimeInSecs) => {\n const formattedDuration = convertCourseTimeFromToMinAndHours(durationInSecs);\n const formattedRemainingTime = convertCourseTimeFromToMinAndHours(\n durationInSecs - currentTimeInSecs\n );\n return {\n durationMin: formattedDuration?.minutes,\n durationSecs: formattedDuration?.secs,\n durationHours: formattedDuration?.hours,\n remainingMin: formattedRemainingTime?.minutes,\n remainingSecs: formattedRemainingTime?.secs,\n remainingHours: formattedRemainingTime?.hours,\n };\n};\n\nexport const formatDateFromNow = (startDate) => {\n const now = new Date().toISOString();\n const countdown = TimeFormatter.calculateCountdown(startDate, now);\n const { sec, min, hours, days, years } = countdown;\n if (years > 0) {\n return new Date(startDate).toLocaleDateString();\n } else if (days > 0) {\n if (days > 31) {\n return new Date(startDate).toLocaleDateString();\n } else {\n return `${days} days ago`;\n }\n } else if (hours > 0) {\n return `${hours} hours ago`;\n } else if (min > 0) {\n return `${min} minutes ago`;\n } else if (sec > 0) {\n return `${sec} secs ago`;\n }\n};\n","import './Modal.scss';\n\nimport React, { useLayoutEffect } from 'react';\n\nimport CloseIcon from '../../../components/Icons/CloseIcon';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\n\n// FOR ALEK, PJ: temp copied from the old codebase\n\nconst Modal = ({\n open,\n onClose,\n closeOnBackdropClick,\n customBaseClass,\n customContainerClass,\n customInnerClass,\n customBackdropClass,\n customBaseStyle,\n customContainerStyle,\n customInnerStyle,\n customBackdropStyle,\n children,\n showCloseIcon,\n showCloseOnPageEnd,\n customCloseIcon,\n customCloseIconClass,\n}) => {\n const className = 'c-Modal';\n const baseClassNames = [className, open ? ` ${className}--open` : ''].join(\n ''\n );\n const modalEl = document.getElementById('modal');\n\n useLayoutEffect(() => {\n const originalStyle = window.getComputedStyle(document.body).overflow;\n\n if (document.body) {\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = originalStyle;\n }\n }\n\n return () => {\n if (document.body) return (document.body.style.overflow = 'visible');\n };\n }, [open]);\n\n if (!modalEl) return null;\n\n const handleBackdropClick = () => {\n if (closeOnBackdropClick) onClose();\n };\n\n return createPortal(\n \n \n {showCloseOnPageEnd && showCloseIcon && (\n \n {customCloseIcon ?? }\n
\n )}\n \n {!showCloseOnPageEnd && showCloseIcon && (\n \n {customCloseIcon ?? }\n \n )}\n \n {children}\n \n \n ,\n modalEl\n );\n};\n\nModal.defaultProps = {\n open: false,\n showCloseIcon: true,\n closeOnBackdropClick: true,\n showCloseOnPageEnd: false,\n customBaseClass: '',\n customContainerClass: '',\n customInnerClass: '',\n customBackdropClass: '',\n customCloseIconClass: '',\n customBaseStyle: {},\n customContainerStyle: {},\n customInnerStyle: {},\n customBackdropStyle: {},\n};\n\nModal.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n children: PropTypes.any.isRequired,\n closeOnBackdropClick: PropTypes.bool,\n customBaseClass: PropTypes.string.isRequired,\n customContainerClass: PropTypes.string.isRequired,\n customInnerClass: PropTypes.string.isRequired,\n customCloseIconClass: PropTypes.string,\n customBackdropClass: PropTypes.string,\n customBaseStyle: PropTypes.object,\n customContainerStyle: PropTypes.object,\n customInnerStyle: PropTypes.object,\n customBackdropStyle: PropTypes.object,\n showCloseIcon: PropTypes.bool,\n customCloseIcon: PropTypes.elementType,\n showCloseOnPageEnd: PropTypes.bool,\n};\n\nexport default Modal;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst CloseIcon = ({ width, height, strokeColor }) => (\n \n \n \n);\n\nCloseIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nCloseIcon.defaultProps = {\n width: '24',\n height: '24',\n strokeColor: '#222222',\n};\n\nexport default CloseIcon;\n","import NPLAlert from './NPLAlert';\nexport default NPLAlert;\n","import classNames from 'classnames';\nimport React from 'react';\nimport CloseIcon from '../Icons/CloseIcon';\nimport InfoCircleOutlineIcon from '../Icons/InfoCircleOutlineIcon/InfoCircleOutlineIcon';\n\nexport const NPLALERT_TYPE = { WARNING: 'warning' };\n\nconst getAlertClassnames = (type) => {\n switch (type) {\n case NPLALERT_TYPE.WARNING:\n return 'bg-npl-yellow-light-3 border-npl-yellow-light-6';\n default:\n return {};\n }\n};\n\nconst getAlertIcon = (type) => {\n switch (type) {\n case NPLALERT_TYPE.WARNING:\n return (\n \n );\n default:\n return {};\n }\n};\n\nconst NPLAlert = ({\n title,\n subtitle,\n type,\n customClassName,\n chin,\n onClose,\n}) => {\n const alertClassNames = getAlertClassnames(type);\n\n return (\n \n
\n
{getAlertIcon(type)}
\n
\n {title && (\n

\n {title}\n

\n )}\n {subtitle && (\n

\n {subtitle}\n

\n )}\n
\n
\n {chin}\n {onClose && (\n
\n \n
\n )}\n \n );\n};\n\nexport default NPLAlert;\n","import {\n basicInfoFormSchema,\n commentPreferenceFormSchema,\n socialMediaFormSchema,\n videoPreferenceFormSchema,\n} from '../utility/profileValidation';\nimport {\n dialCodeOptions,\n getDialCodeById,\n getPhoneNumberWithoutDial,\n} from '../utility/formHelper';\nimport {\n getProfileByRoleType,\n updateUserProfile,\n} from '../services/userProfile';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useEffect, useState } from 'react';\n\nimport Auth from '../modules/auth';\nimport { setUpdateProfileStatus } from '../actions/main';\nimport { setUser } from '../actions/user';\nimport { updateAuthUserData } from '../actions/auth';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\n\nconst isEqual = (obj1, obj2) =>\n obj1.firstName === obj2.firstName &&\n obj1.lastName === obj2.lastName &&\n obj1.description === obj2.description &&\n obj1.phoneNumber === obj2.phoneNumber &&\n obj1.whatsAppNumber === obj2.whatsAppNumber &&\n obj1.corporateEmail === obj2.corporateEmail &&\n obj1.corporateEmailSameAsLoginEmail === obj2.corporateEmailSameAsLoginEmail &&\n obj1.whatsAppNumberSameAsPhoneNumber === obj2.whatsAppNumberSameAsPhoneNumber;\n\n// TODo to refactor this hook\n// remove unused methods/constants\n\nconst useProfileData = ({ afterUserProfileUpdateCallback }) => {\n const user = useSelector((state) => state.user?.user);\n const dispatch = useDispatch();\n const updateProfileStatus = useSelector(\n (state) => state.main.updateProfileStatus\n );\n\n const [isLoading, setIsLoading] = useState(false);\n const [isBasicInfoUpdateLoading, setIsBasicInfoUpdateLoading] = useState(\n false\n );\n const [showStatus, setShowStatus] = useState(false);\n\n useEffect(() => {\n const AuthStr = 'Bearer '.concat(Auth.getUserToken());\n updateProfile(() => getProfileByRoleType(AuthStr), false);\n }, []);\n\n const {\n register: registerBasicInfo,\n handleSubmit: handleBasicInfoSubmit,\n errors: errorsBasicInfo,\n getValues: getBasicInfoValues,\n } = useForm({\n resolver: yupResolver(basicInfoFormSchema),\n mode: 'onTouched',\n });\n\n const {\n register: registerSocialMedia,\n handleSubmit: handleSocialMediaSubmit,\n errors: errorsSocialMedia,\n } = useForm({\n resolver: yupResolver(socialMediaFormSchema),\n mode: 'onTouched',\n });\n\n const {\n register: registerCommentPreference,\n handleSubmit: handleCommentPreferenceSubmit,\n errors: errorsCommentPreference,\n } = useForm({\n resolver: yupResolver(commentPreferenceFormSchema),\n mode: 'onTouched',\n });\n\n const {\n register: registerVideoPreference,\n handleSubmit: handleVideoPreferenceSubmit,\n errors: errorsVideoPreference,\n } = useForm({\n resolver: yupResolver(videoPreferenceFormSchema),\n mode: 'onTouched',\n });\n\n const [\n whatsAppNumberSameAsPhoneNumber,\n setWhatsAppNumberSameAsPhoneNumber,\n ] = useState(user?.whatsAppNumberSameAsPhoneNumber);\n\n const [\n corporateEmailSameAsLoginEmail,\n setCorporateEmailSameAsLoginEmail,\n ] = useState(user?.corporateEmailSameAsLoginEmail);\n\n const updateProfile = async (\n service,\n shouldUpdateStatus = true,\n field = 'Profile',\n afterUpdateCallback\n ) => {\n if (shouldUpdateStatus) setIsLoading(true);\n\n await service()\n .then((doc) => {\n // TODO this is temp fix for not setting promo code\n const promoCode = Auth.getUserData().promoCode;\n const updatedData = Object.assign({}, doc.data.profile, { promoCode });\n\n Auth.setUserData(updatedData);\n dispatch(setUser(updatedData));\n dispatch(updateAuthUserData(updatedData));\n if (shouldUpdateStatus)\n dispatch(setUpdateProfileStatus(`${field} Updated!`));\n if (afterUpdateCallback) {\n afterUpdateCallback();\n }\n })\n .catch((err) => {\n const message = err.response?.data?.message\n ? err.response.data.message\n : 'Something went wrong';\n if (shouldUpdateStatus) dispatch(setUpdateProfileStatus(message));\n });\n if (shouldUpdateStatus) {\n setIsLoading(false);\n statusPop();\n }\n };\n\n const statusPop = () => {\n setShowStatus(true);\n setTimeout(() => {\n dispatch(setUpdateProfileStatus(false));\n }, 5000);\n };\n\n const updateBasicInfo = async (data) => {\n setIsBasicInfoUpdateLoading(true);\n const phoneNumber = `${getDialCodeById(\n data.dialCodeId\n )}${data.phoneNumber.trim()}`;\n let updatedData = {\n firstName: data.firstName,\n lastName: data.lastName,\n whatsAppNumber: whatsAppNumberSameAsPhoneNumber\n ? ''\n : data.whatsAppNumber,\n description: data.description,\n whatsAppNumberSameAsPhoneNumber,\n phoneNumber: phoneNumber ? phoneNumber : user.phoneNumber,\n corporateEmail: corporateEmailSameAsLoginEmail ? '' : data.corporateEmail,\n corporateEmailSameAsLoginEmail: corporateEmailSameAsLoginEmail,\n countryId: data.countryId,\n };\n\n const AuthStr = 'Bearer '.concat(Auth.getUserToken());\n\n if (!isEqual(updatedData, user)) {\n await updateProfile(() => updateUserProfile(updatedData, AuthStr));\n // #TODO: remove this after fixing the issue on the backend\n // window.location.reload();\n }\n\n setIsBasicInfoUpdateLoading(false);\n };\n\n const updateSocialMedia = async (data) => {\n let updatedData = {\n socialMedia: [\n { type: 'facebook', link: data.facebook },\n { type: 'instagram', link: data.instagram },\n { type: 'youtube', link: data.youtube },\n { type: 'twitter', link: data.twitter },\n { type: 'linkedin', link: data.linkedin },\n { type: 'tiktok', link: data.tiktok },\n { type: 'opensea', link: data.opensea },\n { type: 'discord', link: data.discord },\n { type: 'dribble', link: data.dribble },\n ],\n };\n\n const AuthStr = 'Bearer '.concat(Auth.getUserToken());\n\n const isNotEqual = updatedData.socialMedia.some(\n (socialDetails, index) =>\n socialDetails?.link !== undefined && // Check that it is not undefined\n socialDetails?.link !== user.socialMedia[index]?.link // Check if old != new\n );\n\n if (isNotEqual) {\n await updateProfile(\n () => updateUserProfile(updatedData, AuthStr),\n true,\n 'Social Media',\n afterUserProfileUpdateCallback\n );\n }\n };\n\n const updateCommentPreference = async (data) => {\n const AuthStr = 'Bearer '.concat(Auth.getUserToken());\n const hasSubscribedToCommentEmails =\n data.hasSubscribedToCommentEmails === 'true';\n if (\n data.hasSubscribedToCommentEmails &&\n user.hasSubscribedToCommentEmails !== hasSubscribedToCommentEmails\n ) {\n data.hasSubscribedToCommentEmails = hasSubscribedToCommentEmails;\n await updateProfile(\n () => updateUserProfile(data, AuthStr),\n true,\n 'Comment Preference'\n );\n\n // #TODO: remove this after fixing the issue on the backend\n // window.location.reload();\n }\n };\n\n const updateVideoPreference = async (data) => {\n const AuthStr = 'Bearer '.concat(Auth.getUserToken());\n\n if (\n data.subtitlePreference &&\n user.subtitlePreference !== data.subtitlePreference\n ) {\n await updateProfile(\n () => updateUserProfile(data, AuthStr),\n true,\n 'Video Preference'\n );\n }\n };\n\n const updateDiscordLoginId = async (data) => {\n const AuthStr = 'Bearer '.concat(Auth.getUserToken());\n\n if (\n data.subtitlePreference &&\n user.subtitlePreference !== data.subtitlePreference\n ) {\n await updateProfile(\n () => updateUserProfile(data, AuthStr),\n true,\n 'Video Preference'\n );\n }\n };\n\n const basicInfoInputProps = [\n {\n label: 'First Name',\n name: 'firstName',\n defaultValue: user?.firstName,\n placeholder: 'First Name',\n required: true,\n errors: [errorsBasicInfo?.firstName],\n register: registerBasicInfo,\n },\n {\n label: 'Last Name',\n name: 'lastName',\n defaultValue: user?.lastName,\n placeholder: 'Last Name',\n required: true,\n errors: [errorsBasicInfo.lastName],\n register: registerBasicInfo,\n },\n {\n label: 'Country Code',\n name: 'dialCodeId',\n defaultValue: user?.countryId,\n placeholder: 'Country Code',\n optionsList: dialCodeOptions,\n type: 'dropdown',\n required: true,\n errors: [errorsBasicInfo.dialCodeId],\n register: registerBasicInfo,\n },\n {\n label: 'Phone Number',\n name: 'phoneNumber',\n defaultValue: getPhoneNumberWithoutDial(user?.phoneNumber),\n placeholder: 'Phone Number',\n required: true,\n fluid: true,\n errors: [errorsBasicInfo.phoneNumber],\n register: registerBasicInfo,\n },\n {\n label: 'WhatsApp Number',\n name: 'whatsAppNumber',\n defaultValue: user?.whatsAppNumber,\n placeholder: 'WhatsApp Number',\n withCheckbox: true,\n checkboxLabel: 'My WhatsApp number is same as my contact number above.',\n checkboxName: 'whatsAppNumberSameAsPhone',\n checked: whatsAppNumberSameAsPhoneNumber,\n handleChecking: () =>\n setWhatsAppNumberSameAsPhoneNumber(!whatsAppNumberSameAsPhoneNumber),\n register: registerBasicInfo,\n errors: [errorsBasicInfo.whatsAppNumber],\n fluid: true,\n },\n {\n label: 'Business Email',\n name: 'corporateEmail',\n defaultValue: user?.corporateEmail,\n placeholder: 'Business Email',\n withCheckbox: true,\n checkboxLabel: 'My business e-mail is the same as my log in e-mail.',\n checkboxName: 'corporateEmailSameAsLoginEmail',\n checked: corporateEmailSameAsLoginEmail,\n handleChecking: () =>\n setCorporateEmailSameAsLoginEmail(!corporateEmailSameAsLoginEmail),\n register: registerBasicInfo,\n errors: [errorsBasicInfo.corporateEmail],\n fluid: true,\n },\n {\n label: 'Bio',\n name: 'description',\n defaultValue: user?.description,\n placeholder: 'Bio',\n required: false,\n errors: [errorsBasicInfo.description],\n register: registerBasicInfo,\n fluid: true,\n },\n ];\n\n const getSocialMediaInputProps = () => {\n const defaultValues = {};\n\n user?.socialMedia?.forEach(({ type, link }) => {\n defaultValues[type] = link;\n });\n\n return [\n {\n label: 'Facebook',\n name: 'facebook',\n defaultValue: defaultValues?.facebook,\n placeholder: 'Facebook',\n required: false,\n errors: [errorsSocialMedia.facebook],\n register: registerSocialMedia,\n showLogo: true,\n },\n {\n label: 'Instagram',\n name: 'instagram',\n defaultValue: defaultValues?.instagram,\n placeholder: 'Instagram',\n required: false,\n errors: [errorsSocialMedia.instagram],\n register: registerSocialMedia,\n showLogo: true,\n },\n {\n label: 'YouTube',\n name: 'youtube',\n defaultValue: defaultValues?.youtube,\n placeholder: 'YouTube',\n register: registerSocialMedia,\n errors: [errorsSocialMedia.youtube],\n showLogo: true,\n },\n {\n label: 'Twitter',\n name: 'twitter',\n defaultValue: defaultValues?.twitter,\n placeholder: 'Twitter',\n register: registerSocialMedia,\n errors: [errorsSocialMedia.twitter],\n showLogo: true,\n },\n {\n label: 'LinkedIn',\n name: 'linkedin',\n defaultValue: defaultValues?.linkedin,\n placeholder: 'LinkedIn',\n register: registerSocialMedia,\n errors: [errorsSocialMedia.linkedin],\n showLogo: true,\n },\n ];\n };\n\n const commentPreferenceInputProps = [\n {\n label: '',\n name: 'hasSubscribedToCommentEmails',\n defaultValue: user?.hasSubscribedToCommentEmails,\n required: false,\n errors: [errorsCommentPreference.hasSubscribedToCommentEmails],\n register: registerCommentPreference,\n type: 'dropdown',\n onChange: handleCommentPreferenceSubmit(updateCommentPreference),\n optionsList: [\n {\n label: 'On',\n value: true,\n },\n {\n label: 'Off',\n value: false,\n },\n ],\n },\n ];\n\n const videoPreferenceInputProps = [\n {\n label: 'Video Subtitles',\n name: 'subtitlePreference',\n defaultValue: user?.subtitlePreference,\n required: false,\n errors: [errorsVideoPreference.subtitlePreference],\n register: registerVideoPreference,\n type: 'dropdown',\n onChange: handleVideoPreferenceSubmit(updateVideoPreference),\n optionsList: [\n {\n label: 'English',\n value: 'en',\n },\n {\n label: 'Arabic',\n value: 'ar',\n },\n {\n label: 'Bengali',\n value: 'bn',\n },\n {\n label: 'French',\n value: 'fr',\n },\n {\n label: 'Hebrew',\n value: 'he',\n },\n {\n label: 'Hindi',\n value: 'hi',\n },\n {\n label: 'Indonesian',\n value: 'id',\n },\n {\n label: 'Malay',\n value: 'ms',\n },\n {\n label: 'Portuguese',\n value: 'pt',\n },\n {\n label: 'Spanish',\n value: 'es',\n },\n {\n label: 'Japanese',\n value: 'ja',\n },\n {\n label: 'Tagalog',\n value: 'tl',\n },\n {\n label: 'Chinese-Simplified',\n value: 'zh-Hans',\n },\n {\n label: 'Chinese-Traditional',\n value: 'zh-Hant',\n },\n ],\n },\n ];\n\n return {\n user,\n updateProfileStatus,\n isLoading,\n showStatus,\n basicInfoInputProps,\n commentPreferenceInputProps,\n videoPreferenceInputProps,\n socialMediaInputProps: getSocialMediaInputProps(),\n updateBasicInfo: handleBasicInfoSubmit(updateBasicInfo),\n updateSocialMedia: updateSocialMedia,\n updateCommentPreference: handleCommentPreferenceSubmit(\n updateCommentPreference\n ),\n updateVideoPreference: handleVideoPreferenceSubmit(updateVideoPreference),\n updateSocialMediaHandleSubmit: handleSocialMediaSubmit,\n updateSocialMediaCallback: updateSocialMedia,\n errorsBasicInfo,\n registerBasicInfo,\n getBasicInfoValues,\n isBasicInfoUpdateLoading,\n };\n};\n\nexport default useProfileData;\n","import SingleSearchResultContainer from './SingleSearchResultContainer';\nexport default SingleSearchResultContainer;\n","import React, { useCallback } from 'react';\nimport history from '../../../../../modules/history';\n\nconst SingleSearchResultContainer = ({ searchData, setShowSearchDropDown }) => {\n const renderImage = useCallback(() => {\n return (\n \n );\n }, [searchData?.thumbnail, searchData?.type]);\n\n const renderContent = useCallback(() => {\n return (\n {\n // this is a folder\n const currentUrl = window.location.href;\n const newUrl = `${currentUrl}${\n currentUrl.slice(-1) !== '/' ? '/' : ''\n }${searchData?.communityFolderObjectId}`;\n history.push(newUrl);\n setShowSearchDropDown(false);\n }}\n >\n
{renderImage()}
{' '}\n
\n \n {' '}\n {searchData?.title?.slice(0, 40)}\n {searchData?.title?.length > 40 && '...'}\n \n
\n \n );\n }, [\n renderImage,\n searchData?._id,\n searchData?.communityFolderObjectId,\n searchData.folderType,\n searchData.title,\n searchData.type,\n setShowSearchDropDown,\n ]);\n\n return renderContent();\n};\n\nexport default SingleSearchResultContainer;\n","import React from 'react';\nimport SingleSearchResultContainer from '../../CommunityPortal/pages/LibraryPage/components/SingleSearchResultContainer';\n\nconst SearchBoxDropdown = ({ searchData, setShowSearchDropDown }) => {\n return (\n
\n
\n {searchData?.map((data, idx) => {\n if (data?.folderType) return null;\n\n return (\n \n );\n })}\n
\n
\n );\n};\n\nexport default SearchBoxDropdown;\n","import SearchBoxDropdown from './SearchBoxDropdown';\nexport default SearchBoxDropdown;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SettingIcon = ({\n width,\n height,\n displayType,\n fillColor,\n strokeColor,\n}) => {\n const className = 'c-SettingIcon';\n\n return (\n \n \n \n );\n};\n\nSettingIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n fillColor: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nSettingIcon.defaultProps = {\n width: '18',\n height: '19',\n fillColor: '#FBC91B',\n strokeColor: '#AAABAE',\n};\nexport default SettingIcon;\n","import SettingIcon from './SettingIcon';\nexport default SettingIcon;\n","import React from 'react';\n\nconst CopyIcon = () => {\n const className = 'c-CopyIcon';\n\n return (\n \n \n \n );\n};\n\nexport default CopyIcon;\n","import CopyIcon from './CopyIcon';\nexport default CopyIcon;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Loader\":\"LoadingCircle_Loader__rcTlw\",\"load8\":\"LoadingCircle_load8__2x_6M\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rmsc-global\":\"CancelModal_rmsc-global__36cFV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"c-CommunityAside\":\"Aside_c-CommunityAside__2A9uW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"c-SettingPage-NewPreferencesPage\":\"NewPreferences_c-SettingPage-NewPreferencesPage__1n1uS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"c-SettingsNavigation__left_nav_panel\":\"SettingsNavigation_c-SettingsNavigation__left_nav_panel__3cQxm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"c-FloatingLabelInput\":\"FloatingLabelInput_c-FloatingLabelInput__WLyt7\"};","import React from \"react\";\nimport classes from \"./ErrorPage.module.css\";\nimport { withRouter } from \"react-router\";\n\nconst ErrorPage = ({\n number = 404,\n what = \"page not found\",\n description = \"We can't seem to find the page you're looking for!\",\n}) => {\n return (\n
\n

\n ERROR\n {number}\n .\n

\n

{what}

\n

\n OOPS!{\" \"}\n {description}\n

\n \n \n \n
\n );\n};\n\nexport default withRouter(ErrorPage);\n","export const formatCentsIntToUSD = (cents) => cents / 100;\n\n// 100000 -> 100,000\n// 100000.0322 -> 100,000.03\nexport const formatNumber = (price) => {\n try {\n if (!price) return 0;\n\n return new Intl.NumberFormat().format(price);\n } catch {\n return price;\n }\n};\n","import {\n COMMUNITY_ONE_TIME_PAYMENT_ENTITIES,\n PAYMENT_FAILURE,\n PAYMENT_PENDING,\n PAYMENT_SUCCESS,\n} from './constants';\nimport {\n signUpForEntity,\n verifyPaymentForEntitySignUp,\n} from '../../services/checkoutServices/communityEventCheckoutServices';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { getQueryParams } from '../../utility/domHelpers';\nimport { showToast } from '../../CommunityPortal/components/ToastContainer';\nimport { useSelector } from 'react-redux';\nimport useStripePayment from './useStripePayment';\nimport useXenditPayment from './useXenditPayment';\nimport { trackGeneralEvent } from '../../utility/analytics';\nimport { useCommunityPortalContext } from '../../CommunityPortal/contexts/CommunityPortalContext';\nimport { removeAllToasts } from '../../CommunityPortal/components/ToastContainer/ToastContainer';\nimport useDiscount, { DISCOUNT_ENTITY_TYPE } from './useDiscount';\nimport {\n getDetailedStripeErrorMessage,\n getStripePublicKeyFromPaymentMethods,\n} from '../../pages/CheckoutPage/util';\nimport sessionStorageService from '../../utility/sessionStorageService';\nimport { useTranslation } from 'react-i18next';\n\nconst MAX_RETRIES_FOR_VERIFY_PAYMENT = 3;\nconst stripeModes = ['stripe', 'stripe-india', 'stripe-india-upi'];\n\nexport const COUNTRY_CHECKOUT_TYPE = {\n RECURRING: 'recurring',\n ONETIME: 'onetime',\n};\n\nconst usePayment = ({\n entityId,\n entityType,\n communityId,\n communityCode,\n postSignUpCallback,\n checkoutUrl,\n fetchedPaymentMethods,\n}) => {\n const { t } = useTranslation();\n const { activeCommunityData } = useCommunityPortalContext();\n const {\n discountInfo,\n isDiscountInfoLoading,\n discountCodeInput,\n setDiscountCodeInput,\n discountCodeInputError,\n getDiscountInfo,\n isDiscountHundredPercentage,\n setDiscountCodeInputError,\n removeAppliedDiscount,\n getHundredPercentDiscountAccess,\n isHundredPercentageDiscountAccessLoading,\n } = useDiscount();\n\n const [paymentInProgress, setPaymentInProgress] = useState('');\n const [paymentStatus, setPaymentStatus] = useState('');\n const [localPaymentMethods, setLocalPaymentMethods] = useState([]);\n const [paymentMethods, setPaymentMethods] = useState([]);\n const [verifyPaymentData, setVerifyPaymentData] = useState(null);\n const [verifyPaymentLoading, setVerifyPaymentLoading] = useState(false);\n const [entitySignupId, setEntitySignupId] = useState(null);\n const userData = useSelector((state) => state.user?.user);\n const [errorMessageForPayment, setErrorMessageForPayment] = useState('');\n const queryParams = getQueryParams();\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState();\n const [showUpiHelpModal, setShowUpiHelpModal] = useState(false);\n\n // porpose here is to find all the saved UPI methods and display it as it's own selectedable item\n const formatPaymentMethods = (rawPaymentMethods) => {\n let formattedPaymentMethods = [];\n let newPaymentMethod = {};\n rawPaymentMethods?.forEach((paymentMethod, outerIndex) => {\n if (paymentMethod.mode === 'stripe-india-upi') {\n paymentMethod?.methodsAllowed?.forEach((method, index) => {\n newPaymentMethod = {\n categoriesAllowed: ['UPI'],\n id: `${paymentMethod?.mode}-${index}`,\n mode: `stripe-india-upi`,\n publicKey: paymentMethod?.publicKey,\n methodsAllowed: [\n {\n category: 'UPI',\n type: 'UPI',\n icon:\n 'https://d2oi1rqwb0pj00.cloudfront.net/na-website/Payment/svg/UPI.svg',\n oneTimeChannelProperties: [...method?.oneTimeChannelProperties],\n recurringChannelProperties: [],\n },\n ],\n };\n // make sure new UPI method is added to the end of the list if there is an existing UPI also\n if (\n !method?.oneTimeChannelProperties[0]?.value &&\n paymentMethod?.methodsAllowed?.length > 1\n ) {\n formattedPaymentMethods.splice(0, 0, newPaymentMethod);\n } else {\n formattedPaymentMethods.push(newPaymentMethod);\n }\n });\n } else {\n formattedPaymentMethods.push({\n ...paymentMethod,\n id: `${paymentMethod?.mode}-${outerIndex}`,\n });\n }\n });\n return formattedPaymentMethods;\n };\n\n useEffect(() => {\n if (fetchedPaymentMethods && fetchedPaymentMethods.length > 0) {\n const formattedPaymentMethods = formatPaymentMethods(\n fetchedPaymentMethods\n );\n setPaymentMethods(formattedPaymentMethods);\n setSelectedPaymentMethod(formattedPaymentMethods.at(-1));\n }\n }, [fetchedPaymentMethods]);\n\n const intervalRef = useRef();\n\n let stripeProps = useStripePayment();\n let xenditProps = useXenditPayment();\n\n const resetPaymentStatus = () => setPaymentStatus('');\n const setPaymentSuccess = () => setPaymentStatus(PAYMENT_SUCCESS);\n const setPaymentFailed = () => setPaymentStatus(PAYMENT_FAILURE);\n const setPaymentPending = () => setPaymentStatus(PAYMENT_PENDING);\n\n const {\n generateClientSecret,\n handleStripeCardPayment,\n handleStripeUpiPayment,\n setDisableAllowedToSaveCreditCardDetails,\n stripeError,\n setStripeError,\n } = stripeProps || {};\n const { createEWalletCharge } = xenditProps;\n\n // global level error handler\n const handlePaymentFailure = ({ errorMessage }) => {\n let payload = {\n paymentMethod: selectedPaymentMethod?.mode,\n communityCode,\n communityId,\n };\n if (entityType === COMMUNITY_ONE_TIME_PAYMENT_ENTITIES.EVENT) {\n payload.eventId = entityId;\n }\n if (entityType === COMMUNITY_ONE_TIME_PAYMENT_ENTITIES.FOLDER) {\n payload.folderId = entityId;\n }\n trackGeneralEvent('payment_failed', payload);\n setPaymentFailed();\n if (errorMessage) {\n removeAllToasts();\n const formattedErrorMessage = getDetailedStripeErrorMessage(\n t,\n errorMessage\n );\n showToast({\n text: formattedErrorMessage,\n nplVersion: 2,\n type: 'error',\n dismissOnClick: true,\n });\n }\n };\n\n // Payment helper functions\n const handlePaymentSuccess = () => {\n let data = {\n communityId: communityId,\n communityCode: communityCode,\n };\n\n if (entityType === COMMUNITY_ONE_TIME_PAYMENT_ENTITIES.EVENT) {\n data = {\n ...data,\n eventId: entityId,\n };\n } else if (entityType === COMMUNITY_ONE_TIME_PAYMENT_ENTITIES.FOLDER) {\n data = {\n ...data,\n folderId: entityId,\n };\n }\n\n trackGeneralEvent('payment_success', {\n ...data,\n paymentMethod: selectedPaymentMethod?.mode,\n });\n removeAllToasts();\n setPaymentSuccess();\n if (postSignUpCallback) postSignUpCallback();\n // getRedirectLink({ bookingId: signupId, isCommunity: true });\n };\n\n const onStripeCardPayClick = async (e) => {\n e.preventDefault();\n const isStripeSingleField = false;\n // make stripe payment\n const paymentSuccessful = await handleStripeCardPayment(\n { email: userData?.email },\n isStripeSingleField\n );\n // handle payment response\n if (paymentSuccessful) {\n handlePaymentSuccess();\n }\n };\n\n const onStripeUpiPayClick = async (e) => {\n e.preventDefault();\n // make stripe payment\n const paymentSuccessful = await handleStripeUpiPayment();\n // handle payment response\n if (paymentSuccessful) {\n handlePaymentSuccess();\n }\n };\n\n async function handleSignup() {\n try {\n if (entityId && entityType && communityId) {\n const { data, error } = await signUpForEntity(\n entityId,\n entityType,\n communityId\n );\n if (error) {\n throw new Error(error);\n }\n if (data?.data?.id) {\n sessionStorageService.setItem('entitySignupId', data?.data?.id);\n sessionStorageService.setItem(\n 'entityPurchaseToken',\n data?.data?.access_token\n );\n setEntitySignupId(data?.data?.id);\n }\n }\n } catch (e) {\n console.log(e);\n }\n }\n\n useEffect(() => {\n if (entityId && entityType && communityId) {\n handleSignup();\n }\n }, [entityId, entityType, communityId]);\n\n const initializeStripe = async () => {\n try {\n setDisableAllowedToSaveCreditCardDetails(true);\n\n if (entitySignupId && activeCommunityData) {\n const resp = await generateClientSecret({\n entitySignupId,\n entityType,\n communityId: communityId,\n endpoint:\n getStripePublicKeyFromPaymentMethods(fetchedPaymentMethods)\n ?.mode === 'INDIA'\n ? 'stripe-india-checkout'\n : 'stripe-checkout',\n discountInfo,\n });\n // Check if init stripe failed because of discount code, try without disount code\n if (resp?.error && discountInfo?.code) {\n showToast({\n text:\n 'Error occured while applying discount code, please contact community manager or Nasio support.',\n type: 'error',\n });\n removeAppliedDiscount();\n }\n }\n } catch (e) {\n console.log(e);\n }\n };\n\n const onXenditPayClick = async (e) => {\n e.preventDefault();\n\n try {\n if (entitySignupId) {\n await createEWalletCharge({\n entitySignupId,\n entityType,\n entityId: entityId,\n communityId,\n checkoutUrl,\n discountInfo,\n });\n }\n } catch (e) {\n console.log(e);\n }\n };\n\n // Handle polling for OVO payment method\n\n useEffect(() => {\n if (\n stripeModes.includes(selectedPaymentMethod?.mode) &&\n !isDiscountHundredPercentage &&\n discountInfo?.value !== 100\n ) {\n initializeStripe();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n entitySignupId,\n setDisableAllowedToSaveCreditCardDetails,\n selectedPaymentMethod,\n activeCommunityData,\n discountInfo,\n isDiscountHundredPercentage,\n ]);\n\n // This is to handle the stripe error\n useEffect(() => {\n if (stripeError !== '') {\n handlePaymentFailure({ errorMessage: stripeError });\n setStripeError('');\n }\n }, [stripeError, setStripeError, handlePaymentFailure]);\n\n const verifyPayment = async (retry = 1) => {\n try {\n setVerifyPaymentLoading(true);\n const entitySignUpId =\n sessionStorageService.getItem('entitySignupId') ||\n queryParams?.entitySignupId;\n const communityID =\n communityId ||\n queryParams?.communityObjectId ||\n sessionStorageService.getItem('communityId');\n\n const { data, error } = await verifyPaymentForEntitySignUp(\n communityID,\n entityType,\n entitySignUpId\n );\n if (error) {\n if (retry < MAX_RETRIES_FOR_VERIFY_PAYMENT) {\n return await verifyPayment(retry + 1);\n } else {\n throw new Error(error);\n }\n }\n if (data) {\n setVerifyPaymentLoading(false);\n setVerifyPaymentData(data?.data);\n setPaymentSuccess();\n xenditProps.setShouldPollVerify(false);\n return data.data;\n }\n } catch (error) {\n setVerifyPaymentLoading(false);\n console.log('error', error);\n }\n };\n\n useEffect(() => {\n if (\n xenditProps?.selectedXenditMethod?.type === 'ID_OVO' &&\n xenditProps.shouldPollVerify &&\n !intervalRef.current\n ) {\n console.log('ovo payment');\n showToast({\n text: `Please proceed to OVO to complete payment`,\n description: 'Complete the transaction in your application',\n type: 'warning',\n nplVersion: 2,\n dismissOnClick: false,\n autoCloseTime: 6000,\n });\n // create an interval to check if the payment is successful\n // setIsProcessing(true);\n intervalRef.current = setInterval(() => {\n verifyPayment();\n // setIsProcessing(false);\n }, 5000);\n }\n return () => {\n if (!xenditProps.shouldPollVerify && intervalRef.current)\n clearInterval(intervalRef.current);\n };\n // setIsProcessing(false);\n }, [verifyPayment, xenditProps]);\n\n // get discount code detail from the params\n useEffect(() => {\n const discountCode = queryParams?.discountCode ?? '';\n\n if (!discountCode || !entityId) return;\n\n setDiscountCodeInput(discountCode);\n getDiscountInfo({\n discountCode,\n communityCode: communityCode,\n entityObjectId: entityId,\n entityType: (() => {\n if (entityType === COMMUNITY_ONE_TIME_PAYMENT_ENTITIES.EVENT)\n return DISCOUNT_ENTITY_TYPE.EVENT;\n\n if (entityType === COMMUNITY_ONE_TIME_PAYMENT_ENTITIES.FOLDER)\n return DISCOUNT_ENTITY_TYPE.FOLDER;\n\n return '';\n })(),\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entityId, entityType]);\n\n return {\n entitySignupId,\n // User Data for the contact information\n userData,\n // stripe exports\n stripeProps: {\n ...stripeProps,\n onStripeCardPayClick,\n onStripeUpiPayClick,\n },\n // xendit exports\n xenditProps: {\n ...xenditProps,\n onXenditPayClick,\n },\n // payment methods props exports\n paymentMethods,\n\n // Checkout Functions\n handlePaymentSuccess,\n handlePaymentFailure,\n verifyPayment,\n\n // local payments\n setLocalPaymentMethods,\n localPaymentMethods,\n\n // payment status\n paymentInProgress,\n setPaymentInProgress,\n paymentStatus,\n setPaymentSuccess,\n setPaymentFailed,\n setPaymentPending,\n resetPaymentStatus,\n verifyPaymentLoading,\n verifyPaymentData,\n setVerifyPaymentData,\n errorMessageForPayment,\n setErrorMessageForPayment,\n selectedPaymentMethod,\n setSelectedPaymentMethod,\n showUpiHelpModal,\n setShowUpiHelpModal,\n showUpiWaitingModal: stripeProps.showUpiWaitingModal,\n setShowUpiWaitingModal: stripeProps.setShowUpiWaitingModal,\n\n discountInfo,\n isDiscountInfoLoading,\n discountCodeInput,\n setDiscountCodeInput,\n discountCodeInputError,\n getDiscountInfo,\n isDiscountHundredPercentage,\n setDiscountCodeInputError,\n removeAppliedDiscount,\n getHundredPercentDiscountAccess,\n isHundredPercentageDiscountAccessLoading,\n };\n};\n\nexport default usePayment;\n","export const SIGNUP_REQUESTOR = 'signupRequestor';\nexport const WHATSAPP_SIGNUP_REQUESTOR = 'whatsappSignup';\n\nexport const convertObjToQueryString = (obj) => {\n const keyValuePairs = [];\n for (const key in obj) {\n keyValuePairs.push(\n encodeURIComponent(key) + '=' + encodeURIComponent(obj[key])\n );\n }\n return keyValuePairs.join('&');\n};\n\nexport const redirectToUnifiedCheckout = ({\n communityInfo,\n entityType,\n entityInfo,\n}) => {\n const communityId = communityInfo?._id;\n const communityCode = communityInfo?.code;\n const entityId = entityInfo?._id;\n const requestor = communityInfo?.isWhatsappExperienceCommunity\n ? WHATSAPP_SIGNUP_REQUESTOR\n : SIGNUP_REQUESTOR;\n\n let query = {\n communityId,\n communityCode,\n requestor,\n };\n\n if (entityType) query.sourceInfoType = entityType;\n if (entityId) query.sourceInfoOrigin = entityId;\n\n const queryStr = convertObjToQueryString(query);\n window.location.href = `https://nas.io/checkout-global?${queryStr}`;\n};\n","import { createContext, useContext, useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useCommunityPortalContext } from '../../CommunityPortal/contexts/CommunityPortalContext';\nimport { COUNTRY_CHECKOUT_TYPE } from '../../hooks/payment/usePayment';\nimport { STORED_ACTIVE_COMMUNITY_SESSION_CODE } from '../../PortalModeWrapper/constants';\nimport {\n getCommunityEventInfoForEventCheckoutById,\n getCommunityInfoForCheckout,\n getPaymentMethods,\n} from '../../services/checkoutServices/communityEventCheckoutServices';\nimport { getQueryParams } from '../../utility/domHelpers';\nimport sessionStorageService from '../../utility/sessionStorageService';\nimport { redirectToUnifiedCheckout } from '../../utility/checkoutHelper';\nexport const EventsCheckoutContext = createContext();\nexport const EventsCheckoutContextProvider = ({ children }) => {\n const [checkoutEventInfo, setCheckoutEventInfo] = useState('');\n const [eventCommunityInfo, setEventCommunityInfo] = useState();\n const userData = useSelector((state) => state?.user?.user);\n const [eventCommunityInfoLoader, setEventCommunityInfoLoader] = useState(\n true\n );\n const queryParams = getQueryParams();\n const [fetchedPaymentMethods, setFetchedPaymentMethods] = useState(null);\n const { country } = useCommunityPortalContext();\n\n // This deterimines what payment methods gets shown. The list of methods allowed in country is returned from BE.\n const getPaymentMethodsHandler = async (communityId) => {\n const { data, error } = await getPaymentMethods({\n country,\n communityId,\n checkoutType: COUNTRY_CHECKOUT_TYPE.ONETIME,\n });\n if (error) return;\n\n setFetchedPaymentMethods(data?.paymentModesAllowed);\n };\n\n const getEventInformation = async (eventObjectId, communityObjectId) => {\n try {\n const { data, error } = await getCommunityEventInfoForEventCheckoutById(\n communityObjectId,\n eventObjectId\n );\n if (error) {\n throw new Error(error);\n }\n\n if (data) {\n setCheckoutEventInfo(data);\n setEventCommunityInfoLoader(false);\n }\n } catch (error) {\n console.log(error);\n }\n };\n\n const getCommunityInfo = async (communityObjectId) => {\n try {\n const { data, error } = await getCommunityInfoForCheckout(\n communityObjectId\n );\n\n if (data) {\n setEventCommunityInfo(data);\n }\n if (error) {\n throw new Error(error);\n }\n } catch (error) {\n console.log(error);\n }\n };\n\n useEffect(() => {\n if (queryParams) {\n const { entityId, communityObjectId } = queryParams;\n\n if (entityId && communityObjectId) {\n getEventInformation(entityId, communityObjectId);\n getCommunityInfo(communityObjectId);\n\n sessionStorageService.setItem(\n STORED_ACTIVE_COMMUNITY_SESSION_CODE,\n communityObjectId\n );\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userData]);\n\n useEffect(() => {\n if (queryParams && country && userData) {\n const { communityObjectId } = queryParams;\n getPaymentMethodsHandler(communityObjectId);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [country, userData]);\n\n useEffect(() => {\n if (userData && eventCommunityInfo && checkoutEventInfo) {\n redirectToUnifiedCheckout({\n communityInfo: eventCommunityInfo,\n entityType: 'event',\n entityInfo: checkoutEventInfo,\n });\n }\n }, [checkoutEventInfo, eventCommunityInfo, userData]);\n\n const value = {\n checkoutEventInfo,\n setCheckoutEventInfo,\n eventCommunityInfo,\n setEventCommunityInfo,\n eventCommunityInfoLoader,\n fetchedPaymentMethods,\n country,\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useEventsCheckoutContext = () => useContext(EventsCheckoutContext);\n","export const CONTACT_US_EMAIL = 'hello@nasacademy.com';\n\nexport const shortLogoImageData = {\n alt: 'NasAcademy',\n mobileImgData: {\n meta: { width: 32, height: 32 },\n src:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/nas_academy_icon_dark.svg',\n },\n};\n\n// urls\nexport const COHORT_MY_CLASS_PAGE_PATH = '/cohort/my-class/:courseOfferId';\nexport const COHORT_TODAY_PAGE_PATH = '/cohorts/:courseOfferId/today';\n\nexport const COHORT_FOCUS_VIEW_PAGE_PATH =\n '/cohort/my-class-focus/:courseOfferId/unit-offer/:unitOfferObjectId';\n\n// TODO: Remove - temp\n// http://localhost:3001/cohort/my-class-focus/619b9206762842009e4c8bee/unit-offer/3279\n","import { PhoneNumberFormat, PhoneNumberUtil } from 'google-libphonenumber';\n\nexport const isValidEmailFormat = (email) => {\n // eslint-disable-next-line no-control-regex\n const re = /^((([a-z]|\\d|[!#$%&'*+\\-/=?^_`{|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#$%&'*+\\-/=?^_`{|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n return re.test(email);\n};\n\nexport const isValidPhoneFormat = (value) => {\n if (!value || (isNaN(Number(value)) && value[0] !== '+')) {\n return false;\n }\n\n if (value[0] !== '+') {\n value = '+' + value;\n }\n const phoneUtil = PhoneNumberUtil.getInstance();\n try {\n const number = phoneUtil.parseAndKeepRawInput(value);\n return !!phoneUtil.isValidNumber(number);\n } catch (e) {\n return false;\n }\n};\n\nexport const getFormattedPhone = function (value) {\n const phoneUtil = PhoneNumberUtil.getInstance();\n const number = phoneUtil.parseAndKeepRawInput(value);\n return phoneUtil.format(number, PhoneNumberFormat.E164);\n};\n\nexport const isOnlyDigit = function (value) {\n return /^\\d+$/.test(value);\n};\n\nexport const isValidWebLinkWithoutHTTP = function (value) {\n const re = new RegExp(\n '[-a-zA-Z0-9@:%._\\\\+~#=]{1,256}\\\\.[a-zA-Z0-9()]{1,6}\\\\b([-a-zA-Z0-9()@:%_\\\\+.~#?&//=]*)',\n 'i'\n );\n return re.test(value);\n};\n\nexport const isValidWebLinkWithHTTP = function (value) {\n const re = new RegExp(\n 'https?:\\\\/\\\\/(www\\\\.)?[-a-zA-Z0-9@:%._\\\\+~#=]{1,256}\\\\.[a-zA-Z0-9()]{1,6}\\\\b([-a-zA-Z0-9()@:%_\\\\+.~#?&//=]*)',\n 'i'\n );\n return re.test(value);\n};\n","import CheckIcon from './CheckIcon';\nexport default CheckIcon;\n","import React from 'react';\n\nconst CheckIcon = () => {\n const className = 'c-CheckIcon';\n\n return (\n \n \n \n );\n};\n\nexport default CheckIcon;\n","import { useState, useEffect } from 'react';\nimport { convertQueryStringToJson } from '../modules/stringHelpers';\n\nexport const COUPON_URI_KEY = 'coupon';\nexport const COUPON_SESSION_KEY = 'couponQueryParam';\n\nconst useQueryParams = () => {\n const [queryParams, setQueryParams] = useState({});\n\n useEffect(() => {\n const queryStr = window?.location?.search || '';\n const queryParamsJson = convertQueryStringToJson(queryStr);\n setQueryParams(queryParamsJson);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [window?.location?.search]);\n\n return {\n queryParams,\n };\n};\n\nexport default useQueryParams;\n","import React, { useState, useEffect } from 'react';\nimport * as yup from 'yup';\nimport { connect } from 'react-redux';\nimport {\n resetTriggerResetPasswordSuccess,\n triggerResetPassword,\n} from '../../../actions/auth';\nimport { withRouter } from 'react-router-dom';\nimport LoadingCircle from '../../Common/LoadingCircle/LoadingCircle';\nimport Button from '../../Button';\nimport Input from '../../Form/Input';\nimport { shortLogoImageData } from '../../../utility/constants';\nimport Image from '../../Image';\nimport { validate } from '../../../utility/validationHelper';\nimport { isValidEmailFormat } from '../../../utility/validation';\nimport './TriggerResetPasswordForm.scss';\nimport CloseIcon from '../../Icons/CloseIcon';\nimport CheckIcon from '../../Icons/CheckIcon';\nimport useQueryParams from '../../../hooks/useQueryParams';\n\nconst className = 'c-TriggerResetPasswordForm';\nconst resetPasswordFormSchema = yup.object().shape({\n value: yup.string().required('This field is required.'),\n});\n\nconst TriggerResetPasswordForm = (props) => {\n const { title } = props;\n const { queryParams } = useQueryParams();\n const { email } = queryParams || {};\n const [formData, setFormData] = useState({ value: email });\n const [errors, setErrors] = useState({});\n\n useEffect(() => {\n if (queryParams.email) {\n setFormData({ value: email });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryParams]);\n\n const reset = async (e) => {\n e.preventDefault();\n\n const isValid = await validate({\n schema: resetPasswordFormSchema,\n formData,\n setErrors,\n });\n\n if (!isValid) {\n return;\n }\n\n const requestBody = {};\n if (!isValidEmailFormat(formData.value)) {\n setErrors({\n ...errors,\n value: 'Your input field have to be a valid email',\n });\n return;\n } else {\n requestBody.email = formData.value.toLowerCase();\n }\n\n props.dispatch(triggerResetPassword(requestBody));\n };\n\n const onFieldChange = (e) => {\n setFormData({\n ...formData,\n [e.target.name]: e.target.value,\n });\n\n if (errors[e.target.name]) {\n setErrors({ ...errors, [e.target.name]: '' });\n }\n };\n\n return (\n
\n \n

\n {title ?? 'Forgot your password?'}\n

\n

\n Rest assured, you're not alone. To reset your password, please enter\n your registered email below.\n

\n
\n \n {props.resetPasswordFailed ? (\n
\n {props.resetPasswordFailed}\n
\n ) : (\n
\n )}\n {props.loading ? (\n \n ) : (\n \n )}\n \n {!!props.success && (\n
\n
\n \n
\n

Email Sent!

\n props.dispatch(resetTriggerResetPasswordSuccess())}\n >\n \n
\n
\n )}\n
\n );\n};\n\nconst mapStateToProps = (state) => ({\n loading: state.main.loading,\n resetPasswordFailed: state.main.resetPasswordFailed,\n success: state.main.success,\n});\n\nexport default connect(mapStateToProps)(withRouter(TriggerResetPasswordForm));\n","import TriggerResetPasswordForm from './TriggerResetPasswordForm';\nexport default TriggerResetPasswordForm;\n","import ForgetPasswordPage from './ForgetPasswordPage';\nexport default ForgetPasswordPage;\n","import React from 'react';\nimport TriggerResetPasswordForm from '../../components/Authentication/TriggerResetPasswordForm';\nimport './ForgetPasswordPage.scss';\n\nconst ForgetPasswordPage = ({ title }) => {\n const className = 'c-ForgetPasswordPage';\n\n return (\n
\n
\n \n
\n
\n );\n};\n\nexport default ForgetPasswordPage;\n","import { createContext, useContext, useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { getLibrarySingleFolderData } from '../../CommunityPortal/apiServices/libraryService';\nimport { useCommunityPortalContext } from '../../CommunityPortal/contexts/CommunityPortalContext';\nimport { COUNTRY_CHECKOUT_TYPE } from '../../hooks/payment/usePayment';\nimport { STORED_ACTIVE_COMMUNITY_SESSION_CODE } from '../../PortalModeWrapper/constants';\nimport {\n getCommunityInfoForCheckout,\n getPaymentMethods,\n} from '../../services/checkoutServices/communityEventCheckoutServices';\nimport { getQueryParams } from '../../utility/domHelpers';\nimport sessionStorageService from '../../utility/sessionStorageService';\nimport { redirectToUnifiedCheckout } from '../../utility/checkoutHelper';\nexport const LibraryCheckoutContext = createContext();\nexport const LibraryCheckoutContextProvider = ({ children }) => {\n const [checkoutFolderInfo, setCheckoutFolderInfo] = useState('');\n const [communityInfo, setCommunityInfo] = useState();\n const userData = useSelector((state) => state?.user?.user);\n const [folderCommunityInfoLoader, setFolderCommunityInfoLoader] = useState(\n true\n );\n\n const queryParams = getQueryParams();\n const [fetchedPaymentMethods, setFetchedPaymentMethods] = useState(null);\n const { country } = useCommunityPortalContext();\n\n // This deterimines what payment methods gets shown. The list of methods allowed in country is returned from BE.\n const getPaymentMethodsHandler = async (communityId) => {\n const { data, error } = await getPaymentMethods({\n country,\n communityId,\n checkoutType: COUNTRY_CHECKOUT_TYPE.ONETIME,\n });\n if (error) return;\n\n setFetchedPaymentMethods(data?.paymentModesAllowed);\n };\n\n const getLibraryFolderInformation = async (folderId, communityObjectId) => {\n try {\n const { data, error } = await getLibrarySingleFolderData(\n communityObjectId,\n folderId\n );\n if (error) {\n throw new Error(error);\n }\n\n if (data) {\n setCheckoutFolderInfo(data);\n setFolderCommunityInfoLoader(false);\n }\n } catch (error) {\n console.log(error);\n }\n };\n\n const getCommunityInfo = async (communityObjectId) => {\n try {\n const { data, error } = await getCommunityInfoForCheckout(\n communityObjectId\n );\n\n if (data) {\n setCommunityInfo(data);\n }\n if (error) {\n throw new Error(error);\n }\n } catch (error) {\n console.log(error);\n }\n };\n\n useEffect(() => {\n if (queryParams) {\n const { entityId, communityObjectId } = queryParams;\n\n if (entityId && communityObjectId) {\n getLibraryFolderInformation(entityId, communityObjectId);\n getCommunityInfo(communityObjectId);\n\n sessionStorageService.setItem(\n STORED_ACTIVE_COMMUNITY_SESSION_CODE,\n communityObjectId\n );\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userData]);\n\n useEffect(() => {\n if (queryParams && country && userData) {\n const { communityObjectId } = queryParams;\n getPaymentMethodsHandler(communityObjectId);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [country, userData]);\n\n useEffect(() => {\n if (userData && communityInfo && checkoutFolderInfo) {\n redirectToUnifiedCheckout({\n communityInfo,\n entityType: 'folder',\n entityInfo: checkoutFolderInfo,\n });\n }\n }, [checkoutFolderInfo, communityInfo, userData]);\n\n const value = {\n checkoutFolderInfo,\n setCheckoutFolderInfo,\n communityInfo,\n setCommunityInfo,\n folderCommunityInfoLoader,\n fetchedPaymentMethods,\n country,\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useLibraryCheckoutContext = () =>\n useContext(LibraryCheckoutContext);\n","import * as yup from 'yup';\n\nexport const sideImageData = {\n alt: 'Sidebar Login',\n mobileImgData: {\n src:\n 'https://d2oi1rqwb0pj00.cloudfront.net/na-portal/LoginPage/jpg/member-banner.jpg',\n webpSrc:\n 'https://d2oi1rqwb0pj00.cloudfront.net/na-portal/LoginPage/jpg/member-banner.jpg',\n },\n customImgClassname: 'h-full rounded-tl-4 rounded-bl-4',\n};\n\nexport const loginFormSchema = yup.object().shape({\n email: yup\n .string()\n .email('Email must be in a valid format like “name@example.com”')\n .required('Email is required.'),\n password: yup.string().required('Password is required.'),\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../Button';\nimport Modal from '../Modal';\nimport './PasswordExpiredModal.scss';\n\nconst className = 'c-PasswordExpiredModal';\n\nconst PasswordExpiredModal = ({\n show,\n onClose,\n onClickReset,\n onClickLogin,\n customContainerClassName,\n}) => {\n return (\n \n
\n {/* Content */}\n
\n {/* Title */}\n

\n Hey, it seems your session has expired.\n

\n\n {/* Text */}\n

\n Please reset your password or login again.\n

\n\n {/* CTA Area */}\n
\n \n
\n \n
\n
\n
\n
\n \n );\n};\n\nPasswordExpiredModal.propTypes = {\n show: PropTypes.bool,\n onClose: PropTypes.func,\n onConfirm: PropTypes.func,\n};\n\nPasswordExpiredModal.defaultProps = {\n show: false,\n onClose: () => {},\n onConfirm: () => {},\n};\n\nexport default PasswordExpiredModal;\n","import PasswordExpiredModal from './PasswordExpiredModal';\n\nexport default PasswordExpiredModal;\n","import DiscordIcon from './DiscordIcon';\nexport default DiscordIcon;\n","import React from 'react';\n\nconst DiscordIcon = () => {\n return (\n \n \n \n );\n};\n\nexport default DiscordIcon;\n","import DiscordLogin from './DiscordLogin';\nexport default DiscordLogin;\n","import Button from '../../CommunityPortal/components/Button';\nimport { DISCORD_OAUTH_REDIRECT_URL } from '../../CommunityPortal/components/DiscordButton/constants';\nimport DiscordIcon from '../Icons/DiscordIcon';\nimport React from 'react';\nimport { getQueryHashParams } from '../../utility/domHelpers';\nimport { loginUsingDiscord } from '../../CommunityPortal/apiServices/discordService';\nimport { useEffect } from 'react';\nimport { useState } from 'react';\n\nconst DiscordLogin = ({\n text,\n onSuccessHandler,\n onFailureHandler,\n isLoginForm = false,\n}) => {\n const queryParams = getQueryHashParams();\n const [loading, setLoading] = useState(false);\n const ctaHandler = () => {\n window.location.href = DISCORD_OAUTH_REDIRECT_URL(\n `${window.location.protocol}//${window.location.host}/login`\n );\n };\n\n useEffect(() => {\n if (!!queryParams.access_token) {\n const asyncCallback = async () => {\n const response = await loginUsingDiscord(queryParams?.access_token);\n if (response.error) {\n onFailureHandler(response.error);\n return;\n }\n onSuccessHandler(response?.data);\n setLoading(true);\n };\n asyncCallback();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const onBoardingCustomClasses = '!border-grey-neutral60 !py-8 hover:!bg-button-google-hover hover:!border-button-google-border-hover';\n return (\n \n
\n
\n \n
\n \n {text}\n \n
\n \n );\n};\n\nexport default DiscordLogin;\n","import React, { useRef } from 'react';\nimport FacebookLogin from 'react-facebook-login/dist/facebook-login-render-props';\nimport { GoogleLogin } from '@react-oauth/google';\nimport { connect, useDispatch, useSelector } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { startGetTokens, startLoginCheck } from '../../actions/auth';\nimport AppleSignin from 'react-apple-signin-auth';\nimport config from '../../modules/config';\nimport Button from '../Button';\nimport './SocialLogins.scss';\nimport DiscordLogin from '../DiscordLogin';\nimport { setLoginFailed } from '../../actions/main';\nimport Auth from '../../modules/auth';\nimport { useTranslation } from 'react-i18next';\n\nconst { googleClientId, fbAppId, appleClientId, appleRedirectLink } = config;\n\nconst SocialLogins = ({ isSignup, history, isLoginForm = false }) => {\n const className = 'c-SocialLogins';\n\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n const isWebView = useSelector((state) => state.main.isWebView);\n\n const showGoogleLoginCta = !isWebView && googleClientId;\n\n const showAppleLoginCta = !isWebView && appleClientId;\n const ref = useRef();\n\n const handleSocialAuth = (response, provider) => {\n let token = '';\n let code = '';\n let appleUserData = null;\n let payload = {};\n\n switch (provider) {\n case 'facebook':\n token = response?.accessToken;\n payload = { authToken: token, provider };\n break;\n case 'google':\n token = response?.credential;\n payload = { authToken: token, provider };\n break;\n case 'apple':\n code = response?.authorization?.code;\n token = response?.authorization?.id_token;\n appleUserData = response?.user;\n payload = { code, provider, appleUserData };\n break;\n case 'discord':\n token = response?.token;\n payload = { authToken: token, provider };\n break;\n\n default:\n }\n //For Discord login\n if (payload.provider === 'discord') {\n const { authToken, refresh_token } = payload;\n\n Auth.setTokens(authToken, refresh_token);\n Auth.setCookies(authToken, refresh_token);\n dispatch(\n startLoginCheck(authToken, refresh_token, history.location.pathname)\n );\n history.replace({\n pathname: history.location.pathname,\n hash: '',\n });\n return;\n }\n\n if (token) {\n dispatch(startGetTokens(payload, history.location.pathname));\n }\n };\n\n const handleLoginFailed = (error) => {\n dispatch(setLoginFailed(error));\n history.replace({\n pathname: history.location.pathname,\n hash: '',\n });\n };\n const socialBtnClass = `${className}__social-btn-wrapper`;\n const googleBtnClass = `${socialBtnClass} ${socialBtnClass}--google`;\n const appleBtnClass = `${socialBtnClass} ${socialBtnClass}--apple`;\n const fbBtnClass = `${socialBtnClass} ${socialBtnClass}--facebook`;\n\n if (isWebView) return null;\n\n return (\n
\n {/* Google Login Button */}\n {showGoogleLoginCta && (\n
\n {\n console.log(res);\n handleSocialAuth(res, 'google');\n }}\n onError={() => {\n console.log('Login Failed');\n }}\n useOneTap={true}\n size=\"large\"\n text=\"continue_with\"\n />\n
\n )}\n\n {/* Facebook Login Btn */}\n {fbAppId && (\n handleSocialAuth(res, 'facebook')}\n render={(renderProps) => {\n const { onClick } = renderProps;\n return (\n
\n \n
\n );\n }}\n />\n )}\n {/* Apple login button */}\n {showAppleLoginCta && (\n (\n
\n \n
\n )}\n onError={(res) => handleSocialAuth(res, 'apple')}\n onSuccess={(res) => handleSocialAuth(res, 'apple')}\n />\n )}\n\n {/* Discord Login button, there will only be a login for discord, no sign up*/}\n {!isSignup && (\n handleSocialAuth(e, 'discord')}\n onFailureHandler={(e) => handleLoginFailed(e)}\n text={t('continue-with-discord')}\n isLoginForm={isLoginForm}\n />\n )}\n
\n );\n};\n\nconst mapStateToProps = (state) => ({\n loginFailed: state.main.loginFailed,\n});\n\n// export default SocialLogins;\nexport default connect(mapStateToProps)(withRouter(SocialLogins));\n","import SocialLogins from './SocialLogins';\nexport default SocialLogins;\n","import { parse } from 'query-string';\nimport React, { useEffect, useState } from 'react';\nimport { connect, useSelector } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { startLogin } from '../../../actions/auth';\nimport history from '../../../modules/history';\nimport { loginFormSchema } from '../../../pages/LoginPage/constants';\nimport { shortLogoImageData } from '../../../utility/constants';\nimport { validate } from '../../../utility/validationHelper';\nimport Button from '../../Button';\nimport LoadingCircle from '../../Common/LoadingCircle/LoadingCircle';\nimport Input from '../../Form/Input';\nimport Image from '../../Image';\nimport PasswordExpiredModal from '../../PasswordExpiredModal';\nimport SocialLogins from '../../SocialLogins';\nimport './LoginForm.scss';\nimport keys from '../../../config/keys';\n\nconst className = 'c-LoginForm';\n\nconst LoginForm = (props) => {\n const [formData, setFormData] = useState({\n email: '',\n password: '',\n });\n const [errors, setErrors] = useState({});\n const [focusPassword, setFocusPassword] = useState(false);\n\n const [showPasswordExpiredModal, setShowPasswordExpiredModal] = useState(\n false\n );\n\n const handleResetPassword = () => {\n setShowPasswordExpiredModal(false);\n history.push('/forget-password');\n };\n\n const isWebView = useSelector((state) => state.main.isWebView);\n\n const login = async (e) => {\n e.preventDefault();\n\n const isValid = await validate({\n schema: loginFormSchema,\n formData,\n setErrors,\n });\n\n if (!isValid) {\n return;\n }\n\n const email = formData.email;\n const password = formData.password;\n props.dispatch(startLogin(email, password, props.currentRoute));\n };\n\n const onFieldChange = (e) => {\n setFormData({\n ...formData,\n [e.target.name]: e.target.value,\n });\n\n if (errors[e.target.name]) {\n setErrors({ ...errors, [e.target.name]: '' });\n }\n };\n\n useEffect(() => {\n const parseObj = parse(window.location.search);\n\n if (parseObj.email) {\n setFocusPassword(true);\n setFormData((prev) => {\n return { ...prev, email: parseObj.email };\n });\n }\n }, []);\n\n return (\n
\n \n
\n Member login\n
\n
\n \n Logging in as a community manager?{' '}\n \n \n \n Click here\n \n \n
\n {!isWebView ? (\n <>\n \n
\n
OR
\n
\n \n ) : null}\n
\n \n \n
\n \n Forgot your password?\n \n
\n {props.loginFailed ? (\n
\n {props.loginFailed}\n
\n ) : (\n
\n )}\n {props.loading ? (\n \n ) : (\n \n )}\n \n setShowPasswordExpiredModal(false)}\n onClose={() => setShowPasswordExpiredModal(false)}\n onClickReset={handleResetPassword}\n />\n
\n );\n};\n\nconst mapStateToProps = (state) => ({\n currentRoute: state.routes.currentRoute,\n loading: state.main.loading,\n loginFailed: state.main.loginFailed,\n});\n\nexport default connect(mapStateToProps)(withRouter(LoginForm));\n","import LoginForm from './LoginForm';\nexport default LoginForm;\n","import React from 'react';\nimport { useEffect } from 'react';\nimport LoginForm from '../../components/Authentication/LoginForm';\nimport Image from '../../components/Image';\nimport { sideImageData } from './constants';\nimport config from '../../modules/config';\nimport './LoginPage.scss';\n\nconst { isDevEnv } = config;\n\nconst LoginPage = () => {\n const className = 'c-LoginPage';\n\n useEffect(() => {\n if (!isDevEnv) {\n // redirect from login page with all the query params on the url to nas io login page\n window.location.href = `${process.env.REACT_APP_NASIO_BASE_URL}/login${window.location.search}`;\n }\n }, []);\n return (\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default LoginPage;\n","import LoginPage from './LoginPage';\nexport default LoginPage;\n","import React from 'react';\n// import './CalendarIcon.scss';\nimport PropTypes from 'prop-types';\n\nfunction CalendarIconV2({\n width,\n height,\n displayType,\n fillColor,\n strokeColor,\n}) {\n const className = 'c-CalendarIcon';\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nCalendarIconV2.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n fillColor: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nCalendarIconV2.defaultProps = {\n width: '18',\n height: '19',\n fillColor: '#FBC91B',\n strokeColor: '#AAABAE',\n};\n\nexport default CalendarIconV2;\n","import CalendarIconV2 from './CalendarIconV2';\n\nexport default CalendarIconV2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const GiftIconV2 = ({\n width,\n height,\n displayType,\n fillColor,\n strokeColor,\n}) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nGiftIconV2.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n fillColor: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nGiftIconV2.defaultProps = {\n width: '24',\n height: '24',\n fillColor: '#FBC91B',\n strokeColor: '#AAABAE',\n};\n","import { GiftIconV2 } from './GiftIconV2';\n\nexport default GiftIconV2;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const ProfileIconLight = ({\n width,\n height,\n displayType,\n fillColor,\n strokeColor,\n}) => {\n return (\n \n \n \n \n );\n};\n\nProfileIconLight.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n displayType: PropTypes.oneOf(['outline', 'filled']),\n fillColor: PropTypes.string,\n strokeColor: PropTypes.string,\n};\n\nProfileIconLight.defaultProps = {\n width: '18',\n height: '19',\n fillColor: '#FBC91B',\n strokeColor: '#AAABAE',\n};\n","import { ProfileIconLight } from './ProfileIconLight';\n\nexport default ProfileIconLight;\n","import CalendarIconV2 from '../../components/Icons/CalendarIconV2';\nimport GiftIconV2 from '../../components/Icons/GiftIconV2';\nimport ProfileIconLight from '../../components/Icons/ProfileIconLight';\nimport SettingIcon from '../../components/Icons/SettingIcon';\nimport i18n from '../../i18n';\n\nconst { t } = i18n;\n\nexport const PROFILE_TAB_KEY = 'profileTab';\nexport const SOCIAL_MEDIA_TAB_KEY = 'socialMediaTab';\nexport const VIDEO_TAB_KEY = 'videoTab';\nexport const COMMENT_TAB_KEY = 'commentTab';\nexport const PASSWORD_TAB_KEY = 'passwordTab';\nexport const REFERRAL_TAB_KEY = 'referralTab';\n\nfunction ReferralStyle({ t }) {\n return (\n <>\n {' '}\n

{t('referral')}

\n
\n \n );\n}\n\nfunction TextforReferral({ t }) {\n return (\n

\n {t('refer-a-friend')}\n

\n );\n}\n\nfunction TagLineForReferral({ t }) {\n return (\n <>\n \n {t(\n 'share-this-code-you-and-your-friend-will-get-20-benefits-on-the-class'\n )}{' '}\n
\n fees.\n

\n \n );\n}\n\nfunction ShareCTALabelforrefferral({ t }) {\n return (\n <>\n

{t('share')}

\n \n );\n}\nexport const referralWidgetStaticProps = (t) => ({\n header: ,\n text: [\n {\n text: ,\n isNewLine: true,\n isBolder: true,\n },\n {\n text: ,\n },\n // {\n // text: 'See how referral works.',\n // isAnchorText: true,\n // isNewLine: true,\n // link: 'https://nas.academy/refer-a-friend',\n // },\n ],\n redeemBox: {\n title: t('referral-credits'),\n ctaLabel: t('cash-out'),\n note: [\n { text: '*', isBolder: true },\n { text: t('minimum-50-usd-referral-credits-required-to-cash-out') },\n ],\n noCreditText: t('make-a-referral-to-start-earning-credits'),\n },\n shareCTALabel: ,\n});\n\nexport const REDEEM_FORM_LINK =\n 'https://docs.google.com/forms/d/e/1FAIpQLSctIEj5N2HrZSDhLNfOIm7TkC9M_rCOj2llOP2YS8ZVFjAXWg/viewform';\n\nexport const SETTINGS_PAGE_REFERRAL_ENDPOINT = 'referral';\nexport const SETTINGS_PAGE_PROFILE_ENDPOINT = 'profile';\nexport const SETTINGS_PAGE_MEMBERSHIP_ENDPOINT = 'membership';\nexport const SETTINGS_PAGE_PREFERENCES_ENDPOINT = 'preferences';\n\nexport const SETTINGS_PAGE_REFERRAL_PATH = '/setting/referral';\nexport const SETTINGS_PAGE_PROFILE_PATH = '/setting/profile';\nexport const SETTINGS_PAGE_MEMBERSHIP_PATH = '/setting/membership';\nexport const SETTINGS_PAGE_PREFERENCES_PATH = '/setting/preferences';\n\nexport const settingsPagePaths = [\n SETTINGS_PAGE_PROFILE_PATH,\n SETTINGS_PAGE_MEMBERSHIP_PATH,\n SETTINGS_PAGE_PREFERENCES_PATH,\n];\n\nexport const SETTINGS_PAGE_REFERRAL = {\n name: 'SETTINGS_PAGE_REFERRAL',\n label: t('referral'),\n labelKey: 'referral',\n Icon: GiftIconV2,\n endpoint: SETTINGS_PAGE_REFERRAL_ENDPOINT,\n};\n\nexport const SETTINGS_PAGE_PROFILE = {\n name: 'SETTINGS_PAGE_PROFILE',\n label: t('profile'),\n labelKey: 'profile',\n Icon: ProfileIconLight,\n endpoint: SETTINGS_PAGE_PROFILE_ENDPOINT,\n};\n\nexport const SETTINGS_PAGE_MEMBERSHIP = {\n name: 'SETTINGS_PAGE_MEMBERSHIP',\n label: t('membership-and-billing'),\n labelKey: 'membership-and-billing',\n Icon: CalendarIconV2,\n endpoint: SETTINGS_PAGE_MEMBERSHIP_ENDPOINT,\n};\n\nexport const SETTINGS_PAGE_PREFERENCES = {\n name: 'SETTINGS_PAGE_PREFERENCES',\n label: t('preferences'),\n labelKey: 'preferences',\n Icon: SettingIcon,\n endpoint: SETTINGS_PAGE_PREFERENCES_ENDPOINT,\n};\n\nexport const pagesList = [SETTINGS_PAGE_PROFILE, SETTINGS_PAGE_MEMBERSHIP];\n","import PropTypes from 'prop-types';\n\nconst MasterCardIcon = ({ width, height }) => (\n \n \n \n \n \n);\n\nMasterCardIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n};\n\nMasterCardIcon.defaultProps = {\n width: '56',\n height: '35',\n};\n\nexport default MasterCardIcon;\n","import MasterCardIcon from './MasterCardIcon';\n\nexport default MasterCardIcon;\n","import PropTypes from 'prop-types';\n\nconst VisaCardIcon = ({ width, height }) => (\n \n \n \n);\n\nVisaCardIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n};\n\nVisaCardIcon.defaultProps = {\n width: '60',\n height: '20',\n};\n\nexport default VisaCardIcon;\n","import VisaCardIcon from './VisaCardIcon';\n\nexport default VisaCardIcon;\n","import MasterCardIcon from '../../../../../../CommunityPortal/components/Icons/MasterCardIcon';\nimport PropTypes from 'prop-types';\nimport VisaCardIcon from '../../../../../../CommunityPortal/components/Icons/VisaCardIcon';\nimport { formatDate } from '../../../../../../utility/courseHelper';\nimport { useWindowWidthContext } from '../../../../../../contexts/WindowWidthContext';\nimport { useTranslation } from 'react-i18next';\nconst className = 'c-BillingHistory';\n\nconst BillingHistory = ({ invoices, loading }) => {\n const { t } = useTranslation();\n\n const { isGtEqMd } = useWindowWidthContext();\n const renderCardIcon = (brand) => {\n if (brand === 'visa') {\n return ;\n } else if (brand === 'mastercard') {\n return ;\n }\n return null;\n };\n\n const renderPaymentMethod = (invoice) => {\n const { payment_method_details } = invoice;\n if (payment_method_details?.type === 'card') {\n const { brand, last4 } = payment_method_details.card;\n return (\n
\n {renderCardIcon(brand)}\n ••••{last4}\n
\n );\n } else {\n return (\n
\n E-wallet\n
\n );\n }\n };\n\n const renderSkeleton = () => {\n return [1, 2, 3, 4].map((t) => (\n \n \n
\n \n \n ));\n };\n\n const getUTCDateStringFromCreated = (date) => {\n const dateObj = new Date(date);\n if (typeof date !== 'string') dateObj.setUTCSeconds(date);\n return dateObj.toISOString();\n };\n\n const renderMobileView = () => {\n return (\n
\n \n {t('details')}\n \n \n {t('price')}\n \n
\n {invoices.map((invoice, i) => (\n <>\n
\n \n {formatDate(getUTCDateStringFromCreated(invoice?.created))}\n \n {invoice.description}\n \n {renderPaymentMethod(invoice)}\n \n
\n
\n {invoice.currency}{' '}\n {new Intl.NumberFormat({\n currency: invoice.currency,\n maximumFractionDigits: 2,\n trailingZeroDisplay: 'lessPrecision',\n }).format(invoice.amount_captured / 100)}{' '}\n
\n
\n \n ))}\n
\n );\n };\n\n return (\n
\n
\n \n {t('billing-history')}\n \n
\n {isGtEqMd && (\n \n \n \n \n \n \n \n \n \n \n {loading && renderSkeleton()}\n {invoices?.map((invoice, i) => (\n \n \n \n \n \n \n ))}\n \n
\n
{t('date')}
\n
\n {t('description')}\n \n {t('payment-method')}\n \n {t('total')}\n
\n {formatDate(getUTCDateStringFromCreated(invoice.created))}\n {invoice.description}\n {renderPaymentMethod(invoice)}\n \n {invoice.currency}{' '}\n {new Intl.NumberFormat({\n currency: invoice.currency,\n maximumFractionDigits: 2,\n trailingZeroDisplay: 'lessPrecision',\n }).format(invoice.amount_captured / 100)}{' '}\n
\n )}\n {!isGtEqMd && renderMobileView()}\n
\n );\n};\n\nBillingHistory.propTypes = {\n invoices: PropTypes.arrayOf(PropTypes.object),\n loading: PropTypes.bool,\n};\n\nBillingHistory.defaultProps = {};\n\nexport default BillingHistory;\n","import BillingHistory from './BilllingHistory';\n\nexport default BillingHistory;\n","export const CANCEL_OPTIONS = (t) => [\n { label: t('community-was-not-suitable'), value: 'not-suitable' },\n {\n label: t('community-was-not-engaging-for-me'),\n value: 'not-engaging',\n },\n {\n label: t('guest-speaker-s-were-not-exciting'),\n value: 'guest-speaker-not-exciting',\n },\n { label: t('personal-reasons'), value: 'personal-reasons' },\n { label: t('work-commitments'), value: 'work-commitments' },\n { label: t('technical-issues'), value: 'technical-issues' },\n { label: t('language-barriers'), value: 'language-barriers' },\n {\n label: t('community-is-too-expensive-for-the-value'),\n value: 'too-expensive',\n },\n { label: t('others-please-state'), value: 'other' },\n];\n","import classNames from 'classnames';\nimport style from './CheckboxV2.module.scss';\n\nconst CheckboxV2 = ({ label, checked, dataTestId, ...props }) => {\n const className = 'c-CheckboxV2';\n const baseClassNames = classNames(className, style[className], {\n [`${className}--checked`]: checked,\n [style[`${className}--checked`]]: checked,\n });\n\n const checkmarkClassName = `${className}__checkmark`;\n const checkmarkClassNames = classNames(\n checkmarkClassName,\n style[checkmarkClassName],\n {\n [`${checkmarkClassName}--checked`]: checked,\n [style[`${checkmarkClassName}--checked`]]: checked,\n }\n );\n\n return (\n
\n \n
\n );\n};\n\nCheckboxV2.defaultProps = {\n dataTestId: '',\n};\n\nexport default CheckboxV2;\n","import CheckboxV2 from './CheckboxV2';\nexport default CheckboxV2;\n","import PropTypes from 'prop-types';\nconst PlusFilledIcon = ({ width, height, fillColor }) => {\n return (\n \n \n \n );\n};\n\nPlusFilledIcon.propTypes = {\n width: PropTypes.string,\n height: PropTypes.string,\n fillColor: PropTypes.string,\n};\n\nPlusFilledIcon.defaultProps = {\n width: '20',\n height: '20',\n fillColor: '#191C1E',\n};\n\nexport default PlusFilledIcon;\n","import PlusFilledIcon from './PlusFilledIcon';\n\nexport default PlusFilledIcon;\n","import { CANCEL_OPTIONS } from './constants';\nimport {\n formatDateInDDMMYYYY,\n getDifferenceBetweenDatesInDays,\n subtractMinutesFromDate,\n} from '../../../../../../CommunityPortal/utils/dateUtils';\nimport { useMemo, useState } from 'react';\n\nimport Button from '../../../../../../CommunityPortal/components/Button';\nimport CheckboxV2 from '../../../../../../components/CheckboxV2';\nimport Input from '../../../../../../components/Form/Input';\nimport Modal from '../../../../../../CommunityPortal/components/Modal';\nimport MultiSelect from 'react-multi-select-component';\nimport PlusFilledIcon from '../../../../../../CommunityPortal/components/Icons/PlusFilledIcon';\nimport Proptypes from 'prop-types';\nimport { formatDate } from '../../../../../../utility/courseHelper';\nimport style from './CancelModal.module.scss';\nimport { useTranslation } from 'react-i18next';\n\nconst className = 'c-CancelModal';\nconst CancelModal = ({ showModal, onClose, onConfirm, nextBillingDate }) => {\n const { t } = useTranslation();\n const [step, setStep] = useState(1);\n const [reason, setReason] = useState([]);\n const [isfirstClick, setIsFirstClick] = useState(true);\n const [otherReason, setOtherReason] = useState('');\n\n const MEMBER_BENEFITS_TEXT = [\n t('watch-the-classes-in-our-video-library'),\n t('attend-the-upcoming-live-events'),\n t('participate-in-the-community-chat'),\n ];\n\n const error = useMemo(() => {\n if (isfirstClick) {\n return { errorInput: false, errorOther: false };\n }\n if (reason.length > 0) {\n if (reason.some((f) => f.value === 'other')) {\n if (otherReason.length > 0) {\n return { errorInput: false, errorOther: false };\n } else {\n return {\n errorInput: false,\n errorOther: t('please-elaborate-on-the-other-reason'),\n };\n }\n }\n return { errorInput: false, errorOther: false };\n } else {\n return { errorInput: t('please-select-a-reason'), errorOther: false };\n }\n }, [isfirstClick, otherReason.length, reason]);\n\n const onCloseModal = () => {\n setStep(1);\n onClose();\n };\n\n const onConfirmClick = () => {\n if (!!error) {\n let reasonAsArray = [...reason];\n const hasOtherReason = reasonAsArray.some((f) => f.value === 'other');\n if (hasOtherReason && otherReason.length > 0) {\n reasonAsArray = reasonAsArray.filter((f) => f.value !== 'other');\n reasonAsArray.push({\n label: `Other: ${otherReason}`,\n value: otherReason,\n });\n }\n const reasonAsString = reasonAsArray.map((r) => r.label).join(', ');\n onConfirm(reasonAsString);\n onCloseModal();\n } else {\n console.log('Disabled');\n }\n };\n\n const renderStep1 = () => {\n const daysBeforeBillingDate =\n getDifferenceBetweenDatesInDays(\n new Date(),\n formatDate(nextBillingDate)\n ) ?? 0;\n return (\n <>\n \n {t('were-sorry-to-see-you-go')}\n \n
\n \n {t('you-still-have-days-to-enjoy-your-benefits', {\n count: daysBeforeBillingDate,\n })}\n \n
\n
    \n {MEMBER_BENEFITS_TEXT.map((text, index) => (\n
  • {text}
  • \n ))}\n
\n
\n
\n \n {t('your-access-to-the-community-is-until-date', {\n date: formatDateInDDMMYYYY(\n subtractMinutesFromDate(nextBillingDate, 60 * 24)\n ),\n })}\n \n
\n \n
\n \n );\n };\n\n const renderStep2 = () => {\n return (\n <>\n \n {t('anything-youd-like-us-to-know')}\n \n
\n
\n \n {t('please-tell-us-why-you-want-to-withdraw')}\n \n
\n
\n }\n options={CANCEL_OPTIONS(t)}\n value={reason}\n onChange={(value) => {\n setReason(value);\n setIsFirstClick(false);\n }}\n // isOpen={true}\n labelledBy={t('select-the-ones-applicable')}\n hasSelectAll={false}\n disableSearch={true}\n className={style['rmsc-global']}\n valueRenderer={(selected, _options) => {\n return selected.length ? (\n
\n {selected.map((option) => (\n \n {option.label}\n \n ))}\n
\n ) : (\n t('select-the-ones-applicable')\n );\n }}\n ItemRenderer={({ checked, option, onClick, disabled }) => {\n return (\n
\n \n
\n );\n }}\n />\n {error.errorInput && (\n \n {error.errorInput}\n \n )}\n
\n
\n {reason.some((f) => f.value === 'other') && (\n
\n setOtherReason(e.target.value)}\n name=\"other-reason\"\n v2={true}\n error={error.errorOther}\n />\n
\n )}\n \n {t(\n 'you-will-not-be-charged-on-your-next-scheduled-billing-cycle-on-date',\n { date: formatDateInDDMMYYYY(nextBillingDate) }\n )}\n \n
\n \n \n {t('cancel-subscription')}\n \n
\n \n );\n };\n\n return (\n \n
\n {step === 1 && renderStep1()}\n {step === 2 && renderStep2()}\n
\n
\n );\n};\n\nCancelModal.propTypes = {\n showModal: Proptypes.bool,\n onClose: Proptypes.func,\n onConfirm: Proptypes.func,\n nextBillingDate: Proptypes.string,\n};\n\nCancelModal.defaultProps = {};\n\nexport default CancelModal;\n","import CancelModal from './CancelModal';\n\nexport default CancelModal;\n","export const NEXT_BILLING_DATE = (t) => t('next-billing-date-on');\nexport const SUBSCRIPTION_END_DATE = (t) => t('subscription-ends-on');\nexport const SUBSCRIPTION_WILL_END = (t) => t('subscription-will-end-in');\n","import {\n NEXT_BILLING_DATE,\n SUBSCRIPTION_END_DATE,\n SUBSCRIPTION_WILL_END,\n UNSUBSCRIBE_TEXT,\n} from './constants';\nimport Image, { ImageDataType } from '../../../../../../components/Image';\nimport {\n formatDateInDDMMYYYY,\n getDifferenceBetweenDatesInDays,\n} from '../../../../../../CommunityPortal/utils/dateUtils';\n\nimport Button from '../../../../../../CommunityPortal/components/Button';\nimport PropTypes from 'prop-types';\nimport { isDateInPast } from '../../../../../../utility/dateHelper';\nimport { useCallback } from 'react';\nimport { useWindowWidthContext } from '../../../../../../contexts/WindowWidthContext';\nimport { useTranslation } from 'react-i18next';\n\nconst className = 'c-SubscriptionCard';\nconst SubscriptionCard = ({\n code,\n name,\n img,\n nextBillingDate,\n pricePerMonthString,\n status,\n onCtaClick,\n isActive,\n isFreeCommunity,\n isPaidCommunity,\n isFreeTrial,\n isTokenGated,\n isManualEnrolment,\n discountedCommunity,\n isDiscountedPricing,\n isSubscriptionFree,\n isSubscriptionPaid,\n discountTagText,\n}) => {\n const { t } = useTranslation();\n const isAlreadyCancelled = status === 'Cancelled';\n const daysBeforeBillingDate = getDifferenceBetweenDatesInDays(\n new Date(),\n nextBillingDate\n );\n const { isGtEqMd } = useWindowWidthContext();\n const cancelledSubscriptionDivClass =\n isAlreadyCancelled && isGtEqMd && 'ml-auto';\n\n const getCTAText = useCallback(() => {\n if (isActive) {\n // This is when they are in the active state\n if (status === 'Cancelled') {\n if (isDateInPast(nextBillingDate)) {\n return t('unsubscribe');\n } else {\n return `${SUBSCRIPTION_WILL_END(t)}${daysBeforeBillingDate + 1} ${\n daysBeforeBillingDate > 1 ? 'days' : 'day'\n }`;\n }\n } else {\n return t('cancel-subscription');\n }\n } else {\n // List of subscriptions page\n return t('manage-subscription');\n }\n }, [daysBeforeBillingDate, isActive, nextBillingDate, status]);\n\n const getPricePerMonthString = () => {\n if (isSubscriptionFree) {\n return t('free');\n }\n if (isTokenGated) {\n return 'NFT-gated';\n }\n if (isManualEnrolment) {\n return t('free-access');\n }\n\n return pricePerMonthString;\n };\n\n const getDiscountString = () => {\n if (isFreeTrial) {\n return t('free-trial');\n }\n if (isDiscountedPricing) {\n return t('perc_off', { perc: discountedCommunity?.couponValue });\n }\n return '';\n };\n\n const shouldShowCancelButton = () => {\n if (isSubscriptionFree) {\n return false;\n }\n if (isTokenGated) {\n return false;\n }\n if (isManualEnrolment) {\n return false;\n }\n return true;\n };\n\n return (\n \n
\n
\n \n
\n
\n {name}\n
\n
\n
\n \n {isAlreadyCancelled\n ? `${SUBSCRIPTION_END_DATE(t)} ${formatDateInDDMMYYYY(\n nextBillingDate\n )}`\n : nextBillingDate &&\n `${NEXT_BILLING_DATE(t)} ${formatDateInDDMMYYYY(\n nextBillingDate\n )}`}\n \n \n {getPricePerMonthString()}\n \n
\n\n {isDiscountedPricing && (\n
\n \n {t('discount-applied')}\n \n
\n \n {discountTagText}\n \n |\n \n {discountedCommunity?.couponName}\n \n
\n
\n )}\n {shouldShowCancelButton() && (\n <>\n
\n
\n onCtaClick(code)}\n disabled={isActive && isAlreadyCancelled}\n >\n \n {getCTAText()}\n \n \n
\n \n )}\n
\n );\n};\n\nexport const SubscriptionCardDataType = {\n code: PropTypes.string.isRequired,\n name: PropTypes.string,\n img: PropTypes.shape(ImageDataType),\n nextBillingDate: PropTypes.string,\n pricePerMonthString: PropTypes.string,\n onCtaClick: PropTypes.func,\n isActive: PropTypes.bool,\n status: PropTypes.string,\n};\n\nSubscriptionCard.propTypes = SubscriptionCardDataType;\n\nSubscriptionCard.defaultProps = {\n isActive: false,\n};\n\nexport default SubscriptionCard;\n","import SubscriptionCard from './SubscriptionCard';\n\nexport default SubscriptionCard;\n","import Tool02 from './Tool02';\nexport default Tool02;\n","import React from 'react';\n\nconst Tool02 = () => {\n return (\n \n \n \n );\n};\n\nexport default Tool02;\n","import React from 'react';\n\nconst UserLeft01 = () => {\n return (\n \n \n \n );\n};\n\nexport default UserLeft01;\n","import Info from './Info';\nexport default Info;\n","import React from 'react';\n\nconst Info = () => {\n return (\n \n \n \n );\n};\n\nexport default Info;\n","import { format } from 'date-fns';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { startLogout } from '../../../../../../actions/auth';\nimport {\n cancelFreeOrTokenGatedSubscription,\n cancelSubscription,\n} from '../../../../../../CommunityPortal/apiServices/cancelSubscriptionService';\nimport CloseIcon from '../../../../../../CommunityPortal/components/Icons/CloseIcon';\nimport Modal from '../../../../../../CommunityPortal/components/Modal';\nimport RoundedButton from '../../../../../../CommunityPortal/components/RoundedButton/RoundedButton';\nimport { showToast } from '../../../../../../CommunityPortal/components/ToastContainer/ToastContainer';\nimport CheckboxV2 from '../../../../../../components/CheckboxV2';\nimport Info from '../../../../../../components/Icons/Info';\n\nconst MSG_MAX_LENGTH = 200;\nconst OTHER_MSG_NAME = 'other_msg';\n\nconst MODAL_STEP = {\n PAID_MSG: 'paid_msg',\n SELECT_MSG: 'select_msg',\n FINAL_MSG: 'final_msg',\n};\n\nconst LeaveCommunityModal = ({\n open,\n onClose,\n communityEventsPurchased,\n communityFoldersPurchased,\n isPaidCommunity,\n subscriptionObjectId,\n stripeSubscriptionId,\n communityCode,\n communityId,\n communityName,\n nextBillingDate,\n communities,\n}) => {\n const { t } = useTranslation();\n const OTHER_CHECK_NAME = t('other');\n const FORM_CHECKBOX_LIST = [\n {\n label: t('community-was-not-suitable'),\n name: 'Community_was_not_suitable',\n },\n {\n label: t('community-was-not-engaging-for-me'),\n name: 'Community_was_not_engaging_for_me',\n },\n {\n label: t('community-manager-sends-too-many-emails'),\n name: 'Community_Manager_sends_too_many_emails',\n },\n {\n label: t('guest-speaker-s-were-not-exciting'),\n name: 'Guest_speaker(s)_were_not_exciting',\n },\n { label: t('presonal-reasons'), name: 'Presonal_reasons' },\n { label: t('work-commitments'), name: 'Work_commitments' },\n { label: t('technical-issues'), name: 'Technical_issues' },\n { label: t('language-barriers'), name: 'Language_barriers' },\n { label: t('other-please-explain'), name: OTHER_CHECK_NAME },\n ];\n\n const FORM_CHECKBOX_MAP = FORM_CHECKBOX_LIST.reduce((acc, check) => {\n return Object.assign(acc, { [check.name]: check.label });\n }, {});\n const eventsPurchased = Object.keys(communityEventsPurchased)?.length;\n const foldersPurchased = Object.keys(communityFoldersPurchased)?.length;\n const hasPaidContent = eventsPurchased > 0 || foldersPurchased > 0;\n\n const dispatch = useDispatch();\n const [step, setStep] = useState(\n hasPaidContent ? MODAL_STEP.PAID_MSG : MODAL_STEP.SELECT_MSG\n );\n const [formData, setFormData] = useState({});\n const [isLoading, setIsLoading] = useState(false);\n const [errors, setErrors] = useState({});\n\n const isOtherChecked = formData[OTHER_CHECK_NAME];\n const isAtleastOneSelected = checkIfAtleastOneCheckboxSelected();\n\n const onInputChange = (e) => {\n e.persist();\n setFormData((prev) => {\n const name = e.target.name;\n if (name === OTHER_MSG_NAME) {\n if (errors[OTHER_MSG_NAME])\n setErrors((prev) => {\n return { ...prev, [OTHER_MSG_NAME]: '' };\n });\n\n return { ...prev, [e.target.name]: e.target.value };\n }\n\n if (errors.check)\n setErrors((prev) => {\n return { ...prev, check: '' };\n });\n return { ...prev, [e.target.name]: e.target.checked };\n });\n };\n\n const onModalClose = () => {\n onClose();\n setFormData({});\n setErrors({});\n setStep(hasPaidContent ? MODAL_STEP.PAID_MSG : MODAL_STEP.SELECT_MSG);\n };\n\n function checkIfAtleastOneCheckboxSelected() {\n // Atleast one should be seleted\n let isAtleastOneSelected = false;\n let formDataKeys = Object.keys(formData);\n\n for (let i = 0; i < formDataKeys.length; i++) {\n if (i === OTHER_MSG_NAME) continue;\n\n if (formData[formDataKeys[i]]) {\n isAtleastOneSelected = true;\n break;\n }\n }\n\n return isAtleastOneSelected;\n }\n\n const submitForm = () => {\n if (!isAtleastOneSelected) {\n setErrors((prev) => {\n return { ...prev, check: t('select-one') };\n });\n return;\n }\n\n if (isOtherChecked && !formData?.[OTHER_MSG_NAME]?.trim()?.length > 0) {\n setErrors((prev) => {\n return { ...prev, [OTHER_MSG_NAME]: t('cannot-be-empty') };\n });\n return;\n }\n\n setStep(MODAL_STEP.FINAL_MSG);\n };\n\n const confirmLeave = async () => {\n try {\n setIsLoading(true);\n\n // check paid - can cel subscription\n // free / nft - new api\n\n const formattedCancellationReason = (() => {\n const result = Object.keys(formData).reduce((acc, checkKey) => {\n const isChecked = formData[checkKey];\n\n if (checkKey === OTHER_CHECK_NAME || checkKey === OTHER_MSG_NAME)\n return acc;\n\n if (isChecked)\n return acc\n ? `${acc}, ${FORM_CHECKBOX_MAP[checkKey]}`\n : FORM_CHECKBOX_MAP[checkKey];\n\n return acc;\n }, '');\n\n if (isOtherChecked)\n return result\n ? `${result}, Other: ${formData[OTHER_MSG_NAME]}`\n : `Other: ${formData[OTHER_MSG_NAME]}`;\n\n return result;\n })();\n\n const { error } = isPaidCommunity\n ? await cancelSubscription(\n stripeSubscriptionId,\n formattedCancellationReason\n )\n : await cancelFreeOrTokenGatedSubscription({\n cancellationReason: formattedCancellationReason,\n communityCode,\n communityId,\n subscriptionObjectId,\n });\n\n if (error) throw new Error(error);\n\n onModalClose();\n showToast({\n text: t('successfully-left-communityname', { communityName }),\n });\n\n //if user is enrolled to single community which is free or token gated log him out after he has successfully left the community\n const isEnrolledToSingleCommunity = communities?.length === 1;\n const isEnrolledCommunityFreeOrGated =\n communities?.[0]?.isFreeCommunity || communities?.[0]?.isTokenGated;\n\n if (isEnrolledToSingleCommunity && isEnrolledCommunityFreeOrGated) {\n dispatch(startLogout());\n return;\n }\n\n window.location.reload();\n } catch (e) {\n showToast({ type: 'error', text: e.message });\n } finally {\n setIsLoading(false);\n }\n };\n\n const renderModalContent = () => {\n switch (step) {\n case MODAL_STEP.PAID_MSG:\n return (\n
\n

\n {t('are-you-sure-you-want-to-leave-the-community')}\n

\n
\n

{t('you-have-the-following-purchased-items')}

\n
    \n {!!eventsPurchased && (\n
  • \n {t('count-upcoming-paid-event', { count: eventsPurchased })}\n
  • \n )}\n {!!foldersPurchased && (\n
  • \n {t('count-purchased-content-in-the-library', {\n count: foldersPurchased,\n })}\n
  • \n )}\n
\n
\n
\n \n {t('cancel')}\n \n setStep(MODAL_STEP.SELECT_MSG)}\n >\n {t('proceed')}\n \n
\n
\n );\n case MODAL_STEP.SELECT_MSG:\n return (\n
\n

\n {t('were-sad-to-see-you-go')}\n

\n
\n

\n {t(\n 'before-you-leave-the-community-we-would-appreciate-if-you-could-share-your-reasons-for-leaving'\n )}\n

\n
\n
\n {FORM_CHECKBOX_LIST.map(({ label, name }, index) => (\n \n ))}\n {errors.check && (\n

\n {errors.check}\n

\n )}\n {isOtherChecked && (\n
\n \n {errors[OTHER_MSG_NAME] && (\n

\n {errors[OTHER_MSG_NAME]}\n

\n )}\n

\n {`${\n formData?.[OTHER_MSG_NAME]?.length ?? 0\n }/${MSG_MAX_LENGTH}`}\n

\n
\n )}\n
\n
\n \n {t('cancel')}\n \n \n {t('next')}\n \n
\n
\n );\n case MODAL_STEP.FINAL_MSG:\n return (\n
\n

\n {t('are-you-sure-you-want-to-leave-the-community')}\n

\n
\n

{t('you-will-lose-access-to')}

\n
    \n {!!eventsPurchased && (\n
  • \n {t('a-paid-event-that-youre-attending')}\n
  • \n )}\n {!!foldersPurchased && (\n
  • \n {t('paid-content-in-the-library-that-you-purchased')}\n
  • \n )}\n {communities?.length === 1 ? (\n
  • {t('access-to-nas-io-portal')}
  • \n ) : (\n
  • \n {t('access-to-the-community-portal')}\n
  • \n )}\n
  • {t('your-community-chat')}
  • \n
\n
\n
\n \n {t('cancel')}\n \n \n {t('leave-community')}\n \n
\n {isPaidCommunity && nextBillingDate && (\n
\n
\n \n

\n {t(\n 'access-to-the-community-will-remain-available-until-date',\n {\n date: format(new Date(nextBillingDate), 'dd MMM, yyyy'),\n }\n )}\n

\n
\n
\n )}\n
\n );\n default:\n return null;\n }\n };\n\n return (\n \n }\n >\n {renderModalContent()}\n \n );\n};\n\nexport default LeaveCommunityModal;\n","import LeaveCommunityModal from './LeaveCommunityModal';\nexport default LeaveCommunityModal;\n","import { format } from 'date-fns';\nimport React, { useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { useOutsideComponentClickDetect } from '../../../../../../CommunityPortal/hooks';\nimport { handleLeaveCommunityClickInDemo } from '../../../../../../CommunityPortal/utils/productDemoUtils';\nimport MoreVerticalIcon from '../../../../../../components/Icons/MoreVerticalIcon';\nimport Tool02 from '../../../../../../components/Icons/Tool02';\nimport UserLeft01 from '../../../../../../components/Icons/UserLeft01/UserLeft01';\nimport Image from '../../../../../../components/Image';\nimport LeaveCommunityModal from '../LeaveCommunityModal';\nimport {\n NEXT_BILLING_DATE,\n SUBSCRIPTION_END_DATE,\n} from '../SubscriptionCard/constants';\n\nfunction checkIfUserIsManagerOrAdmin({ membersWithRoles = [], userId }) {\n const isEnrolledDetail = membersWithRoles.find(\n (roles) => roles.userObjectId === userId\n );\n\n if (!isEnrolledDetail) return false;\n\n const roles = isEnrolledDetail?.role ?? [];\n\n const isAdminOrMember = roles.find((role) =>\n ['owner', 'admin', 'manager'].includes(role)\n );\n\n if (!isAdminOrMember) return false;\n\n return true;\n}\n\nconst SubscriptionCardV2 = ({\n community,\n onCtaClick,\n isDemoCommunity,\n communities = [],\n}) => {\n const { t } = useTranslation();\n const {\n id,\n code,\n name,\n By,\n img,\n nextBillingDate,\n pricePerMonthString,\n status,\n isPaidCommunity,\n isTokenGated,\n isManualEnrolment,\n discountedCommunity,\n isDiscountedPricing,\n isSubscriptionFree,\n communityEventsPurchased,\n communityFoldersPurchased,\n stripeSubscriptionId,\n subscriptionObjectId,\n membersWithRoles,\n subscription,\n discountTagText,\n } = community;\n\n const { discountdetails } = subscription;\n\n const isFreeTrial = discountdetails?.promoDetails?.trialDays > 0;\n\n const user = useSelector((state) => state.auth.user);\n const optionMenuRef = useRef();\n const [isOptionMenuOpen, setIsOptionMenuOpen] = useState(false);\n const [isLeaveCommunityModalOpen, setIsLeaveCommunityModalOpen] = useState(\n false\n );\n const isAlreadyCancelled = status === 'Cancelled';\n const isAdminOrManager = checkIfUserIsManagerOrAdmin({\n membersWithRoles: membersWithRoles,\n userId: user?._id,\n });\n\n const getPricePerMonthString = () => {\n if (isSubscriptionFree) {\n return t('free');\n }\n if (isTokenGated) {\n return t('nft-gated');\n }\n if (isManualEnrolment) {\n return t('free-access');\n }\n if (isFreeTrial) {\n return 'Free Trial';\n }\n return t('paid-amount', { amount: pricePerMonthString });\n };\n\n const onLeaveCommunityModalOpen = () => {\n setIsLeaveCommunityModalOpen(true);\n };\n\n const onLeaveCommunityModalClose = () => {\n setIsLeaveCommunityModalOpen(false);\n };\n\n useOutsideComponentClickDetect(optionMenuRef, () =>\n setIsOptionMenuOpen(false)\n );\n\n return (\n
\n
\n
\n \n
\n
\n

\n {name}\n

\n

\n {By}\n

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

{getPricePerMonthString()}

\n {isDiscountedPricing && !isFreeTrial && (\n
\n {discountTagText}\n
\n )}\n
\n {isPaidCommunity && (\n

\n {isAlreadyCancelled\n ? `${SUBSCRIPTION_END_DATE(t)} ${format(\n new Date(nextBillingDate),\n 'dd MMM, yyyy'\n )}`\n : nextBillingDate &&\n `${NEXT_BILLING_DATE(t)} ${format(\n new Date(nextBillingDate),\n 'dd MMM, yyyy'\n )}`}\n

\n )}\n\n {(!isAdminOrManager || isPaidCommunity) && (\n setIsOptionMenuOpen((prev) => !prev)}\n >\n \n {isOptionMenuOpen && (\n
\n {isPaidCommunity && (\n {\n if (isDemoCommunity) {\n handleLeaveCommunityClickInDemo();\n return;\n }\n onCtaClick(code);\n }}\n >\n
\n \n
\n

\n {t('manage-membership')}\n

\n
\n )}\n\n {!isAdminOrManager && (\n {\n if (isDemoCommunity) {\n handleLeaveCommunityClickInDemo();\n return;\n }\n\n if (isPaidCommunity) {\n onCtaClick(code);\n return;\n }\n\n onLeaveCommunityModalOpen();\n }}\n >\n
\n \n
\n

\n {t('leave-community')}\n

\n
\n )}\n
\n )}\n \n )}\n \n\n \n \n );\n};\n\nexport default SubscriptionCardV2;\n","import { useMemo, useState } from 'react';\n\nimport BillingHistory from './components/BillingHistory';\nimport CancelModal from './components/CancelModal';\nimport PageTemplate from '../../../../CommunityPortal/components/PageTemplate';\nimport PropTypes from 'prop-types';\nimport SubscriptionCard from './components/SubscriptionCard';\nimport { useCallback } from 'react';\nimport SubscriptionCardV2 from './components/SubscriptionCardV2/SubscriptionCardV2';\nimport Loading from '../../../../components/Loading';\nimport { getExpiredStatus } from '../../../../CommunityPortal/util';\nimport { COMMUNITY_EXPIRED } from '../../../../CommunityPortal/constants';\nimport { useTranslation } from 'react-i18next';\nimport useNewMPPageRedirection from '../../../../CommunityPortal/hooks/useNewMPPageRedirection';\nimport { withRouter } from 'react-router';\n\nconst className = 'c-SettingsPage-p-ProfilePage';\nconst MembershipPage = ({\n communities,\n activeCommunityCode,\n setActiveCommunityCode,\n loading,\n onCancelSubscriptionClick,\n invoices,\n invoiceLoading,\n location,\n}) => {\n const { t } = useTranslation();\n const headerStaticProps = {\n title: t('membership'),\n };\n const [showModal, setShowModal] = useState(false);\n\n const isRedirecting = useNewMPPageRedirection({\n queryString: location.search,\n newPagePath: '/user/membership',\n });\n\n // filter out expired communities\n const activeCommunities = useMemo(() => {\n if (!communities || communities.length === 0) return null;\n return communities.filter(\n (community) =>\n getExpiredStatus(community?.subscription) !== COMMUNITY_EXPIRED\n );\n }, [communities]);\n\n const activeCommunityData = useMemo(() => {\n if (!activeCommunityCode || !communities || communities.length === 0)\n return null;\n if (!activeCommunityCode) return null;\n return communities.find(\n (community) => community.code === activeCommunityCode\n );\n }, [activeCommunityCode, communities]);\n\n const onManageSubscriptionClick = useCallback(\n (communityCode) => {\n setActiveCommunityCode(communityCode);\n },\n [setActiveCommunityCode]\n );\n\n const onConfirmCancelClick = async (reason) => {\n await onCancelSubscriptionClick(reason);\n setActiveCommunityCode(null);\n };\n\n const renderSubtitle = useCallback(() => {\n if (!activeCommunityCode) {\n return (\n \n {t('my-subscriptions')}\n \n );\n } else {\n return (\n \n setActiveCommunityCode(null)}\n className=\"cursor-pointer text-grey-neutral40\"\n >\n {t('memberships-greater-than')}{' '}\n \n \n {t('manage-subscription')}\n \n \n );\n }\n }, [activeCommunityCode, setActiveCommunityCode]);\n\n const renderSkeleton = () => {\n return [1, 2].map((t) => (\n \n
\n
\n
\n
\n
\n
\n
\n \n ));\n };\n\n const renderContent = useCallback(() => {\n return (\n
\n
{renderSubtitle()}
\n
\n {!activeCommunityCode && loading && renderSkeleton()}\n {loading && }\n {!activeCommunityCode &&\n !loading &&\n activeCommunities?.map((community, i) => (\n
\n \n
\n ))}\n {activeCommunityCode && !loading && (\n setShowModal(true)}\n isActive={true}\n />\n )}\n
\n {activeCommunityCode && !invoiceLoading && invoices.length !== 0 && (\n \n )}\n {invoiceLoading && (\n
\n \n
\n )}\n
\n );\n }, [\n activeCommunityCode,\n activeCommunityData,\n communities,\n invoiceLoading,\n invoices,\n loading,\n onManageSubscriptionClick,\n renderSubtitle,\n ]);\n\n if (isRedirecting) {\n return null;\n }\n\n return (\n <>\n \n {/* Render Modal */}\n {activeCommunityCode && (\n setShowModal(false)}\n onConfirm={onConfirmCancelClick}\n nextBillingDate={activeCommunityData?.nextBillingDate}\n />\n )}\n \n );\n};\n\nMembershipPage.propTypes = {\n communities: PropTypes.array,\n activeCommunityCode: PropTypes.string,\n setActiveCommunityCode: PropTypes.func,\n loading: PropTypes.bool,\n onCancelSubscriptionClick: PropTypes.func,\n invoices: PropTypes.array,\n invoiceLoading: PropTypes.bool,\n};\nMembershipPage.defaultProps = {\n activeCommunityCode: null,\n loading: false,\n invoiceLoading: false,\n};\n\nexport default withRouter(MembershipPage);\n","import MembershipPage from './MembershipPage';\n\nexport default MembershipPage;\n","import CommonSettingWidget from './CommonSettingWidget';\nexport default CommonSettingWidget;\n","import './CommonSettingWidget.scss';\n\nconst CommonSettingWidget = ({ header, children }) => {\n const className = 'c-CommonSettingWidget';\n\n return (\n
\n
{header}
\n <>{children}\n
\n );\n};\n\nexport default CommonSettingWidget;\n","import Checkbox from './Checkbox';\nexport default Checkbox;\n","import React, { useEffect } from 'react';\nimport './Checkbox.scss';\n\nconst Checkbox = ({ label, checked, ...props }) => {\n const className = 'c-Checkbox';\n const classNames = [className, checked ? ` ${className}--checked` : ''].join(\n ''\n );\n\n const checkmarkClassName = `${className}__checkmark`;\n const checkmarkClassNames = [\n checkmarkClassName,\n checked ? ` ${checkmarkClassName}--checked` : '',\n ].join('');\n\n return (\n \n );\n};\n\nexport default Checkbox;\n","import React from 'react';\n\nfunction InstagramGreyIcon({ customClassName }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default InstagramGreyIcon;\n","import InstagramGreyIcon from './InstagramGreyIcon';\nexport default InstagramGreyIcon;\n","import Select from './Select';\nexport default Select;\n","import './Select.scss';\n\nimport DiscordV2 from '../../Icons/DiscoardV2/DiscoardV2';\nimport FacebookGreyIcon from '../../Icons/FacebookGreyIcon';\nimport FacebookIconV2Colored from '../../Icons/FacebookIconV2Colored/FacebookIconV2Colored';\nimport InstagramIconV2Colored from '../../Icons/InstagramIconV2Colored/InstagramIconV2Colored';\nimport LinkedIconV2Colored from '../../Icons/LinkedIconV2Colored/LinkedIconV2Colored';\nimport OpenSeaV2Colored from '../../Icons/OpenSeaV2Colored/OpenSeaV2Colored';\nimport { PropTypes } from 'prop-types';\nimport React from 'react';\nimport TiktokV2 from '../../Icons/TiktokV2/TiktokV2';\nimport TwitterIconV2Colored from '../../Icons/TwitterIconV2Colored/TwitterIconV2Colored';\nimport WebsiteIconV2 from '../../Icons/WebsiteIconV2/WebsiteIconV2';\nimport YoutubeIconV2Colored from '../../Icons/YoutubeIconV2Colored/YoutubeIconV2Colored';\n\nconst Select = ({\n label,\n placeholder,\n optionsList,\n value,\n onChange,\n error,\n register,\n name,\n defaultValue,\n v2,\n renderLogo,\n customInnerStyle,\n noChevron = true,\n ...props\n}) => {\n const className = 'c-Select';\n const baseClassNames = [\n className,\n error ? ` ${className}--error` : '',\n v2 ? ` ${className}--v2` : '',\n v2 && error ? ` ${className}--v2--error` : '',\n !value ? ` ${className}--show-placeholder` : '',\n ].join('');\n\n const hasOptionsDisplay =\n optionsList && optionsList.some((option) => option.optionDisplay);\n\n const renderLogoIcon = (type) => {\n switch (type) {\n case 'facebook':\n return ;\n case 'instagram':\n return ;\n case 'youtube':\n return ;\n case 'twitter':\n return ;\n case 'Tiktok':\n return ;\n case 'linkedin':\n return ;\n case 'Discord':\n return ;\n case 'OpenSea':\n return ;\n case 'Website':\n return ;\n default:\n return ;\n }\n };\n return (\n
\n \n {label ? (\n \n ) : null}\n \n \n {optionsList?.map(({ label, value }, key) => {\n return (\n \n );\n })}\n \n {hasOptionsDisplay && (\n \n \n {optionsList?.map(({ label, optionDisplay, value }, key) => {\n return (\n \n {optionDisplay ? optionDisplay : label}\n \n );\n })}\n \n )}\n {error ?

{error}

: null}\n
\n \n );\n};\n\nSelect.propTypes = {\n label: PropTypes.string,\n placeholder: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n onChange: PropTypes.func,\n optionsList: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n })\n ),\n error: PropTypes.string,\n v2: PropTypes.bool,\n};\n\nexport default Select;\n","import React from 'react';\n\nfunction YoutubeGreyIcon({ customClassName }) {\n return (\n \n \n \n );\n}\n\nexport default YoutubeGreyIcon;\n","import YoutubeGreyIcon from './YoutubeGreyIcon';\nexport default YoutubeGreyIcon;\n","import './FormInput.scss';\n\nimport Checkbox from '../../../../components/Checkbox';\nimport FacebookGreyIcon from '../../../../components/Icons/FacebookGreyIcon';\nimport InstagramGreyIcon from '../../../../components/Icons/InstagramGreyIcon';\nimport PropTypes from 'prop-types';\nimport Select from '../../../../components/Form/Select';\nimport YoutubeGreyIcon from '../../../../components/Icons/YoutubeGreyIcon';\n\nconst FormInput = ({\n label,\n name,\n placeholder,\n defaultValue,\n withCheckbox,\n checkboxLabel,\n checkboxName,\n checked,\n handleChecking,\n disabled,\n required,\n errors,\n register,\n type,\n optionsList,\n onChange,\n showLogo,\n showLogoBesideLabel,\n fluid,\n customClassForInputWrapper,\n v2,\n}) => {\n const className = 'c-FormInput';\n\n const renderCheckbox = () => (\n
\n \n \n
\n );\n\n const checkboxClass = withCheckbox ? `${className}__wrapper-vertical` : '';\n\n const renderLogo = (type) => {\n switch (type) {\n case 'facebook':\n return ;\n case 'instagram':\n return ;\n case 'youtube':\n return ;\n default:\n return ;\n }\n };\n\n const renderErrors = () => {\n let messages = [];\n\n if (errors) {\n errors.forEach((err, i) => {\n if (err?.message)\n messages.push(\n \n {err.message}\n \n );\n });\n }\n\n return messages.length > 0 ? messages : null;\n };\n\n const inputWrapperBaseClass = `${className}__wrapper`;\n const inputWrapperBaseClassNames = [\n inputWrapperBaseClass,\n fluid ? `${inputWrapperBaseClass}--fluid` : '',\n ].join(' ');\n\n const inputWrapperClassName = `${className}__input-wrapper`;\n const inputWrapperClassNames = [\n inputWrapperClassName,\n fluid ? `${inputWrapperClassName}--fluid` : '',\n ].join(' ');\n\n return (\n
\n {showLogo && (\n
\n {renderLogo(name)}\n
\n )}\n \n {showLogoBesideLabel && (\n
\n {renderLogo(name)}\n
\n )}{' '}\n {`${label} ${required ? '*' : ''}`}\n \n {withCheckbox && renderCheckbox()}\n \n {!checked && type === 'text' && (\n \n )}\n {type === 'dropdown' && (\n \n )}\n {!checked && renderErrors()}\n
\n \n );\n};\n\nFormInput.propTypes = {\n label: PropTypes.string.isRequired,\n name: PropTypes.string,\n placeholder: PropTypes.string,\n defaultValue: PropTypes.string,\n withCheckbox: PropTypes.bool,\n checkboxLabel: PropTypes.string,\n checkboxName: PropTypes.string,\n checked: PropTypes.bool,\n handleChecking: PropTypes.func,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n type: PropTypes.string.isRequired,\n errors: PropTypes.array,\n register: PropTypes.func,\n showLogo: PropTypes.bool,\n showLogoBesideLabel: PropTypes.bool,\n fluid: PropTypes.bool,\n v2: PropTypes.bool,\n};\n\nFormInput.defaultProps = {\n required: false,\n type: 'text',\n showLogo: false,\n fluid: false,\n v2: false,\n};\n\nexport default FormInput;\n","import FormInput from './FormInput';\nexport default FormInput;\n","import CommentSettingWidget from './CommentSettingWidget';\nexport default CommentSettingWidget;\n","import React from 'react';\nimport { PropTypes } from 'prop-types';\nimport CommonSettingWidget from '../CommonSettingWidget';\nimport FormInput from '../FormInput';\n\nimport './CommentSettingWidget.scss';\nimport { useTranslation } from 'react-i18next';\n\nconst CommentSettingWidget = ({ inputProps }) => {\n const className = 'c-CommentSettingWidget';\n const { t } = useTranslation();\n\n const renderInputs = () =>\n inputProps?.map((input) => );\n\n const renderMainWidgetContent = () => {\n return (\n <>\n
\n
\n

\n {t(\n 'receive-email-notifications-when-a-student-replies-to-your-comment'\n )}\n

\n
\n
{renderInputs()}
\n
\n \n );\n };\n\n function HeaderContentForCommonSettingWidget() {\n return (\n <>\n

\n {t('comment-reply-email-preferences')}\n

\n \n );\n }\n\n return (\n
\n }\n children={renderMainWidgetContent()}\n />\n
\n );\n};\n\nCommentSettingWidget.propTypes = {\n inputProps: PropTypes.array,\n};\n\nexport default CommentSettingWidget;\n","import CommentSettingWidget from '../CommentSettingWidget';\nimport PageTemplate from '../../../../CommunityPortal/components/PageTemplate';\nimport style from './NewPreferences.module.scss';\nimport { useTranslation } from 'react-i18next';\nconst className = 'c-SettingPage-NewPreferencesPage';\n\nconst NewPreferencesPage = ({\n isLoading,\n updateProfile,\n updateProfileStatus,\n updateCommentPreference,\n updateVideoPreference,\n commentPreferenceInputProps,\n videoPreferenceInputProps,\n showStatus,\n inputProps,\n}) => {\n const { t } = useTranslation();\n\n const headerStaticPropsPreferences = {\n title: t('preferences'),\n };\n const renderContent = () => {\n return (\n
\n \n
\n );\n };\n\n return (\n <>\n \n \n );\n};\n\nexport default NewPreferencesPage;\n","import NewPreferencesPage from './NewPreferencesPage';\n\nexport default NewPreferencesPage;\n","// export const headerStaticPropsProfile = {\n// title: t('profile'),\n// };\n\nexport const findCountryWithCountryID = (t, countryList, countryId) => {\n let country = countryList.find((country) => {\n return country.id === countryId;\n });\n\n return t(country?.name);\n};\n\nexport const constantvalues = (t) => [\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/fb-transparent-black.svg',\n link: '',\n type: 'facebook',\n label: t('facebook'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'instagram',\n label: t('instagram'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'twitter',\n label: t('twitter'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'youtube',\n label: t('youtube'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'linkedin',\n label: t('linkedin'),\n },\n];\n\nexport const allSocialMediaValues = (t) => [\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/fb-transparent-black.svg',\n link: '',\n type: 'facebook',\n label: t('facebook'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'instagram',\n label: t('instagram'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'twitter',\n label: t('twitter'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'youtube',\n label: t('youtube'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'linkedin',\n label: t('linkedin'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'tiktok',\n label: t('tiktok'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'opensea',\n label: t('opensea'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'discord',\n label: t('discord'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'dribble',\n label: t('dribble'),\n },\n {\n iconLink:\n 'https://d2oi1rqwb0pj00.cloudfront.net/icons/ig-transparent-black.svg',\n link: '',\n type: 'website',\n label: t('website'),\n },\n];\n\n// export const DEFAULT_SOCIAL_MEDIA_OPTION = t('select-social-media');\nexport const SOCIAL_MEDIA_MODAL = 'SOCIAL_MEDIA_MODAL';\nexport const PASSWORD_MODAL = 'PASSWORD_MODAL';\nexport const EDIT_PROFILE_MODAL = 'EDIT_PROFILE_MODAL';\nexport const PASSWORD_DESIGN = '***********';\n// export const ACCOUNT_INFORMATION = t('account-information');\n// export const EDIT_PROFILE_TEXT = t('edit-profile');\n// export const PHONE_NUMBER_LABEL = t('phone-number');\n// export const COUNTRY_LABEL = t('country');\n// export const BIO_LABEL = t('bio');\n// export const SOCIAL_LINKS_LABEL = t('your-social-links');\n// export const UPDATE_LINKS_LABEL = t('update-links');\n// export const PASSWORD_LABEL = t('your-password');\n// export const CHANGE_PASSWORD_LABEL = t('change-password');\n","import React, { useEffect, useState } from 'react';\nimport { EDIT_PROFILE_MODAL } from '../NewProfilePage/constants';\nimport PropTypes from 'prop-types';\nimport Modal from '../../../../CommunityPortal/components/Modal';\nimport Input from '../../../../components/Form/Input';\nimport './EditProfilePage.scss';\nimport RoundedButton from '../../../../CommunityPortal/components/RoundedButton';\nimport Select from '../../../../components/Form/Select';\nimport { countryList } from '../../../../data/countryList';\nimport {\n dialCodeOptions,\n getDialCodeIdFromPhoneNumber,\n getPhoneNumberWithoutDial,\n getDialCodeById,\n} from '../../../../utility/formHelper';\nimport NPLAlert from '../../../../CommunityPortal/components/NPLAlert';\nimport CloseIcon from '../../../../CommunityPortal/components/Icons/CloseIcon';\nimport { useTranslation } from 'react-i18next';\n\nconst className = 'c-EditProfilePage';\n\nconst getPhoneNumberWithDialCode = (user) => {\n const dialCode = getDialCodeById(user?.dialCodeId);\n\n return `${dialCode}${user.phoneNumber}`;\n};\n\nconst arePhoneNumberEqual = (a, b) =>\n a?.phoneNumber === getPhoneNumberWithDialCode(b);\n\nconst EditProfilePage = ({\n showModal,\n setShowModal,\n updateProfile,\n user,\n errorsBasicInfo,\n registerBasicInfo,\n getBasicInfoValues,\n isBasicInfoUpdateLoading,\n}) => {\n const { t } = useTranslation();\n\n const [showPhoneUpdateModal, setShowPhoneUpdateModal] = useState(false);\n const [isPhoneNumberEdited, setIsPhoneNumberEdited] = useState(false);\n const dialCodeValue = getDialCodeIdFromPhoneNumber(user?.phoneNumber) ?? '';\n const phoneNumberWithoutDialCode =\n getPhoneNumberWithoutDial(user?.phoneNumber) ?? '';\n const isEditedPhoneNumberEqual = arePhoneNumberEqual(\n user,\n getBasicInfoValues()\n );\n\n const [description, setDescription] = useState('');\n const MAX_CHARACTERS = 140;\n\n const handleDescriptionChange = (event) => {\n const inputText = event.target.value;\n\n if (inputText.length <= MAX_CHARACTERS) {\n setDescription(inputText);\n }\n };\n\n useEffect(() => {\n setDescription(user?.description);\n }, [user?.description]);\n\n return (\n
\n {showModal === EDIT_PROFILE_MODAL && (\n setShowModal(null)}\n customContainerClass=\"!p-0 !rounded-28 !max-w-[640px]\"\n customInnerClass=\"max-h-[80vh] overflow-y-auto\"\n customCloseIcon={}\n customCloseIconClass=\"!top-[18px] !right-[24px]\"\n >\n
\n
\n
\n {t('edit-account-information')}\n
\n
\n
\n
\n \n \n \n\n
\n
\n \n setIsPhoneNumberEdited(true)}\n />\n
\n {errorsBasicInfo?.phoneNumber && (\n

\n {errorsBasicInfo?.phoneNumber}\n

\n )}\n

\n {t(\n 'this-number-will-be-used-for-all-methods-of-communication'\n )}\n

\n {isPhoneNumberEdited && (\n \n )}\n
\n\n ({\n label: country.name,\n value: country.id,\n }))}\n defaultValue={user?.countryId}\n register={registerBasicInfo}\n />\n
\n
\n

\n {t('bio')}\n

\n \n (Optional)\n \n
\n
\n \n

\n {description?.length}/{MAX_CHARACTERS}\n

\n {errorsBasicInfo?.phoneNumber && (\n

\n {errorsBasicInfo?.description}\n

\n )}\n
\n
\n
\n
\n
\n
\n setShowModal(null)}\n >\n {t('cancel')}\n \n {\n if (!isEditedPhoneNumberEqual) {\n setShowPhoneUpdateModal(true);\n return;\n }\n\n await updateProfile();\n setShowModal(null);\n setIsPhoneNumberEdited(false);\n }}\n isLoading={isBasicInfoUpdateLoading}\n >\n {t('save')}\n \n
\n
\n
\n \n )}\n {showPhoneUpdateModal && (\n setShowPhoneUpdateModal(false)}\n customContainerClass=\"!rounded-28 !max-w-[500px]\"\n showCloseIcon={false}\n >\n
\n

\n {t(\n 'are-you-sure-you-want-to-change-your-phone-number-to-phone-number',\n {\n phoneNumber: getPhoneNumberWithDialCode(getBasicInfoValues()),\n }\n )}\n

\n

\n {t(\n 'if-there-is-a-mismatch-between-numbers-you-will-be-removed-from-the-chat-group'\n )}\n

\n
\n setShowPhoneUpdateModal(false)}\n >\n {t('no')}\n \n {\n await updateProfile();\n setShowModal(null);\n setShowPhoneUpdateModal(false);\n setIsPhoneNumberEdited(false);\n }}\n isLoading={isBasicInfoUpdateLoading}\n >\n {t('yes')}\n \n
\n
\n \n )}\n
\n );\n};\n\nEditProfilePage.propTypes = {\n showModal: PropTypes.string,\n setShowModal: PropTypes.func,\n inputProps: PropTypes.object,\n updateProfile: PropTypes.func,\n user: PropTypes.object,\n};\nexport default EditProfilePage;\n","import EditProfilePage from './EditProfilePage';\n\nexport default EditProfilePage;\n","import CameraIcon from './CameraIcon';\nexport default CameraIcon;\n","import React from 'react';\n\nconst CameraIcon = () => {\n const className = 'c-CameraIcon bg-[#E1E2E5]';\n\n return (\n \n \n \n );\n};\n\nexport default CameraIcon;\n","import ProfileImageSetting from './ProfileImageSetting';\nexport default ProfileImageSetting;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport Auth from '../../../../modules/auth';\nimport { setUser } from '../../../../actions/user';\nimport { useDispatch } from 'react-redux';\nimport { uploadPhoto } from '../../../../services/userProfile';\nimport CameraIcon from '../../../../components/Icons/CameraIcon';\nimport './ProfileImageSetting.scss';\nimport AvatarEditor from 'react-avatar-editor';\nimport LoadingCircle from '../../../../components/Common/LoadingCircle/LoadingCircle';\nimport Button from '../../../../components/Button';\nimport { useTranslation } from 'react-i18next';\n\nconst MAX_IMG_SIZE = 3_145_728;\nconst DEFAULT_IMG =\n 'https://d2yjtdaqamc55g.cloudfront.net/randomProfileImage5.jpg';\n\n// TODO move all functions to external hooks\n\nconst ProfileImageSetting = (props) => {\n const className = 'c-ProfileImageSetting';\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const getImage = useCallback(() => {\n const userData = Auth.getUserData();\n if (userData?.learner?.profileImage) {\n const profilePicture = userData?.learner?.profileImage;\n return profilePicture;\n } else if (userData?.profileImage) {\n // we are doing this because in the initial phase the userData stored in the localStorage is different i.e. the profile image is not inside the learner\n const profileImage = userData?.profileImage;\n return profileImage;\n } else {\n return DEFAULT_IMG;\n }\n }, []);\n\n const imageInputRef = useRef(null);\n const editorRef = useRef(null);\n const [editorShow, setEditorShow] = useState(false);\n const [imageFile, setImageFile] = useState({\n file: null,\n link: '',\n });\n\n const [errorMessage, setErrorMessage] = useState('');\n const [imageUploadLoading, setImageUploadLoading] = useState(false);\n\n const handleUploadImage = () => {\n if (!!imageFile.file) {\n const canvas = editorRef.current.getImageScaledToCanvas();\n canvas.toBlob(async function (blob) {\n const formData = new FormData();\n formData.append('photo', blob);\n setImageUploadLoading(true);\n\n await uploadPhoto(formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n accept: '*/*',\n },\n })\n .then((doc) => {\n let updatedData = {\n ...props.user,\n profileImage: doc.data?.photoUrl,\n };\n\n Auth.setUserData(updatedData);\n dispatch(setUser(updatedData));\n\n setImageFile({\n ...imageFile,\n image: doc?.data?.photoUrl,\n });\n setErrorMessage('');\n setEditorShow(false);\n })\n .catch((err) => {\n setErrorMessage(t('something-went-wrong-try-again'));\n });\n setImageUploadLoading(false);\n });\n } else setErrorMessage(t('choose-a-file-first'));\n };\n\n const handleChange = (e) => {\n setErrorMessage('');\n if (!!e.target.files[0] && checkImageSize(e.target.files[0])) {\n if (!!e.target.files[0]) {\n let file = e.target.files[0];\n let link = window.URL.createObjectURL(e.target.files[0]);\n setEditorShow(true);\n setImageFile({\n file,\n link,\n });\n }\n }\n };\n\n const checkImageSize = (file) => {\n setImageFile({ file: null, link: null });\n if (file.size > MAX_IMG_SIZE) {\n setErrorMessage(t('file-size-must-be-less-than-3-megabytes'));\n return false;\n }\n return true;\n };\n\n const handleCancel = () => {\n setEditorShow(false);\n setImageFile({ file: null, link: null });\n imageInputRef.current.value = '';\n };\n\n useEffect(() => {\n const imageData = getImage();\n setImageFile({ file: null, link: imageData });\n }, []);\n\n return (\n
\n
\n
\n
\n \n \n \n \n
\n
\n \n
\n
\n \n

\n {t('drag-your-picture-to-fit-the-viewport')}\n

\n \n {imageUploadLoading ? (\n \n ) : (\n
\n \n \n
\n )}\n
\n
{errorMessage.length ? errorMessage : null}
\n
\n \n );\n};\n\nexport default ProfileImageSetting;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './PasswordInput.scss';\nimport Input from '../../../Form/Input';\n\nconst className = 'c-ResetPasswordContainer-PasswordInput';\n\nconst PasswordInput = ({\n name,\n value,\n placeholder,\n legend,\n onChange,\n showLabel,\n label,\n}) => (\n
\n {showLabel &&
{label}
}\n
\n \n {/* {legend &&
{legend}
} */}\n
\n
\n);\n\nexport const PasswordInputDataStructure = {\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n legend: PropTypes.string,\n};\n\nPasswordInput.propTypes = PasswordInputDataStructure;\n\nexport default PasswordInput;\n","import PasswordInput, { PasswordInputDataStructure } from './PasswordInput';\n\nexport { PasswordInputDataStructure };\nexport default PasswordInput;\n","import BackToLoginButton from './BackToLoginButton';\n\nexport default BackToLoginButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst BackToLoginButton = ({ successMsg }) => (\n
\n \n
Back to login
\n
\n
{successMsg}
\n
\n);\n\nBackToLoginButton.propTypes = {\n successMsg: PropTypes.string.isRequired,\n};\n\nexport default BackToLoginButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport PasswordInput, { PasswordInputDataStructure } from '../PasswordInput';\nimport { Children } from 'react';\nimport LoadingCircle from '../../../Common/LoadingCircle/LoadingCircle';\nimport BackToLoginButton from '../BackToLoginButton';\n\nimport './ResetPasswordForm.scss';\nimport Button from '../../../Button';\nimport { useTranslation } from 'react-i18next';\n\nconst className = 'c-ResetPasswordContainer-ResetPasswordForm';\n\nconst ResetPasswordForm = ({\n inputs,\n onSubmit,\n includeBackToLogin,\n loading,\n successMsg,\n resetPasswordFailed,\n btnText,\n btnIsFluid,\n showLabel,\n showForgotPassword,\n}) => {\n const { t } = useTranslation();\n const renderInputs = () =>\n Children.toArray(\n inputs.map((item) => )\n );\n\n const passwordIsFilled = inputs[0].value !== '';\n\n return (\n
\n
\n
\n \n
\n
\n
\n {renderInputs()}\n\n {loading || successMsg ? null : (\n
\n
\n
\n \n {btnText || t('submit')}\n \n {showForgotPassword && (\n \n window.location.replace('/forget-password')\n }\n >\n {t('forgot-password')}\n
\n )}\n
\n
\n )}\n {loading && }\n\n {resetPasswordFailed && (\n
\n {resetPasswordFailed}\n
\n )}\n {successMsg && (\n
{successMsg}
\n )}\n {includeBackToLogin && successMsg && (\n \n )}\n
\n
\n
\n
\n
\n \n
\n );\n};\n\nResetPasswordForm.propTypes = {\n inputProps: PropTypes.arrayOf(PropTypes.shape(PasswordInputDataStructure)),\n onSubmit: PropTypes.func.isRequired,\n includeBackToLogin: PropTypes.bool,\n loading: PropTypes.bool,\n successMsg: PropTypes.string,\n resetPasswordFailed: PropTypes.bool,\n btnText: PropTypes.string,\n btnIsFluid: PropTypes.bool,\n};\n\nexport default ResetPasswordForm;\n","export const loginLogoStaticProps = {\n imgProps: [\n {\n className: 'camera-logo',\n src:\n 'https://res.cloudinary.com/dgk6tzmvu/image/upload/v1592972697/academy/svg/camera.svg',\n alt: 'camera',\n },\n {\n className: 'login-na-logo',\n src:\n 'https://res.cloudinary.com/dgk6tzmvu/image/upload/v1592538165/academy/nasacademy-new.svg',\n alt: 'na-logo',\n },\n ],\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './Divider.scss';\n\nconst className = 'c-Divider';\n\nconst Divider = ({ narrow }) => {\n const narrowClass = narrow ? `${className}--narrow` : '';\n\n return (\n <>\n
\n \n );\n};\n\nDivider.propTypes = {\n narrow: PropTypes.bool,\n};\n\nexport default Divider;\n","import Divider from './Divider';\nexport default Divider;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport queryString from 'query-string';\nimport { withRouter } from 'react-router';\nimport { sendResetPassword } from '../../actions/auth';\nimport Auth from '../../modules/auth';\nimport ResetPasswordForm from '../ResetPassword/components/ResetPasswordForm/ResetPasswordForm';\nimport { loginLogoStaticProps } from '../ResetPassword/constants';\n\nimport './ResetPasswordContainer.scss';\nimport Divider from '../Divider';\nimport { useTranslation } from 'react-i18next';\n\nconst ResetPasswordContainer = ({\n flowType,\n redirectToLogin,\n resetToken,\n onSuccessHandler,\n renderSubtext,\n showLabel,\n}) => {\n const { t } = useTranslation();\n const baseClassName = 'c-ResetPasswordContainer';\n\n const token = resetToken || queryString.parse(window.location.search)?.token;\n const mainState = useSelector((state) => state?.main);\n\n const { loading, resetPasswordFailed, success } = mainState;\n\n const dispatch = useDispatch();\n\n const [oldPassword, setOldPassword] = useState('');\n const [newPassword, setNewPassword] = useState('');\n const [confirmNewPassword, setConfirmNewPassword] = useState('');\n\n const isFlowType = flowType === 'changeFlow';\n\n const changeField = (e) => {\n e.preventDefault();\n const field = e.target.name;\n const value = e.target.value;\n\n const handlers = {\n oldPassword: setOldPassword,\n newPassword: setNewPassword,\n confirmNewPassword: setConfirmNewPassword,\n };\n\n handlers[field](value);\n };\n\n const resetStateData = () => {\n setOldPassword('');\n setNewPassword('');\n setConfirmNewPassword('');\n };\n\n const resetPasswordWithToken = (e) => {\n e.preventDefault();\n dispatch(sendResetPassword(newPassword, confirmNewPassword, token));\n };\n\n if (success && onSuccessHandler) onSuccessHandler();\n\n const resetPasswordWithCurrentPassword = (e) => {\n e.preventDefault();\n\n const bearerToken = 'Bearer '.concat(Auth.getUserToken());\n\n dispatch(\n sendResetPassword(\n newPassword,\n confirmNewPassword,\n false,\n oldPassword,\n bearerToken,\n resetStateData\n )\n );\n };\n\n const formInputProps = {\n oldPassword: {\n name: 'oldPassword',\n label: t('current-password'),\n placeholder: t('enter-your-old-password'),\n value: oldPassword,\n onChange: changeField,\n },\n newPassword: {\n name: 'newPassword',\n label: isFlowType ? t('password') : t('new-password'),\n value: newPassword,\n placeholder: t('enter-your-password'),\n legend: t(\n 'require-at-least-8-characters-with-at-least-1-uppercase-1-lowercase-and-1-number'\n ),\n onChange: changeField,\n },\n confirmPassword: {\n name: 'confirmNewPassword',\n value: confirmNewPassword,\n placeholder: t('confirm-your-password'),\n label: t('confirm-password'),\n onChange: changeField,\n },\n };\n\n const flowProps = {\n setupFlow: {\n inputs: [\n formInputProps.oldPassword,\n formInputProps.newPassword,\n formInputProps.confirmPassword,\n ],\n onSubmit: resetPasswordWithCurrentPassword,\n includeBackToLogin: redirectToLogin,\n },\n changeFlow: {\n inputs: [formInputProps.newPassword, formInputProps.confirmPassword],\n onSubmit: resetPasswordWithToken,\n },\n };\n\n const passToken = () => (flowType === 'setupFlow' ? { token } : null);\n\n const className = `${baseClassName} ${baseClassName}${\n isFlowType ? '--change-flow' : ''\n }`;\n\n return (\n
\n {isFlowType && (\n
\n
\n {t('create-new-password')}\n
\n {renderSubtext && (\n
\n {t('this-is-the-last-step-we-promise')}\n
\n )}\n\n \n
\n )}\n \n
\n );\n};\n\nResetPasswordContainer.defaultProps = {\n renderSubtext: true,\n showLabel: false,\n};\n\nResetPasswordContainer.propTypes = {\n renderSubtext: PropTypes.bool,\n flowType: PropTypes.oneOf(['setupFlow', 'changeFlow']),\n showLabel: PropTypes.bool,\n};\n\nexport default withRouter(ResetPasswordContainer);\n","import PasswordSettingWidget from './PasswordSettingWidget';\nexport default PasswordSettingWidget;\n","import React from 'react';\nimport CommonSettingWidget from '../CommonSettingWidget';\nimport ResetPasswordContainer from '../../../../components/ResetPasswordContainer/ResetPasswordContainer';\n\nimport './PasswordSettingWidget.scss';\nimport { useTranslation } from 'react-i18next';\n\nconst PasswordSettingWidget = () => {\n const className = 'c-PasswordSettingWidget';\n\n const { t } = useTranslation();\n\n const renderMainWidgetContent = () => (\n \n );\n\n const renderPasswordrulesContent = () => {\n return (\n \n

\n {t('your-password-must-be-have-at-least')}{' '}\n

\n
    \n
    \n
    \n \n
    \n
    \n \n {t('8-characters-long')}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n {t('1-lowercase-letter-and-1-uppercase-letter')}\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n {t('1-number')}\n \n
    \n
    \n
\n
\n );\n };\n return (\n
\n \n {renderPasswordrulesContent()}\n {renderMainWidgetContent()}\n \n
\n );\n};\n\nexport default PasswordSettingWidget;\n","import ShowPasswordResetUpdateInput from './ShowPasswordResetUpdateInput';\n\nexport default ShowPasswordResetUpdateInput;\n","import React from 'react';\nimport Modal from '../../../../components/Modal';\nimport { PASSWORD_MODAL } from '../NewProfilePage/constants';\nimport PasswordSettingWidget from '../PasswordSettingWidget';\nimport PropTypes from 'prop-types';\nconst ShowPasswordResetUpdateInput = ({ showModal, setShowModal }) => {\n return (\n
\n setShowModal(null)}\n >\n \n \n
\n );\n};\n\nShowPasswordResetUpdateInput.propTypes = {\n showModal: PropTypes.string,\n setShowModal: PropTypes.func,\n};\n\nexport default ShowPasswordResetUpdateInput;\n","import Input from '../../../../components/Form/Input';\nimport Modal from '../../../../components/Modal';\nimport PropTypes from 'prop-types';\nimport { SOCIAL_MEDIA_MODAL } from '../NewProfilePage/constants';\nimport Select from '../../../../components/Form/Select';\nimport { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nconst className = 'c-ShowSocialMediaUpdateInputs';\n\nconst ShowSocialMediaUpdateInputs = ({\n showModal,\n onDiscardChanges,\n socialLinks,\n HandleInputChangeForSocialMediaField,\n selectedSocialmediaElement,\n onSocialMediaSelectChange,\n getLabelfromSocialMediaArray,\n onSaveTheChanges,\n allsocialMediaLinks,\n}) => {\n const { t } = useTranslation();\n const renderContent = useCallback(\n () => (\n <>\n \n
\n {socialLinks?.map((value, index) => (\n \n \n HandleInputChangeForSocialMediaField(e, index)\n }\n renderLogobesidelabel={true}\n typeoflogo={value.type}\n showLogoBeside={true}\n customClassForLabel=\"ml-8 items-center mb-0\"\n v2\n />\n
\n ))}\n\n {\n onSocialMediaSelectChange(e);\n }}\n optionsList={getLabelfromSocialMediaArray(allsocialMediaLinks)}\n v2\n />\n \n \n {t('discard-changes')}\n \n \n {t('save')}\n \n \n \n \n \n ),\n [\n HandleInputChangeForSocialMediaField,\n allsocialMediaLinks,\n getLabelfromSocialMediaArray,\n onDiscardChanges,\n onSaveTheChanges,\n onSocialMediaSelectChange,\n selectedSocialmediaElement,\n showModal,\n socialLinks,\n ]\n );\n return
{renderContent()}
;\n};\n\nShowSocialMediaUpdateInputs.propTypes = {\n showModel: PropTypes.string,\n onDiscardChanges: PropTypes.func,\n socialLinks: PropTypes.arrayOf(PropTypes.object),\n HandleInputChangeForSocialMediaField: PropTypes.func,\n selectedSocialmediaElement: PropTypes.string,\n onSocialMediaSelectChange: PropTypes.func,\n getLabelfromSocialMediaArray: PropTypes.func,\n onSaveTheChanges: PropTypes.func,\n allsocialMediaLinks: PropTypes.arrayOf(PropTypes.object),\n};\n\nexport default ShowSocialMediaUpdateInputs;\n","import ShowSocialMediaUpdateInputs from './ShowSocialMediaUpdateInputs';\n\nexport default ShowSocialMediaUpdateInputs;\n","import DiscordV2 from '../../../../components/Icons/DiscoardV2/DiscoardV2';\nimport DribbleIconV2Colored from '../../../../components/Icons/DribbleIconV2Colored/DribbleIconV2Colored';\nimport FacebookIconV2Colored from '../../../../components/Icons/FacebookIconV2Colored/FacebookIconV2Colored';\nimport InstagramIconV2Colored from '../../../../components/Icons/InstagramIconV2Colored/InstagramIconV2Colored';\nimport LinkedIconV2Colored from '../../../../components/Icons/LinkedIconV2Colored/LinkedIconV2Colored';\nimport OpenSeaV2Colored from '../../../../components/Icons/OpenSeaV2Colored/OpenSeaV2Colored';\nimport TiktokV2 from '../../../../components/Icons/TiktokV2/TiktokV2';\nimport TwitterIconV2Colored from '../../../../components/Icons/TwitterIconV2Colored/TwitterIconV2Colored';\nimport WebsiteIconV2 from '../../../../components/Icons/WebsiteIconV2/WebsiteIconV2';\nimport YoutubeIconV2Colored from '../../../../components/Icons/YoutubeIconV2Colored/YoutubeIconV2Colored';\n\nexport const renderLogo = (type) => {\n switch (type) {\n case 'facebook':\n return ;\n case 'instagram':\n return ;\n case 'youtube':\n return ;\n case 'twitter':\n return ;\n\n case 'tiktok':\n return ;\n case 'linkedin':\n return ;\n case 'discord':\n return ;\n case 'opensea':\n return ;\n case 'website':\n return ;\n\n case 'dribble':\n return ;\n default:\n return ;\n }\n};\n","import './NewProfilePage.scss';\n\nimport {\n allSocialMediaValues,\n EDIT_PROFILE_MODAL,\n PASSWORD_DESIGN,\n PASSWORD_MODAL,\n SOCIAL_MEDIA_MODAL,\n constantvalues,\n findCountryWithCountryID,\n} from './constants';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport EditProfilePage from '../EditProfileComponent';\nimport PageTemplate from '../../../../CommunityPortal/components/PageTemplate';\nimport ProfileImageSetting from '../ProfileImageSetting';\nimport PropTypes from 'prop-types';\nimport ShowPasswordResetUpdateInput from '../PasswordResetComponent';\nimport ShowSocialMediaUpdateInputs from '../SocialMediaUpdateComponent';\nimport { countryList } from '../../../../data/countryList';\nimport { renderLogo } from './utils';\nimport { useWindowWidthContext } from '../../../../contexts/WindowWidthContext';\nimport { useTranslation } from 'react-i18next';\nimport useNewMPPageRedirection from '../../../../CommunityPortal/hooks/useNewMPPageRedirection';\nimport { withRouter } from 'react-router';\n\nconst className = 'c-NewProfilePage';\nconst NewProfilePage = ({\n user,\n updateProfile,\n inputProps,\n isDesktopView,\n userSocialMediaLinks,\n updateSocialMedia,\n errorsBasicInfo,\n registerBasicInfo,\n getBasicInfoValues,\n isBasicInfoUpdateLoading,\n location,\n}) => {\n const { t } = useTranslation();\n const DEFAULT_SOCIAL_MEDIA_OPTION = t('select-social-media');\n const [socialLinks, setSocailLinks] = useState([]);\n const [socialLinksdefault, setSocialLinksdefault] = useState({});\n const [selectedSocialmediaElement, setSocialMediaelement] = useState(\n DEFAULT_SOCIAL_MEDIA_OPTION\n );\n const [showModal, setShowModal] = useState(null);\n\n const isRedirecting = useNewMPPageRedirection({\n queryString: location.search,\n newPagePath: '/user/profile',\n });\n\n const fullName = `${user?.firstName ?? ''} ${user?.lastName ?? ''}`;\n\n const textStyleforEmail = useMemo(() => {\n return isDesktopView ? 'break-normal' : 'break-all';\n }, [isDesktopView]);\n const allsocialMediaLinks = useMemo(() => {\n const commonElements = allSocialMediaValues(t).filter((element) =>\n socialLinks?.find((socialLink) => socialLink.type === element.type)\n );\n const updated_allSocialMediaValues = allSocialMediaValues(t).filter(\n (element) =>\n !commonElements?.find(\n (commonElement) => commonElement.type === element.type\n )\n );\n return updated_allSocialMediaValues;\n }, [t, socialLinks]);\n\n const { isGtEqMd } = useWindowWidthContext();\n // this function is used to save the un-changed state of the social media links\n const saveCopyOfSocialMediaLinkStates = (socialMediaParameter) => {\n let oldArray = socialMediaParameter;\n let newArray = JSON.stringify({ value: oldArray });\n setSocialLinksdefault(newArray);\n };\n const setSocialLinksAndSaveTheCopyOfSocialMediaLink = (\n socialLinks,\n socilMediaLinks\n ) => {\n setSocailLinks(socialLinks);\n saveCopyOfSocialMediaLinkStates(socilMediaLinks);\n };\n\n const RunStarterCodeForFilteringSocialMediaList = useCallback(() => {\n if (userSocialMediaLinks?.length < 5) {\n let socialMediaLinks = userSocialMediaLinks.map((social) => {\n return {\n iconLink: social.iconLink,\n link: social.link,\n type: social.type,\n };\n });\n\n let updated_constantvalues_with_socialMediaLinks = constantvalues(t).map(\n (constantvalue) => {\n let socialMediaLink = socialMediaLinks.find(\n (socialMediaLink) => socialMediaLink.type === constantvalue.type\n );\n if (socialMediaLink) {\n return {\n ...constantvalue,\n link: socialMediaLink.link,\n };\n } else {\n return constantvalue;\n }\n }\n );\n updated_constantvalues_with_socialMediaLinks = [\n ...new Set(updated_constantvalues_with_socialMediaLinks),\n ];\n\n setSocialLinksAndSaveTheCopyOfSocialMediaLink(\n updated_constantvalues_with_socialMediaLinks,\n updated_constantvalues_with_socialMediaLinks\n );\n } else if (user?.socialMedia.length > 5) {\n let socialMediaLinks_with_link_not_empty = userSocialMediaLinks?.filter(\n (social) => social.link !== null && social.link !== ''\n );\n let socialMediaLinks = socialMediaLinks_with_link_not_empty.map(\n (social) => {\n return {\n iconLink: social.iconLink,\n link: social.link,\n type: social.type,\n };\n }\n );\n setSocialLinksAndSaveTheCopyOfSocialMediaLink(\n socialMediaLinks,\n socialMediaLinks\n );\n } else {\n setSocialLinksAndSaveTheCopyOfSocialMediaLink(\n user?.socialMedia,\n userSocialMediaLinks\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [user?.socialMedia, userSocialMediaLinks]);\n\n const onSaveTheChanges = useCallback(() => {\n let answer = {};\n socialLinks.forEach((value) => {\n answer[value.type] = value.link;\n });\n updateSocialMedia(answer);\n setShowModal(null);\n }, [socialLinks, updateSocialMedia]);\n\n const onDiscardChanges = useCallback(() => {\n let value = JSON.parse(socialLinksdefault);\n\n const updatedvalue = value?.value?.map((value, index) => {\n return {\n ...value,\n link: value.link == null ? '' : value.link,\n };\n });\n setSocailLinks(updatedvalue);\n setShowModal(null);\n }, [socialLinksdefault]);\n\n const getLabelfromSocialMediaArray = useCallback(\n (socialMediaArray) => {\n let label = [];\n if (socialMediaArray.length > 0) {\n label = socialMediaArray.map((socialMedia) => {\n return {\n label: socialMedia.type,\n value: socialMedia.type,\n };\n });\n }\n return [\n {\n type: t('select'),\n label: t('select'),\n },\n ...label,\n ];\n },\n [t]\n );\n\n const onSocialMediaSelectChange = useCallback(\n (e) => {\n if (e.target.value === DEFAULT_SOCIAL_MEDIA_OPTION) {\n return;\n }\n const newSocialMediaLink = {\n iconLink: e.target.value,\n link: '',\n type: e.target.value,\n };\n setSocailLinks([...socialLinks, newSocialMediaLink]);\n setSocialMediaelement(DEFAULT_SOCIAL_MEDIA_OPTION);\n },\n [socialLinks]\n );\n\n const showSocialMediaModel = useCallback(() => {\n setShowModal(SOCIAL_MEDIA_MODAL);\n }, []);\n const showPasswordModel = useCallback(() => {\n setShowModal(PASSWORD_MODAL);\n }, []);\n const showEditProfileModel = useCallback(() => {\n setShowModal(EDIT_PROFILE_MODAL);\n }, []);\n const handleInputChangeForSocialMediaField = useCallback(\n (e, index) => {\n socialLinks[index].link = e.target.value;\n setSocailLinks([...socialLinks]);\n },\n [socialLinks]\n );\n\n const renderSocialMediaIcons = useCallback(() => {\n if (!socialLinks) {\n RunStarterCodeForFilteringSocialMediaList();\n }\n return socialLinks?.map((item, index) => (\n
\n {item.link && (\n \n {renderLogo(item.type)}\n \n )}\n
\n ));\n }, [socialLinks, RunStarterCodeForFilteringSocialMediaList]);\n\n const getSocialMediaComponentProps = useCallback(() => {\n return {\n onDiscardChanges,\n showModal: showModal,\n socialLinks,\n HandleInputChangeForSocialMediaField: handleInputChangeForSocialMediaField,\n selectedSocialmediaElement,\n onSocialMediaSelectChange,\n getLabelfromSocialMediaArray,\n onSaveTheChanges,\n allsocialMediaLinks,\n };\n }, [\n onDiscardChanges,\n showModal,\n socialLinks,\n handleInputChangeForSocialMediaField,\n selectedSocialmediaElement,\n onSocialMediaSelectChange,\n getLabelfromSocialMediaArray,\n onSaveTheChanges,\n allsocialMediaLinks,\n ]);\n\n useEffect(() => {\n RunStarterCodeForFilteringSocialMediaList();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const renderContent = useCallback(() => {\n return (\n
\n

\n {t('account-information')}\n

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

{fullName}

\n \n {user?.email}\n

\n
\n
\n {isGtEqMd && (\n
\n {' '}\n \n {t('edit-profile')}\n \n
\n )}\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {t('phone-number')}\n \n {user?.phoneNumber}\n
{t('country')}\n {findCountryWithCountryID(\n t,\n countryList,\n user?.countryId\n )}\n
{t('bio')}\n {user?.description}\n
\n {!isGtEqMd && (\n
\n \n {t('edit-profile')}\n \n
\n )}\n
\n
\n
\n

{t('your-social-links')}

\n
\n \n {renderSocialMediaIcons()}\n
\n \n {t('update-links')}\n \n
\n
\n
\n

{t('your-password')}

\n
\n \n {PASSWORD_DESIGN}\n
\n \n {t('change-password')}\n \n
\n
\n
\n
\n
\n \n \n\n \n \n\n \n \n );\n }, [\n user,\n fullName,\n textStyleforEmail,\n isGtEqMd,\n showEditProfileModel,\n renderSocialMediaIcons,\n showSocialMediaModel,\n showPasswordModel,\n getSocialMediaComponentProps,\n showModal,\n inputProps,\n updateProfile,\n errorsBasicInfo,\n registerBasicInfo,\n getBasicInfoValues,\n isBasicInfoUpdateLoading,\n t,\n ]);\n\n if (isRedirecting) {\n return null;\n }\n\n return (\n <>\n \n \n );\n};\n\nNewProfilePage.propTypes = {\n user: PropTypes.object.isRequired,\n updateProfile: PropTypes.func.isRequired,\n inputProps: PropTypes.object.isRequired,\n isDesktopView: PropTypes.bool.isRequired,\n userSocialMediaLinks: PropTypes.array.isRequired,\n updateSocialMedia: PropTypes.func.isRequired,\n};\n\nexport default withRouter(NewProfilePage);\n","export const headerStaticPropsReferral = {\n title: 'Referral',\n};\n\nexport const SHARE_SUBTITLE_TEXT =\n 'Share this code, you and your friend will get 8% benefits on the class fees.';\n\nexport const MAKE_REFERRAL_TITLE = 'Make a referral to start earning credits';\nexport const SHARE_PERSONAL_LINK_TEXT = 'Share your personal link';\nexport const COPY_LINK = 'Copy Link';\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Text, { TextType } from '../../../../components/Text';\nimport { formatCentsIntToUSD } from '../../../../utility/formatHelper';\n\nimport './RedeemBox.scss';\nimport { useTranslation } from 'react-i18next';\n\nconst className = 'c-SettingPage-RedeemBox';\n\nconst RedeemBox = ({\n title,\n referralCredit,\n giftCredit,\n currency,\n ctaHandler,\n ctaLabel,\n note,\n noCreditText,\n}) => {\n const { t } = useTranslation();\n let disabledButtonClassName = `${className}__cta--disabled`;\n let ctaDisplayType = 'standard-inverse';\n const shouldRenderAmount = referralCredit > 0;\n const formattedReferralCredit = formatCentsIntToUSD(referralCredit);\n const formattedGiftCredit = formatCentsIntToUSD(giftCredit);\n\n if (ctaHandler) {\n disabledButtonClassName = '';\n // eslint-disable-next-line no-unused-vars\n ctaDisplayType = 'flex';\n }\n\n // TODO: Aman\n const giftCreditNote = [\n {\n text: t(\n 'you-also-have-credit-currency-gift-credits-which-are-not-redeemable',\n { credit: formattedGiftCredit, currency }\n ),\n },\n ];\n\n return (\n
\n
\n

\n {' '}\n {t('you-have')}{' '}\n

\n {shouldRenderAmount ? (\n {`${currency} ${formattedReferralCredit} `}

\n ) : (\n

{`USD 0.00 `}

\n )}\n \n
\n {title}\n
\n {!shouldRenderAmount && (\n

{noCreditText}

\n )}\n {shouldRenderAmount && (\n
\n \n {ctaLabel}\n \n
\n )}\n
\n
\n\n {giftCredit > 0 && (\n
\n \n
\n )}\n
\n \n
\n \n );\n};\n\nexport const RedeemBoxPropTypes = {\n title: PropTypes.string.isRequired,\n referralCredit: PropTypes.number.isRequired,\n giftCredit: PropTypes.number.isRequired,\n currency: PropTypes.string.isRequired,\n ctaLabel: PropTypes.string.isRequired,\n ctaHandler: PropTypes.func,\n note: TextType.isRequired,\n noCreditText: PropTypes.string.isRequired,\n};\n\nRedeemBox.propTypes = RedeemBoxPropTypes;\n\nRedeemBox.defaultProps = {\n currency: 'USD',\n};\n\nexport default RedeemBox;\n","import RedeemBox, { RedeemBoxPropTypes } from './RedeemBox';\n\nexport { RedeemBoxPropTypes };\nexport default RedeemBox;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './SuccessMessage.scss';\n\nconst SuccessMessage = (props) => {\n return (\n \n {props.msg}\n \n );\n};\n\nSuccessMessage.propTypes = {\n msg: PropTypes.string.isRequired,\n position: PropTypes.string,\n top: PropTypes.string,\n left: PropTypes.string,\n};\n\nexport default SuccessMessage;\n","import {\n COPY_LINK,\n MAKE_REFERRAL_TITLE,\n SHARE_PERSONAL_LINK_TEXT,\n SHARE_SUBTITLE_TEXT,\n headerStaticPropsReferral,\n} from './contants';\nimport RedeemBox, {\n RedeemBoxPropTypes,\n} from '../SettingPage/components/RedeemBox';\nimport { useCallback, useState } from 'react';\n\nimport Button from '../../components/Button';\nimport CopyIcon from '../../components/Icons/CopyIcon';\nimport Input from '../../components/Form/Input';\nimport PageTemplate from '../../CommunityPortal/components/PageTemplate';\nimport PropTypes from 'prop-types';\nimport SuccessMessage from '../../components/Profile/components/SuccessMessage/SuccessMessage';\nimport { TextType } from '../../components/Text';\n\nconst className = 'c-SettingPage-newReferralPage';\n\nconst NewReferralPage = ({\n header,\n text,\n referralProps,\n shareCTALabel,\n shareCTAOnClick,\n isDesktop,\n redeemBox,\n user,\n}) => {\n const [copyReferralSuccess, setCopyReferralSuccess] = useState(false);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const copyReferralCode = () => {\n navigator.clipboard.writeText(referralProps.url);\n setTimeout(() => {\n setCopyReferralSuccess(true);\n }, 0);\n setTimeout(() => {\n setCopyReferralSuccess(false);\n }, 2000);\n };\n const ReferralCard = useCallback(() => {\n return (\n <>\n \n
\n

\n {MAKE_REFERRAL_TITLE}\n

\n
\n
\n

\n {SHARE_PERSONAL_LINK_TEXT}\n

\n \n {copyReferralSuccess && (\n \n )}\n
\n
\n \n {shareCTALabel}\n \n \n \n
\n \n \n \n );\n }, [\n copyReferralCode,\n copyReferralSuccess,\n referralProps.url,\n shareCTALabel,\n shareCTAOnClick,\n ]);\n\n const renderWidgetContent = () => (\n <>\n
\n
\n
\n {text[0].text}\n
\n \n {SHARE_SUBTITLE_TEXT}\n
\n\n {ReferralCard()}\n
\n \n \n );\n\n function renderContent() {\n return (\n
\n {renderWidgetContent()}\n
\n \n
\n );\n }\n return (\n <>\n \n \n );\n};\n\nexport const ReferralWidgetPropTypes = {\n header: PropTypes.string.isRequired,\n text: TextType,\n referralProps: PropTypes.shape({\n url: PropTypes.string.isRequired,\n code: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n }),\n shareCTAOnClick: PropTypes.func.isRequired,\n shareCTALabel: PropTypes.string.isRequired,\n isDesktop: PropTypes.bool,\n redeemBox: RedeemBoxPropTypes.isRequired,\n};\n\nNewReferralPage.propTypes = ReferralWidgetPropTypes;\n\nNewReferralPage.defaultProps = {\n socialMediaProps: [],\n};\n\nexport default NewReferralPage;\n","import NewReferralPage from './NewReferralPage';\n\nexport default NewReferralPage;\n","import keys from '../config/keys.js';\nconst { mainWebsiteUrl, referralBaseLink } = keys;\n\nexport const PROFILE_LINK = '/setting/profile';\nexport const COURSES_EXTERNAL_LINK = `${mainWebsiteUrl}/courses`;\nexport const REFERRAL_BASE_LINK = `${referralBaseLink}/`;\nexport const TRAINER_FEEDBACK_URL_SLUG = 'trainer-feedback';\nexport const PAID_COURSES_DISCOVERY_PAGE =\n 'https://nasacademy.com/courses?mode=courses';\n","import CaretLeftIcon from './CaretLeftIcon';\nexport default CaretLeftIcon;\n","import React from 'react';\n\nconst CaretLeftIcon = ({ customClassName }) => {\n const className = 'c-CaretLeftIcon';\n\n return (\n \n \n \n );\n};\n\nexport default CaretLeftIcon;\n","import React from 'react';\n\nconst SettingIcon01 = () => {\n return (\n \n \n \n \n );\n};\n\nexport default SettingIcon01;\n","import { Children, useCallback } from 'react';\n\nimport Button from '../../../../CommunityPortal/components/Button';\nimport CaretLeftIcon from '../../../../components/Icons/CaretLeftIcon';\nimport { Link } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport history from '../../../../modules/history';\nimport style from './SettingsNavigation.module.scss';\nimport { useWindowWidthContext } from '../../../../contexts/WindowWidthContext';\nimport { urlUtils } from '../../../../PortalModeWrapper/utils';\nimport { COMMUNITY_PORTAL_ROOT } from '../../../../PortalModeWrapper/constants';\nimport SettingIcon01 from '../../../../components/Icons/SettingIcon01/SettingIcon01';\nimport sessionStorageService from '../../../../utility/sessionStorageService';\nimport { useTranslation } from 'react-i18next';\n\nconst className = 'c-SettingsNavigation';\n\nconst borderClasses =\n 'border-l-0 border-1 lg:border-0 lg:border-r-1 border-grey-neutral95';\nconst flexClasses = 'lg:flex lg:justify-end';\nconst paddingClasses = 'lg:py-32 lg:px-12';\n\nconst SettingsNavigation = ({ pageItems, user }) => {\n const { t } = useTranslation();\n const { isGtEqLg } = useWindowWidthContext();\n\n //https://app.asana.com/0/1202420995243052/1202797335823229/f\n const onBackClick = () => {\n const prevLocation = sessionStorageService.getItem('prevLocation');\n\n if (!prevLocation) {\n urlUtils.goToPortalPage(COMMUNITY_PORTAL_ROOT);\n return;\n }\n\n if (prevLocation.startsWith('/communities')) {\n urlUtils.goToPortalPage(COMMUNITY_PORTAL_ROOT);\n } else {\n history.push('/');\n }\n };\n\n const renderNavItems = useCallback(\n () =>\n Children.toArray(\n pageItems.map(({ label, link, isActive, hidden }) => {\n if (hidden) return null;\n const headingColorClass = isActive\n ? 'text-npl-text-icon-on-light-surface-primary'\n : 'text-npl-text-icon-on-light-surface-secondary';\n\n return (\n \n
\n \n
\n \n {label}\n \n
\n \n
\n \n );\n })\n ),\n [isGtEqLg, pageItems]\n );\n return (\n \n {!isGtEqLg && (\n \n
\n
\n
\n \n
\n

\n {t('settings')}\n

\n
\n
\n \n )}\n\n
\n {isGtEqLg && (\n \n {t('back')}\n \n )}\n\n {/* Page Navigation */}\n \n {isGtEqLg && (\n
\n \n

{t('settings')}

\n
\n )}\n
\n {renderNavItems()}\n
\n \n
\n \n );\n};\n\nconst PageItemPropTypes = {\n label: PropTypes.string.isRequired,\n link: PropTypes.string.isRequired,\n Icon: PropTypes.elementType,\n isActive: PropTypes.bool,\n};\n\nSettingsNavigation.propTypes = {\n pageItems: PropTypes.arrayOf(PropTypes.shape(PageItemPropTypes)),\n};\n\nSettingsNavigation.defaultProps = {};\n\nexport default SettingsNavigation;\n","import SettingsNavigation from './SettingsNavigation';\n\nexport default SettingsNavigation;\n","import {\n REDEEM_FORM_LINK,\n SETTINGS_PAGE_MEMBERSHIP,\n SETTINGS_PAGE_MEMBERSHIP_PATH,\n SETTINGS_PAGE_PREFERENCES,\n SETTINGS_PAGE_PREFERENCES_PATH,\n SETTINGS_PAGE_PROFILE,\n SETTINGS_PAGE_PROFILE_PATH,\n SETTINGS_PAGE_REFERRAL,\n SETTINGS_PAGE_REFERRAL_PATH,\n pagesList,\n referralWidgetStaticProps,\n} from './constants';\nimport { Route, Switch, withRouter } from 'react-router';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport Auth from '../../modules/auth';\nimport MembershipPage from './pages/MembershipPage';\nimport NewPreferencesPage from './components/NewPreferencesPage';\nimport NewProfilePage from './components/NewProfilePage/NewProfilePage';\nimport NewReferralPage from '../NewReferralPage';\nimport { REFERRAL_BASE_LINK } from '../../constants/links';\nimport SettingsNavigation from './components/SettingsNavigation';\nimport { getActiveSettingsPage } from './utils/linkUtils';\nimport { useCommunitiesData } from '../../CommunityPortal/hooks';\nimport useCommunitiesInvoiceData from '../../CommunityPortal/hooks/useCommunitiesInvoiceData';\nimport useProfileData from '../../hooks/userProfileData';\nimport { useWindowWidthContext } from '../../contexts/WindowWidthContext';\nimport { parse } from 'query-string';\nimport history from '../../modules/history';\nimport localStorageService from '../../utility/localStorageService';\nimport { useTranslation } from 'react-i18next';\n\nconst className = 'c-SettingsPageV2';\n\nconst SettingsPageV2 = (props) => {\n const {\n user,\n updateProfileStatus,\n isLoading,\n showStatus,\n basicInfoInputProps,\n socialMediaInputProps,\n videoPreferenceInputProps,\n commentPreferenceInputProps,\n updateBasicInfo,\n updateSocialMedia,\n updateVideoPreference,\n updateCommentPreference,\n errorsBasicInfo,\n registerBasicInfo,\n getBasicInfoValues,\n isBasicInfoUpdateLoading,\n } = useProfileData({});\n const { t } = useTranslation();\n const { isGtEqMd: isDesktopView } = useWindowWidthContext();\n\n const [activeCommunityCode, setActiveCommunityCode] = useState(null);\n const {\n communities,\n loading,\n onCancelSubscriptionClick,\n } = useCommunitiesData(activeCommunityCode);\n const { invoices, loading: invoiceLoading } = useCommunitiesInvoiceData(\n activeCommunityCode\n );\n\n const getReferralWidgetProps = useCallback(() => {\n const promoCode = Auth.getReferralCode();\n const referralUrl = `${REFERRAL_BASE_LINK}${promoCode}`;\n const { redeemBox, ...restStaticProps } = referralWidgetStaticProps(t);\n const referralCredit = user?.credits?.referralCredit || 0;\n const giftCredit = user?.credits?.giftCredit || 0;\n\n const formattedRedeemBoxProps = Object.assign({}, redeemBox, {\n referralCredit,\n giftCredit: giftCredit,\n ctaHandler:\n referralCredit < 50\n ? null\n : () => {\n window.open(REDEEM_FORM_LINK, '_blank');\n },\n });\n\n //AWS check\n const textToShare = t(\n 'learn-from-the-worlds-best-creator-at-nas-academy-start-your-creator-journey-now-and-get-20-off-on-nas-academy-using-my-code-promocode-use-the-link-to-auto-apply-the-discount'\n );\n const formattedProps = Object.assign({}, restStaticProps, {\n referralProps: {\n url: referralUrl,\n code: promoCode,\n title: textToShare,\n text: textToShare,\n },\n shareCTAOnClick: () => {\n if (navigator.share) {\n navigator.share({\n url: referralUrl,\n title: textToShare,\n text: textToShare,\n });\n }\n },\n isDesktop: isDesktopView,\n redeemBox: formattedRedeemBoxProps,\n user: user,\n });\n\n return formattedProps;\n }, [isDesktopView, user]);\n const [activePage, setActivePage] = useState(SETTINGS_PAGE_REFERRAL.name);\n\n const getNavigationItems = useCallback(() => {\n const navigationHandlers = {\n [SETTINGS_PAGE_REFERRAL.name]: SETTINGS_PAGE_REFERRAL_PATH,\n [SETTINGS_PAGE_MEMBERSHIP.name]: SETTINGS_PAGE_MEMBERSHIP_PATH,\n [SETTINGS_PAGE_PREFERENCES.name]: SETTINGS_PAGE_PREFERENCES_PATH,\n [SETTINGS_PAGE_PROFILE.name]: SETTINGS_PAGE_PROFILE_PATH,\n };\n // we want to hide the referral page if the promocode is undefined\n // Memberships are available only for community members\n const hiddenStatus = {\n [SETTINGS_PAGE_REFERRAL.name]:\n !user?.promoCode && !localStorageService.getItem('referralCode'),\n [SETTINGS_PAGE_MEMBERSHIP.name]: communities?.length === 0 ?? true,\n };\n const navItems = pagesList.map(({ name, label, labelKey, Icon }) => ({\n label: t(labelKey) || label,\n Icon,\n link: navigationHandlers[name],\n isActive: name === activePage,\n hidden: hiddenStatus[name],\n }));\n return navItems;\n }, [activePage, communities?.length, user?.promoCode]);\n\n const getFilteredProfileModalInputFields = useCallback(() => {\n const fieldsNames = [\n 'firstName',\n 'lastName',\n 'dialCodeId',\n 'phoneNumber',\n 'description',\n ];\n const filteredInputProps = basicInfoInputProps.filter((f) =>\n fieldsNames.includes(f.name)\n );\n return filteredInputProps;\n }, [basicInfoInputProps]);\n\n const renderPage = useCallback(\n () => (\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n ),\n [\n getReferralWidgetProps,\n user,\n updateBasicInfo,\n getFilteredProfileModalInputFields,\n isDesktopView,\n updateSocialMedia,\n socialMediaInputProps,\n errorsBasicInfo,\n registerBasicInfo,\n getBasicInfoValues,\n isBasicInfoUpdateLoading,\n communities,\n activeCommunityCode,\n invoiceLoading,\n invoices,\n loading,\n onCancelSubscriptionClick,\n isLoading,\n updateCommentPreference,\n updateVideoPreference,\n commentPreferenceInputProps,\n videoPreferenceInputProps,\n updateProfileStatus,\n showStatus,\n ]\n );\n\n useEffect(() => {\n setActivePage(getActiveSettingsPage());\n // Necessary reaction on chagning the URL\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [window.location.pathname]);\n\n // set active active community code if param is present on url\n useEffect(() => {\n const params = parse(props.location.search);\n\n if (communities?.length > 0 && params.communityCode) {\n const selectedCommunity = communities.find(\n (community) => community.code === params.communityCode\n );\n\n if (selectedCommunity) setActiveCommunityCode(params.communityCode);\n else\n history.replace({\n search: '',\n }); // clear query\n }\n }, [\n communities,\n communities?.length,\n props.location.search,\n props.match.params,\n ]);\n\n return (\n
\n \n
\n \n
\n\n \n {renderPage()}\n
\n \n \n );\n};\n\nSettingsPageV2.propTypes = {};\n\nSettingsPageV2.defaultProps = {};\n\nexport default withRouter(SettingsPageV2);\n","import { SETTINGS_PAGE_REFERRAL, pagesList } from '../constants';\n\nexport const getActiveSettingsPage = () => {\n let activePage = SETTINGS_PAGE_REFERRAL.name;\n const pathItems = window.location.pathname.split('/');\n return (\n pagesList.find(({ name, endpoint }) => {\n return pathItems.includes(endpoint);\n })?.name ?? activePage\n );\n};\n","import {\n COMMUNITY_PORTAL,\n COMMUNITY_PORTAL_ROOT,\n SETTINGS_PORTAL_ROOT,\n} from './constants';\nimport { Route, Switch, withRouter } from 'react-router';\nimport { lazy, useCallback, useEffect, useMemo } from 'react';\nimport {\n openManagerPortal,\n} from '../CommunityPortal/utils/linkUtils';\n\nimport SettingsPageV2 from '../pages/SettingPage/SettingsPageV2';\nimport { urlUtils } from './utils';\nimport { useCommunityPortalContext } from '../CommunityPortal/contexts/CommunityPortalContext';\nimport { useRouterContext } from './contexts/RouterContext';\n\nconst CommunityPortal = lazy(() => import('../CommunityPortal'));\nconst className = 'c-PortalModeWrapper';\n\nconst PortalModeWrapper = ({ children, match }) => {\n const { activePortal, switchToCommunityPortal } = useRouterContext();\n\n const {\n activeCommunity,\n updateActiveCommunity,\n doesCommunityIdExist,\n activeCommunityData,\n communities,\n loading,\n } = useCommunityPortalContext();\n const communityItems = useMemo(\n () =>\n communities?.map(\n ({\n name,\n img,\n code,\n id,\n isManager,\n isMember,\n _id,\n title,\n subscription,\n }) => {\n return {\n id: _id || id,\n name: title || name,\n img,\n onClick: () => {\n if (isMember) {\n updateActiveCommunity(id);\n return;\n }\n if (isManager) {\n if (id) {\n openManagerPortal(id);\n return;\n }\n if (_id) {\n openManagerPortal(_id);\n return;\n }\n }\n },\n isActive: activeCommunity === id,\n isManager,\n isMember,\n subscription,\n };\n }\n ),\n [communities, activeCommunity, updateActiveCommunity]\n );\n\n const renderActiveNonClassesPortal = useCallback(\n () => (\n \n \n \n \n \n \n \n {children}\n \n ),\n [activeCommunityData, children, communityItems, loading, match]\n );\n\n useEffect(() => {\n if (!urlUtils.isOnSettingsPortal()) {\n switchToCommunityPortal();\n }\n }, [switchToCommunityPortal]);\n\n useEffect(() => {\n if (!doesCommunityIdExist && activeCommunityData?.id) {\n updateActiveCommunity(\n activeCommunityData?._id,\n !window.location.pathname.split('/').includes('setting')\n );\n }\n }, [\n doesCommunityIdExist,\n updateActiveCommunity,\n activeCommunityData,\n activeCommunityData?._id,\n ]);\n\n useEffect(() => {\n if (activePortal === COMMUNITY_PORTAL) {\n const activePagePaths = window.location.pathname.split('/');\n const [\n root,\n community_portal,\n activeCommunityId,\n route,\n ] = activePagePaths;\n if (activeCommunityId) {\n // Safety checks to make sure that the data is correct (Avoid unnecessary rerenders)\n if (activeCommunity != null && doesCommunityIdExist) {\n // This is in the case of a new link with a different commmunity that you are a part of.\n if (activeCommunityId !== activeCommunity) {\n updateActiveCommunity(activeCommunityId);\n }\n }\n }\n }\n }, [\n activeCommunity,\n activePortal,\n doesCommunityIdExist,\n updateActiveCommunity,\n ]);\n\n return (\n \n \n {renderActiveNonClassesPortal()}\n \n \n );\n};\n\nexport default withRouter(PortalModeWrapper);\n","import PortalModeWrapper from './PortalModeWrapper';\n\nexport default PortalModeWrapper;\n","import keys from '../../../config/keys';\n\nconst useNewResetPasswordPageRedirection = ({ queryString, newPagePath }) => {\n if (keys.newResetPasswordRedirection) {\n const params = new URLSearchParams(queryString);\n\n window.location.href = `${\n process.env.REACT_APP_NASIO_BASE_URL\n }${newPagePath}?${params.toString()}`;\n return true;\n }\n return false;\n};\n\nexport default useNewResetPasswordPageRedirection;\n","import ResetPasswordPage from './ResetPasswordPage';\nexport default ResetPasswordPage;\n","import React, { useState } from 'react';\nimport * as yup from 'yup';\nimport { useDispatch, useSelector } from 'react-redux';\nimport queryString from 'query-string';\nimport Button from '../../components/Button';\nimport Input from '../../components/Form/Input';\nimport Image from '../../components/Image';\nimport { shortLogoImageData } from '../../utility/constants';\nimport { sendResetPassword } from '../../actions/auth';\nimport LoadingCircle from '../../components/Common/LoadingCircle/LoadingCircle';\nimport './ResetPasswordPage.scss';\nimport { validate } from '../../utility/validationHelper';\nimport history from '../../modules/history';\nimport { useTranslation } from 'react-i18next';\nimport useNewResetPasswordPageRedirection from './hooks/useNewResetPasswordPageRedirection';\n\nconst ResetPasswordPage = () => {\n const { t } = useTranslation();\n const className = 'c-ResetPasswordPage';\n\n const token = queryString.parse(window.location.search)?.token;\n const mainState = useSelector((state) => state?.main);\n const dispatch = useDispatch();\n const [formData, setFormData] = useState({\n password: '',\n confirmPassword: '',\n });\n const [errors, setErrors] = useState({});\n\n const isRedirecting = useNewResetPasswordPageRedirection({\n newPagePath: '/reset-password',\n queryString: window.location.search,\n });\n\n if (isRedirecting) {\n return null;\n }\n\n const { loading, resetPasswordFailed, success } = mainState;\n const titleText = success\n ? t('password-successfuly-updated')\n : t('create-new-password');\n\n const resetPasswordFormSchema = yup.object().shape({\n password: yup\n .string()\n .matches(\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/,\n t('password-must-have-at-least-1-uppercase-1-lowercase-and-1-number')\n )\n .min(8, t('password-must-be-atleast-8-characters'))\n .required(t('this-field-is-required')),\n confirmPassword: yup\n .string()\n .matches(\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/,\n t('password-must-have-at-least-1-uppercase-1-lowercase-and-1-number')\n )\n .min(8, t('password-must-be-atleast-8-characters'))\n .required(t('this-field-is-required')),\n });\n\n const rulesList = [\n t('8-characters'),\n t('1-uppercase-and-1-lowercase-character'),\n t('1-number'),\n ];\n\n const onFieldChange = (e) => {\n setFormData({\n ...formData,\n [e.target.name]: e.target.value,\n });\n\n if (errors[e.target.name]) {\n setErrors({ ...errors, [e.target.name]: '' });\n }\n };\n\n const onFormSubmit = async (e) => {\n e.preventDefault();\n\n const isValid = await validate({\n schema: resetPasswordFormSchema,\n formData,\n setErrors,\n });\n\n if (!isValid) {\n return;\n }\n\n dispatch(\n sendResetPassword(formData?.password, formData?.confirmPassword, token)\n );\n };\n\n const goToLoginPage = () => {\n history.push('/login');\n };\n\n const renderRulesList = () =>\n rulesList?.map((rule, index) => (\n
  • \n {rule}\n
  • \n ));\n\n return (\n
    \n
    \n
    \n \n

    {titleText}

    \n {success ? (\n \n ) : (\n <>\n
    \n

    \n {t('your-password-must-be-have-at-least')}\n

    \n
      \n {renderRulesList()}\n
    \n
    \n
    \n \n \n {resetPasswordFailed ? (\n
    \n {resetPasswordFailed}\n
    \n ) : (\n
    \n )}\n {loading ? (\n \n ) : (\n \n )}\n \n \n )}\n
    \n
    \n
    \n );\n};\n\nexport default ResetPasswordPage;\n","import AcademyLogoShortIcon from './AcademyLogoShortIcon';\nexport default AcademyLogoShortIcon;\n","import React from 'react';\n\nconst AcademyLogoShortIcon = ({variant = 'dark'}) => {\n const className = 'c-AcademyLogoShortIcon';\n const fillColor = variant === 'dark' ? '#fff': '#2c2c2c';\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AcademyLogoShortIcon;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport EyeVisible from '../../Icons/EyeVisible';\nimport PropTypes from 'prop-types';\nimport style from './FloatingLabelInput.module.scss';\nimport { useWindowWidthContext } from '../../../contexts/WindowWidthContext';\n\nconst className = 'c-FloatingLabelInput';\n\n// TODO: Add Icons and hover states\n// https://www.figma.com/file/uypc3B2NlqSGqbcB7M4oG8/Nas.io-Onboarding-Flow?node-id=301%3A27166\n\nconst FloatingLabelInput = (props) => {\n const {\n type,\n name,\n label,\n value,\n placeholder,\n onChange,\n customInputClasses,\n customLabelClasses,\n disabled,\n error,\n focus,\n ...rest\n } = props;\n const ref = useRef();\n const [isEyeIconVisible, setIsEyeIconVisible] = useState(false);\n\n const handleLabelOnClick = () => {\n if (ref.current) {\n ref.current.focus();\n }\n };\n\n useEffect(() => {\n if (focus) {\n ref.current.focus();\n }\n }, [focus]);\n\n const toggleInputVisibility = () => {\n const inputType = ref?.current?.type;\n if (inputType === 'password') ref.current.type = 'text';\n else ref.current.type = 'password';\n\n setIsEyeIconVisible((prevBool) => !prevBool);\n };\n\n const renderEyeIcon = () => {\n return (\n // eslint-disable-next-line jsx-a11y/interactive-supports-focus\n \n \n
    \n );\n };\n\n return (\n
    \n \n {\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n \n \n {label}\n {rest.required && '*'}\n {rest.optional && (\n (Optional)\n )}\n \n \n }\n {type === 'password' && renderEyeIcon()}\n {error && (\n \n {error}\n \n )}\n
    \n );\n};\n\nFloatingLabelInput.propTypes = {\n type: PropTypes.string,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n value: PropTypes.string.isRequired,\n placeholder: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n error: PropTypes.string,\n};\nFloatingLabelInput.defaultProps = {\n type: 'text',\n};\n\nexport default FloatingLabelInput;\n","import FloatingLabelInput from './FloatingLabelInput';\n\nexport default FloatingLabelInput;\n","import {\n CHECKBOX_FIELD_TYPE,\n DROPDOWN_FIELD_TYPE,\n INPUT_FIELD_TYPE,\n TEXTAREA_FIELD_TYPE,\n} from '../../../utility/formHelper';\n\nimport FloatingLabelInput from '../FloatingLabelInput';\nimport Input from '../Input';\nimport { PropTypes } from 'prop-types';\nimport React from 'react';\nimport Select from '../Select';\n\nconst FormField = (props) => {\n const {\n fieldType,\n name,\n label,\n prefix,\n placeholder,\n value,\n error,\n onChange,\n optionsList,\n ...rest\n } = props;\n const className = 'c-FormField';\n\n const renderField = () => {\n switch (fieldType) {\n case INPUT_FIELD_TYPE: {\n if (rest?.isFloating) {\n return (\n \n );\n }\n return (\n \n );\n }\n case DROPDOWN_FIELD_TYPE: {\n return (\n \n );\n }\n default:\n return null;\n }\n };\n\n return
    {renderField()}
    ;\n};\n\nFormField.defaultProps = {\n placeholder: '',\n optionsList: [],\n error: '',\n};\n\nFormField.propTypes = {\n fieldType: PropTypes.oneOf([\n DROPDOWN_FIELD_TYPE,\n INPUT_FIELD_TYPE,\n CHECKBOX_FIELD_TYPE,\n TEXTAREA_FIELD_TYPE,\n ]).isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n ]).isRequired,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n placeholder: PropTypes.string,\n error: PropTypes.string,\n optionsList: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n })\n ),\n};\n\nexport default FormField;\n","import FormField from './FormField';\nexport default FormField;\n","const defaultState = {\n isAnyModalOpen: false,\n listOfOpenModals: [],\n};\n\nexport const modalDataActions = {\n open: 'OPEN_MODAL',\n close: 'CLOSE_MODAL',\n};\n\nconst openModalsDataReducer = (state = defaultState, action) => {\n switch (action.type) {\n case modalDataActions.open: {\n let updatedListOfOpenModals = [\n ...state.listOfOpenModals,\n action.modalName,\n ];\n\n return {\n listOfOpenModals: updatedListOfOpenModals,\n isAnyModalOpen: true,\n };\n }\n\n case modalDataActions.close: {\n let updatedListOfOpenModals = state.listOfOpenModals.filter(\n (modalName) => modalName !== action.modalName\n );\n\n return {\n listOfOpenModals: updatedListOfOpenModals,\n isAnyModalOpen: updatedListOfOpenModals.length > 0,\n };\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default openModalsDataReducer;\n","import { getAxiosError } from './helper';\nimport protectedAxiosRequest from './helper/protectedAxiosRequest';\n\nconst baseURL = `/api/v1`;\n\nexport const updateUserBasicProfile = async (payload) => {\n try {\n const apiPath = `${baseURL}/update-basic-profile`;\n return await protectedAxiosRequest.post(apiPath, payload);\n } catch (error) {\n return getAxiosError(error);\n }\n};\n","import * as yup from 'yup';\n\nimport {\n DROPDOWN_FIELD_TYPE,\n INPUT_FIELD_TYPE,\n dialCodeOptions,\n getDialCodeById,\n getDialCodeIdFromPhoneNumber,\n getPhoneNumberWithoutDial,\n} from '../utility/formHelper';\nimport { actionSetUserProfile, setUser } from '../actions/user';\nimport { useEffect, useState } from 'react';\n\nimport { isValidPhoneFormat } from '../utility/validation';\nimport { updateUserBasicProfile } from '../services/authService';\nimport { useDispatch } from 'react-redux';\n\nconst fields = {\n firstName: {\n fieldType: INPUT_FIELD_TYPE,\n name: 'firstName',\n placeholder: 'First name',\n label: 'First name',\n required: true,\n },\n lastName: {\n fieldType: INPUT_FIELD_TYPE,\n name: 'lastName',\n placeholder: 'Last name',\n label: 'Last name',\n required: true,\n },\n countryId: {\n fieldType: DROPDOWN_FIELD_TYPE,\n name: 'countryId',\n placeholder: 'Country',\n optionsList: dialCodeOptions,\n style: {\n width: '92px',\n height: '58px',\n border: '1px solid #C5C6C9',\n borderRadius: '12px',\n },\n },\n dialCodeId: {\n fieldType: DROPDOWN_FIELD_TYPE,\n name: 'dialCodeId',\n placeholder: 'Dial Code',\n optionsList: dialCodeOptions,\n },\n phoneNumber: {\n fieldType: INPUT_FIELD_TYPE,\n name: 'phoneNumber',\n placeholder: 'Phone number',\n label: 'Phone',\n },\n password: {\n fieldType: INPUT_FIELD_TYPE,\n type: 'password',\n name: 'password',\n placeholder: 'eg. Abcd1234',\n label: 'Create password',\n eyeIcon: true,\n },\n};\n\nconst defaultInitialValues = {\n firstName: '',\n lastName: '',\n countryId: null,\n dialCodeId: '',\n phoneNumber: '',\n password: '',\n};\n\nconst getBasicInfoValidationSchema = ({\n withPassword,\n phoneNumberRequired,\n}) => {\n const passwordSchema = {\n password: yup\n .string()\n .min(8, 'Password must be of at least 8 characters')\n .matches(/[A-Z]/, 'Password must have at least 1 upper case character')\n .matches(/[a-z]/, 'Password must have at least 1 lower case character')\n .matches(/[0-9]/, 'Password must have at least 1 number')\n .required('Password is required'),\n };\n\n const phoneRequiredSchema = {\n firstName: yup.string().required('First Name is required'),\n lastName: yup.string().required('Last Name is required'),\n countryId: yup.string().required('Country is required'),\n dialCodeId: yup.string().required(),\n phoneNumber: yup\n .string()\n .test('phoneNumberValidation', 'Invalid phone number', function (value) {\n if (!value) return true;\n const dialCodeId = this.parent['dialCodeId'];\n const dialCode = getDialCodeById(dialCodeId);\n const fullPhoneNumber = `${dialCode}${value}`;\n return isValidPhoneFormat(fullPhoneNumber);\n })\n .required(),\n };\n\n return yup.object().shape({\n firstName: yup.string().required('First Name is required'),\n lastName: yup.string().required('Last Name is required'),\n dialCodeId: yup.string().notRequired(),\n phoneNumber: yup\n .string()\n .test('phoneNumberValidation', 'Invalid phone number', function (value) {\n if (!value) return true;\n const dialCodeId = this.parent['dialCodeId'];\n const dialCode = getDialCodeById(dialCodeId);\n const fullPhoneNumber = `${dialCode}${value}`;\n return isValidPhoneFormat(fullPhoneNumber);\n })\n .notRequired(),\n ...(withPassword && passwordSchema),\n ...(phoneNumberRequired && phoneRequiredSchema),\n });\n};\n\nconst formatAlumniLearnerData = (user) => {\n const learner = user?.learner;\n if (!learner) return null;\n\n const { firstName, lastName, countryId, phoneNumber } = learner;\n const countryIdString = countryId\n ? countryId.toString()\n : phoneNumber\n ? getDialCodeIdFromPhoneNumber(phoneNumber).toString()\n : '';\n return {\n firstName: firstName || '',\n lastName: lastName || '',\n countryId: countryIdString,\n dialCodeId: phoneNumber\n ? getDialCodeIdFromPhoneNumber(phoneNumber).toString()\n : countryIdString,\n phoneNumber: phoneNumber ? getPhoneNumberWithoutDial(phoneNumber) : '',\n };\n};\n\nconst useUpdateBasicInfo = () => {\n const [user, _setUser] = useState(null);\n const [values, setValues] = useState(defaultInitialValues);\n const [errors, setErrors] = useState({});\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [apiError, setApiError] = useState('');\n\n const dispatch = useDispatch();\n\n const resetFieldError = (fieldName) => {\n if (errors[fieldName]) {\n setErrors((prevErrors) => ({\n ...prevErrors,\n [fieldName]: '',\n }));\n }\n };\n\n const onFieldChange = (fieldName, value) => {\n let update = { [fieldName]: value };\n\n if (fieldName === fields.countryId.name) {\n update[fields.dialCodeId.name] = value;\n }\n\n setValues((prevValues) => ({\n ...prevValues,\n ...update,\n }));\n\n setApiError('');\n resetFieldError(fieldName);\n };\n\n const validate = async () => {\n setErrors({});\n\n const schema = getBasicInfoValidationSchema({\n withPassword: user?.passwordResetRequired,\n phoneNumberRequired: user?.isWhatsappExperienceSubscriber,\n });\n\n const isValid = await schema\n .validate(values, {\n abortEarly: false,\n })\n .then(() => true)\n .catch((validationErr) => {\n if (Array.isArray(validationErr.inner)) {\n let errors = {};\n validationErr.inner.forEach(\n ({ path, message }) => (errors[path] = message)\n );\n setErrors(errors);\n }\n\n return false;\n });\n\n return isValid;\n };\n\n const handleApiError = (error) => {\n setApiError(error);\n\n // reset after 3 seconds\n setTimeout(() => {\n setApiError('');\n }, 3000);\n };\n\n const onSubmit = async (e) => {\n e.preventDefault();\n\n try {\n setIsSubmitting(true);\n setApiError('');\n\n const isValid = await validate();\n\n if (!isValid) {\n setIsSubmitting(false);\n return false;\n }\n\n const phoneNumber = values.phoneNumber\n ? `${getDialCodeById(values.countryId)}${values.phoneNumber.trim()}`\n : null;\n\n const params = {\n firstName: values.firstName.trim(),\n lastName: values.lastName.trim(),\n countryId: values.countryId.trim(),\n phoneNumber,\n password: values.password.trim(),\n };\n\n const res = await updateUserBasicProfile(params);\n const { data, error } = res;\n setIsSubmitting(false);\n\n if (error) {\n handleApiError(error);\n return false;\n }\n\n dispatch(actionSetUserProfile(data));\n dispatch(\n setUser(\n data?.learner ?? {\n firstName: values.firstName.trim(),\n lastName: values.lastName.trim(),\n }\n )\n );\n\n return true;\n } catch (e) {\n setIsSubmitting(false);\n return false;\n }\n };\n\n useEffect(() => {\n const formattedUser = formatAlumniLearnerData(user);\n if (formattedUser)\n setValues((prevValues) => ({ ...prevValues, ...formattedUser }));\n }, [user]);\n\n // This is needed since the chrome and other browsers autofill the country but not the dialCode.\n // So need this on first field change to populate the dial code when the country changes.\n useEffect(() => {\n if (values?.countryId) {\n const update = {\n countryId: values?.countryId,\n dialCodeId: values?.countryId,\n };\n setValues((prevValues) => ({ ...prevValues, ...update }));\n }\n }, [values?.countryId]);\n\n return {\n setUser: _setUser,\n fields,\n values,\n errors,\n onFieldChange,\n onSubmit,\n isSubmitting,\n apiError,\n resetApiError: () => setApiError(''),\n };\n};\n\nexport default useUpdateBasicInfo;\n","import classNames from 'classnames';\nimport React, { useRef, useState } from 'react';\nimport EyeVisible from '../../../components/Icons/EyeVisible';\nimport './NPLFloatingLabelInput.scss';\n\nconst className = 'c-NPLFloatingLabelInput';\n\nconst NPLFloatingLabelInput = (props) => {\n const {\n type,\n name,\n label,\n value,\n placeholder,\n onChange,\n customInputClasses,\n customLabelClasses,\n disabled,\n error,\n focus,\n ...rest\n } = props;\n const ref = useRef();\n const [isEyeIconVisible, setIsEyeIconVisible] = useState(false);\n\n const handleLabelOnClick = () => {\n if (ref.current) {\n ref.current.focus();\n }\n };\n\n const toggleInputVisibility = () => {\n const inputType = ref?.current?.type;\n if (inputType === 'password') ref.current.type = 'text';\n else ref.current.type = 'password';\n\n setIsEyeIconVisible((prevBool) => !prevBool);\n };\n\n const renderEyeIcon = () => {\n return (\n // eslint-disable-next-line jsx-a11y/interactive-supports-focus\n \n \n \n );\n };\n\n return (\n
    \n \n {\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n \n \n {label}\n {rest.required && '*'}\n {rest.optional && (\n (Optional)\n )}\n \n \n }\n {type === 'password' && renderEyeIcon()}\n {error && (\n \n {error}\n \n )}\n
    \n );\n};\n\nexport default NPLFloatingLabelInput;\n","import './SetUserBasicDataModal.scss';\n\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport AcademyLogoShortIcon from '../Icons/AcademyLogoShortIcon';\nimport FormField from '../Form/FormField';\nimport Modal from '../Modal';\nimport Text from '../Text';\nimport { modalDataActions } from '../../reducers/openModalsData';\nimport useUpdateBasicInfo from '../../hooks/useUpdateBasicInfo';\nimport NPLFloatingLabelInput from '../../CommunityPortal/components/NPLFloatingLabelInput/NPLFloatingLabelInput';\nimport RoundedButton from '../../CommunityPortal/components/RoundedButton';\nimport { t } from 'i18next';\n\nconst modalName = 'SetUserBasicDataModal';\n\nconst SetUserBasicDataModal = () => {\n const [showModal, setShowModal] = useState(false);\n\n const user = useSelector((state) => state.auth.user);\n const signupOriginData = useSelector((state) => state.main.signupOriginData);\n const dispatch = useDispatch();\n\n const className = 'c-SetUserBasicDataModal';\n\n const {\n setUser,\n fields,\n values,\n errors,\n onFieldChange,\n onSubmit,\n isSubmitting,\n apiError,\n } = useUpdateBasicInfo();\n\n const passwordResetRequired = user?.passwordResetRequired;\n\n const renderFormField = (field) => {\n const { name, fieldType, placeholder, optionsList } = field;\n const value = values?.[name] || '';\n const error = errors?.[name] || '';\n return (\n onFieldChange(e.target.name, e.target.value)}\n value={value}\n error={error}\n placeholder={placeholder}\n optionsList={optionsList}\n isFloating={true}\n {...field}\n />\n );\n };\n\n // if user basic profile is incomplete then open modal or close modal\n useEffect(() => {\n // check if the user is not on events checkout\n // TODO: ask aman to add a better way to check if user is on checkout page\n if (\n user?.isUserBasicProfileIncomplete &&\n window.location.pathname !== '/event-checkout' &&\n window.location.pathname !== '/library-checkout' &&\n !signupOriginData?.show // Check if signup origin success prompt is not showing. If it's showing, we should not show this modal.\n ) {\n setShowModal(true);\n } else {\n setShowModal(false);\n }\n if (user) setUser(user);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [user, signupOriginData]);\n\n // Set modal is open in global store, so other modals can check and not open multiple modals.\n useEffect(() => {\n if (showModal) {\n dispatch({\n type: modalDataActions.open,\n modalName: modalName,\n });\n } else {\n dispatch({\n type: modalDataActions.close,\n modalName: modalName,\n });\n }\n }, [dispatch, showModal]);\n\n if (!showModal) return null;\n\n return (\n
    \n {}}\n >\n
    \n
    \n
    \n \n
    \n

    \n {t('welcome-to-your-community-portal')}\n

    \n
    \n\n
    \n
    \n
    \n onFieldChange(e.target.name, e.target.value)}\n value={values?.firstName}\n error={errors?.firstName}\n data-test-id=\"basicInfo-firstName\"\n />\n onFieldChange(e.target.name, e.target.value)}\n value={values?.lastName}\n error={errors?.lastName}\n data-test-id=\"basicInfo-lastName\"\n />\n
    \n
    \n {renderFormField(fields.countryId)}\n \n onFieldChange(e.target.name, e.target.value)\n }\n value={values?.phoneNumber}\n error={errors?.phoneNumber}\n />\n
    \n

    \n {t(\n 'this-number-will-be-used-for-all-methods-of-communication'\n )}{' '}\n

    \n
    \n
    \n {passwordResetRequired && (\n
    \n \n \n onFieldChange(e.target.name, e.target.value)\n }\n error={errors?.password}\n />\n
    \n )}\n
    \n \n {isSubmitting\n ? t('submitting-dot-dot-dot')\n : t('complete-your-profile')}\n \n {apiError && (\n
    \n \n
    \n )}\n \n
    \n \n
    \n );\n};\n\nexport default SetUserBasicDataModal;\n","import SetUserBasicDataModal from './SetUserBasicDataModal';\nexport default SetUserBasicDataModal;\n","export const login_logo = {\n alt: 'nasacademy login',\n mobileImgData: {\n src:\n 'https://d2oi1rqwb0pj00.cloudfront.net/ssr-academy/logo/naLogo_full_dark.svg',\n webpSrc:\n 'https://d2oi1rqwb0pj00.cloudfront.net/ssr-academy/logo/naLogo_full_dark.svg',\n },\n};\n\nexport const loginBackground = {\n alt: 'login background',\n mobileImgData: {\n src:\n 'https://d2oi1rqwb0pj00.cloudfront.net/na-portal/LoginPage/jpg/member-banner.jpg',\n webpSrc:\n 'https://d2oi1rqwb0pj00.cloudfront.net/na-portal/LoginPage/jpg/member-banner.jpg',\n },\n};\n","import { PropTypes } from 'prop-types';\nimport React from 'react';\nimport keys from '../../../config/keys';\nimport { Link } from 'react-router-dom';\nimport Image from '../../Image';\nimport './AuthenticationWrapper.scss';\nimport { loginBackground, login_logo } from './constant';\n\nconst { mainWebsiteUrl } = keys;\n\nconst AuthenticationWrapper = ({ formChildren }) => {\n const className = 'c-AuthenticationWrapper';\n\n return (\n
    \n
    \n \n
    \n \n
    \n \n
    \n \n
    \n Login For a Peek Into the World of People\n
    \n
    {formChildren}
    \n
    \n
    \n
    \n );\n};\n\nAuthenticationWrapper.propTypes = {\n formChildren: PropTypes.object,\n};\n\nexport default AuthenticationWrapper;\n","import React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Link, withRouter } from 'react-router-dom';\nimport LoadingCircle from '../../Common/LoadingCircle/LoadingCircle';\nimport { startSignUp } from '../../../actions/auth';\nimport { parse } from 'query-string';\nimport Button from '../../Button';\n\nconst className = 'c-SignupForm c-Form';\n\nfunction SignupForm(props) {\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [token, setToken] = useState('');\n\n useEffect(() => {\n const parseObj = parse(window.location.search);\n\n if (parseObj.email && parseObj.token) {\n setEmail(parseObj.email);\n setToken(parseObj.token);\n }\n }, [props.loginFailed, props.loading]);\n\n const signUp = (e) => {\n e.preventDefault();\n props.dispatch(startSignUp(email, password, confirmPassword, token));\n setPassword('');\n setConfirmPassword('');\n setEmail('');\n };\n\n return (\n
    \n
    \n setEmail(e.target.value)}\n placeholder=\"Email\"\n />\n setPassword(e.target.value)}\n placeholder=\"Password\"\n />\n setConfirmPassword(e.target.value)}\n placeholder=\"Confirm Password\"\n />\n {props.loading ? (\n \n ) : (\n \n )}\n \n
    \n {props.loginFailed ? (\n
    \n {props.loginFailed}\n
    \n ) : (\n
    \n )}\n {props.success ? (\n
    {props.success}
    \n ) : (\n
    \n )}\n
    \n Login\n
    \n
    \n Forget your password?\n
    \n
    \n
    \n );\n}\n\nconst mapStateToProps = (state) => ({\n currentRoute: state.routes.currentRoute,\n loading: state.main.loading,\n loginFailed: state.main.loginFailed,\n success: state.main.success,\n});\n\nexport default connect(mapStateToProps)(withRouter(SignupForm));\n","import SignupForm from './SignupForm';\nexport default SignupForm;\n","import SignupPage from './SignupPage';\nexport default SignupPage;\n","import React from 'react';\nimport AuthenticationWrapper from '../../components/Authentication/AuthenticationWrapper/AuthenticationWrapper';\nimport SignupForm from '../../components/Authentication/SignupForm';\n\nconst SignupPage = () => {\n const className = 'c-SignupPage';\n\n return (\n
    \n } />\n
    \n );\n};\n\nexport default SignupPage;\n","import Auth from '../modules/auth';\n\nconst authReducer = (state = {}, action) => {\n switch (action.type) {\n case 'LOGIN':\n return { ...state, id: action.id, user: action.user };\n\n case 'SIGNUP':\n return { ...state, user: action.user };\n\n case 'LOGOUT':\n return {};\n\n case 'SET_USER_PROFILE': {\n Auth.setUserData(action.user);\n return { ...state, user: action.user };\n }\n\n case 'UPDATE_USER_DATA': {\n const updatedUserData = {\n ...state.user,\n learner: action.user,\n };\n Auth.setUserData(updatedUserData);\n return { ...state, user: updatedUserData };\n }\n\n case 'SET_USER_TOKEN':\n return { ...state, id: action.id, token: action.token };\n\n default:\n return state;\n }\n};\n\nexport default authReducer;\n","const defaultState = {\n bookingStart: new Date(),\n bookingEnd: new Date(),\n};\n\nexport default (state = defaultState, action) => {\n switch (action.type) {\n case \"SET_BOOKING_TIME\":\n return {\n ...state,\n bookingStart: action.bookingStart,\n bookingEnd: action.bookingEnd,\n };\n\n default:\n return state;\n }\n};\n","const defaultState = {};\n\nexport default (state = defaultState, action) => {\n switch (action.type) {\n case \"SET_LESSON\":\n return {\n ...state,\n lesson: action.lesson,\n };\n\n case \"SET_TRAINER\":\n return {\n ...state,\n trainer: action.trainer,\n };\n\n default:\n return state;\n }\n};\n","const featureFlagReducer = (state = {}, action) => {\n switch (action.type) {\n case 'SET_CREATOR_FF':\n return { ...state, creatorAcademy: action.payload };\n\n default:\n return state;\n }\n};\n\nexport default featureFlagReducer;\n","import { checkIsWebView } from '../utility/webview';\n\nconst getSingupOriginData = () => {\n const urlSearchParams = new URLSearchParams(window.location.search);\n const showParam = urlSearchParams.get('showSignupSuccessPrompt');\n const entityTypeParam = urlSearchParams.get('signupOriginEntityType');\n const entityIdParam = urlSearchParams.get('signupOriginEntityId');\n\n if (showParam) {\n const show = true;\n const entityType = entityTypeParam || null;\n const entityId = entityIdParam || null;\n\n return { show, entityType, entityId };\n }\n\n return null;\n};\n\nconst removeSignupOriginQueryParams = () => {\n // Get the current URL's search parameters\n const urlSearchParams = new URLSearchParams(window.location.search);\n\n // Remove the query parameters you want to delete\n urlSearchParams.delete('showSignupSuccessPrompt');\n urlSearchParams.delete('signupOriginEntityType');\n urlSearchParams.delete('signupOriginEntityId');\n\n // Generate the new URL without the removed parameters\n const newURL = `${window.location.pathname}?${urlSearchParams.toString()}`;\n\n // Update the window's location with the new URL\n window.history.replaceState({}, document.title, newURL);\n};\n\nconst defaultState = {\n loginFailed: false,\n resetPasswordFailed: false,\n updateProfileStatus: false,\n loading: false,\n announcement: true,\n isWebView: checkIsWebView(window?.navigator?.userAgent),\n signupOriginData: getSingupOriginData(),\n};\n\nexport default (state = defaultState, action) => {\n switch (action.type) {\n case 'SET_LOGIN_FAILED':\n return {\n ...state,\n loginFailed: action.message,\n };\n\n case 'SET_RESET_PASSWORD_FAILED':\n return {\n ...state,\n resetPasswordFailed: action.message,\n };\n\n case 'SET_SUCCESS':\n return {\n ...state,\n success: action.message,\n };\n\n case 'SET_LOADING':\n return {\n ...state,\n loading: action.load,\n };\n\n case 'SET_UPDATE_PROFILE_STATUS':\n return {\n ...state,\n updateProfileStatus: action.updateProfileStatus,\n };\n\n case 'SET_ANNOUNCEMENT_SHOWN_STATUS':\n return {\n ...state,\n announcement: action.announcement,\n };\n\n case 'CLOSE_SIGNUP_SUCCESS_PROMPT':\n removeSignupOriginQueryParams();\n return {\n ...state,\n signupOriginData: null,\n };\n\n default:\n return state;\n }\n};\n","export const checkIsWebView = (userAgent) => {\n const webViewRules = [\n // if it says it's a webview, let's go with that\n 'WebView',\n // iOS webview will be the same as safari but missing \"Safari\"\n '(iPhone|iPod|iPad)(?!.*Safari)',\n // Android Lollipop and Above: webview will be the same as native but it will contain \"wv\"\n // Android KitKat to lollipop webview will put {version}.0.0.0\n 'Android.*(wv|.0.0.0)',\n // old chrome android webview agent\n 'Linux; U; Android',\n ];\n\n const webviewRegExp = new RegExp('(' + webViewRules.join('|') + ')', 'ig');\n\n const isWebView = !!userAgent.match(webviewRegExp);\n\n return isWebView;\n};\n","const defaultState = {\n currentRoute: '/',\n redirectRoute: null,\n};\n\nexport default (state = defaultState, action) => {\n switch (action.type) {\n case 'SET_CURRENT_ROUTE':\n return {\n ...state,\n currentRoute: action.route,\n };\n\n case 'SET_REDIRECT_ROUTE':\n return {\n ...state,\n redirectRoute: action.route,\n };\n\n case 'RESET_CURRENT_ROUTE':\n return {\n ...state,\n currentRoute: '/',\n };\n\n default:\n return state;\n }\n};\n","export default (state = {}, action) => {\n switch (action.type) {\n case 'SET_USER_DATA':\n return {\n ...state,\n id: action.id,\n user: Object.assign({}, state.user, action.user),\n };\n\n default:\n return state;\n }\n};\n","import AuthWrapper from './AuthWrapper';\nexport default AuthWrapper;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { parse } from 'query-string';\nimport Auth from '../../modules/auth';\nimport { startLoginCheck, startLogout } from '../../actions/auth';\nimport config from '../../modules/config';\nimport { isSessionInSandboxEnv } from '../../CommunityPortal/utils/productDemoUtils';\n\nconst AuthWrapper = ({ children, history }) => {\n const dispatch = useDispatch();\n const user = useSelector((state) => {\n return state?.auth?.user;\n });\n const isDemoUser = !!user?.isDemo;\n\n const setTokens = async (uriToken, uriRefreshToken) => {\n Auth.setUriTokens(uriToken, uriRefreshToken);\n };\n\n useEffect(() => {\n const loginWithToken = async () => {\n const parsedParamsObj = parse(window.location.search);\n const uriToken = parsedParamsObj?.token;\n const uriRefreshToken = parsedParamsObj?.refreshToken;\n\n const accessTokenCookie = Auth.getUserTokenFromCookies();\n const refreshTokenCookie = Auth.getRefreshTokenFromCookies();\n const areTokenInCookie = accessTokenCookie && refreshTokenCookie;\n\n const pathnameWithParams = `${history.location.pathname}${history.location.search}`;\n\n if (uriToken) {\n Auth.deauthenticateUser();\n await setTokens(uriToken, uriRefreshToken);\n dispatch(\n startLoginCheck(uriToken, uriRefreshToken, pathnameWithParams)\n );\n } else if (areTokenInCookie) {\n //if tokens exists in cookie then use those to login\n Auth.setTokens(accessTokenCookie, refreshTokenCookie);\n dispatch(\n startLoginCheck(\n accessTokenCookie,\n refreshTokenCookie,\n history.location.pathname\n )\n );\n } else {\n Auth.deleteUriTokens();\n const email = parsedParamsObj?.email;\n\n // For local development cookies are not set beacuse of the same origin policy, so need to use localStorage ONLY for local development\n if (config.isDevEnv) {\n const token = Auth.getUserToken();\n const refreshToken = Auth.getRefreshToken();\n dispatch(\n startLoginCheck(token, refreshToken, pathnameWithParams, email)\n );\n } else {\n // For production we need to use cookies to store tokens\n dispatch(\n startLoginCheck(\n accessTokenCookie,\n refreshTokenCookie,\n pathnameWithParams,\n email\n )\n );\n }\n }\n };\n\n loginWithToken();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (isDemoUser && !isSessionInSandboxEnv()) {\n dispatch(startLogout());\n }\n }, [dispatch, isDemoUser]);\n\n return
    {children}
    ;\n};\n\nexport default withRouter(AuthWrapper);\n","import './App.scss';\n\nimport React, { Suspense, lazy } from 'react';\nimport { Route, Router, Switch } from 'react-router-dom';\n\nimport { CommunityPortalContextProvider } from './CommunityPortal/contexts/CommunityPortalContext';\nimport ErrorPage from './components/Common/ErrorPage/ErrorPage';\n// import EventCheckoutPage from './pages/CheckoutPage/Events';\nimport { EventsCheckoutContextProvider } from './contexts/EventsCheckoutContext/EventsCheckoutContext';\nimport ForgetPasswordPage from './pages/ForgetPasswordPage';\nimport { LibraryCheckoutContextProvider } from './contexts/LibraryCheckoutContext/LibraryCheckoutContext';\n// import LibraryCheckoutPage from './pages/CheckoutPage/Library';\nimport LoginPage from './pages/LoginPage';\nimport PortalModeWrapper from './PortalModeWrapper';\nimport { Provider } from 'react-redux';\nimport { Redirect } from 'react-router';\nimport ResetPasswordPage from './pages/ResetPasswordPage';\nimport RouterContextProvider from './PortalModeWrapper/contexts/RouterContext';\nimport SetUserBasicDataModal from './components/SetUserBasicDataModal/index';\nimport SignupPage from './pages/SignupPage';\n// import StripeWrapper from './components/StripeWrapper/EventsStripeWrapper';\nimport { ToastContainer } from './CommunityPortal/components/ToastContainer';\nimport { communityPortalPaths } from './PortalModeWrapper/constants';\nimport config from './modules/config';\nimport configStore from './stores/configureStore';\nimport history from './modules/history';\nimport { hotjar } from 'react-hotjar';\nimport { settingsPagePaths } from './pages/SettingPage/constants';\n// import EventsStripeWrapper from './components/StripeWrapper/EventsStripeWrapper';\n// import LibraryStripeWrapper from './components/StripeWrapper/LibraryStripeWrapper';\n\n// const AuthWrapper = lazy(() => import('./components/AuthWrapper/index'));\nimport AuthWrapper from './components/AuthWrapper/index';\n\nconst FacebookCommunityAuthPage = lazy(() =>\n import('./pages/FacebookCommunityAuthPage')\n);\n\nconst store = configStore();\n\nconst { app_env } = config;\n\nif (app_env === 'production') {\n hotjar.initialize(2272125, 6);\n}\n\nconst className = 'c-App';\n\nconst rootRoutePath = '/';\nconst facebookCommunityAuthPath = '/oauth';\nconst newLayoutPaths = [\n rootRoutePath,\n ...communityPortalPaths,\n ...settingsPagePaths,\n];\n\nfunction App() {\n return (\n
    \n {\n const allowTransition = window.confirm(message);\n callback(allowTransition);\n }}\n >\n \n }\n >\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n (\n \n \n \n {/* \n \n \n */}\n \n \n \n )}\n />\n\n (\n \n \n \n {/* \n \n */}\n \n \n \n )}\n />\n\n (\n \n \n \n )}\n />\n } />\n\n (\n \n )}\n />\n (\n \n )}\n />\n }\n />\n\n }\n />\n \n \n \n \n \n \n
    \n );\n}\n\nexport default App;\n","import { applyMiddleware, combineReducers, createStore } from 'redux';\nimport thunk from 'redux-thunk';\nimport authReducer from '../reducers/auth';\nimport bookingReducer from '../reducers/booking';\nimport courseOverviewReducer from '../reducers/courseOverview';\nimport featureFlagReducer from '../reducers/featureFlag';\nimport mainReducer from '../reducers/main';\nimport openModalsDataReducer from '../reducers/openModalsData';\nimport routesReducer from '../reducers/routes';\nimport userReducer from '../reducers/user';\n\nexport default () => {\n const store = createStore(\n combineReducers({\n auth: authReducer,\n main: mainReducer,\n routes: routesReducer,\n booking: bookingReducer,\n courseOverview: courseOverviewReducer,\n user: userReducer,\n featureFlag: featureFlagReducer,\n openModalsData: openModalsDataReducer,\n }),\n applyMiddleware(thunk)\n );\n\n return store;\n};\n","import './index.css';\nimport './styles/tailwind.css';\n\nimport * as Sentry from '@sentry/react';\nimport { Integrations } from '@sentry/tracing';\nimport * as serviceWorker from './serviceWorker';\n\nimport App from './App';\nimport { GoogleOAuthProvider } from '@react-oauth/google';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { WindowWidthContextProvider } from './contexts/WindowWidthContext';\nimport { initiateGTM } from './utility/analytics';\nimport './i18n';\nimport { loadTranslations } from './i18n';\n\nconst IS_DEV_ENV = process?.env?.NODE_ENV === 'development';\nconst GOOGLE_CLIENT_ID = process?.env?.REACT_APP_GOOGLE_CLIENT_ID;\n\nconsole.info('>>> Active Env: ', process?.env?.NODE_ENV);\n\nif (!IS_DEV_ENV) {\n Sentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN_KEY,\n integrations: [new Integrations.BrowserTracing()],\n tracesSampleRate: IS_DEV_ENV ? 1 : 0.25,\n environment: IS_DEV_ENV ? 'development' : 'production',\n });\n}\n\ninitiateGTM();\n\nloadTranslations().then(() => {\n ReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n );\n});\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import axios from 'axios';\nimport { communityInvoicesURL } from './constants';\nimport { getAxiosError } from '../../services/helper';\nimport sign from 'jwt-encode';\n\nexport const getCommunityInvoices = async (communityCode, email) => {\n try {\n const mainWebsiteJwtToken = sign(\n { email },\n process.env.REACT_APP_JWT_SECRET\n );\n const response = await axios.get(`${communityInvoicesURL()}`, {\n params: { communityCode },\n headers: { Authorization: `Bearer ${mainWebsiteJwtToken}` },\n });\n\n if (response.status === 200) {\n return response.data;\n }\n } catch (err) {\n return getAxiosError(err);\n }\n};\n"],"sourceRoot":""}