{"version":3,"sources":["assets/img/logo_2.png","interfaces/index.ts","assets/fonts/BigCaslon.ttf","assets/fonts/BigCaslon.otf","assets/fonts/EBGaramond-Regular.ttf","assets/fonts/JosefinSans-Regular.ttf","assets/fonts/Montserrat-Light.ttf","assets/fonts/Montserrat-Regular.otf","assets/fonts/NunitoSans-Regular.ttf","assets/fonts/LibreCaslonDisplay-Regular.ttf","assets/fonts/Roboto/Roboto-Italic.ttf","assets/fonts/Roboto/Roboto-Light.ttf","assets/fonts/Roboto/Roboto-LightItalic.ttf","assets/fonts/Roboto/Roboto-Medium.ttf","assets/fonts/Roboto/Roboto-MediumItalic.ttf","assets/fonts/Roboto/Roboto-Regular.ttf","assets/fonts/Montserrat-Bold.ttf","env.ts","store/actionTypes.ts","store/ducks/admin.ts","store/ducks/baby.ts","store/ducks/books.ts","store/ducks/bpHelper.ts","store/ducks/customer.ts","store/ducks/dashboard.ts","store/ducks/growthChart.ts","store/ducks/milestones.ts","store/ducks/photos.ts","store/ducks/product.ts","store/ducks/stripeProduct.ts","store/ducks/user.ts","store/ducks/guesUsers.ts","store/ducks/maintenance.ts","store/index.ts","components/BaseAdminLayout/BaseAdminLayout.tsx","api.ts","utils/array.ts","utils/error.ts","utils/marketing.ts","store/sagas/books.ts","utils/string.ts","pages/Admin/Books/Books.tsx","pages/Admin/Books/DetailBooks/DetailBooks.tsx","store/sagas/font.ts","components/FontForm/FontForm.tsx","pages/Admin/Fonts/FontDetailPage/FontDetailPage.tsx","pages/Admin/Fonts/FontListPage/FontListPage.tsx","pages/Admin/Fonts/FontNew/FontNewPage.tsx","components/VerticalDivider/VerticalDivider.tsx","store/sagas/form.ts","pages/Admin/Forms/DetailAnswer/DetailAnswer.tsx","pages/Admin/Forms/DetailForm/DetailForm.tsx","pages/Admin/Forms/AnswerList/AnswerList.tsx","pages/Admin/Forms/FormList/FormList.tsx","pages/Admin/Forms/Forms.tsx","pages/Admin/Forms/Guideline/Guideline.tsx","components/CustomDivider.tsx","pages/Admin/Forms/SaveForm/SaveForm.tsx","store/sagas/giftCard.ts","pages/Admin/GiftCard/GiftCard.tsx","pages/Admin/Index/Index.tsx","store/sagas/admin.ts","pages/Admin/Login/AdminLoginPage.tsx","store/sagas/questions.ts","components/AdminEditableQuestionList/QuestionForm.tsx","components/AdminEditableQuestionList/QuestionList.tsx","components/AdminEditableQuestionList/AdminEditableQuestionList.tsx","store/sagas/frame.ts","store/sagas/messageNotification.ts","store/sagas/milestone.ts","components/AdminMilestoneForm/FrameImageTabs.tsx","components/AdminMilestoneForm/InputFromTypeOfMilestone.tsx","components/AdminMilestoneForm/AdminMilestoneForm.tsx","components/AdminMilestoneForm/AdminMilestoneFormContainer.tsx","pages/Admin/Milestones/MilestoneDetail/MilestoneDetailPage.tsx","pages/Admin/Milestones/MilestoneList/MilestoneListPage.tsx","pages/Admin/Milestones/MilestoneNew/MilestoneNewPage.tsx","store/sagas/image.ts","store/sagas/baby.ts","store/sagas/bpHelper.ts","stripe.ts","store/sagas/customer.ts","store/sagas/growthChart.ts","store/sagas/product.ts","store/sagas/stripe.ts","store/sagas/maintenance.ts","store/sagas/index.ts","store/sagas/user.ts","pages/Admin/Users/DetailUsers/DetailUsers.tsx","pages/Admin/Users/Users.tsx","pages/Admin/Metrics/Metrics.tsx","Admin.routes.tsx","store/sagas/guestUser.ts","components/Footer/icons/DashboardIcon.tsx","components/Footer/icons/BabypagesIcon.tsx","components/Footer/icons/MilestonesIcon.tsx","components/Footer/icons/BookIcon.tsx","components/Footer/icons/SettingsIcon.tsx","hooks/WindowsSize.ts","components/Footer/BottomNavigation.tsx","store/sagas/dashboard.ts","components/GuestUserValidateInvitationCodeForm/GuestUserValidateInvitationCodeForm.tsx","components/GuestUserModal/GuestUserModal.tsx","components/Header/menuItems.ts","components/Header/CustomDrawer.tsx","components/ModalPlus/ModalPlus.tsx","components/ChildMenu/ChildMenu.tsx","components/Header/ArrowDownChildMenu.tsx","components/Header/CartIcon.tsx","components/Icons/AddProfilePhotoIcon.tsx","components/Header/Header.tsx","components/Banner/Banner.tsx","components/BaseLayout/BaseLayout.tsx","pages/About/About.tsx","components/SignIn/data/emails.ts","components/SignIn/FacebookButton.tsx","components/SignIn/AppleButton.tsx","components/SignIn/SignInForm.tsx","pages/Auth/SignInPage/SignInPage.tsx","components/ResetPassword/ResetPasswordForm.tsx","pages/Auth/ResetPassword/ResetPassword.tsx","pages/Auth/SignInToken.tsx","store/sagas/cart.ts","components/Store/Store.tsx","pages/Auth/SignUpSteps/StepThree.tsx","components/SaveChild/SaveChild.tsx","pages/Auth/SignUpSteps/StepTwo.tsx","components/FloatShareButton/FloatShareButton.tsx","components/ModalSharePlus/ModalSharePlus.tsx","components/ShareModal/ShareModal.tsx","utils/share.ts","utils/size.ts","components/SaveBabyPage/PlusAlert/index.tsx","utils/answerAdapter.ts","store/sagas/babyPage.ts","utils/layouts.ts","components/Icons/Warning.tsx","pages/BabyPage/Save/SaveHelper.tsx","utils/image.ts","utils/canvas.ts","pages/BabyPage/AfterSave/AfterSave.tsx","components/PhotoModal/PhotoModal.tsx","components/BabyPagePreview/BabyPagePreview.tsx","components/BabyPageSearchBar/SearchBarIcon/SearchBarIcon.tsx","utils/searchBabypages.ts","components/Icons/SortIcon.tsx","components/BabyPageSearchBar/BabyPageSearchBar.tsx","components/BabyPageList/icons/BabyPageAdd.tsx","components/BabyPageList/icons/BabyPageRefresh.tsx","components/BabyPageList/BabyPageList.tsx","components/Icons/AscendingSort.tsx","components/Icons/DescendingSort.tsx","pages/BabyPage/BabyPages.tsx","components/Milestones/icons/CompletedMilestones.tsx","components/Milestones/MilestoneCard.tsx","components/Milestones/MilestonesList.tsx","pages/BabyPage/MilestonesPage/MilestonesPage.tsx","components/RouteLeavingGuard/RouteLeavingGuard.tsx","components/AnswerOrderable/AnswerOrderable.tsx","components/SaveBabyPage/ContentEditAnswers.tsx","components/SaveBabyPage/Content.tsx","components/SaveBabyPage/EditBorderIllustration.tsx","data/backgrounds.ts","hooks/Fonts.ts","components/FontSelect/FontSelect.tsx","components/SaveBabyPage/EditTextBackground.tsx","components/Layouts/Layout1A.tsx","components/Layouts/Layout2A.tsx","components/Layouts/Layout2B.tsx","components/Layouts/Layout3A.tsx","components/Layouts/Layout3B.tsx","components/Layouts/Layout3C.tsx","components/Layouts/Layout3D.tsx","components/Layouts/Layout4A.tsx","components/Layouts/Layout4B.tsx","components/Layouts/Layout4C.tsx","components/Layouts/Layout4D.tsx","components/Layouts/Layout4E.tsx","components/Layouts/Layout6A.tsx","components/Layouts/Layout6B.tsx","components/Gallery/PhotoGallery.tsx","components/ImageEditModal/ImageEditModal.tsx","components/BleedModal/BleedModal.tsx","hooks/useFetch.ts","components/Icons/CameraIcon.tsx","components/SaveBabyPage/SelectPhotoModal.tsx","hooks/IsMounted.ts","components/SaveBabyPage/Finish.tsx","utils/bpQuestions.ts","components/SaveBabyPage/Question.tsx","components/SaveBabyPage/QuestionHeight.tsx","components/SaveBabyPage/Questions.tsx","components/SaveBabyPage/SelectPhotos.tsx","utils/time.ts","pages/BabyPage/Save/Save.tsx","components/ModalCoverPlus/ModalCoverPlus.tsx","components/BookModal/BookModal.tsx","components/BookPreview/BookPreview.tsx","components/BookList/BookList.tsx","components/FloatButton/FloatButton.tsx","pages/Books/BooksPage.tsx","components/BookCover/BookCover.tsx","components/SaveBook/BookFinalPreview.tsx","components/ImageProgress/ImageProgress.tsx","components/CoverPreview/CoverPreview.tsx","components/SaveBook/CoverList.tsx","components/EditTextFont/EditTextFont.tsx","components/Icons/ArrowNext.tsx","components/SaveBook/EditText.tsx","components/BabyPageOrderable/BabyPageOrderable.tsx","components/SaveBook/SortSelectedBabypages.tsx","components/SaveBook/OrderBabypages.tsx","components/BabyPageItem/BabyPageItem.tsx","components/SaveBook/ChildBabypages.tsx","components/SaveBook/SaveBookTooltipIcon/SaveBookTooltipIcon.tsx","components/SaveBook/SelectBabypages.tsx","pages/Books/Save/Save.tsx","components/Cart/BabyPrint.tsx","components/Icons/EyeOpen.tsx","components/Icons/Thrash.tsx","components/Cart/Book.tsx","components/Icons/PlusIcon.tsx","components/Cart/GiftCard.tsx","components/Icons/Rattle.tsx","components/Cart/Subscription.tsx","pages/Cart/Cart.tsx","components/Paypal/PaypalButton.tsx","store/sagas/checkout.ts","pages/Cart/CheckoutHelper.ts","components/BookDisclaimer/BookDisclaimer.tsx","pages/Cart/MessageTip.tsx","pages/Cart/Checkout.tsx","pages/Cart/OrderConfirmation.tsx","components/Dashboard/Babyage.tsx","components/Icons/addBabypage.tsx","components/Dashboard/Babypages.tsx","components/EntryModal/EntryModal.tsx","components/Dashboard/GrowthChart.tsx","utils/calculates.ts","components/Dashboard/RecentMilestones.tsx","components/AddChildInfoModal/AddChildInfoModal.tsx","components/UpdateBirthModal/UpdateBirthModal.tsx","components/Dashboard/ManageUsers.tsx","components/Dashboard/BabyCarousel.tsx","pages/Dashboard/DashboardPage.tsx","hooks/useManageModal.ts","pages/Form/FormPage.tsx","pages/GrowthChart/GrowthChart.tsx","pages/GrowthChart/Save/Colors.ts","pages/GrowthChart/Save/Save.tsx","components/Icons/SocialMedia/Facebook.tsx","components/Icons/SocialMedia/Instagram.tsx","components/Icons/SocialMedia/Pinterest.tsx","components/Icons/SocialMedia/Twitter.tsx","pages/Maintenance/Maintenance.tsx","pages/MyOrders/MyOrders.tsx","components/ContactSupportModal/AlexandersContactSupportModal.tsx","pages/MyOrders/MyOrdersDetail/MyOrdersDetail.tsx","pages/PayPalOrderConfirmation/PayPalOrderConfirmationPage.tsx","components/GuestUserForm/GuestUserForm.tsx","store/sagas/familyRelationship.ts","pages/GuestUser/CreateGuestUserPage/CreateGuestUserPage.tsx","pages/GuestUser/GuestUsersPage.tsx","pages/GuestUser/UpdateGuestUserPage/UpdateGuestUserPage.tsx","pages/Store/Store.tsx","components/GiftCards/GiftCards.tsx","pages/GiftCards/GiftCards.tsx","pages/User/ManageChildrenPage/ManageChildrenPage.tsx","components/Profile/ChangePassword.tsx","components/Profile/RedeemCode.tsx","components/AddCardModal/AddCardModal.tsx","pages/User/PurchaseHistory/PurchaseHistory.tsx","components/Icons/PinkCircle.tsx","pages/User/ProfilePage/ProfilePage.tsx","pages/User/SaveChildPage/SaveChildPage.tsx","App.routes.tsx","App.tsx","utils/accessibility.ts","serviceWorker.ts","index.tsx","assets/img/logo-babypage.png","assets/icons/IconPlacholder.png","assets/img/book_line.png","assets/img/gift-card/cards.png","assets/img/gift-card/cards-mobile.png","assets/img/illustrations/stork-illustration.png","assets/icons/icon-close-eye.png","assets/icons/icon-open-eye.png","assets/img/book-mockup-store-xl.png","assets/img/navy_warning.png","assets/img/plus-thumbnail.png","interfaces/checkout.ts","interfaces/saveBabyPage.ts","assets/img/logo.svg","assets/img/working.png","assets/img/homeMessage.png","assets/img/homeMessageMobile.png","assets/img/brandLogo.png","assets/img/book-mockup-store.png","assets/img/illustrations/bees-illustration.png","assets/img/illustrations/bees-illustration-2.png","assets/img/illustrations/camera-illustration.png","assets/img/illustrations/fireworks-illustration.png","assets/img/illustrations/safetypins-illustration.png","assets/img/illustrations/three-stars-illustration.png","assets/img/tutorial/Step1.png","assets/img/tutorial/Step2.png","assets/img/tutorial/Step3.png","assets/img/tutorial/Step4.png","assets/img/tutorial/Step5.png","assets/img/tutorial/Step6.png","components/Milestones/icons/baby-buggy.png","components/Milestones/icons/baby-face.png","components/Milestones/icons/foot-icon.png","components/Milestones/icons/baby-shirt.png","components/Milestones/icons/stocking.png","components/Milestones/icons/incomplete.png","assets/icons/icon-just-center.png","assets/icons/icon-just-left.png","assets/icons/icon-just-right.png","assets/img/bleedtestline.png","assets/img/labelBottomCenter.png","assets/img/labelBottomLeft.png","assets/img/labelBottomRight.png","assets/img/labelTopCenter.png","assets/img/labelTopLeft.png","assets/img/labelTopRight.png","assets/img/icon-manage-guest-users.png","assets/img/crybaby.jpg","assets/img/gift-card/giftcard-newmom.jpg","assets/img/gift-card/giftcard-newmom-mobile.png","assets/img/gift-card/giftcard-babyshower.jpg","assets/img/gift-card/giftcard-babyshower-mobile.png","assets/img/gift-card/giftcard-holiday.jpg","assets/img/gift-card/giftcard-holiday-mobile.png","assets/img/ios-app-popup.jpg","assets/img/chandelier.png"],"names":["module","exports","WEB_VERSION","version","BASE_URL","PAGE_URL","clientId","clientSecret","apiVersion","highRes","width","height","highResContent","AMPLITUDE","PAYPAL","monthly","three_month","one_year","USER_LOGOUT","initialState","admin","state","action","type","payload","Object","freeze","changeAdmin","logoutAdmin","babies","simpleBabies","baby","babySelectedIndex","map","e","id","baby_first_name","baby_last_name","babySelected","isEqual","cloneDeep","undefined","length","getBabies","selectBaby","selectLastBaby","books","loading","covers","bookType","getBooks","getCovers","setBookType","borders","illustrations","draftBabyPage","initialBabyPage","milestoneId","bpHelper","getBorders","getIllustrations","saveDraftBabyPage","customer","changeCustomer","dashboard","getDashboard","growthChart","getGrowthChart","milestones","getMilestones","photos","getPhotos","products","product","getProducts","stripeProduct","getStripeProducts","user","babies_count","changeUser","logoutUser","FB","getLoginStatus","response","status","logout","error","sumChildCount","initialDeepLinkInfo","invitation_code","users_exists","additional_data","full_name","email","selectedGuestUser","fullName","permission","family_relationship_id","deepLinkInfo","guestUser","selectGuestUser","clearDeepLinkInfo","in_maintenance","body_message","maintenance","changeMaintenance","persistedReducer","persistReducer","key","storage","whitelist","combineReducers","maintenanceReducer","adminReducer","dashboardReducer","customerReducer","userReducer","growthChartReducer","bpHelperReducer","babyReducer","productReducer","stripeProductReducer","milestoneReducer","bookReducer","photosReducer","guestUsers","guestUsersReducer","sagaMiddleware","createSagaMiddleware","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","persistor","persistStore","Content","Sider","connect","dispatch","children","useState","collapsed","setCollapsed","history","useHistory","location","pathname","collapsible","onCollapse","className","src","logo","alt","selectedKeys","mode","Item","onClick","push","confirm","title","okText","okType","cancelText","icon","onOk","style","minHeight","api","axios","create","baseURL","headers","interceptors","use","data","code","Promise","reject","isArrayEqual","x","y","_","xorWith","isEmpty","networkError","parseRequestError","message","parseInt","trackAction","custom","ReactPixel","trackCustom","facebook","track","amplitudeInstance","amplitude","getInstance","init","logEvent","console","info","qp","pintrk","pinterest","event","firebase","google","details","trackPurchase","total","pixelData","value","toFixed","currency","contents","line_items","num_items","content_type","forEach","options","item","selected","qty","sku_id","quantity","item_price","price","description","product_name","product_category","product_id","product_price","product_quantity","subtitle","trackAddToCart","productTrackingData","content_name","content_category","content_ids","stripe_id","name","category","number_items","order_quantity","fetchBooks","duplicateBook","deleteBook","fetchCovers","saveBookSaga","fetchBookById","inspectAllBabypagesImages","getBooksAdmin","getBookById","getStripeBookTypes","callback","select","access_token","user_level","call","get","Authorization","put","accessToken","bookState","bookToDuplicate","findIndex","book","newBook","Error","delete","updatedBooks","filter","method","url","run","search","page","stripeId","setBookTypeDuck","replaceAll","text","replaceValue","count","indexOf","replace","capitalizeText","charAt","toUpperCase","slice","capitalizeTexts","split","join","replaceThumbURL","lastSegmentUrl","removeThumbString","lastSegment","substr","lastIndexOf","addSuffix","days","suffix","ones","AdminBooksPage","setLoading","setSearch","debounce","setDebounce","per_page","current_page","last_page","next_page_url","prev_page_url","has_more_pages","first_item","last_item","booksData","setBooksData","useEffect","err","notification","filterBooks","useCallback","onChangeSearch","clearTimeout","setTimeout","onChange","target","placeholder","dataSource","bordered","pagination","current","pageSize","rowKey","record","toString","onRow","Column","dataIndex","render","ellipsis","parent_first_name","parent_last_name","parent_email","moment","created_at","format","in_cart","AdminDetailBooksPage","Option","setBook","queryString","parse","fontSize","Grid","cover","thumbnail_with_url","defaultValue","disabled","htmlType","getFonts","getFontById","saveFont","deleteFont","isPlus","endpoint","form","post","FontForm","fontForm","setFontForm","handleFile","file","files","reader","FileReader","readAsDataURL","onloadend","font_url","result","source","source_file","handleSubmit","preventDefault","family","plus","is_active","formData","FormData","append","success","handleClickOnDeleteButton","onSubmit","textAlign","accept","display","htmlFor","color","cursor","maxLength","persist","checkedChildren","unCheckedChildren","checked","margin","FontDetailPage","useParams","span","offset","padding","FontListPage","searchParameter","setSearchParameter","fontPaginator","setFontPaginator","filterFonts","handleFilterChange","align","theme","FontNewPage","weight","VerticalDivider","getForms","getFormByCode","saveFormSaga","getAnswers","getDetailAnswer","getReport","deleteQuestionSaga","deleteOptionSaga","checkUserModal","answerFormSaga","startDate","endDate","formId","answerId","formQuestionId","questionId","optionId","lastAsk","localStorage","getItem","diff","show_form","content","centered","setItem","toISOString","onCancel","answer","AdminDetailAnswerPage","detail","setDetail","extra_question","extra_question_answer","answers","a","index","type_answer","type_data","question","is_required","has_other","other_answer","o","AdminDetailFormPage","setForm","showReport","questions","q","percent","find","r","other","other_data","questionData","form_question_id","qo","size","Fragment","AnswerList","forms","startOf","setStartDate","endOf","setEndDate","userSearch","setUserSearch","setAnswers","filterAnswers","RangePicker","newStart","newEnd","f","first_name","last_name","FormList","filterForms","maxWidth","ghost","AdminFormsPage","setForms","setFormData","defaultActiveKey","TabPane","tab","AdminGuidelinePage","CustomDivider","customClasses","parentCustomClasses","AdminSaveFormPage","deleteQuestion","i","deleteOption","optionI","oi","errorForm","getErrorForm","to","newState","replaceSpaces","lowerCase","toLowerCase","normalize","removeDiacritics","option","shape","cloned","getGiftCards","resendGiftCard","body","AdminGiftCardPage","giftCards","setGiftCards","modal","gift","modalInfo","setModalInfo","filterGifts","resendEmail","giftcard_id","duration","receiver_name","receiver_email","visible","closable","cancelButtonProps","okButtonProps","AdminIndexPage","working","authAdmin","username","password","grant_type","lang","operative_system","token_device","client_id","client_secret","AdminLoginPage","props","validateFields","values","setState","this","fieldsError","getFieldDecorator","getFieldsError","getFieldError","isFieldTouched","emailError","passwordError","validateStatus","help","rules","required","min","Password","keys","some","field","PureComponent","withRouter","fetchQuestions","getQuestionsByMilestoneId","saveQuestion","QuestionForm","selectedQuestion","setSelectedQuestion","autoSize","export","multiple_choice","QuestionList","hoverable","milestone_id","order","deleted_at","updated_at","AdminEditableQuestionList","setQuestions","questionExport","messageSuccess","getFrames","getMessageNotificationsForAdmin","fetchMilestones","getMilestonesForAdmin","getMilestoneByIdForAdmin","saveMilestone","deleteMilestone","title_name","FrameImageTabs","milestoneForm","setMilestoneForm","groupedFrames","currentTab","tabPosition","activeKey","activeTabKey","frame","styles","background_id","borderStyle","borderColor","thumbnail","InputFromTypeOfMilestone","typeOfMilestone","active_date","momentDate","max","age_weeks","age_months","age_years","AdminMilestoneForm","handleImage","typeOfMilestoneValue","messageNotifications","url_image","image_url","maxHeight","message_id","AdminMilestoneFormContainer","milestone","setMilestone","setMessageNotifications","setGroupedFrames","frames","setFrames","groupBy","folder","useMemo","parseFloat","currentFrame","image","MilestoneDetailPage","MilestoneListPage","milestoneSearch","setMilestoneSearch","milestoneList","setMilestoneList","fragmentedMilestoneList","setFragmentedMilestoneList","chunkMilestoneList","Chunk","filterMilestoneList","searchWordsArray","trim","word","filteredMilestones","onChangeMilestoneSearch","chunk","avatar","MilestoneNewPage","savePhotosS3","savePhotosShareS3","fetchBabyPhotos","fetchPhotos","responses","photo","gallery_image","old_image","baby_id","babypageId","Array","isArray","p","fetchBabies","getBabyStorage","saveChild","deleteChild","saveProfilePicture","selectIndex","sortBy","babyState","b","child","getChildForUpdate","getChildForAdd","all","childId","baby_middle_name","baby_birthplace","weight_lbs","weight_oz","baby_birthdate","baby_duedate","due_date","baby_time","gender","weightLbs","weightOz","baby_gender","first","middle","last","birthplace","birthdate","time","fetchBorders","fetchIllustrations","setDraftBabyPage","createCardToken","card","resolve","Stripe","setPublishableKey","createToken","createCustomer","createGuestCustomer","getCustomerInfo","addCustomerCard","updateCustomerCard","deleteCustomerCard","addGiftCard","main_user","main_user_id","mainUserId","mainUserStripeId","guest_user","oldCustomer","token","customer_id","default_source","cardId","gift_card_id","fetchGrowthCharts","getGrowthChartById","saveGrowthChartSaga","deleteGrowthChart","editId","fontsize","parent_id","fetchProducts","fetchStripeProducts","getMaintenance","log","rootSaga","signupSaga","ignoreAuthenticatedUser","getAuthenticatedUser","authUser","resetPassword","authUserApple","authUserFacebook","userFacebookExists","signUpUser","forgetPasswordUser","getAuthenticatedUserToken","updateAccount","updatePassword","deactivateAccount","unsubscribePlan","purchaseHistory","guestToUser","getUsers","getUserById","getFirstViewOfBabyPageContent","getAlexandersOrders","getAlexandersOrdersDetail","contactSupportAlexandersOrders","setPayPalTime","sendWelcomeEmail","switchAccount","password_confirmation","requestBody","firstName","lastName","signupEmail","invitationCode","hostUserId","settings","subsId","plan_id","planId","trackActionData","after","first_view_of_baby_page_content","host_user_id","AdminDetailUsersPage","setUser","label","last_login","total_babies","total_babypages","total_books","gutter","marginTop","birth_date","babyPages","slidesToShow","draggable","autoplay","autoplaySpeed","infinite","dots","slidesToScroll","speed","babypage","position","lines","AdminUsersPage","usersData","setUsersData","setPlus","filterUsers","plusStatus","onChangeFilters","AdminMetricsPage","background","path","exact","component","createGuestUser","getGuestUsers","deleteGuestUser","updateGuestUser","validateInvitationCode","getGuestUserInfo","DashBoardIcon","isSelected","xmlns","viewBox","fill","fillRule","stroke","strokeLinecap","d","cx","cy","transform","BabypagesIcon","MilestonesIcon","strokeLinejoin","BookIcon","SettingsIcon","useWindowSize","setSize","useLayoutEffect","updateSize","innerWidth","innerHeight","addEventListener","removeEventListener","hideLinks","isGuestUser","isReadOnly","DashboardIcon","fetchDashboard","saveEntryDashboard","deleteEntryDashboard","goPersonalAccount","queryParms","entry","isEdit","entry_id","height_id","finalData","weight_id","each","heights","weights","heightId","weightId","newDashboard","heightIndex","h","weightIndex","splice","GuestUserValidateInvitationCodeForm","closeGuestUserModal","invitationCodeFromLink","setInvitationCode","isNumeric","matches","isVisible","radioOption","setRadioOption","radioStyle","lineHeight","handleRadioGroupChange","loginAsDifferentUserHandler","hostUser","params","guest_user_id","startCase","host_user","switchAccountFromModal","newUser","host_users","hostUsers","footer","Group","validated","indicator","spin","MobileMenuItems","hideFromUserGift","cssClass","counterBadge","left","counter","hideFromGuestUser","hideFromFreeUser","CustomDrawer","drawerOpen","setDrawerOpen","storeLength","alexandersOrderCounter","showGuestUserModal","userName","placement","onClose","justifyContent","marginBottom","backgroundColor","border","badge","dot","SubMenu","MobileUserItems","userItem","newTab","winOpened","open","focus","href","ModalPlus","customText","customTextBold","onSaveFreeFeatures","afterSaveBPMsg","onSaveBeforeUpgradeToPlus","savingBabyPage","bookMessage","mainMessage","isSaveFreeFeatures","selectBabyIndex","setDropdownVisible","showPlus","setShowPlus","manageChildrenMsg","ArrowDownChildMenu","CartIcon","fillColor","strokeWidth","AddProfilePhotoIcon","isSmall","Header","pageTitle","pageSubtitle","hideHeaderChildMenu","dropdownVisible","isCartPage","cartIconMargin","baby_profile_picture","borderRadius","addChildPhotoIcon","extra","onVisibleChange","overlay","trigger","Banner","content2","isCustom","clearDeepLinkInfoFromStore","pageStyle","contentStyle","hideHeader","hideFooter","hideFooterLinks","hideBanner","useLocation","guestUserModalVisible","setGuestUserModalVisible","showBanner","JSON","alexanders_orders_count","Helmet","AboutPage","hideChildMenu","rel","COMMON_EMAILS","base","shouldBe","canHaveDiffDomain","isEmailValid","isEmail","c","indexBase","FacebookButton","signInWithFacebook","verticalAlign","AppleButton","signInWithApple","hasErrors","SignInForm","signin","passwordHidden","faceLoading","confirmDirty","invitationCodeInfoModal","forgetPasswordModal","valid","customEmailModal","authResponse","meResponse","hidePassword","handleConfirmBlur","validateEmail","_rule","validateToNextEmail","force","compareToFirstEmail","getFieldValue","_openNotificationWithIcon","saga","loginAsGuestUser","query","redirect","firstHostUserId","invitationCodeInfoToggle","forgetPasswordToggle","forgetPassword","finishAuth","finishFacebookAuth","bodyRequest","facebook_id","userID","modified_email","afterResponse","fields","existData","login","scope","auth_type","appleResponse","appleAuthResponse","appleObject","apple_token","authorization","id_token","apple_id","AppleID","auth","signIn","signup","prevProps","usersExists","resetFields","firstNameError","lastNameError","cfEmailError","emailErrorSignup","invitationCodeError","modalErrorClassName","textTransform","initialValue","eyeClosed","eyeOpen","validator","pattern","logoImg","onPressEnter","setModal","brandLogo","homeMessageMobile","destroyOnClose","bodyStyle","ResetPasswordForm","React","Component","ResetPassword","SignInToken","subscription","addProductStore","updateUserStore","getUserStore","newStore","babypage_id","book_id","stringify","plansInfoDesktop","perk1","perk2","bold","beesIllustration","threeStarsIllustration","bookIllustration","fireworksIllustration","safetypinsIllustration","cameraIllustration","stripeProducts","showFree","sendEmail","continuePath","setContinuePath","checkboxActive","setCheckboxActive","desktopDevice","setDesktopDevice","setProduct","subscriptionOptions","sku_type","sku_image","sku_attributes","sku_package_dimensions","sku_inventory","shippable","attributes","package_dimensions","active","metadata","images","planClickHandler","planType","isDesktopDevice","hookInfo","fpr","uid","onCheckout","receiver","date","prices","setPlansStore","localStore","isNaN","bookStoreImgLarge","bookStoreImg","beesIllustration2","giftCardImg","giftCardMobileImg","StepThree","SaveChild","isDueDate","showModalDueDate","birth_time","has_born","hasDate","updateBirthError","searchBabyId","birthHeight","birthWeight","oz","baby_birth_time","baby_hasborn","dateNow","Date","dateTest","futureBirth","toDate","setFieldsValue","baby_birthtime","validateWithOz","validateWithLbs","step","birthDate","babyGender","babyFirstName","babyLastName","afterSave","updateBirthDate","prevState","genderError","birthDateError","dueDateError","babyHeightError","babyWeightLbsError","babyWeightOzError","extraInfo","shortForm","disabledDate","add","use12Hours","addChild","onDelete","Form","useLastLocation","showModal","setShowModal","isVisibleInvitationCodeModal","setIsVisibleInvitationCodeModal","setIsLoadingInvitationCodeModal","hideCustomDivider","tutorialItems","img","tutorialImg1","tutorialImg2","tutorialImg3","tutorialImg4","tutorialImg5","tutorialImg6","storkIllustration","swipe","arrows","nextArrow","prevArrow","FloatShareButton","unFixed","ModalSharePlus","ShareModal","setShowSharePlus","checkFreeUser","ui","error_message","shareFacebook","onCopy","getBrowserWidth","Math","document","documentElement","scrollWidth","offsetWidth","clientWidth","outerWidth","getBrowserAspect","scrollHeight","offsetHeight","clientHeight","outerHeight","dynamicSize","getProportionalSize","baseSize","proportion","contentScale","getContentScale","isGreaterAllowedThanMaxHeight","maxHeightAllowed","createImageBitmap","currentHeightOfFile","PlusAlert","preview","marginLeft","aftersave","normalizeWeightAnswer","weightHeightAnswers","digits","flatMap","match","Number","extractDigitsFromHeightWeightAnswer","newAnswer","answerString","String","question_id","addHeightAnswer","addWeightAnswer","saveBabyPageSaga","fetchBabyPageById","duplicateBabyPage","deleteBabyPage","babyPage","updatedAnswers","babyIndex","newBabyPage","updatedBabypages","possibleLayouts","layout","isFree","getLayoutInfos","possibleLayout","getAspectFromLayout","layoutInfo","Warning","initialPhotoState","edit","base64","aspect","getPlaceholderB64","responseType","placeHolderFile","getBase64","placeHolderB64","getFileDimensions","onload","Image","getResolutionOfSquareLayout","minResolution","acceptedResolutions","photoClick","inputRef","setPhotoSelected","setModalOpen","side","base64_cropped","croppedData","imageData","profilePhotoClick","selectImage","photoSelected","setPhotos","newPhotos","imageResolution","fileResized","isMobileSafari","isValidImage","includes","fileName","now","substring","getImage","missing","File","isLocal","selectImageURL","imgUrl","getFileFromUrl","oldAspect","selectOneImage","setPhoto","newPhoto","selectOneImageURL","finishCrop","cropperRef","getCroppedCanvas","toDataURL","finishOneCrop","calculateCropped","zoom","origin","rotate","rotated","naturalWidth","naturalHeight","sizePixels","scaleX","scaleY","calculateZoom","calculateOrigin","calculateOriginPercent","checkPhotoLayouts","require","checkOldLayout","oldLayout","oldLayoutInfo","shouldRecropPhoto","getCroppedImg","aspectRatio","rotation","getElementById","appendChild","classList","toggle","Cropper","autoCrop","viewMode","ready","cropper","cropped","rotateTo","removeChild","onerror","URL","createObjectURL","canvasToBlobPromise","canvas","toBlob","blob","avoidCorsUrl","Accept","getBase64FromFileUrl","b64toBlob","b64Data","contentType","sliceSize","byteCharacters","atob","byteArrays","byteNumbers","charCodeAt","byteArray","Uint8Array","Blob","getPhotoFile","originPercent","top","generateImage","ignoreCors","generateBabypageImg","bpUrl","contentUrl","returnBase64","createElement","ctx","getContext","bpImg","contentImg","drawImage","then","catch","downloadBabypage","generatedFile","saveAs","setBabyPage","showSharePlus","share","setShare","downloadFreeBP","setDownloadFreeBP","buttonShareDisabled","setButtonShareDisabled","photos_right","thumbnail_content","babyPageBD","createShareImage","high_url","thumb_url","hasFullAccess","zoomed","setZoomed","upgradeToPlus","setUpgradeToPlus","new_version","popover","control","setControl","popupContent","reduce","acc","SearchBarIcon","searchBabypages","babypages","setFilteredBabypages","arrayFilteredBabypages","matchesArray","previousWord","currentWord","wordMatch","SortIcon","classes","BabyPageSearchBar","filteredBabypages","setSortModalVisible","onFocus","BabyPageAdd","BabyPageRefresh","BabyPageList","newBabyPages","allBabypages","BabyPagePreviewList","bpProps","hiddenClasses","hasBabypages","setBookTypeSaga","AscendingSort","DescendingSort","sortOptions","sortModalVisible","setSortBy","reverseSort","setReverseSort","reverse","newBabypages","oldBabypages","capitalize","CompletedMilestones","opacity","strokeDasharray","MilestoneCard","isIOS","test","navigator","userAgent","milestoneCompletedOverlay","is_used","imageOpacity","MilestonesList","milestoneTitle","babyPageLimitPlusOpen","setBabyPageLimitPlusOpen","activefilter","setActiveFilter","activeMilestoneTitle","setActiveMilestoneTitle","setFilteredMilestones","babyMilestones","m","customId","all_milestones","photoOnlyId","autoFocus","babyCart","babyShirt","babyFoot","babySock","babyIncomplete","babyFace","onlyPhotoBPCreated","maskClosable","goBack","initialModal","confirmedNavigation","lastLocation","RouteLeavingGuard","beforeNavigate","when","navigate","handleBlockedNavigation","pathName","manageChild","AnswerOrderable","setEditAnswers","removeAnswer","editAnswers","setDeletedAnswerCheck","disabledInput","addonAfter","ContentEditAnswers","subTitle","setSortedAnswers","addCustomAnswer","isBirthAnnoMilestone","milestoneType","setMilestoneDate","milestoneDate","setMilestoneAsFirstLine","milestoneAsFirstLine","editTitle","setEditTitle","editSubTitle","setEditSubTitle","customAnswer","setCustomAnswer","deletedAnswerCheck","answersWithoutDeleted","setAnswersWithoutDeleted","dateValue","setDateValue","setChecked","checkHasPressed","setCheckHasPressed","heightAnswer","setHeightAnswer","weightAnswer","setWeightAnswer","weightAnswerOz","setWeightAnswerOz","isCustomOrFirstEvent","missingContent","both","onDragEnd","destination","newOrder","arrayMove","toEdit","numericValues","editAnswer","prevEditAnswers","floor","random","droppableId","provided","droppableProps","ref","innerRef","draggableId","draggableProps","dragHandleProps","periodString","initialSize","mtTitle","mtSubTitle","mbSubTitle","myAnswers","ptContent","pbContent","ptContentIl","borderHeight","illustrationSize","font","backgroundSelected","borderSelected","illustrationSelected","answersArray","textAnswers","labelUrl","showEditButton","hidden","setIsTruncated","setCustomAnswers","setTitle","setSubTitle","ignoreMargin","finish","babyPageId","sizes","setSizes","isEditButtonHighlighted","setIsEditButtonHighlighted","highlightEditButtonInterval","setHighlightEditButtonInterval","modalEdit","setModalEdit","contentRef","useRef","firstViewOfBabyPageContent","contentMessage","setInterval","highlight","getSize","titleInitialSize","subTitleInitialSize","paddingTop","answerStyle","fontFamily","alignItems","milestoneIdCode","minusIlustration","fsAnswers","editContent","image_b64","whiteSpace","overflowWrap","onTruncate","truncated","paddingBottom","arrowPointAtCenter","isMobile","destroyTooltipOnHide","clearInterval","boxShadow","transition","EditBorderIllustration","setBorder","setIllustration","isTruncated","selectedPlus","setSelectedPlus","bFilter","setBFilter","borderCategories","from","Set","bordersFiltered","contentProps","showIcon","categoryName","getBorderCategories","image_url_thumbnail","is_plus","illustration","backgrounds","Fonts","fonts","setFonts","newFonts","createTextNode","head","FontSelect","setFont","setPlusOpen","selectedFont","currentFont","EditTextBackground","setTextAlign","setBackground","justLeft","justCenter","justRight","Layout1A","onClickPhoto","zIndex","SortableItem","SortableElement","photoIndex","SortableLayout","SortableContainer","Layout2A","onSortEnd","pressDelay","Layout2B","axis","col","Layout3A","setPlaceHolderB64","ArrayBuffer","base64String","buffer","binary","bytes","len","byteLength","fromCharCode","btoa","arrayBufferToBase64","warn","Layout3B","Layout3C","Layout3D","Layout4A","Layout4B","Layout4C","Layout4D","Layout4E","paddingRight","paddingLeft","Layout6A","Layout6B","PhotoGallery","renderLayout","layoutProps","left_ref","createRef","right_ref","div_ref","setMaxLabelLength","setLabelLeftLength","getBoundingClientRect","setLabelRightLength","browserWidth","labelLeft","labelRight","labelLeftPosition","labelRightPosition","htmlElementId","setSide","isPhotoOnly","photoOnlyLabelLeft","fontGeneral","wordBreak","photoOnlyLabelRight","ImageEditModal","roundCropper","modalProps","roundClasses","wrapClassName","setCropperRef","minCropBoxWidth","setData","onCropComplete","getData","getImageData","cropend","setCropBoxData","getCropBoxData","onChangePhoto","BleedModal","BPcreated","bleedExample","fontWeight","useFetchPhotos","setError","list","setList","hasMore","setHasMore","babyPhotos","prev","CameraIcon","cameraInputRef","onSelectPhoto","setTriggerPhotoUpdate","isProfile","setBabyPhotoModal","setAddPhoto","userId","setUserId","loadingFace","setLoadingFace","isMount","isMountRef","IsMounted","facePhotos","setFacePhotos","nextCursor","setNextCursor","setPage","observer","lastPhotoRef","node","disconnect","IntersectionObserver","entries","isIntersecting","observe","getFacebookPhotos","firstUserId","photosResponse","paging","cursors","curr","checkFacebookLogin","timeoutHandler","titleMarginClass","uploadButtons","click","Finish","ageWeeks","updateBPStep","photosRightSide","layoutRightSide","imgLoading","setImgLoading","modalOpen","labelStatePositionLeft","setPhotoOnlyLabelLeft","labelStatePositionRight","setPhotoOnlyLabelRight","label_left_text","setLabelLeft","label_right_text","setLabelRight","setFontGeneral","disabledLeft","setDisabledLeft","disabledRight","setDisabledRight","maxLabelLength","labelRightLength","labelLeftLength","bleedModalVisible","setBleedModalVisible","sort","oldIndex","newIndex","onSelectImage","onSelectImageURL","imageUrl","onFinishCrop","font_id","labelButtons","labelToSave","labelTopLeft","labelTopCenter","labelTopRight","labelBottomLeft","labelBottomCenter","labelBottomRight","photoProps","label_left_position","photoRightProps","label_right_position","marginBottomClass","difference","leftLabelButtons","rightLabelButtons","onKeyDown","keyCode","button","POSITIVE_INVISIBLE_ANSWERS","NEGATIVE_ANSWERS","replacePronouns","newStringValue","genderIsMale","babyName","genderProunoun","possessiveProunoun","reflexivePronoun","accusativePronoun","contractionPronoun","$1","$2","exportAnswer","exportString","exportSingleAnswer","exportMultipleAnswers","toLocaleLowerCase","finalAnswers","multipleAnswers","question_export","answer_string","joinedArray","Question","changeAnswer","qIndex","uniqueAnswers","newChecked","otherAnswer","isValid","date_for_title","dateAnswer","QuestionHeight","initialHeight","initialWeight","setEntry","weightValue","valueLbs","valueOz","concatenatedHeightAnswer","concatenatedWeightAnswer","concatenatedWeightAnswerOZ","concatenatedWeightAnswerBoth","Questions","heightQuestions","nextStep","setQIndex","hasQuestions","addQuestion","showHeight","setShowHeight","isPregnancyMilestone","SelectPhotos","modalVisible","setModalVisible","onPhotoClick","delay","freeUserModal","setFreeUserModal","loaded","setLoaded","saveStep","setSaveStep","plusOpen","isSelectedPlus","saveWithoutPlus","setSaveWithoutPlus","isFutureDate","setIsFutureDate","entry_date","saveGrowthChartEntry","isMoment","entryToSave","checkIfEntryExist","babyBirth","growthEntry","child_id","searchEntryHeight","searchEntryWeight","saveBabyPage","original_title","background_color","layout_right","labelUrlPhoto","label_url","label_url_file","labelPositionLeft","labelPositionRight","allPhotos","hasMissing","isIosWeightAnswer","separateQuestions","completedAnswers","filteredAnswers","bp","font_alignment","somethingChanged","milestone_date_as_first_line","cleanPhotos","cleanPhotosRight","setPhotosToBeSaved","holiday","searchMilestones","holiday_milestones","isHoliday","isFirstEvent","isPregnancy","exactMilestone","first_event_milestones","pregnancy_milestones","babyID","exactBaby","questionsRes","questionsFixed","matchedAnswerQuestion","milestoneBaby","searchMilestone","initialTitle","isBirth","ordinal","firstHeight","firstWeight","lbs","preparedAnswers","firstAnswer","concat","secondAnswer","thirdAnswer","fourthAnswer","today","subtract","pregnancy_weeks","responsesImageLeft","responsesImageRight","forceRecrop","old","sendToUpgradeToPlus","confirmSaveFeature","freeBorderSelected","freeFontSelected","isFreeLayout","saveFreeFeatures","cleanedQuestions","cleanQuestions","date_required","changedAnswers","newAnswers","changedAnswerIndex","changedAnswer","small","changedHeight","unshift","setCustomAnswersHelper","orderedAnswers","setSortedAnswersHelper","addCustomAnswerHelper","repair","totalWeight","growthAnswer","babyNameIs","exportGrowthAnswer","firstEventDate","photosTobeSaved","triggerPhotoUpdate","setDisabled","hasMissingImages","photosUploaded","uploadPhotosToS3","cPhotos","photoGrid","html2canvas","scale","imageCPhoto","photosRightToS3","photosRightToBeSaved","high_res","uploadThumbnailsAndSaveBP","cContent","cAnswers","borderWithBase64","illustrationWithBase64","answersElement","imageCContent","photosToS3","babyPageToSave","photosLeftToBeSaved","font_size","baby_parent_id","photosToS3WithThumbnails","scrollTo","overflow","renderPhotos","renderQuestions","renderBorder","renderTextBG","renderFinish","renderPhotosRightSide","renderStep","isPhotoOnlyEdit","currentStep","getTextMessageByStep","babyPageObject","ModalCoverPlus","bookId","showConfirm","setShowConfirm","leftPage","rightPage","currentIndex","setCurrentIndex","pagesLimit","useOldBabypages","loadedRight","setLoadedRight","gotToEnd","setGotToEnd","onLoad","isPlusUser","pagesWithError","setPagesWithError","bookLoading","setBookLoading","bookModal","setBookModal","bpsCorruptedModal","setBpsCorruptedModal","completeBook","setCompleteBook","editPurchased","setEditPurchased","checkedBook","setCheckedBook","bookBD","addToCart","stripeBooksProduct","sp","caption","stripeProductSelected","extraPage","skus","babypages_ids","inventory","pageType","object","extra_pages","total_with_pages","selectedOptions","iosHidden","over_page_limit","extra_pages_qty","book_type","totalWithoutPages","btn","close","inspectBabypages","addingToCart","res","was_purchased","is_cover_plus","newStoreWithoutDeletedBook","pointerEvents","stopPropagation","BookList","FloatButton","hasHeader","headerImageUrl","setHeaderImageUrl","stripeBookTypes","setStripeBookTypes","showUserBooks","setShowUserBooks","pages","filteredBooks","setFilteredBooks","header_image_books","counts","new","showCreateTab","backgroundImage","tabBarGutter","flexDirection","marginBlockEnd","BookCover","bookText","selectedCover","selectedBabypages","startResizingAt","initialSizeTitle","initialSizeSubtitle","newTitleFontSize","resizeFont","newSubtitleFontSize","initialFontSize","textLenght","BookFinalPreview","ImageProgress","onError","CoverPreview","setSelectedCover","setSomethingChange","CoverList","EditTextFont","setBookText","ArrowNext","EditText","coverProps","responsiveButtonBarClass","BabyPageOrderable","SortSelectedBabypages","setValidate1stReverse","sortBabypages","OrderBabypages","setSelectedBabypages","validate1stReverse","sortedBabypages","SortableList","items","titleA","titleB","milestoneDateA","milestoneDateB","valueOf","createdDateA","BabyPageItem","cursorClass","ChildBabypages","isFirstRun","arr","SaveBookTooltipIcon","SelectBabypages","filteredBabies","babypageList","allSelect","setAllSelect","selectAll100","selected100Babypages","somethingChange","setUseOldBabypages","bpId","extraRegular","title_styles","indexFirstRegular","fontFamilyWithoutExtraRegular","allCovers","sortedArray","showChangeConfirm","selectCover","selectBabypages","orderBabypages","editText","bookFinal","saveBook","Cover","coverWithBase64","coverImage","photoToS3","bookToSave","subtitle_styles","BabyPrint","itemIndex","setStore","updateStore","onRemoveItem","EyeOpen","Thrash","Book","onChangeItem","bookPreviewModal","setBookPreviewModal","totalExtraPagesCost","setTotalExtraPagesCost","totalWithExtraPages","setTotalWithExtraPages","totalWithoutExtraPages","totalExtraPages","calculateTotalCost","cartDividerStyle","PlusIcon","GiftCard","messageLength","setMessageLength","giftcard","prefix","onBlur","Rattle","xmlnsXlink","xlinkHref","mask","Subscription","onChangeUser","cartSummaryMarginClasses","giftCard","subTotal","clonedStore","userStore","filteredStored","trialUsed","rootUrl","PaypalButton","buttonId","registerBeginPurchaseEvent","createPurchaseSaga","checkCoupon","checkPaypalTransaction","getShippingMethods","purchase","cardInfo","number","cardNumber","exp_month","cardMonth","exp_year","cardYear","cvc","cardCVV","cardName","customerId","card_token","stripe_token","coupon","country","marginClass","bookTitle","onPreviewAndTrack","MessageTip","newCard","getDiscountForSpecificProduct","discount","percent_off","amount_off","currentMonth","month","currentYear","year","disableButton","setDisableButton","bookYearSub","setBookYearSub","selectedCard","billingCountry","shippingCountry","sameAsBilling","couponText","setCouponText","setCoupon","useBalance","setUseBalance","shippingOptions","setShippingOptions","selectedShippingOption","setSelectedShippingOption","updateDisscount","setUpdateDisscount","selectedCountry","setSelectedCountry","selectedShippingCountry","setSelectedShippingCountry","countryOptions","disclaimerCheck","setDisclaimerCheck","showTip","setShowTip","showBooksModal","setShowBooksModal","showBabyListModal","setShowBabyListModal","showAddressValidation","setShowAddressValidation","disccountRef","lastIndexOfSubscriptions","subscriptions","isTrialing","iap_subscriptions","is_trial_period","presentYear","expireYears","billingFirstName","newForm","billingLastName","billingEmail","shippingFirstName","shippingLastName","shippingEmail","itemInvalid","visibleShippingOptions","v","validateYearBookSub","bookOption","applyCoupon","couponApplied","found","couponSubscription","applies_to","stripeID","couponGiftCard","couponBook","setPaymentTime","cards","sources","shippingObj","s","specificDiscount","balance","bp_balance","amountBalanceToUse","toUse","amountToPay","totalToBeCharged","disableShipping","createPurchase","last_pay_pal_transaction_started_at","utc","cardNumberInvalid","billingStreet","billingState","billingZipcode","shippingStreet","shippingState","shippingZipcode","purchaseValid","shippingValue","billing_first","billing_last","billing_email","billing_address","billing_city","billingCity","billing_country","billing_state","billing_zip","shipping_first","shipping_last","shipping_email","shipping_address","shipping_city","shippingCity","shipping_country","shipping_state","shipping_zip","disable_ship","shipping_value","use_balance","tax","one_year_subscription_book","shipping_phone_number","billingPhoneNumber","billing_phone_number","ship_method","alexanders_key","AlexandersShippingMethods","FEDEXONERATEENVELOPE","getPurchase","cartItemsHtml","markup","extra_pages_price","extra_pages_name","selectedBook","leftOverDiscount","leftOverBalance","addressToUse","street","city","zipcode","isAddressEmpty","brand","last4","isCreditCard","cardCVVInvalid","selectedMonth","selectedYear","selectedCountryValue","defaultChecked","shippingOption","icon_warning","Title","level","Text","marginRight","gap","OrderConfirmationPage","queryParams","tx","BabyAge","sectionTitle","baby_age","weeks","years","months","strBirthDate","AddBabypage","setCount","reversedBabypages","afterChange","isInteger","EntryModal","babyname","isEntryValid","opened","onSave","onChangeDate","onChangeEntry","popupStyle","formatDate","dateString","customFontColor","customChartColor","customFont","customFromTo","defaultType","onChangeType","tabSelected","setTabSelected","chartLoading","setChartLoading","Inches","Pounds","heightChart","weightChart","createOrEditEntry","isHeight","_index","entryDateFormated","w","newEntry","renderChart","labels","datasets","lineTension","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","onElementsClick","responsive","legend","scales","yAxes","ticks","xAxes","tooltips","callbacks","tooltipItem","chartData","dataset","pound","yLabel","remaining","pounds","minUnitOunces","abs","trunc","remainingOuncesByPound","spinning","headStyle","animated","RecentMilestones","limited_milestones","marginButton","closeAndShowSecondModal","guestUserImg","editPhoto","setEditPhoto","addPhoto","babyPhotoModal","babyPhotoCarouselRef","finalPhotoModal","setFinalPhotoModal","goTo","uploadPhoto","dataUrlToFileUsingFetch","mimeType","fetch","arrayBuffer","babyListHtml","capture","setOpen","overflowY","isOpen","useManageModal","showModalExtraInfo","onModalExtraInfo","showModalUpdate","setShowModalUpdate","showModalInfo","setShowModalInfo","babyDueDate","hasBorn","cardDividerClass","borderBottom","FormPage","submitForm","invalid","options_id","form_id","TextArea","minRows","maxRows","qm","im","rows","setImage","babyGrowth","g","babyGrowthCharts","chart","from_date","to_date","fontColors","chartColors","lastBaby","setLastBaby","setGrowthChart","gc","fontcolor","formattedDates","saveGrowthChart","customTitle","range","tipFormatter","Facebook","strokeMiterlimit","textAnchor","Instagram","Pinterest","Twitter","responsiveClass","CryBaby","MyOrdersPage","alexandersOrders","pageData","setPageData","getDistinctBooks","booksOrder","Map","has","set","alexandersOrderId","alexanders_order_id","books_order","distinctBooksOrder","currentStatus","current_status","finished","orderId","order_id","shipMethod","user_id","cost","createdAt","alexanderOrder","AlexandersContactSupportModal","alexandersOrder","addCard","phone","phoneNumber","text_message","card_id","MyOrdersDetailPage","setAlexandersOrder","showSupportModal","setShowSupportModal","shippingAddress","trackingNumber","tracking_number","statuses","orderedStatus","inProgressStatus","shippedStatus","shippingMethodToShow","address1","isLoading","setIsLoading","URLSearchParams","GuestUserForm","setGuestUserData","guestUserData","familyRelationshipNames","bottom","getFamilyRelationships","setFamilyRelationshipNames","dispatchSelectGuestUser","setGuestUsers","handleDelete","handleUpdate","columns","itemLayout","renderItem","actions","Meta","selectedOption","setSelectedOption","obj","basicInfo","imgMobile","newMomImgMobile","newMomImg","showerImgMobile","showerImg","holidayImgMobile","holidayImg","cardsImg","cardsImgMobile","perk3","perk4","classNamePrefix","isSearchable","ChangePassword","finishSuccess","cancel","currentPassword","setCurrentPassword","setPassword","changePassword","actualPass","newPass","current_password","currError","passError","RedeemCode","setCode","redeemCode","updateDefaultCard","stripe_subscriptions","cardValidation","cardValidator","cardValidationCard","lastPages","purchases","newPurchases","orderDate","created","orderTotal","amount","paymentMethod","logobp","plusThumb","price_pages","extra_page_name","charges","charge","iap","transaction_id","purchase_date","newLastPages","has_more","starting_after","PinkCircle","showCards","setShowCards","setAddCard","modalPassword","setModalPassword","modalCode","setModalCode","setSettings","oldStripeId","setOldStripeId","setCard","changeDefaultCard","saveSettings","desactivateAccount","changeUserLevel","unsubscribe","cardToken","deleteCard","getNameSubscription","renderMember","in_app_purchase","expires_date","current_period_end","cancelation_date","renderProfile","renderGift","renderDeactivate","renderChangeUserLevel","renderCards","cardList","defaultIndex","dynamic_last4","locationParsed","redirectManage","ScrollToTop","visitedUrl","pageView","snaptr","page_path","page_title","initMarketingTools","GetQueryParams","saveDeepLinkInfo","saveDeepLinkInfoToStore","isLogged","isLoggedHasBabyNotLevel3","isLoggedNotLevel3","redirectOn404","redirectOnAccess","DashboardPage","PayPalOrderConfirmationPage","StepTwo","MilestonesPage","BabyPagesPage","SaveBabyPagesPage","AfterSavePage","BooksPage","SaveBooksPage","GrowthChartPage","SaveGrowthChartPage","CartPage","CheckoutPage","ProfilePage","StorePage","GiftCardsPage","PurchaseHistoryPage","CreateGuestUserPage","GuestUserPage","UpdateGuestUserPage","SaveChildPage","ManageChildrenPage","Maintenance","SignInPage","AdminRoutes","platform","maxTouchPoints","appPopup","Boolean","hostname","autoConfig","debug","firebaseConfig","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","ReactDOM","serviceWorker","registration","unregister"],"mappings":"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B,GACtCuqB,SAAYvqB,EAAMknB,YACdlnB,EAAMknB,YAAYmC,OAClB,EACJ2lB,UACY,IAAV58C,GACM48C,EACAhqB,EAASiqB,eACPjqB,EAASiqB,eACT+C,EACEA,EAAmB95D,OAAS,GAC5Bw2C,cAENz2C,MAGVq2C,aAAc2T,GACVjd,EAAS0hB,gBAAgBjvD,KACvB,SAACuoB,EAA0B5N,GAA3B,MAA8C,CAC5C+2B,KAAMS,GACJ5pB,EACA0lB,GACEV,EAAS2hB,gBACTv0C,IAGJzN,KAAMstD,EAAoB7/C,EAAQ,GAAGuiD,SACrCztB,YAAalnB,EAAMknB,YACnBkC,OAAQS,GAAgB7pB,GACxB2sB,cAAe7C,GAAuB9pB,GACtCuqB,SAAYvqB,EAAMknB,YACdlnB,EAAMknB,YAAYmC,OAClB,EACJ2lB,UACY,IAAV58C,GACM48C,EACAhqB,EAASiqB,eACPjqB,EAASiqB,eACTgD,EACEA,EAAoB/5D,OAAS,GAC7Bw2C,cAENz2C,MAGV,KACJqtC,OAAQN,EAASM,OACjBwpB,aAAc9pB,EAAS2hB,gBACvB12B,SACAu+B,SAAYgF,GACRxuB,EAASwpB,SACT12D,EAAaH,GACjB8sB,UAAW3sB,EAAay9D,eACxB5/D,QAAS,MACT+mB,UAAWs1C,EAAmB,GAAGt1C,UACjC6xB,kBAAmByjB,EAAmB,GAAGt1C,UACzCyqC,gBAAiBniB,EAASmiB,gBACtBniB,EAASmiB,gBACT,KACJE,iBAAkBriB,EAASqiB,iBACvBriB,EAASqiB,iBACT,KACJ6B,oBACElkB,EAASmiB,iBACTniB,EAASkkB,oBACLlkB,EAASkkB,oBACTlkB,EAASmiB,gBACP,cACA,WACRiC,qBACEpkB,EAASqiB,kBACTriB,EAASokB,qBACLpkB,EAASokB,qBACTpkB,EAASqiB,iBACP,cACA,WACRuH,eAAgBrZ,IAGlBmY,EAAY,gBACZnwD,GAAesJ,IACb+9B,GACAwwB,GACA,SAACt6D,EAAanD,GACZ+Q,GAAW,GACXglD,EAAY,MAER5yD,EACF,KAAMA,MAAM,CACV4E,MAAO,QACP6R,QAASzW,KAKbyG,GA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EF,OAAO,kBAAC,GAA2B98B,KAClC,CACDqsB,EACAmU,GACAiD,GACAC,GACAxjD,EACAC,EACAuB,EAAKuL,WACL02C,GACA58C,GACAu1C,GACAiE,GACAhE,GACAsE,GACArE,GACAR,GACA/2B,EACA2+B,GACAC,KAIIsZ,GAAelsD,uBAAY,WAC/B,IAAM+O,EAAQ,CACZphB,KAAMO,EACNkhD,eAAgBhU,EAASgU,eACzBD,mBAAoB/T,EAAS+T,mBAC7BE,qBAAsBjU,EAASiU,qBAC/Bha,UAAWv/B,GACXu1C,YACAkE,eACAL,KAAM9T,EAAS8T,KACf1qC,UAAW42B,EAAS52B,UACpB0vC,WACAK,gBACAC,iBACA7xC,SAAUlS,EAAKuL,YAAkC,IAApBvL,EAAKuL,WAClC4rB,SAAU,kBAAMusB,IAAY,IAC5BzB,eACA/C,kBACAL,gBACAhE,oBACAsE,oBACArE,mBACAR,gBACA8E,YACAC,eACAN,SAAUpU,EAASuJ,kBACnB8G,cAAez3B,EACf2+B,gBACAC,mBACAjH,iBACAD,oBACAE,2BACAC,yBAEF,OAAO,kBAAC,GAAuB98B,KAC9B,CACD7gB,EACAktC,EACAmU,GACA2E,GACAK,GACAC,GACA/jD,EAAKuL,WACL02C,GACA58C,GACAu1C,GACAiE,GACAhE,GACAsE,GACArE,GACAR,GACA/2B,IAGIm4C,GAAensD,uBAAY,WAC/B,IAAM+O,EAAQ,CACZsmB,UAAWv/B,GACXu1C,YACA6D,KAAM9T,EAAS8T,KACf1qC,UAAW42B,EAAS52B,UACpB2qC,mBAAoB/T,EAAS+T,mBAC7BC,eAAgBhU,EAASgU,eACzBC,qBAAsBjU,EAASiU,qBAC/BE,eACA5R,aACAztC,OAAQkrC,EAASlrC,OACjBwrC,OAAQN,EAASM,OACjBuU,WAAY7U,EAASrtC,GACrB2kD,eACA/C,kBACAhhD,UACA2gD,gBACAhE,oBACAsE,oBACArE,mBACAR,gBACA8E,YACAC,eACA8M,YACApN,SAAUpU,EAASuJ,kBACnB8G,cAAez3B,EACf6oC,aAAcrX,EACdsX,gBAAiB1hB,EAAS0hB,gBAC1BC,gBAAi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,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,iD,oBCA3CD,EAAOC,QAAU,IAA0B,iD,oBCA3CD,EAAOC,QAAU,IAA0B,oD,oBCA3CD,EAAOC,QAAU,IAA0B,qD,oBCA3CD,EAAOC,QAAU,IAA0B,sD,oBCA3CD,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,mC,kBCA3CD,EAAOC,QAAU,0hB,kBCAjBD,EAAOC,QAAU,klB,kBCAjBD,EAAOC,QAAU,slB,kBCAjBD,EAAOC,QAAU,klB,kBCAjBD,EAAOC,QAAU,8lB,kBCAjBD,EAAOC,QAAU,smB,kBCAjBD,EAAOC,QAAU,8S,kBCAjBD,EAAOC,QAAU,0S,kBCAjBD,EAAOC,QAAU,sS,oBCAjBD,EAAOC,QAAU,IAA0B,2C,kBCA3CD,EAAOC,QAAU,kO,kBCAjBD,EAAOC,QAAU,kO,kBCAjBD,EAAOC,QAAU,kO,kBCAjBD,EAAOC,QAAU,kO,kBCAjBD,EAAOC,QAAU,kO,kBCAjBD,EAAOC,QAAU,8N,kBCAjBD,EAAOC,QAAU,0xE,oBCAjBD,EAAOC,QAAU,IAA0B,qC,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,oD,oBCA3CD,EAAOC,QAAU,IAA0B,iD,oBCA3CD,EAAOC,QAAU,IAA0B,wD,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,qD,oBCA3CD,EAAOC,QAAU,IAA0B,2C,ovCCA3CD,EAAOC,QAAU,IAA0B,wC","file":"static/js/main.32862621.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo_2.27fb4463.png\";","/**\n * This interfaces will be exported as an barrel\n * You can import any interface just putting\n * import { Interface } from '~/interfaces/' (~ will be the relative route)\n * Interfaces helps us to use Typescript power\n */\nexport * from './admin';\nexport * from './baby';\nexport * from './babyPage';\nexport * from './background';\nexport * from './book';\nexport * from './bpHelper';\nexport * from './cart';\nexport * from './checkout';\nexport * from './customer';\nexport * from './dashboard';\nexport * from './entry';\nexport * from './growth';\nexport * from './growthChart';\nexport * from './http';\nexport * from './milestone';\nexport * from './product';\nexport * from './purchase';\nexport * from './question';\nexport * from './saveBabyPage';\nexport * from './saveBook';\nexport * from './stripeProduct';\nexport * from './user';\nexport * from \"./shippingOption\";\nexport * from \"./relationshipInterface\";\nexport * from \"./maintenance\"\n","module.exports = __webpack_public_path__ + \"static/media/BigCaslon.ec50ac41.ttf\";","module.exports = __webpack_public_path__ + \"static/media/BigCaslon.eb2c1579.otf\";","module.exports = __webpack_public_path__ + \"static/media/EBGaramond-Regular.d6989885.ttf\";","module.exports = __webpack_public_path__ + \"static/media/JosefinSans-Regular.aff001b4.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Montserrat-Light.409c7f79.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Montserrat-Regular.27e50ffd.otf\";","module.exports = __webpack_public_path__ + \"static/media/NunitoSans-Regular.4c8f4470.ttf\";","module.exports = __webpack_public_path__ + \"static/media/LibreCaslonDisplay-Regular.086c693f.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Roboto-Italic.a720f17a.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Roboto-Light.88823c20.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Roboto-LightItalic.a3ce4440.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Roboto-Medium.58aef543.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Roboto-MediumItalic.cf23e1bb.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Roboto-Regular.11eabca2.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Montserrat-Bold.963805f9.ttf\";","import info from '../package.json';\n\nexport const WEB_VERSION = info.version;\nexport const PRODUCTION = true;\nexport const BASE_URL = \"https://api.babypage.com/\"; // NEW PROD\nexport const PAGE_URL = \"https://babypage.com/\";\nexport const PAYPAL_URL = 'https://www.paypal.com/myaccount/autopay/connect'; // Used for paypal manage\nexport const clientId = '00c4123c-8b22-31ee-abcf-6a41c61ae8ae'; // Client ID\nexport const clientSecret = 'dc923f0e9ea876e6f6888a3ba144e5fe13a8260a';\nexport const apiVersion = \"application/x.babypage.v1.0.0+json\"; // API Version\nexport const storageKey = '@babypageStorage'; // This is the key on localStorage\nexport const highRes = { width: 3000, height: 3000 }; // HighResolution to Save\nexport const highResContent = { width: 2000, height: 2000 }; // HighResolution to Save\nexport const STRIPE_KEY = 'pk_live_raQpvv6GuOkIpNKh0t6GsySl'; // Paypal API Key\nexport const FACEBOOK_PIXEL = {\n name: 'BabyPage',\n id: '1930345967189621',\n};\nexport const AMPLITUDE = {\n apiKey: '32cb1860fd904a71902dc3d1157fa6a1',\n};\nexport const FIREBASE_CONFIG = {\n apiKey: \"AIzaSyCgEY8Cib5Lv4KTZVTFWqrMjcFgznyPD4I\",\n authDomain: \"babypageprod.firebaseapp.com\",\n databaseURL: \"https://babypageprod.firebaseio.com\",\n projectId: \"babypageprod\",\n storageBucket: \"babypageprod.appspot.com\",\n messagingSenderId: \"89420343458\",\n appId: \"1:89420343458:web:e382b5ca1dce92d24b4ffb\",\n measurementId: \"G-1ZMRZEGL71\"\n};\nexport const PAYPAL = {\n apiKey:\n 'AcKhkyg_cEypwkcArJS2I-u1PMJ6K31T3TqCgflExNxsUPXOb0LjJVndfQBTOHUZaXPWX6VxhT00Udw5',\n merchantId: 'B3AQ9R3QGLSW2',\n mode: 'production',\n commit: true,\n locale: 'en_US',\n style: {\n label: 'checkout', // checkout | credit | pay | buynow | generic\n size: 'responsive', // small | medium | large | responsive\n shape: 'rect', // pill | rect\n color: 'blue', // gold | blue | silver | black\n tagline: false,\n },\n buttons: {\n monthly: 'N9A29G9RF552A',\n three_month: 'A2UE2VT95KKW2',\n one_year: 'N5P29HNJPZXUQ',\n },\n};\n","// Interface for base action\nexport interface BaseAction {\n type: string;\n payload?: any;\n}\n\n// Actions\nexport const CUSTOMER_CHANGE = \"customer/change\";\nexport const USER_CHANGE = \"user/change\";\nexport const USER_LOGOUT = \"user/logout\";\nexport const ADMIN_CHANGE = \"admin/change\";\nexport const ADMIN_LOGOUT = \"admin/logout\";\nexport const SUM_CHILD_COUNT = \"user/sumChildCount\";\nexport const GET_BABIES = \"babies/get\";\nexport const SELECT_BABY = \"babies/select\";\nexport const SELECT_LAST_BABY = \"babies/selectLast\";\nexport const GET_PRODUCTS = \"products/get\";\nexport const GET_STRIPE_PRODUCTS = \"stripe/getProducts\";\nexport const GET_STRIPE_PLANS = \"stripe/getPlans\";\nexport const GET_DASHBOARD = \"dashboard/fetch\";\nexport const GET_MILESTONES = \"milestones/getMilestones\";\nexport const GET_BORDERS = \"bpHelper/getBorders\";\nexport const GET_ILLUSTRATIONS = \"bpHelper/getIllustrations\";\nexport const GET_DRAFT_BABYPAGE = \"bpHelper/saveDraftBabyPage\";\nexport const GET_BOOKS = \"books/getBooks\";\nexport const GET_COVERS = \"books/getCovers\";\nexport const SET_BOOK_TYPE = \"books/setBookType\";\nexport const GET_GROWTH_CHART = \"growthChart/get\";\nexport const GET_PHOTOS = \"photos/get\";\nexport const SELECT_GUEST_USER = \"guest-users/select\";\nexport const SAVE_DEEP_LINK_INFO = \"guest-users/saveDeepLinkInfo\";\nexport const CLEAR_DEEP_LINK_INFO = \"guest-users/clearDeepLinkInfo\";\nexport const CHANGE_MAINTENANCE = \"maintenance/change\"\n\n/**\n * With duck pattern, we will have function who pass this actions\n * as argument, so we will use this actions JUST in ducks!\n */\n","import { Admin } from '../../interfaces';\nimport { ADMIN_CHANGE, ADMIN_LOGOUT, BaseAction } from '../actionTypes';\n\nconst initialState: Admin = {};\n\nexport const admin = (\n state: Admin = initialState,\n action: BaseAction\n): Admin => {\n switch (action.type) {\n case ADMIN_CHANGE:\n return { ...state, ...action.payload };\n case ADMIN_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(admin);\n\nexport const changeAdmin = (payload: any) => ({\n payload,\n type: ADMIN_CHANGE,\n});\nObject.freeze(changeAdmin);\n\nexport const logoutAdmin = () => ({\n type: ADMIN_LOGOUT,\n});\n\nObject.freeze(logoutAdmin);\n\nexport default admin;\n","import { isEqual } from 'lodash';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { Baby, SimpleBaby } from '../../interfaces';\nimport {\n BaseAction,\n GET_BABIES,\n SELECT_BABY,\n SELECT_LAST_BABY,\n USER_LOGOUT\n} from '../actionTypes';\n\nexport interface BabyState {\n babies: Baby[];\n simpleBabies: SimpleBaby[];\n babySelected?: Baby;\n babySelectedIndex?: number;\n}\n\nconst initialState: BabyState = {\n babies: [],\n simpleBabies: []\n};\n\nexport const baby = (\n state: BabyState = initialState,\n action: BaseAction\n): BabyState => {\n let babySelectedIndex = state.babySelectedIndex;\n\n switch (action.type) {\n case GET_BABIES:\n return {\n ...state,\n babies: [...action.payload],\n simpleBabies: action.payload.map((e: Baby) => ({\n id: e.id,\n baby_first_name: e.baby_first_name,\n baby_last_name: e.baby_last_name\n }))\n };\n case SELECT_BABY:\n babySelectedIndex = action.payload as number;\n if (\n state.babySelected &&\n isEqual(state.babies[babySelectedIndex], state.babySelected)\n ) {\n return state;\n }\n\n return {\n ...state,\n babySelected:\n babySelectedIndex >= 0\n ? cloneDeep(state.babies[babySelectedIndex])\n : undefined,\n babySelectedIndex\n };\n case SELECT_LAST_BABY:\n if (state.babies.length === 0) {\n return state;\n }\n babySelectedIndex = state.babies.length - 1;\n\n return {\n ...state,\n babySelected:\n babySelectedIndex >= 0\n ? cloneDeep(state.babies[babySelectedIndex])\n : undefined,\n babySelectedIndex\n };\n case USER_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(baby);\n\nconst getBabies = (payload: Baby[]) => ({\n payload,\n type: GET_BABIES\n});\nObject.freeze(getBabies);\n\nconst selectBaby = (payload?: number) => ({\n payload,\n type: SELECT_BABY\n});\nObject.freeze(selectBaby);\n\nconst selectLastBaby = () => ({\n type: SELECT_LAST_BABY\n});\nObject.freeze(selectLastBaby);\n\nexport { getBabies, selectBaby, selectLastBaby };\nexport default baby;\n","import { Book, Cover } from \"../../interfaces\";\nimport {\n BaseAction,\n GET_BOOKS,\n GET_COVERS,\n USER_LOGOUT,\n SET_BOOK_TYPE,\n} from \"../actionTypes\";\n\nexport type BookState = {\n books: Book[];\n loading: boolean;\n covers: Cover[];\n bookType: string;\n};\n\nconst initialState: BookState = {\n books: [],\n loading: true,\n covers: [],\n bookType: \"\",\n};\n\nexport const books = (\n state: BookState = initialState,\n action: BaseAction\n): BookState => {\n switch (action.type) {\n case GET_BOOKS:\n return { ...state, books: [...action.payload], loading: false };\n case GET_COVERS:\n return { ...state, covers: [...action.payload] };\n case USER_LOGOUT:\n return initialState;\n case SET_BOOK_TYPE:\n return { ...state, bookType: action.payload };\n default:\n return state;\n }\n};\nObject.freeze(books);\n\nconst getBooks = (payload: Book[]) => ({\n payload,\n type: GET_BOOKS,\n});\nObject.freeze(getBooks);\n\nconst getCovers = (payload: Cover[]) => ({\n payload,\n type: GET_COVERS,\n});\n\nObject.freeze(getCovers);\n\nconst setBookType = (payload: string) => ({\n payload,\n type: SET_BOOK_TYPE,\n});\n\nObject.freeze(setBookType);\n\nexport { getBooks, getCovers, setBookType };\nexport default books;\n","import {\n Border,\n Illustration,\n SaveBabyPage,\n initialBabyPage,\n} from \"../../interfaces\";\nimport {\n BaseAction,\n GET_BORDERS,\n GET_ILLUSTRATIONS,\n GET_DRAFT_BABYPAGE,\n} from \"../actionTypes\";\n\nexport interface BPHelperState {\n borders: Border[];\n illustrations: Illustration[];\n draftBabyPage: SaveBabyPage;\n milestoneId: string;\n}\n\nconst initialState: BPHelperState = {\n borders: [],\n illustrations: [],\n draftBabyPage: initialBabyPage,\n milestoneId: \"\",\n};\n\nexport const bpHelper = (\n state: BPHelperState = initialState,\n action: BaseAction\n): BPHelperState => {\n switch (action.type) {\n case GET_BORDERS:\n return { ...state, borders: [...action.payload] };\n case GET_ILLUSTRATIONS:\n return { ...state, illustrations: [...action.payload] };\n case GET_DRAFT_BABYPAGE:\n return {\n ...state,\n draftBabyPage: { ...action.payload },\n milestoneId: action.payload.milestoneId,\n };\n default:\n return state;\n }\n};\nObject.freeze(bpHelper);\n\nconst getBorders = (payload: Border[]) => ({\n payload,\n type: GET_BORDERS,\n});\nObject.freeze(getBorders);\n\nconst getIllustrations = (payload: Illustration[]) => ({\n payload,\n type: GET_ILLUSTRATIONS,\n});\nObject.freeze(getIllustrations);\n\nconst saveDraftBabyPage = (payload: SaveBabyPage) => {\n return {\n payload,\n type: GET_DRAFT_BABYPAGE,\n };\n};\nObject.freeze(saveDraftBabyPage);\n\nexport { getBorders, getIllustrations, saveDraftBabyPage };\nexport default bpHelper;\n","import { Customer } from '../../interfaces';\nimport { BaseAction, CUSTOMER_CHANGE, USER_LOGOUT } from '../actionTypes';\n\nconst initialState: Customer = {};\n\nexport const customer = (\n state: Customer = initialState,\n action: BaseAction\n): Customer => {\n switch (action.type) {\n case CUSTOMER_CHANGE:\n return { ...state, ...action.payload };\n case USER_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(customer);\n\nexport const changeCustomer = (payload: any) => ({\n payload,\n type: CUSTOMER_CHANGE,\n});\nObject.freeze(changeCustomer);\n\nexport default customer;\n","import { BaseAction, GET_DASHBOARD, USER_LOGOUT } from '../actionTypes';\nimport { DashboardInfo } from '../../interfaces';\n\nexport type DashboardState = {\n dashboard: DashboardInfo[];\n loading: boolean;\n};\n\nconst initialState: DashboardState = {\n dashboard: [],\n loading: true\n};\n\nexport const dashboard = (\n state: DashboardState = initialState,\n action: BaseAction\n): DashboardState => {\n switch (action.type) {\n case GET_DASHBOARD:\n return { dashboard: [...action.payload], loading: false };\n case USER_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(dashboard);\n\nconst getDashboard = (payload: DashboardInfo[]) => ({\n payload,\n type: GET_DASHBOARD\n});\nObject.freeze(getDashboard);\n\nexport { getDashboard };\nexport default dashboard;\n","import { GrowthChartBaby } from '../../interfaces/growthChart';\nimport { BaseAction, GET_GROWTH_CHART, USER_LOGOUT } from '../actionTypes';\n\nexport type GrowthChartState = GrowthChartBaby[];\n\nconst initialState: GrowthChartState = [];\n\nexport const growthChart = (\n state: GrowthChartState = initialState,\n action: BaseAction\n): GrowthChartState => {\n switch (action.type) {\n case GET_GROWTH_CHART:\n return [...action.payload];\n case USER_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(growthChart);\n\nconst getGrowthChart = (payload: GrowthChartBaby[]) => ({\n payload,\n type: GET_GROWTH_CHART,\n});\nObject.freeze(getGrowthChart);\n\nexport { getGrowthChart };\nexport default growthChart;\n","import { BaseAction, GET_MILESTONES, USER_LOGOUT } from '../actionTypes';\nimport { MilestonesBaby } from '../../interfaces';\n\nexport type MilestoneState = {\n milestones: MilestonesBaby[];\n loading: boolean;\n};\n\nconst initialState: MilestoneState = {\n milestones: [],\n loading: true\n};\n\nexport const milestones = (\n state: MilestoneState = initialState,\n action: BaseAction\n): MilestoneState => {\n switch (action.type) {\n case GET_MILESTONES:\n return { milestones: [...action.payload], loading: false };\n case USER_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(milestones);\n\nconst getMilestones = (payload: MilestonesBaby[]) => ({\n payload,\n type: GET_MILESTONES\n});\nObject.freeze(getMilestones);\n\nexport { getMilestones };\nexport default milestones;\n","import { BaseAction, GET_PHOTOS, USER_LOGOUT } from \"../actionTypes\";\n\nexport interface Photo {\n baby_id: number;\n url: string;\n}\nexport type PhotoState = Photo[];\n\nconst initialState: PhotoState = [];\n\nexport const photos = (\n state: PhotoState = initialState,\n action: BaseAction\n): PhotoState => {\n switch (action.type) {\n case GET_PHOTOS:\n return [...action.payload];\n case USER_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(photos);\n\nconst getPhotos = (payload: PhotoState) => ({\n payload,\n type: GET_PHOTOS\n});\nObject.freeze(getPhotos);\n\nexport { getPhotos };\nexport default photos;\n","import { Product } from '../../interfaces';\nimport { BaseAction, GET_PRODUCTS, USER_LOGOUT } from '../actionTypes';\n\nexport interface ProductState {\n products: Product[];\n}\n\nconst initialState: ProductState = {\n products: []\n};\n\nexport const product = (\n state: ProductState = initialState,\n action: BaseAction\n): ProductState => {\n switch (action.type) {\n case GET_PRODUCTS:\n return { ...state, products: [...action.payload] };\n case USER_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(product);\n\nconst getProducts = (payload: Product[]) => ({\n payload,\n type: GET_PRODUCTS\n});\nObject.freeze(getProducts);\n\nexport { getProducts };\nexport default product;\n","import { StripeProduct } from '../../interfaces';\nimport { BaseAction, GET_STRIPE_PRODUCTS, USER_LOGOUT } from '../actionTypes';\n\nexport type StripeProductState = StripeProduct[];\n\nconst initialState: StripeProductState = [];\n\nexport const stripeProduct = (\n state: StripeProductState = initialState,\n action: BaseAction\n): StripeProductState => {\n switch (action.type) {\n case GET_STRIPE_PRODUCTS:\n return [...action.payload];\n case USER_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(stripeProduct);\n\nconst getStripeProducts = (payload: StripeProduct[]) => ({\n payload,\n type: GET_STRIPE_PRODUCTS,\n});\nObject.freeze(getStripeProducts);\n\nexport { getStripeProducts };\nexport default stripeProduct;\n","import { User } from '../../interfaces';\nimport {\n BaseAction,\n SUM_CHILD_COUNT,\n USER_CHANGE,\n USER_LOGOUT\n} from '../actionTypes';\ndeclare const FB: any;\n\nconst initialState: User = {};\n\nexport const user = (state: User = initialState, action: BaseAction): User => {\n switch (action.type) {\n case USER_CHANGE:\n return { ...state, ...action.payload };\n case SUM_CHILD_COUNT:\n return { ...state, babies_count: (state.babies_count || 0) + 1 };\n case USER_LOGOUT:\n return initialState;\n default:\n return state;\n }\n};\nObject.freeze(user);\n\nexport const changeUser = (payload: any) => ({\n payload,\n type: USER_CHANGE\n});\nObject.freeze(changeUser);\n\nexport const logoutUser = () => {\n try {\n FB.getLoginStatus((response: any) => {\n if (response.status === 'connected') {\n FB.logout();\n }\n });\n } catch (error) {}\n\n return {\n type: USER_LOGOUT\n };\n};\nObject.freeze(logoutUser);\n\nexport const sumChildCount = () => ({\n type: SUM_CHILD_COUNT\n});\nObject.freeze(sumChildCount);\n\nexport default user;\n","import {\n DeepLinkInterface,\n GuestUserInterface,\n} from \"../../interfaces/guestUser\";\nimport {\n BaseAction,\n CLEAR_DEEP_LINK_INFO,\n SAVE_DEEP_LINK_INFO,\n SELECT_GUEST_USER,\n} from \"../actionTypes\";\n\nexport interface GuestUsersState {\n selectedGuestUser: GuestUserInterface;\n deepLinkInfo: DeepLinkInterface;\n}\n\nexport const initialDeepLinkInfo = {\n invitation_code: \"\",\n users_exists: \"\",\n additional_data: {\n full_name: '',\n email: '',\n },\n};\n\nconst initialState: GuestUsersState = {\n selectedGuestUser: {\n fullName: \"\",\n email: \"\",\n permission: \"Read-Only\",\n family_relationship_id:\"\"\n },\n deepLinkInfo: initialDeepLinkInfo,\n};\n\nexport const guestUser = (\n state: GuestUsersState = initialState,\n action: BaseAction\n): GuestUsersState => {\n switch (action.type) {\n case SELECT_GUEST_USER:\n return {\n ...state,\n selectedGuestUser: action.payload,\n };\n case SAVE_DEEP_LINK_INFO:\n return {\n ...state,\n deepLinkInfo: action.payload,\n };\n case CLEAR_DEEP_LINK_INFO:\n return {\n ...state,\n deepLinkInfo: initialDeepLinkInfo,\n };\n default:\n return state;\n }\n};\nObject.freeze(guestUser);\n\nconst selectGuestUser = (payload: GuestUserInterface) => ({\n payload,\n type: SELECT_GUEST_USER,\n});\nObject.freeze(selectGuestUser);\n\nconst saveDeepLinkInfo = (payload: DeepLinkInterface) => ({\n payload,\n type: SAVE_DEEP_LINK_INFO,\n});\nObject.freeze(selectGuestUser);\n\nconst clearDeepLinkInfo = () => ({\n type: CLEAR_DEEP_LINK_INFO,\n});\nObject.freeze(clearDeepLinkInfo);\n\nexport { selectGuestUser, saveDeepLinkInfo, clearDeepLinkInfo };\nexport default guestUser;\n","import { Maintenance } from '../../interfaces';\nimport {CHANGE_MAINTENANCE} from '../actionTypes'\nimport { BaseAction } from '../actionTypes';\n\nconst initialState: Maintenance = {\n in_maintenance:false,\n body_message:\"\",\n};\n\nexport const maintenance = (\n state: Maintenance = initialState,\n action: BaseAction\n): Maintenance => {\n switch (action.type) {\n case CHANGE_MAINTENANCE:\n return { ...action.payload };\n default:\n return state;\n }\n};\nObject.freeze(maintenance);\n\nexport const changeMaintenance = (payload: any) => {\n return {\n payload,\n type: CHANGE_MAINTENANCE,\n}\n};\nObject.freeze(changeMaintenance);\n\nexport default maintenance;\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\nimport { persistReducer, persistStore } from 'redux-persist';\nimport storage from 'redux-persist/lib/storage';\nimport createSagaMiddleware from 'redux-saga';\nimport { storageKey } from '../env';\nimport {\n Admin as AdminState,\n Customer as CustomerState,\n User as UserState,\n Maintenance as MaintenanceState,\n} from '../interfaces';\nimport adminReducer from './ducks/admin';\nimport babyReducer, { BabyState } from './ducks/baby';\nimport bookReducer, { BookState } from './ducks/books';\nimport bpHelperReducer, { BPHelperState } from './ducks/bpHelper';\nimport customerReducer from './ducks/customer';\nimport dashboardReducer, { DashboardState } from './ducks/dashboard';\nimport growthChartReducer, { GrowthChartState } from './ducks/growthChart';\nimport milestoneReducer, { MilestoneState } from './ducks/milestones';\nimport photosReducer, { PhotoState } from './ducks/photos';\nimport productReducer, { ProductState } from './ducks/product';\nimport stripeProductReducer, {\n StripeProductState,\n} from './ducks/stripeProduct';\nimport userReducer from './ducks/user';\nimport guestUsersReducer, { GuestUsersState } from './ducks/guesUsers';\nimport maintenanceReducer from './ducks/maintenance';\n\nexport interface AppState {\n admin: AdminState;\n user: UserState;\n customer: CustomerState;\n bpHelper: BPHelperState;\n baby: BabyState;\n product: ProductState;\n dashboard: DashboardState;\n milestones: MilestoneState;\n books: BookState;\n growthChart: GrowthChartState;\n photos: PhotoState;\n stripeProduct: StripeProductState;\n guestUsers: GuestUsersState;\n maintenance: MaintenanceState;\n}\n\nconst persistedReducer = persistReducer(\n {\n key: storageKey,\n storage,\n /**\n * Which states we will save in localStorage\n */\n whitelist: [\n 'maintenance',\n 'admin',\n 'user',\n 'customer',\n 'baby',\n 'product',\n 'dashboard',\n 'milestones',\n 'bpHelper',\n 'books',\n 'growthChart',\n 'photos',\n 'stripeProduct',\n 'guestUsers',\n ],\n },\n combineReducers({\n maintenance: maintenanceReducer,\n admin: adminReducer,\n dashboard: dashboardReducer,\n customer: customerReducer,\n user: userReducer,\n growthChart: growthChartReducer,\n bpHelper: bpHelperReducer,\n baby: babyReducer,\n product: productReducer,\n stripeProduct: stripeProductReducer,\n milestones: milestoneReducer,\n books: bookReducer,\n photos: photosReducer,\n guestUsers: guestUsersReducer,\n })\n);\n\n// Saga Middleware will be used to do Async Requests\nexport const sagaMiddleware = createSagaMiddleware();\n\n// @ts-ignore\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\nconst store = createStore(\n persistedReducer,\n composeEnhancers(applyMiddleware(sagaMiddleware))\n);\n\nexport const persistor = persistStore(store);\n\nexport default store;\n","import { Icon, Layout, Menu, Modal } from 'antd';\nimport React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { Dispatch } from 'redux';\nimport logo from '../../assets/img/logo.svg';\nimport { BaseAction } from '../../store/actionTypes';\nimport { logoutAdmin } from '../../store/ducks/admin';\nimport './BaseAdminLayout.scss';\n\nconst { Content, Sider } = Layout;\n\ninterface Props {\n logout: () => void;\n}\n\nconst BaseAdminLayout: React.FC = ({ children, logout }) => {\n const [collapsed, setCollapsed] = useState(true);\n const history = useHistory();\n\n return history.location.pathname === \"/admin/login\" ? (\n {children}\n ) : (\n \n \n \"Logo\"\n \n {\n history.push(\"/admin\");\n }}\n >\n \n Home\n \n {\n history.push(\"/admin/users\");\n }}\n >\n \n Users\n \n {\n history.push(\"/admin/fonts\");\n }}\n >\n \n Fonts\n \n {\n history.push(\"/admin/books\");\n }}\n >\n \n Books\n \n {\n history.push(\"/admin/milestones\");\n }}\n >\n \n Milestones\n \n {\n history.push(\"/admin/metrics\");\n }}\n >\n \n Metrics\n \n {\n history.push(\"/admin/forms\");\n }}\n >\n \n Dynamic Forms\n \n {\n history.push(\"/admin/gift-card\");\n }}\n >\n \n Gift Cards\n \n {\n Modal.confirm({\n title: \"Do you wanna exit admin application?\",\n okText: \"Yes\",\n okType: \"danger\",\n cancelText: \"No\",\n icon: \"warning\",\n onOk() {\n logout();\n history.push(\"/admin/login\");\n }\n });\n }}\n >\n \n Exit\n \n \n \n \n {children}\n \n \n );\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n logout: () => dispatch(logoutAdmin()),\n});\n\nexport default connect(null, mapDispatchToProps)(BaseAdminLayout);\n","import axios, { AxiosInstance } from 'axios';\nimport { BASE_URL, apiVersion } from './env';\nimport { logoutUser } from \"./store/ducks/user\";\nimport store from './store/index';\n\nconst api: AxiosInstance = axios.create({\n baseURL: BASE_URL,\n headers: {\n 'Accept': apiVersion,\n 'Content-Type': 'application/json'\n }\n});\n\napi.interceptors.response.use(function (response) {\n // Any status code that lie within the range of 2xx cause this function to trigger\n // Do something with response data\n return response;\n}, function (error) {\n // Any status codes that falls outside the range of 2xx cause this function to trigger\n // Do something with response error\n if(error.response.data.code === 401 ) {\n store.dispatch(logoutUser())\n }\n return Promise.reject(error);\n});\n\nexport default api;\n","import _ from 'lodash';\n\nexport const isArrayEqual = (x: any[], y: any[]) =>\n _(x)\n .xorWith(y, _.isEqual)\n .isEmpty();\n\nexport const reorder = (\n list: any[],\n startIndex: number,\n endIndex: number\n): any[] => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n\n return result;\n};\n\nexport const removeDuplicatesByKeyArray = (\n array: any[],\n key: string = 'id'\n) => {\n const newArray: any[] = [];\n array.forEach(item => {\n if (!newArray.find(e => e[key] === item[key])) {\n newArray.push(item);\n }\n });\n return newArray;\n};\n","export const networkError =\n 'We are unable to connect to server, check your internet and try again later';\n\n\nexport const parseRequestError = (error: any): string => {\n const message =\n parseInt(error.code) === 0\n ? networkError\n : !!error.response &&\n !!error.response.data &&\n !!error.response.data.message\n ? error.response.data.message\n : error.message;\n return message === 'Network Error'\n ? networkError\n : message ===\n 'Failed to authenticate because of bad credentials or an invalid authorization header.'\n ? 'Your session has been expired.'\n : message;\n};\n","import amplitude from \"amplitude-js\";\nimport * as firebase from \"firebase/app\";\nimport \"firebase/analytics\";\nimport ReactPixel from \"react-facebook-pixel\";\nimport { AMPLITUDE } from \"../env\";\nimport { CartItem } from \"./../interfaces/cart\";\ndeclare const pintrk: any;\ndeclare const snaptr: any;\ndeclare const qp: any;\n\n/**\n * Initialize Marketing Tools\n */\nexport const initMarketingTools = () => {\n const visitedUrl = window.location.pathname + window.location.search;\n\n try {\n ReactPixel.pageView();\n } catch (error) {}\n\n try {\n const amplitudeInstance = amplitude.getInstance();\n amplitudeInstance.init(AMPLITUDE.apiKey);\n amplitudeInstance.logEvent(\"PageVisit\", { url: visitedUrl });\n } catch (error) {}\n\n // Quora Tracking\n try {\n qp('track', 'ViewContent');\n } catch (error) {\n console.error(error);\n }\n\n // SnapChat Tracking\n try {\n snaptr('track', 'PAGE_VIEW');\n } catch (error) {\n console.error(error);\n }\n \n try {\n pintrk(\"track\", \"PageVisit\", { url: visitedUrl });\n } catch (error) {}\n\n try {\n firebase.analytics().logEvent(\"page_view\", {\n page_path: visitedUrl,\n page_title: visitedUrl\n });\n } catch (error) {\n console.error(error);\n }\n};\n\n/**\n * Track Actions\n */\nexport const trackAction = (action: string, data: any, custom?: boolean) => {\n try {\n !!custom\n ? ReactPixel.trackCustom(action, data.facebook)\n : ReactPixel.track(action, data.facebook);\n } catch (error) {}\n\n try {\n const amplitudeInstance = amplitude.getInstance();\n amplitudeInstance.init(AMPLITUDE.apiKey);\n amplitudeInstance.logEvent(action, data.amplitude);\n } catch (error) {}\n\n // Quora Tracking - New signUp\n if (action === \"trackNewSignUp\") {\n console.info(\"Tracking New SignUp with Quora...\")\n\n try {\n qp('track', 'CompleteRegistration')\n } catch (error) {\n console.error(error);\n }\n }\n\n // Quora Tracking - New purchase\n if (action === \"trackNewPurchase\") {\n console.info(\"Tracking New Purchase with Quora...\")\n \n try {\n qp('track', 'Purchase');\n } catch (error) {\n console.error(error);\n }\n }\n if(action === \"CompleteRegistration\") {\n // Track pinterest signup\n try {\n pintrk(\"track\", data.pinterest.event, data.pinterest);\n } catch (error) {\n\n }\n } else {\n try {\n pintrk(\"track\", action, data.pinterest);\n } catch (error) {}\n }\n try {\n firebase.analytics().logEvent(data.google.event, data.google.event === 'purchase' ? data.google.details : data.google);\n } catch (error) {\n console.error(error);\n }\n};\n\n/**\n * Marketing for purchases\n */\n\nexport const trackPurchase = (store: CartItem[], total: number) => {\n const pixelData = {\n value: total.toFixed(2),\n currency: \"USD\",\n contents: [] as any,\n line_items: [] as any,\n num_items: 0,\n content_type: \"product_group\"\n };\n\n store.forEach(product => {\n switch (product.type) {\n case \"print\":\n case \"book\":\n product.options.forEach(item => {\n if (item.selected) {\n pixelData.num_items += item.qty;\n pixelData.contents.push({\n id: item.sku_id,\n quantity: item.qty,\n item_price: item.price,\n description: item.description\n });\n pixelData.line_items.push({\n product_name: item.description,\n product_category:\n item.title === \"Single Print\" ? \"Single Print\" : \"Book\",\n product_id: item.sku_id,\n product_price: item.price,\n product_quantity: item.qty\n });\n }\n });\n break;\n case \"subscription\":\n product.options.forEach(item => {\n if (item.selected) {\n pixelData.num_items += item.qty;\n pixelData.contents.push({\n id: item.id,\n quantity: item.qty,\n item_price: item.price,\n description: \"Subscription\"\n });\n pixelData.line_items.push({\n product_name:\n item.id === \"monthly\"\n ? \"One Month Subscription\"\n : item.id === \"three month\"\n ? \"Three Month Subscription\"\n : \"One Year Subscription\",\n product_category: \"Subscription\",\n product_id: item.id,\n product_price: item.price,\n product_quantity: item.qty\n });\n }\n });\n break;\n case \"giftcard\":\n pixelData.num_items += product.qty;\n pixelData.contents.push({\n id: product.id,\n quantity: product.qty,\n item_price: product.total,\n description: product.subtitle\n });\n pixelData.line_items.push({\n product_name: product.subtitle,\n product_category: \"Gift Card\",\n product_id: product.id,\n product_price: product.total,\n product_quantity: product.qty\n });\n break;\n default:\n break;\n }\n });\n\n const productTrackingData = {\n facebook: pixelData,\n amplitude: pixelData,\n pinterest: pixelData,\n google: {\n event: \"purchase\",\n details: pixelData,\n }\n };\n\n trackAction(\"purchase\", productTrackingData);\n};\n\n/**\n * Marketing during add to cart\n */\nexport const trackAddToCart = (product: CartItem) => {\n const productTrackingData = {\n facebook: {\n content_name: product.title,\n content_category: product.type,\n content_ids: [product.stripe_id],\n num_items: product.qty,\n value: product.total,\n currency: \"USD\"\n },\n amplitude: {\n id: product.stripe_id,\n name: product.title,\n category: product.type,\n number_items: product.qty,\n value: product.total,\n currency: \"USD\"\n },\n pinterest: {\n value: product.total,\n order_quantity: product.qty,\n currency: \"USD\",\n line_items: [\n {\n product_name: product.title,\n product_category: product.type,\n product_id: product.stripe_id,\n product_price: product.total,\n product_quantity: product.qty\n }\n ]\n },\n google: {\n event: \"add_to_cart\",\n details: `User added ${product.qty} ${product.title} to the cart`\n }\n };\n trackAction(\"AddToCart\", productTrackingData);\n};\n","import cloneDeep from \"lodash/cloneDeep\";\nimport { call, put, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { BookListInterface } from \"../../interfaces\";\nimport { User } from \"../../interfaces/user\";\nimport { isArrayEqual } from \"../../utils/array\";\nimport { parseRequestError } from \"../../utils/error\";\nimport { trackAction } from \"../../utils/marketing\";\nimport {\n getBooks,\n getCovers,\n setBookType as setBookTypeDuck,\n} from \"../ducks/books\";\nimport { BookState } from \"./../ducks/books\";\nimport { sagaMiddleware } from \"./../index\";\n\nexport function* fetchBooks(callback?: (error: string | null) => void) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || user.user_level === 3) return;\n\n try {\n const response = yield call(api.get, \"api/books\", {\n headers: {\n Authorization: user.access_token,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const data = response.data.data;\n const books: BookState = yield select((state: AppState) => state.books);\n\n if (!isArrayEqual(books.books, data)) {\n yield put(getBooks(data));\n }\n }\n\n if (callback) callback(null);\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n\nexport function* duplicateBook(\n id: number,\n callback: (error: string | null) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.get, `api/duplicate-book/${id}`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const bookState: BookState = yield select(\n (state: AppState) => state.books\n );\n\n const bookToDuplicate = bookState.books.findIndex(\n (book) => book.id === id\n );\n\n if (bookToDuplicate >= 0) {\n const newBook = cloneDeep(bookState.books[bookToDuplicate]);\n newBook.id = response.data.data.id;\n\n bookState.books = [newBook, ...bookState.books];\n\n yield put(getBooks(bookState.books));\n }\n\n callback(null);\n } else {\n throw new Error(\"The selected id is invalid.\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* deleteBook(\n id: number,\n callback: (error: string | null) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.delete, `api/books/${id}?lang=en`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const bookState: BookState = yield select(\n (state: AppState) => state.books\n );\n\n const bookToDelete = bookState.books.findIndex((book) => book.id === id);\n\n if (bookToDelete >= 0) {\n const updatedBooks = bookState.books.filter((book) => {\n return book.id !== id;\n });\n\n bookState.books = updatedBooks;\n\n yield put(getBooks(bookState.books));\n }\n\n callback(null);\n } else {\n throw new Error(\"The selected id is invalid.\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* fetchCovers(callback?: (error: string | null) => void) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.get, \"api/covers?lang=en\", {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const data = response.data.data;\n const books: BookState = yield select((state: AppState) => state.books);\n\n if (!isArrayEqual(books.covers, data)) {\n yield put(getCovers(data));\n }\n }\n\n if (callback) callback(null);\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n\n// Add or Update a BabyPage\nexport function* saveBookSaga(\n book: any,\n callback: (error?: any, id?: number) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n const method = !!book.id ? \"put\" : \"post\";\n const url = !!book.id ? `books/${book.id}` : \"books\";\n book.id = undefined; // Remove ID from post information\n\n try {\n const response = yield call(api[method], `api/${url}`, book, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n if(method === \"post\") {\n trackAction(\n \"SaveBook\",\n {\n google: {\n event: \"create_book\",\n },\n },\n true\n );\n } \n sagaMiddleware.run(fetchBooks);\n callback(null, response.data.data);\n } else {\n throw new Error(\"Error saving Book\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* fetchBookById(\n id: number,\n callback: (error: string | null, Book?: any) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.get, `api/books/${id}`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n callback(null, response.data.data);\n } else {\n throw new Error(\"The selected id is invalid.\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* inspectAllBabypagesImages(\n id: number,\n callback: (error: string | null, Book?: any) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.get, `api/missing-images/${id}`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n callback(null, response.data.data);\n } else {\n throw new Error(\"The selected id is invalid.\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get books for admin panel\n */\nexport function* getBooksAdmin(\n search: string,\n callback: (err?: string, response?: BookListInterface) => void,\n page?: number\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n if (!!search) {\n search = `search=${search}`;\n }\n\n if (!!page) {\n search += `${!!search ? \"&\" : \"\"}page=${page}`;\n }\n\n const response = yield call(\n api.get,\n `api/admin/books?&lang=en&limit=10&${search}`,\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get books by ID for admin panel\n */\nexport function* getBookById(\n id: string,\n callback: (err?: string, response?: any) => void,\n admin: boolean = true\n) {\n const accessToken = yield select((state: AppState) =>\n !!admin ? state.admin.access_token : state.user.access_token\n );\n\n try {\n const response = yield call(api.get, `api/admin/books/${id}?&lang=en`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get book types from Stripe\n */\nexport function* getStripeBookTypes(\n callback: (err?: string, response?: { a: number }) => void\n) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token) return;\n\n try {\n const response = yield call(api.get, \"api/stripe/books?&lang=en\", {\n headers: {\n Authorization: user.access_token,\n },\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Set Book Type\n */\nexport function* setBookType(\n stripeId: string,\n callback: (err?: string) => void\n) {\n try {\n yield put(setBookTypeDuck(stripeId));\n\n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","/**\n * Replace all ocurrences of some value in a text with a replaceValue\n */\nexport const replaceAll = (\n text: string,\n value: string,\n replaceValue: string\n) => {\n let count = 0;\n while (text.indexOf(value) !== -1 && count < 200) {\n // Limit count to 200 to prevent memory leak errors\n text = text.replace(value, replaceValue);\n count++;\n }\n return text;\n};\n\n/**\n * Capitalize just first letter of a text\n */\nexport const capitalizeText = (text: string): string =>\n `${text.charAt(0).toUpperCase()}${text.slice(1)}`;\n\n/**\n * Return capitalized text (all texts separated by commas)\n *\n * @param {string} text gabriel de carvalho vaz\n * @return {string} Gabriel De Carvalho Vaz\n */\nexport const capitalizeTexts = (text: string): string => {\n return text.indexOf(' ') !== -1\n ? text\n .split(' ')\n .map(e => capitalizeText(e))\n .join(' ')\n : capitalizeText(text);\n};\n\nexport const replaceThumbURL = (url: string): string =>\n url.replace('thumb_', '');\n\n/**\n * Get last segment from a url\n * Ex:\n * @param {string} http://asdasdasd.com/asd.png\n * @return {string} asd.png\n */\nexport const lastSegmentUrl = (\n url: string,\n removeThumbString: boolean = false\n): string => {\n const lastSegment =\n url.indexOf('/') !== -1 ? url.substr(url.lastIndexOf('/') + 1) : url;\n return removeThumbString ? lastSegment.replace('thumb_', '') : lastSegment;\n};\n\nexport const isURL = (url: string): boolean =>\n url.match(\n // eslint-disable-next-line\n /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/g\n ) !== null;\n\nexport const addSuffix = (days: number): string => {\n let suffix = '';\n const ones = days % 10;\n\n if (ones === 1 && days !== 11) {\n suffix = 'st';\n } else if (ones === 2 && days !== 12) {\n suffix = 'nd';\n } else if (ones === 3 && days !== 13) {\n suffix = 'rd';\n } else {\n suffix = 'th';\n }\n\n return `${days}${suffix}`;\n};\n\nexport const removeDiacritics = (\n text: string,\n replaceSpaces: boolean = false,\n lowerCase: boolean = false\n) => {\n if (replaceSpaces) text = replaceAll(text, ' ', '_');\n if (lowerCase) text = text.toLowerCase();\n\n return text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n};\n\nexport const capitalizeRawPronoun = (\n text: string\n) => {\n let regex = /(^|[.!?]\\s+)([a-z])/g;\n return text.replace(regex, (m, $1, $2) => $1 + $2.toUpperCase());\n};","import { Button, Input, notification, Table, Tooltip } from \"antd\";\nimport moment from \"moment\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { BookListInterface, BooksListItem } from \"../../../interfaces\";\nimport { sagaMiddleware } from \"../../../store\";\nimport { getBooksAdmin } from \"../../../store/sagas/books\";\nimport { capitalizeTexts } from \"../../../utils/string\";\n\nconst AdminBooksPage: React.FC = () => {\n const history = useHistory();\n\n const [loading, setLoading] = useState(false);\n const [search, setSearch] = useState(\"\");\n const [debounce, setDebounce] = useState();\n const [booksData, setBooksData] = useState({\n data: [],\n total: 0,\n per_page: 10,\n current_page: 1,\n last_page: 1,\n next_page_url: null,\n prev_page_url: null,\n has_more_pages: false,\n first_item: 1,\n last_item: 1\n });\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getBooksAdmin,\n \"\",\n (err?: string, response?: BookListInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else if (!!response) {\n setBooksData(response);\n }\n }\n );\n }, []);\n\n const filterBooks = useCallback((search: string = \"\", page: number = 1) => {\n setLoading(true);\n\n sagaMiddleware.run(\n getBooksAdmin,\n search,\n (err?: string, response?: BookListInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else if (!!response) {\n setBooksData(response);\n }\n },\n page\n );\n }, []);\n\n const onChangeSearch = useCallback(\n (search: string = \"\") => {\n setSearch(search);\n\n if (debounce) clearTimeout(debounce);\n\n setDebounce(\n setTimeout(() => {\n filterBooks(search, 1);\n }, 100)\n );\n },\n [debounce, filterBooks]\n );\n\n return (\n
\n

Books List

\n
\n
\n {\n onChangeSearch(e.target.value);\n }}\n placeholder=\"Search book\"\n className=\"w-100\"\n />\n
\n
\n filterBooks(search, e.current || 1)}\n className=\"my-3 elevation-5\"\n rowKey={(record: BooksListItem) => record.id.toString()}\n onRow={(record: BooksListItem) => {\n return {\n onClick: () => history.push(`/admin/books/detail?id=${record.id}`)\n };\n }}\n >\n (\n {record.id}\n )}\n />\n (\n \n {record.title}\n \n )}\n />\n (\n \n {record.subtitle}\n \n )}\n />\n (\n \n \n {capitalizeTexts(record.parent_first_name ?? \"\")}{\" \"}\n {capitalizeTexts(record.parent_last_name ?? \"\")}\n \n \n )}\n />\n (\n \n {record.parent_email}\n \n )}\n />\n (\n {moment(record.created_at).format(\"MMM[, ]Do[, ]YYYY\")}\n )}\n />\n \n record.in_cart ? (\n
\n );\n};\n\nexport default AdminBooksPage;\n","import { Button, Card, Icon, Input, notification, Select } from \"antd\";\nimport queryString from \"query-string\";\nimport React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { BooksListItem } from \"../../../../interfaces\";\nimport { sagaMiddleware } from \"../../../../store\";\nimport { getBookById } from \"../../../../store/sagas/books\";\n\nconst AdminDetailBooksPage: React.FC = () => {\n const history = useHistory();\n const { Option } = Select;\n\n const [book, setBook] = useState();\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const id: any = queryString.parse(history.location.search)?.id;\n\n if (!!id && !!id.toString()) {\n // Get By Id\n setLoading(true);\n\n sagaMiddleware.run(\n getBookById,\n id,\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n\n history.push(\"/admin/books\");\n return;\n } else if (!!response) {\n try {\n setBook(response);\n } catch (error) {\n notification.error({\n message: \"Error\",\n description:\n \"Failed to load book detail, please try again later\"\n });\n\n history.push(\"/admin/books\");\n return;\n }\n }\n }\n );\n } else {\n history.push(\"/admin/books\");\n return;\n }\n }, [history]);\n\n return (\n
\n {loading ? (\n
\n \n
\n ) : (\n
\n
\n \n \n }\n >\n \n \n

Book ID

\n \n

Title

\n \n

Subtitle

\n \n

Book Type

\n \n
\n
\n \n GENERATE BOOK\n \n
\n
\n history.push('/admin/books')}\n >\n CANCEL\n \n
\n
\n
\n
\n ,\n
\n )}\n
\n );\n};\n\nexport default AdminDetailBooksPage;\n","import { call, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { FontPaginator, Font, newFont } from \"../../interfaces/font\";\nimport { parseRequestError } from \"../../utils/error\";\n\n/**\n * Get fonts\n */\nexport function* getFonts(\n isPlus: boolean,\n callback: (err?: string, response?: newFont[]) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n let endpoint = `api/font?lang=en`;\n try { \n\n const response = yield call(api.get, endpoint, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get font by id\n */\nexport function* getFontById(\n id: number,\n callback: (err?: string, response?: Font) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n const lang = \"en\";\n let endpoint = `api/fonts/${id}?lang=${lang}`;\n\n try {\n const response = yield call(api.get, endpoint, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Update or create a font\n */\nexport function* saveFont(\n form: any,\n callback: (err?: string, response?: Font) => void,\n id: number\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n const lang = \"en\";\n let endpoint = `api/fonts?lang=${lang}`;\n\n if (id !== 0) {\n endpoint = `api/fonts/${id}?lang=${lang}`;\n }\n\n try {\n const response = yield call(api.post, endpoint, form, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Delete font by id\n */\nexport function* deleteFont(id: number, callback: (err?: string) => void) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n const lang = \"en\";\n\n try {\n yield call(api.delete, `api/fonts/${id}?lang=${lang}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import {\n Button,\n Card,\n Icon,\n Input,\n Layout,\n Modal,\n notification,\n Row,\n Switch,\n Tag\n} from \"antd\";\nimport React, { useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Font } from \"../../interfaces/font\";\nimport { sagaMiddleware } from \"../../store\";\nimport { deleteFont, saveFont } from \"../../store/sagas/font\";\n\nconst { Content } = Layout;\n\ninterface Props {\n fontForm: any;\n setFontForm: Function;\n setLoading: Function;\n}\n\nconst FontForm: React.FC = ({ fontForm, setFontForm, setLoading }) => {\n const history = useHistory();\n\n const handleFile = useCallback(\n (event: any) => {\n const file = event.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onloadend = function() {\n setFontForm((fontForm: any) => ({\n ...fontForm,\n font_url: reader.result,\n source: file.name,\n source_file: file\n }));\n };\n },\n [setFontForm]\n );\n\n const handleSubmit = useCallback(\n (event: any) => {\n event.preventDefault();\n\n const { family, plus, is_active, source, source_file, id } = fontForm;\n\n if (!source) {\n notification.error({\n message: \"Error\",\n description: \"A font file is required.\"\n });\n\n return;\n }\n\n const payload: any = {\n family: family,\n plus: !!plus,\n source: source_file !== null ? source_file : undefined,\n is_active: !!is_active\n };\n\n const formData: FormData = new FormData();\n for (const key in payload) {\n if (payload[key] !== undefined) {\n formData.append(key, payload[key]);\n }\n }\n\n setLoading(true);\n sagaMiddleware.run(\n saveFont,\n formData,\n (err?: string, response?: Font) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else {\n notification.success({\n message: \"Success\",\n description: \"Font saved successfully\"\n });\n\n history.push(\"/admin/fonts\");\n }\n },\n id\n );\n },\n [fontForm, setLoading, history]\n );\n\n const handleClickOnDeleteButton = useCallback(\n (id: number) => {\n Modal.confirm({\n title: \"Are you sure you want to delete this Font?\",\n okText: \"Yes\",\n okType: \"danger\",\n cancelText: \"No\",\n width: 300,\n icon: \"warning\",\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(deleteFont, id, (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else {\n history.push(\"/admin/fonts\");\n }\n });\n }\n });\n },\n [history, setLoading]\n );\n\n return (\n
\n \n \n \n \n
\n \n \n {fontForm.source && (\n <>\n {fontForm.source}\n
\n
\n \n )}\n \n CLICK HERE TO UPLOAD A FONT\n \n \n
\n
\n \n \n {\n e.persist();\n\n setFontForm((fontForm: any) => ({\n ...fontForm,\n family: e.target.value\n }));\n }}\n />\n \n \n {\" \"}\n }\n unCheckedChildren={}\n checked={!!fontForm.plus}\n onChange={(checked: boolean) => {\n setFontForm((fontForm: any) => ({\n ...fontForm,\n plus: checked\n }));\n }}\n />\n \n \n {\" \"}\n }\n unCheckedChildren={}\n checked={!!fontForm.is_active}\n onChange={(checked: boolean) => {\n setFontForm((fontForm: any) => ({\n ...fontForm,\n is_active: checked\n }));\n }}\n />\n \n \n \n {fontForm.id !== 0 ? \"UPDATE\" : \"CREATE\"}\n \n history.push(\"/admin/fonts\")}\n >\n CANCEL\n \n {fontForm.id !== 0 && (\n handleClickOnDeleteButton(fontForm.id)}\n >\n DELETE\n \n )}\n \n
\n
\n
\n
\n );\n};\n\nexport default FontForm;\n","import { Col, notification, Row, Spin } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport FontForm from \"../../../../components/FontForm/FontForm\";\nimport { Font } from \"../../../../interfaces/font\";\nimport { sagaMiddleware } from \"../../../../store\";\nimport { getFontById } from \"../../../../store/sagas/font\";\n\nconst FontDetailPage: React.FC = () => {\n const [loading, setLoading] = useState(false);\n const [fontForm, setFontForm] = useState(undefined);\n let { id } = useParams();\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getFontById,\n id,\n (err?: string, response?: Font) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n\n return;\n }\n\n setFontForm(response);\n }\n );\n }, [id]);\n\n return (\n \n \n
\n

Font Detail

\n {loading ? (\n
\n \n
\n ) : (\n <>\n {!!fontForm && (\n \n )}\n \n )}\n
\n \n
\n );\n};\n\nexport default FontDetailPage;\n","import {\n Button,\n Icon,\n Input,\n notification,\n Row,\n Spin,\n Table,\n Tooltip\n} from \"antd\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Font, FontPaginator } from \"../../../../interfaces/font\";\nimport { sagaMiddleware } from \"../../../../store\";\nimport { getFonts } from \"../../../../store/sagas/font\";\n\nconst FontListPage: React.FC = () => {\n const [loading, setLoading] = useState(false);\n const [searchParameter, setSearchParameter] = useState(\"\");\n const [fontPaginator, setFontPaginator] = useState(\n undefined\n );\n const [debounce, setDebounce] = useState();\n const history = useHistory();\n\n useEffect(() => {\n setLoading(true);\n\n const page = 1;\n\n sagaMiddleware.run(\n getFonts,\n page,\n \"\",\n (err?: string, response?: FontPaginator) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n\n return;\n }\n\n setFontPaginator(response);\n }\n );\n }, []);\n\n const filterFonts = useCallback(\n (searchParameter: string = \"\", page: number = 1) => {\n setLoading(true);\n\n sagaMiddleware.run(\n getFonts,\n page,\n searchParameter,\n (err?: string, response?: FontPaginator) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n\n return;\n }\n\n setFontPaginator(response);\n }\n );\n },\n []\n );\n\n const handleFilterChange = useCallback(\n (search: string = \"\") => {\n setSearchParameter(search);\n\n if (debounce) clearTimeout(debounce);\n\n setDebounce(\n setTimeout(() => {\n filterFonts(search, 1);\n }, 100)\n );\n },\n [debounce, filterFonts]\n );\n\n return (\n
\n

Fonts

\n
\n
\n handleFilterChange(e.target.value)}\n className=\"w-100\"\n />\n
\n
\n \n {\n history.push(\"/admin/fonts/new\");\n }}\n >\n CREATE A FONT\n \n \n {loading ? (\n
\n \n
\n ) : (\n <>\n {fontPaginator !== undefined && (\n {\n filterFonts(searchParameter, e.current || 1);\n }}\n className=\"my-3 elevation-5\"\n rowKey={(record: Font) => record.id.toString()}\n >\n (\n \n {text}\n \n )}\n />\n (\n \n {text}\n \n )}\n />\n (\n \n {text}\n \n )}\n />\n (\n \n {text}\n \n )}\n />\n \n !!text ? (\n \n ) : (\n \n )\n }\n />\n \n !!text ? (\n \n ) : (\n \n )\n }\n />\n (\n history.push(`/admin/fonts/${record.id}`)}\n />\n )}\n />\n \n )}\n \n )}\n
\n );\n};\n\nexport default FontListPage;\n","import { Col, Row, Spin } from \"antd\";\nimport React, { useState } from \"react\";\nimport FontForm from \"../../../../components/FontForm/FontForm\";\nimport { Font } from \"../../../../interfaces/font\";\n\nconst FontNewPage: React.FC = () => {\n const [loading, setLoading] = useState(false);\n const [fontForm, setFontForm] = useState({\n id: 0,\n name: \"\",\n family: \"\",\n source: \"\",\n format: \"\",\n weight: \"\",\n style: \"\",\n is_active: false,\n plus: false\n });\n\n return (\n \n \n
\n

You're creating a new Font

\n {loading ? (\n
\n \n
\n ) : (\n \n )}\n
\n \n
\n );\n};\n\nexport default FontNewPage;\n","import React from 'react';\nimport './VerticalDivider.scss';\n\ninterface Props {\n style?: React.CSSProperties | undefined;\n}\n\nconst VerticalDivider: React.FC = ({ style }) => (\n
\n);\n\nexport default VerticalDivider;\n","import { Modal } from 'antd';\nimport { History } from 'history';\nimport moment from 'moment';\nimport { call, select } from 'redux-saga/effects';\nimport { AppState } from '..';\nimport api from '../../api';\nimport {\n AnswersListInterface,\n FormListInterface,\n SaveForm\n} from '../../interfaces/form';\nimport { parseRequestError } from '../../utils/error';\n\nexport function* getForms(\n search: string,\n callback: (err?: string, response?: FormListInterface) => void,\n page?: number\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n if (!!search) {\n search = `search=${search}`;\n }\n\n if (!!page) {\n search += `${!!search ? '&' : ''}page=${page}`;\n }\n\n const response = yield call(api.get, `api/admin/form?${search}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* getFormByCode(\n code: string,\n callback: (err?: string, response?: any) => void,\n admin: boolean = true\n) {\n const accessToken = yield select((state: AppState) =>\n !!admin ? state.admin.access_token : state.user.access_token\n );\n\n try {\n const response = yield call(api.get, `api/form/${code}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* saveFormSaga(\n form: SaveForm,\n callback: (err?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n yield call(api.post, 'api/admin/form', form, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* getAnswers(\n filter: {\n startDate?: string;\n endDate?: string;\n formId?: number;\n user?: string;\n },\n callback: (err?: string, response?: AnswersListInterface) => void,\n page?: number\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n let search = '';\n\n if (!!filter.startDate) {\n search += `start_date=${filter.startDate}`;\n }\n\n if (!!filter.endDate) {\n search += `${!!search ? '&' : ''}end_date=${filter.endDate}`;\n }\n\n if (!!filter.formId) {\n search += `${!!search ? '&' : ''}form_id=${filter.formId}`;\n }\n\n if (!!filter.user) {\n search += `${!!search ? '&' : ''}user=${filter.user}`;\n }\n\n if (!!page) {\n search += `${!!search ? '&' : ''}page=${page}`;\n }\n\n const response = yield call(api.get, `api/admin/form/answers?${search}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* getDetailAnswer(\n answerId: number,\n callback: (err?: string, response?: any) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n const response = yield call(api.get, `api/admin/form/answers/${answerId}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* getReport(\n filter: {\n formId?: number;\n formQuestionId?: number;\n },\n callback: (err?: string, response?: any) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n const response = yield call(\n api.get,\n `api/admin/form/report?${\n !!filter.formId\n ? `form_id=${filter.formId}`\n : `form_question_id=${filter.formQuestionId}`\n }`,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* deleteQuestionSaga(\n questionId: number,\n callback: (err?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n yield call(api.delete, `api/admin/form/question/${questionId}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback();\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* deleteOptionSaga(\n optionId: number,\n callback: (err?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n yield call(api.delete, `api/admin/form/option/${optionId}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback();\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* checkUserModal(history: History) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const lastAsk = localStorage.getItem('lastAsk');\n\n if (!lastAsk || moment().diff(moment(lastAsk), 'days') > 6) {\n const response = yield call(api.get, 'api/daily-use', {\n headers: {\n Authorization: accessToken\n }\n });\n\n if (!response?.data?.data?.show_form) {\n // Don't show the modal\n return;\n }\n\n Modal.confirm({\n title: `Hi, we've noticed that you enjoy using BabyPage.`,\n content: `Would you be willing to take a quick survey about your BabyPage experience?`,\n centered: true,\n okText: 'Yes',\n okType: 'primary',\n cancelText: 'No',\n width: 300,\n icon: null,\n onOk() {\n localStorage.setItem('lastAsk', moment().toISOString());\n history.push('/form?code=survey_babypage');\n },\n onCancel() {\n localStorage.setItem('lastAsk', moment().toISOString());\n }\n });\n }\n } catch (error) {}\n}\n\nexport function* answerFormSaga(answer: any, callback: (err?: string) => void) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n try {\n yield call(api.post, 'api/form', answer, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback();\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { Card, Icon, notification } from 'antd';\nimport queryString from 'query-string';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport VerticalDivider from '../../../../components/VerticalDivider/VerticalDivider';\nimport { sagaMiddleware } from '../../../../store';\nimport { getDetailAnswer } from '../../../../store/sagas/form';\nimport { capitalizeText } from '../../../../utils/string';\n\nconst typeAnswer = (\n type_answer: 'INPUT' | 'LIST' | 'RADIO' | 'CHECK',\n type_data: 'TEXT' | 'NUMBER' | 'DATE' | null\n) => {\n if (type_answer === 'INPUT') {\n return `Text box (${capitalizeText(type_data ?? 'Text')})`;\n } else {\n return type_answer === 'LIST'\n ? 'Drop-down'\n : type_answer === 'RADIO'\n ? 'Multiple choice'\n : 'Checkboxes';\n }\n};\n\nconst AdminDetailAnswerPage: React.FC = () => {\n const history = useHistory();\n\n const [detail, setDetail] = useState();\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const id: any = queryString.parse(history.location.search)?.id;\n\n if (!!id && !!id.toString()) {\n // Get By Code\n setLoading(true);\n\n sagaMiddleware.run(\n getDetailAnswer,\n parseInt(id.toString()),\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err,\n });\n\n history.push('/admin/forms');\n return;\n } else if (!!response) {\n try {\n setDetail(response);\n } catch (error) {\n notification.error({\n message: 'Error',\n description: 'Failed to load form, please try again later',\n });\n\n history.push('/admin/forms');\n return;\n }\n }\n }\n );\n } else {\n history.push('/admin/forms');\n return;\n }\n }, [history]);\n\n return loading || !detail ? (\n
\n \n
\n ) : (\n
\n

{detail.form?.title}

\n {!!detail.form?.extra_question && !!detail.extra_question_answer && (\n \n

{detail.form?.extra_question}

\n
\n {detail.extra_question_answer}\n
\n )}\n {detail.answers?.map((a: any, index: number) => (\n \n

{a.question?.question}

\n
\n \n Type:{' '}\n {typeAnswer(a.question?.type_answer, a.question?.type_data)}\n \n \n \n Required:{' '}\n {a.question?.is_required === 1 ? 'yes' : 'no'}\n \n \n \n Has other:{' '}\n {a.question?.has_other === 1 ? 'yes' : 'no'}\n \n
\n
\n {!!a.other_answer\n ? a.other_answer\n : !!a.answer\n ? a.answer\n : a.options?.map((o: any) => o.description).join(', ')}\n
\n ))}\n
\n );\n};\n\nexport default AdminDetailAnswerPage;\n","import { Button, Card, Icon, notification } from 'antd';\nimport queryString from 'query-string';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport VerticalDivider from '../../../../components/VerticalDivider/VerticalDivider';\nimport { sagaMiddleware } from '../../../../store';\nimport { getFormByCode, getReport } from '../../../../store/sagas/form';\nimport { capitalizeText } from '../../../../utils/string';\n\nconst typeAnswer = (\n type_answer: 'INPUT' | 'LIST' | 'RADIO' | 'CHECK',\n type_data: 'TEXT' | 'NUMBER' | 'DATE' | null\n) => {\n if (type_answer === 'INPUT') {\n return `Text box (${capitalizeText(type_data ?? 'Text')})`;\n } else {\n return type_answer === 'LIST'\n ? 'Drop-down'\n : type_answer === 'RADIO'\n ? 'Multiple choice'\n : 'Checkboxes';\n }\n};\n\nconst AdminDetailFormPage: React.FC = () => {\n const history = useHistory();\n\n const [form, setForm] = useState();\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const code: any = queryString.parse(history.location.search)?.code;\n\n if (!!code && !!code.toString()) {\n // Get By Code\n setLoading(true);\n\n sagaMiddleware.run(\n getFormByCode,\n code,\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err,\n });\n\n history.push('/admin/forms');\n return;\n } else if (!!response) {\n try {\n setForm(response);\n } catch (error) {\n notification.error({\n message: 'Error',\n description: 'Failed to load form, please try again later',\n });\n\n history.push('/admin/forms');\n return;\n }\n }\n }\n );\n } else {\n history.push('/admin/forms');\n return;\n }\n }, [history]);\n\n const showReport = useCallback(\n (id?: number) => {\n setLoading(true);\n\n sagaMiddleware.run(\n getReport,\n {\n formId: !!id ? undefined : form?.id,\n formQuestionId: !!id ? id : undefined,\n },\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (!!err || !response || response.length === 0) {\n notification.error({\n message: 'Error',\n description: `This ${\n !!id ? 'question' : 'form'\n } doesn't have any answers`,\n });\n } else {\n if (!!id) {\n setForm((state: any) => ({\n ...state,\n questions: state.questions.map((q: any) => {\n if (q.id !== id) return q;\n const options = q.options.map((o: any) => ({\n ...o,\n percent:\n response.find((r: any) => r.id === o.id)?.percent ?? '0',\n }));\n\n const other = response.find((r: any) => r.id === 0);\n\n if (!!other) {\n q.other_data = other;\n }\n\n return {\n ...q,\n options,\n };\n }),\n }));\n } else {\n setForm((state: any) => ({\n ...state!,\n questions: state.questions.map((q: any) => {\n const questionData = response.find(\n (r: any) => r.form_question_id === q.id\n );\n\n if (!questionData) return q;\n\n const options = q.options.map((o: any) => ({\n ...o,\n percent:\n questionData.options?.find((qo: any) => qo.id === o.id)\n ?.percent ?? '0',\n }));\n\n const other = questionData.options?.find(\n (r: any) => r.id === 0\n );\n\n if (!!other) {\n q.other_data = other;\n }\n\n return {\n ...q,\n options,\n };\n }),\n }));\n }\n }\n }\n );\n },\n [form]\n );\n\n return loading || !form ? (\n
\n \n
\n ) : (\n
\n

{form.title}

\n showReport()}\n >\n Show All Reports\n \n {form.questions?.map((q: any, index: number) => (\n \n

{q.question}

\n
\n \n Type: {typeAnswer(q.type_answer, q.type_data)}\n \n \n \n Required: {q.is_required === 1 ? 'yes' : 'no'}\n \n \n \n Has other: {q.has_other === 1 ? 'yes' : 'no'}\n \n
\n {q.type_answer !== 'INPUT' && (\n <>\n

Options:

\n
\n {q.options.map((o: any, index: number) => (\n \n {index !== 0 && }\n {o.description}\n {!!o.percent &&  {`(${o.percent}%)`}}\n \n ))}\n {q.has_other === 1 && (\n \n Other\n {(!!q.other_data?.percent || !!q.options[0]?.percent) && (\n \n  {`(${q.other_data?.percent ?? 0}%)`}\n \n )}\n \n )}\n
\n showReport(q.id)}\n >\n Show Reports\n \n \n )}\n
\n ))}\n
\n );\n};\n\nexport default AdminDetailFormPage;\n","import { Button, DatePicker, Input, notification, Select, Table } from 'antd';\nimport moment from 'moment';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport {\n AnswersInterface,\n AnswersListInterface,\n FormListItem,\n} from '../../../../interfaces/form';\nimport { sagaMiddleware } from '../../../../store';\nimport { getAnswers } from '../../../../store/sagas/form';\nimport { capitalizeTexts } from '../../../../utils/string';\n\ninterface Props {\n forms: FormListItem[];\n loading: boolean;\n setLoading: React.Dispatch>;\n}\n\nconst AnswerList: React.FC = ({ forms, loading, setLoading }) => {\n const history = useHistory();\n\n const [startDate, setStartDate] = useState(moment().startOf('month'));\n const [endDate, setEndDate] = useState(moment().endOf('month'));\n const [userSearch, setUserSearch] = useState('');\n const [form, setForm] = useState();\n const [answers, setAnswers] = useState({\n data: [],\n total: 0,\n per_page: 10,\n current_page: 1,\n last_page: 1,\n next_page_url: null,\n prev_page_url: null,\n has_more_pages: false,\n first_item: 1,\n last_item: 1,\n });\n const [debounce, setDebounce] = useState();\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getAnswers,\n {\n startDate: moment()\n .startOf('month')\n .format('YYYY[-]MM[-]DD'),\n endDate: moment()\n .endOf('month')\n .format('YYYY[-]MM[-]DD'),\n },\n (err?: string, response?: AnswersListInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err,\n });\n } else if (!!response) {\n setAnswers(response);\n }\n },\n answers.current_page\n );\n }, [setLoading, answers.current_page]);\n\n const filterAnswers = useCallback(\n (filter: {\n startDate?: string;\n endDate?: string;\n formId?: number;\n user?: string;\n }) => {\n if (debounce) clearTimeout(debounce);\n\n setDebounce(\n setTimeout(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getAnswers,\n filter,\n (err?: string, response?: AnswersListInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err,\n });\n } else if (!!response) {\n setAnswers(response);\n }\n }\n );\n }, 400)\n );\n },\n [setLoading, debounce]\n );\n\n return (\n <>\n
\n
\n {\n const newStart = e[0] ?? moment().startOf('month');\n const newEnd = e[1] ?? moment().endOf('month');\n\n setStartDate(newStart);\n setEndDate(newEnd);\n\n filterAnswers({\n startDate: newStart.format('YYYY[-]MM[-]DD'),\n endDate: newEnd.format('YYYY[-]MM[-]DD'),\n formId: !!form ? form : undefined,\n user: !!userSearch ? userSearch : undefined,\n });\n }}\n className='w-100'\n />\n
\n
\n {\n setForm(e);\n\n filterAnswers({\n startDate: startDate.format('YYYY[-]MM[-]DD'),\n endDate: endDate.format('YYYY[-]MM[-]DD'),\n formId: !!e ? e : undefined,\n user: !!userSearch ? userSearch : undefined,\n });\n }}\n className='w-100'\n >\n \n All forms\n \n {forms.map(f => (\n \n {f.title}\n \n ))}\n \n
\n
\n {\n setUserSearch(e.target.value);\n\n filterAnswers({\n startDate: startDate.format('YYYY[-]MM[-]DD'),\n endDate: endDate.format('YYYY[-]MM[-]DD'),\n formId: !!form ? form : undefined,\n user: !!e.target.value ? e.target.value : undefined,\n });\n }}\n className='w-100'\n />\n
\n
\n \n setAnswers(state => ({ ...state, current_page: e.current || 1 }))\n }\n className='m-3 elevation-5'\n rowKey={(record: AnswersInterface) => record.id.toString()}\n >\n (\n {record.form?.title}\n )}\n />\n (\n \n {capitalizeTexts(record.user?.first_name ?? '')}{' '}\n {capitalizeTexts(record.user?.last_name ?? '')}\n \n )}\n />\n (\n {moment(record.created_at).format('MMM[, ]Do[, ]YYYY')}\n )}\n />\n (\n \n history.push(`/admin/forms/answer?id=${record.id}`)\n }\n />\n )}\n />\n \n \n );\n};\n\nexport default AnswerList;\n","import { Button, Input, Table } from 'antd';\nimport React, { useState, useCallback } from 'react';\nimport { FormListInterface, FormListItem } from '../../../../interfaces/form';\nimport { useHistory } from 'react-router-dom';\n\ninterface Props {\n form: FormListInterface;\n loading: boolean;\n setLoading: React.Dispatch>;\n filterForms: (search?: string, page?: number) => void;\n}\n\nconst FormList: React.FC = ({ form, loading, filterForms }) => {\n const history = useHistory();\n\n const [search, setSearch] = useState('');\n const [debounce, setDebounce] = useState();\n\n const onChangeSearch = useCallback(\n (search: string = '') => {\n setSearch(search);\n\n if (debounce) clearTimeout(debounce);\n\n setDebounce(\n setTimeout(() => {\n filterForms(search, form.current_page);\n }, 400)\n );\n },\n [debounce, form.current_page, filterForms]\n );\n\n return (\n <>\n onChangeSearch(e.target.value)}\n placeholder='Search'\n className='mx-auto d-table'\n style={{ width: '90%', maxWidth: 300 }}\n />\n history.push('/admin/forms/save')}\n >\n ADD NEW FORM\n \n filterForms(search, e.current || 1)}\n className='m-3 elevation-5'\n rowKey={(record: FormListItem) => record.id.toString()}\n >\n \n \n (\n <>\n \n history.push(`/admin/forms/detail?code=${record.code}`)\n }\n />\n  \n \n history.push(`/admin/forms/save?code=${record.code}`)\n }\n />\n \n )}\n />\n \n \n );\n};\n\nexport default FormList;\n","import { Tabs, notification } from 'antd';\nimport cloneDeep from 'lodash/cloneDeep';\nimport React, { useEffect, useState, useCallback } from 'react';\nimport { FormListInterface, FormListItem } from '../../../interfaces/form';\nimport { sagaMiddleware } from '../../../store';\nimport { getForms } from '../../../store/sagas/form';\nimport AnswerList from './AnswerList/AnswerList';\nimport FormList from './FormList/FormList';\n\nconst AdminFormsPage: React.FC = () => {\n const [loading, setLoading] = useState(false);\n const [forms, setForms] = useState([]);\n const [formData, setFormData] = useState({\n data: [],\n total: 0,\n per_page: 10,\n current_page: 1,\n last_page: 1,\n next_page_url: null,\n prev_page_url: null,\n has_more_pages: false,\n first_item: 1,\n last_item: 1,\n });\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getForms,\n '',\n (err?: string, response?: FormListInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err,\n });\n } else if (!!response) {\n setForms(cloneDeep(response.data));\n setFormData(response);\n }\n }\n );\n }, []);\n\n const filterForms = useCallback((search: string = '', page: number = 1) => {\n setLoading(true);\n\n sagaMiddleware.run(\n getForms,\n search,\n (err?: string, response?: FormListInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err,\n });\n } else if (!!response) {\n setFormData(response);\n }\n },\n page\n );\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default AdminFormsPage;\n","import React from 'react';\nimport './Guideline.scss';\n\nconst AdminGuidelinePage: React.FC = () => (\n
\n

Guideline

\n

Why a guideline?

\n

\n When we're creating forms is important to understand a little of user\n experience and how a form should be created, and we create this guideline\n to help you to make decisions during the form creation.\n

\n

How to choose the type of question?

\n

\n First, we need to understand what kind of response we are expecting and\n how we will handle this response. If we want a personal answer, it must be\n a \"Text Box\", free for the user to explain and we will\n analyze each answer. If we want big data analytics, we should have options\n and see overall percentages of responses, such as understanding what\n features users like or dislike.\n

\n

\n When we have options, we need to understand how many options we will have\n and whether users can select multiple options. If we have a lot of\n options, it is best to have a \"Drop-down\" type, which\n will be a drop-down menu. If we have up to 10 options, we can choose\n either the \"Multiple choice\" type for single selections\n or the \"Checkboxes\" type for multiple selections.\n

\n

\n When we have an \"Text Box\", we have the type{' '}\n \"Text\" for text and also the data types{' '}\n \"Number\" and \"Date\", depending on what\n you need. Most of the time, selection options are best to analyze. You can\n also have the \"Other\" option where the user can type\n anything, and we can measure how much users prefer to type{' '}\n \"Other\" and also analyze which they most write in{' '}\n \"Other\".\n

\n
\n);\n\nexport default AdminGuidelinePage;\n","import React from 'react';\nimport './CustomDivider.scss';\n\ninterface Props {\n text?: string;\n customClasses?: string[];\n style?: React.CSSProperties | undefined;\n parentCustomClasses?: string;\n}\n\nconst CustomDivider: React.FC = ({ text, customClasses = [], style, parentCustomClasses = \"\" }) => (\n
\n {text && (\n {text}\n )}\n
\n);\n\nexport default CustomDivider;\n","import { Button, Card, Icon, Input, Modal, notification, Select, Switch, Tooltip } from 'antd';\nimport cloneDeep from 'lodash/cloneDeep';\nimport queryString from 'query-string';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { Link, useHistory } from 'react-router-dom';\nimport CustomDivider from '../../../../components/CustomDivider';\nimport VerticalDivider from '../../../../components/VerticalDivider/VerticalDivider';\nimport { SaveForm, SaveFormQuestion, SaveFormQuestionOption } from '../../../../interfaces/form';\nimport { sagaMiddleware } from '../../../../store';\nimport { deleteOptionSaga, deleteQuestionSaga, getFormByCode, saveFormSaga } from '../../../../store/sagas/form';\nimport { removeDiacritics } from '../../../../utils/string';\nimport './SaveForm.scss';\n\nconst getErrorForm = (form: SaveForm): string | void => {\n if (!form.title) return 'Form title is required';\n if (\n form.questions.filter(\n q =>\n !!q.question &&\n !!q.type_answer &&\n (q.type_answer === 'INPUT' ? !!q.type_data : true) &&\n q.options.length === q.options.filter(o => !!o.description).length\n ).length !== form.questions.length\n )\n return 'Some questions are invalid, check titles and options';\n};\n\nconst AdminSaveFormPage: React.FC = () => {\n const history = useHistory();\n\n const [loading, setLoading] = useState(false);\n const [form, setForm] = useState({\n title: 'Form Title',\n code: 'form_title',\n questions: [\n {\n question: 'Question title',\n is_required: false,\n type_answer: 'RADIO',\n type_data: 'TEXT',\n has_other: true,\n options: [\n {\n description: 'Option 1',\n },\n {\n description: 'Option 2',\n },\n ],\n },\n ],\n });\n\n useEffect(() => {\n const code: any = queryString.parse(history.location.search)?.code;\n\n if (!!code && !!code.toString()) {\n // Get By Code\n setLoading(true);\n\n sagaMiddleware.run(\n getFormByCode,\n code,\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err,\n });\n\n history.push('/admin/forms');\n return;\n } else if (!!response) {\n try {\n setForm({\n id: response.id,\n title: response.title,\n code: response.code,\n extra_question: response.extra_question,\n questions: response.questions.map((q: any) => ({\n id: q.id,\n question: q.question,\n is_required: q.is_required === 1,\n type_answer: q.type_answer,\n type_data: q.type_data || 'TEXT',\n has_other: q.has_other === 1,\n options: q.options.map((o: any) => ({\n id: o.id,\n description: o.description,\n })),\n })),\n });\n } catch (error) {\n notification.error({\n message: 'Error',\n description: 'Failed to load form, please try again later',\n });\n\n history.push('/admin/forms');\n return;\n }\n }\n }\n );\n }\n }, [history]);\n\n const deleteQuestion = useCallback((questionId: number, index: number) => {\n Modal.confirm({\n title: 'Are you sure you want to delete this question?',\n okText: 'Yes',\n okType: 'danger',\n cancelText: 'No',\n width: 300,\n icon: 'warning',\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(\n deleteQuestionSaga,\n questionId,\n (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err,\n });\n } else {\n notification.success({\n message: 'Success',\n description: 'Question deleted successfully',\n });\n\n setForm(state => ({\n ...state,\n questions: state.questions.filter((q, i) => i !== index),\n }));\n }\n }\n );\n },\n });\n }, []);\n\n const deleteOption = useCallback(\n (optionId: number, index: number, optionI: number) => {\n Modal.confirm({\n title: 'Are you sure you want to delete this option?',\n okText: 'Yes',\n okType: 'danger',\n cancelText: 'No',\n width: 300,\n icon: 'warning',\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(\n deleteOptionSaga,\n optionId,\n (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err,\n });\n } else {\n notification.success({\n message: 'Success',\n description: 'Option deleted successfully',\n });\n\n setForm(state => ({\n ...state,\n questions: state.questions.map((q, i) =>\n index === i\n ? {\n ...q,\n options: q.options.filter((o, oi) => oi !== optionI),\n }\n : q\n ),\n }));\n }\n }\n );\n },\n });\n },\n []\n );\n\n const onSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n\n const errorForm = getErrorForm(form);\n if (!!errorForm) {\n Modal.error({\n title: 'Error',\n content: errorForm,\n });\n return;\n }\n\n setLoading(true);\n sagaMiddleware.run(saveFormSaga, form, (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err,\n });\n return;\n }\n\n notification.success({\n message: 'Success',\n description: 'Form saved successfully',\n });\n history.push('/admin/forms');\n });\n },\n [form, history]\n );\n\n return (\n
\n

Save Form

\n

\n Before you create/edit a form, you might like these{' '}\n \n awesome{' '}\n \n tips\n \n \n .\n

\n

\n Required fields are marked with (*).\n

\n {loading ? (\n
\n \n
\n ) : (\n
\n
\n \n
\n
\n \n {\n e.persist();\n\n setForm(state => {\n const newState = { ...state };\n newState.title = e.target?.value ?? '';\n if (!state.id)\n newState.code = removeDiacritics(\n newState.title,\n true,\n true\n );\n return newState;\n });\n }}\n className='w-100'\n maxLength={255}\n />\n
\n
\n \n \n \n This code is generated based on your first title and will\n never change.\n \n
\n
\n \n {\n e.persist();\n\n setForm(state => ({\n ...state,\n extra_question: e.target.value,\n }));\n }}\n className='w-100'\n maxLength={255}\n />\n \n This extra question will appear at the end of the form\n questions as a \"Do you like to add anything?\". You can do\n any extra question, and also is not required, you can leave\n this field empty.\n \n
\n
\n
\n
\n

Questions

\n
\n {form.questions.map((question: SaveFormQuestion, index: number) => (\n \n
\n
\n {\n e.persist();\n\n setForm(state => ({\n ...state,\n questions: state.questions.map((q, i) =>\n i === index\n ? { ...question, question: e.target.value }\n : q\n ),\n }));\n }}\n value={question.question}\n className='w-100'\n placeholder='Question'\n maxLength={255}\n />\n
\n
\n \n setForm(state => ({\n ...state,\n questions: state.questions.map((q, i) =>\n i === index\n ? { ...question, type_answer: value }\n : q\n ),\n }))\n }\n value={question.type_answer}\n className='w-100'\n >\n Text Box\n Drop-down\n \n Multiple choice\n \n Checkboxes\n \n
\n {question.type_answer === 'INPUT' ? (\n <>\n
\n \n setForm(state => ({\n ...state,\n questions: state.questions.map((q, i) =>\n i === index\n ? { ...question, type_data: value }\n : q\n ),\n }))\n }\n value={question.type_data}\n className='w-100'\n >\n Text\n Number\n Date\n \n
\n
\n \n
\n \n ) : (\n <>\n {question.options.map(\n (option: SaveFormQuestionOption, optionI: number) => (\n \n \n {\n e.persist();\n\n setForm(state => ({\n ...state,\n questions: state.questions.map((q, i) =>\n i === index\n ? {\n ...question,\n options: q.options.map((o, oi) =>\n oi === optionI\n ? {\n ...o,\n description: e.target.value,\n }\n : o\n ),\n }\n : q\n ),\n }));\n }}\n value={option.description}\n className='w-100 mx-2'\n placeholder='Option'\n maxLength={255}\n />\n {\n if (!option.id) {\n setForm(state => ({\n ...state,\n questions: state.questions.map((q, i) =>\n index === i\n ? {\n ...q,\n options: q.options.filter(\n (o, oi) => oi !== optionI\n ),\n }\n : q\n ),\n }));\n } else {\n deleteOption(option.id, index, optionI);\n }\n }}\n />\n
\n )\n )}{' '}\n \n setForm(state => ({\n ...state,\n questions: state.questions.map((q, i) =>\n index === i\n ? {\n ...q,\n options: [\n ...q.options,\n { description: '' },\n ],\n }\n : q\n ),\n }))\n }\n >\n ADD OPTION\n \n \n )}\n
\n \n \n setForm(state => {\n const cloned = cloneDeep(state.questions[index]);\n\n return {\n ...state,\n questions: [\n ...state.questions,\n {\n ...cloned,\n id: undefined,\n options: cloned.options.map(o => ({\n ...o,\n id: undefined,\n })),\n },\n ],\n };\n })\n }\n />\n \n  \n \n {\n if (!question.id) {\n setForm(state => ({\n ...state,\n questions: state.questions.filter(\n (q, i) => i !== index\n ),\n }));\n } else {\n deleteQuestion(question.id, index);\n }\n }}\n />\n \n \n Required \n \n setForm(state => ({\n ...state,\n questions: state.questions.map((q, i) =>\n i === index ? { ...q, is_required } : q\n ),\n }))\n }\n />\n {question.type_answer !== 'INPUT' && (\n <>\n  \n \n Has other \n \n setForm(state => ({\n ...state,\n questions: state.questions.map((q, i) =>\n i === index ? { ...q, has_other } : q\n ),\n }))\n }\n />\n \n \n )}\n
\n
\n \n ))}\n \n setForm(state => ({\n ...state,\n questions: [\n ...state.questions,\n {\n question: '',\n is_required: false,\n type_answer: 'RADIO',\n type_data: 'TEXT',\n has_other: true,\n options: [\n {\n description: 'Option 1',\n },\n {\n description: 'Option 2',\n },\n ],\n },\n ],\n }))\n }\n >\n ADD QUESTION\n \n
\n
\n \n
\n
\n \n SAVE FORM\n \n
\n \n )}\n \n );\n};\n\nexport default AdminSaveFormPage;\n","import { call, select } from 'redux-saga/effects';\nimport { AppState } from '..';\nimport api from '../../api';\nimport { GiftCardInterface } from '../../interfaces/giftCard';\nimport { parseRequestError } from '../../utils/error';\n\nexport function* getGiftCards(\n filter: {\n startDate?: string;\n endDate?: string;\n user?: string;\n },\n callback: (err?: string, response?: GiftCardInterface) => void,\n page?: number\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n let search = '';\n\n if (!!filter.startDate) {\n search += `start_date=${filter.startDate}`;\n }\n\n if (!!filter.endDate) {\n search += `${!!search ? '&' : ''}end_date=${filter.endDate}`;\n }\n\n if (!!filter.user) {\n search += `${!!search ? '&' : ''}user=${filter.user}`;\n }\n\n if (!!page) {\n search += `${!!search ? '&' : ''}page=${page}`;\n }\n\n const response = yield call(api.get, `api/admin/gift-cards?${search}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* resendGiftCard(\n body: {\n email: string;\n giftcard_id: number;\n },\n callback: (err?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n yield call(api.post, 'api/admin/gift-cards', body, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback();\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import {\n Button,\n DatePicker,\n Input,\n Modal,\n notification,\n Select,\n Table,\n Tooltip\n} from 'antd';\nimport moment from 'moment';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { GiftCard, GiftCardInterface } from '../../../interfaces/giftCard';\nimport { sagaMiddleware } from '../../../store';\nimport { getGiftCards, resendGiftCard } from '../../../store/sagas/giftCard';\nimport { capitalizeTexts } from '../../../utils/string';\n\nconst AdminGiftCardPage: React.FC = () => {\n // Page Loading\n const [loading, setLoading] = useState(true);\n\n // Filters\n const [startDate, setStartDate] = useState(moment().startOf('month'));\n const [endDate, setEndDate] = useState(moment().endOf('month'));\n const [userSearch, setUserSearch] = useState('');\n\n // Data\n const [giftCards, setGiftCards] = useState({\n data: [],\n total: 0,\n per_page: 10,\n current_page: 1,\n last_page: 1,\n next_page_url: null,\n prev_page_url: null,\n has_more_pages: false,\n first_item: 1,\n last_item: 1\n });\n\n // Modal\n const [modalInfo, setModalInfo] = useState<{\n modal: boolean;\n email: string;\n gift?: GiftCard;\n }>({\n modal: false,\n email: '',\n gift: undefined\n });\n\n // Debounce\n const [debounce, setDebounce] = useState();\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getGiftCards,\n {\n startDate: moment()\n .startOf('month')\n .format('YYYY[-]MM[-]DD'),\n endDate: moment()\n .endOf('month')\n .format('YYYY[-]MM[-]DD')\n },\n (err?: string, response?: GiftCardInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err\n });\n } else if (!!response) {\n setGiftCards(response);\n }\n },\n giftCards.current_page\n );\n }, [setLoading, giftCards.current_page]);\n\n const filterGifts = useCallback(\n (filter: { startDate?: string; endDate?: string; user?: string }) => {\n if (debounce) clearTimeout(debounce);\n\n setDebounce(\n setTimeout(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getGiftCards,\n filter,\n (err?: string, response?: GiftCardInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err\n });\n } else if (!!response) {\n setGiftCards(response);\n }\n }\n );\n }, 400)\n );\n },\n [setLoading, debounce]\n );\n\n const resendEmail = useCallback((email: string, giftcard_id: number) => {\n Modal.confirm({\n title: `Send email to ${email}?`,\n okText: 'Yes',\n okType: 'primary',\n cancelText: 'No',\n width: 300,\n icon: 'warning',\n onOk() {\n setLoading(true);\n sagaMiddleware.run(\n resendGiftCard,\n {\n email,\n giftcard_id\n },\n (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err\n });\n } else {\n notification.success({\n message: 'Success',\n description:\n 'Email sent successfully, you will be able to see in some minutes.',\n duration: 7\n });\n\n setModalInfo({ modal: false, email: '', gift: undefined });\n }\n }\n );\n }\n });\n }, []);\n\n return (\n
\n

Gift Cards

\n
\n
\n {\n const newStart = e[0] ?? moment().startOf('month');\n const newEnd = e[1] ?? moment().endOf('month');\n\n setStartDate(newStart);\n setEndDate(newEnd);\n\n filterGifts({\n startDate: newStart.format('YYYY[-]MM[-]DD'),\n endDate: newEnd.format('YYYY[-]MM[-]DD'),\n user: !!userSearch ? userSearch : undefined\n });\n }}\n className=\"w-100\"\n />\n
\n
\n {\n setUserSearch(e.target.value);\n\n filterGifts({\n startDate: startDate.format('YYYY[-]MM[-]DD'),\n endDate: endDate.format('YYYY[-]MM[-]DD'),\n user: !!e.target.value ? e.target.value : undefined\n });\n }}\n className=\"w-100\"\n />\n
\n
\n \n setGiftCards(state => ({ ...state, current_page: e.current || 1 }))\n }\n className=\"my-3 elevation-5\"\n rowKey={(record: GiftCard) => record.id.toString()}\n >\n (\n \n {capitalizeTexts(record.user?.first_name ?? '')}{' '}\n {capitalizeTexts(record.user?.last_name ?? '')}\n \n )}\n />\n (\n \n {capitalizeTexts(record.receiver_name)} ({record.receiver_email})\n \n )}\n />\n (\n $ {record.total.toFixed(2)}\n )}\n />\n (\n {moment(record.created_at).format('MMM[, ]Do[, ]YYYY')}\n )}\n />\n (\n \n \n setModalInfo({\n modal: true,\n email: record.receiver_email,\n gift: record\n })\n }\n />\n \n )}\n />\n \n setModalInfo(state => ({ ...state, modal: false }))}\n closable={!loading}\n cancelButtonProps={{\n disabled: loading,\n icon: 'close-circle',\n shape: 'round',\n className: 'default-btn'\n }}\n okType=\"primary\"\n okButtonProps={{\n disabled: !modalInfo.gift || !modalInfo.email || loading,\n icon: loading ? 'loading' : 'check-circle',\n htmlType: 'button',\n shape: 'round',\n className: 'default-btn'\n }}\n onOk={() => {\n if (!!modalInfo.gift) {\n resendEmail(modalInfo.email, modalInfo.gift.id);\n }\n }}\n >\n {!!modalInfo.gift && !!modalInfo.gift.user && (\n <>\n

Send the Gift \"{modalInfo.gift.code}\" to:

\n \n setModalInfo(state => ({ ...state, email }))\n }\n className=\"w-100\"\n >\n \n Receiver ({modalInfo.gift.receiver_email})\n \n {modalInfo.gift.receiver_email !== modalInfo.gift.user.email && (\n \n Buyer ({modalInfo.gift.user.email})\n \n )}\n \n hello@babypage.com\n \n \n support@babypage.com\n \n \n katie@babypage.com\n \n \n yasine@babypage.com\n \n \n \n )}\n \n
\n );\n};\n\nexport default AdminGiftCardPage;\n","import React from 'react';\nimport working from '../../../assets/img/working.png';\n\nconst AdminIndexPage: React.FC = () => (\n \n
\n \n

\n Hey, we are working on a beautiful dashboard, for now, you can use the\n menu at left to navigate between the pages.\n

\n
\n \n);\n\nexport default AdminIndexPage;\n","import { call, put } from 'redux-saga/effects';\nimport api from '../../api';\nimport { clientId, clientSecret } from '../../env';\nimport { parseRequestError } from '../../utils/error';\nimport { changeAdmin } from '../ducks/admin';\n\nexport function* authAdmin(\n body: { email: string; password: string },\n callback: (response: any, error?: string) => void\n) {\n try {\n const response = yield call(api.post, 'api/admin/login', {\n username: body.email,\n password: body.password,\n grant_type: 'password',\n lang: 'en',\n operative_system: 'web',\n token_device: '',\n client_id: clientId,\n client_secret: clientSecret,\n });\n\n yield put(\n changeAdmin({\n ...response.data.data,\n })\n );\n\n callback(response.data.data);\n } catch (error) {\n callback({}, parseRequestError(error));\n }\n}\n","import { Button, Card, Form, Input, notification } from 'antd';\nimport { FormComponentProps } from 'antd/lib/form';\nimport React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\nimport { AppState, sagaMiddleware } from '../../../store';\nimport { authAdmin } from '../../../store/sagas/admin';\nimport './AdminLoginPage.scss'\n\nfunction hasErrors(fieldsError: Record) {\n return Object.keys(fieldsError).some(field => fieldsError[field]);\n}\n\ntype Props = FormComponentProps &\n RouteComponentProps & {\n access_token?: string;\n };\n\nclass AdminLoginPage extends PureComponent {\n state = {\n loading: false,\n };\n\n componentDidMount() {\n // Redirect user if is logged\n if (!!this.props.access_token) {\n this.props.history.push('/admin');\n }\n\n this.props.form.validateFields();\n }\n\n onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n\n this.props.form.validateFields((err: any, values: any) => {\n if (!err && !this.state.loading) {\n this.setState({ loading: true });\n\n sagaMiddleware.run(\n authAdmin,\n values,\n (response: any, error: any) => {\n this.setState({ loading: false });\n\n if (error) {\n notification.error({\n message: 'Error',\n description: error,\n });\n return;\n }\n\n this.props.history.push('/admin');\n }\n );\n }\n });\n };\n\n render() {\n const {\n getFieldDecorator,\n getFieldsError,\n getFieldError,\n isFieldTouched,\n } = this.props.form;\n\n const emailError = isFieldTouched('email') && getFieldError('email');\n const passwordError =\n isFieldTouched('password') && getFieldError('password');\n\n return (\n
\n \n

BabyPage Admin

\n
\n \n {getFieldDecorator('email', {\n rules: [\n {\n required: true,\n message: 'This field is required.',\n },\n {\n type: 'email',\n message: 'The email provided is not an email.',\n },\n ],\n })(\n \n )}\n \n \n {getFieldDecorator('password', {\n rules: [\n {\n required: true,\n message: 'Please enter at least 6 characters.',\n },\n { min: 6, message: 'Please enter at least 6 characters.' },\n ],\n })(\n \n )}\n \n \n \n Sign in\n \n \n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state: AppState) => ({\n access_token: state.admin.access_token,\n});\n\nexport default Form.create()(\n withRouter(connect(mapStateToProps)(AdminLoginPage))\n);\n","import { call, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { QuestionItem } from \"../../interfaces\";\nimport { parseRequestError } from \"../../utils/error\";\n\n/**\n * This function fetch all products\n **/\nexport function* fetchQuestions(\n event: string,\n callback: (questions: QuestionItem[]) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.post,\n \"api/questions?lang=en\",\n { event },\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n if (response.data && response.data.code === 200) {\n callback(response.data.data ? response.data.data : []);\n } else {\n callback([]);\n }\n } catch (error) {\n callback([]);\n }\n}\n\n/**\n * This function get questions by milestone id\n **/\nexport function* getQuestionsByMilestoneId(\n milestoneId: number,\n callback: (err?: string, response?: QuestionItem[]) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.get,\n `api/admin/questions?milestone=${milestoneId}`,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * This function delete questions by id\n **/\nexport function* deleteQuestion(\n id: number,\n callback: (err?: string, response?: QuestionItem[]) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n if (!accessToken) return;\n\n try {\n const response = yield call(api.delete, `api/admin/question/${id}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Update question\n */\nexport function* saveQuestion(\n id: number,\n data: any,\n callback: (err?: string, response?: QuestionItem) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n const url = id !== 0 ? `api/admin/question/${id}` : `api/admin/question`;\n const response = yield call(api.post, url, data, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { Button, Card, Input, Layout, Row, Select } from \"antd\";\nimport TextArea from \"antd/lib/input/TextArea\";\nimport React from \"react\";\nimport { QuestionItem } from \"../../interfaces\";\n\nconst { Content } = Layout;\n\ninterface Props {\n handleSubmit: (event: React.FormEvent) => void;\n selectedQuestion: QuestionItem;\n setSelectedQuestion: Function;\n handleClickOnDeleteButton: Function;\n}\n\nconst QuestionForm: React.FC = ({\n selectedQuestion,\n handleSubmit,\n setSelectedQuestion,\n handleClickOnDeleteButton\n}) => {\n return (\n
\n \n \n \n \n \n {\n e.persist();\n\n setSelectedQuestion((selectedQuestion: any) => ({\n ...selectedQuestion,\n title: e.target?.value\n }));\n }}\n />\n \n \n \n {\n e.persist();\n\n setSelectedQuestion((selectedQuestion: any) => ({\n ...selectedQuestion,\n question: e.target?.value\n }));\n }}\n />\n \n \n \n {\n e.persist();\n\n setSelectedQuestion((selectedQuestion: any) => ({\n ...selectedQuestion,\n answers: e.target?.value\n }));\n }}\n />\n \n \n \n {\n e.persist();\n\n setSelectedQuestion((selectedQuestion: any) => ({\n ...selectedQuestion,\n export: e.target?.value\n }));\n }}\n />\n \n \n \n \n setSelectedQuestion((selectedQuestion: any) => ({\n ...selectedQuestion,\n multiple_choice: value\n }))\n }\n >\n Simple\n Multiple Choice\n \n \n \n \n {selectedQuestion.id !== 0 ? \"UPDATE\" : \"SAVE\"}\n \n {\n setSelectedQuestion(null);\n }}\n >\n CANCEL\n \n {selectedQuestion.id !== 0 && (\n handleClickOnDeleteButton(selectedQuestion.id)}\n >\n DELETE\n \n )}\n \n \n \n \n
\n );\n};\n\nexport default QuestionForm;\n","import { Button, Card, Col, Row } from \"antd\";\nimport React from \"react\";\nimport { QuestionItem } from \"../../interfaces\";\n\ninterface Props {\n questions: QuestionItem[];\n setSelectedQuestion: Function;\n}\n\nconst QuestionList: React.FC = ({ questions, setSelectedQuestion }) => {\n return (\n <>\n {questions.length > 0 &&\n questions.map(question => (\n \n \n {\n setSelectedQuestion(question);\n }}\n >\n \n

{question.title}

\n
\n

{question.question}

\n \n \n
\n ))}\n \n \n {\n setSelectedQuestion({\n id: 0,\n title: \"\",\n question: \"\",\n export: \"\",\n answers: [],\n multiple_choice: 0,\n milestone_id: 0,\n order: 0,\n created_at: \"\",\n deleted_at: \"\",\n updated_at: \"\",\n type: \"\"\n });\n }}\n >\n ADD QUESTION\n \n \n \n \n );\n};\n\nexport default QuestionList;\n","import { Card, Layout, Modal, notification, Spin } from \"antd\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { QuestionItem } from \"../../interfaces\";\nimport { sagaMiddleware } from \"../../store\";\nimport {\n deleteQuestion,\n getQuestionsByMilestoneId,\n saveQuestion\n} from \"../../store/sagas/questions\";\nimport QuestionForm from \"./QuestionForm\";\nimport QuestionList from \"./QuestionList\";\n\nconst { Content } = Layout;\n\ninterface Props {\n milestoneId: number;\n}\n\nconst AdminEditableQuestionList: React.FC = ({ milestoneId }) => {\n const [loading, setLoading] = useState(false);\n const [questions, setQuestions] = useState([]);\n const [selectedQuestion, setSelectedQuestion] = useState(\n null\n );\n let { id } = useParams();\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getQuestionsByMilestoneId,\n id,\n (err?: string, response?: QuestionItem[]) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else if (!!response) {\n setQuestions(response);\n }\n }\n );\n }, [id]);\n\n const handleSubmit = useCallback(\n (event: any) => {\n event.preventDefault();\n\n if (selectedQuestion === null) return false;\n\n const {\n id,\n title,\n question,\n export: questionExport,\n answers,\n multiple_choice,\n milestone_id,\n order\n } = selectedQuestion;\n\n const payload: any = {\n id,\n title,\n question,\n export: questionExport,\n answers,\n multiple_choice,\n milestone_id: milestone_id !== 0 ? milestone_id : milestoneId,\n order: id !== 0 ? order : questions.length\n };\n\n setLoading(true);\n sagaMiddleware.run(\n saveQuestion,\n selectedQuestion.id,\n payload,\n (err?: string, response?: QuestionItem | undefined) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else {\n let messageSuccess = \"Question updated successfully\";\n if (selectedQuestion.id === 0) {\n messageSuccess = \"Question added successfully\";\n\n if (!!response) {\n setQuestions(questions => {\n return [...questions, response];\n });\n }\n } else {\n setQuestions(questions => {\n return questions.map((question: QuestionItem) => {\n if (question.id !== id) return question;\n\n return selectedQuestion;\n });\n });\n }\n\n notification.success({\n message: \"Success\",\n description: messageSuccess\n });\n\n setSelectedQuestion(null);\n }\n }\n );\n },\n [selectedQuestion, questions, milestoneId]\n );\n\n const handleClickOnDeleteButton = useCallback((id: number) => {\n Modal.confirm({\n title: \"Are you sure you want to delete this Question?\",\n okText: \"Yes\",\n okType: \"danger\",\n cancelText: \"No\",\n width: 300,\n icon: \"warning\",\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(deleteQuestion, id, (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else {\n setSelectedQuestion(null);\n\n setQuestions(questions => {\n return questions.filter(question => question.id !== id);\n });\n\n notification.success({\n message: \"Success\",\n description: \"Question deleted successfully\"\n });\n }\n });\n }\n });\n }, []);\n\n return (\n <>\n {loading ? (\n
\n \n
\n ) : (\n \n \n \n {selectedQuestion ? (\n \n ) : (\n \n )}\n \n \n \n )}\n \n );\n};\n\nexport default AdminEditableQuestionList;\n","import { call, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { parseRequestError } from \"../../utils/error\";\nimport { Frame } from \"../../interfaces/frame\";\n\n/**\n * Get frames \n */\n\nexport function* getFrames(\n callback: (err?: string, response?: Frame[]) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n const response = yield call(api.get, `api/get-frames?lang=en`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { call, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { MessageNotification } from \"../../interfaces/messageNotification\";\nimport { parseRequestError } from \"../../utils/error\";\n\n/**\n * Get message notifications for admin panel\n */\n\nexport function* getMessageNotificationsForAdmin(\n callback: (err?: string, response?: MessageNotification[]) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n const response = yield call(api.get, `api/admin/notifications`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { call, put, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { Milestone } from \"../../interfaces\";\nimport { User } from \"../../interfaces/user\";\nimport { isArrayEqual } from \"../../utils/array\";\nimport { parseRequestError } from \"../../utils/error\";\nimport { getMilestones, MilestoneState } from \"../ducks/milestones\";\n\n/**\n * This function fetch all Milestones info\n **/\nexport function* fetchMilestones(callback?: Function) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || user.user_level === 3) return;\n\n try {\n const response = yield call(api.get, \"api/get-milestones?lang=en\", {\n headers: {\n Authorization: user.access_token\n }\n });\n\n if (response.data && response.data.code === 200) {\n const data = response.data.data;\n const milestones: MilestoneState = yield select(\n (state: AppState) => state.milestones\n );\n\n if (!isArrayEqual(milestones.milestones, data)) {\n yield put(getMilestones(response.data.data));\n }\n }\n\n if (callback) callback();\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n\n/**\n * Get milestones for admin panel\n */\nexport function* getMilestonesForAdmin(\n filter: {\n title_name?: string;\n },\n callback: (err?: string, response?: Milestone[]) => void,\n page?: number\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n let search = \"\";\n\n if (!!filter.title_name) {\n search += `&title_name=${filter.title_name}`;\n }\n\n if (!!page) {\n search += `&page=${page}`;\n }\n\n const response = yield call(\n api.get,\n `api/admin/milestones?lang=en${search}`,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get milestones by id for admin panel\n */\nexport function* getMilestoneByIdForAdmin(\n id: number,\n callback: (err?: string, response?: Milestone[]) => void,\n page?: number\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n const response = yield call(api.get, `api/admin/milestone/${id}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Create milestone\n */\nexport function* saveMilestone(\n id: number,\n form: any,\n callback: (err?: string, response?: Milestone) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n const endpoint = id !== 0 ? `api/admin/milestone/${id}` : \"api/admin/milestone\";\n const response = yield call(api.post, endpoint, form, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Delete milestone by id\n */\nexport function* deleteMilestone(id: number, callback: (err?: string) => void) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n yield call(api.delete, `api/admin/milestone/${id}`, {\n headers: {\n Authorization: accessToken\n }\n });\n\n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { Avatar, Tabs } from \"antd\";\nimport { Dictionary } from \"lodash\";\nimport React from \"react\";\nimport { Frame } from \"../../interfaces/frame\";\n\nconst { TabPane } = Tabs;\n\ninterface Props {\n milestoneForm: any;\n setMilestoneForm: Function;\n groupedFrames: Dictionary;\n currentTab: string;\n}\n\nconst FrameImageTabs: React.FC = ({\n milestoneForm,\n setMilestoneForm,\n groupedFrames,\n currentTab\n}) => {\n return (\n {\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n activeTabKey: activeKey\n }));\n }}\n >\n {Object.keys(groupedFrames).map(key => (\n \n {groupedFrames[key].map((frame, key) => {\n let styles = {};\n\n if (frame.id === milestoneForm.background_id) {\n styles = {\n margin: \"10px\",\n height: \"40px\",\n width: \"40px\",\n borderStyle: \"solid\",\n borderColor: \"rgb(245, 34, 44)\"\n };\n } else {\n styles = {\n margin: \"10px\",\n height: \"40px\",\n width: \"40px\"\n };\n }\n\n return (\n \n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n background_id: frame.id\n }))\n }\n >\n \n \n );\n })}\n \n ))}\n \n );\n};\n\nexport default FrameImageTabs;\n","import { DatePicker, InputNumber } from \"antd\";\nimport moment from \"moment\";\nimport React from \"react\";\n\ninterface Props {\n milestoneForm: any;\n setMilestoneForm: Function;\n}\n\nconst InputFromTypeOfMilestone: React.FC = ({\n milestoneForm,\n setMilestoneForm\n}) => {\n return (\n <>\n {milestoneForm.typeOfMilestone === \"holiday\" && (\n <>\n \n {\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n active_date: momentDate\n }));\n }}\n />\n \n )}\n {milestoneForm.typeOfMilestone === \"weeks\" && (\n <>\n \n {\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n age_weeks: value\n }));\n }}\n />\n \n )}\n {milestoneForm.typeOfMilestone === \"months\" && (\n <>\n \n {\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n age_months: value\n }));\n }}\n />\n \n )}\n {milestoneForm.typeOfMilestone === \"years\" && (\n <>\n \n {\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n age_years: value,\n age_months: value\n }));\n }}\n />\n \n )}\n \n );\n};\n\nexport default InputFromTypeOfMilestone;\n","import { Button, Card, Input, Layout, Row, Select, Tag } from \"antd\";\nimport { Dictionary } from \"lodash\";\nimport React from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Frame } from \"../../interfaces/frame\";\nimport { MessageNotification } from \"../../interfaces/messageNotification\";\nimport FrameImageTabs from \"./FrameImageTabs\";\nimport InputFromTypeOfMilestone from \"./InputFromTypeOfMilestone\";\n\nconst { Content } = Layout;\n\ninterface Props {\n milestoneId: number;\n handleSubmit: (event: React.FormEvent) => void;\n milestoneForm: any;\n handleImage: (event: React.ChangeEvent) => void;\n setMilestoneForm: Function;\n typeOfMilestoneValue: \"holiday\" | \"weeks\" | \"months\" | \"years\" | undefined;\n messageNotifications: MessageNotification[];\n groupedFrames: Dictionary;\n currentTab: string;\n handleClickOnDeleteButton: Function;\n}\n\nconst AdminMilestoneForm: React.FC = ({\n milestoneId,\n handleSubmit,\n milestoneForm,\n handleImage,\n setMilestoneForm,\n typeOfMilestoneValue,\n messageNotifications,\n groupedFrames,\n currentTab,\n handleClickOnDeleteButton\n}) => {\n const history = useHistory();\n\n return (\n
\n \n }\n >\n \n \n \n
\n \n \n \n UPLOAD IMAGE\n \n \n
\n
\n \n \n {\n e.persist();\n\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n title: e.target?.value\n }));\n }}\n />\n \n \n \n {\n e.persist();\n\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n description: e.target?.value\n }));\n }}\n />\n \n \n \n \n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n typeOfMilestone: value,\n age_weeks: 1,\n age_months: 1\n }))\n }\n >\n Holiday\n Weeks\n Months\n Years\n \n \n \n \n \n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n message_id: value\n }))\n }\n >\n {messageNotifications.map(message => (\n \n {message.description}\n \n ))}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {milestoneId !== 0 ? \"UPDATE\" : \"CREATE\"}\n \n history.push(\"/admin/milestones\")}\n >\n CANCEL\n \n {milestoneId !== 0 && (\n handleClickOnDeleteButton(milestoneForm.id)}\n >\n DELETE\n \n )}\n \n
\n
\n \n \n );\n};\n\nexport default AdminMilestoneForm;\n","import { Modal, notification, Spin } from \"antd\";\nimport { Dictionary, groupBy } from \"lodash\";\nimport moment from \"moment\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Milestone } from \"../../interfaces\";\nimport { Frame } from \"../../interfaces/frame\";\nimport { MessageNotification } from \"../../interfaces/messageNotification\";\nimport { sagaMiddleware } from \"../../store\";\nimport { getFrames } from \"../../store/sagas/frame\";\nimport { getMessageNotificationsForAdmin } from \"../../store/sagas/messageNotification\";\nimport {\n deleteMilestone,\n getMilestoneByIdForAdmin,\n saveMilestone\n} from \"../../store/sagas/milestone\";\nimport AdminMilestoneForm from \"./AdminMilestoneForm\";\n\ninterface Props {\n milestoneId: number;\n}\n\nconst AdminMilestoneFormContainer: React.FC = ({ milestoneId }) => {\n const [loading, setLoading] = useState(false);\n const [milestone, setMilestone] = useState(Object);\n const [messageNotifications, setMessageNotifications] = useState<\n MessageNotification[]\n >([]);\n const [groupedFrames, setGroupedFrames] = useState>({});\n const [frames, setFrames] = useState([]);\n const [milestoneForm, setMilestoneForm] = useState({});\n const history = useHistory();\n\n useEffect(() => {\n if (milestoneId !== 0) {\n setLoading(true);\n\n sagaMiddleware.run(\n getMilestoneByIdForAdmin,\n milestoneId,\n (err?: string, response?: Milestone) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else if (!!response) {\n setMilestone(response);\n setMilestoneForm({\n ...response,\n age_years: parseInt(response.age_months) / 12\n });\n }\n }\n );\n }\n }, [milestoneId]);\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getMessageNotificationsForAdmin,\n (err?: string, response?: MessageNotification[]) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else if (!!response) {\n setMessageNotifications(response);\n }\n }\n );\n }, []);\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(getFrames, (err?: string, response?: Frame[]) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else if (!!response) {\n const frames = groupBy(response, frame => frame.folder);\n setGroupedFrames(frames);\n setFrames(response);\n }\n });\n }, []);\n\n const typeOfMilestoneValue = useMemo((): any => {\n if (!!milestoneForm.typeOfMilestone) return milestoneForm.typeOfMilestone;\n\n let typeOfMilestoneValue: string = \"\";\n\n if (\n parseFloat(milestoneForm.age_months) > 0 &&\n parseFloat(milestoneForm.age_months) % 12 === 0\n ) {\n typeOfMilestoneValue = \"years\";\n } else if (\n parseFloat(milestoneForm.age_months) > 0 &&\n parseFloat(milestoneForm.age_months) % 12 !== 0\n ) {\n typeOfMilestoneValue = \"months\";\n } else if (\n !(parseFloat(milestoneForm.age_months) > 0) &&\n milestoneForm.age_weeks > 0\n ) {\n typeOfMilestoneValue = \"weeks\";\n } else {\n typeOfMilestoneValue = \"holiday\";\n }\n\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n typeOfMilestone: typeOfMilestoneValue\n }));\n\n return typeOfMilestoneValue;\n }, [\n milestoneForm.age_months,\n milestoneForm.age_weeks,\n milestoneForm.typeOfMilestone\n ]);\n\n const currentTab = useMemo((): string => {\n const currentFrame = frames.find(\n frame => frame.id === milestone.background_id\n );\n\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n activeTabKey: !!currentFrame ? currentFrame.folder : \"4th\"\n }));\n\n return !!currentFrame ? currentFrame.folder : \"4th\";\n }, [milestone, frames]);\n\n const handleImage = useCallback((event: any) => {\n const file = event.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onloadend = function() {\n setMilestoneForm((milestoneForm: any) => ({\n ...milestoneForm,\n url_image: reader.result,\n image: {\n file,\n value: reader.result\n }\n }));\n };\n }, []);\n\n const handleSubmit = useCallback(\n (event: any) => {\n event.preventDefault();\n\n const {\n title,\n description,\n image,\n active_date,\n age_months,\n age_weeks,\n message_id,\n background_id,\n typeOfMilestone,\n url_image\n } = milestoneForm;\n\n if (!url_image && !image) {\n notification.error({\n message: \"Error\",\n description: \"An image is required.\"\n });\n\n return;\n }\n\n const payload: any = {\n title: title,\n description: description,\n image: image.file != null ? image.file : undefined,\n message:\n message_id === \"None\" || !message_id\n ? null\n : milestoneForm.message_id,\n background_id: background_id\n };\n\n if (payload.background_id === null) {\n delete payload.background_id;\n }\n switch (typeOfMilestone) {\n case \"holiday\":\n payload.active_date = moment(active_date).format(\"YYYY-MM-DD\");\n payload.age_weeks = -999;\n payload.age_months = 0;\n break;\n case \"weeks\":\n payload.age_weeks = age_weeks;\n payload.age_months = 0;\n break;\n case \"months\":\n payload.age_months = age_months;\n payload.age_weeks = age_months * 4;\n break;\n case \"years\":\n payload.age_months = age_months * 12;\n payload.age_weeks = age_months * 12 * 4;\n break;\n default:\n break;\n }\n\n const formData: FormData = new FormData();\n for (const key in payload) {\n if (payload[key] !== undefined) {\n formData.append(key, payload[key]);\n }\n }\n\n setLoading(true);\n sagaMiddleware.run(\n saveMilestone,\n milestoneId,\n formData,\n (err?: string, response?: Milestone) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else {\n if (milestoneId === 0 && !!response) {\n history.push(`/admin/milestones/${response.id}`);\n } else {\n notification.success({\n message: \"Success\",\n description: \"Milestone saved successfully\"\n });\n }\n }\n }\n );\n },\n [milestoneForm, milestoneId, history]\n );\n\n const handleClickOnDeleteButton = useCallback(\n (id: number) => {\n Modal.confirm({\n title: \"Are you sure you want to delete this Milestone?\",\n okText: \"Yes\",\n okType: \"danger\",\n cancelText: \"No\",\n width: 300,\n icon: \"warning\",\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(deleteMilestone, id, (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else {\n history.push(\"/admin/milestones\");\n }\n });\n }\n });\n },\n [history]\n );\n\n return (\n <>\n {loading ? (\n
\n \n
\n ) : (\n \n )}\n \n );\n};\n\nexport default AdminMilestoneFormContainer;\n","import { Col, Row } from \"antd\";\nimport React from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport AdminEditableQuestionList from \"../../../../components/AdminEditableQuestionList/AdminEditableQuestionList\";\nimport AdminMilestoneFormContainer from \"../../../../components/AdminMilestoneForm/AdminMilestoneFormContainer\";\n\nconst MilestoneDetailPage: React.FC = () => {\n let { id } = useParams();\n\n return (\n
\n

Milestone Detail

\n {!!id && (\n \n \n \n \n \n \n \n \n )}\n
\n );\n};\n\nexport default MilestoneDetailPage;\n","import { Avatar, Button, Card, Col, Input, notification, Row, Spin } from \"antd\";\nimport Meta from \"antd/lib/card/Meta\";\nimport Chunk from \"lodash/chunk\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Milestone } from \"../../../../interfaces/milestone\";\nimport { sagaMiddleware } from \"../../../../store\";\nimport { getMilestonesForAdmin } from \"../../../../store/sagas/milestone\";\n\nconst MilestoneListPage: React.FC = () => {\n const [loading, setLoading] = useState(false);\n const [milestoneSearch, setMilestoneSearch] = useState(\"\");\n const [debounce, setDebounce] = useState();\n const [milestoneList, setMilestoneList] = useState([]);\n const [fragmentedMilestoneList, setFragmentedMilestoneList] = useState<\n Milestone[][]\n >([]);\n const history = useHistory();\n\n const chunkMilestoneList = useCallback(\n (milestoneList: Milestone[]): Milestone[][] => {\n return Chunk(milestoneList, 3);\n },\n []\n );\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getMilestonesForAdmin,\n {},\n (err?: string, response?: Milestone[]) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else if (!!response) {\n setMilestoneList(response);\n setFragmentedMilestoneList(chunkMilestoneList(response));\n }\n }\n );\n }, [chunkMilestoneList]);\n\n const filterMilestoneList = useCallback(\n milestoneSearch => {\n setLoading(true);\n\n const searchWordsArray = milestoneSearch\n .trim()\n .split(\" \")\n .filter((word: string) => word.length > 0)\n .map((word: string) => word.toLowerCase());\n\n if (searchWordsArray.length < 1) {\n setFragmentedMilestoneList(chunkMilestoneList(milestoneList));\n } else {\n const filteredMilestones = milestoneList.filter(\n (milestone: Milestone) => {\n const matchesArray = searchWordsArray.filter(\n (word: string) =>\n milestone.title_name.toLowerCase().indexOf(word) >= 0\n );\n return matchesArray.length > 0;\n }\n );\n\n setFragmentedMilestoneList(chunkMilestoneList(filteredMilestones));\n }\n\n setLoading(false);\n },\n [milestoneList, chunkMilestoneList]\n );\n\n const onChangeMilestoneSearch = useCallback(\n milestoneSearch => {\n if (debounce) clearTimeout(debounce);\n\n setDebounce(\n setTimeout(() => {\n filterMilestoneList(milestoneSearch);\n }, 400)\n );\n },\n [debounce, filterMilestoneList]\n );\n\n return (\n
\n

Milestones

\n
\n
\n {\n setMilestoneSearch(e.target.value);\n onChangeMilestoneSearch(e.target.value);\n }}\n className=\"w-100\"\n />\n
\n
\n \n {\n history.push('/admin/milestones/new');\n }}\n >\n CREATE A NEW MILESTONE\n \n \n {loading && (\n
\n \n
\n )}\n {fragmentedMilestoneList.length > 0 &&\n fragmentedMilestoneList.map((chunk: any, index: number) => (\n \n {chunk.map((milestone: Milestone) => {\n return (\n \n \n history.push(`/admin/milestones/${milestone.id}`)\n }\n >\n \n }\n title={milestone.title_name}\n description={milestone.description}\n />\n \n \n );\n })}\n \n ))}\n
\n );\n};\n\nexport default MilestoneListPage;\n","import { Col, Row } from \"antd\";\nimport React from \"react\";\nimport AdminMilestoneFormContainer from \"../../../../components/AdminMilestoneForm/AdminMilestoneFormContainer\";\n\nconst MilestoneNewPage: React.FC = () => {\n return (\n
\n

You're creating a new Milestone

\n \n \n \n \n \n
\n );\n};\n\nexport default MilestoneNewPage;\n","import { AxiosResponse } from \"axios\";\nimport { call, put, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { DefaultResponse } from \"../../interfaces/http\";\nimport { User } from \"../../interfaces/user\";\nimport { parseRequestError } from \"../../utils/error\";\nimport { getPhotos, PhotoState } from \"../ducks/photos\";\n\nexport interface FileUploadS3 {\n image: File | Blob;\n folder: \"bps\" | \"books\" | \"photos\" | \"bps_content\";\n baby_id?: number;\n old_image?: string;\n gallery_image?: string;\n}\n\nexport interface FileUploadedS3 {\n high_res: string;\n thumbnail: string;\n high_url: string;\n thumb_url: string;\n}\n\nexport function* savePhotosS3(\n photos: FileUploadS3[],\n callback: (error: string | null, responses?: FileUploadedS3[]) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n type Response = AxiosResponse>;\n\n const responses: Response[] = [];\n\n for (const photo of photos) {\n const formData: FormData = new FormData();\n formData.append(\"image\", photo.image);\n formData.append(\"folder\", photo.folder);\n if (!!photo.gallery_image) formData.append(\"gallery_image\", photo.gallery_image);\n if (!!photo.old_image) formData.append(\"old_image\", photo.old_image);\n if (!!photo.baby_id) formData.append(\"baby_id\", photo.baby_id.toString());\n\n const response: Response = yield call(\n api.post,\n \"api/save-image-s3\",\n formData,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n responses.push(response);\n }\n\n if (\n responses.length === 0 ||\n responses.length !== photos.length ||\n responses.find((response: Response) => response.data.code !== 200)\n ) {\n throw new Error(\"Error saving images, try again later\");\n }\n\n callback(\n null,\n responses.map((response: Response) => response.data.data)\n );\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* savePhotosShareS3(\n photo: File | Blob,\n babypageId: number,\n callback: (error: string | null, response?: FileUploadedS3) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n type Response = AxiosResponse>;\n\n const formData: FormData = new FormData();\n formData.append(\"image\", photo);\n formData.append(\"babypage_id\", babypageId.toString());\n\n const response: Response = yield call(\n api.post,\n \"api/save-image-share\",\n formData,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n callback(null, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* fetchBabyPhotos(\n baby_id: string,\n page:number,\n callback: (error: string | null, babyPhotos?: any\n ) => void) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || user.user_level === 3) return;\n\n try {\n const response: any = yield call(api.get, `api/get-photos/${baby_id}?lang=en&limit=9&page=${page}`, {\n headers: {\n Authorization: user.access_token\n }\n });\n if (response.data && response.data.code === 200) {\n callback(null, response.data.data);\n } else {\n throw new Error('The selected id is invalid.');\n }\n }catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* fetchPhotos(callback?: (error: string | null) => void) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || user.user_level === 3) return;\n\n try {\n const response: any = yield call(api.get, \"api/get-photos?lang=en\", {\n headers: {\n Authorization: user.access_token\n }\n });\n\n if (!!response.data.data && Array.isArray(response.data.data)) {\n let photos: PhotoState = [];\n\n response.data.data.forEach((e: any) => {\n if (!!e.photos && !!e.photos.length) {\n photos = [\n ...photos,\n ...e.photos.map((p: string) => ({ url: p, baby_id: e.id }))\n ];\n }\n });\n\n yield put(getPhotos([...photos]));\n }\n\n if (callback) callback(null);\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n","import moment from 'moment';\nimport { call, put, select, all } from 'redux-saga/effects';\nimport { AppState, sagaMiddleware } from '..';\nimport api from '../../api';\nimport { Baby } from '../../interfaces';\nimport { isArrayEqual } from '../../utils/array';\nimport { parseRequestError } from '../../utils/error';\nimport {\n BabyState,\n getBabies,\n selectBaby,\n selectLastBaby,\n} from '../ducks/baby';\nimport { sumChildCount } from '../ducks/user';\nimport { User } from '../../interfaces/user';\nimport { fetchMilestones } from './milestone';\nimport { fetchPhotos, FileUploadS3 } from './image';\n\n/**\n * This function fetch all user's babies\n * If user has at least one baby,\n * will select the first baby\n **/\nexport function* fetchBabies(\n callback?: (error: string | null) => void,\n selectIndex?: number,\n sortBy?: string\n) {\n const user: User = yield select((state: AppState) => state.user);\n if (!user.access_token || user.user_level === 3) return;\n\n try {\n const response = yield call(api.get, `api/babies?lang=en&sorted_by=${!!sortBy ? sortBy : \"date\"}`, {\n headers: {\n Authorization: user.access_token,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const data = response.data.data;\n const babyState: BabyState = yield select(\n (state: AppState) => state.baby\n );\n\n if (!isArrayEqual(babyState.babies, data)) {\n yield put(getBabies([...data]));\n\n if (selectIndex !== undefined && selectIndex >= 0) {\n yield put(selectBaby(selectIndex));\n } else if (babyState.babySelectedIndex === undefined) {\n yield put(selectBaby(0));\n } else {\n // The update should validate if baby changes on reducer\n yield put(selectBaby(babyState.babySelectedIndex));\n }\n }\n }\n\n if (callback) callback(null);\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n\nexport function* getBabyStorage(\n id: number,\n callback: (baby: Baby | undefined) => void\n) {\n const babies: Baby[] = yield select((state: AppState) => state.baby.babies);\n callback(babies.find(b => b.id === id));\n}\n\n/**\n * Add or Update a child\n */\nexport function* saveChild(\n child: any,\n callback?: (error?: string, description?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n try {\n const response = yield call(\n api[!!child.id ? 'put' : 'post'],\n `api/${!!child.id ? 'update-child' : 'add-kiddo'}?lang=en`,\n !!child.id ? getChildForUpdate(child) : getChildForAdd(child),\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n const message : string = !!child.id ? \"Child Updated\" : \"Child Added\" ;\n\n if (response.data && response.data.code === 200) {\n let index = -1;\n\n if (!!child.id) {\n const babies: Baby[] = yield select(\n (state: AppState) => state.baby.babies\n );\n index = babies.findIndex(b => b.id === child.id);\n sagaMiddleware.run(fetchBabies, undefined, index);\n } else {\n yield put(getBabies([...response.data.data]));\n yield put(sumChildCount());\n yield put(selectLastBaby());\n }\n }\n\n yield all([fetchBabies(), fetchMilestones(), fetchPhotos()]);\n\n if (callback) callback(undefined, message);\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n\n/**\n * Delete a child\n */\nexport function* deleteChild(\n id: number,\n callback?: (error?: string, description?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n try {\n const response = yield call(api.delete, `api/babies/${id}?lang=en`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const babyState: BabyState = yield select(\n (state: AppState) => state.baby\n );\n const babies = babyState.babies.filter(b => b.id !== id);\n yield put(getBabies(babies));\n yield put(selectBaby(0));\n }\n\n if (callback) callback(undefined, 'Baby deleted');\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n\nexport function* saveProfilePicture(\n childId: number,\n photo: FileUploadS3,\n callback?: (error?: string, description?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n try {\n const formData: FormData = new FormData();\n formData.append(\"image\", photo.image);\n formData.append(\"id\", childId.toString());\n\n const response = yield call(\n api['post'],\n `api/profilePicture`,\n formData,\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n const message : string = \"PHOTO Uploaded\" ;\n\n if (response.data && response.data.code === 200) {\n sagaMiddleware.run(fetchBabies, undefined); \n }\n\n yield all([fetchBabies(), fetchMilestones(), fetchPhotos()]);\n\n if (callback) callback(undefined, message);\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n\nconst getChildForAdd = (child: any) => ({\n ...child,\n baby_middle_name: !!child.baby_middle_name ? child.baby_middle_name : '',\n baby_birthplace: !!child.baby_birthplace ? child.baby_birthplace : '',\n height: !!child.height ? child.height : 0,\n weight_lbs: !!child.weight_lbs ? child.weight_lbs : 0,\n weight_oz: !!child.weight_oz ? child.weight_oz : 0,\n baby_birthdate: child.baby_birthdate ?`${moment(child.baby_birthdate).format(\n 'YYYY[-]MM[-]DD'\n )} 00:00:00` : `${moment(child.baby_duedate).format(\n 'YYYY[-]MM[-]DD'\n )} 00:00:00`,\n due_date: child.baby_duedate ? `${moment(child.baby_duedate).format(\n 'YYYY[-]MM[-]DD'\n )} 00:00:00` : undefined,\n baby_time: '21:00:00',\n gender: 0,\n});\n\nconst getChildForUpdate = (child: any) => {\n const weightLbs = !!child.weight_lbs ? child.weight_lbs : 0;\n const weightOz = !!child.weight_oz ? child.weight_oz : 0;\n\n return {\n ...child,\n gender: child.baby_gender,\n first: child.baby_first_name,\n middle: !!child.baby_middle_name ? child.baby_middle_name : '',\n last: child.baby_last_name,\n birthplace: !!child.baby_birthplace ? child.baby_birthplace : '',\n birthdate: !!child.baby_birthdate ? `${moment(child.baby_birthdate).format(\n 'YYYY[-]MM[-]DD'\n )}` : undefined,\n due_date: child.baby_duedate ? `${moment(child.baby_duedate).format(\n 'YYYY[-]MM[-]DD'\n )} 00:00:00` : undefined,\n time: '21:00:00',\n height: !!child.height ? child.height : 0,\n weight: weightLbs * 16 + weightOz,\n };\n};\n","import { call, put, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { SaveBabyPage, Border, Illustration } from \"../../interfaces\";\nimport { User } from \"../../interfaces/user\";\nimport { isArrayEqual } from \"../../utils/array\";\nimport {\n getBorders,\n getIllustrations,\n saveDraftBabyPage,\n} from \"../ducks/bpHelper\";\n\n/**\n * This function fetch all Borders\n **/\nexport function* fetchBorders() {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || user.user_level === 3) return;\n\n try {\n const response = yield call(api.get, \"api/borders\", {\n headers: {\n Authorization: user.access_token,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const data = response.data.data;\n const borders: Border[] = yield select(\n (state: AppState) => state.bpHelper.borders\n );\n\n if (!isArrayEqual(borders, data)) {\n yield put(getBorders(data));\n }\n }\n } catch (error) {}\n}\n\n/**\n * This function fetch all Illustrations\n **/\nexport function* fetchIllustrations() {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || user.user_level === 3) return;\n\n try {\n const response = yield call(api.get, \"api/illustrations\", {\n headers: {\n Authorization: user.access_token,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const data = response.data.data;\n const illustrations: Illustration[] = yield select(\n (state: AppState) => state.bpHelper.illustrations\n );\n\n if (!isArrayEqual(illustrations, data)) {\n yield put(getIllustrations(data));\n }\n }\n } catch (error) {}\n}\n\n/**\n * This function save draft babypage before upgrade to PLUS\n **/\nexport function* setDraftBabyPage(data: SaveBabyPage) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || user.user_level === 3) return;\n\n try {\n yield put(saveDraftBabyPage(data));\n } catch (error) {}\n}\n","import { STRIPE_KEY } from './env';\ndeclare const Stripe: any;\n\nexport { Stripe };\n\nexport const createCardToken = (card: {\n number: number;\n exp_month: number;\n exp_year: number;\n cvc: number;\n name: string;\n}): Promise =>\n new Promise((resolve, reject) => {\n Stripe.setPublishableKey(STRIPE_KEY);\n\n Stripe.card.createToken(card, (_: any, response: any) => {\n if (!!response.error) {\n return reject({ message: response.error.message });\n }\n return resolve(response.id);\n });\n });\n","import { call, put, select } from 'redux-saga/effects';\nimport { AppState } from '..';\nimport api from '../../api';\nimport { User } from '../../interfaces/user';\nimport {Customer} from '../../interfaces/customer'\nimport { parseRequestError } from '../../utils/error';\nimport { changeCustomer } from '../ducks/customer';\nimport { isEqual } from 'lodash';\nimport { changeUser } from '../ducks/user';\nimport { createCardToken } from '../../stripe';\n\n/**\n * Create Customer\n */\nexport function* createCustomer(callback?: (err?: string) => void) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token) return;\n if (!!user.stripe_id) return;\n\n try {\n const response = yield call(\n api.post,\n `api/stripe/create-customer?lang=en`,\n { email: user.email },\n {\n headers: {\n Authorization: user.access_token,\n },\n }\n );\n\n if (!!response.data.data) {\n yield put(changeUser({ stripe_id: response.data.data.id }));\n }\n\n yield call(getCustomerInfo);\n\n if (callback) callback(undefined);\n return response.data.data.id;\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n return null\n}\n\n/**\n * Create Guest user Customer\n */\n export function* createGuestCustomer(callback?: (err?: string) => void) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token) return;\n if (!!user.main_user.stripe_id) return;\n\n try {\n const response = yield call(\n api.post,\n `api/stripe/create-customer?lang=en`,\n { main_user_id: user.main_user.id },\n {\n headers: {\n Authorization: user.access_token,\n },\n }\n );\n if (!!response.data.data) {\n yield put(changeUser({ main_user: { ...user.main_user, stripe_id: response.data.data.id } }));\n }\n\n yield call(getCustomerInfo);\n\n if (callback) callback(undefined);\n \n return response.data.data.id;\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n return null\n}\n\n/**\n * Get Customer Info\n */\nexport function* getCustomerInfo(callback?: (err?: string) => void) {\n const user: User = yield select((state: AppState) => state.user);\n const customer: Customer = yield select ((state: AppState) => state.customer)\n const mainUserId = yield select(\n (state: AppState) => state.user.main_user?.id\n );\n const mainUserStripeId = yield select(\n (state: AppState) => state.user.main_user?.stripe_id\n );\n\n if (!user.access_token || (!user.stripe_id && !customer.id)) return;\n let stripeId = user.stripe_id ? user.stripe_id : customer.id;\n if (mainUserId && !!user.guest_user) stripeId = mainUserStripeId;\n\n try {\n const response = yield call(\n api.get,\n `api/stripe/retrieve-customer/${stripeId}?lang=en`,\n {\n headers: {\n Authorization: user.access_token,\n },\n }\n );\n\n if (response.data && response.data.code === 200) {\n const oldCustomer = yield select((state: AppState) => state.customer);\n\n if (!isEqual(oldCustomer, response.data.data)) {\n yield put(changeCustomer(response.data.data));\n }\n\n if (callback) callback(undefined);\n } else {\n throw new Error('Error getting customer info');\n }\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n\nexport function* addCustomerCard(\n card: {\n number: number;\n exp_month: number;\n exp_year: number;\n cvc: number;\n name: string;\n },\n callback: (err?: string, card_id?: string) => void\n) {\n const user: User = yield select((state: AppState) => state.user);\n const customer: Customer = yield select ((state: AppState) => state.customer)\n let stripeId = user?.stripe_id ?? customer?.id;\n \n if (!user.access_token || !stripeId) {\n return callback('Invalid user, please try to refresh your page');\n }\n\n try {\n const token = yield call(createCardToken, card);\n\n if (!!token) {\n const response = yield call(\n api.post,\n 'api/stripe/create-card',\n {\n source: token,\n customer_id: stripeId,\n },\n {\n headers: {\n Authorization: user.access_token,\n },\n }\n );\n\n if (\n !!response &&\n !!response.data &&\n !!response.data.data &&\n !!response.data.data.id\n ) {\n yield call(getCustomerInfo);\n return callback(undefined, response.data.data.id);\n }\n }\n\n throw new Error('Invalid Card');\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* updateCustomerCard(\n default_source: string,\n callback: (err?: string) => void\n) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || !user.stripe_id) return;\n\n try {\n const response = yield call(\n api.put,\n `api/stripe/update-customer/${user.stripe_id}?lang=en`,\n { default_source },\n {\n headers: {\n Authorization: user.access_token,\n },\n }\n );\n\n if (response.data && response.data.code === 200) {\n const oldCustomer = yield select((state: AppState) => state.customer);\n\n if (!isEqual(oldCustomer, response.data.data)) {\n yield put(changeCustomer(response.data.data));\n }\n\n callback(undefined);\n } else {\n throw new Error('Error updating customer info');\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* deleteCustomerCard(\n cardId: string,\n callback: (err?: string) => void\n) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || !user.stripe_id) return;\n\n try {\n const response = yield call(\n api.delete,\n `api/stripe/customer/${user.stripe_id}/delete-card/${cardId}?lang=en`,\n {\n headers: {\n Authorization: user.access_token,\n },\n }\n );\n\n if (response.data && response.data.code === 200) {\n yield call(getCustomerInfo);\n\n callback(undefined);\n } else {\n throw new Error('Error getting customer info');\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Add Gift Card Balance\n */\nexport function* addGiftCard(\n gift_card_id: string,\n callback: (err?: string, description?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.post,\n 'api/add-giftcard-balance?lang=en',\n { gift_card_id },\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n if (response.data && !!response.data.message) {\n yield put(changeCustomer({ ...response.data.data }));\n callback(undefined, 'Gift Card successfully redeemed');\n } else {\n throw new Error('Error adding Gift Card');\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { call, put, select } from 'redux-saga/effects';\nimport { AppState } from '..';\nimport api from '../../api';\nimport { User } from '../../interfaces';\nimport { isArrayEqual } from '../../utils/array';\nimport { parseRequestError } from '../../utils/error';\nimport { getGrowthChart, GrowthChartState } from '../ducks/growthChart';\n\n/**\n * This function fetch all babies's Growth Charts\n **/\nexport function* fetchGrowthCharts(callback?: (error: string | null) => void) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token || user.user_level === 3) return;\n\n try {\n const response = yield call(api.get, 'api/get-baby-growth-charts?lang=en', {\n headers: {\n Authorization: user.access_token,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const data = response.data.data;\n const growthChart: GrowthChartState = yield select(\n (state: AppState) => state.growthChart\n );\n\n if (!isArrayEqual(growthChart, data)) {\n yield put(getGrowthChart(data));\n }\n }\n\n if (callback) callback(null);\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n\nexport function* getGrowthChartById(\n id: number,\n callback: (error: string | null, growthChart?: any) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.get,\n `api/get-baby-growth-chart/${id}?lang=en`,\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n callback(null, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* saveGrowthChartSaga(\n body: any,\n callback: (error: string | null) => void\n) {\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token) return;\n\n try {\n yield call(\n api[!!body.editId ? 'put' : 'post'],\n `api/${!!body.editId ? 'update' : 'save'}-baby-growth-chart?lang=en`,\n { ...body, fontsize: null, frame: null, parent_id: user.id },\n {\n headers: {\n Authorization: user.access_token,\n },\n }\n );\n\n yield call(fetchGrowthCharts);\n callback(null);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* deleteGrowthChart(\n id: number,\n callback: (error: string | null) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n yield call(api.delete, `api/delete-baby-growth-chart/${id}?lang=en`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n yield call(fetchGrowthCharts);\n callback(null);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { call, put, select } from 'redux-saga/effects';\nimport { AppState } from '..';\nimport api from '../../api';\nimport { Product } from '../../interfaces';\nimport { User } from '../../interfaces/user';\nimport { isArrayEqual } from '../../utils/array';\nimport { getProducts } from '../ducks/product';\n\n/**\n * This function fetch all products\n **/\nexport function* fetchProducts() {\n const accessToken: User = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.get, 'api/products', {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const data = response.data.data;\n const products: Product[] = yield select(\n (state: AppState) => state.product.products\n );\n\n if (!isArrayEqual(products, data)) {\n yield put(getProducts(response.data.data));\n }\n }\n } catch (error) {}\n}\n","import { call, put, select } from 'redux-saga/effects';\nimport { AppState } from '..';\nimport api from '../../api';\nimport { User } from '../../interfaces/user';\nimport { parseRequestError } from '../../utils/error';\nimport { getStripeProducts } from '../ducks/stripeProduct';\n\nexport function* fetchStripeProducts(callback?: (error?: string) => void) {\n const accessToken: User = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.get, 'api/stripe/all-products/100', {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (\n response.data &&\n response.data.code === 200 &&\n !!response.data.data &&\n !!response.data.data.data\n ) {\n yield put(getStripeProducts(response.data.data.data));\n }\n\n if (callback) callback(undefined);\n } catch (error) {\n if (callback) callback(parseRequestError(error));\n }\n}\n","import { call, put } from \"redux-saga/effects\";\nimport api from \"../../api\";\nimport { apiVersion } from \"../../env\";\nimport { changeMaintenance } from \"../ducks/maintenance\";\n\n\nexport function* getMaintenance(callback?: (error?: string, description?: any) => void) {\n try {\n const response = yield call(api.get, \"api/system-status\", {\n headers: {\n 'Accept': apiVersion\n },\n });\n\n yield put (changeMaintenance({in_maintenance: !!response.data.data.in_maintenance, body_message: response.data.data.body_message}));\n } catch(error) {\n console.log(error)\n }\n}\n","import { all } from 'redux-saga/effects';\nimport { fetchBabies } from './baby';\nimport { fetchBooks } from './books';\nimport { fetchBorders, fetchIllustrations } from './bpHelper';\nimport { getCustomerInfo } from './customer';\nimport { fetchGrowthCharts } from './growthChart';\nimport { fetchPhotos } from './image';\nimport { fetchMilestones } from './milestone';\nimport { fetchProducts } from './product';\nimport { fetchStripeProducts } from './stripe';\nimport { getAuthenticatedUser } from './user';\nimport { getMaintenance } from './maintenance';\n\n/**\n * This root saga will run everytime user open the web app\n */\nexport default function* rootSaga(ignoreAuthenticatedUser = false) {\n yield all(\n ignoreAuthenticatedUser\n ? [\n getCustomerInfo(),\n fetchBabies(),\n fetchProducts(),\n fetchStripeProducts(),\n fetchBorders(),\n fetchIllustrations(),\n fetchMilestones(),\n fetchBooks(),\n fetchGrowthCharts(),\n fetchPhotos(),\n getMaintenance(),\n ]\n : [\n getAuthenticatedUser(),\n getCustomerInfo(),\n fetchBabies(),\n fetchProducts(),\n fetchStripeProducts(),\n fetchBorders(),\n fetchIllustrations(),\n fetchMilestones(),\n fetchBooks(),\n fetchGrowthCharts(),\n fetchPhotos(),\n getMaintenance(),\n ]\n );\n}\n\nexport function* signupSaga() {\n yield all( \n [\n fetchProducts(),\n fetchStripeProducts(),\n fetchBorders(),\n fetchIllustrations(),\n ]\n );\n}\n","import { isEqual } from \"lodash\";\nimport { call, put, select } from \"redux-saga/effects\";\nimport rootSaga from \".\";\nimport { AppState, sagaMiddleware } from \"..\";\nimport api from \"../../api\";\nimport { clientId, clientSecret } from \"../../env\";\nimport { UserListInterface, User } from \"../../interfaces\";\nimport { PurchaseHistoryResponse } from \"../../interfaces/purchase\";\nimport { UserSettings } from \"../../pages/User/ProfilePage/ProfilePage\";\nimport { parseRequestError } from \"../../utils/error\";\nimport { changeUser, logoutUser } from \"../ducks/user\";\nimport { trackAction } from \"./../../utils/marketing\";\nimport { createCustomer } from \"./customer\";\nimport { selectBaby } from \"../ducks/baby\";\n\n/**\n * Authenticate user with a callback (To manage loading states)\n */\nexport function* authUser(\n body: { email: string; password: string },\n callback: (response: any | null, error?: string | null) => void\n) {\n try {\n const response = yield call(api.post, \"api/login\", {\n username: body.email,\n password: body.password,\n grant_type: \"password\",\n lang: \"en\",\n operative_system: \"web\",\n token_device: \"\",\n client_id: clientId,\n client_secret: clientSecret,\n });\n\n if (response.data && response.data.code === 200) {\n yield put(\n changeUser({\n ...response.data.data,\n })\n );\n\n if (!response.data.data.stripe_id) {\n yield call(createCustomer);\n }\n }\n callback(response.data.data);\n } catch (error) {\n callback(null, parseRequestError(error));\n }\n}\n\nexport function* resetPassword(\n body: { email: string, password: string, token: string }, \n callback: (response: any | null, error?: string | null) => void\n ) {\n try {\n const response = yield call(api.post, \"api/reset-password\", \n { \n ...body,\n password_confirmation: body.password,\n lang: \"en\", \n client_id: clientId,\n client_secret: clientSecret\n }\n );\n \n callback(response.data.data);\n } catch(error) {\n callback(null, parseRequestError(error));\n }\n \n }\n \n\n/**\n * Authenticate user with Apple and with a callback (To manage loading states)\n */\n export function* authUserApple(\n body: any,\n callback: (response: any | null, error?: string | null) => void\n) {\n try {\n const response = yield call(api.post, \"api/apple-sign-in\", {...body, source: \"web\"});\n\n if (!response.data.data.stripe_id) {\n yield call(createCustomer);\n }\n\n if (response.data.code === 201) {\n trackAction(\"CompleteAppleRegistration\", {\n google: {\n event: \"sign_up\",\n method: \"apple\",\n },\n });\n }\n\n yield put(\n changeUser({\n ...response.data.data,\n })\n );\n\n callback(response.data.data);\n } catch (error) {\n callback(null, parseRequestError(error));\n }\n}\n\n/**\n * Authenticate user with facebook and with a callback (To manage loading states)\n */\nexport function* authUserFacebook(\n body: any,\n callback: (response: any | null, error?: string | null) => void\n) {\n try {\n const response = yield call(api.post, \"api/facebook-sign-in\", {...body, source: \"web\"});\n\n if (!response.data.data.stripe_id) {\n yield call(createCustomer);\n }\n\n if (response.data.code === 201) {\n trackAction(\"CompleteFacebookRegistration\", {\n google: {\n event: \"sign_up\",\n method: \"facebook\",\n },\n });\n }\n\n yield put(\n changeUser({\n ...response.data.data,\n })\n );\n\n callback(response.data.data);\n } catch (error) {\n callback(null, parseRequestError(error));\n }\n}\n\n/**\n * Authenticate user with facebook and with a callback (To manage loading states)\n */\nexport function* userFacebookExists(\n body: any,\n callback: (response: any | null, error?: string | null) => void\n) {\n try {\n const response = yield call(api.post, \"api/facebook-id-exists\", body);\n\n if (response.data && response.data.code === 200) {\n if (!response.data.data.stripe_id) {\n yield call(createCustomer);\n }\n\n yield put(\n changeUser({\n ...response.data.data,\n })\n );\n }\n callback(response.data.data);\n } catch (error) {\n callback(null, parseRequestError(error));\n }\n}\n\n/**\n * Sign Up user with a callback (To manage loading states)\n */\nexport function* signUpUser(\n body: {\n firstName: string;\n lastName: string;\n email: string;\n signupEmail?: string;\n cfEmail: string;\n password: string;\n invitationCode?: string;\n },\n callback: (response: any | null, error?: string | null) => void\n) {\n try {\n const requestBody: any = {\n first_name: body.firstName,\n last_name: body.lastName,\n username: body.email ?? body.signupEmail,\n password: body.password,\n password_confirmation: body.password,\n grant_type: \"password\",\n lang: \"en\",\n operative_system: \"web\",\n token_device: \"\",\n client_id: clientId,\n client_secret: clientSecret,\n source: \"web\"\n }\n\n if (!!body.invitationCode) {\n requestBody.invitation_code = body.invitationCode;\n }\n\n const response = yield call(api.post, \"api/signup\", requestBody);\n\n if (response.data && response.data.code === 201) {\n if (!response.data.data.stripe_id && !requestBody.invitation_code) {\n yield call(createCustomer);\n }\n\n trackAction(\"CompleteRegistration\", {\n google: {\n event: \"sign_up\",\n method: \"email and password\",\n },\n pinterest: {\n event: \"signup\",\n method: \"email and password\"\n }\n });\n\n yield put(\n changeUser({\n ...response.data.data,\n })\n );\n\n const user = yield select((state: AppState) => state.user);\n\n if (!user.id) return;\n\n if (!!body.invitationCode) {\n const response = yield call(switchAccount, {\n mainUserId: user.main_user.id,\n hostUserId: user.id,\n });\n }\n }\n\n callback(response.data.data);\n } catch (error) {\n callback(null, parseRequestError(error));\n }\n}\n\n/**\n * Send an forget password email with a callback (To manage loading states)\n */\nexport function* forgetPasswordUser(\n body: {\n email: string;\n },\n callback: (response: any | null, error?: string | null) => void\n) {\n try {\n const response = yield call(api.post, \"api/reset-password-link\", {\n ...body,\n lang: \"en\",\n client_id: clientId,\n client_secret: clientSecret,\n });\n\n callback(response.data.message);\n } catch (error) {\n callback(null, parseRequestError(error));\n }\n}\n\n/**\n * Get user authenticated\n */\nexport function* getAuthenticatedUser( callback?: () => void) {\n const user = yield select((state: AppState) => state.user);\n\n if (!user.access_token) return;\n\n try {\n const response = yield call(api.get, \"api/authenticated-user\", {\n headers: {\n Authorization: user.access_token,\n },\n });\n let stripeId : any ;\n if (response.data && response.data.code === 200) {\n if (!response.data.data.stripe_id) {\n stripeId = yield call(createCustomer);\n }\n\n if (!isEqual(user, { ...user, ...response.data.data })) {\n yield put(\n changeUser({\n ...response.data.data,\n stripe_id: !response.data.data.stripe_id ? stripeId : response.data.data.stripe_id\n })\n );\n }\n } else if (response.data && response.data.code === 401) {\n yield put(logoutUser());\n }\n if(callback) {\n callback();\n }\n \n } catch (error) {\n if (\n !!error &&\n !!error.response &&\n !!error.response.data &&\n error.response.data.code === 401\n ) {\n yield put(logoutUser());\n }\n }\n}\n\n/**\n * Get user authenticated\n */\nexport function* getAuthenticatedUserToken(\n token: string,\n callback: (error?: string, description?: any) => void\n) {\n try {\n const response = yield call(api.get, \"api/authenticated-user\", {\n headers: {\n Authorization: token,\n },\n });\n\n if (response.data && response.data.code === 200) {\n yield put(\n changeUser({\n ...response.data.data,\n access_token: token,\n })\n );\n \n if (!response.data.data.stripe_id) {\n yield call(createCustomer);\n }\n\n callback(undefined, response.data.data);\n } else {\n callback(\"Invalid token\");\n yield put(logoutUser());\n }\n } catch (error) {\n callback(\"Invalid token\");\n yield put(logoutUser());\n }\n}\n\n/**\n * Remove Account babylist source\n */\nexport function* removeSource(\n settings: UserSettings,\n callback: (err?: string, description?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.put,\n \"api/update-account?lang=en\",\n settings,\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n if (response.data && response.data.code === 200) {\n yield put(\n changeUser({\n ...response.data.data,\n })\n );\n }\n\n callback(undefined, \"User updated\");\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Update Account\n */\nexport function* updateAccount(\n settings: UserSettings,\n callback: (err?: string, description?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.put,\n \"api/update-account?lang=en\",\n settings,\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n if (response.data && response.data.code === 200) {\n yield put(\n changeUser({\n ...response.data.data,\n })\n );\n }\n\n callback(undefined, \"User updated\");\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Update Password\n */\nexport function* updatePassword(\n body: {\n current_password: string;\n password: string;\n password_confirmation: string;\n },\n callback: (err?: string, description?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.put, \"api/change-password?lang=en\", body, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && !!response.data.message) {\n callback(undefined, response.data.message);\n } else {\n throw new Error(\"Error updating password\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Deactivate Account\n */\nexport function* deactivateAccount(callback: (err?: string) => void) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.delete, \"api/cancel-account?lang=en\", {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n yield put(logoutUser());\n }\n\n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Unsubscribe user from PLUS\n */\nexport function* unsubscribePlan(\n body: { planId: string; subsId: string },\n callback: (err?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n try {\n const response = yield call(\n api.put,\n `api/stripe/cancel-subscription/${body.subsId}?lang=en`,\n {\n plan_id: body.planId,\n },\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n if (response.data && response.data.code === 200) {\n const trackActionData = {\n facebook: body.planId,\n amplitude: body.planId,\n pinterest: body.planId,\n google: {\n event: \"cancel_subscription\",\n details: `User canceled subscription: ${body.planId}`,\n },\n };\n\n if (body.planId === \"monthly\") {\n trackAction(\"Canceled Monthly Subscription\", trackActionData, true);\n } else if (body.planId === \"three month\") {\n trackAction(\n \"Canceled Three Months Subscription\",\n trackActionData,\n true\n );\n } else if (body.planId === \"one year\") {\n trackAction(\"Canceled Annual Subscription\", trackActionData, true);\n }\n sagaMiddleware.run(getAuthenticatedUser);\n callback(undefined);\n } else {\n throw new Error(\"Error cancelling subscription\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * getPurchaseHistory\n */\nexport function* purchaseHistory(\n after: string | null,\n callback: (err?: string, data?: PurchaseHistoryResponse) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.get,\n `api/purchase-history/10?lang=en${\n !!after ? `&starting_after=${after}` : \"\"\n }`,\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n if (response.data && response.data.code === 200) {\n callback(undefined, response.data.data);\n } else {\n throw new Error(\"Error getting purchase history\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Change account from guest to normal user\n */\nexport function* guestToUser(\n id: number,\n callback: (err?: string, data?: any) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.get, `api/change-user-status/${id}`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n yield call(rootSaga);\n callback(undefined, response.data.data);\n return;\n }\n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get users for admin panel\n */\nexport function* getUsers(\n search: string,\n plus: boolean,\n callback: (err?: string, response?: UserListInterface) => void,\n page?: number\n) {\n const accessToken = yield select(\n (state: AppState) => state.admin.access_token\n );\n\n try {\n if (!!search) {\n search = `search=${search}`;\n }\n\n if (!!page) {\n search += `${!!search ? \"&\" : \"\"}page=${page}`;\n }\n\n const response = yield call(\n api.get,\n `api/admin/users?&lang=en&limit=10&plus=${plus}&${search}`,\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get users by ID for admin panel\n */\nexport function* getUserById(\n id: string,\n callback: (err?: string, response?: any) => void,\n admin: boolean = true\n) {\n const accessToken = yield select((state: AppState) =>\n !!admin ? state.admin.access_token : state.user.access_token\n );\n\n try {\n const response = yield call(api.get, `api/get-user/${id}?&lang=en`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* getFirstViewOfBabyPageContent(\n callback: (err?: string, response?: any) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.get,\n \"api/first-view-of-baby-page-content\",\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n callback(undefined, response.data.data.first_view_of_baby_page_content);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * getAlexandersOrders\n */\nexport function* getAlexandersOrders(\n callback: (err?: string, data?: PurchaseHistoryResponse) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.get,\n \"api/alexanders-orders?lang=en\",\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n if (response.data && response.data.code === 200) {\n callback(undefined, response.data.data);\n } else {\n throw new Error(\"Error getting Alexander's orders\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * getAlexandersOrders\n */\nexport function* getAlexandersOrdersDetail(\n id: string,\n callback: (err?: string, data?: PurchaseHistoryResponse) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.get,\n `api/alexanders-orders/${id}?lang=en`,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n if (response.data && response.data.code === 200) {\n callback(undefined, response.data.data);\n } else {\n throw new Error(\"Error getting Alexander's orders\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * contactSupportAlexandersOrders\n */\nexport function* contactSupportAlexandersOrders(\n data: {\n firstName: string;\n lastName: string;\n email: string;\n phoneNumber?: string;\n message: string;\n },\n callback: (err?: string, data?: PurchaseHistoryResponse) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.post,\n `api/send-support-email?lang=en`,\n {\n ...data,\n lang: \"en\",\n grant_type: \"password\",\n client_id: clientId,\n client_secret: clientSecret\n },\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n if (response.data && response.data.code === 200) {\n callback(undefined, response.data.data);\n } else {\n throw new Error(\"Error sending message\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Set PayPal Time\n */\nexport function* setPayPalTime(\n callback: (err?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.put,\n \"api/users/pay-pal-transaction-time?lang=en\",\n null,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n if (response.data && response.data.code === 200) {\n throw new Error(response.data.message);\n }\n\n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * sendWelcomeEmail\n */\n export function* sendWelcomeEmail(\n callback: (err?: string) => void\n ) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n \n if (!accessToken) return;\n \n try {\n const response = yield call(\n api.post,\n `api/welcome-email?lang=en`,\n null,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n \n if (response.data && response.data.code !== 200) {\n throw new Error(response.data.message);\n }\n \n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n }\n\n/**\n * Log In as guest user\n */\nexport function* switchAccount(\n body: {\n mainUserId: string;\n hostUserId: string;\n },\n callback?: (error: string | null, user? : User) => void\n) {\n const user = yield select((state: AppState) => state.user);\n\n if (!user.access_token) return;\n\n try {\n const response = yield call(\n api.post,\n \"api/guest-users/login\",\n {\n grant_type: \"guest_user\",\n client_id: clientId,\n client_secret: clientSecret,\n lang: \"en\",\n token_device: \"\",\n operative_system: \"web\",\n main_user_id: body.mainUserId,\n host_user_id: body.hostUserId,\n },\n {\n headers: {\n Authorization: user.access_token,\n },\n }\n );\n\n if (response.data && response.data.code === 200) {\n // if (!response.data.data.stripe_id) {\n // yield call(createCustomer);\n // }\n \n yield put(\n changeUser({\n ...response.data.data,\n })\n );\n yield put(selectBaby(0))\n }\n \n if (callback) {\n callback(null, {...response.data.data});\n }\n\n return response;\n } catch (error) {\n return parseRequestError(error);\n }\n}\n","import { Card, Carousel, Col, Descriptions, Empty, Icon, notification, Row } from \"antd\";\nimport Meta from \"antd/lib/card/Meta\";\nimport moment from \"moment\";\nimport queryString from \"query-string\";\nimport React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport TruncateMarkup from \"react-truncate-markup\";\nimport { UsersListItem } from \"../../../../interfaces\";\nimport { sagaMiddleware } from \"../../../../store\";\nimport { getUserById } from \"../../../../store/sagas/user\";\n\nconst AdminDetailUsersPage: React.FC = () => {\n const history = useHistory();\n\n const [user, setUser] = useState();\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const id: any = queryString.parse(history.location.search)?.id;\n\n if (!!id && !!id.toString()) {\n // Get By Id\n setLoading(true);\n\n sagaMiddleware.run(\n getUserById,\n id,\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n\n history.push(\"/admin/users\");\n return;\n } else if (!!response) {\n try {\n setUser(response);\n } catch (error) {\n notification.error({\n message: \"Error\",\n description:\n \"Failed to load user detail, please try again later\"\n });\n\n history.push(\"/admin/users\");\n return;\n }\n }\n }\n );\n } else {\n history.push(\"/admin/users\");\n return;\n }\n }, [history]);\n\n return (\n
\n {loading ? (\n
\n \n
\n ) : (\n
\n

User Information

\n \n \n {user?.first_name}\n \n \n {user?.last_name}\n \n {user?.email}\n \n {moment(user?.created_at).format(\"MMM[, ]Do[, ]YYYY\")}\n \n \n {moment(user?.last_login).format(\"MMM[, ]Do[, ]YYYY\")}\n \n \n {user?.user_level === 1 ? \"PLUS user\" : \"Free user\"}\n \n \n {user?.total_babies}\n \n \n {user?.total_babypages}\n \n \n {user?.total_books}\n \n \n
\n

Registered Babies

\n {!!user?.babies.length ? (\n
\n \n {user.babies.map(baby => (\n \n \n \n }\n title={!baby.name ? baby.name : \"Unknown\"}\n description={`Born on ${moment(\n baby.birth_date\n ).format(\"MMM[, ]Do[, ]YYYY\")}`}\n />\n \n \n ))}\n \n
\n ) : (\n
\n \n
\n )}\n
\n
\n
\n

Created BabyPages

\n {!!user?.babyPages.length ? (\n \n \n {user.babyPages.map((babypage, index: number) => (\n
\n
\n \n
\n \n

\n {babypage.event === \"Custom Page\"\n ? babypage.event\n : babypage.title}\n

\n
\n {!!babypage.subtitle && (\n

\n {babypage.subtitle}\n

\n )}\n
\n
\n
\n ))}\n \n
\n ) : (\n
\n \n
\n )}\n
\n
\n

Created Books

\n {!!user?.books.length ? (\n \n \n {user.books.map((book, index: number) => (\n
\n
\n \n
\n
\n ))}\n \n
\n ) : (\n
\n \n
\n )}\n
\n
\n
\n )}\n
\n );\n};\n\nexport default AdminDetailUsersPage;\n","import { Input, notification, Switch, Table, Tag, Tooltip } from \"antd\";\nimport moment from \"moment\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { UserListInterface, UsersListItem } from \"../../../interfaces\";\nimport { sagaMiddleware } from \"../../../store\";\nimport { getUsers } from \"../../../store/sagas/user\";\nimport { capitalizeTexts } from \"../../../utils/string\";\n\nconst AdminUsersPage: React.FC = () => {\n const history = useHistory();\n\n const [loading, setLoading] = useState(false);\n const [search, setSearch] = useState(\"\");\n const [debounce, setDebounce] = useState();\n const [usersData, setUsersData] = useState({\n data: [],\n total: 0,\n per_page: 10,\n current_page: 1,\n last_page: 1,\n next_page_url: null,\n prev_page_url: null,\n has_more_pages: false,\n first_item: 1,\n last_item: 1\n });\n const [plus, setPlus] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getUsers,\n \"\",\n plus,\n (err?: string, response?: UserListInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else if (!!response) {\n setUsersData(response);\n }\n }\n );\n }, [plus]);\n\n const filterUsers = useCallback(\n (search: string = \"\", page: number = 1, plusStatus: boolean = false) => {\n setLoading(true);\n\n sagaMiddleware.run(\n getUsers,\n search,\n plusStatus,\n (err?: string, response?: UserListInterface) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: \"Error\",\n description: err\n });\n } else if (!!response) {\n setUsersData(response);\n }\n },\n page\n );\n },\n []\n );\n\n const onChangeFilters = useCallback(\n (search: string = \"\", plus: boolean = false) => {\n setSearch(search);\n setPlus(plus);\n\n if (debounce) clearTimeout(debounce);\n\n setDebounce(\n setTimeout(() => {\n filterUsers(search, 1, plus);\n }, 100)\n );\n },\n [debounce, filterUsers]\n );\n\n return (\n
\n

Users List

\n
\n
\n {\n onChangeFilters(e.target.value, plus);\n }}\n placeholder=\"Search user\"\n className=\"w-100\"\n />\n
\n
\n PLUS users{\" \"}\n {\n onChangeFilters(search, e);\n }}\n />\n
\n
\n filterUsers(search, e.current || 1, plus)}\n className=\"my-3 elevation-5\"\n rowKey={(record: UsersListItem) => record.id.toString()}\n onRow={(record: UsersListItem) => {\n return {\n onClick: () => {\n if (!record.deleted_at) {\n history.push(`/admin/users/detail?id=${record.id}`);\n }\n }\n };\n }}\n >\n (\n \n \n {capitalizeTexts(record.first_name ?? \"\")}{\" \"}\n {capitalizeTexts(record.last_name ?? \"\")}\n \n \n )}\n />\n (\n \n {record.email}\n \n )}\n />\n (\n {moment(record.created_at).format(\"MMM[, ]Do[, ]YYYY\")}\n )}\n />\n (\n {moment(record.last_login).format(\"MMM[, ]Do[, ]YYYY\")}\n )}\n />\n (\n \n {!!record.deleted_at &&\n moment(record.deleted_at).format(\"MMM[, ]Do[, ]YYYY\")}\n \n )}\n />\n (\n {record.total_babies}\n )}\n />\n (\n {record.total_babypages}\n )}\n />\n (\n {record.total_books}\n )}\n />\n \n !record.deleted_at ? (\n record.user_level === 1 ? (\n Plus user\n ) : (\n Free user\n )\n ) : (\n Deleted\n )\n }\n />\n \n
\n );\n};\n\nexport default AdminUsersPage;\n","import {\n Card, Col, Input,\n\n\n\n Row\n} from \"antd\";\nimport React from \"react\";\n\nconst AdminMetricsPage: React.FC = () => {\n // // const history = useHistory();\n\n // const [loading, setLoading] = useState(false);\n // const [search, setSearch] = useState(\"\");\n // // const [debounce, setDebounce] = useState();\n // // const [metrics, setMetrics] = useState(false);\n\n // useEffect(() => {\n // setLoading(true);\n\n // sagaMiddleware.run(\n // getMetricsAdmin,\n // \"\",\n // (err?: string, response?: BookListInterface) => {\n // setLoading(false);\n\n // if (!!err) {\n // notification.error({\n // message: \"Error\",\n // description: err\n // });\n // } else if (!!response) {\n // //setBooksData(response);\n // }\n // }\n // );\n // }, []);\n\n return (\n
\n

Metrics

\n
\n
\n \n
\n
\n
\n \n \n \n Card content\n \n \n \n \n Card content\n \n \n \n \n Card content\n \n \n \n
\n
\n );\n};\n\nexport default AdminMetricsPage;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport BaseAdminLayout from \"./components/BaseAdminLayout/BaseAdminLayout\";\nimport AdminBooksPage from \"./pages/Admin/Books/Books\";\nimport AdminDetailBooksPage from \"./pages/Admin/Books/DetailBooks/DetailBooks\";\nimport FontDetailPage from \"./pages/Admin/Fonts/FontDetailPage/FontDetailPage\";\nimport FontListPage from \"./pages/Admin/Fonts/FontListPage/FontListPage\";\nimport FontNewPage from \"./pages/Admin/Fonts/FontNew/FontNewPage\";\nimport AdminDetailAnswerPage from \"./pages/Admin/Forms/DetailAnswer/DetailAnswer\";\nimport AdminDetailFormPage from \"./pages/Admin/Forms/DetailForm/DetailForm\";\nimport AdminFormsPage from \"./pages/Admin/Forms/Forms\";\nimport AdminGuidelinePage from \"./pages/Admin/Forms/Guideline/Guideline\";\nimport AdminSaveFormPage from \"./pages/Admin/Forms/SaveForm/SaveForm\";\nimport AdminGiftCardPage from \"./pages/Admin/GiftCard/GiftCard\";\nimport AdminIndexPage from \"./pages/Admin/Index/Index\";\nimport AdminLoginPage from \"./pages/Admin/Login/AdminLoginPage\";\nimport MilestoneDetailPage from \"./pages/Admin/Milestones/MilestoneDetail/MilestoneDetailPage\";\nimport MilestoneListPage from \"./pages/Admin/Milestones/MilestoneList/MilestoneListPage\";\nimport MilestoneNewPage from \"./pages/Admin/Milestones/MilestoneNew/MilestoneNewPage\";\nimport AdminDetailUsersPage from \"./pages/Admin/Users/DetailUsers/DetailUsers\";\nimport AdminUsersPage from \"./pages/Admin/Users/Users\";\nimport { AppState } from \"./store\";\nimport AdminMetricsPage from \"./pages/Admin/Metrics/Metrics\";\n\ninterface Props {\n access_token?: string;\n}\n\nconst AdminRoutes: React.FC = ({ access_token }) => {\n return (\n <>\n \n \n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n {!!access_token && (\n \n )}\n \n } />\n \n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n access_token: state.admin.access_token\n});\n\nexport default connect(mapStateToProps)(AdminRoutes);\n","import {call, select} from \"redux-saga/effects\";\nimport {AppState} from \"..\";\nimport api from \"../../api\";\nimport {GuestUserInterface} from \"../../interfaces/guestUser\";\nimport {parseRequestError} from \"../../utils/error\";\n\n/**\n * Create Guest User\n */\nexport function* createGuestUser(\n data: GuestUserInterface,\n callback: (err?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n yield call(\n api.post,\n \"api/guest-users?lang=en\",\n data,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get Guest Users\n */\nexport function* getGuestUsers(\n callback: (err: string | null, data?: any[]) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.get,\n \"api/guest-users?lang=en\",\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n callback(null, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Delete Guest Users By ID\n */\nexport function* deleteGuestUser(\n id: number,\n callback: (err: string | null) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n yield call(\n api.delete,\n `api/guest-users/${id}?lang=en`,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n callback(null);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Update Guest Users\n */\nexport function* updateGuestUser(\n id: number,\n data: GuestUserInterface,\n callback: (err: string | null) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n yield call(\n api.put,\n `api/guest-users/${id}?lang=en`,\n data,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n callback(null);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Create Guest User\n */\nexport function* validateInvitationCode(\n data: any,\n callback: (err: string | null, data?: any) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.put,\n \"api/guest-users/invitation-code?lang=en\",\n data,\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n callback(null, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get Guest Users\n */\nexport function* getGuestUserInfo(\n invitationCode: string,\n callback: (err: string | null, data?: any) => void\n) {\n if (!invitationCode) return;\n\n try {\n const response = yield call(\n api.get,\n `api/guest-user-info/${invitationCode}?lang=en`);\n\n callback(null, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}","import React from \"react\";\n\ninterface Props {\n isSelected?: boolean;\n}\n\nconst DashBoardIcon: React.FC = ({isSelected}) => {\n\n if(isSelected) {\n return (\n \n \n \n \n \n \n \n \n \n )\n } else {\n return (\n \n \n \n \n \n \n );\n }\n \n}\n\nexport default DashBoardIcon;\n","import React from \"react\";\n\ninterface Props {\n isSelected?: boolean;\n}\n\n\nconst BabypagesIcon : React.FC = ({isSelected}) => {\n\n if(isSelected) {\n return (\n\n \n \n \n \n \n \n )\n } else {\n return (\n \n \n \n \n \n \n );\n }\n\n}\n\nexport default BabypagesIcon;\n","import React from \"react\";\n\ninterface Props {\n isSelected?: boolean;\n}\n\n\nconst MilestonesIcon : React.FC = ({isSelected}) => {\n if(isSelected) {\n return (\n \n \n \n \n \n \n \n \n )\n } else {\n return (\n \n \n \n \n \n \n \n );\n }\n \n}\n\nexport default MilestonesIcon;\n","import React from \"react\";\n\ninterface Props {\n isSelected?: boolean;\n}\n\nconst BookIcon: React.FC = ({isSelected}) => {\n if (isSelected) {\n return (\n \n \n \n \n \n \n \n )\n } else {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n \n}\n\nexport default BookIcon;\n","import React from \"react\";\ninterface Props {\n isSelected?: boolean;\n}\n\nconst SettingsIcon: React.FC = ({isSelected}) => {\n if( isSelected ) {\n return (\n \n \n \n \n \n \n \n )\n } else {\n return (\n \n \n \n \n \n \n );\n }\n \n \n}\n\nexport default SettingsIcon;\n","import { useLayoutEffect, useState } from 'react'\n\nexport const useWindowSize = () => {\n const [size, setSize] = useState([0, 0])\n\n useLayoutEffect(() => {\n const updateSize = () => setSize([window.innerWidth, window.innerHeight])\n window.addEventListener('resize', updateSize)\n updateSize()\n return () => window.removeEventListener('resize', updateSize)\n }, [])\n\n return size\n}\n","import React from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport \"./Footer.scss\";\nimport DashboardIcon from \"./icons/DashboardIcon\";\nimport BabypagesIcon from \"./icons/BabypagesIcon\";\nimport MilestonesIcon from \"./icons/MilestonesIcon\";\nimport BookIcon from \"./icons/BookIcon\";\nimport SettingsIcon from \"./icons/SettingsIcon\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport { AppState } from \"../../store\";\nimport { connect } from \"react-redux\";\nimport { User } from \"../../interfaces\";\n\ninterface Props {\n hideLinks?: boolean;\n user: User;\n}\n\nconst BottomNavigation: React.FC = ({ hideLinks, user }) => {\n const history = useHistory();\n const location = history.location.pathname;\n const [width] = useWindowSize();\n const isGuestUser = !!user.guest_user\n const isReadOnly = user.permission === \"Read-Only\";\n\n\n return (\n
\n \n \n \n {location === \"/\" ? (\n \n ) : (\n \n )}\n \n \n Dashboard\n \n
\n \n \n {location === \"/babypages\" ? (\n \n ) : (\n \n )}\n \n \n BabyPages\n \n \n { !isReadOnly ? (\n \n \n {location === \"/milestones\" ? (\n \n ) : (\n \n )}\n \n \n Milestones\n \n \n ) : null\n } \n \n \n {location === \"/books\" ? (\n \n ) : (\n \n )}\n \n \n My Books\n \n \n { !isGuestUser ? (\n \n \n {location === \"/profile\" ? (\n \n ) : (\n \n )}\n \n \n Settings\n \n \n ) : null\n }\n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user,\n});\n\nexport default connect(mapStateToProps)(BottomNavigation);\n\n","import cloneDeep from 'lodash/cloneDeep';\nimport { call, put, select } from 'redux-saga/effects';\nimport { AppState } from '..';\nimport api from '../../api';\nimport { Baby, DashboardInfo, Entry } from '../../interfaces';\nimport { isArrayEqual } from '../../utils/array';\nimport { parseRequestError } from '../../utils/error';\nimport { BabyState, getBabies, selectBaby } from '../ducks/baby';\nimport { DashboardState, getDashboard } from '../ducks/dashboard';\nimport { fetchBabies } from './baby';\n\n/**\n * This function fetch all Dashboard info\n **/\nexport function* fetchDashboard(goPersonalAccount: boolean = false, callback?: (error: string | null) => void) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n const mainUserId = yield select(\n (state: AppState) => state.user.main_user?.id\n );\n\n let queryParms = '';\n if (mainUserId && !goPersonalAccount) queryParms = `?main_user_id=${mainUserId}`;\n\n try {\n const response = yield call(api.get, `api/dashboard${queryParms}`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const data = response.data.data;\n const dashboard: DashboardState = yield select(\n (state: AppState) => state.dashboard\n );\n\n if (!isArrayEqual(dashboard.dashboard, data)) {\n yield put(getDashboard(data));\n }\n }\n\n if (callback) callback(null);\n } catch (error) {\n yield put(getDashboard([]));\n if (callback) callback(parseRequestError(error));\n }\n}\n\n/**\n * Save an entry on DB\n **/\nexport function* saveEntryDashboard(\n entry: Entry,\n callback: (error: string | null) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n let finalData : any;\n if(entry.isEdit) {\n if(entry.height > 0) {\n const response = yield call(api.put, 'api/update-entry?lang=en', {...entry, entry_id: entry.height_id}, {\n headers: {\n Authorization: accessToken,\n },\n });\n if (response.data && response.data.code === 200) {\n finalData = response.data.data;\n }\n } if (entry.weight_lbs > 0 || entry.weight_oz > 0) {\n const response = yield call(api.put, 'api/update-entry?lang=en', {...entry, entry_id: entry.weight_id}, {\n headers: {\n Authorization: accessToken,\n },\n });\n if (response.data && response.data.code === 200) {\n finalData = response.data.data;\n }\n }\n } else {\n const response = yield call(api.post, 'api/add-entry?lang=en', entry, {\n headers: {\n Authorization: accessToken,\n },\n });\n if (response.data && response.data.code === 200) {\n finalData = response.data.data;\n }\n }\n if (!!finalData) {\n const {\n dashboard,\n baby,\n }: { dashboard: DashboardState; baby: BabyState } = yield select(\n (state: AppState) => ({\n dashboard: state.dashboard,\n baby: state.baby,\n })\n );\n\n // Update Dashboard\n yield put(\n getDashboard(\n dashboard.dashboard.map((each: DashboardInfo) => {\n if (each.id === finalData.id) {\n return { ...each, heights: finalData.heights, weights: finalData.weights };\n }\n return each;\n })\n )\n );\n\n // Update Babies\n yield put(\n getBabies(\n baby.babies.map((each: Baby) => {\n if (each.id === finalData.id) {\n return { ...each, heights: finalData.heights, weights: finalData.weights };\n }\n return each;\n })\n )\n );\n\n // Update Selected Baby\n yield put(selectBaby(baby.babySelectedIndex));\n }\n\n callback(null);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Delete an Entry\n **/\nexport function* deleteEntryDashboard(\n heightId: number,\n weightId: number,\n callback: (error: string | null, description?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(\n api.delete,\n `api/delete-entry/${heightId}/${weightId}`,\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n if (response.data && response.data.code === 200) {\n const {\n dashboard,\n babySelectedIndex,\n }: {\n dashboard: DashboardState;\n babySelectedIndex?: number;\n } = yield select((state: AppState) => ({\n dashboard: state.dashboard,\n babySelectedIndex: state.baby.babySelectedIndex,\n }));\n\n if (babySelectedIndex !== undefined) {\n const newDashboard = cloneDeep(dashboard.dashboard);\n\n const heightIndex = newDashboard[babySelectedIndex].heights.findIndex(\n h => h.id === heightId\n );\n const weightIndex = newDashboard[babySelectedIndex].weights.findIndex(\n h => h.id === weightId\n );\n\n if (heightIndex !== -1) {\n newDashboard[babySelectedIndex].heights.splice(heightIndex, 1);\n }\n\n if (weightIndex !== -1) {\n newDashboard[babySelectedIndex].weights.splice(weightIndex, 1);\n }\n\n yield put(getDashboard(newDashboard));\n yield call(fetchBabies);\n callback(null, response.data.message);\n return;\n }\n\n yield call(fetchDashboard);\n yield call(fetchBabies);\n\n callback(null, response.data.message);\n } else {\n throw new Error('Error removing Entry');\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { Button, Input, Modal, notification } from \"antd\";\nimport Form from \"antd/lib/form\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport isNumeric from \"validator/lib/isNumeric\";\nimport matches from \"validator/lib/matches\";\nimport { sagaMiddleware } from \"../../store\";\nimport { validateInvitationCode } from \"../../store/sagas/guestUser\";\n\ninterface Props {\n setLoading: Function;\n closeGuestUserModal: Function;\n invitationCodeFromLink?: string;\n}\n\nconst GuestUserValidateInvitationCodeForm: React.FC = ({\n setLoading,\n closeGuestUserModal,\n invitationCodeFromLink,\n}) => {\n const [invitationCode, setInvitationCode] = useState(invitationCodeFromLink);\n\n useEffect(() => {\n if (invitationCodeFromLink) {\n setInvitationCode(invitationCodeFromLink);\n }\n }, [invitationCodeFromLink]);\n\n const handleSubmit = useCallback(\n (event: any) => {\n event.preventDefault();\n\n setLoading(true);\n\n sagaMiddleware.run(\n validateInvitationCode,\n {\n invitation_code: invitationCode,\n },\n (err: string, data: any) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n\n return;\n }\n\n notification.success({\n message: \"The invitation has been validated successfully\",\n });\n\n closeGuestUserModal(data.host_user_id);\n }\n );\n },\n [invitationCode, closeGuestUserModal, setLoading]\n );\n\n return (\n
\n
\n
\n
\n \n \n setInvitationCode(e.target.value.replace(/[^\\d]/g, \"\"))\n }\n />\n \n
\n
\n
\n
\n \n \n Continue\n \n \n
\n
\n
\n
\n );\n};\n\nexport default GuestUserValidateInvitationCodeForm;\n","import { Icon, Modal, Radio, Spin } from \"antd\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router\";\nimport { connect } from \"react-redux\";\nimport { User } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { switchAccount } from \"../../store/sagas/user\";\nimport rootSaga from \"../../store/sagas\";\nimport { fetchDashboard } from \"../../store/sagas/dashboard\";\nimport GuestUserValidateInvitationCodeForm from \"../GuestUserValidateInvitationCodeForm/GuestUserValidateInvitationCodeForm\";\nimport { startCase } from \"lodash\";\n\ninterface Props {\n closeGuestUserModal: () => void;\n isVisible: boolean;\n user: User;\n invitationCode: string;\n}\n\nconst GuestUserModal: React.FC = ({\n isVisible,\n closeGuestUserModal,\n user,\n invitationCode,\n}) => {\n const history = useHistory();\n const [loading, setLoading] = useState(false);\n const [radioOption, setRadioOption] = useState(1);\n\n const radioStyle = {\n display: \"block\",\n height: \"30px\",\n lineHeight: \"30px\",\n };\n\n useEffect(() => {\n setRadioOption(user.main_user ? user.id : user.id);\n if (invitationCode) {\n setRadioOption(0);\n }\n }, [user.main_user, user.id, invitationCode]);\n\n const handleRadioGroupChange = useCallback((e) => {\n setRadioOption(e.target.value);\n }, []);\n\n const loginAsDifferentUserHandler = (hostUser: any, goPersonalAccount: boolean = false) => {\n closeGuestUserModal();\n let params = {\n mainUserId: !!hostUser.guest_user_id ? hostUser.guest_user_id : hostUser.id,\n hostUserId: !!hostUser.host_user_id ? hostUser.host_user_id: hostUser.main_user.id,\n }\n\n // Updating \"params\" in case we want to return to personal account (get out of guest-users feature)\n if (!!goPersonalAccount) {\n params = {\n mainUserId: hostUser.main_user.id,\n hostUserId: hostUser.main_user.id,\n }\n }\n\n sagaMiddleware.run(\n switchAccount,\n params,\n (error: string | null) => {\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n\n return;\n }\n\n // Don't load these functions if we're on child-basic-info page.\n if (window.location.pathname !== \"/step-2\") {\n sagaMiddleware.run(rootSaga, true);\n }\n \n history.push(\"/\");\n\n if (window.location.pathname !== \"/step-2\") {\n sagaMiddleware.run(fetchDashboard, goPersonalAccount, (error: string | null) => {\n if (error !== null) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n }\n });\n }\n\n Modal.info({\n title: \"Hi there!\",\n content: `You're seeing the ${startCase(\n hostUser.host_user.first_name\n )} ${startCase(\n hostUser.host_user.last_name\n )}'s account as a guest user. Go to menu and select switch account to see your own content`,\n });\n }\n );\n };\n\n const switchAccountFromModal = useCallback((hostUserId: number) => {\n sagaMiddleware.run(\n switchAccount,\n {\n mainUserId: !!user.main_user ? user.main_user.id : user.id,\n hostUserId: hostUserId,\n },\n (error: string | null, newUser?: User) => {\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n\n return;\n }\n\n const firstName = newUser?.main_user.host_users.find((host_user: any) => host_user.host_user_id === hostUserId).host_user.first_name;\n const lastName = newUser?.main_user.host_users.find((host_user: any) => host_user.host_user_id === hostUserId).host_user.last_name;\n Modal.info({\n title: \"Hi there!\",\n content: `You're seeing the ${startCase(\n firstName\n )} ${startCase(\n lastName\n )}'s account as a guest user. Go to menu and select switch account to see your own content`,\n });\n\n sagaMiddleware.run(rootSaga, true);\n sagaMiddleware.run(fetchDashboard, (error: string | null) => {\n if (error !== null) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n }\n });\n }\n );\n }, [user.main_user]);\n\n const hostUsers = user.main_user?.host_users ?? user.host_users;\n\n return (\n closeGuestUserModal()}\n closable={true}\n footer={null}\n >\n \n !!user.guest_user && loginAsDifferentUserHandler(user, true)}\n >\n Personal Account\n \n\n {!!hostUsers && (\n <>\n {hostUsers.map((hostUser: any) => {\n if(!!hostUser.validated) {\n return (\n loginAsDifferentUserHandler(hostUser)}\n style={radioStyle}\n value={hostUser.host_user_id}\n >\n {`${startCase(hostUser.host_user.first_name)} ${startCase(\n hostUser.host_user.last_name\n )}`}{\" \"}\n - {hostUser.permission}\n \n )\n } else {\n return null\n }\n })}\n \n )}\n\n \n I have an invitation code\n \n \n\n {radioOption === 0 &&\n (loading ? (\n
\n }\n />\n
\n ) : (\n {\n closeGuestUserModal();\n switchAccountFromModal(hostUserId);\n }}\n invitationCodeFromLink={invitationCode}\n />\n ))}\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user,\n invitationCode: state.guestUsers.deepLinkInfo?.invitation_code,\n});\n\nexport default connect(mapStateToProps)(GuestUserModal);\n","import { Modal } from \"antd\";\nimport { PAGE_URL } from \"../../env\";\nconst { confirm } = Modal;\n\nexport interface MenuItemObject {\n key: string;\n icon: string;\n text: string;\n newTab?: boolean;\n hideFromUserGift?: boolean;\n onClick?: Function;\n badge?: boolean;\n hideFromGuestUser?: boolean;\n cssClass?: string;\n hideFromFreeUser?: boolean;\n counterBadge?: {\n left: string;\n counter: string;\n };\n}\n\nexport const DesktopMenuItems: MenuItemObject[] = [\n {\n key: \"/\",\n icon: \"dashboard\",\n text: \"Dashboard\",\n hideFromUserGift: true,\n },\n {\n key: \"/milestones\",\n icon: \"calendar\",\n text: \"Milestones\",\n hideFromUserGift: true,\n cssClass: \"disabled\",\n },\n {\n key: \"/babypages\",\n icon: \"layout\",\n text: \"BabyPages\",\n hideFromUserGift: true,\n },\n {\n key: \"/books\",\n icon: \"book\",\n text: \"Books\",\n hideFromUserGift: true,\n },\n {\n key: \"/store\",\n icon: \"shopping\",\n text: \"Store\",\n },\n];\n\nexport const DesktopUserItems: (logout: Function, showGuestUserModal: Function) => MenuItemObject[] = (logout, showGuestUserModal) => [\n {\n key: '/switch-account',\n icon: 'retweet',\n text: 'Switch Account',\n onClick: () => showGuestUserModal(),\n },\n {\n key: '/profile',\n icon: 'user',\n text: 'My Account',\n hideFromGuestUser: true,\n },\n {\n key: \"/growth-chart\",\n icon: \"line-chart\",\n text: \"Growth Chart\",\n hideFromUserGift: true,\n hideFromGuestUser: true,\n },\n {\n key: '/giftcards',\n icon: 'gift',\n text: 'Gift Cards',\n hideFromGuestUser: true,\n },\n {\n key: '/guest-users',\n icon: 'team',\n text: 'Manage guest users',\n hideFromGuestUser: true,\n hideFromFreeUser: true,\n },\n {\n key: `/about`,\n icon: \"info-circle\",\n text: \"About\",\n },\n {\n key: `${PAGE_URL}support`,\n icon: \"question-circle\",\n text: \"Support\",\n newTab: true,\n },\n {\n key: \"logout\",\n icon: \"logout\",\n text: \"Sign Out\",\n onClick: () =>\n confirm({\n title: \"Are you sure you want to logout?\",\n onOk() {\n logout();\n },\n }),\n },\n];\n\nexport const MobileMenuItems: MenuItemObject[] = [\n {\n key: '/',\n icon: 'dashboard',\n text: 'Dashboard',\n hideFromUserGift: true,\n },\n {\n key: '/milestones',\n icon: 'calendar',\n text: 'Milestones',\n hideFromUserGift: true,\n cssClass: \"disabled\",\n },\n {\n key: '/babypages',\n icon: 'layout',\n text: 'BabyPages',\n hideFromUserGift: true,\n },\n {\n key: '/books',\n icon: 'book',\n text: 'Books',\n hideFromUserGift: true,\n },\n {\n key: '/store',\n icon: 'shopping',\n text: 'Store',\n },\n {\n key: '/giftcards',\n icon: 'gift',\n text: 'Gift Cards',\n },\n {\n key: '/cart',\n icon: 'shopping-cart',\n text: 'Cart',\n counterBadge: {\n left: '90px',\n counter: 'storeLength',\n },\n },\n {\n key: '/my-orders',\n icon: 'shop',\n text: 'Orders',\n counterBadge: {\n left: '75px',\n counter: 'alexandersOrderCounter',\n },\n },\n {\n key: '/guest-users',\n icon: 'team',\n text: 'Manage guest users',\n hideFromGuestUser: true,\n hideFromFreeUser: true,\n },\n];\n\nexport const MobileUserItems: (logout: Function) => MenuItemObject[] = logout => [\n {\n key: '/profile',\n icon: 'user',\n text: 'Settings',\n hideFromGuestUser: true,\n },\n {\n key: '/growth-chart',\n icon: 'line-chart',\n text: 'Growth Chart',\n hideFromUserGift: true,\n hideFromGuestUser: true,\n },\n {\n key: `/about`,\n icon: 'info-circle',\n text: 'About',\n },\n {\n key: 'logout',\n icon: 'logout',\n text: 'Sign Out',\n onClick: () =>\n confirm({\n title: 'Are you sure you want to logout?',\n onOk() {\n logout();\n },\n }),\n },\n];\n","import {Avatar, Badge, Card, Drawer, Icon, Menu} from 'antd';\nimport {History, Location} from 'history';\nimport React, {useMemo} from 'react';\nimport {User} from '../../interfaces';\nimport {capitalizeTexts} from '../../utils/string';\nimport {MenuItemObject, MobileMenuItems, MobileUserItems} from './menuItems';\nimport { PAGE_URL } from '../../env';\n\ninterface Props {\n drawerOpen: boolean;\n setDrawerOpen: Function;\n logout: Function;\n location: Location;\n history: History;\n user: User;\n storeLength: number;\n showGuestUserModal: Function;\n alexandersOrderCounter: number;\n}\n\nconst CustomDrawer: React.FC = ({\n drawerOpen,\n setDrawerOpen,\n logout,\n location,\n history,\n user,\n storeLength,\n alexandersOrderCounter,\n showGuestUserModal,\n}) => {\n const userName = useMemo(() => {\n if (!user.first_name || !user.last_name) return '';\n\n const userName = `${capitalizeTexts(user.first_name)} ${capitalizeTexts(\n user.last_name\n )}`;\n\n return userName.length > 25 ? userName.substr(0, 22) + '...' : userName;\n }, [user.first_name, user.last_name]);\n\n let counter: any = {\n storeLength: storeLength,\n alexandersOrderCounter: alexandersOrderCounter,\n };\n\n return (\n setDrawerOpen(!drawerOpen)}\n visible={drawerOpen}\n >\n \n
\n \n {`${user.first_name?.slice(0, 1)}${user.last_name?.slice(0, 1)}`}\n \n
\n \n \n {`${user.first_name} ${user.last_name}`}\n \n \n
\n {\n setDrawerOpen(!drawerOpen)\n showGuestUserModal()\n }}\n >\n \n \n Switch Account\n \n \n \n
\n \n {MobileMenuItems\n .filter(item =>\n user.user_level === 0 ?\n !item.hideFromFreeUser\n :\n user.user_level === 3 ?\n !item.hideFromUserGift\n :\n !!user.guest_user ? !item.hideFromGuestUser : true\n )\n .map((item: MenuItemObject) => (\n {\n (!user.guest_user || (!!user.guest_user && user.permission === \"Full Access\") || (item.cssClass === undefined)) && history.push(item.key)\n }}\n >\n {item.badge ? (\n 0}>\n \n \n ) : (\n \n )}\n {item.text}\n {item.counterBadge && (\n \n \n )}\n \n ))}\n \n \n {userName}\n \n }\n >\n {MobileUserItems(logout)\n .filter(item =>\n user.user_level === 0 ?\n !item.hideFromFreeUser\n :\n user.user_level === 3 ?\n !item.hideFromUserGift\n :\n !!user.guest_user ? !item.hideFromGuestUser : true\n )\n .map(userItem => (\n {\n if (userItem.onClick) {\n userItem.onClick();\n } else {\n if (userItem.newTab) {\n const winOpened = window.open(userItem.key, '_blank');\n try {\n winOpened!.focus();\n } catch (err) {\n }\n } else {\n history.push(userItem.key);\n }\n }\n }}\n >\n \n {userItem.text}\n \n ))}\n \n \n \n Support\n \n \n \n \n );\n};\n\nexport default CustomDrawer;\n","import { Button, Modal } from \"antd\";\nimport React, { useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\ninterface Props {\n customText?: string;\n customTextBold?: boolean;\n visible: boolean;\n onClose: (e: React.MouseEvent) => void;\n message?: string;\n step?: number;\n manageChildrenMsg?: boolean;\n afterSaveBPMsg?: boolean;\n onSaveFreeFeatures?: () => void;\n onSaveBeforeUpgradeToPlus?: () => void;\n isPhotoOnly?: boolean;\n savingBabyPage?: boolean;\n bookMessage?: boolean;\n}\n\nconst ModalPlus: React.FC = ({\n customText,\n customTextBold,\n visible,\n onClose,\n afterSaveBPMsg,\n onSaveFreeFeatures,\n onSaveBeforeUpgradeToPlus,\n savingBabyPage,\n bookMessage\n}) => {\n const history = useHistory();\n const mainMessage = savingBabyPage ? \"You have PLUS features within your babypage. Upgrade to a PLUS Subscription to save with these exclusive features.\" \n : bookMessage ? \"You have selected a BabyPage PLUS feature. Upgrade to a PLUS Subscription to access this and all other PLUS features.\"\n : \"This is a PLUS feature. Upgrade to a PLUS Subscription to save with these exclusive features.\"\n\n\n const isSaveFreeFeatures = !!onSaveFreeFeatures;\n\n const ModalPlusButtons = () => (\n
\n {\n history.push(\"/cart/subscription/yearly\")\n }}\n >\n Upgrade to PLUS\n \n {!!onSaveFreeFeatures ? (\n \n Continue\n \n ) : null}\n \n
\n );\n\n return (\n \n
\n {customText ? (\n

\n {customTextBold ? {customText} : customText}\n

\n ) : (\n \n {mainMessage}\n

\n )}\n \n
\n \n );\n};\n\nexport default ModalPlus;\n","import { Menu } from 'antd';\nimport { History } from 'history';\nimport React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { SimpleBaby, User } from '../../interfaces';\nimport { AppState } from '../../store';\nimport { BaseAction } from '../../store/actionTypes';\nimport { selectBaby } from '../../store/ducks/baby';\nimport { capitalizeTexts } from '../../utils/string';\nimport ModalPlus from '../ModalPlus/ModalPlus';\nimport \"./ChildMenu.scss\"\ntype Props = {\n isPlus: boolean;\n simpleBabies: SimpleBaby[];\n selectBabyIndex: Function;\n setDropdownVisible: Function;\n babySelectedIndex?: number;\n history: History;\n user: User;\n};\n\nconst ChildMenu: React.FC = ({\n isPlus,\n simpleBabies,\n selectBabyIndex,\n babySelectedIndex,\n setDropdownVisible,\n history,\n user,\n}) => {\n const [showPlus, setShowPlus] = useState(false);\n const sendToUpgradeToPlus = () => {\n history.push(\"/cart/subscription/yearly\");\n }\n\n return (\n <>\n \n {simpleBabies.map((baby: SimpleBaby, index: number) => (\n {\n if (index !== babySelectedIndex) {\n selectBabyIndex(index);\n }\n\n setDropdownVisible(false);\n }}\n >\n {\n baby.baby_first_name.length > 25\n ? baby.baby_first_name.substr(0, 22) + '...'\n : baby.baby_first_name\n }\n \n ))}\n\n {!user.guest_user && (\n {\n if (isPlus || simpleBabies.length === 0) {\n setDropdownVisible(false);\n history.push('/save-child')\n } else {\n setDropdownVisible(false);\n setShowPlus(true);\n }\n }}\n >\n Add new\n \n )}\n \n setShowPlus(false)} manageChildrenMsg={user.user_level === 0} onSaveBeforeUpgradeToPlus={sendToUpgradeToPlus} />\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n isPlus: !!state.user.user_level && state.user.user_level === 1,\n simpleBabies: state.baby.simpleBabies,\n babySelectedIndex: state.baby.babySelectedIndex,\n user: state.user,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n selectBabyIndex: (index: number) => dispatch(selectBaby(index)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ChildMenu);\n","import React from \"react\";\n\nfunction ArrowDownChildMenu() {\n return (\n \n \n \n );\n}\n\nexport default ArrowDownChildMenu;\n","import React from \"react\";\n\ninterface Props {\n className?: string;\n onClick: () => void;\n isSelected: boolean;\n}\n\nconst CartIcon: React.FC = ({className, onClick, isSelected}) => {\n const fillColor = isSelected ? \"#FFAFA5\" : \"#909090\"\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default CartIcon;\n","import React from \"react\";\n\ninterface Props {\n className:string;\n isSmall: boolean;\n}\n\nconst AddProfilePhotoIcon : React.FC = ({ \n className,\n isSmall\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default AddProfilePhotoIcon;\n","import {Badge, Button, Dropdown, PageHeader} from 'antd';\nimport {History, Location} from 'history';\nimport React, {useMemo, useState} from 'react';\nimport {Baby, User} from '../../interfaces';\nimport {capitalizeTexts} from '../../utils/string';\nimport ChildMenu from '../ChildMenu/ChildMenu';\nimport {DesktopMenuItems, DesktopUserItems, MenuItemObject} from './menuItems';\nimport ArrowDownChildMenu from './ArrowDownChildMenu'\nimport CartIcon from './CartIcon';\nimport addChildPhotoIcon from \"../../assets/icons/IconPlacholder.png\"\nimport AddProfilePhotoIcon from '../Icons/AddProfilePhotoIcon';\n\ninterface Props {\n logout: Function;\n drawerOpen: boolean;\n hideHeaderChildMenu?: boolean;\n setDrawerOpen: Function;\n pageTitle?: string;\n babySelected?: Baby;\n location: Location;\n history: History;\n user: User;\n storeLength: number;\n showGuestUserModal: Function;\n alexandersOrderCounter: number;\n pageSubtitle?: string\n}\n\nconst Header: React.FC = ({\n location,\n history,\n logout,\n pageTitle,\n pageSubtitle,\n babySelected,\n drawerOpen,\n setDrawerOpen,\n hideHeaderChildMenu,\n user,\n storeLength,\n alexandersOrderCounter,\n showGuestUserModal,\n}) => {\n const [dropdownVisible, setDropdownVisible] = useState(false);\n\n const userName = useMemo(() => {\n if (!user.first_name || !user.last_name) return '';\n\n const userName = `${capitalizeTexts(user.first_name)} ${capitalizeTexts(\n user.last_name\n )}`;\n\n return userName.length > 25 ? userName.substr(0, 22) + '...' : userName;\n }, [user.first_name, user.last_name]);\n\n const isCartPage = location.pathname === \"/cart\" ? true : false\n const cartIconMargin = !!storeLength ? \"cart-button\" : \"\";\n const isGuestUser = !!user.guest_user\n return (\n \n { !!babySelected && \n
{\n if(!isGuestUser) {\n history.push(`/profile?child`)\n }\n }}>\n { babySelected.baby_profile_picture ? \n \n : <> }\n
\n }\n \n }\n extra={[\n // Mobile Menu\n \n
\n
\n {/* Page Title (if have) */}\n {pageTitle && pageSubtitle ? (\n <>\n

{pageTitle}

\n

{pageSubtitle}

\n \n ) : pageTitle ? \n

{pageTitle}

\n : null\n }\n {/* Child Dropdown */}\n {!hideHeaderChildMenu && (\n setDropdownVisible(!dropdownVisible)}\n overlay={\n \n }\n trigger={[\"click\"]}\n >\n \n \n {babySelected\n ? capitalizeTexts(babySelected.baby_first_name)\n : \"Select a Child\"}\n \n \n \n \n )}\n
\n
\n {/* Drawer Toggle */}\n <>\n \n {\n history.push(\"/cart\");\n }}\n isSelected={isCartPage}\n />\n \n \n \n \n setDrawerOpen(!drawerOpen)}\n />\n \n
\n ]}\n className=\"header elevation-light\"\n />\n );\n};\n\nexport default Header;\n","import React from 'react';\nimport './Banner.scss'\nimport { useHistory } from \"react-router\"\n\n\ninterface Props {\n content?: string;\n content2?: string;\n isCustom?: boolean;\n}\n\n// i text content for banner is short and looks nice in 1 line only add content props\n// if the text content is longer and doesn't look good in 1 line add content and content2 to props\n\nconst Banner: React.FC = ({content, content2, isCustom, children}) => {\n const history = useHistory();\n return (\n
{\n history.push(\"/cart/subscription/yearly\")\n }}>\n
\n {\n isCustom ? (\n <>\n {children}\n \n )\n : content2 ? (\n <>\n

{content}

\n

{content2}

\n \n ) :

{content}

\n \n } \n
\n
\n )\n}\n\nexport default Banner;","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { connect } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport { Dispatch } from \"redux\";\nimport { Baby, Maintenance, User } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { BaseAction } from \"../../store/actionTypes\";\nimport { clearDeepLinkInfo } from \"../../store/ducks/guesUsers\";\nimport { logoutUser } from \"../../store/ducks/user\";\nimport { getGuestUserInfo } from \"../../store/sagas/guestUser\";\nimport BottomNavigation from \"../Footer/BottomNavigation\";\nimport GuestUserModal from \"../GuestUserModal/GuestUserModal\";\nimport CustomDrawer from \"../Header/CustomDrawer\";\nimport Header from \"../Header/Header\";\nimport Banner from \"../Banner/Banner\";\nimport \"./BaseLayout.scss\";\nimport { getMaintenance } from \"../../store/sagas/maintenance\";\n\ninterface Props {\n children?: any;\n title?: string;\n pageTitle?: string;\n pageSubtitle?: string;\n pageStyle?: React.CSSProperties | undefined;\n contentStyle?: React.CSSProperties | undefined;\n hideHeader?: boolean;\n hideFooter?: boolean;\n hideFooterLinks?: boolean;\n hideChildMenu?: boolean;\n hideHeaderChildMenu?: boolean;\n logout: Function;\n babySelected?: Baby;\n user: User;\n invitationCode: string;\n clearDeepLinkInfoFromStore: () => void;\n hideBanner?: boolean;\n maintenance?: Maintenance;\n}\n\nconst BaseLayout: React.FC = ({\n children,\n title,\n pageTitle,\n pageSubtitle,\n pageStyle,\n contentStyle,\n hideHeader,\n hideFooter,\n hideFooterLinks,\n hideHeaderChildMenu,\n logout,\n babySelected,\n user,\n invitationCode,\n clearDeepLinkInfoFromStore,\n hideBanner,\n maintenance\n}) => {\n // React hook to paint drawer on screen\n const location = useLocation();\n const history = useHistory();\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [guestUserModalVisible, setGuestUserModalVisible] = useState(false);\n\n useEffect(() => {\n if(maintenance?.in_maintenance) {\n history.push(\"/maintenance\")\n }\n }, [maintenance?.in_maintenance])\n\n useEffect(() => {\n sagaMiddleware.run(getMaintenance);\n }, [location.pathname])\n\n useEffect(() => {\n if (!!invitationCode && window.location.pathname === \"/\") {\n sagaMiddleware.run(\n getGuestUserInfo,\n invitationCode,\n (err: string, data: any) => {\n if (!err) {\n setGuestUserModalVisible(true);\n }\n }\n );\n }\n }, [invitationCode]);\n const showBanner = !!hideBanner ? false : !!user && user.user_level === 0;\n\n const storeLength = useMemo(() => {\n if (!!user.store) {\n try {\n const store = JSON.parse(user.store);\n if (!!store && Array.isArray(store)) return store.length;\n } catch (error) {}\n }\n return 0;\n }, [user]);\n\n const alexandersOrderCounter = useMemo(() => {\n return user.alexanders_orders_count || 0;\n }, [user]);\n\n return (\n
\n \n {!hideHeader && (\n setGuestUserModalVisible(true)}\n />\n )}\n {\n showBanner ? \n : null\n }\n {/* Helmet attributes (update html title) */}\n {title && (\n \n {title}\n \n )}\n
\n {children}\n
\n {!hideFooter && }\n setGuestUserModalVisible(true)}\n alexandersOrderCounter={alexandersOrderCounter}\n />\n\n {!!guestUserModalVisible && (\n {\n clearDeepLinkInfoFromStore();\n setGuestUserModalVisible(false);\n }}\n />\n )}\n
\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n babySelected: state.baby.babySelected,\n user: state.user,\n invitationCode: state.guestUsers.deepLinkInfo?.invitation_code,\n maintenance: state.maintenance\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n logout: () => dispatch(logoutUser()),\n clearDeepLinkInfoFromStore: () => dispatch(clearDeepLinkInfo()),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BaseLayout);\n","import React from \"react\";\nimport BaseLayout from \"../../components/BaseLayout/BaseLayout\";\nimport { WEB_VERSION, PAGE_URL } from \"../../env\";\n\nconst AboutPage: React.FC = () => (\n \n
\n

About BabyPage

\n
    \n
  • \n Version: \n {WEB_VERSION}\n
  • \n
  • \n \n Terms of Service\n \n
  • \n
  • \n \n Privacy Policy\n \n
  • \n
  • \n \n Support\n \n
  • \n
\n
\n \n);\n\nexport default AboutPage;\n","import { isEmail } from 'validator';\n\nexport interface CommonEmail {\n base: string;\n shouldBe: string;\n /**\n * If the email can have different domains\n * Ex:\n * @yahoo.com\n * @yahoo.com.br\n * @yahoo.com.co\n * @yahoo.com.uk\n * @yahoo.com.*\n */\n canHaveDiffDomain?: boolean;\n}\n\nexport const COMMON_EMAILS: CommonEmail[] = [\n {\n base: '@hotmail',\n shouldBe: '@hotmail.com',\n },\n {\n base: '@icloud',\n shouldBe: '@icloud.com',\n },\n {\n base: '@aol',\n shouldBe: '@aol.com',\n },\n {\n base: '@mail',\n shouldBe: '@mail.com',\n },\n {\n base: '@outlook',\n shouldBe: '@outlook.com',\n },\n {\n base: '@gmail',\n shouldBe: '@gmail.com',\n },\n {\n base: '@yahoo',\n shouldBe: '@yahoo.com',\n canHaveDiffDomain: true,\n },\n];\n\nexport const isEmailValid = (email: string): boolean => {\n // Validate email writing (normal regex or checking function)\n if (!isEmail(email)) return false;\n\n // Check if is a Common email and do more validations\n for (const c of COMMON_EMAILS) {\n const indexBase = email.indexOf(c.base);\n\n if (indexBase !== -1) {\n if (c.canHaveDiffDomain) {\n return email.substr(indexBase, c.shouldBe.length) === c.shouldBe;\n } else {\n return email.substr(indexBase) === c.shouldBe;\n }\n }\n }\n\n return true;\n};\n","import { FaFacebookF } from \"react-icons/fa\";\nimport React from \"react\";\nimport \"./FacebookButton.scss\";\n\ninterface Props {\n loading?: boolean;\n signInWithFacebook: Function;\n cssClass?: string;\n}\n\nconst FacebookButton: React.FC = ({\n loading,\n signInWithFacebook,\n cssClass = \"\",\n}) => (\n <>\n signInWithFacebook()}\n disabled={loading}\n style={{ marginTop: \"0\" }}\n >\n \n   Facebook\n \n \n);\n\nexport default FacebookButton;\n","import { FaApple } from \"react-icons/fa\";\nimport React from \"react\";\nimport \"./AppleButton.scss\";\n\ninterface Props {\n loading?: boolean;\n signInWithApple: Function;\n cssClass?: string;\n}\n\nconst AppleButton: React.FC = ({\n loading,\n signInWithApple,\n cssClass = \"\",\n}) => (\n <>\n signInWithApple()}\n disabled={loading}\n style={{marginTop: \"0\"}}\n >\n \n   Apple\n \n \n);\n\nexport default AppleButton;\n","import { Button, Form, Input, Modal, notification } from \"antd\";\nimport { FormComponentProps } from \"antd/lib/form\";\nimport queryString from \"query-string\";\nimport React, { Dispatch, PureComponent } from \"react\";\nimport { connect } from \"react-redux\";\nimport { AiFillQuestionCircle } from \"react-icons/ai\";\nimport { RouteComponentProps, withRouter } from \"react-router\";\nimport { isEmail } from \"validator\";\nimport { clientId, clientSecret } from \"../../env\";\nimport { DeepLinkInterface } from \"../../interfaces/guestUser\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { BaseAction } from \"../../store/actionTypes\";\nimport { clearDeepLinkInfo } from \"../../store/ducks/guesUsers\";\nimport rootSaga, { signupSaga } from \"../../store/sagas\";\nimport { fetchDashboard } from \"../../store/sagas/dashboard\";\nimport {\n authUser,\n authUserFacebook,\n forgetPasswordUser,\n signUpUser,\n userFacebookExists,\n switchAccount,\n authUserApple,\n} from \"../../store/sagas/user\";\nimport { startCase } from \"lodash\";\nimport { isEmailValid } from \"./data/emails\";\nimport FacebookButton from \"./FacebookButton\";\nimport AppleButton from \"./AppleButton\";\nimport { trackAction } from \"../../utils/marketing\";\nimport logoImg from \"../../assets/img/logo_2.png\";\nimport eyeClosed from \"../../assets/icons/icon-close-eye.png\";\nimport eyeOpen from \"../../assets/icons/icon-open-eye.png\";\n\ndeclare const FB: any;\ndeclare const AppleID: any;\n\nfunction hasErrors(fieldsError: Record) {\n return Object.keys(fieldsError).some((field) => fieldsError[field]);\n}\n\ntype Props = FormComponentProps &\n RouteComponentProps & {\n access_token?: string;\n deepLinkInfo: DeepLinkInterface;\n deepLinkInfoChanged: boolean;\n clearDeepLinkInfo: () => void;\n };\n\nclass SignInForm extends PureComponent {\n state = {\n signin: this.props.location.search === \"?signin\" ? true : false,\n passwordHidden: true,\n loading: false,\n faceLoading: false,\n confirmDirty: false,\n invitationCodeInfoModal: {\n open: false,\n },\n forgetPasswordModal: {\n open: false,\n email: \"\",\n valid: false,\n },\n customEmailModal: {\n open: false,\n first_name: \"\",\n last_name: \"\",\n email: \"\",\n valid: false,\n authResponse: {},\n meResponse: {},\n },\n };\n\n componentDidMount() {\n const query = queryString.parse(this.props.location.search);\n\n // Redirect user if is logged\n if (!!this.props.access_token) {\n this.props.history.push(\n !!query.redirect ? query.redirect.toString() : \"/\"\n );\n }\n\n // Check if is an \"redirect to signup\"\n if (!!query.signup) {\n this.setState({ signin: !this.state.signin });\n\n setTimeout(() => {\n // To disabled submit button at the beginning.\n this.props.form.validateFields();\n }, 50);\n } else {\n // To disabled submit button at the beginning.\n this.props.form.validateFields();\n }\n }\n\n componentDidUpdate(prevProps: any) {\n if (\n this.props.deepLinkInfo.invitation_code !==\n prevProps.deepLinkInfo.invitation_code &&\n this.props.deepLinkInfo.invitation_code !== \"\" &&\n this.props.deepLinkInfo.additional_data.usersExists === false\n ) {\n this.setState({ signin: false });\n } else if (\n this.props.deepLinkInfo.invitation_code ===\n prevProps.deepLinkInfo.invitation_code &&\n this.props.deepLinkInfo.invitation_code !== \"\" &&\n this.props.deepLinkInfo.additional_data.usersExists === false &&\n this.state.signin\n ) {\n this.props.clearDeepLinkInfo();\n }\n this.props.location.search === \"?signin\"\n ? this.setState({ signin: true })\n : this.setState({ signin: false });\n\n if (prevProps.location.search !== this.props.location.search) {\n this.props.form.resetFields();\n }\n }\n\n hidePassword = () => {\n this.setState({ passwordHidden: !this.state.passwordHidden });\n };\n\n // To custom email validation\n handleConfirmBlur = (e: React.FocusEvent) => {\n const { value } = e.target;\n this.setState({ confirmDirty: this.state.confirmDirty || !!value });\n };\n\n // To custom email validation\n validateEmail = (_rule: any, value: any, callback: any) => {\n if (value && !isEmailValid(value)) {\n callback(\"The email provided is not an email.\");\n } else {\n callback();\n }\n };\n\n // To custom email validation\n validateToNextEmail = (_rule: any, value: any, callback: any) => {\n const { form } = this.props;\n if (value && this.state.confirmDirty) {\n form.validateFields([\"cfEmail\"], { force: true });\n }\n callback();\n };\n\n // To custom email validation\n compareToFirstEmail = (_rule: any, value: any, callback: any) => {\n const { form } = this.props;\n if (value && value !== form.getFieldValue(\"signupEmail\")) {\n callback(\" Email and Email Confirmation must be the same.\");\n } else {\n callback();\n }\n };\n\n // Call Ant.Design notification manager\n _openNotificationWithIcon = (\n type: \"success\" | \"error\",\n title: string,\n message: string\n ) => {\n notification[type]({\n message: title,\n description: message,\n });\n };\n\n // On Submit (Sign in or Sign up)\n onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n\n this.props.form.validateFields((err: any, values: any) => {\n if (!err && !this.state.loading) {\n this.setState({ loading: true });\n\n // Prepare the saga (if is sign in or sign up)\n let saga: any = authUser;\n\n if (!this.state.signin) {\n saga = signUpUser;\n values.email = values.signupEmail;\n\n // Quora Tracking - New signUp\n trackAction(\"trackNewSignUp\", {\n google: {\n event: \"new_signUp\",\n },\n });\n }\n\n // Run saga middleware\n sagaMiddleware.run(saga, values, (response: any, error: any) => {\n this.setState({ loading: false });\n\n if (error) {\n this._openNotificationWithIcon(\"error\", \"Error\", error);\n return;\n }\n\n if (!!values.invitationCode) {\n //Send guest directly to host's dashboard\n this.loginAsGuestUser(response.main_user.id, response.id);\n\n this.props.clearDeepLinkInfo();\n\n Modal.info({\n title: \"Hi there!\",\n content: `You're seeing the ${startCase(\n response.first_name\n )} ${startCase(\n response.last_name\n )}'s account as a guest user. Go to menu and select switch account to see your own content.`,\n });\n } else {\n if(this.state.signin) {\n sagaMiddleware.run(rootSaga, true);\n } else {\n sagaMiddleware.run(signupSaga)\n }\n\n if (response.user_level === 3) {\n this.props.history.push(\"/store\");\n return;\n }\n\n const query = queryString.parse(this.props.location.search);\n\n if (response.babies_count > 0) {\n this.props.history.push(\n !!query.redirect ? query.redirect.toString() : \"/\"\n );\n } else {\n const firstHostUserId =\n response.host_users.length > 0\n ? response.host_users[0].host_user_id\n : null;\n\n if (!firstHostUserId) {\n this.props.history.push(\n `/step-2${\n !!query.redirect\n ? `?redirect=${query.redirect.toString()}`\n : this.props.location.search\n }`\n );\n\n return;\n }\n\n this.loginAsGuestUser(response.id, firstHostUserId);\n\n Modal.info({\n title: \"Hi there!\",\n content: `You're seeing the ${startCase(\n response.host_users[0].host_user.first_name\n )} ${startCase(\n response.host_users[0].host_user.last_name\n )}'s account as a guest user. Go to menu and select switch account to see your own content.`,\n });\n }\n }\n });\n }\n });\n };\n\n // Open Invitation-Code Info Modal\n invitationCodeInfoToggle = () => {\n this.setState({\n invitationCodeInfoModal: {\n open: !this.state.invitationCodeInfoModal.open,\n },\n });\n };\n\n // Open forget password Modal\n forgetPasswordToggle = () => {\n this.setState({\n forgetPasswordModal: {\n open: !this.state.forgetPasswordModal.open,\n valid: false,\n email: \"\",\n },\n });\n };\n\n // Submit forget password form\n forgetPassword = () => {\n if (!this.state.forgetPasswordModal.valid) return;\n\n this.setState({ loading: true });\n\n sagaMiddleware.run(\n forgetPasswordUser,\n { email: this.state.forgetPasswordModal.email },\n (response: any, error: any) => {\n this.setState({ loading: false });\n\n if (error) {\n this._openNotificationWithIcon(\"error\", \"Error\", error);\n return;\n }\n\n // Success message\n this._openNotificationWithIcon(\"success\", \"Success\", response);\n\n // Close modal\n this.forgetPasswordToggle();\n }\n );\n };\n\n finishAuth = (response: any) => {\n // this._openNotificationWithIcon(\n // 'success',\n // 'Success',\n // `Welcome to BabyPage, ${capitalizeTexts(response.first_name)}!`\n // );\n\n if (response.user_level === 3) {\n this.props.history.push(\"/store\");\n return;\n }\n\n // Run root saga (To get babies, ...)\n sagaMiddleware.run(rootSaga, true);\n\n let query: any = {};\n\n try {\n query = queryString.parse(this.props.location.search) || {};\n } catch (err) {}\n\n if (!!response.babies_count) {\n this.props.history.push(\n !!query && !!query.redirect ? query.redirect.toString() : \"/\"\n );\n } else {\n this.props.history.push(\n `/step-2${\n !!query && !!query.redirect\n ? `?redirect=${query.redirect.toString()}`\n : this.props.location.search\n }`\n ); // Send user to next steps\n }\n };\n\n finishFacebookAuth = (authResponse: any, meResponse: any) => {\n if (\n !!this.state.customEmailModal.open &&\n !!this.state.customEmailModal.email &&\n !!this.state.customEmailModal.first_name &&\n !!this.state.customEmailModal.last_name\n ) {\n meResponse.first_name = this.state.customEmailModal.first_name;\n meResponse.last_name = this.state.customEmailModal.last_name;\n meResponse.email = this.state.customEmailModal.email;\n\n this.setState({\n faceLoading: true,\n });\n }\n\n let bodyRequest = {\n ...meResponse,\n facebook_id: meResponse.id || authResponse.userID,\n grant_type: \"facebook_credentials\",\n client_id: clientId,\n client_secret: clientSecret,\n token_device: \"\",\n lang: \"en\",\n operative_system: \"web\",\n modified_email: this.state.customEmailModal.open,\n };\n\n if (this.props.deepLinkInfo.invitation_code) {\n bodyRequest.invitation_code = this.props.deepLinkInfo.invitation_code;\n }\n\n sagaMiddleware.run(\n authUserFacebook,\n bodyRequest,\n (response: any, error: any) => {\n this.setState({\n faceLoading: false,\n customEmailModal: {\n open: false,\n email: \"\",\n first_name: \"\",\n last_name: \"\",\n valid: false,\n authResponse: {},\n meResponse: {},\n },\n });\n\n if (error) {\n this._openNotificationWithIcon(\"error\", \"Error\", error);\n return;\n }\n\n if (!!this.props.deepLinkInfo.invitation_code) {\n //Send guest directly to host's dashboard\n this.loginAsGuestUser(response.main_user.id, response.id);\n\n this.props.clearDeepLinkInfo();\n\n Modal.info({\n title: \"Hi there!\",\n content: `You're seeing the ${startCase(\n response.first_name\n )} ${startCase(\n response.last_name\n )}'s account as a guest user. Go to menu and select switch account to see your own content.`,\n });\n\n return;\n }\n\n this.finishAuth(response);\n }\n );\n };\n\n afterResponse = (authResponse: any) => {\n try {\n FB.api(\n \"/me\",\n { fields: \"id,name,first_name,last_name,email\" },\n (meResponse: any) => {\n if (\n !meResponse.first_name ||\n !meResponse.first_name.length ||\n !meResponse.last_name ||\n !meResponse.last_name.length ||\n !meResponse.email ||\n !meResponse.email.length\n ) {\n sagaMiddleware.run(\n userFacebookExists,\n {\n facebook_id: meResponse.id || authResponse.userID,\n grant_type: \"facebook_credentials\",\n client_id: clientId,\n client_secret: clientSecret,\n token_device: \"\",\n lang: \"en\",\n operative_system: \"web\",\n },\n (existData: any, error: any) => {\n if (error) {\n this.setState({\n faceLoading: false,\n customEmailModal: {\n open: true,\n email: \"\",\n first_name: meResponse.first_name || \"\",\n last_name: meResponse.last_name || \"\",\n valid: false,\n authResponse: authResponse,\n meResponse: { ...meResponse },\n },\n });\n\n return;\n }\n\n this.finishAuth(existData);\n }\n );\n return;\n }\n\n this.finishFacebookAuth(authResponse, meResponse);\n }\n );\n } catch (error) {\n this.setState({ faceLoading: false });\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"Sorry, Facebook login is not available now, try again later\"\n );\n }\n };\n\n // Open Facebook login\n signInWithFacebook = () => {\n if (!!FB) {\n this.setState({\n faceLoading: true,\n });\n\n try {\n FB.getLoginStatus((response: any) => {\n if (response.status === \"connected\") {\n this.afterResponse({ ...response.authResponse });\n } else {\n FB.login(\n (response: any) => {\n if (response.status === \"connected\") {\n this.afterResponse({ ...response.authResponse });\n } else {\n this.setState({ faceLoading: false });\n if (response.status === \"not_authorized\") {\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"When you sign in with Facebook please follow all steps and give permission for BabyPage App\"\n );\n }\n }\n },\n {\n scope: \"public_profile,email,user_photos\",\n auth_type: \"reauthenticate\",\n }\n );\n }\n }, true);\n } catch (error) {\n this.setState({ faceLoading: false });\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"Sorry, Facebook login is not available now, try again later\"\n );\n }\n } else {\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"Sorry, Facebook login is not available now, try again later\"\n );\n }\n };\n\n appleResponse = (appleAuthResponse: any) => {\n try {\n let appleObject = {};\n\n if (!!appleAuthResponse.user) {\n // Sign Up\n if (\n !!appleAuthResponse.user.email &&\n !!appleAuthResponse.user.name.firstName &&\n !!appleAuthResponse.user.name.lastName\n ) {\n appleObject = {\n grant_type: \"apple_id\",\n client_id: clientId,\n client_secret: clientSecret,\n lang: \"en\",\n token_device: \"\",\n operative_system: \"web\",\n apple_token: appleAuthResponse.authorization.id_token,\n apple_id: appleAuthResponse.user.email,\n first_name: appleAuthResponse.user.name.firstName,\n last_name: appleAuthResponse.user.name.lastName,\n };\n }\n } else {\n // Sign In\n appleObject = {\n grant_type: \"apple_id\",\n client_id: clientId,\n client_secret: clientSecret,\n lang: \"en\",\n token_device: \"\",\n operative_system: \"web\",\n apple_token: appleAuthResponse.authorization.id_token,\n };\n }\n\n sagaMiddleware.run(\n authUserApple,\n {\n ...appleObject,\n },\n (existData: any, error: any) => {\n if (error) {\n this.setState({ faceLoading: false });\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"Sorry, Apple login is not available now, try again later\"\n );\n return;\n }\n\n this.finishAuth(existData);\n this.setState({ faceLoading: false });\n }\n );\n\n return;\n } catch (error) {\n this.setState({ faceLoading: false });\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"Sorry, Apple login is not available now, try again later\"\n );\n }\n };\n\n signInWithApple = async () => {\n if (!!AppleID) {\n this.setState({\n faceLoading: true,\n });\n\n try {\n const response = await AppleID.auth.signIn();\n\n if (!!response.authorization) {\n this.appleResponse(response);\n } else {\n this.setState({ faceLoading: false });\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"Sorry, Apple login is not available now, try again later\"\n );\n }\n } catch (error) {\n if (error == \"popup_closed_by_user\") {\n this.setState({ faceLoading: false });\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"When you sign in with Apple please follow all steps and give permission for BabyPage App\"\n );\n } else {\n this.setState({ faceLoading: false });\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"Sorry, Apple login is not available now, try again later\"\n );\n }\n }\n } else {\n this.setState({ faceLoading: false });\n this._openNotificationWithIcon(\n \"error\",\n \"Error\",\n \"Sorry, Apple login is not available now, try again later\"\n );\n }\n };\n\n private loginAsGuestUser(mainUserId: number, hostUserId: number) {\n sagaMiddleware.run(\n switchAccount,\n {\n mainUserId,\n hostUserId,\n },\n (error: string | null) => {\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n return;\n }\n sagaMiddleware.run(rootSaga, true);\n this.props.history.push(\"/\");\n sagaMiddleware.run(fetchDashboard, (error: string | null) => {\n if (error !== null) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n }\n });\n }\n );\n }\n\n render() {\n const { getFieldDecorator, getFieldsError, getFieldError, isFieldTouched } =\n this.props.form;\n\n const firstNameError =\n isFieldTouched(\"firstName\") && getFieldError(\"firstName\");\n const lastNameError =\n isFieldTouched(\"lastName\") && getFieldError(\"lastName\");\n const cfEmailError = isFieldTouched(\"cfEmail\") && getFieldError(\"cfEmail\");\n const emailError = isFieldTouched(\"email\") && getFieldError(\"email\");\n const emailErrorSignup =\n isFieldTouched(\"signupEmail\") && getFieldError(\"signupEmail\");\n const passwordError =\n isFieldTouched(\"password\") && getFieldError(\"password\");\n const invitationCodeError =\n isFieldTouched(\"invitationCode\") && getFieldError(\"invitationCode\");\n\n const modalErrorClassName = !!(this.state.forgetPasswordModal.open\n ? !!this.state.forgetPasswordModal.email.length &&\n !this.state.forgetPasswordModal.valid\n : !this.state.customEmailModal.valid)\n ? \"has-error\"\n : \"\";\n\n return (\n <>\n
\n {this.props.history.location.search === \"?signin\" ? (\n <>\n
\n
\n \n Login\n

\n
\n
\n
\n
\n \n {getFieldDecorator(\"email\", {\n rules: [\n {\n required: true,\n message: \"This field is required.\",\n },\n {\n type: \"email\",\n message: \"The email provided is not an email.\",\n },\n ],\n initialValue:\n this.props.deepLinkInfo.additional_data.email,\n })(\n \n )}\n \n
\n
\n
\n
\n \n {getFieldDecorator(\"password\", {\n rules: [\n {\n required: true,\n message: \"Please enter at least 6 characters.\",\n },\n {\n min: 6,\n message: \"Please enter at least 6 characters.\",\n },\n ],\n })(\n \n }\n />\n )}\n \n
\n
\n
\n
\n \n \n \n Login to Babypage\n \n \n \n
\n
\n
\n
\n {this.state.signin && (\n \n \n Forgot your password?\n \n \n )}\n
\n
\n
\n
\n \n {this.state.signin\n ? \"I'd like to create an account\"\n : \"Already have an account?\"}\n \n
\n
\n {\n this.setState({ signin: !this.state.signin });\n this.props.history.push(\"/signin?signup\");\n setTimeout(() => {\n this.props.form.validateFields();\n }, 50);\n }}\n >\n \n {this.state.signin ? \"Sign Up\" : \"Sign in\"}\n \n \n
\n
\n
\n
\n

Or Continue With

\n
\n
\n \n
\n
\n \n
\n
\n \n ) : (\n <>\n
\n
\n \n Create Account\n

\n
\n
\n
\n
\n \n {getFieldDecorator(\"firstName\", {\n rules: [\n {\n required: true,\n message: \"This field is required.\",\n },\n ],\n initialValue:\n this.props.deepLinkInfo.additional_data.full_name.split(\n \" \"\n )[0],\n })()}\n \n
\n
\n \n {getFieldDecorator(\"lastName\", {\n rules: [\n {\n required: true,\n message: \"This field is required.\",\n },\n ],\n initialValue:\n this.props.deepLinkInfo.additional_data.full_name.split(\n \" \"\n )[1],\n })()}\n \n
\n
\n
\n
\n \n {getFieldDecorator(\"signupEmail\", {\n rules: [\n {\n required: true,\n message: \"This field is required.\",\n },\n {\n type: \"email\",\n message: \"The email provided is not an email.\",\n },\n ],\n initialValue:\n this.props.deepLinkInfo.additional_data.email,\n })()}\n \n
\n
\n
\n
\n \n {getFieldDecorator(\"cfEmail\", {\n rules: [\n {\n required: true,\n message: \"This field is required.\",\n },\n {\n type: \"email\",\n message: \"The email provided is not an email.\",\n },\n {\n validator: this.compareToFirstEmail,\n },\n ],\n initialValue:\n this.props.deepLinkInfo.additional_data.email,\n })(\n \n )}\n \n
\n
\n
\n
\n \n {getFieldDecorator(\"password\", {\n rules: [\n {\n required: true,\n message: \"Please enter at least 6 characters.\",\n },\n {\n min: 6,\n message: \"Please enter at least 6 characters.\",\n },\n ],\n })(\n \n }\n />\n )}\n \n
\n
\n
\n
\n \n {getFieldDecorator(\"invitationCode\", {\n rules: [\n { min: 8, message: \"Please enter 8 characters.\" },\n {\n pattern: /^[0-9]+$/,\n message: \" Please enter only numbers.\",\n },\n ],\n initialValue: this.props.deepLinkInfo.invitation_code,\n })(\n \n }\n />\n )}\n \n
\n {/*
\n \n
*/}\n
\n
\n
\n \n \n \n Create Account{\" \"}\n \n \n \n
\n
\n
\n
\n \n {this.state.signin\n ? \"I'd like to create an account\"\n : \"Already have an account?\"}\n \n
\n
\n {\n this.setState({ signin: !this.state.signin });\n this.props.history.push(\"/signin?signin\");\n setTimeout(() => {\n this.props.form.validateFields();\n }, 50);\n }}\n >\n \n {this.state.signin ? \"Sign Up\" : \"Sign in\"}\n \n \n
\n
\n
\n
\n

Or Continue with

\n
\n
\n \n
\n
\n \n
\n
\n \n )}\n
\n\n \n
\n
\n \"Plus\n
\n\n

\n If you received an invitation to access a BabyPage account, please\n enter the code that was provided to you via email.\n

\n
\n \n\n \n

\n Reset your password to continue capturing your children's\n milestones.\n

\n
\n \n {\n const email = e.target.value;\n this.setState({\n forgetPasswordModal: {\n ...this.state.forgetPasswordModal,\n email,\n valid: isEmail(email),\n },\n });\n }}\n onPressEnter={this.forgetPassword}\n value={this.state.forgetPasswordModal.email}\n className={modalErrorClassName}\n />\n {this.state.forgetPasswordModal.email.length &&\n !this.state.forgetPasswordModal.valid ? (\n
\n The email provided is not an email.\n
\n ) : null}\n
\n \n\n \n this.setState({\n customEmailModal: {\n open: false,\n email: \"\",\n first_name: \"\",\n last_name: \"\",\n valid: false,\n authResponse: {},\n meResponse: {},\n },\n })\n }\n cancelButtonProps={{\n disabled: this.state.faceLoading,\n icon: \"close-circle\",\n shape: \"round\",\n className: \"default-btn\",\n }}\n closable={!this.state.faceLoading}\n okType=\"primary\"\n okButtonProps={{\n disabled:\n !this.state.customEmailModal.valid || this.state.faceLoading,\n icon: this.state.faceLoading ? \"faceLoading\" : \"check-circle\",\n htmlType: \"button\",\n shape: \"round\",\n className: \"default-btn\",\n }}\n onOk={() =>\n this.finishFacebookAuth(\n this.state.customEmailModal.authResponse,\n this.state.customEmailModal.meResponse\n )\n }\n >\n \n {\n const first_name = e.target.value;\n this.setState({\n customEmailModal: {\n ...this.state.customEmailModal,\n first_name,\n valid:\n !!first_name &&\n !!this.state.customEmailModal.last_name &&\n isEmail(this.state.customEmailModal.email),\n },\n });\n }}\n onPressEnter={() => {\n if (\n this.state.customEmailModal.valid &&\n !this.state.faceLoading\n ) {\n this.finishFacebookAuth(\n this.state.customEmailModal.authResponse,\n this.state.customEmailModal.meResponse\n );\n }\n }}\n value={this.state.customEmailModal.first_name}\n className=\"my-1\"\n />\n \n {\n const last_name = e.target.value;\n this.setState({\n customEmailModal: {\n ...this.state.customEmailModal,\n last_name,\n valid:\n !!last_name &&\n !!this.state.customEmailModal.first_name &&\n isEmail(this.state.customEmailModal.email),\n },\n });\n }}\n onPressEnter={() => {\n if (\n this.state.customEmailModal.valid &&\n !this.state.faceLoading\n ) {\n this.finishFacebookAuth(\n this.state.customEmailModal.authResponse,\n this.state.customEmailModal.meResponse\n );\n }\n }}\n value={this.state.customEmailModal.last_name}\n className=\"my-1\"\n />\n \n {\n const email = e.target.value;\n this.setState({\n customEmailModal: {\n ...this.state.customEmailModal,\n email,\n valid:\n !!this.state.customEmailModal.first_name &&\n !!this.state.customEmailModal.last_name &&\n isEmail(email),\n },\n });\n }}\n onPressEnter={() => {\n if (\n this.state.customEmailModal.valid &&\n !this.state.faceLoading\n ) {\n this.finishFacebookAuth(\n this.state.customEmailModal.authResponse,\n this.state.customEmailModal.meResponse\n );\n }\n }}\n value={this.state.customEmailModal.email}\n className=\"my-1\"\n />\n
\n {!this.state.customEmailModal.valid ? (\n

\n Please fill out all your information\n

\n ) : null}\n
\n \n \n );\n }\n}\n\nconst mapStateToProps = (state: AppState) => ({\n access_token: state.user.access_token,\n deepLinkInfo: state.guestUsers.deepLinkInfo,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n clearDeepLinkInfo: () => dispatch(clearDeepLinkInfo()),\n});\n\nexport default Form.create()(\n withRouter(connect(mapStateToProps, mapDispatchToProps)(SignInForm))\n);\n","import React, { useState } from \"react\";\nimport { Modal, Button } from \"antd\";\nimport BaseLayout from \"../../../components/BaseLayout/BaseLayout\";\nimport { useHistory } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { AppState } from \"../../../store\";\nimport { Link } from \"react-router-dom\";\nimport SignInForm from \"../../../components/SignIn/SignInForm\";\nimport message from \"../../../assets/img/homeMessage.png\";\nimport homeMessageMobile from \"../../../assets/img/homeMessageMobile.png\";\nimport brandLogo from \"../../../assets/img/brandLogo.png\";\nimport { PRODUCTION } from \"../../../env\";\n\nimport \"../Auth.scss\";\nimport { useWindowSize } from \"../../../hooks/WindowsSize\";\n\ninterface Props {\n access_token?: string;\n}\n\nconst SignInPage: React.FC = ({access_token}) => {\n const [modal, setModal] = useState(false);\n const [ width ] = useWindowSize();\n const history = useHistory()\n\n const linkToLanding = PRODUCTION ? \"https://babypage.com\" : \"https://babypagestg.wpengine.com/\"\n\n if(!!access_token) {\n history.push(\"/\")\n }\n return (\n \n
\n
\n
\n
\n
\n \"logo\"\n
\n
\n
\n
\n {width > 540 ? (\"Message\") : (\"Message\")}\n
\n
\n
\n
\n {\n setModal(true);\n history.push(\"/signin?signup\")\n }}\n >\n Create Account\n \n
\n
\n
\n
\n {\n setModal(true);\n history.push(\"/signin?signin\")\n }}\n >\n Login to BabyPage\n \n
\n
\n
\n
\n
\n setModal(false)}\n destroyOnClose\n footer={null}\n bodyStyle={{\n backgroundColor: \"#e1c9bd\",\n }}\n >\n
\n
\n
\n \n
\n
\n
\n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n access_token: state.user.access_token,\n});\n\nexport default connect(mapStateToProps)(SignInPage);\n\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { RouteComponentProps, withRouter } from \"react-router\";\nimport { Form, Input, Button, notification, Spin } from 'antd';\nimport { FormComponentProps } from \"antd/lib/form\";\nimport queryString from \"query-string\";\nimport { resetPassword } from \"../../store/sagas/user\";\nimport { sagaMiddleware } from \"../../store\";\n\nfunction hasErrors(fieldsError: Record) {\n return Object.keys(fieldsError).some(field => fieldsError[field]);\n}\n\ntype Props = FormComponentProps & RouteComponentProps;\n\nclass ResetPasswordForm extends React.Component {\n\n \n\n // Call Ant.Design notification manager\n _openNotificationWithIcon = (\n type: \"success\" | \"error\",\n title: string,\n message: string\n ) => {\n notification[type]({\n message: title,\n description: message,\n onClose: () => {\n this.props.history.push(\"/\");\n }\n });\n };\n\n state = {\n loading: false,\n email:\"\",\n token:\"\",\n disabled: false\n }\n\n componentWillMount() {\n\n const query = queryString.parse(this.props.location.search);\n\n if(!!query) {\n this.setState({email: !!query.email ? query.email : \"\", token: !!query.token ? query.token : \"\"})\n }\n \n }\n\n\n handleSubmit = (e: React.FormEvent) => {\n\n e.preventDefault();\n this.setState({ loading: true })\n\n this.props.form.validateFields((err: any, values: any) => {\n if (!err) {\n\n let body = {\n ...values,\n token: this.state.token,\n }\n\n sagaMiddleware.run(\n resetPassword,\n { ...body },\n (response: any, error: any) => {\n\n this.setState({ loading: false })\n\n if (error) {\n\n this._openNotificationWithIcon(\"error\", \"Error\", error);\n return;\n\n }\n this.setState({disabled:true})\n // Success message\n this._openNotificationWithIcon(\"success\", \"Success\", \"Your password has been successfully changed. You will be redirected to the sign in page shortly.\");\n\n }\n );\n \n } else {\n this.setState({ loading: false })\n }\n });\n };\n\n render() {\n const {\n getFieldDecorator,\n getFieldsError,\n getFieldError,\n isFieldTouched\n } = this.props.form;\n\n const emailError = getFieldError(\"email\");\n const passwordError = isFieldTouched(\"password\") && getFieldError(\"password\");\n\n return (\n
\n \n {getFieldDecorator(\"email\", {\n rules: [\n {\n required: true,\n message: \"This field is required.\"\n },\n {\n type: \"email\",\n message: \"The email provided is not an email.\"\n }\n ],\n initialValue: !!this.state.email ? `${this.state.email}` : \"\"\n })()}\n \n \n { \n getFieldDecorator('password', \n {\n rules: [\n {\n required: true,\n message: \"Please enter at least 6 characters.\"\n },\n {\n min: 6,\n message: \"Please enter at least 6 characters.\"\n }\n ]\n }\n )\n () \n }\n \n \n {this.state.loading\n\n ? \n : \n Reset Password\n \n }\n \n \n );\n }\n}\n\nexport default Form.create()(\n withRouter(connect()(ResetPasswordForm))\n);","import React, { useEffect, useState } from 'react';\nimport { useHistory, useLocation } from 'react-router';\nimport { PAGE_URL } from '../../../env';\nimport BaseLayout from '../../../components/BaseLayout/BaseLayout';\nimport './ResetPassword.scss';\nimport ResetPasswordForm from '../../../components/ResetPassword/ResetPasswordForm';\nimport logo from '../../../assets/img/logo-babypage.png';\n\n\nconst ResetPassword: React.FC = () => {\n\n const location = useLocation();\n const history = useHistory();\n\n useEffect( () => {\n\n if (location.search === \"\") {\n history.push(\"/\")\n }\n\n }, [])\n \n return (\n \n \n \"Logo\"\n \n \n
\n
\n
\n
\n
\n

Reset Password

\n

Reset your password to continue capturing your children's milestones.

\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n \n );\n};\n\nexport default ResetPassword;","// login-token\nimport { Icon, Modal, notification, Spin } from 'antd';\nimport queryString from 'query-string';\nimport React, { useEffect } from 'react';\nimport { useHistory, useLocation } from 'react-router';\nimport { sagaMiddleware } from '../../store';\nimport { getAuthenticatedUserToken } from '../../store/sagas/user';\nimport rootSaga from '../../store/sagas';\n\nconst SignInToken: React.FC = () => {\n const history = useHistory();\n const location = useLocation();\n\n useEffect(() => {\n const access_token: any = queryString.parse(location.search).token;\n const subscription: any = queryString.parse(location.search).subscription;\n\n if (!!access_token) {\n sagaMiddleware.run(\n getAuthenticatedUserToken,\n access_token,\n (error?: string, user?: any) => {\n if (!!error) {\n Modal.error({\n title: 'Error',\n content: error,\n });\n history.push('/');\n } else {\n sagaMiddleware.run(rootSaga, true);\n\n if (!!subscription && subscription !== '') {\n history.push(`/cart/subscription/${subscription}?babyList=true`);\n } else if (user.babies_count > 0) {\n history.push('/');\n } else {\n history.push('/step-2'); // Send user to next steps\n }\n }\n }\n );\n } else {\n history.push('/');\n }\n }, [history, location]);\n\n return (\n
\n } />\n
\n );\n};\n\nexport default SignInToken;\n","import { call, put, select } from 'redux-saga/effects';\nimport { AppState, sagaMiddleware } from '..';\nimport api from '../../api';\nimport { User } from '../../interfaces';\nimport { CartItem } from '../../interfaces/cart';\nimport { parseRequestError } from '../../utils/error';\nimport { changeUser } from '../ducks/user';\nimport { trackAddToCart } from './../../utils/marketing';\n\n/**\n * Add product to User Cart\n */\nexport function* addProductStore(\n product: CartItem,\n callback: (error?: string, description?: string) => void\n) {\n let store = yield select((state: AppState) => state.user.store);\n let newStore: CartItem[] = [];\n\n if (!!store && store !== '[]') {\n try {\n store = JSON.parse(store);\n if (!!store && Array.isArray(store)) {\n if (\n product.type === 'print' &&\n !!store.find(\n p => parseInt(p.babypage_id) === parseInt(product.babypage_id)\n )\n ) {\n callback('You already have this BabyPage in your Cart', undefined);\n return;\n }\n\n if (\n product.type === 'book' &&\n !!store.find(p => parseInt(p.book_id) === parseInt(product.book_id))\n ) {\n callback('You already have this Book in your Cart', undefined);\n return;\n }\n\n // Clean \"Store\" instead to return error, so users can change their plan choose\n if (\n product.type === 'subscription' &&\n !!store.find(p => p.type === 'subscription')\n ) {\n store = newStore;\n }\n\n newStore = store;\n }\n } catch (error) {}\n }\n\n newStore.push(product);\n\n trackAddToCart(product);\n\n sagaMiddleware.run(updateUserStore, JSON.stringify(newStore), callback);\n}\n\n/**\n * Update user Cart\n */\nexport function* updateUserStore(\n store: string,\n callback: (error?: string, description?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n try {\n const response = yield call(\n api.post,\n 'api/update-user-store',\n {\n store\n },\n {\n headers: {\n Authorization: accessToken\n }\n }\n );\n\n if (response.data && response.data.code === 200) {\n yield put(\n changeUser({\n store: response.data.data\n })\n );\n callback(undefined, 'Cart updated');\n } else {\n callback('Error updating Cart');\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Get user store\n */\nexport function* getUserStore(callback: (error?: string) => void) {\n const user: User = yield select((state: AppState) => state.user);\n\n try {\n const response = yield call(api.get, 'api/get-store?lang=en', {\n headers: {\n Authorization: user.access_token\n }\n });\n\n if (response.data && response.data.code === 200) {\n let store = '';\n if (!!response.data.data && !!response.data.data.store) {\n try {\n store = JSON.stringify(response.data.data.store);\n\n if (!store) {\n store = '';\n }\n } catch (err) {}\n }\n\n if ((!user.store && !!store) || user.store !== store) {\n yield put(changeUser({ store }));\n }\n\n callback();\n } else {\n callback('Error getting Cart');\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","/* eslint-disable no-restricted-globals */\nimport { Button, Carousel, Modal, notification, Radio } from \"antd\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { GoCheck } from \"react-icons/go\";\nimport { connect } from \"react-redux\";\nimport queryString from \"query-string\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport bookStoreImgLarge from \"../../assets/img/book-mockup-store-xl.png\";\nimport bookStoreImg from \"../../assets/img/book-mockup-store.png\";\nimport bookIllustration from \"../../assets/img/book_line.png\";\nimport giftCardImg from \"../../assets/img/gift-card/cards.png\";\nimport giftCardMobileImg from \"../../assets/img/gift-card/cards-mobile.png\";\nimport beesIllustration from \"../../assets/img/illustrations/bees-illustration.png\";\nimport beesIllustration2 from \"../../assets/img/illustrations/bees-illustration-2.png\";\nimport cameraIllustration from \"../../assets/img/illustrations/camera-illustration.png\";\nimport fireworksIllustration from \"../../assets/img/illustrations/fireworks-illustration.png\";\nimport safetypinsIllustration from \"../../assets/img/illustrations/safetypins-illustration.png\";\nimport threeStarsIllustration from \"../../assets/img/illustrations/three-stars-illustration.png\";\nimport { PAGE_URL } from \"../../env\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport { StripeProduct } from \"../../interfaces\";\nimport { CartItem } from \"../../interfaces/cart\";\nimport { Product } from \"../../interfaces/product\";\nimport { User } from \"../../interfaces/user\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { addProductStore } from \"../../store/sagas/cart\";\nimport { sendWelcomeEmail } from \"../../store/sagas/user\";\nimport { trackAction } from \"../../utils/marketing\";\nimport \"./Store.scss\";\n\ndeclare global {\n interface Window {\n fpr: any;\n }\n}\n\n\nconst plansInfoDesktop = [\n {\n title: \"Ad-free experience\",\n perk1: true,\n perk2: true,\n bold: false,\n },\n {\n title: \"Create & order books\",\n perk1: true,\n perk2: true,\n bold: false,\n },\n {\n title: \"Question prompts & auto-generated content\",\n perk1: true,\n perk2: true,\n bold: false,\n },\n {\n title: \"Complete past milestones at any time\",\n perk1: true,\n perk2: true,\n bold: false,\n },\n {\n title: \"Import photos from various sources\",\n perk1: true,\n perk2: true,\n bold: false,\n },\n {\n title: \"Growth charts\",\n perk1: true,\n perk2: true,\n bold: false,\n },\n {\n title: \"10% off all book orders\",\n perk1: false,\n perk2: true,\n bold: true,\n },\n {\n title: \"Free shipping\",\n perk1: false,\n perk2: true,\n bold: true,\n },\n {\n title: \"Friends & family guest access\",\n perk1: false,\n perk2: true,\n bold: false,\n },\n {\n title: \"Photo only page layout options\",\n perk1: false,\n perk2: true,\n bold: false,\n },\n {\n title: \"Access full library of book covers\",\n perk1: false,\n perk2: true,\n bold: false,\n },\n {\n title: \"Exclusive font options\",\n perk1: false,\n perk2: true,\n bold: false,\n },\n {\n title: \"High resolution downloads\",\n perk1: false,\n perk2: true,\n bold: false,\n },\n {\n title: \"Multiple child profiles\",\n perk1: false,\n perk2: true,\n bold: false,\n },\n {\n title: \"Premium illustrations and design features\",\n perk1: false,\n perk2: true,\n bold: false,\n },\n {\n title: \"Collage options for multiple photos\",\n perk1: false,\n perk2: true,\n bold:false,\n },\n {\n title: \"Multiple choice question prompts\",\n perk1: false,\n perk2: true,\n bold:false,\n },\n {\n title: \"Auto-generated story content\",\n perk1: false,\n perk2: true,\n bold:false,\n },\n {\n title: \"Unlimited secure storage\",\n perk1: false,\n perk2: true,\n bold:false,\n },\n];\n\nconst carouselInfo = [\n {\n img: beesIllustration,\n title: \"PLUS membership includes\",\n info: \"Premium illustrations and decorative content\",\n },\n {\n img: threeStarsIllustration,\n title: \"PLUS membership includes\",\n info: \"Multiple profiles to document each child in your family\",\n },\n {\n img: bookIllustration,\n title: \"PLUS membership includes\",\n info: \"Access to additional book cover options\",\n },\n {\n img: fireworksIllustration,\n title: \"membership includes\",\n info: \"PLUS subscriptions get 10% off orders and free shipping\",\n },\n {\n img: safetypinsIllustration,\n title: \"PLUS membership includes\",\n info: \"Unlimited storage, save as many babypages as you like\",\n },\n {\n img: cameraIllustration,\n title: \"PLUS membership includes\",\n info: \"High-resolution downloads without watermarks\",\n },\n];\n\ninterface Props {\n showFree?: boolean;\n isPlus?: boolean;\n stripeProducts: StripeProduct[];\n store?: string;\n user: User;\n products: Product[];\n}\n\nconst Store: React.FC = ({\n showFree,\n isPlus,\n stripeProducts,\n store,\n user,\n products,\n}) => {\n const [width] = useWindowSize();\n const history = useHistory();\n const location = useLocation();\n\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [loading, setLoading] = useState(false);\n\n const addGiftCard = () => {\n history.push(\"/giftcards\");\n };\n\n const sendEmail = useCallback(() => {\n sagaMiddleware.run(sendWelcomeEmail, (error?: string) => {\n if (!!error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n }\n });\n }, []);\n\n const [continuePath, setContinuePath] = useState(\"\");\n const [checkboxActive, setCheckboxActive] = useState(\"\");\n const [desktopDevice, setDesktopDevice] = useState(true);\n const [product, setProduct] = useState(undefined);\n\n const subscriptionOptions = products.filter(item => item.type === \"subscription\" && !!item.stripe_id && item.description !== 'six month')\n .map(item => {\n return {\n ...item,\n id: item.stripe_id,\n qty: 1,\n price: (item.price / 100),\n selected: false,\n sku_id: null,\n sku_type: null,\n sku_image: null,\n sku_attributes: null,\n sku_package_dimensions: null,\n sku_inventory: null,\n shippable: false,\n attributes: null,\n package_dimensions: null,\n active: null,\n metadata: [],\n images: null, \n }\n }) \n\n const planClickHandler = (\n planType: string,\n isDesktopDevice: boolean = false\n ) => {\n const query = queryString.parse(location.search);\n let hookInfo = `/cart/subscription/${planType}`;\n\n if (planType === \"free\") {\n hookInfo = \"/\";\n\n if (!!isDesktopDevice) {\n if (location.pathname === \"/step-3\") {\n if (query.fpr) {\n window.fpr(\"referral\", {\n email: user.email,\n uid: user.stripe_id,\n });\n }\n sendEmail();\n }\n\n history.push(\"/\");\n }\n\n if(location.pathname === \"/step-3\") {\n trackAction(\n \"KeepFreeSubscriptionAfterCreateNewUser\",\n {\n facebook: {\n action: \"Keep free subscription\",\n },\n amplitude: {\n action: \"Keep free subscription\",\n },\n pinterest: {\n action: \"Keep free subscription\",\n },\n google: {\n event:\n \"kept_free_sub_after_signup\",\n },\n },\n true\n );\n }\n } else {\n trackAction(\"SelectSubscription\", {\n google: {\n event: \"select_subscription\"\n }\n }, \n true\n )\n }\n\n setContinuePath(hookInfo);\n setCheckboxActive(planType);\n\n // Going to CheckoutPage directly\n setProduct(products.find((p) => p.description === planType));\n setDesktopDevice(isDesktopDevice);\n };\n\n // Going to CheckoutPage directly\n const onCheckout = useCallback(() => {\n if (!!product) {\n sagaMiddleware.run(\n addProductStore,\n {\n book_id: null,\n babypage_id: null,\n event: \"\",\n gift: {\n status: false,\n email: \"\",\n receiver: \"\",\n message: \"\",\n date: \"\",\n },\n id: product.stripe_id,\n item: product.description,\n description: product.description,\n options: subscriptionOptions.map((e) => {\n if (e.description === product.description) return { ...e, selected: true };\n return e;\n }),\n prices: { monthly: 7.99, \"three month\": 13.98, \"one year\": 45 },\n qty: 1,\n stripe_id: product.stripe_id,\n subtitle: `BabyPage ${product.title}`,\n thumbnail: \"\",\n title: \"BabyPage PLUS Subscription\",\n total: product.price / 100,\n type: product.type,\n },\n (error?: string, _?: string) => {\n if (!!error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n } else {\n history.push(\"/checkout\");\n }\n }\n );\n }\n }, [history, product]);\n\n useEffect(() => {\n if (!!desktopDevice && !!product) {\n onCheckout();\n }\n }, [product, desktopDevice, onCheckout]);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [plansStore, setPlansStore] = useState([]);\n\n useEffect(() => {\n if (!!user.store) {\n try {\n const localStore = JSON.parse(user.store);\n if (!!localStore && Array.isArray(localStore)) {\n const newStore: CartItem[] =\n !!user.user_level && user.user_level === 1\n ? cloneDeep(\n localStore.filter((e: CartItem) => e.type !== \"subscription\")\n )\n : cloneDeep(localStore);\n\n setPlansStore(\n newStore.map((e) => ({\n ...e,\n qty:\n !!e.qty && typeof e.qty === \"number\" && !isNaN(e.qty)\n ? e.qty\n : 1,\n }))\n );\n }\n } catch (error) {}\n }\n }, [user]);\n\n return (\n
\n {/* Mobile + Free Only */}\n {!isPlus && (\n
\n
\n
\n
\n

Select a Subscription

\n
\n

\n Start capturing all of the sweet moments, so you never\n forget the unique details of your child's story!\n

\n
\n

Compare & select your subscription:

\n
\n
\n

Free 7-Day Trial!

\n
\n\n
\n planClickHandler(\"one year\")}\n >\n \n

\n \n \n Annual PLUS\n \n

\n

\n $3.75/mo*\n

\n

\n Save 53%\n \n \n

\n

Select

\n
\n
\n
\n\n\n
\n planClickHandler(\"three month\")}\n >\n \n

\n \n \n Quarterly PLUS\n \n

\n

\n $4.66/mo*\n
\n Save 42%\n

\n

Select

\n
\n
\n
\n\n
\n planClickHandler(\"monthly\")}\n >\n \n

\n \n \n Monthly PLUS\n \n

\n \n

$7.99

\n

Select

\n
\n \n \n
\n planClickHandler(\"free\")}\n >\n \n

\n \n Free Limited Features\n

\n

Select

\n
\n \n \n \n\n {!!continuePath && (\n {\n if (continuePath === \"/\") {\n if (location.pathname === \"/step-3\") {\n sendEmail();\n }\n\n history.push(continuePath);\n } else {\n onCheckout();\n }\n }}\n >\n Continue\n \n )}\n \n \n )}\n\n {/* Desktop + Free Only */}\n {!isPlus && (\n <>\n
\n
\n
\n
\n

Select a Subscription

\n
\n

\n Start capturing all of the sweet moments, so you never\n forget the unique details of your child's story!\n

\n
\n

Compare & select your subscription:

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

Free 7-Day Trial!

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

\n Free\n

\n

Limited Features

\n \n
\n\n
\n

\n Annual PLUS\n

\n

\n $3.75/mo*\n

\n \n

\n Save 53%\n

\n
\n\n
\n \n

\n Quarterly PLUS\n\n

\n

\n $4.66/mo*\n

\n \n

\n Save 42%\n

\n
\n\n
\n

\n Monthly PLUS \n

\n

\n $7.99\n

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

Page limits & secure storage

\n
\n
\n

15 babypages

\n
\n
\n

Unlimited

\n
\n
\n\n {plansInfoDesktop.map((item, index) => {\n return (\n
\n
\n

{item.title}

\n
\n
\n

\n {!!item.perk1 ? (\n \n ) : null}\n

\n
\n
\n

\n {!!item.perk2 ? (\n \n ) : null}\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 {width >= 768 ? (\n
\n

\n \n Terms of Services\n \n  and \n \n Privacy Policy\n \n

\n

\n *Total amounts ($13.98 for quarterly and $45 for annual\n membership) are charged at the end of the 7-day free trial period.\n

\n \n \n
    \n

    Subscription Conditions

    \n
  • \n

    \n Recurring billing. Cancel anytime. Your subscription will\n automatically renew for the same package length and same price\n until you cancel. To cancel, go to your account profile to\n manage your membership.\n

    \n\n

    \n 7-Day Free Trial: Users within the 7-day free trial period are not entitled to the 10% off discount or free shipping benefits.\n

    \n
  • \n
\n
\n ) : null }\n \n )}\n\n {/* Mobile + Free Only */}\n {!isPlus && (\n <>\n
\n
\n\n
    \n

    PLUS Plans:

    \n
  • 10% off all book orders
  • \n
  • Free shipping
  • \n
  • \n Friends & family guest access\n
  • \n
  • Photo only page layout options
  • \n
  • \n Access full library of book covers\n
  • \n
  • Exclusive font options
  • \n
  • High resolution downloads
  • \n
  • \n Multiple child profiles\n
  • \n
  • \n Premium illustrations and design features\n
  • \n
  • Collage options for multiple photos
  • \n
  • Multiple choice question prompts
  • \n
  • Auto-generated story content
  • \n
  • Unlimited secure storage
  • \n
\n
    \n

    All Plans:

    \n
  • Ad-free experience
  • \n
  • \n Create and order books filled with babypages\n
  • \n
  • \n Question prompts and auto-generated content\n
  • \n
  • Complete past milestones at any time
  • \n
  • Import photos from various sources
  • \n
  • Track growth with charts
  • \n
\n { width < 768 ? (\n
\n

\n \n Terms of Services\n \n  and \n \n Privacy Policy\n \n

\n

\n *Total amounts ($13.98 for quarterly and $45 for annual\n membership) are charged at the end of the 7-day free trial period.\n

\n \n \n
\n ) : null }\n\n
    \n

    Subscription Conditions

    \n\n
  • \n

    \n Recurring billing. Cancel anytime. Your subscription will\n automatically renew for the same package length and same price\n until you cancel. To cancel, go to your account profile to\n manage your membership.\n

    \n\n

    \n 7-Day Free Trial: Users within the 7-day free trial period are not entitled to the 10% off discount or free shipping benefits.\n

    \n
  • \n
\n
\n
\n \n )}\n {/* Always Visible */}\n
\n
\n
\n
\n {width > 1199 && (\n
\n \"BP\n
\n )}\n {width > 767 && width < 1200 && (\n
\n \"BP\n
\n )}\n \n
\n\n
\n
\n

\n \n Assemble your babypages into beautiful, high-quality books\n \n

\n

\n You don't need to wait to create a full year of memories with\n BabyPage. Simply customize your pages, select your cover, and\n print! Starting at only $23, build a book for every season to\n capture your child's story.\n

\n\n {width > 767 && (\n history.push(\"/books\")}\n className=\"btn plan-btn\"\n >\n Learn More\n \n \n )}\n
\n \n {width < 768 && (\n <>\n
\n
\n history.push(\"/books\")}\n className=\"btn plan-btn\"\n >\n Learn More\n \n
\n
\n\n
\n \"BP\n
\n \n )}\n
\n
\n
\n \"BP\n
\n
\n
\n
\n

\n BabyPage Gift Card\n

\n

\n A BabyPage gift card is a great way to send a unique and\n meaningful gift to any parent! You can purchase any amount in\n increments of $10, and the gift card will be sent straight to\n their inbox. The recipient can purchase a Plus membership\n and/or print memory books to cherish forever.\n

\n
\n
\n
\n
\n
\n\n
\n
\n \n {width > 767 && (\n
\n \"BP\n
\n )}\n {width < 768 && (\n
\n \"BP\n
\n )}\n
\n \n
\n
\n
\n\n
\n \n Terms of Service\n \n |\n \n Privacy Policy\n \n
\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n stripeProducts: state.stripeProduct,\n store: state.user.store,\n user: state.user,\n products: state.product.products,\n});\n\nexport default connect(mapStateToProps)(Store);\n","import React from 'react';\nimport { Alert } from \"antd\";\nimport logo from '../../../assets/img/logo-babypage.png';\nimport BaseLayout from '../../../components/BaseLayout/BaseLayout';\nimport Store from '../../../components/Store/Store';\nimport '../Auth.scss';\n\ninterface Props {}\n\nconst StepThree: React.FC = () => (\n \n \n \n \"Logo\"\n\n
\n \n
\n \n);\nexport default StepThree;\n","import {\n Button,\n DatePicker,\n TimePicker,\n Icon,\n Input,\n InputNumber,\n Modal,\n notification,\n Select,\n Spin,\n} from \"antd\";\nimport Form, { FormComponentProps } from \"antd/lib/form\";\nimport moment, { Moment } from \"moment\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport { RouteComponentProps, withRouter } from \"react-router\";\nimport { Baby } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { getBabyStorage, saveChild } from \"../../store/sagas/baby\";\nimport { trackAction } from \"../../utils/marketing\";\nimport { User } from \"../../interfaces\";\nimport logoImg from \"../../assets/img/logo_2.png\";\nimport \"./SaveChild.scss\";\nconst { Option } = Select;\n\nfunction hasErrors(fieldsError: Record) {\n return Object.keys(fieldsError).some((field) => fieldsError[field]);\n}\n\ntype Props = FormComponentProps &\n RouteComponentProps & {\n lastBaby: Function; // From Redux\n afterSave: () => void;\n step?: boolean;\n showDelete?: boolean;\n onDelete?: () => void;\n hideCustomDivider?: boolean;\n id?: string;\n shortForm?: boolean;\n extraInfo?: boolean;\n user?: User;\n updateBirthDate: boolean;\n babySelected?: Baby | undefined\n addChild?: boolean;\n };\n\nclass SaveChild extends React.PureComponent {\n state = {\n loading: false,\n height_id: undefined,\n weight_id: undefined,\n isDueDate: false,\n showModalDueDate: false,\n birth_time: undefined,\n has_born: false,\n hasDate: false,\n updateBirthError: false,\n };\n\n componentDidMount() {\n if (!!this.props.babySelected && !!this.props.id) {\n this.searchBabyId(this.props.id.toString());\n } else {\n this.props.form.validateFields();\n }\n }\n\n componentDidUpdate(prevProps: any, prevState: any) {\n if (!!prevProps && !!this.props.id && !!this.props.babySelected && this.props.babySelected.id !== prevProps.babySelected.id ) {\n !this.props.user?.guest_user && this.searchBabyId(this.props.id.toString());\n }\n }\n\n searchBabyId = (id: string) => {\n sagaMiddleware.run(\n getBabyStorage,\n parseInt(id),\n (baby: Baby | undefined) => {\n if (!!baby) {\n const birthHeight =\n !!baby.heights && !!baby.heights.length ? baby.heights[0] : null;\n\n let height = !!birthHeight ? parseFloat(birthHeight.height) : null;\n if (height !== null && isNaN(height)) {\n height = null;\n }\n\n const birthWeight =\n !!baby.weights && !!baby.weights.length ? baby.weights[0] : null;\n\n let weight_lbs = !!birthWeight\n ? ~~(parseInt(birthWeight.oz) / 16)\n : null;\n if (weight_lbs !== null && isNaN(weight_lbs)) {\n weight_lbs = null;\n }\n\n let weight_oz = !!birthWeight ? parseInt(birthWeight.oz) % 16 : null;\n if (weight_oz !== null && isNaN(weight_oz)) {\n weight_oz = null;\n }\n\n this.setState({\n height_id: !!birthHeight ? birthHeight.id : undefined,\n weight_id: !!birthWeight ? birthWeight.id : undefined,\n });\n let date = `${baby.baby_birthdate.slice(0, 10)} ${baby.baby_birth_time}`\n\n this.setState({\n has_born: baby.baby_hasborn\n })\n\n let dateNow = new Date();\n let dateTest = moment(baby.baby_birthdate.slice(0, 10))\n let futureBirth = undefined ;\n\n if (dateTest.toDate() > dateNow && baby.baby_birthdate.slice(0,10) !== baby.baby_duedate) {\n futureBirth = dateTest\n }\n\n\n\n if(!baby.baby_hasborn) {\n this.props.form.setFieldsValue({\n baby_gender: baby.baby_gender,\n baby_first_name: baby.baby_first_name,\n baby_middle_name: baby.baby_middle_name,\n baby_last_name: baby.baby_last_name,\n baby_birthplace: baby.baby_birthplace,\n height,\n weight_lbs, \n weight_oz,\n baby_birthtime: !!baby.baby_birth_time\n ? moment(date)\n : undefined,\n baby_duedate: !!baby.baby_duedate\n ? moment(baby.baby_duedate.slice(0, 10))\n : undefined,\n baby_birthdate: !!futureBirth ? futureBirth : undefined\n });\n this.setState({\n isDueDate : true\n })\n\n } else {\n this.setState({\n isDueDate: false\n })\n this.props.form.setFieldsValue({\n baby_gender: baby.baby_gender,\n baby_first_name: baby.baby_first_name,\n baby_middle_name: baby.baby_middle_name,\n baby_last_name: baby.baby_last_name,\n baby_birthdate: !!baby.baby_birthdate\n ? moment(baby.baby_birthdate.slice(0, 10))\n : moment(),\n baby_birthplace: baby.baby_birthplace,\n height,\n weight_lbs,\n weight_oz,\n baby_birthtime: !!baby.baby_birth_time\n ? moment(date)\n : undefined,\n baby_duedate: !!baby.baby_duedate\n ? moment(baby.baby_duedate.slice(0, 10))\n : undefined,\n });\n }\n } else {\n Modal.error({\n title: \"Error\",\n content: \"Baby not found\",\n });\n this.props.history.push(\"/\");\n }\n }\n );\n };\n\n validateWithOz = (_rule: any, value: any, callback: any) => {\n const { form } = this.props;\n if (!value && !form.getFieldValue(\"weight_lbs\")) {\n callback(\"Weight need to have Lbs or Oz greater than 0\");\n } else {\n if (\n !form.getFieldValue(\"weight_lbs\") &&\n form.getFieldError(\"weight_lbs\")\n ) {\n form.validateFields([\"weight_lbs\"], { force: true });\n }\n callback();\n }\n };\n\n validateWithLbs = (_rule: any, value: any, callback: any) => {\n const { form } = this.props;\n if (!value && !form.getFieldValue(\"weight_oz\")) {\n callback(\"Weight need to have Lbs or Oz greater than 0\");\n } else {\n if (!form.getFieldValue(\"weight_oz\") && form.getFieldError(\"weight_oz\")) {\n form.validateFields([\"weight_oz\"], { force: true });\n }\n callback();\n }\n };\n\n // On Submit (Sign in or Sign up)\n onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n const { isDueDate } = this.state;\n\n if (this.props.step) {\n this.props.form.validateFields((err: any, values: any) => {\n if (err === null) {\n this.setState({ loading: true });\n \n \n let date = values.baby_birthdate.toDate();\n let birthDate = values.baby_birthdate;\n let dateNow = new Date();\n if (date > dateNow) {\n this.setState({isDueDate: true})\n }\n\n if (isDueDate) {\n const { baby_gender, baby_first_name, baby_last_name } = values;\n const babyGender =\n !baby_gender || baby_gender === 2 ? 0 : baby_gender;\n const babyFirstName = baby_first_name || \"Baby\";\n const babyLastName = baby_last_name || this.props.user?.last_name;\n\n values.baby_gender = babyGender;\n values.baby_first_name = babyFirstName;\n values.baby_last_name = babyLastName;\n values.baby_birthdate = null;\n values.baby_duedate = birthDate\n }\n sagaMiddleware.run(\n saveChild,\n {\n ...values,\n birth_time: null,\n id: !!this.props.id ? parseInt(this.props.id) : undefined,\n height_id: this.state.height_id ?? -1,\n weight_id: this.state.weight_id ?? -1,\n },\n (error?: any, description?: string) => {\n this.setState({ loading: false });\n if (!!error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n return;\n } else if (!!description) {\n if(!this.props.id) { \n trackAction(\n \"AddChild\",\n {\n facebook: {\n action: \"User added a child\",\n },\n amplitude: {\n action: \"User added a child\",\n },\n pinterest: {\n action: \"User added a child\",\n },\n google: {\n event: \"add_child\",\n },\n },\n true\n );\n }\n notification.success({\n message: \"Success\",\n description,\n });\n }\n this.props.afterSave();\n }\n );\n }\n });\n\n } else {\n this.props.form.validateFields((err: any, values: any) => {\n if (err === null) {\n this.setState({ loading: true });\n let time = \"\";\n \n if(this.state.birth_time) {\n time = values.baby_birthtime.format(\"hh:mm A\");\n }\n let date = !!values.baby_birthdate ? values.baby_birthdate.toDate() : values.baby_duedate.toDate();\n let dateNow = new Date();\n if (date > dateNow) {\n this.setState({isDueDate: true})\n }\n\n if(this.props.updateBirthDate && date > dateNow) {\n values.baby_duedate = values.baby_birthdate\n }\n\n if (isDueDate) {\n const { baby_gender, baby_first_name, baby_last_name } = values;\n const babyGender =\n !baby_gender || baby_gender === 2 ? 0 : baby_gender;\n const babyFirstName = baby_first_name || \"Baby\";\n const babyLastName = baby_last_name || this.props.user?.last_name;\n\n values.baby_gender = babyGender;\n values.baby_first_name = babyFirstName;\n values.baby_last_name = babyLastName;\n }\n sagaMiddleware.run(\n saveChild,\n {\n ...values,\n has_born:this.props.updateBirthDate || date <= dateNow ? date <= dateNow : this.state.has_born,\n birth_time: time !== \"\" ? time : null,\n id: !!this.props.id ? parseInt(this.props.id) : undefined,\n height_id: this.state.height_id ?? -1,\n weight_id: this.state.weight_id ?? -1,\n },\n (error?: any, description?: string) => {\n this.setState({ loading: false });\n if (!!error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n return;\n } else if (!!description) {\n if(!this.props.id) { \n trackAction(\n \"AddChild\",\n {\n facebook: {\n action: \"User added a child\",\n },\n amplitude: {\n action: \"User added a child\",\n },\n pinterest: {\n action: \"User added a child\",\n },\n google: {\n event: \"add_child\",\n },\n },\n true\n );\n }\n notification.success({\n message: \"Success\",\n description,\n });\n }\n this.props.afterSave();\n }\n );\n } else if(this.props.updateBirthDate) {\n this.setState({updateBirthError: true})\n }\n });\n } \n };\n\n render() {\n const {\n getFieldsError,\n getFieldError,\n getFieldDecorator,\n isFieldTouched,\n } = this.props.form;\n const { isDueDate, showModalDueDate, hasDate } = this.state;\n const genderError =\n isFieldTouched(\"baby_gender\") && getFieldError(\"baby_gender\");\n const firstNameError =\n isFieldTouched(\"baby_first_name\") && getFieldError(\"baby_first_name\");\n const lastNameError =\n isFieldTouched(\"baby_last_name\") && getFieldError(\"baby_last_name\");\n const birthDateError =\n isFieldTouched(\"baby_birthdate\") && getFieldError(\"baby_birthdate\");\n const dueDateError =\n isFieldTouched(\"baby_duedate\") && getFieldError(\"baby_duedate\");\n const babyHeightError = !!this.props.step\n ? isFieldTouched(\"height\") && getFieldError(\"height\")\n : getFieldError(\"height\");\n const babyWeightLbsError = !!this.props.step\n ? isFieldTouched(\"weight_lbs\") && getFieldError(\"weight_lbs\")\n : getFieldError(\"weight_lbs\");\n const babyWeightOzError = !!this.props.step\n ? isFieldTouched(\"weight_oz\") && getFieldError(\"weight_oz\")\n : getFieldError(\"weight_oz\");\n\n return this.state.loading ? (\n
\n }\n />\n
\n ) : (\n <>\n
\n <>\n \n
\n
\n {this.props.step ? (\n \n {getFieldDecorator(\"baby_birthdate\", {\n rules: [\n {\n required: this.props.shortForm ? true : hasDate ? false : true,\n message: \"This field is required.\",\n },\n ],\n })(\n \n current !== null &&\n current > moment().add(1, \"years\").endOf(\"day\")\n }\n style={{marginTop: \"0.30rem\"}}\n onChange={momentDate => {\n if (momentDate) {\n let date = momentDate.toDate();\n let dateNow = new Date();\n if (date > dateNow) {\n this.setState({isDueDate: true, showModalDueDate: true, hasDate: true})\n } else {\n this.setState({isDueDate: false, hasDate: true})\n }\n }\n }}\n \n />\n )}\n \n ) : (\n <>\n First Name\n \n {getFieldDecorator(\"baby_first_name\", {\n rules: [\n {\n required: isDueDate ? false : true,\n message: \"This field is required.\",\n },\n ],\n })(\n \n )}\n \n \n )} \n
\n\n \n Middle Name\n \n {getFieldDecorator(\"baby_middle_name\")(\n \n )}\n \n
\n
\n {this.props.step ? (\n \n {getFieldDecorator(\"baby_gender\", {\n rules: [\n {\n required: isDueDate ? false : true,\n message: \"This field is required.\",\n },\n ],\n })(\n \n )}\n \n ) : (\n <>\n Last Name\n \n {getFieldDecorator(\"baby_last_name\", {\n rules: [\n {\n required: isDueDate ? false : true,\n message: \"This field is required.\",\n },\n ],\n })(\n \n )}\n \n \n )} \n
\n
\n Gender\n \n {getFieldDecorator(\"baby_gender\", {\n rules: [\n {\n required: isDueDate ? false : true,\n message: \"This field is required.\",\n },\n ],\n })(\n \n )}\n \n
\n\n
\n {this.props.step ? (\n \n {getFieldDecorator(\"baby_first_name\", {\n rules: [\n {\n required: isDueDate ? false : true,\n message: \"This field is required.\",\n },\n ],\n })(\n \n )}\n \n ) : this.props.updateBirthDate ? (\n \n {getFieldDecorator(\"baby_birthdate\", {\n rules: [\n {\n required:this.props.updateBirthDate,\n message: \"This field is required.\",\n },\n ],\n })(\n \n current !== null &&\n current > moment().add(1, \"years\").endOf(\"day\")\n }\n style={{marginTop: \"0.30rem\"}}\n onChange={momentDate => {\n if (momentDate) {\n let date = momentDate.toDate();\n let dateNow = new Date();\n if (date > dateNow) {\n this.setState({isDueDate: true, showModalDueDate: true, hasDate: true})\n } else {\n this.setState({isDueDate: false, hasDate: true})\n }\n }\n }}\n \n />\n )}\n \n \n ) : ( <>\n Due Date\n \n {getFieldDecorator(\"baby_duedate\", {\n rules: [\n {\n required: false,\n message: \"This field is required.\"\n },\n ],\n })(\n \n current !== null &&\n current > moment().add(1, \"years\").endOf(\"day\")\n }\n style={{marginTop: \"0.30rem\"}}\n onChange={momentDate => {\n if (momentDate) {\n let date = momentDate.toDate();\n let dateNow = new Date();\n if (date > dateNow) {\n this.setState({isDueDate: true, showModalDueDate: true, hasDate: true})\n } else {\n this.setState({isDueDate: false, hasDate: true})\n }\n }\n }}\n \n />\n )}\n \n )}\n
\n \n {this.props.step || this.props.updateBirthDate ? null : (\n
\n {this.props.shortForm ? null : Birth Date}\n \n {getFieldDecorator(\"baby_birthdate\", {\n rules: [\n {\n required: this.props.shortForm ? true : hasDate ? false : isDueDate ? false : true,\n message: \"This field is required.\",\n },\n ],\n })(\n \n current !== null &&\n current > moment().add(1, \"years\").endOf(\"day\")\n }\n style={{marginTop: \"0.30rem\"}}\n onChange={momentDate => {\n if (momentDate) {\n let date = momentDate.toDate();\n let dateNow = new Date();\n if (date > dateNow) {\n this.setState({isDueDate: true, showModalDueDate: true, hasDate: true})\n } else {\n this.setState({isDueDate: false, hasDate: true})\n }\n }\n }}\n />\n )}\n \n
\n ) }\n\n {this.props.step || this.props.updateBirthDate ? null : (\n
\n Birthplace\n \n {getFieldDecorator(\"baby_birthplace\", {\n rules: [\n {\n required: isDueDate ? false : true,\n message: \"This field is required.\",\n },\n ],\n })(\n \n )}\n \n
\n )} \n\n
\n {this.props.step ? (\n \n {getFieldDecorator(\"baby_last_name\", {\n rules: [\n {\n required: isDueDate ? false : true,\n message: \"This field is required.\",\n },\n ],\n })(\n \n )}\n \n ) : (\n <>\n Birth Time\n \n {getFieldDecorator(\"baby_birthtime\", {\n rules: [\n {\n required: false,\n message: \"This field is required.\",\n },\n ],\n })(\n \n {\n this.setState({birth_time:e})\n }} \n />\n )}\n \n \n )}\n
\n
\n \n Birth Height (in)\n \n \n {getFieldDecorator(\"height\", {\n rules: [{ type: \"number\", min: 0 }],\n })(\n \n )}\n \n
\n
\n \n Birth Weight (lbs)\n \n \n {getFieldDecorator(\"weight_lbs\", {\n rules: [{ type: \"number\", min: 0.0 }],\n })()}\n \n
\n
\n \n Birth Weight (oz)\n \n \n {getFieldDecorator(\"weight_oz\", {\n rules: [{ type: \"number\", min: 0.0 }],\n })()}\n \n
\n \n \n \n \n
\n
\n \n {getFieldDecorator(\"baby_middle_name\")(\n \n )}\n \n
\n
\n \n {getFieldDecorator(\"baby_birthplace\")(\n \n )}\n \n
\n
\n \n {getFieldDecorator(\"height\", {\n rules: [{ type: \"number\", min: 0 }],\n })(\n \n )}\n \n
\n
\n \n {getFieldDecorator(\"weight_lbs\", {\n rules: [{ type: \"number\", min: 0.0 }],\n })(\n \n )}\n \n
\n
\n \n {getFieldDecorator(\"weight_oz\", {\n rules: [{ type: \"number\", min: 0.0 }],\n })(\n \n )}\n \n
\n
\n \n {/* )} */}\n\n
\n
\n \n \n {\n this.props.history.push(\"/\");\n }}\n >\n Cancel\n \n \n
\n \n \n \n {this.props.extraInfo\n ? \"Update Child\"\n : this.props.step\n ? \"Next\"\n : \"Save Changes\"}\n \n \n \n
\n \n {this.props.updateBirthDate || this.props.addChild || this.props.extraInfo || this.props.step ? null : (\n
\n

Delete Child Profile

\n
\n )}\n \n \n \n\n {\n this.setState({ showModalDueDate: false });\n }}\n >\n
\n
\n \"Plus\n
\n\n

\n {`If you don't have your baby’s name or gender, you can leave those fields blank and update them later. When you are ready to update, simply go to My Account > Manage Children.`}\n

\n
\n \n \n );\n }\n}\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user,\n babySelected: state.baby.babySelected,\n});\n\nexport default Form.create()(withRouter(connect(mapStateToProps)(SaveChild)));\n","// @ts-nocheck\nimport { Button, Carousel, Modal, Icon } from \"antd\";\nimport { startCase } from \"lodash\";\nimport queryString from \"query-string\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport { useLastLocation } from \"react-router-last-location\";\nimport { Dispatch } from \"redux\";\nimport logo2 from \"../../../assets/img/logo_2.png\";\nimport BaseLayout from \"../../../components/BaseLayout/BaseLayout\";\nimport GuestUserValidateInvitationCodeForm from \"../../../components/GuestUserValidateInvitationCodeForm/GuestUserValidateInvitationCodeForm\";\nimport SaveChild from \"../../../components/SaveChild/SaveChild\";\nimport { User } from \"../../../interfaces\";\nimport { sagaMiddleware } from \"../../../store\";\nimport { BaseAction } from \"../../../store/actionTypes\";\nimport { logoutUser } from \"../../../store/ducks/user\";\nimport { getAuthenticatedUser, switchAccount } from \"../../../store/sagas/user\";\nimport \"../Auth.scss\";\nimport logo from \"../../../assets/img/logo-babypage.png\";\nimport storkIllustration from \"../../../assets/img/illustrations/stork-illustration.png\";\nimport tutorialImg1 from \"../../../assets/img/tutorial/Step1.png\";\nimport tutorialImg2 from \"../../../assets/img/tutorial/Step2.png\";\nimport tutorialImg3 from \"../../../assets/img/tutorial/Step3.png\";\nimport tutorialImg4 from \"../../../assets/img/tutorial/Step4.png\";\nimport tutorialImg5 from \"../../../assets/img/tutorial/Step5.png\";\nimport tutorialImg6 from \"../../../assets/img/tutorial/Step6.png\";\nimport \"./StepTwo.scss\"\nimport { useWindowSize } from \"../../../hooks/WindowsSize\";\n\ninterface Props {\n logout: () => void;\n user: User;\n}\n\nconst StepTwo: React.FC = ({ logout, user }) => {\n const lastLocation = useLastLocation();\n const [showModal, setShowModal] = useState(true);\n const history = useHistory();\n const location = useLocation();\n const [isVisibleInvitationCodeModal, setIsVisibleInvitationCodeModal] =\n useState(false);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [isLoadingInvitationCodeModal, setIsLoadingInvitationCodeModal] =\n useState(false);\n const [ width ] = useWindowSize();\n\n const goBackAsGuest = () => {\n setBackBtnDisabled(true);\n\n sagaMiddleware.run(\n switchAccount,\n {\n mainUserId: user.main_user.id,\n hostUserId: user.main_user.host_users[0].host_user_id,\n },\n (error: string | null) => {\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n\n return;\n }\n\n Modal.info({\n title: \"Hi there!\",\n content: `You're seeing the ${startCase(\n user.main_user.host_users[0].host_user.first_name\n )} ${startCase(\n user.main_user.host_users[0].host_user.last_name\n )}'s account as a guest user. Go to menu and select switch account to see your own content`,\n });\n\n if (!user.guest_user) {\n sagaMiddleware.run(rootSaga, true);\n }\n\n history.push(\"/\");\n\n if (!user.guest_user) {\n sagaMiddleware.run(fetchDashboard, (error: string | null) => {\n if (error !== null) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n }\n });\n }\n }\n );\n };\n\n const switchAccountFromModal = useCallback((hostUserId: number) => {\n // setLoading(true);\n\n sagaMiddleware.run(\n switchAccount,\n {\n mainUserId: user.id,\n hostUserId: hostUserId,\n },\n (error: string | null) => {\n // setLoading(false);\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n\n return;\n }\n\n history.push(\"/\");\n }\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const saveChild = (\n {\n sagaMiddleware.run(getAuthenticatedUser, () => {\n const query = queryString.parse(location.search);\n history.push(\n user.source === \"baby-list\" ? \"/dashboard\" :\n !!query.redirect\n ? query.redirect.toString()\n : \"/step-3\" + location.search\n );\n });\n }}\n hideCustomDivider\n step\n shortForm={true}\n />\n );\n\n const tutorialItems = [\n {\n text: \"Enter your child’s information\",\n img: tutorialImg1,\n },\n {\n text: \"Select photos from your phone or other services\",\n img: tutorialImg2,\n },\n {\n text: \"Answer a few questions to create your content\",\n img: tutorialImg3,\n },\n {\n text: \"Customize your content with illustrations\",\n img: tutorialImg4,\n },\n {\n text: \"Add to & keep childhood memories in digital form\",\n img: tutorialImg5,\n },\n {\n text: \"Select your cover & order books to cherish\",\n img: tutorialImg6,\n },\n ];\n\n return (\n \n
\n
\n \"Logo\"\n
\n\n \n {(!!user.facebook_id || !!user.apple_id) && (\n <>\n setIsVisibleInvitationCodeModal(true)}\n size=\"small\"\n className=\"ant-btn-round ant-btn-background-ghost p-3 mb-3 mb-md-0 mr-5 mr-md-2 ml-0\"\n >\n I have an invitation code\n \n \n )}\n\n
\n \n\n
\n \n
\n
\n \n
\n\n
\n

Add Your Child

\n\n

\n This is just to get us started. You can add more information\n later and, if you select a Plus subscription, you can add\n multilple children, too!\n

\n {saveChild}\n
\n
\n
\n \n setIsVisibleInvitationCodeModal(false)}\n closable={true}\n footer={null}\n >\n {\n setIsVisibleInvitationCodeModal(false);\n switchAccountFromModal(hostUserId);\n }}\n />\n \n\n setShowModal(false)}\n >\n
\n
\n
\n
} \n prevArrow={
}\n >\n {tutorialItems.map((item, index) => (\n
\n { width >= 1024 ? \n <>\n
\n

{item.text}

\n
\n
\n {`Tutorial\n
\n :\n <>\n
\n {`Tutorial\n
\n
\n

{item.text}

\n
\n \n }\n \n
\n ))}\n \n
\n
\n \n \n setIsVisibleInvitationCodeModal(false)}\n closable={true}\n footer={null}\n >\n {\n setIsVisibleInvitationCodeModal(false);\n switchAccountFromModal(hostUserId);\n }}\n />\n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n logout: () => dispatch(logoutUser()),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(StepTwo);\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport \"./FloatShareButton.scss\";\n\ninterface Props {\n type?:\n | \"link\"\n | \"default\"\n | \"ghost\"\n | \"primary\"\n | \"dashed\"\n | \"danger\"\n | undefined;\n shape?: \"circle\" | \"round\" | \"circle-outline\" | undefined;\n icon: string;\n position: \"top-right\" | \"top-right-banner\" | \"top-left\" | \"bottom-right\" | \"bottom-left\";\n onClick?:\n | ((event: React.MouseEvent) => void)\n | undefined;\n unFixed?: boolean;\n disabled?: boolean;\n}\n\nconst FloatShareButton: React.FC = ({\n type,\n shape,\n icon,\n position,\n onClick,\n unFixed,\n disabled\n}) => (\n \n);\n\nexport default FloatShareButton;\n","import { Button, Modal } from 'antd';\nimport React from 'react';\nimport { useHistory } from 'react-router-dom';\n\n\ninterface Props {\n customText?: string;\n customTextBold?: boolean;\n visible: boolean;\n onClose: (e: React.MouseEvent) => void;\n}\n\nconst ModalSharePlus: React.FC = ({\n customText,\n customTextBold,\n visible,\n onClose\n}) => {\n const history = useHistory();\n\n return (\n \n
\n

\n This is a PLUS feature. Upgrade to a PLUS Subscription to save with these exclusive features.\n

\n history.push('/cart/subscription/yearly')}\n >\n Upgrade to PLUS\n \n
\n \n );\n};\n\nexport default ModalSharePlus;\n","import { Button, Modal, notification } from \"antd\";\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport \"./ShareModal.scss\";\nimport { shareFacebook } from \"../../utils/share\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\n\ninterface Props {\n image: string;\n visible: boolean;\n onClose: (e: React.MouseEvent) => void;\n setShowSharePlus?: React.Dispatch>;\n isPlus?: boolean;\n}\n\nconst ShareModal: React.FC = ({ image, visible, onClose, setShowSharePlus, isPlus }) => {\n const [modal, setModal] = useState(false);\n\n useEffect(() => {\n setModal(visible);\n }, [visible]);\n\n const checkFreeUser = useCallback(() => {\n if(setShowSharePlus && !isPlus) {\n setShowSharePlus(true);\n }\n }, [setShowSharePlus, isPlus])\n\n return (\n \n
\n

\n Share this in your social media networks\n

\n
\n
\n {\n shareFacebook(image, setModal);\n }}\n >\n Facebook\n \n
\n
\n {\n if (isPlus) {\n notification.success({\n message: \"Success\",\n description: \"The BabyPage link was copied successfully!\"\n })\n }\n }}\n >\n \n Copy Link\n \n \n
\n
\n
\n \n );\n};\n\nexport default ShareModal;\n","import { notification } from \"antd\";\ndeclare const FB: any;\n\nexport const shareFacebook = (\n image: string,\n setModal: React.Dispatch>\n) => {\n FB.ui(\n {\n method: \"share\",\n href: image,\n display: \"popup\"\n },\n function(response: any) {\n if (response && !response.error_message) {\n notification.success({\n message: \"Success\",\n description: \"Posting completed succesfully!\"\n });\n setModal(false);\n }\n }\n );\n};\n","// Base Aspect of iPhone 8\nconst ASPECT_BASE = 667 / 375;\n\n/**\n * Get Browser Height (check the highest width of browser)\n */\nexport const getBrowserHeight = (): number =>\n Math.max(\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.documentElement.clientHeight,\n window.outerHeight\n );\n\n/**\n * Get Browser Width (check the highest width of browser)\n */\nexport const getBrowserWidth = (): number =>\n Math.max(\n document.documentElement.scrollWidth,\n document.body.offsetWidth,\n document.documentElement.offsetWidth,\n document.documentElement.clientWidth,\n window.outerWidth\n );\n\nexport const getBrowserAspect = () => {\n const [width, height] = [getBrowserWidth(), getBrowserHeight()];\n return width > height ? width / height : height / width;\n};\n\n/**\n * Return a dynamic size based on browser width\n * (Base size is used in iPhone 6/7/8 width, 375px)\n */\nexport const dynamicSize = (size: number): number => {\n const width = getBrowserWidth();\n if (width < 768) {\n return width * (size / 375);\n } else {\n const aspectBrowser = getBrowserAspect();\n const proportion = aspectBrowser / ASPECT_BASE;\n return proportion * size;\n }\n};\n\n/**\n * Get Proportional Size for Fonts/Margins/Paddings, ...\n * @param {number} baseSize // Base Size (Using Dynamic Size)\n * @param {number} proportion // Proportion Size\n */\nexport const getProportionalSize = (\n baseSize: number,\n proportion: number,\n contentScale?: number\n) => {\n if (!contentScale) contentScale = getContentScale();\n return (baseSize * proportion) / contentScale;\n};\n\nconst getContentScale = (): number => {\n const width = getBrowserWidth();\n\n if (width >= 1980) {\n return 450;\n } else if (width >= 1440) {\n return 350;\n } else if (width >= 1024) {\n return 320;\n } else {\n return 280;\n }\n};\n\nexport const isGreaterAllowedThanMaxHeight = async (\n file: File | Blob,\n maxHeightAllowed: number = 3300\n) => {\n const { height: currentHeightOfFile } = await createImageBitmap(file);\n return currentHeightOfFile > maxHeightAllowed;\n};\n","import React from \"react\";\nimport \"./PlusAlert.scss\";\n\nimport { getBrowserWidth } from \"../../../utils/size\";\n\ninterface Props {\n [key: string]: any;\n}\n\nconst PlusAlert: React.FC = ({ ...props }) => {\n const width = getBrowserWidth();\n \n let style = {};\n\n if(props.preview) {\n style = {\n fontSize: \"10px\",\n marginTop: -6,\n marginLeft: 70,\n }\n } else if (props.aftersave) {\n if(width >= 1024) {\n style = {\n marginTop: -15,\n marginLeft: 320,\n }\n } else if (width >= 768) {\n style = {\n marginTop: -15,\n marginLeft: 340,\n }\n } else if (width <= 414) {\n style = {\n marginTop: -15,\n marginLeft: 250,\n }\n }\n \n }\n \n \n return (\n
\n PLUS\n
\n);\n}\nexport default PlusAlert;\n","/**\n * Normalizes the weight and height answers in the provided answers array.\n *\n * @param {any[]} answers - The array of answers to be normalized.\n * @returns {any[]} - The normalized array of answers, with the height and weight answers separated.\n */\nexport function normalizeWeightAnswer(answers: any[]): any[] {\n if (answers === null) {\n return [];\n }\n\n const weightHeightAnswers = answers.filter(\n (answer) => answer.type === \"height_weight\",\n );\n if (weightHeightAnswers.length === 0) {\n return answers;\n }\n\n const digits = weightHeightAnswers.flatMap((answer: any) =>\n extractDigitsFromHeightWeightAnswer(answer),\n );\n const position = weightHeightAnswers[0].position;\n addHeightAnswer(answers, digits[0], position);\n addWeightAnswer(answers, digits[1], digits[2], position);\n\n return answers.filter((answer) => answer.type !== \"height_weight\");\n}\n\n/**\n * Adds a height answer to the provided answers array.\n *\n * @param {any[]} answers - The array of answers to which the height answer will be added.\n * @param {number} height - The height value to be added.\n * @param {number} position - The position of the new answer.\n * @returns {number} - The new length of the answers array.\n */\nfunction addHeightAnswer(\n answers: any[],\n height: number,\n position: number,\n): number {\n const newAnswer = {\n answerString: [String(height)],\n answers: \"unused property\", //this might not be in use\n question_id: null,\n type: \"height\",\n position: position,\n };\n return answers.push(newAnswer);\n}\n\n/**\n * Adds a weight answer to the provided answers array.\n *\n * @param {any[]} answers - The array of answers to which the weight answer will be added.\n * @param {number} weight - The weight value to be added.\n * @param {number} oz - The ounces value to be added.\n * @param {number} position - The position of the new answer.\n * @returns {number} - The new length of the answers array.\n */\nfunction addWeightAnswer(\n answers: any[],\n weight: number,\n oz: number,\n position: number,\n): number {\n const totalweight = weight * 16 + oz;\n const newAnswer = {\n answerString: [String(totalweight)],\n answers: \"unused property\", //this might not be in use\n question_id: null,\n type: \"weight\",\n position: position,\n };\n return answers.push(newAnswer);\n}\n\n/**\n * Extracts the digits from a height and weight answer.\n *\n * @param {any} answer - The answer object from which to extract the digits.\n * @returns {number[]} - An array of digits extracted from the answer.\n */\nfunction extractDigitsFromHeightWeightAnswer(answer: any): number[] {\n if (answer.type === \"height_weight\") {\n const { answers } = answer;\n const matches = answers.match(/\\d+(\\.\\d+)?/g);\n return matches ? matches.map(Number) : [];\n }\n return [];\n}\n","import cloneDeep from \"lodash/cloneDeep\";\nimport { call, put, select } from \"redux-saga/effects\";\nimport { AppState, sagaMiddleware } from \"..\";\nimport api from \"../../api\";\nimport { parseRequestError } from \"../../utils/error\";\nimport { trackAction } from \"../../utils/marketing\";\nimport { BabyState, getBabies, selectBaby } from \"../ducks/baby\";\nimport { fetchBabies } from \"./baby\";\nimport { normalizeWeightAnswer } from \"../../utils/answerAdapter\";\n\n// Add or Update a BabyPage\nexport function* saveBabyPageSaga(\n babyPage: any,\n callback: (error?: string, id?: number) => void,\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token,\n );\n\n if (!accessToken) return;\n\n const method = !!babyPage.id ? \"put\" : \"post\";\n const url = !!babyPage.id\n ? `update-babypage/${babyPage.id}`\n : \"save-babypage\";\n babyPage.id = undefined; // Remove ID from post information\n\n // NOTE: This is a temporary fix to normalize the weight answers\n // The logic with in the app should be refactor\n const updatedAnswers = normalizeWeightAnswer(babyPage.answers);\n babyPage.answers = updatedAnswers;\n try {\n const response = yield call(api[method], `api/${url}`, babyPage, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n if (method === \"post\") {\n trackAction(\"create_babypage\", {\n google: {\n event: \"baby_page_created\",\n },\n });\n }\n sagaMiddleware.run(fetchBabies);\n callback(undefined, response.data.data.babypage_id);\n } else {\n throw new Error(\"Error saving BabyPage\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* fetchBabyPageById(\n id: number,\n callback: (error: string | null, babyPage?: any) => void,\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token,\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.get, `api/get-babypage/${id}`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n callback(null, response.data.data);\n } else {\n throw new Error(\"The selected id is invalid.\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* duplicateBabyPage(\n id: number,\n callback: (error: string | null) => void,\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token,\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.get, `api/duplicate-babypage/${id}`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const babyState: BabyState = yield select(\n (state: AppState) => state.baby,\n );\n\n let index = -1;\n const babyIndex = babyState.babies.findIndex((e) => {\n index = e.babyPages.findIndex((babyPage) => babyPage.id === id);\n return index !== -1;\n });\n\n if (babyIndex >= 0 && index >= 0) {\n const newBabyPage = cloneDeep(\n babyState.babies[babyIndex].babyPages[index],\n );\n newBabyPage.id = response.data.data.babypage_id;\n\n babyState.babies[babyIndex].babyPages = [\n newBabyPage,\n ...babyState.babies[babyIndex].babyPages,\n ];\n\n yield put(getBabies(babyState.babies));\n\n if (babyState.babySelectedIndex === babyIndex) {\n yield put(selectBaby(babyIndex));\n }\n }\n\n callback(null);\n } else {\n throw new Error(\"The selected id is invalid.\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\nexport function* deleteBabyPage(\n id: number,\n callback: (error: string | null) => void,\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token,\n );\n\n if (!accessToken) return;\n\n try {\n const response = yield call(api.delete, `api/delete-babypage/${id}`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200) {\n const babyState: BabyState = yield select(\n (state: AppState) => state.baby,\n );\n\n let index = -1;\n const babyIndex = babyState.babies.findIndex((e) => {\n index = e.babyPages.findIndex((babyPage) => babyPage.id === id);\n return index !== -1;\n });\n\n if (babyIndex >= 0 && index >= 0) {\n const updatedBabypages = babyState.babies[babyIndex].babyPages.filter(\n (babypage) => {\n return babypage.id !== id;\n },\n );\n\n babyState.babies[babyIndex].babyPages = updatedBabypages;\n\n yield put(getBabies(babyState.babies));\n\n if (babyState.babySelectedIndex === babyIndex) {\n yield put(selectBaby(babyIndex));\n }\n }\n\n callback(null);\n } else {\n throw new Error(\"The selected id is invalid.\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { Layout } from '../interfaces';\n\nexport const possibleLayouts: {\n layout: Layout;\n info: number[][];\n isFree: boolean;\n}[] = [\n {\n layout: 'layout1A',\n info: [[1, 1]],\n isFree: true,\n },\n {\n layout: 'layout2A',\n info: [[2, 1], [2, 1]],\n isFree: true,\n },\n {\n layout: 'layout2B',\n info: [[1, 2], [1, 2]],\n isFree: true,\n },\n {\n layout: 'layout3A',\n info: [[1, 1], [1, 2], [1, 1]],\n isFree: false,\n },\n {\n layout: 'layout3B',\n info: [[1, 2], [1, 1], [1, 1]],\n isFree: false,\n },\n {\n layout: 'layout3C',\n info: [[1, 1], [1, 1], [2, 1]],\n isFree: false,\n },\n {\n layout: 'layout3D',\n info: [[2, 1], [1, 1], [1, 1]],\n isFree: false,\n },\n {\n layout: 'layout4A',\n info: [[1, 1], [1, 1], [1, 1], [1, 1]],\n isFree: false,\n },\n {\n layout: 'layout4B',\n info: [[2, 1], [1, 1.5], [1, 1.5], [1, 1.5]],\n isFree: false,\n },\n {\n layout: 'layout4C',\n info: [[1, 1.5], [1, 1.5], [1, 1.5], [2, 1]],\n isFree: false,\n },\n {\n layout: 'layout4D',\n info: [[1, 2], [1.5, 1], [1.5, 1], [1.5, 1]],\n isFree: false,\n },\n {\n layout: 'layout4E',\n info: [[1.5, 1], [1.5, 1], [1.5, 1], [1, 2]],\n isFree: false,\n },\n {\n layout: 'layout6A',\n info: [[1, 1.5], [1, 1.5], [1, 1.5], [1, 1.5], [1, 1.5], [1, 1.5]],\n isFree: false,\n },\n {\n layout: 'layout6B',\n info: [[1.5, 1], [1.5, 1], [1.5, 1], [1.5, 1], [1.5, 1], [1.5, 1]],\n isFree: false,\n }\n];\n\n/**\n * Return an array for aspects for each image in layout\n * Example:\n * case layout3A\n * 1 image: {width: 1, height: 1}\n * 2 image: {width: 1, height: 2}\n * 3 image: {width: 1, height: 1}\n * Based on /helpers/layouts.jpg\n */\nexport const getLayoutInfos = (layout: Layout): number[][] => {\n const possibleLayout = possibleLayouts.filter(item => item.layout === layout);\n if (!possibleLayout.length) return possibleLayouts[0].info;\n return possibleLayout[0].info;\n};\n\n/**\n * Return the aspect for a photo (index) of layout\n */\nexport const getAspectFromLayout = (\n layout: Layout,\n index: number = 0\n): number => {\n const layoutInfo = getLayoutInfos(layout);\n return layoutInfo[index][0] / layoutInfo[index][1];\n};\n","import React from \"react\";\n\nfunction Warning() {\n return (\n \n \n \n );\n}\n\nexport default Warning;","/**\n * Some big functions of Save Component to Reorganize\n */\nimport { Modal } from \"antd\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport React from \"react\";\nimport Cropper from \"react-cropper\";\nimport { BASE_URL } from \"../../../env\";\nimport {\n Layout,\n QuestionAnswer,\n SaveBabyPage,\n SaveBabyPagePhoto,\n SimplifiedAnswer,\n} from \"../../../interfaces\";\nimport {\n getBase64,\n getFileFromUrl,\n getImage,\n isValidImage,\n} from \"../../../utils/image\";\nimport { getAspectFromLayout } from \"../../../utils/layouts\";\nimport axios from \"axios\";\nimport { isGreaterAllowedThanMaxHeight } from \"../../../utils/size\";\nimport { isMobileSafari } from \"react-device-detect\";\nimport Warning from \"../../../components/Icons/Warning\";\n\nexport interface PhotoSelected {\n index: number | null;\n edit: boolean;\n base64: string;\n base64_cropped?: string;\n croppedData?: Cropper.Data;\n imageData?: Cropper.ImageData;\n aspect: number;\n side?: string;\n}\n\nexport const initialPhotoState: PhotoSelected = {\n index: null,\n edit: false,\n base64: \"\",\n aspect: 1,\n};\n\nexport const getPlaceholderB64 = async () => {\n const placeHolderFile = (\n await axios.get(\n `${\"\"}${\"https://babypage-staging.s3.amazonaws.com/public/missingImagePlaceholder/add_babypage_placeholder.png\"}`,\n { responseType: \"blob\" },\n )\n ).data;\n const placeHolderB64 = await getBase64(placeHolderFile);\n\n return placeHolderB64;\n};\n\nconst getFileDimensions = async (file: Blob) => {\n let reader = new FileReader();\n\n //Read the contents of Image File.\n reader.readAsDataURL(file);\n let width = null;\n let height = null;\n const result: number = await new Promise((resolve) => {\n reader.onload = function (e) {\n //Initiate the JavaScript Image object.\n let image = new Image();\n\n //Set the Base64 string return from FileReader as source.\n if (e.target?.result) {\n image.src = e.target.result as string;\n }\n\n //Validate the File Height and Width.\n image.onload = function () {\n height = image.height;\n width = image.width;\n resolve(height * width);\n };\n };\n });\n return result;\n};\n\nconst getResolutionOfSquareLayout = (layout: Layout, index: number) => {\n let minResolution: number;\n const acceptedResolutions = {\n full: 5760000,\n half: 2880000,\n quarter: 1440000,\n sixth: 960000,\n };\n\n switch (layout) {\n case \"layout1A\":\n minResolution = acceptedResolutions.full;\n break;\n case \"layout2A\":\n case \"layout2B\":\n minResolution = acceptedResolutions.half;\n break;\n case \"layout3A\":\n minResolution =\n index === 1 ? acceptedResolutions.half : acceptedResolutions.quarter;\n break;\n case \"layout3B\":\n case \"layout3D\":\n minResolution =\n index === 0 ? acceptedResolutions.half : acceptedResolutions.quarter;\n break;\n case \"layout3C\":\n minResolution =\n index === 2 ? acceptedResolutions.half : acceptedResolutions.quarter;\n break;\n case \"layout4A\":\n minResolution = acceptedResolutions.quarter;\n break;\n case \"layout4B\":\n case \"layout4D\":\n minResolution =\n index === 0 ? acceptedResolutions.half : acceptedResolutions.sixth;\n break;\n case \"layout4C\":\n case \"layout4E\":\n minResolution =\n index === 3 ? acceptedResolutions.half : acceptedResolutions.sixth;\n break;\n case \"layout6A\":\n case \"layout6B\":\n minResolution = acceptedResolutions.sixth;\n break;\n default:\n minResolution = acceptedResolutions.full;\n }\n return minResolution;\n};\n/**\n * On Click on a Gallery Photo\n */\nexport const photoClick = async (\n index: number,\n photo: SaveBabyPagePhoto,\n inputRef: React.RefObject,\n layout: Layout,\n setPhotoSelected: React.Dispatch>,\n setModalOpen: React.Dispatch>,\n step?: number,\n side?: string,\n) => {\n const placeHolderFile = (\n await axios.get(\n `${\"\"}${\"https://babypage-staging.s3.amazonaws.com/public/missingImagePlaceholder/add_babypage_placeholder.png\"}`,\n { responseType: \"blob\" },\n )\n ).data;\n const placeHolderB64 = await getBase64(placeHolderFile);\n\n if (placeHolderB64 === photo.base64) {\n setModalOpen(true);\n }\n\n if (\n // Check if is adding photo\n photo.base64_cropped === \"\"\n ) {\n if (!!inputRef && !!inputRef.current) {\n setPhotoSelected((state: PhotoSelected) => ({ ...state, index, side }));\n if (step === 0) {\n photo.side = \"left\";\n } else if (step === 1) {\n photo.side = \"right\";\n }\n setModalOpen(true);\n // inputRef.current.click(); // Toggle input click to select photo\n }\n } else if (photo.base64 !== undefined) {\n // If is editing photo\n setPhotoSelected((state: PhotoSelected) => ({\n ...state,\n aspect: getAspectFromLayout(layout, index),\n croppedData: !!photo.croppedData ? { ...photo.croppedData } : undefined,\n imageData: !!photo.imageData ? { ...photo.imageData } : undefined,\n index,\n edit: placeHolderB64 !== photo.base64,\n base64: photo.base64!,\n side: photo.side,\n }));\n }\n};\n\nexport const profilePhotoClick = async (\n photo: SaveBabyPagePhoto,\n inputRef: React.RefObject,\n setPhotoSelected: React.Dispatch>,\n) => {\n const placeHolderFile = (\n await axios.get(\n `${\"\"}${\"https://babypage-staging.s3.amazonaws.com/public/missingImagePlaceholder/add_babypage_placeholder.png\"}`,\n { responseType: \"blob\" },\n )\n ).data;\n const placeHolderB64 = await getBase64(placeHolderFile);\n\n if (\n // Check if is adding photo\n photo.base64_cropped === \"\"\n ) {\n if (!!inputRef && !!inputRef.current) {\n setPhotoSelected((state: PhotoSelected) => ({ ...state }));\n }\n } else if (photo.base64 !== undefined) {\n // If is editing photo\n setPhotoSelected((state: PhotoSelected) => ({\n ...state,\n aspect: 1,\n croppedData: !!photo.croppedData ? { ...photo.croppedData } : undefined,\n imageData: !!photo.imageData ? { ...photo.imageData } : undefined,\n edit: placeHolderB64 !== photo.base64,\n base64: photo.base64!,\n side: photo.side,\n }));\n }\n};\n\n/**\n * On select a new Photo file (Input Change)\n */\nexport const selectImage = async (\n e: React.ChangeEvent,\n photoSelected: PhotoSelected,\n photos: SaveBabyPagePhoto[],\n setPhotos: any,\n layout: Layout,\n setPhotoSelected: React.Dispatch,\n inputRef: React.RefObject,\n setLoading: React.Dispatch,\n setModalOpen?: React.Dispatch,\n) => {\n const index = photoSelected.index;\n\n const side = photoSelected.side;\n if (e.target.files && e.target.files.length && index !== null && index >= 0) {\n const newPhotos = [...photos];\n const file = e.target.files[0];\n const minResolution = getResolutionOfSquareLayout(\n layout,\n photoSelected.index!,\n );\n const imageResolution = await getFileDimensions(file);\n let fileResized: File | Blob | null = null;\n const hasRestrictionOfHeight = await isGreaterAllowedThanMaxHeight(file);\n if (hasRestrictionOfHeight && isMobileSafari) {\n Modal.error({\n title: \"Error\",\n content: \"Please choose an image less than 3300 pixels tall.\",\n });\n return;\n }\n\n // Check image type\n if (!isValidImage(file.type)) {\n Modal.error({\n title: \"Error\",\n content: \"Please select a valid image\",\n });\n return setPhotoSelected(initialPhotoState);\n } else if (file.type.includes(\"webp\")) {\n Modal.error({\n title: \"Error\",\n content: \"Please select a valid image\",\n });\n return setPhotoSelected(initialPhotoState);\n } else if (imageResolution < minResolution) {\n Modal.confirm({\n title: (\n <>\n

Low Resolution Image

\n \n ),\n content: (\n <>\n

\n If you proceed with this photo, you acknowledge the potential low\n print quality\n

\n \n {\" \"}\n Photo Resolution Tips\n \n \n ),\n icon: ,\n className: \"special-popup text-center\",\n // ok and cancel buttons are in reverse for styling (OK is cancel, cancel is OK)\n okText: \"CHOOSE NEW PHOTO\",\n cancelText: \"USE LOW-RES IMAGE\",\n onOk: () => {\n if (!!setModalOpen) {\n setModalOpen(true);\n return setPhotoSelected({\n ...initialPhotoState,\n index: photoSelected.index,\n side: !!photoSelected.side ? photoSelected.side : undefined,\n });\n }\n },\n });\n }\n\n setLoading(true);\n\n // Generate new Filename\n const fileName =\n Date.now().toString() + file.name.substring(file.name.lastIndexOf(\".\"));\n\n // Check if file is big\n const img = await getImage(file);\n\n newPhotos[index].missing = false;\n // Create new File\n newPhotos[index].file = !!fileResized\n ? fileResized\n : new File([file], fileName, {\n type: file.type,\n });\n\n // Generate base64\n const base64 = await getBase64(!!fileResized ? fileResized : file);\n\n setLoading(false);\n if (base64 !== null) {\n newPhotos[index].base64 = base64.toString();\n newPhotos[index].isLocal = true;\n\n // SetPhotos and Unselect Photo\n setPhotos(newPhotos, layout);\n\n // Reset input value\n if (!!inputRef && !!inputRef.current) {\n inputRef.current.value = \"\";\n }\n\n setPhotoSelected((_: PhotoSelected) => ({\n ...initialPhotoState,\n aspect: getAspectFromLayout(layout, index),\n index,\n edit: true,\n base64: base64.toString(),\n side,\n }));\n return;\n }\n }\n setPhotoSelected(initialPhotoState);\n};\n\n/**\n * On select a gallery photo (Input Change)\n */\nexport const selectImageURL = async (\n imgUrl: string,\n photoSelected: PhotoSelected,\n photos: SaveBabyPagePhoto[],\n setPhotos: any,\n layout: Layout,\n setPhotoSelected: React.Dispatch,\n inputRef: React.RefObject,\n setLoading: React.Dispatch,\n side?: string | undefined,\n setModalOpen?: React.Dispatch,\n) => {\n const index = photoSelected.index!;\n\n const newPhotos = [...photos];\n const file = await getFileFromUrl(\n imgUrl,\n imgUrl.indexOf(\"s3.amazonaws.com\") !== -1\n ? `${BASE_URL}api/avoid-cors?url=`\n : undefined,\n );\n const minResolution = getResolutionOfSquareLayout(\n layout,\n photoSelected.index!,\n );\n const imageResolution = await getFileDimensions(file!);\n\n let fileResized: File | Blob | null = null;\n\n if (file === null) {\n return setPhotoSelected({\n ...initialPhotoState,\n });\n }\n\n const hasRestrictionOfHeight = await isGreaterAllowedThanMaxHeight(file);\n if (hasRestrictionOfHeight && isMobileSafari) {\n Modal.error({\n title: \"Error\",\n content: \"Please choose an image less than 3300 pixels tall.\",\n });\n return;\n }\n\n // Check image type\n if (!isValidImage(file.type)) {\n Modal.error({\n title: \"Error\",\n content: \"Please select a valid image\",\n });\n return setPhotoSelected(initialPhotoState);\n } else if (imageResolution < minResolution) {\n Modal.confirm({\n title: (\n <>\n

Low Resolution Image

\n \n ),\n content: (\n <>\n

\n If you proceed with this photo, you acknowledge the potential low\n print quality\n

\n \n {\" \"}\n Photo Resolution Tips\n \n \n ),\n icon: ,\n className: \"special-popup text-center\",\n // ok and cancel buttons are in reverse for styling (OK is cancel, cancel is OK)\n okText: \"CHOOSE NEW PHOTO\",\n cancelText: \"USE LOW-RES IMAGE\",\n onOk: () => {\n if (!!setModalOpen) {\n setModalOpen(true);\n return setPhotoSelected({\n ...initialPhotoState,\n index: photoSelected.index,\n side: !!photoSelected.side ? photoSelected.side : undefined,\n });\n }\n },\n });\n }\n\n setLoading(true);\n\n // Generate new Filename\n const fileName = Date.now().toString() + \".jpg\";\n\n // Check if file is big\n const img = await getImage(file);\n //INFO: Fix for issue BP-1895\n if (!newPhotos[index]) {\n newPhotos[index] = {\n base64: \"\",\n base64_cropped: \"\",\n croppedData: undefined,\n file: file,\n imageData: undefined,\n missing: false,\n oldAspect: 1,\n side: side,\n };\n newPhotos[index].file = !!fileResized\n ? fileResized\n : new File([file], fileName, { type: file.type });\n } else {\n // If it exists, just assign the resized file or create a new File object\n newPhotos[index].file = !!fileResized\n ? fileResized\n : new File([file], fileName, { type: file.type });\n }\n //END: Fix for issue BP-1895\n\n newPhotos[index].missing = false;\n // Create new File\n newPhotos[index].file = !!fileResized\n ? fileResized\n : new File([file], fileName, {\n type: file.type,\n });\n\n // Generate base64\n const base64 = await getBase64(!!fileResized ? fileResized : file);\n\n setLoading(false);\n\n if (base64 !== null) {\n newPhotos[index].base64 = base64.toString();\n\n if (imgUrl.includes(\"photos\")) {\n newPhotos[index].isLocal = false;\n newPhotos[index].name = imgUrl;\n } else {\n newPhotos[index].isLocal = true;\n }\n\n // SetPhotos and Unselect Photo\n setPhotos(newPhotos, layout);\n\n // Reset input value\n if (!!inputRef && !!inputRef.current) {\n inputRef.current.value = \"\";\n }\n\n setPhotoSelected((_: PhotoSelected) => ({\n ...initialPhotoState,\n aspect: getAspectFromLayout(layout, index),\n index,\n edit: true,\n base64: base64.toString(),\n side: !!side ? side : undefined,\n }));\n return;\n }\n\n setPhotoSelected(initialPhotoState);\n};\n\nexport const selectOneImage = async (\n e: React.ChangeEvent,\n photoSelected: PhotoSelected,\n photo: SaveBabyPagePhoto,\n setPhoto: any,\n setPhotoSelected: React.Dispatch,\n inputRef: React.RefObject,\n setLoading: React.Dispatch,\n) => {\n const index = photoSelected.index;\n if (e.target.files && e.target.files.length) {\n const newPhoto = photo;\n const file = e.target.files[0];\n let fileResized: File | Blob | null = null;\n // Check image type\n if (!isValidImage(file.type)) {\n Modal.error({\n title: \"Error\",\n content: \"Please select a valid image\",\n });\n return setPhotoSelected(initialPhotoState);\n } else if (file.type.includes(\"webp\")) {\n Modal.error({\n title: \"Error\",\n content: \"Please select a valid image\",\n });\n return setPhotoSelected(initialPhotoState);\n }\n\n setLoading(true);\n\n // Generate new Filename\n const fileName =\n Date.now().toString() + file.name.substring(file.name.lastIndexOf(\".\"));\n\n newPhoto.missing = false;\n // Create new File\n newPhoto.file = !!fileResized\n ? fileResized\n : new File([file], fileName, {\n type: file.type,\n });\n\n // Generate base64\n const base64 = await getBase64(!!fileResized ? fileResized : file);\n\n setLoading(false);\n if (base64 !== null) {\n newPhoto.base64 = base64.toString();\n\n // SetPhotos and Unselect Photo\n setPhoto(newPhoto);\n\n // Reset input value\n if (!!inputRef && !!inputRef.current) {\n inputRef.current.value = \"\";\n }\n\n setPhotoSelected((_: PhotoSelected) => ({\n ...initialPhotoState,\n index,\n edit: true,\n base64: base64.toString(),\n }));\n return;\n }\n }\n setPhotoSelected(initialPhotoState);\n};\n\n/**\n * On select a new Photo (Input Change)\n */\nexport const selectOneImageURL = async (\n imgUrl: string,\n photoSelected: PhotoSelected,\n photo: SaveBabyPagePhoto,\n setPhoto: any,\n setPhotoSelected: React.Dispatch,\n inputRef: React.RefObject,\n setLoading: React.Dispatch,\n) => {\n const index = photoSelected.index!;\n\n const newPhoto = photo;\n const file = await getFileFromUrl(\n imgUrl,\n imgUrl.indexOf(\"s3.amazonaws.com\") !== -1\n ? `${BASE_URL}api/avoid-cors?url=`\n : undefined,\n );\n\n let fileResized: File | Blob | null = null;\n\n if (file === null) {\n return setPhotoSelected({\n ...initialPhotoState,\n });\n }\n // Check image type\n if (!isValidImage(file.type)) {\n Modal.error({\n title: \"Error\",\n content: \"Please select a valid image\",\n });\n return setPhotoSelected(initialPhotoState);\n }\n\n setLoading(true);\n\n // Generate new Filename\n const fileName = Date.now().toString() + \".jpg\";\n\n newPhoto.missing = false;\n // Create new File\n newPhoto.file = !!fileResized\n ? fileResized\n : new File([file], fileName, {\n type: file.type,\n });\n\n // Generate base64\n const base64 = await getBase64(!!fileResized ? fileResized : file);\n\n setLoading(false);\n\n if (base64 !== null) {\n newPhoto.base64 = base64.toString();\n // SetPhotos and Unselect Photo\n setPhoto(newPhoto);\n\n // Reset input value\n if (!!inputRef && !!inputRef.current) {\n inputRef.current.value = \"\";\n }\n\n setPhotoSelected((_: PhotoSelected) => ({\n ...initialPhotoState,\n index,\n edit: true,\n base64: base64.toString(),\n }));\n return;\n }\n\n setPhotoSelected(initialPhotoState);\n};\n\nexport const finishCrop = async (\n cropperRef: Cropper,\n photoSelected: PhotoSelected,\n photos: SaveBabyPagePhoto[],\n setPhotos: any,\n layout: Layout,\n setLoading: React.Dispatch,\n setPhotoSelected: React.Dispatch,\n) => {\n const index = photoSelected.index;\n\n if (index !== null && !!photos[index]) {\n setLoading(true);\n const newPhotos = [...photos];\n try {\n newPhotos[index].base64_cropped = cropperRef\n .getCroppedCanvas()\n .toDataURL(\"image/jpeg\");\n newPhotos[index].croppedData = !!photoSelected.croppedData\n ? { ...photoSelected.croppedData }\n : undefined;\n newPhotos[index].imageData = !!photoSelected.imageData\n ? { ...photoSelected.imageData }\n : undefined;\n newPhotos[index].oldAspect = photoSelected.aspect;\n } catch (error) {\n Modal.error({\n title: \"Error\",\n content: \"An error occurred while cropping the image. Try again later\",\n });\n return;\n }\n\n setPhotos(newPhotos, layout);\n setPhotoSelected(initialPhotoState);\n setLoading(false);\n }\n};\n\nexport const finishOneCrop = async (\n cropperRef: Cropper,\n photoSelected: PhotoSelected,\n photo: SaveBabyPagePhoto,\n setPhoto: any,\n setLoading: React.Dispatch,\n setPhotoSelected: React.Dispatch,\n) => {\n if (!!photo) {\n setLoading(true);\n const newPhoto = photo;\n try {\n newPhoto.base64_cropped = cropperRef\n .getCroppedCanvas()\n .toDataURL(\"image/jpeg\");\n newPhoto.croppedData = !!photoSelected.croppedData\n ? { ...photoSelected.croppedData }\n : undefined;\n newPhoto.imageData = !!photoSelected.imageData\n ? { ...photoSelected.imageData }\n : undefined;\n newPhoto.oldAspect = photoSelected.aspect;\n } catch (error) {\n Modal.error({\n title: \"Error\",\n content: \"An error occurred while cropping the image. Try again later\",\n });\n return;\n }\n\n setPhoto(newPhoto);\n setPhotoSelected(initialPhotoState);\n setLoading(false);\n }\n};\n\nexport const addCustomAnswerHelper = (\n setBabyPage: React.Dispatch>,\n answer: string,\n) => {\n setBabyPage((state) => ({\n ...state,\n answers: [\n ...cloneDeep(state.answers),\n {\n answer,\n answer_string: [answer],\n position: !!state.answers.length\n ? state.answers[state.answers.length - 1].position + 1\n : 1,\n question_id: state.answers.reduce(\n (small, current) =>\n current.question_id !== null && current.question_id >= small\n ? small - 1\n : small,\n -999,\n ),\n type: \"custom\",\n },\n ],\n label_url: undefined,\n thumbnail_content: undefined,\n }));\n};\n\nexport const setCustomAnswersHelper = (\n setBabyPage: React.Dispatch>,\n changedAnswers: SimplifiedAnswer[],\n) => {\n setBabyPage((state) => ({\n ...state,\n answers: ((): QuestionAnswer[] => {\n if (!changedAnswers || !changedAnswers.length) return state.answers;\n const newAnswers = state.answers.filter((a) => {\n const changedAnswerIndex = changedAnswers.findIndex(\n (c) => c.question_id !== null && c.question_id === a.question_id,\n );\n\n return !(\n changedAnswerIndex >= 0 &&\n (!changedAnswers[changedAnswerIndex].answer ||\n !changedAnswers[changedAnswerIndex].answer.length)\n );\n });\n\n for (let i = 0; i < newAnswers.length; i++) {\n const changedAnswerIndex = changedAnswers.findIndex(\n (c) =>\n c.question_id !== null &&\n c.question_id === newAnswers[i].question_id,\n );\n\n if (changedAnswerIndex >= 0) {\n const changedAnswer = {\n ...cloneDeep(newAnswers[i]),\n ...cloneDeep(changedAnswers[changedAnswerIndex]),\n question_id: newAnswers.reduce(\n (small, current) =>\n current.question_id !== null && current.question_id >= small\n ? small - 1\n : small,\n -999,\n ),\n type: \"custom\",\n };\n\n changedAnswers.splice(changedAnswerIndex, 1);\n\n newAnswers[i] = changedAnswer;\n }\n }\n\n const changedHeight = changedAnswers.find(\n (c) => c.type === \"height_weight\",\n );\n\n if (!!changedHeight) {\n newAnswers.unshift({\n answer: changedHeight.answer,\n answer_string: [changedHeight.answer],\n position: !!state.answers.length\n ? state.answers[state.answers.length - 1].position + 1\n : 1,\n question_id: state.answers.reduce(\n (small, current) =>\n current.question_id !== null && current.question_id >= small\n ? small - 1\n : small,\n -999,\n ),\n type: \"custom\",\n });\n }\n\n return !!changedHeight\n ? newAnswers.filter((a) => a.question_id !== null)\n : newAnswers;\n })(),\n label_url: undefined,\n thumbnail_content: undefined,\n }));\n};\n\nexport const setSortedAnswersHelper = (\n setBabyPage: React.Dispatch>,\n orderedAnswers: SimplifiedAnswer[],\n) => {\n setBabyPage((state) => ({\n ...state,\n answers: ((): QuestionAnswer[] => {\n const newAnswers = orderedAnswers.map((a, i) => {\n const answer = state.answers.filter(\n (c) => c.answer !== null && c.answer === a.answer,\n );\n\n if (answer[0]) {\n answer[0].answer = a.answer;\n }\n\n return answer[0]\n ? answer[0]\n : {\n question_id: a.question_id,\n position: i,\n answer_string: !!a.answer_string ? a.answer_string : [a.answer],\n answer: a.answer,\n type: a.type,\n };\n });\n\n return newAnswers;\n })(),\n label_url: undefined,\n thumbnail_content: undefined,\n }));\n};\n\n// /**\n// * Get the new sizes of a rectangle after rotated.\n// * @param {Object} data - The original sizes.\n// * @returns {Object} The result sizes.\n// */\n// export function getRotatedSizes({ width, height, degree }) {\n// degree = Math.abs(degree) % 180;\n\n// if (degree === 90) {\n// return {\n// width: height,\n// height: width,\n// };\n// }\n\n// const arc = ((degree % 90) * Math.PI) / 180;\n// const sinArc = Math.sin(arc);\n// const cosArc = Math.cos(arc);\n// const newWidth = (width * cosArc) + (height * sinArc);\n// const newHeight = (width * sinArc) + (height * cosArc);\n\n// return degree > 90 ? {\n// width: newHeight,\n// height: newWidth,\n// } : {\n// width: newWidth,\n// height: newHeight,\n// };\n// }\n\nexport const calculateCropped = (\n zoom: number,\n imageData: Cropper.ImageData,\n origin: number[],\n rotate: number,\n aspect: number,\n source: \"web\" | \"ios\" | \"android\" = \"web\",\n): Cropper.Data => {\n const rotated = rotate % 180 === 90;\n\n const height = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n const width = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n\n const sizePixels =\n width >= height * aspect\n ? {\n width:\n (height * (zoom > 1 && aspect === 1.5 ? width / height : aspect)) /\n zoom,\n height: height / zoom,\n }\n : {\n width:\n zoom > 1 && aspect !== 2 && aspect !== 1.5\n ? height / zoom\n : width / zoom,\n height: width / aspect / zoom,\n };\n\n return {\n ...sizePixels,\n x: origin.length === 2 ? origin[0] : (width - sizePixels.width) / 2,\n y: origin.length === 2 ? origin[1] : (height - sizePixels.height) / 2,\n rotate,\n scaleX: 1,\n scaleY: 1,\n };\n};\n\nexport const calculateZoom = (\n photo: SaveBabyPagePhoto,\n aspect: number,\n): number => {\n if (\n !!photo.imageData &&\n !!photo.croppedData &&\n photo.imageData.naturalWidth !== photo.croppedData.width &&\n photo.imageData.naturalHeight !== photo.croppedData.height\n ) {\n const rotated = photo.croppedData.rotate % 180 === 90;\n\n const height = rotated\n ? photo.imageData.naturalWidth\n : photo.imageData.naturalHeight;\n const width = rotated\n ? photo.imageData.naturalHeight\n : photo.imageData.naturalWidth;\n\n const zoom =\n width >= height * aspect\n ? height / photo.croppedData.height\n : width / photo.croppedData.width;\n\n return zoom;\n }\n\n return 1;\n};\n\nexport const calculateOrigin = (photo: SaveBabyPagePhoto): number[] =>\n !!photo.croppedData ? [photo.croppedData.x, photo.croppedData.y] : [];\n\nexport const calculateOriginPercent = (photo: SaveBabyPagePhoto): number[] => {\n if (!!photo.imageData && !!photo.croppedData) {\n const rotated = photo.croppedData.rotate % 180 === 90;\n\n const height = rotated\n ? photo.imageData.naturalWidth\n : photo.imageData.naturalHeight;\n const width = rotated\n ? photo.imageData.naturalHeight\n : photo.imageData.naturalWidth;\n\n return [photo.croppedData.x / width, photo.croppedData.y / height];\n }\n\n return [];\n};\n","import { Modal } from \"antd\";\nimport axios from \"axios\";\n// @ts-ignore\nimport dataURLtoBlob from \"blueimp-canvas-to-blob\";\nimport Cropper from \"cropperjs\";\nimport { apiVersion, BASE_URL } from \"../env\";\nimport {\n BpPhotoDB,\n Layout,\n SaveBabyPagePhoto,\n initialBabyPage,\n} from \"../interfaces\";\nimport { calculateCropped } from \"../pages/BabyPage/Save/SaveHelper\";\nimport { getAspectFromLayout, getLayoutInfos } from \"./layouts\";\nvar toBlob = require(\"canvas-to-blob\");\n\n/**\n * This function check photo layouts and recrop\n * @param {SaveBabyPagePhoto[]} photos\n * @param {Layout} layout\n * @param {boolean} checkOldLayout // If should check with old layout aspect\n * @param {Layout} oldLayout\n * @param {number[][]} layoutInfo\n *\n * In case you just want to recrop all pass just photos and layout (Example Drag & Drop)\n * In case you want to compare in a layout change, pass oldLayout info\n */\nexport const checkPhotoLayouts = (\n photos: SaveBabyPagePhoto[],\n layout: Layout,\n layoutInfo: number[][],\n checkOldLayout: boolean = false,\n oldLayout?: Layout,\n): Promise =>\n Promise.all(\n photos.map(async (photo: SaveBabyPagePhoto, index: number) => {\n let oldLayoutInfo: number[][] | null = null;\n let shouldRecropPhoto: boolean =\n !!photo.file && !!photo.croppedData && !!photo.base64_cropped;\n\n if (checkOldLayout && !!oldLayout && !!layoutInfo) {\n oldLayoutInfo = getLayoutInfos(oldLayout);\n shouldRecropPhoto =\n shouldRecropPhoto &&\n oldLayoutInfo[index][0] / oldLayoutInfo[index][1] !==\n layoutInfo[index][0] / layoutInfo[index][1];\n } else if (!!photo.oldAspect) {\n shouldRecropPhoto =\n shouldRecropPhoto &&\n photo.oldAspect !== layoutInfo[index][0] / layoutInfo[index][1];\n }\n\n if (shouldRecropPhoto) {\n try {\n const aspect = getAspectFromLayout(layout, index);\n\n // <--------------------- THIS TRIGGERS THE SCROLLBAR-------------->\n photo.base64_cropped = await getCroppedImg(\n await getImage(photos[index].file!),\n aspect,\n photos[index].croppedData!.rotate,\n );\n photo.oldAspect = aspect;\n } catch (error) {\n Modal.error({\n title: \"Error\",\n content:\n \"An error occurred while cropping the image. Try again later\",\n });\n\n photo.file = undefined;\n photo.base64_cropped = \"\";\n }\n }\n\n return photo;\n }),\n );\n\nexport const getCroppedImg = (\n image: HTMLImageElement,\n aspectRatio: number,\n rotation: number = 0,\n data?: Cropper.Data,\n): Promise => {\n return new Promise((resolve, reject) => {\n const content = document.getElementById(\"save-content\");\n if (!!content) {\n content.appendChild(image);\n content.classList.toggle(\"no-overflow\");\n\n new Cropper(image, {\n autoCrop: true,\n data,\n aspectRatio,\n viewMode: 2,\n ready: (e: any) => {\n if (rotation === 0) {\n resolve(\n e.target.cropper.getCroppedCanvas().toDataURL(\"image/jpeg\"),\n );\n } else {\n const cropped = e.target.cropper.rotateTo(rotation);\n resolve(cropped.getCroppedCanvas().toDataURL(\"image/jpeg\"));\n }\n\n content.removeChild(image);\n content.classList.toggle(\"no-overflow\");\n },\n });\n } else {\n reject(\"Image not loaded\");\n }\n });\n};\n\nexport const getBase64 = (\n file: File | Blob,\n): Promise => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\n};\n\nexport const getImage = (file: File | Blob): Promise =>\n new Promise((resolve, reject) => {\n const url = URL.createObjectURL(file);\n const img = new Image();\n\n img.onload = function () {\n // if (\n // Math.max(img.naturalWidth, img.width) <= 1500 &&\n // Math.max(img.naturalHeight, img.height) <= 1500\n // ) {\n return resolve(img);\n // } else {\n // return resizeImage(img)\n // .then(resized => {\n // return getImage(resized)\n // .then(resolve)\n // .catch(reject);\n // })\n // .catch(reject);\n // }\n };\n\n img.src = url;\n });\n\nexport const resizeImage = (image: HTMLImageElement): Promise =>\n new Promise((resolve, reject) => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n if (!ctx) return reject(\"Context not working\");\n\n let width = Math.max(image.naturalWidth, image.width);\n let height = Math.max(image.naturalHeight, image.height);\n\n if (width > height) {\n canvas.height = (height * 1500) / width;\n canvas.width = 1500;\n } else {\n canvas.width = (width * 1500) / height;\n canvas.height = 1500;\n }\n\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n\n return canvasToBlobPromise(canvas).then(resolve).catch(reject);\n });\n\nexport const canvasToBlobPromise = (\n canvas: HTMLCanvasElement,\n type = \"image/jpeg\",\n): Promise =>\n new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (blob !== null) {\n return resolve(blob);\n } else {\n return reject({\n message: \"Your browser can not process canvas images.\",\n });\n }\n }, type);\n });\n\nexport const getFileFromUrl = async (\n url: string,\n avoidCorsUrl: string = \"\",\n): Promise => {\n try {\n const file = (\n await axios.get(`${avoidCorsUrl}${url}`, {\n responseType: \"blob\",\n headers: {\n Accept: apiVersion,\n },\n })\n ).data;\n return file;\n } catch (error) {\n if (error.response.status === 404) {\n const file = (\n await axios.get(\n `${avoidCorsUrl}${\"https://babypage-staging.s3.amazonaws.com/public/missingImagePlaceholder/add_babypage_placeholder.png\"}`,\n {\n responseType: \"blob\",\n headers: {\n Accept: apiVersion,\n },\n },\n )\n ).data;\n return file;\n }\n return null;\n }\n};\n\nexport const getBase64FromFileUrl = async (\n url: string,\n avoidCorsUrl: string = \"\",\n) => {\n const file: File | Blob | null = await getFileFromUrl(url, avoidCorsUrl);\n if (file === null) {\n return \"\";\n } else {\n return ((await getBase64(file)) || \"\").toString();\n }\n};\n\nexport const b64toBlob = (\n b64Data: string,\n contentType = \"image/jpeg\",\n sliceSize = 512,\n): Blob => {\n if (b64Data.indexOf(\",\") !== -1) {\n b64Data = b64Data.split(\",\")[1];\n }\n\n const byteCharacters = atob(b64Data);\n const byteArrays = [];\n\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n const byteNumbers = new Array(slice.length);\n for (let i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n\n const blob = new Blob(byteArrays, { type: contentType });\n return blob;\n};\n\nexport const getPhotoFile = async (\n { zoom, name, origin, rotation, originPercent, croppedData }: BpPhotoDB,\n layout: Layout,\n index: number,\n source: \"web\" | \"ios\" | \"android\" = \"web\",\n): Promise => {\n const file: File | Blob | null = await getFileFromUrl(\n name,\n `${BASE_URL}api/avoid-cors?url=`,\n );\n\n if (file === null) {\n return initialBabyPage.photos[0];\n } else {\n const base64 = ((await getBase64(file)) || \"\").toString();\n zoom = zoom > 1 ? zoom : 1;\n const image = await getImage(file);\n\n // if (\n // !!originPercent &&\n // originPercent.length === 2 &&\n // (source === \"ios\" || source === \"android\")\n // ) {\n if (!!originPercent && originPercent.length === 2 && source === \"android\") {\n const rotated = rotation % 180 === 90;\n originPercent = originPercent.map((p) => (p > 1 ? p / 100 : p));\n\n const height = rotated ? image.naturalWidth : image.naturalHeight;\n const width = rotated ? image.naturalHeight : image.naturalWidth;\n\n origin = [width * originPercent[0], height * originPercent[1]];\n\n croppedData = undefined;\n }\n\n if (!origin || origin.length !== 2) {\n origin = [];\n }\n\n const imageData = {\n aspectRatio: image.naturalWidth / image.naturalHeight,\n height: image.height,\n width: image.width,\n left: 0,\n naturalHeight: image.naturalHeight,\n naturalWidth: image.naturalWidth,\n rotate: rotation,\n scaleX: 1,\n scaleY: 1,\n top: 0,\n };\n\n const aspect = getAspectFromLayout(layout, index);\n croppedData = !!croppedData\n ? croppedData\n : calculateCropped(zoom, imageData, origin, rotation, aspect, source);\n\n return {\n file,\n base64,\n base64_cropped: await getCroppedImg(image, aspect, rotation, {\n ...croppedData,\n }),\n name,\n imageData,\n croppedData,\n oldAspect: aspect,\n };\n }\n};\n\nexport const isValidImage = (type: string): boolean =>\n [\n \"image/jpeg\",\n \"image/jpg\",\n \"image/webp\",\n \"image/png\",\n \"png\",\n \"jpeg\",\n \"jpg\",\n \"webp\",\n ].includes(type);\n\nconst compatibleBrowsersWebp = [\"Chrome\", \"Firefox\", \"Microsoft Edge\", \"Opera\"];\n\nexport const canUseWebp = (browser: string): boolean => {\n return compatibleBrowsersWebp.includes(browser);\n};\n\nexport const inspectAllBabypagesImages = (book: any[]): Promise => {\n return Promise.all(\n book.map((bps) =>\n axios\n .head(bps.thumbnail)\n .then((r) => axios.head(bps.thumbnail.replace(\"thumb_\", \"\")))\n .catch((err) => ({ ...err, bps })),\n ),\n ).then((responses) =>\n responses\n .filter(\n (res) => !res.status && res.response && res.response.status === 403,\n )\n .map((item) => item.bps),\n );\n};\n","import { Modal } from 'antd';\nimport { saveAs } from 'file-saver';\nimport { BASE_URL, highRes } from '../env';\nimport { canvasToBlobPromise, getBase64FromFileUrl } from './image';\n\nexport const generateImage = (\n url: string,\n width: number,\n height: number,\n ignoreCors: boolean = false\n): Promise =>\n new Promise(async (resolve, reject) => {\n const img = new Image();\n img.width = width;\n img.height = height;\n img.src = ignoreCors\n ? await getBase64FromFileUrl(url, `${BASE_URL}api/avoid-cors?url=`)\n : url;\n img.onerror = reject;\n img.onload = () => resolve(img);\n });\n\nexport const generateBabypageImg = (\n bpUrl: string,\n contentUrl: string,\n isPlus: boolean,\n returnBase64?: boolean\n): Promise =>\n new Promise(async (resolve, reject) => {\n const width = isPlus ? highRes.width : highRes.width / 4;\n const height = isPlus ? highRes.height : highRes.height / 4;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d')!;\n\n const bpImg = await generateImage(bpUrl, width, height, true);\n const contentImg =\n contentUrl !== ''\n ? await generateImage(contentUrl, width, height, true)\n : null;\n\n canvas.width = !!contentImg ? width * 2 : width;\n canvas.height = height;\n\n ctx.drawImage(bpImg, 0, 0, width, height);\n\n if (!!contentImg) {\n ctx.drawImage(contentImg, width, 0, width, height);\n }\n\n // As Base64 string\n if (returnBase64) {\n return resolve(canvas.toDataURL('image/jpeg'));\n } else {\n return canvasToBlobPromise(canvas, 'image/jpeg')\n .then(file => resolve(file))\n .catch(reject);\n }\n });\n\nexport const downloadBabypage = async (\n bpUrl: string,\n contentUrl: string,\n isPlus: boolean,\n fileName?: string\n): Promise => {\n try {\n const generatedFile = await generateBabypageImg(bpUrl, contentUrl, isPlus);\n saveAs(\n generatedFile,\n `${!!fileName ? fileName : Date.now().toString()}.jpg`\n );\n } catch (error) {\n Modal.error({\n title: 'Error',\n content: 'Failed to generate BabyPage',\n });\n }\n};\n","import { Button, Icon, Modal, notification } from \"antd\";\nimport queryString from \"query-string\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport BaseLayout from \"../../../components/BaseLayout/BaseLayout\";\nimport FloatShareButton from \"../../../components/FloatShareButton/FloatShareButton\";\nimport ModalPlus from \"../../../components/ModalPlus/ModalPlus\";\nimport ModalSharePlus from \"../../../components/ModalSharePlus/ModalSharePlus\";\nimport ShareModal from \"../../../components/ShareModal/ShareModal\";\nimport PlusAlert from \"../../../components/SaveBabyPage/PlusAlert\";\nimport { StripeProduct } from \"../../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../../store\";\nimport { fetchBabyPageById } from \"../../../store/sagas/babyPage\";\nimport { FileUploadedS3, savePhotosShareS3 } from \"../../../store/sagas/image\";\nimport { downloadBabypage, generateBabypageImg } from \"../../../utils/canvas\";\n//import { trackAction } from '../../../utils/marketing';\nimport { replaceThumbURL } from \"../../../utils/string\";\nimport \"./AfterSave.scss\";\n\ninterface Props {\n isPlus: boolean;\n stripeProducts: StripeProduct[];\n}\n\nconst AfterSavePage: React.FC = ({ isPlus, stripeProducts }) => {\n const location = useLocation();\n const history = useHistory();\n\n const sendToUpgradeToPlus = () => {\n history.push(\"/cart/subscription/yearly\");\n }\n\n const [babyPage, setBabyPage] = useState(null);\n const [showPlus, setShowPlus] = useState(false);\n const [showSharePlus, setShowSharePlus] = useState(false);\n const [loading, setLoading] = useState(false);\n const [share, setShare] = useState(\"\");\n const [downloadFreeBP, setDownloadFreeBP] = useState(false);\n const [buttonShareDisabled, setButtonShareDisabled] = useState(false);\n\n if (babyPage?.photos_right) {\n localStorage.setItem(\"onlyPhotoBPCreated\", \"true\");\n }\n\n useEffect(() => {\n const id = queryString.parse(location.search).id;\n\n if (!!downloadFreeBP) {\n setLoading(true);\n downloadBabypage(\n replaceThumbURL(babyPage.thumbnail),\n !!babyPage.thumbnail_content\n ? replaceThumbURL(babyPage.thumbnail_content)\n : \"\",\n isPlus,\n `${babyPage.title}Babypage`\n )\n .then(() => {\n setLoading(false);\n setDownloadFreeBP(false);\n })\n .catch((err) =>\n Modal.error({\n title: \"Error\",\n content: \"Error generating BabyPage\",\n })\n );\n }\n\n if (!!id) {\n if (babyPage === null) {\n sagaMiddleware.run(\n fetchBabyPageById,\n parseInt(id.toString()),\n (error: any | null, babyPageBD?: any) => {\n if (error !== null || !babyPageBD) {\n history.push(\"/babypages\");\n return;\n }\n\n setBabyPage(babyPageBD);\n }\n );\n }\n } else {\n history.push(\"/babypages\");\n }\n }, [location.search, history, downloadFreeBP, setLoading, babyPage, isPlus]);\n\n const createShareImage = useCallback(() => {\n setLoading(true);\n generateBabypageImg(\n isPlus ? replaceThumbURL(babyPage.thumbnail) : babyPage.thumbnail,\n !!babyPage.thumbnail_content\n ? isPlus\n ? replaceThumbURL(babyPage.thumbnail_content)\n : babyPage.thumbnail_content\n : \"\",\n isPlus\n )\n .then((image) => {\n sagaMiddleware.run(\n savePhotosShareS3,\n image as Blob,\n babyPage.id,\n (err: string | null, response?: FileUploadedS3) => {\n setLoading(false);\n setButtonShareDisabled(false)\n if (err !== null) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n return;\n } else if (!!response) {\n if (isPlus) {\n setShare(response.high_url);\n } else {\n setShare(response.thumb_url);\n }\n } else {\n Modal.error({\n title: \"Error\",\n content: \"Error saving Photo\",\n });\n }\n }\n );\n })\n .catch((err) => {\n Modal.error({\n title: \"Error\",\n content: \"Error generating BabyPage\",\n });\n setLoading(false);\n setButtonShareDisabled(false)\n });\n }, [babyPage, isPlus]);\n\n const onCloseModalPlus = () => {\n setShowPlus(false);\n setButtonShareDisabled(false)\n }\n if(babyPage) {\n localStorage.setItem(\"BPcreated\", \"true\");\n }\n \n\n return (\n \n {!!babyPage ? (\n
\n {!loading ? (\n
\n
\n \n
\n
\n \n
\n
\n ) : (\n \n \n
\n )}\n \n
\n
\n \n history.push(`/babypages/save?id=${babyPage.id}`)\n }\n >\n Edit your babypage\n \n
\n
\n { setShowPlus(true) }}\n >\n Share your babypage\n \n {!isPlus && (\n \n )}\n
\n
\n {\n if (isPlus) {\n setLoading(true);\n\n downloadBabypage(\n replaceThumbURL(babyPage.thumbnail),\n !!babyPage.thumbnail_content\n ? replaceThumbURL(babyPage.thumbnail_content)\n : \"\",\n true,\n `${babyPage.title}Babypage`\n )\n .then(() => {\n setLoading(false);\n })\n .catch((err) =>\n Modal.error({\n title: \"Error\",\n content: \"Error generating BabyPage\",\n })\n );\n } else {\n setShowPlus(true);\n }\n }}\n >\n Download high res babypage\n \n \n {!isPlus && (\n \n )}\n
\n
\n \n ) : (\n \n \n \n )}\n onCloseModalPlus()}\n afterSaveBPMsg\n />\n {\n setShowSharePlus(false)\n notification.success({\n message: \"Success\",\n description: \"The BabyPage link was copied successfully!\"\n });\n}}\n />\n setShare(\"\")}\n image={share}\n setShowSharePlus={setShowSharePlus}\n isPlus={isPlus}\n />\n {\n setButtonShareDisabled(true)\n if(isPlus) {\n createShareImage()\n } else {\n setShowPlus(true)\n }\n \n }}\n disabled={buttonShareDisabled}\n />\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n isPlus: !!state.user.user_level && state.user.user_level === 1,\n products: state.product.products,\n stripeProducts: state.stripeProduct,\n});\n\nexport default connect(mapStateToProps)(AfterSavePage);\n","import { Button, Modal } from \"antd\";\nimport React, { useState, useCallback, useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\nimport { BabyPage, StripeProduct } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { downloadBabypage, generateBabypageImg } from \"../../utils/canvas\";\nimport { replaceThumbURL } from \"../../utils/string\";\nimport ModalPlus from \"../ModalPlus/ModalPlus\";\nimport \"./PhotoModal.scss\";\nimport { FileUploadedS3, savePhotosShareS3 } from \"../../store/sagas/image\";\nimport ShareModal from \"../ShareModal/ShareModal\";\n\ninterface Props {\n image: string;\n content?: string;\n width?: string | number;\n height?: string | number;\n babyPage?: BabyPage;\n visible: boolean;\n isPlus: boolean;\n stripeProducts: StripeProduct[];\n onClose: (e: React.MouseEvent) => void;\n hasFullAccess?: boolean | undefined;\n isGuestUser?: boolean | undefined;\n}\n\nconst PhotoModal: React.FC = ({\n image,\n content,\n visible,\n isPlus,\n babyPage,\n onClose,\n stripeProducts,\n width,\n height,\n hasFullAccess,\n isGuestUser,\n}) => {\n const history = useHistory();\n const [zoomed, setZoomed] = useState(false);\n const [showSharePlus, setShowSharePlus] = useState(false);\n const [loading, setLoading] = useState(false);\n const [share, setShare] = useState(\"\");\n const [downloadFreeBP, setDownloadFreeBP] = useState(false);\n const [upgradeToPlus, setUpgradeToPlus] = useState(false);\n\n const sendToUpgradeToPlus = () => {\n history.push(\"/cart/subscription/yearly\");\n }\n\n useEffect(() => {\n if (!!downloadFreeBP && !!babyPage) {\n setLoading(true);\n downloadBabypage(\n replaceThumbURL(babyPage.thumbnail),\n !!babyPage.thumbnail_content\n ? replaceThumbURL(babyPage.thumbnail_content)\n : \"\",\n isPlus,\n `${babyPage.title}Babypage`\n )\n .then(() => {\n setLoading(false);\n setDownloadFreeBP(false);\n })\n .catch(err =>\n Modal.error({\n title: \"Error\",\n content: \"Error generating BabyPage\"\n })\n );\n }\n }, [downloadFreeBP, setLoading, babyPage, isPlus])\n\n const style: React.CSSProperties = {};\n if (!!height) style.height = height;\n if (!!width) style.width = width;\n\n const images = zoomed ? (\n <>\n \n {!!content && (\n \n )}\n \n ) : (\n <>\n \"BabyPage\"\n {!!content && (\n \n )}\n \n );\n\n const createShareImage = useCallback((babyPage) => {\n setLoading(true);\n generateBabypageImg(\n isPlus ? replaceThumbURL(babyPage.thumbnail) : babyPage.thumbnail,\n !!babyPage.thumbnail_content\n ? isPlus\n ? replaceThumbURL(babyPage.thumbnail_content)\n : babyPage.thumbnail_content\n : \"\",\n isPlus\n )\n .then(image => {\n sagaMiddleware.run(\n savePhotosShareS3,\n image as Blob,\n babyPage.id,\n (err: string | null, response?: FileUploadedS3) => {\n setLoading(false);\n if (err !== null) {\n Modal.error({\n title: \"Error\",\n content: err\n });\n return;\n } else if (!!response) {\n if (isPlus) {\n setShare(response.high_url);\n } else {\n setShare(response.thumb_url);\n }\n } else {\n Modal.error({\n title: \"Error\",\n content: \"Error saving Photo\"\n });\n }\n }\n );\n })\n .catch(err => {\n Modal.error({\n title: \"Error\",\n content: \"Error generating BabyPage\"\n });\n setLoading(false);\n });\n }, [isPlus]);\n\n\n return (\n \n setUpgradeToPlus(false)}\n afterSaveBPMsg\n />\n
\n {images}\n
\n {!!babyPage && (\n \n {(!!babyPage.new_version && (!!hasFullAccess || !isGuestUser)) && (\n \n !!babyPage\n ? history.push(`/babypages/save?id=${babyPage.id}`)\n : {}\n }\n />\n )}\n ( setZoomed(!zoomed))}\n />\n {isPlus ? \n {\n setDownloadFreeBP(true);\n }}\n />\n :\n null\n }\n isPlus ? createShareImage(babyPage) : setUpgradeToPlus(true)}\n />\n \n )}\n setShare(\"\")}\n image={share}\n setShowSharePlus={setShowSharePlus}\n isPlus={isPlus}\n />\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n isPlus: !!state.user.user_level && state.user.user_level === 1,\n stripeProducts: state.stripeProduct\n});\n\nexport default connect(mapStateToProps)(PhotoModal);\n","import { Icon, Modal, notification, Popover } from \"antd\";\nimport React, { useCallback, useState, useEffect, useMemo } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport TruncateMarkup from \"react-truncate-markup\";\nimport { BabyPage, StripeProduct, Baby } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { deleteBabyPage, duplicateBabyPage } from \"../../store/sagas/babyPage\";\nimport { downloadBabypage } from \"../../utils/canvas\";\nimport { replaceThumbURL } from \"../../utils/string\";\nimport ModalPlus from \"../ModalPlus/ModalPlus\";\nimport PhotoModal from \"../PhotoModal/PhotoModal\";\nimport PlusAlert from \"../SaveBabyPage/PlusAlert\";\nimport \"./BabyPagePreview.scss\";\nimport { useHistory } from \"react-router\";\nimport moment from \"moment\";\nconst { confirm } = Modal;\n\ntype Props = {\n babyPage: BabyPage;\n setLoading: React.Dispatch>;\n stripeProducts: StripeProduct[];\n isPlus: boolean;\n hasFullAccess: boolean | undefined;\n isGuestUser: boolean | undefined;\n babies: Baby[];\n babySelected?: Baby;\n};\n\nconst BabyPagePreview: React.FC = ({\n babyPage,\n stripeProducts,\n setLoading,\n isPlus,\n hasFullAccess,\n isGuestUser,\n babies,\n babySelected \n}) => {\n const [control, setControl] = useState({ modal: false, popover: false });\n const [showPlus, setShowPlus] = useState(false);\n const [downloadFreeBP, setDownloadFreeBP] = useState(false);\n const history = useHistory();\n const sendToUpgradeToPlus = () => {\n history.push(\"/cart/subscription/yearly\");\n }\n\n useEffect(() => {\n if (!!downloadFreeBP) {\n setLoading(true);\n downloadBabypage(\n replaceThumbURL(babyPage.thumbnail),\n !!babyPage.thumbnail_content\n ? replaceThumbURL(babyPage.thumbnail_content)\n : \"\",\n isPlus\n )\n .then(() => {\n setLoading(false);\n setDownloadFreeBP(false);\n })\n .catch(err =>\n Modal.error({\n title: \"Error\",\n content: \"Error generating BabyPage\"\n })\n );\n }\n }, [downloadFreeBP, setLoading, babyPage, isPlus])\n\n const onDelete = useCallback(() => {\n confirm({\n title: (\n <>\n

Are you sure?

\n

Do you want to delete this BabyPage?

\n \n ),\n okText: \"Yes\",\n okType: \"primary\",\n cancelText: \"No\",\n width: 300,\n icon: \"warning\",\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(\n deleteBabyPage,\n babyPage.id,\n (err: string | null) => {\n setLoading(false);\n if (err) {\n Modal.error({\n title: \"Error\",\n content: err\n });\n } else {\n notification.success({\n message: \"Success\",\n description: \"The BabyPage was deleted successfully!\"\n });\n }\n }\n );\n }\n });\n }, [babyPage.id, setLoading]);\n\n const popupContent = (\n
    \n setControl({ modal: true, popover: false })}\n >\n \n Preview\n \n \n {(babyPage.new_version && !!hasFullAccess) && (\n \n
  • \n \n Edit\n
  • \n \n )}\n\n {!isGuestUser && (\n {\n setControl(state => ({ ...state, popover: false }));\n onDelete();\n }}\n >\n \n Delete\n \n )}\n\n {\n if(isPlus) {\n setControl(state => ({ ...state, popover: false }));\n setLoading(true);\n\n downloadBabypage(\n replaceThumbURL(babyPage.thumbnail),\n !!babyPage.thumbnail_content\n ? replaceThumbURL(babyPage.thumbnail_content)\n : \"\",\n true,\n `${babyPage.title}Babypage`\n )\n .then(() => {\n setLoading(false);\n })\n .catch(err =>\n Modal.error({\n title: \"Error\",\n content: \"Error generating BabyPage\"\n })\n );\n } else {\n setControl(state => ({ ...state, popover: false }));\n setShowPlus(true);\n }\n }}\n >\n \n Download\n {!isPlus && (\n \n )}\n \n {(babyPage.new_version && !isGuestUser) && (\n {\n setControl(state => ({ ...state, popover: false }));\n setLoading(true);\n const babyPagesCounter = babies.reduce(\n (acc: number, baby: any) => acc + baby.babyPages.length,\n 0\n );\n\n if(babyPagesCounter >= 15 && !isPlus) {\n notification.error({\n message: \"Cannot duplicate BabyPage\",\n description: \"You currently have 15 BabyPäges, if you want to add more subscribe to a PLUS subscription to add unlimited BabyPages\"\n });\n setLoading(false);\n } else {\n sagaMiddleware.run(\n duplicateBabyPage,\n babyPage.id,\n (err: string | null) => {\n setLoading(false);\n if (err) {\n Modal.error({\n title: \"Error\",\n content: err\n });\n } else {\n notification.success({\n message: \"Success\",\n description: \"The BabyPage was duplicated successfully!\"\n });\n }\n }\n );\n } \n }}\n >\n \n Duplicate\n \n )}\n
\n );\n\n const onCloseModalPlus = () => {\n setShowPlus(false);\n }\n\n\n const title = useMemo(() => {\n if( babyPage.event === \"Custom Page\" && babyPage.title === \"\") {\n return (\n <>\n

{babyPage.event}

\n \n )\n }\n\n else {\n return (\n <>\n

{babyPage.title}

\n \n )\n }\n }, [babySelected, babyPage])\n\n return (\n <>\n \n setControl(state => ({ ...state, popover }))\n }\n >\n
\n \n
\n
\n {title}\n

\n {!!babyPage.subtitle && babyPage.subtitle}\n

\n
\n \n
\n
\n \n setControl(state => ({ ...state, modal: false }))}\n babyPage={babyPage}\n hasFullAccess={hasFullAccess}\n isGuestUser={isGuestUser}\n />\n onCloseModalPlus()}\n onSaveBeforeUpgradeToPlus={sendToUpgradeToPlus}\n />\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n isPlus: !!state.user.user_level && state.user.user_level === 1,\n babies: state.baby.babies\n});\n\nexport default connect(mapStateToProps)(BabyPagePreview);\n","import React from \"react\";\n\nfunction SearchBarIcon() {\n return (\n \n \n \n \n \n \n );\n}\n\nexport default SearchBarIcon;","import moment from 'moment';\nimport { BabyPage } from '../interfaces';\n\nexport let searchBabypages = (\n search:string, \n babypages: BabyPage [], \n setFilteredBabypages: React.Dispatch>\n ) => {\n\n\n let searchArray = search.split(\" \");\n\n let allWordsMatch = searchArray.map((word:string) => {\n \n let wordMatchs = babypages.map((babypage: BabyPage, index: number) => {\n let fullTitle = `${babypage.title} ${babypage.subtitle}`\n\n if(fullTitle.toLowerCase().includes(word.toLowerCase())) {\n return babypage;\n } else {\n return ;\n }\n \n });\n\n\n return wordMatchs;\n\n })\n\n let filteredWordMatch = allWordsMatch.map(matchesArray => {\n return matchesArray.filter((item) => !!item )\n });\n\n let arrayFilteredBabypages : any = []\n\n arrayFilteredBabypages = filteredWordMatch.reduce((previousWord,currentWord) => previousWord.filter(wordMatch => currentWord.includes(wordMatch)));\n\n\n setFilteredBabypages([...arrayFilteredBabypages])\n }\n\n\n export default searchBabypages;","import React from \"react\";\n\ninterface Props {\n classes?:string;\n}\n\n const SortIcon: React.FC = ({\n classes\n }) => {\n return (\n \n \n \n );\n}\n\nexport default SortIcon;","import React, {useState} from 'react';\nimport {BabyPage} from '../../interfaces';\nimport \"./BabyPageSearchBar.scss\"\nimport SearchBarIcon from \"./SearchBarIcon/SearchBarIcon\"\nimport { searchBabypages } from \"../../utils/searchBabypages\";\nimport { trackAction } from \"../../utils/marketing\";\nimport SortIcon from '../Icons/SortIcon';\n\ninterface Props{\n babypages: BabyPage[];\n filteredBabypages: BabyPage[];\n setFilteredBabypages: React.Dispatch>;\n setSortModalVisible: React.Dispatch>;\n}\n\nconst BabyPageSearchBar: React.FC = ({\n babypages,\n filteredBabypages,\n setFilteredBabypages, \n setSortModalVisible\n}) => {\n return (\n
\n
\n
\n
\n {\n searchBabypages( \n e.target.value,\n babypages,\n setFilteredBabypages\n )}\n }\n onFocus={(() => {\n trackAction(\"Search_Babypages\", {\n google: {\n event: \"search_babypage\",\n },\n },\n true)\n }) } \n placeholder=\"Search\"\n />\n
setSortModalVisible(true)}>\n
\n
\n
\n )\n}\n\nexport default BabyPageSearchBar;","import React from \"react\";\n\nfunction BabyPageAdd() {\n return (\n \n \n \n \n \n \n \n );\n}\n\nexport default BabyPageAdd;","import React from \"react\";\n\nfunction BabyPageRefresh() {\n return (\n \n \n \n \n \n \n );\n}\n\nexport default BabyPageRefresh;\n","import { Modal, Button, Icon, Spin } from 'antd';\nimport React, {useEffect, useState} from 'react';\nimport { Link, useHistory } from 'react-router-dom';\nimport BabyPagePreview from '../../components/BabyPagePreview/BabyPagePreview';\nimport BabyPageSearchBar from '../../components/BabyPageSearchBar/BabyPageSearchBar';\nimport { BabyPage, StripeProduct, Baby } from '../../interfaces';\nimport BabyPageAdd from './icons/BabyPageAdd';\nimport BabyPageRefresh from './icons/BabyPageRefresh';\nimport { sagaMiddleware } from \"../../store\";\nimport { fetchBabies } from \"../../store/sagas/baby\";\nimport { setBookType as setBookTypeSaga } from \"../../store/sagas/books\";\nimport \"./BabyPageList.scss\"\n\ninterface Props {\n text: string;\n newBabyPages?: boolean;\n babypages: BabyPage[];\n setLoading: React.Dispatch>;\n loading:boolean;\n stripeProducts: StripeProduct[];\n babySelected?: Baby;\n isGuestUser?: boolean;\n setModal: React.Dispatch>;\n setSortModalVisible: React.Dispatch>;\n sortBy: string;\n allBabypages: number;\n}\n\nconst BabyPageList: React.FC = ({\n text,\n newBabyPages,\n babypages,\n setLoading,\n loading,\n stripeProducts,\n babySelected,\n isGuestUser,\n setModal,\n setSortModalVisible,\n sortBy,\n allBabypages\n}) => {\n const history = useHistory();\n\n let [filteredBabypages, setFilteredBabypages] = useState([...babypages])\n\n useEffect(() => {\n setFilteredBabypages([...babypages])\n }, [babypages])\n\n const BabyPagePreviewList = filteredBabypages.map((babyPage, index) => {\n const bpProps = {\n babyPage,\n stripeProducts,\n setLoading,\n hasFullAccess: newBabyPages,\n isGuestUser,\n babySelected\n };\n return ;\n })\n\n const refreshBabypages = () => {\n setLoading(true);\n sagaMiddleware.run(fetchBabies, (err: string | null) => {\n setLoading(false);\n if (err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n }\n }, undefined, sortBy);\n }\n\n const hiddenClasses = babypages.length === 0 && !newBabyPages ? \"hidden\" : \"\"\n const hasBabypages = babypages.length !== 0\n\n return (\n
\n
\n
\n { newBabyPages && \n {\n sagaMiddleware.run(setBookTypeSaga, \"\", (err?: string) => {\n if (err) {\n console.error(err);\n return;\n }\n\n return allBabypages < 8\n ? setModal(true)\n : history.push(\"/books/save\");\n });\n }}\n >\n Make a Book\n \n}\n
\n \n \n
\n { newBabyPages && \n (\n \n )\n }\n
\n
\n \n
\n
\n

Babypages

\n
\n { hasBabypages && \n
\n \n
\n }\n
\n
\n { loading ? ( \n
\n }\n />\n
\n ) :\n <>\n { newBabyPages && \n \n
\n \n
\n \n }\n {hasBabypages && BabyPagePreviewList }\n \n }\n\n
\n
\n \n );\n};\nexport default BabyPageList;\n","import React from \"react\";\n\nfunction AscendingSort() {\n return (\n \n \n \n );\n}\n\nexport default AscendingSort;","import React from \"react\";\n\nfunction DescendingSort() {\n return (\n \n \n \n );\n}\n\nexport default DescendingSort;\n","import { Modal, Radio } from \"antd\";\nimport React, { useMemo, useState, useLayoutEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport BabyPageList from \"../../components/BabyPageList/BabyPageList\";\nimport BaseLayout from \"../../components/BaseLayout/BaseLayout\";\nimport { Baby, BabyPage, StripeProduct } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { fetchBabies } from \"../../store/sagas/baby\";\nimport \"./BabyPages.scss\";\nimport { User } from \"../../interfaces\";\nimport { RadioChangeEvent } from \"antd/lib/radio/interface\";\nimport { capitalize } from \"lodash\";\nimport AscendingSort from \"../../components/Icons/AscendingSort\";\nimport DescendingSort from \"../../components/Icons/DescendingSort\";\n\ninterface Props {\n babySelected?: Baby;\n stripeProducts: StripeProduct[];\n user: User;\n babies: Baby[];\n}\n\nconst BabyPagesPage: React.FC = ({ babySelected, stripeProducts, user, babies }) => {\n const sortOptions = [{\n value: 'date',\n label: 'Creation Date'\n }, {\n value: 'alpha',\n label: 'Alphabetical'\n },\n {\n value: 'milestone',\n label: 'Milestone Date'\n }\n ]\n const [loading, setLoading] = useState(false);\n const [modal, setModal] = useState(false);\n const [sortModalVisible, setSortModalVisible] = useState(false); \n const [sortBy, setSortBy] = useState(sortOptions[0].value); \n const [reverseSort, setReverseSort] = useState(false);\n\n const [newBabypages, oldBabypages]: [BabyPage[], BabyPage[]] = useMemo(\n () =>\n !!babySelected\n ? !reverseSort ? [\n babySelected.babyPages.filter(\n (babypage) => babypage.new_version === true\n ),\n babySelected.babyPages.filter(\n (babypage) => babypage.new_version === false\n ),\n ] : [\n babySelected.babyPages.reverse().filter(\n (babypage) => babypage.new_version === true\n ),\n babySelected.babyPages.reverse().filter(\n (babypage) => babypage.new_version === false\n ),\n ]\n : [[], []],\n [babySelected, reverseSort, sortBy]\n );\n \n useLayoutEffect(()=>{\n setLoading(true);\n\n sagaMiddleware.run(fetchBabies, (error: string | null) => {\n setLoading(false);\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n }); \n }\n },undefined, sortBy);\n },[babySelected, sortBy])\n\n const allBabypages = useMemo(() => {\n let allBabypages : any = []\n\n babies.map(baby => {\n allBabypages = [...allBabypages, ...baby.babyPages]\n })\n return allBabypages;\n }, [babies]) \n\n return (\n \n
\n \n { oldBabypages.length === 0 ? null : \n \n } \n
\n setModal(false)} footer={null}>\n

Hang on!

\n

\n You need at least 8 BabyPages to create a book.\n

\n

\n You'll need to create a few more babypages to make your book.\n

\n
\n setSortModalVisible(false)} footer={null}>\n

Sort By

\n {\n setSortBy(e.target.value);\n }}\n >\n {sortOptions.map ((item, index) => (\n {capitalize(item.label)} \n ))}\n \n
\n {\n setReverseSort(!reverseSort);\n }}\n >\n {!reverseSort ? : }\n \n\n \n {sortBy === \"date\"\n ? !reverseSort ? \"Latest First\" : \"Earliest First\"\n : sortBy === \"milestone\"\n ? !reverseSort ? \"Earliest Milestones\" : \"Latest Milestones\"\n : !reverseSort ? \"A-Z\" : \"Z-A\"}\n \n
\n
\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n babySelected: state.baby.babySelected,\n stripeProducts: state.stripeProduct,\n user: state.user,\n babies: state.baby.babies,\n});\n\n\nexport default connect(mapStateToProps)(BabyPagesPage);\n","import React from \"react\";\n\ninterface Props {\n className?:string;\n}\n\nconst CompletedMilestones: React.FC = ({className}) => {\n return (\n \n \n \n \n \n \n );\n}\n\nexport default CompletedMilestones;","import React from \"react\";\nimport { Card } from \"antd\";\nimport { Link } from \"react-router-dom\";\nimport { Milestone } from \"../../interfaces\";\nimport CompletedMilestones from \"./icons/CompletedMilestones\";\nimport \"./MilestoneCard.scss\";\n\ninterface Props {\n milestone: Milestone;\n}\n\nconst MilestoneCard: React.FC = ({ milestone }) => {\n // Checking if device is iOS to \"force\" refresh after loading route\n const isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);\n const milestoneCompletedOverlay = milestone.is_used ? \"completed-overlay\" : \"\";\n const imageOpacity = milestone.is_used ? \"image-opacity\" : \"\";\n\n const CustomCards = () => {\n return (\n \n
\n {\n milestone.is_used ? : null\n }\n \n \n

\n {milestone.title}\n

\n
\n \n );\n };\n\n const CustomCardsIOS = () => {\n return (\n \n
\n {\n milestone.is_used ? : null\n }\n \n

\n {milestone.title}\n

\n
\n \n );\n };\n\n return <>{!isIOS ? : };\n};\n\nexport default MilestoneCard;\n","import React from \"react\";\nimport MilestoneCard from \"../Milestones/MilestoneCard\";\nimport { Milestone } from \"../../interfaces\";\nimport \"./MilestoneList.scss\";\ninterface Props {\n milestones: Milestone[];\n milestoneTitle: String;\n}\n\nconst MilestonesList: React.FC = ({ milestones, milestoneTitle }) => {\n return (\n <>\n \n
\n
\n

{milestoneTitle}

\n
\n
\n
\n {milestones.map((milestone: Milestone, index: number) => {\n return ;\n })}\n
\n \n \n );\n};\n\nexport default MilestonesList;\n","import { Button, Icon, Modal, Spin } from \"antd\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport BaseLayout from \"../../../components/BaseLayout/BaseLayout\";\nimport MilestonesList from \"../../../components/Milestones/MilestonesList\";\nimport ModalPlus from \"../../../components/ModalPlus/ModalPlus\";\nimport { Baby, MilestonesBaby, User } from \"../../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../../store\";\nimport { setDraftBabyPage } from \"../../../store/sagas/bpHelper\";\nimport { MilestoneState } from \"../../../store/ducks/milestones\";\nimport { fetchMilestones } from \"../../../store/sagas/milestone\";\nimport \"./MilestonesPage.scss\";\nimport babyCart from \"../../../components/Milestones/icons/baby-buggy.png\";\nimport babyFace from \"../../../components/Milestones/icons/baby-face.png\";\nimport babyFoot from \"../../../components/Milestones/icons/foot-icon.png\";\nimport babyShirt from \"../../../components/Milestones/icons/baby-shirt.png\";\nimport babySock from \"../../../components/Milestones/icons/stocking.png\";\nimport babyIncomplete from \"../../../components/Milestones/icons/incomplete.png\";\n\ninterface Props {\n babySelected?: Baby;\n milestones: MilestoneState;\n user: User;\n babies: Baby[];\n}\n\nconst MilestonesPage: React.FC = ({\n babySelected,\n milestones,\n user,\n babies,\n}) => {\n const history = useHistory();\n const [babyPageLimitPlusOpen, setBabyPageLimitPlusOpen] = useState(false);\n\n const [activefilter, setActiveFilter] = useState<\n | \"baby_milestones\"\n | \"one_year_milestones\"\n | \"holiday_milestones\"\n | \"all_milestones\"\n | \"first_event_milestones\"\n | \"pregnancy_milestones\"\n | \"incomplete_milestones\"\n >(\"pregnancy_milestones\");\n\n\n const [activeMilestoneTitle, setActiveMilestoneTitle] = useState('Pregnancy')\n\n const setFilteredMilestones = (filter: any, title: any) => {\n setActiveFilter(filter)\n setActiveMilestoneTitle(title)\n }\n\n useEffect(() => {\n sagaMiddleware.run(setDraftBabyPage, {});\n sagaMiddleware.run(fetchMilestones, (error?: any) => {\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n }); \n }\n });\n }, []);\n\n const sendToUpgradeToPlus = () => {\n history.push(\"/cart/subscription/yearly\");\n };\n\n useEffect(() => {\n const babyPagesCounter = babies.reduce(\n (acc: number, baby: any) => acc + baby.babyPages.length,\n 0\n );\n\n if (babyPagesCounter >= 15 && user.user_level === 0) {\n setBabyPageLimitPlusOpen(true);\n }\n }, [user.user_level]);\n\n const babyMilestones: MilestonesBaby | undefined = useMemo(() => {\n if (milestones && milestones.milestones.length && babySelected) {\n return milestones.milestones.find((m) => m.id === babySelected.id);\n }\n return undefined;\n }, [milestones, babySelected]);\n const filteredMilestones = babyMilestones ? babyMilestones[activefilter] : [];\n\n const customId: number = useMemo(() => {\n let index = -1;\n\n const milestone = milestones.milestones.find((e) => {\n index = e.all_milestones.findIndex(\n (m) => m.title_name === \"Custom Page\" || m.title === \"Custom Page\"\n );\n return index !== -1;\n });\n\n return milestone ? milestone.all_milestones[index].id : 1;\n }, [milestones.milestones]);\n\n const photoOnlyId: number = useMemo(() => {\n let index = -2;\n\n const milestone = milestones.milestones.find((e) => {\n index = e.all_milestones.findIndex(\n (m) =>\n m.title_name === \"Photo-Only Page\" || m.title === \"Photo-Only Page\"\n );\n return index !== -2;\n });\n\n return milestone ? milestone.all_milestones[index].id : 1;\n }, [milestones.milestones]);\n\n // Checking if device is iOS to \"force\" refresh after loading route\n const isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);\n\n const babyMilestoneButton: string = useMemo(() => {\n if(!!babySelected) {\n let firstName = babySelected?.baby_first_name;\n if(babySelected?.baby_first_name.length >= 25) {\n\n return `${firstName.slice(0,20)}... MILESTONES`\n } else {\n return `${firstName}'S MILESTONES`\n }\n } else {\n return \"\"\n }\n }, [babySelected?.baby_first_name])\n\n return (\n \n
\n
\n
\n
\n
\n {milestones.loading && (\n
\n \n }\n />\n
\n )}\n {babySelected && (\n <>\n
\n setFilteredMilestones(\"pregnancy_milestones\", \"Pregnancy\")}\n ghost={activefilter !== \"pregnancy_milestones\"}\n >\n \n

\n Pregnancy\n

\n \n
\n
\n setFilteredMilestones(\"baby_milestones\", \"Age\")}\n ghost={activefilter !== \"baby_milestones\"}\n >\n \n

Age

\n \n
\n
\n setFilteredMilestones(\"first_event_milestones\", \"1st Events\")}\n ghost={activefilter !== \"first_event_milestones\"}\n >\n \n

\n 1st Events\n

\n \n
\n
\n setFilteredMilestones(\"holiday_milestones\", \"Holidays\")}\n ghost={activefilter !== \"holiday_milestones\"}\n >\n \n

Holidays

\n \n
\n
\n setFilteredMilestones(\"incomplete_milestones\", \"Incomplete\")}\n ghost={activefilter !== \"incomplete_milestones\"}\n >\n \n

\n Incomplete\n

\n \n
\n
\n setFilteredMilestones(\"all_milestones\", \"View All\")}\n ghost={activefilter !== \"all_milestones\"}\n >\n \n

View All

\n \n
\n \n )}\n
\n
\n
\n \n \n

\n Custom Pages\n

\n \n \n
\n {!!photoOnlyId && (\n
\n {\n if (localStorage.onlyPhotoBPCreated) {\n history.push(\n `/babypages/save?milestoneId=${photoOnlyId}`\n );\n } else {\n Modal.info({\n title: \"Hi there!\",\n content: `Photo Only milestones allow you to create babypages with photos\n on both sides of the page. No auto-generated content is included, but you \n can add a label/title.`,\n okText: \"Got It\",\n onOk: () =>\n history.push(\n `/babypages/save?milestoneId=${photoOnlyId}`\n ),\n maskClosable: true,\n });\n }\n }}\n >\n

\n Photo Only Pages\n

\n \n
\n )}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n history.goBack()}\n onSaveBeforeUpgradeToPlus={sendToUpgradeToPlus}\n customText=\"You reached the limit of BabyPages as a free user. Upgrade to PLUS to create more.\"\n />\n
\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n babySelected: state.baby.babySelected,\n babies: state.baby.babies,\n user: state.user,\n milestones: state.milestones,\n});\n\n\n\nexport default connect(mapStateToProps)(MilestonesPage);\n","import React, { useState, useCallback } from 'react';\nimport { Prompt } from 'react-router';\nimport { Location } from 'history';\nimport { Modal } from 'antd';\n\ninterface Props {\n when: boolean | undefined;\n navigate: (path: string) => void;\n beforeNavigate?: () => void;\n}\n\nconst initialModal = {\n visible: false,\n confirmedNavigation: false,\n lastLocation: null\n};\n\nconst RouteLeavingGuard: React.FC = ({ beforeNavigate, when, navigate }) => {\n const [modal, setModal] = useState<{\n visible: boolean;\n confirmedNavigation: boolean;\n lastLocation: Location | null;\n }>(initialModal);\n\n const handleBlockedNavigation = useCallback(\n (lastLocation: Location) => {\n if (!modal.confirmedNavigation) {\n setModal({ confirmedNavigation: false, visible: true, lastLocation });\n return false;\n }\n return true;\n },\n [modal]\n );\n\n return (\n <>\n \n {\n if (modal.lastLocation !== null) {\n if (!!beforeNavigate) {\n beforeNavigate();\n }\n\n const pathName: string = modal.lastLocation.pathname;\n const manageChild: string = modal.lastLocation.search;\n \n setTimeout(() => {\n if(manageChild === \"?child\") {\n navigate(`${pathName}${manageChild}`)\n }\n navigate(pathName);\n }, 100);\n\n setModal({ ...initialModal, confirmedNavigation: true });\n } else {\n setModal(initialModal);\n }\n }}\n onCancel={() => setModal(initialModal)}\n >\n

\n Your changes are not saved. Do you still want to leave?\n

\n \n \n );\n};\n\nexport default RouteLeavingGuard;\n","import { Icon, Input } from \"antd\";\nimport React from \"react\";\nimport { SimplifiedAnswer } from \"../../interfaces\";\nimport \"./AnswerOrderable.scss\";\n\ninterface Props {\n item: SimplifiedAnswer;\n removeAnswer: (itemId: number) => void;\n setEditAnswers: React.Dispatch>;\n editAnswers: SimplifiedAnswer[];\n index: number;\n setDeletedAnswerCheck: React.Dispatch>;\n}\n\nconst AnswerOrderable: React.FC = ({\n item,\n removeAnswer,\n setEditAnswers,\n editAnswers,\n index,\n setDeletedAnswerCheck,\n}) => {\n const disabledInput =\n item.type === \"height_weight\" ||\n item.type === \"height\" ||\n item.type === \"weight\";\n return (\n
\n \n {\n // removeAnswer(index);\n setDeletedAnswerCheck(true);\n setEditAnswers(editAnswers.filter((e, i) => i !== index));\n }}\n />\n }\n onChange={(e) => {\n e.persist();\n const answer = e.target.value;\n\n setEditAnswers((state) =>\n state.map((a, i) => {\n if (index === i) {\n a.answer = answer;\n }\n return a;\n }),\n );\n }}\n />\n
\n );\n};\nexport default AnswerOrderable;\n","import { Checkbox, DatePicker, Icon, Input, InputNumber, Modal } from \"antd\";\nimport arrayMove from \"array-move\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n DropResult,\n} from \"react-beautiful-dnd\";\nimport { useLocation } from \"react-router\";\nimport queryString from \"query-string\";\nimport { Milestone, SimplifiedAnswer } from \"../../interfaces\";\nimport { capitalizeText } from \"../../utils/string\";\nimport AnswerOrderable from \"../AnswerOrderable/AnswerOrderable\";\nimport \"./ContentEditAnswers.scss\";\nimport moment from \"moment\";\n\ninterface Props {\n visible: boolean;\n onCancel: (e: React.MouseEvent) => void;\n onOk: (\n title?: string,\n subTitle?: string,\n answers?: SimplifiedAnswer[],\n ) => void;\n title: string;\n subTitle: string;\n answers: SimplifiedAnswer[];\n setSortedAnswers: (orderedAnswers: SimplifiedAnswer[]) => void;\n addCustomAnswer: (answer: string) => void;\n removeAnswer: (index: number) => void;\n isBirthAnnoMilestone: boolean;\n milestoneType?: Milestone;\n setMilestoneDate?: React.Dispatch>;\n milestoneDate?: string;\n setMilestoneAsFirstLine?: React.Dispatch>;\n milestoneAsFirstLine?: boolean;\n}\n\nconst ContentEditAnswers: React.FC = ({\n visible,\n onCancel,\n onOk,\n title,\n subTitle,\n answers,\n setSortedAnswers,\n addCustomAnswer,\n removeAnswer,\n isBirthAnnoMilestone,\n milestoneType,\n setMilestoneDate,\n milestoneDate,\n setMilestoneAsFirstLine,\n milestoneAsFirstLine,\n}) => {\n const [editTitle, setEditTitle] = useState(title);\n const [editSubTitle, setEditSubTitle] = useState(subTitle);\n const [editAnswers, setEditAnswers] = useState([]);\n const [customAnswer, setCustomAnswer] = useState(\"\");\n const [deletedAnswerCheck, setDeletedAnswerCheck] = useState(false);\n const [answersWithoutDeleted, setAnswersWithoutDeleted] = useState<\n SimplifiedAnswer[]\n >([]);\n const location = useLocation();\n const [dateValue, setDateValue] = useState(\n moment(milestoneDate).format(\"MMMM Do, YYYY\"),\n );\n const [checked, setChecked] = useState(milestoneAsFirstLine);\n const [checkHasPressed, setCheckHasPressed] = useState(false);\n\n const [heightAnswer, setHeightAnswer] = useState(\n undefined,\n );\n const [weightAnswer, setWeightAnswer] = useState(\n undefined,\n );\n const [weightAnswerOz, setWeightAnswerOz] = useState(\n undefined,\n );\n\n const isCustomOrFirstEvent: boolean =\n milestoneType?.age_weeks === -800 || milestoneType?.age_weeks === -1;\n let missingContent: any = queryString.parse(location.search).both;\n //we should not show answers of type first event\n useEffect(() => {\n setEditAnswers((state) =>\n !!state.length\n ? state\n : answers\n .filter(\n (a) =>\n a.answer && a.type !== \"first_event\" && a.type !== \"pregnancy\",\n )\n .map((a) => ({ ...a })),\n );\n }, [answers]);\n\n useEffect(() => {\n setChecked(milestoneAsFirstLine);\n }, [milestoneAsFirstLine]);\n\n useEffect(() => {\n if (!deletedAnswerCheck) {\n setAnswersWithoutDeleted(editAnswers);\n }\n }, [editAnswers]);\n\n const onDragEnd = useCallback(\n (result: DropResult) => {\n if (result.source.index !== result.destination?.index) {\n const newOrder = arrayMove(\n [...editAnswers],\n result.source.index,\n result.destination?.index ? result.destination?.index : 0,\n );\n\n setEditAnswers(newOrder);\n }\n },\n [editAnswers, setEditAnswers],\n );\n\n useEffect(() => {\n const toEdit = cloneDeep(editAnswers);\n if (!!missingContent) {\n onOk(editTitle, editSubTitle, toEdit);\n }\n }, [missingContent]);\n\n useEffect(() => {\n if (checked) {\n setEditSubTitle(dateValue);\n }\n }, [checked, dateValue]);\n\n useEffect(() => {\n !isCustomOrFirstEvent ? setChecked(milestoneAsFirstLine) : setChecked(true);\n }, []);\n\n useEffect(() => {\n if (editAnswers.length > 0) {\n const heightWeightAnswers = editAnswers\n .filter((editAnswer) => editAnswer.type === \"height_weight\")\n .map((editAnswer) => editAnswer.answer);\n\n const numericValues = heightWeightAnswers.flatMap((answer) => {\n const matches = answer.match(/\\d+(\\.\\d+)?/g);\n return matches ? matches.map(Number) : [];\n });\n\n if (numericValues.length >= 3) {\n setHeightAnswer(numericValues[0]);\n setWeightAnswer(numericValues[1]);\n setWeightAnswerOz(numericValues[2]);\n } else {\n console.error(\"Not enough numeric values found to set all answers\");\n }\n }\n }, [editAnswers]);\n\n useEffect(() => {\n if (\n heightAnswer !== undefined &&\n weightAnswer !== undefined &&\n weightAnswerOz !== undefined\n ) {\n setEditAnswers((prevEditAnswers) => {\n return prevEditAnswers.map((editAnswer) => {\n if (editAnswer.type === \"height_weight\") {\n const newAnswer = editAnswer.answer\n .replace(/\\d+(\\.\\d+)? inches/, `${heightAnswer} inches`)\n .replace(/\\d+(\\.\\d+)? lbs/, `${weightAnswer} lbs`)\n .replace(/\\d+(\\.\\d+)? oz/, `${weightAnswerOz} oz`);\n return {\n ...editAnswer,\n answer: newAnswer,\n };\n }\n return editAnswer;\n });\n });\n }\n }, [heightAnswer, weightAnswer, weightAnswerOz]);\n\n return (\n {\n setEditAnswers(answersWithoutDeleted);\n setDeletedAnswerCheck(false);\n if (checkHasPressed) {\n setChecked(!checked);\n setMilestoneAsFirstLine!(!checked);\n }\n setCheckHasPressed(false);\n onCancel(e);\n }}\n onOk={() => {\n const answer = customAnswer;\n\n const toEdit = !!customAnswer.length\n ? cloneDeep([\n ...editAnswers,\n {\n answer,\n question_id: Math.floor(Math.random() * 100000 + 10000),\n type: \"custom\",\n },\n ])\n : cloneDeep(editAnswers);\n if (!!answer.length) {\n setEditAnswers((state) => [\n ...state,\n {\n answer,\n question_id: Math.floor(Math.random() * 100000 + 10000),\n type: \"custom\",\n },\n ]);\n }\n\n onOk(editTitle, editSubTitle, toEdit);\n\n if (!!customAnswer) {\n setCustomAnswer(\"\");\n }\n setDeletedAnswerCheck(false);\n }}\n >\n {isCustomOrFirstEvent ? (\n <>\n
\n
\n \n {\n if (milestoneType?.age_weeks === -800) {\n return moment() < current!;\n } else {\n return false;\n }\n }}\n onChange={(value) => {\n if (value && setMilestoneDate) {\n setDateValue(value?.format(\"MMMM Do, YYYY\"));\n setMilestoneDate(value?.format(\"YYYY-MM-DD 00:00:00\"));\n }\n }}\n />\n
\n
\n
\n
\n {\n setCheckHasPressed(true);\n setChecked(!checked);\n if (!!setMilestoneAsFirstLine) {\n setMilestoneAsFirstLine(!checked);\n }\n }}\n >\n Use Milestone Date as First Line{\" \"}\n \n
\n
\n \n ) : null}\n {!checked ? (\n <>\n \n setEditSubTitle(e.target.value)}\n maxLength={30}\n />\n

{editSubTitle.length}/30

\n \n ) : null}\n \n setEditTitle(e.target.value)}\n maxLength={30}\n />\n

{editTitle.length}/30

\n {!isCustomOrFirstEvent ? (\n <>\n \n
\n
\n {\n const value = e !== undefined && e > 99.9 ? 99.9 : e;\n setHeightAnswer(value);\n }}\n />\n \n
\n\n
\n {\n const value = e !== undefined && e > 99 ? 99 : e;\n setWeightAnswer(value);\n }}\n />\n \n
\n\n
\n {\n const value = e !== undefined && e > 15 ? 15 : e;\n setWeightAnswerOz(value);\n }}\n />\n \n
\n
\n \n ) : null}\n \n\n \n \n {(provided) => (\n
\n {editAnswers\n // .filter(answer => answer.answer)\n .map((editAnswer: SimplifiedAnswer, index: number) => (\n \n {(provided) => (\n \n \n
\n )}\n \n ))}\n \n )}\n
\n
\n {\n if (!!customAnswer) {\n let periodString = \"\";\n if (!isBirthAnnoMilestone) periodString = \".\";\n const answer =\n customAnswer.charAt(customAnswer.length - 1) === \".\"\n ? capitalizeText(customAnswer)\n : `${capitalizeText(customAnswer)}${periodString}`;\n\n //addCustomAnswer(answer);\n setEditAnswers((state) => [\n ...state,\n {\n answer,\n // question_id: state.reduce(\n // (small, current) =>\n // current.question_id !== null &&\n // current.question_id >= small\n // ? small - 1\n // : small,\n // -999\n // ),\n question_id: Math.floor(Math.random() * 100000 + 10000),\n type: \"custom\",\n },\n ]);\n setCustomAnswer(\"\");\n }\n }}\n />\n }\n value={customAnswer}\n placeholder=\"Add additional body text\"\n onChange={(e) => setCustomAnswer(e.target.value)}\n />\n \n );\n};\n\nexport default ContentEditAnswers;\n","import { Button, Modal, Tooltip } from \"antd\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport TruncateMarkup from \"react-truncate-markup\";\nimport { highResContent } from \"../../env\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport {\n Background,\n Border,\n Illustration,\n Milestone,\n SimplifiedAnswer,\n} from \"../../interfaces\";\nimport { sagaMiddleware } from \"../../store\";\nimport { getFirstViewOfBabyPageContent } from \"../../store/sagas/user\";\nimport {\n dynamicSize,\n getBrowserAspect,\n getProportionalSize,\n} from \"../../utils/size\";\nimport ContentEditAnswers from \"./ContentEditAnswers\";\nimport queryString from \"query-string\";\nimport { useLocation } from \"react-router\";\nimport { isMobile } from \"react-device-detect\";\n\ninterface Props {\n birthDate: string;\n font: string;\n textAlign: \"start\" | \"center\" | \"end\";\n subTitle: string;\n backgroundSelected?: Background;\n borderSelected?: Border;\n illustrationSelected?: Illustration;\n answersArray: SimplifiedAnswer[];\n textAnswers: string;\n labelUrl?: string;\n showEditButton?: boolean;\n hidden?: boolean; // Loading reference (if user is saving babypage)\n setIsTruncated: (isTruncated: boolean) => void;\n setSortedAnswers: (orderedAnswers: SimplifiedAnswer[]) => void;\n setCustomAnswers: (changedAnswers: SimplifiedAnswer[]) => void;\n addCustomAnswer: (answer: string) => void;\n removeAnswer: (index: number) => void;\n setTitle: React.Dispatch>;\n setSubTitle: React.Dispatch>;\n ignoreMargin?: boolean;\n finish?: boolean;\n milestoneType?: Milestone;\n babyPageId?: any;\n setMilestoneDate?: React.Dispatch>;\n milestoneDate?: string;\n setMilestoneAsFirstLine?: React.Dispatch>;\n milestoneAsFirstLine?: boolean\n}\n\nlet initialSize = {\n title: 13,\n subTitle: 16,\n mtTitle: 2,\n mtSubTitle: 2,\n mbSubTitle: 8,\n myAnswers: 3,\n ptContent: 20,\n pbContent: 20,\n ptContentIl: 10,\n borderHeight: 35,\n illustrationSize: 75,\n};\n\nconst Content: React.FC = ({\n birthDate,\n subTitle,\n font,\n textAlign,\n backgroundSelected,\n borderSelected,\n illustrationSelected,\n answersArray,\n textAnswers,\n labelUrl,\n showEditButton,\n hidden,\n setIsTruncated,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n ignoreMargin,\n finish,\n milestoneType,\n babyPageId,\n setMilestoneDate,\n milestoneDate,\n setMilestoneAsFirstLine,\n milestoneAsFirstLine\n}) => {\n const [width] = useWindowSize();\n const [sizes, setSizes] = useState({ ...initialSize });\n const [isEditButtonHighlighted, setIsEditButtonHighlighted] = useState(false);\n const [\n highlightEditButtonInterval,\n setHighlightEditButtonInterval,\n ] = useState(false);\n const [modalEdit, setModalEdit] = useState(false);\n const contentRef = useRef(null);\n\n useEffect(() => {\n sagaMiddleware.run(\n getFirstViewOfBabyPageContent,\n (err?: string, firstViewOfBabyPageContent?: string) => {\n if (!!err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n\n return;\n }\n\n if (!firstViewOfBabyPageContent) {\n\n let contentMessage: string;\n if (babyPageId) {\n contentMessage = 'Click on the text side to edit the language of your babypage or click on the photo side to edit the photos.';\n } else {\n contentMessage = 'You can click on the pencil icon in the lower left hand corner to edit the page language, title, and sub-title.';\n }\n Modal.info({\n title: \"Hi there!\",\n content:\n contentMessage\n });\n\n setIsEditButtonHighlighted(true);\n setHighlightEditButtonInterval(\n setInterval(() => {\n setIsEditButtonHighlighted((highlight) => !highlight);\n }, 700)\n );\n }\n }\n );\n }, []);\n\n useEffect(() => {\n const getSize = (size: number) =>\n getProportionalSize(\n dynamicSize(size),\n contentRef.current !== null\n ? hidden\n ? highResContent.width\n : contentRef.current.offsetWidth\n : width\n );\n\n let titleInitialSize = initialSize.title;\n let subTitleInitialSize = initialSize.subTitle;\n\n if (font === \"Montserrat\") {\n titleInitialSize = initialSize.title * 0.85;\n subTitleInitialSize = initialSize.subTitle * 0.85;\n } else if (font === \"JosefinSans\") {\n titleInitialSize = initialSize.title * 0.95;\n subTitleInitialSize = initialSize.subTitle * 0.95;\n } else if (font === \"EBGaramond\") {\n titleInitialSize = initialSize.title * 1.05;\n subTitleInitialSize = initialSize.subTitle * 1.05;\n } else if (font === \"BigCaslon\") {\n titleInitialSize = initialSize.title * 1;\n subTitleInitialSize = initialSize.subTitle * 1;\n } else if(font === \"StyleScript-Regular\") {\n titleInitialSize = initialSize.title * 1.3\n subTitleInitialSize = initialSize.subTitle * 1.3;\n } \n\n if(hidden && isBirthAnnoMilestone) {\n titleInitialSize = 120;\n subTitleInitialSize = 100;\n } else if (hidden) {\n titleInitialSize = font === \"StyleScript-Regular\" ? 100 : 80;\n subTitleInitialSize = font === \"StyleScript-Regular\" ? 120 : 100;\n }\n \n const initialTitleSize = getSize(titleInitialSize);\n const initialSubtitleSize = getSize(subTitleInitialSize);\n let newTitleFontSize = initialTitleSize;\n let newSubtitleFontSize = initialSubtitleSize\n\n\n\n setSizes({\n title: titleInitialSize,\n subTitle: subTitleInitialSize,\n mtTitle: hidden ? 20 : initialSize.mtTitle,\n mtSubTitle: hidden ? 0 : initialSize.mtSubTitle,\n mbSubTitle: hidden ? 0 : initialSize.mbSubTitle,\n myAnswers:initialSize.myAnswers,\n ptContent:hidden ? 100 : initialSize.ptContent,\n pbContent:hidden ? 200 :initialSize.pbContent,\n ptContentIl:hidden ? 100 :initialSize.ptContentIl,\n borderHeight:initialSize.borderHeight,\n illustrationSize:hidden ? 380 : initialSize.illustrationSize,\n });\n }, [contentRef, hidden, width, font, subTitle, birthDate]);\n\n const resizeFont = (\n initialFontSize: number,\n startResizingAt: number,\n textLenght: number\n ) => {\n return (\n initialFontSize *\n (startResizingAt /\n (textLenght > startResizingAt ? textLenght : startResizingAt))\n );\n };\n\n const [paddingTop, answerStyle] = useMemo(() => {\n let paddingTop = sizes.ptContent;\n const answerStyle: React.CSSProperties = {\n textAlign,\n maxWidth: \"90%\",\n margin: `0 auto`\n };\n\n if (!!illustrationSelected) {\n paddingTop = sizes.ptContentIl;\n answerStyle.marginBottom = 0;\n }\n return [paddingTop, answerStyle];\n }, [illustrationSelected, sizes, textAlign]);\n\n const contentStyle: React.CSSProperties = {\n // Changing the font-colour for BabyPage content div to avoid the .65 opacity we use globally\n color: \"black\",\n fontFamily: font,\n paddingTop: !labelUrl ? paddingTop : 0,\n backgroundColor: !!backgroundSelected\n ? backgroundSelected.color\n : \"#ffffff\",\n };\n\n if (!textAnswers || !textAnswers.length) {\n contentStyle.display = \"flex\";\n contentStyle.alignItems = \"center\";\n contentStyle.paddingTop = 0;\n }\n\n // Get bigger title / subtitle for \"Birth Announcement\" milestone\n const location = useLocation();\n let milestoneIdCode = queryString.parse(location.search).milestoneId;\n let isBirthAnnoMilestone = false;\n if (\n (!!milestoneIdCode && parseInt(milestoneIdCode.toString()) === 49) ||\n milestoneType?.title === \"Birth Announcement\"\n ) {\n isBirthAnnoMilestone = true;\n\n if(font === \"Montserrat-Regular\") {\n initialSize.title = 17;\n initialSize.subTitle = 14.5;\n } else {\n initialSize.title = 17;\n initialSize.subTitle = 15.5;\n }\n \n\n\n\n contentStyle.lineHeight = 1.4;\n }\n\n const [lines, fsAnswers] = useMemo(() => {\n const getSize = (size: number, contentScale?: number) =>\n getProportionalSize(\n dynamicSize(size),\n contentRef.current !== null\n ? hidden\n ? highResContent.width\n : contentRef.current.offsetWidth\n : width,\n contentScale\n );\n\n const aspect = getBrowserAspect();\n\n let baseSize = 18\n\n if (font === \"Montserrat\") {\n baseSize = baseSize * 0.95;\n } else if (font === \"JosefinSans\") {\n baseSize = baseSize * 1;\n } else if (font === \"EBGaramond\") {\n baseSize = baseSize * 1.05;\n } else if (font === \"BigCaslon\") {\n baseSize = baseSize * 1.05;\n }\n\n let minusIlustration = 0;\n if(illustrationSelected) {\n if(hidden) {\n if (textAnswers.length < 150) {\n minusIlustration = 16\n } else if (textAnswers.length < 200) {\n minusIlustration = 6.5 \n } else {\n minusIlustration = 3.5 \n }\n \n } else if(!hidden) {\n if (textAnswers.length < 150) {\n minusIlustration = 4\n } \n else if (textAnswers.length < 200) {\n minusIlustration = 2\n } else {\n minusIlustration = 1\n }\n \n }\n }\n if (textAnswers.length < 35) {\n return [8, hidden ? \n font === \"StyleScript-Regular\" ?\n 145 - minusIlustration :\n 150 - minusIlustration :\n font === \"StyleScript-Regular\" ?\n baseSize + 4 - minusIlustration :\n baseSize + 7 - minusIlustration];\n } else if (textAnswers.length < 100) {\n return [5, hidden ?\n font === \"StyleScript-Regular\" ?\n 130 - minusIlustration : \n 115 - minusIlustration :\n font === \"StyleScript-Regular\" ?\n baseSize + 1 - minusIlustration :\n baseSize - minusIlustration ];\n } else if (textAnswers.length < 150) {\n return [6, hidden ? \n font === \"StyleScript-Regular\" ? \n 120 - minusIlustration : \n 100 - minusIlustration : \n font === \"StyleScript-Regular\" ?\n baseSize - 1 - minusIlustration :\n baseSize - 2 - minusIlustration];\n } else if (textAnswers.length < 200) {\n return [7, hidden ? \n font === \"StyleScript-Regular\" ? \n 110 - minusIlustration :\n 87 - minusIlustration :\n baseSize - 4 - minusIlustration];\n } else if (textAnswers.length < 250) {\n return [8, hidden ? \n font === \"StyleScript-Regular\" ? \n 102 - minusIlustration :\n 77 - minusIlustration :\n font === \"StyleScript-Regular\" ?\n baseSize - 3 - minusIlustration : \n baseSize - 6 - minusIlustration ];\n } else if (textAnswers.length < 300) {\n return [8, hidden ? font === \"Montserrat\" ?\n 67.5 - minusIlustration :\n font === \"StyleScript-Regular\" ? \n 92 - minusIlustration : \n 72.5 - minusIlustration : \n font === \"StyleScript-Regular\" ? \n baseSize - 3.5 - minusIlustration :\n baseSize - 7.5 - minusIlustration ]; \n } else if (textAnswers.length < 400) {\n return [ 9, hidden ? font === \"Montserrat\" ?\n 56 - minusIlustration :\n font === \"NunitoSans\" ?\n 64 - minusIlustration :\n font === \"JosefinSans\" ?\n 63 - minusIlustration :\n font === \"StyleScript-Regular\" ? \n 80 - minusIlustration :\n 65 - minusIlustration :\n font === \"StyleScript-Regular\" ? \n baseSize - 5 - minusIlustration :\n baseSize - 8.7 - minusIlustration];\n } else if (textAnswers.length < 500) {\n return [ 10, hidden ? font === \"Montserrat\" ?\n 50 - minusIlustration :\n font === \"JosefinSans\" ?\n 56 - minusIlustration :\n font === \"StyleScript-Regular\" ? \n 75 - minusIlustration :\n 58 - minusIlustration :\n font === \"StyleScript-Regular\" ? \n baseSize - 6.5 - minusIlustration :\n baseSize - 9.1 - minusIlustration] ;\n } else if (textAnswers.length < 550) {\n return [11, hidden ? font === \"Montserrat\" ? \n 50 - minusIlustration :\n font === \"StyleScript-Regular\" ? \n 70 - minusIlustration :\n 56 - minusIlustration : \n font === \"StyleScript-Regular\" ? \n baseSize - 7.7 - minusIlustration :\n baseSize - 9 - minusIlustration];\n } else if (textAnswers.length < 600) {\n return [hidden ? 12 : 11, hidden ? font === \"Montserrat\" ? \n 50 - minusIlustration :\n font === \"StyleScript-Regular\" ? \n 72 - minusIlustration :\n 54 - minusIlustration :\n font === \"StyleScript-Regular\" ?\n baseSize - 6.5 - minusIlustration :\n baseSize - 9.5 - minusIlustration];\n } else {\n return [12, hidden ? 51 : baseSize - 9.8];\n }\n }, [contentRef, width, hidden, textAnswers, isBirthAnnoMilestone, font, illustrationSelected]);\n\n const editContent = useCallback(\n (\n editTitle?: string,\n editSubTitle?: string,\n editAnswers?: SimplifiedAnswer[]\n ) => {\n setTitle(editTitle || \"\");\n setSubTitle(editSubTitle || \"\");\n\n if (editAnswers) {\n setSortedAnswers(editAnswers);\n }\n setModalEdit(false);\n },\n [setTitle, setSubTitle, setSortedAnswers]\n );\n\n // If user is saving babypage\n if (hidden) {\n contentStyle.height = highResContent.height;\n contentStyle.width = highResContent.width;\n }\n\n return (\n <>\n \n \n {!!illustrationSelected && !labelUrl && (\n \n )}\n {!labelUrl && (\n \n \n {isBirthAnnoMilestone ? \"\" : subTitle}\n

\n
\n )}\n {!labelUrl && (\n \n \n {birthDate}\n

\n
\n )}\n
\n {!!borderSelected && !labelUrl ? (\n \n ) : null}\n {!!labelUrl ? (\n \"Label\n ) : (\n !!textAnswers && (\n 550 ? 1.3 : 1.5,\n }}\n >\n setIsTruncated(truncated)}\n >\n \n {textAnswers}\n

\n \n
\n )\n )}\n {!illustrationSelected &&\n !!textAnswers &&\n !!borderSelected &&\n !labelUrl ? (\n \n ) : (\n
\n )}\n \n \n {!!showEditButton && (\n \n {\n setModalEdit(true);\n clearInterval(highlightEditButtonInterval);\n setHighlightEditButtonInterval(false);\n setIsEditButtonHighlighted(false);\n }}\n style={{\n boxShadow: isEditButtonHighlighted\n ? \"0px 0px 5px 8px #fbafa5\"\n : \"none\",\n transition: \"0.5s ease-in 0.5 ease-out\",\n }}\n />\n \n )}\n \n setModalEdit(false)}\n onOk={editContent}\n title={birthDate}\n subTitle={subTitle}\n answers={answersArray}\n setSortedAnswers={setSortedAnswers}\n addCustomAnswer={addCustomAnswer}\n removeAnswer={removeAnswer}\n isBirthAnnoMilestone={isBirthAnnoMilestone}\n milestoneType={milestoneType}\n setMilestoneDate={setMilestoneDate}\n milestoneDate={milestoneDate}\n setMilestoneAsFirstLine={setMilestoneAsFirstLine}\n milestoneAsFirstLine={milestoneAsFirstLine}\n />\n \n );\n};\n\nexport default Content;\n","import { Alert, Icon, Tabs } from \"antd\";\nimport React, { useMemo, useState } from \"react\";\nimport { Border, Illustration, SimplifiedAnswer, Background, Milestone } from \"../../interfaces\";\nimport Content from \"./Content\";\nimport PlusAlert from \"./PlusAlert\";\nimport \"./EditBorderIllustration.scss\"\n\ninterface Props {\n textAnswers: string;\n labelUrl?: string;\n font: string;\n subTitle: string;\n birthDate: string;\n textAlign: \"start\" | \"center\" | \"end\";\n borderSelected?: Border;\n illustrationSelected?: Illustration;\n borders: Border[];\n backgroundSelected: Background | undefined;\n illustrations: Illustration[];\n setBorder: (border: Border) => void;\n setIllustration: (illustration: Illustration | undefined) => void;\n isPlus: boolean;\n showPlus: () => void;\n isTruncated: boolean;\n setIsTruncated: (isTruncated: boolean) => void;\n answersArray: SimplifiedAnswer[];\n setSortedAnswers: (orderedAnswers: SimplifiedAnswer[]) => void;\n setCustomAnswers: (changedAnswers: SimplifiedAnswer[]) => void;\n addCustomAnswer: (answer: string) => void;\n removeAnswer: (index: number) => void;\n setTitle: React.Dispatch>;\n setSubTitle: React.Dispatch>;\n milestoneType?: Milestone;\n selectedPlus: { border: boolean; illustration: boolean; layout: boolean };\n setSelectedPlus: ({ border, illustration, layout }: any) => void;\n setMilestoneDate?: React.Dispatch>;\n milestoneDate?: string;\n setMilestoneAsFirstLine?: React.Dispatch>;\n milestoneAsFirstLine?: boolean;\n}\n\nconst EditBorderIllustration: React.FC = ({\n textAnswers,\n labelUrl,\n font,\n subTitle,\n birthDate,\n textAlign,\n borderSelected,\n illustrationSelected,\n borders,\n backgroundSelected,\n illustrations,\n setBorder,\n setIllustration,\n isPlus,\n showPlus,\n isTruncated,\n setIsTruncated,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n milestoneType,\n selectedPlus,\n setSelectedPlus,\n milestoneDate,\n setMilestoneDate,\n setMilestoneAsFirstLine,\n milestoneAsFirstLine\n}) => {\n const [bFilter, setBFilter] = useState(0);\n\n const borderCategories = useMemo(\n () => Array.from(new Set(borders.map((b) => b.category))),\n [borders]\n );\n const bordersFiltered = useMemo(\n () =>\n !!borders && !!borders.length\n ? borders.filter((e) => e.category === borderCategories[bFilter])\n : [],\n [borders, bFilter, borderCategories]\n );\n\n const contentProps = {\n birthDate,\n font,\n subTitle,\n textAlign,\n borderSelected,\n illustrationSelected,\n textAnswers,\n labelUrl,\n showEditButton: true,\n backgroundSelected,\n isTruncated,\n setIsTruncated,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n milestoneType: milestoneType,\n setSelectedPlus,\n milestoneDate,\n setMilestoneDate,\n setMilestoneAsFirstLine,\n milestoneAsFirstLine\n };\n\n /**\n * getBorderCategories\n * @param category\n * @param index\n */\n const getBorderCategories = (category: string, index: number) => {\n const categoryName = category === \"Light\" ? \"Free\" : category;\n return ;\n };\n\n return (\n <>\n
\n
\n
\n \n {isTruncated && (\n
\n \n
\n )}\n
\n
\n \n \n setBFilter(parseInt(key))}\n >\n {borderCategories.map((category: string, index: number) =>\n getBorderCategories(category, index)\n )}\n \n
\n {bordersFiltered.map((border: Border, index: number) => (\n {\n setBorder(border);\n selectedPlus.border =\n !isPlus && border.is_plus ? true : false;\n setSelectedPlus(selectedPlus);\n }}\n />\n ))}\n
\n \n \n
\n {illustrations.map(\n (illustration: Illustration, index: number) => (\n {\n !!illustrationSelected &&\n illustrationSelected.id === illustration.id\n ? setIllustration(undefined)\n : setIllustration(illustration);\n selectedPlus.illustration =\n !isPlus && illustration.is_plus ? true : false;\n setSelectedPlus(selectedPlus);\n }}\n >\n {!isPlus && illustration.is_plus && (\n \n )}\n \n {!!illustrationSelected &&\n illustrationSelected.id === illustration.id && (\n \n )}\n
\n )\n )}\n
\n \n \n
\n \n \n );\n};\n\nexport default EditBorderIllustration;\n","import { Background } from '../interfaces';\n\nconst backgrounds: Background[] = [\n { id: 1, color: '#ffeaea', isPlus: false },\n { id: 2, color: '#eaf2ff', isPlus: false },\n { id: 3, color: '#eafff0', isPlus: false },\n { id: 4, color: '#f5eaff', isPlus: false },\n { id: 5, color: '#fff2ea', isPlus: false },\n { id: 6, color: '#fffcea', isPlus: false },\n { id: 7, color: '#eaffff', isPlus: false },\n { id: 8, color: '#e9e9e9', isPlus: false },\n { id: 9, color: '#ffffff', isPlus: false }\n];\n\nexport default backgrounds;\n","import { getFonts } from \"../store/sagas/font\"\nimport { sagaMiddleware } from \"../store\"\nimport { newFont } from \"../interfaces/font\"\nimport React, { useEffect, useState } from \"react\"\n\n\nexport const Fonts = (isPlus: boolean) => {\n\n const [fonts, setFonts] = useState([])\n useEffect(() => {\n sagaMiddleware.run(\n getFonts,\n isPlus,\n (error: any | null, fonts: newFont[]) => {\n\n try {\n const newFonts = document.createElement('style');\n fonts.map((font) => {\n newFonts.appendChild(document.createTextNode(\"\\\n @font-face {\\\n font-family: \" + font.name + \";\\\n src: url('\" + font.source + \"') format('truetype');\\\n }\\\n \"));\n document.head.appendChild(newFonts);\n })\n \n setFonts(fonts)\n return fonts\n } catch (error) {\n return error;\n } \n \n }\n );\n \n }, [])\n\n return fonts\n}","import React, {useEffect} from \"react\"\nimport { newFont } from \"../../interfaces/font\"\nimport { Select, Spin, Icon } from \"antd\"\n\nconst { Option } = Select;\n\ninterface Props {\n font: string;\n setFont:(font: string, font_id:number) => void;\n fonts: newFont[];\n isPlus: boolean;\n selectedPlus?: { border: boolean; illustration: boolean; layout: boolean; font:boolean; };\n setSelectedPlus?: ({ border, illustration, layout, font }: any) => void;\n setPlusOpen?: React.Dispatch>;\n} \n\n\nconst FontSelect: React.FC = ({\n font,\n setFont,\n fonts,\n isPlus,\n selectedPlus,\n setSelectedPlus,\n setPlusOpen,\n }) => {\n\n const handleSelect = (e:any) => {\n const selected = fonts.find((font) => font.name === e)\n if(!!selected) {\n if(!isPlus && !!selected.plus && !!setPlusOpen) {\n setPlusOpen(true);\n } else {\n setFont(selected.name, selected.id );\n }\n } \n }\n\n useEffect(() => {\n const selectedFont = fonts.filter((currentFont) => currentFont.name === font);\n if(setSelectedPlus && selectedFont.length !== 0) {\n if(selectedFont[0].plus && !isPlus) {\n setSelectedPlus({\n ...selectedPlus,\n font: true,\n })\n } else {\n setSelectedPlus({\n ...selectedPlus,\n font: false,\n })\n } \n }\n }, [font])\n\n return (\n fonts.length === 0 ? ( \n
\n
\n
\n \n }\n />\n
\n
\n
\n ) : ( \n \n {\n\n fonts.map((font, index) => {\n return (\n \n {font.name}\n { isPlus ? null : font.plus ? \n ( PLUS )\n : null\n }\n \n \n )\n })}\n \n )\n )\n}\n\nexport default FontSelect;","import { Alert, Icon, Select, Tabs } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport justCenter from \"../../assets/icons/icon-just-center.png\";\nimport justLeft from \"../../assets/icons/icon-just-left.png\";\nimport justRight from \"../../assets/icons/icon-just-right.png\";\nimport backgrounds from \"../../data/backgrounds\";\nimport {\n Baby,\n Background,\n Border,\n Illustration,\n Milestone,\n SimplifiedAnswer\n} from \"../../interfaces\";\nimport Content from \"./Content\";\nimport { Fonts } from \"../../hooks/Fonts\";\nimport FontSelect from \"../FontSelect/FontSelect\"\nimport queryString from \"query-string\";\nimport { useLocation } from \"react-router\";\n\nconst { Option } = Select;\n\ninterface Props {\n baby?: Baby;\n borderSelected?: Border;\n illustrationSelected?: Illustration;\n backgroundSelected?: Background;\n subTitle: string;\n birthDate: string;\n textAnswers: string;\n labelUrl?: string;\n font: string;\n textAlign: \"start\" | \"center\" | \"end\";\n setFont:(font: string, font_id:number) => void;\n setTextAlign: (textAlign: \"start\" | \"center\" | \"end\") => void;\n setBackground: (background: Background | undefined) => void;\n isPlus: boolean;\n showPlus: () => void;\n isTruncated: boolean;\n setIsTruncated: (isTruncated: boolean) => void;\n answersArray: SimplifiedAnswer[];\n setSortedAnswers: (orderedAnswers: SimplifiedAnswer[]) => void;\n setCustomAnswers: (changedAnswers: SimplifiedAnswer[]) => void;\n addCustomAnswer: (answer: string) => void;\n removeAnswer: (index: number) => void;\n setTitle: React.Dispatch>;\n setSubTitle: React.Dispatch>;\n selectedPlus: { border: boolean; illustration: boolean; layout: boolean; font: boolean; };\n setSelectedPlus: ({ border, illustration, layout, font }: any) => void;\n milestoneType?: Milestone;\n setMilestoneDate?: React.Dispatch>;\n milestoneDate?: string;\n setMilestoneAsFirstLine?: React.Dispatch>;\n milestoneAsFirstLine?: boolean;\n}\n\nconst EditTextBackground: React.FC = ({\n baby,\n subTitle,\n borderSelected,\n illustrationSelected,\n backgroundSelected,\n birthDate,\n textAnswers,\n labelUrl,\n font,\n textAlign,\n setFont,\n setTextAlign,\n setBackground,\n isPlus,\n showPlus,\n isTruncated,\n setIsTruncated,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n milestoneType,\n setSelectedPlus,\n selectedPlus,\n setMilestoneDate,\n milestoneDate,\n setMilestoneAsFirstLine,\n milestoneAsFirstLine\n}) => {\n const contentProps = {\n birthDate,\n subTitle,\n font,\n textAlign,\n borderSelected,\n illustrationSelected,\n showEditButton: true,\n backgroundSelected,\n textAnswers,\n labelUrl,\n isTruncated,\n setIsTruncated,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n milestoneType: milestoneType,\n setSelectedPlus,\n selectedPlus,\n setMilestoneDate,\n milestoneDate,\n setMilestoneAsFirstLine,\n milestoneAsFirstLine\n };\n const fonts = Fonts (isPlus)\n const location = useLocation();\n let missingContent: any = queryString.parse(location.search).both;\n return !!baby ? (\n
\n
\n {/* {!!fonts.length ? \n fonts[0].name !== \"\" ? (\n <>\n

hola

\n

hola

\n \n \n ) : null \n : null}\n */}\n \n {isTruncated && (\n
\n \n
\n )}\n
\n
\n \n \n
\n {backgrounds.map((background: Background, index: number) => (\n \n isPlus || !background.isPlus\n ? !backgroundSelected ||\n background.id !== backgroundSelected.id\n ? setBackground(background)\n : setBackground(undefined)\n : showPlus()\n }\n >\n {!!backgroundSelected &&\n background.id === backgroundSelected.id && (\n \n )}\n
\n ))}\n
\n \n \n
\n \n setTextAlign(\"start\")}\n className={`icon-size clickable bg-secondary-hover ${textAlign ===\n \"start\" && \"bg-secondary\"}`}\n />\n setTextAlign(\"center\")}\n className={`icon-size clickable bg-secondary-hover ${textAlign ===\n \"center\" && \"bg-secondary\"}`}\n />\n setTextAlign(\"end\")}\n className={`icon-size clickable bg-secondary-hover ${textAlign ===\n \"end\" && \"bg-secondary\"}`}\n />\n
\n
\n \n {!!missingContent ? \n
\n Click next and finish the editing proccess to fix this babypage. \n
: null\n }\n
\n \n ) : null;\n};\n\nexport default EditTextBackground;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n loading?:boolean;\n}\n\nconst Layout1A: React.FC = ({ photos, onClickPhoto, loading }) => {\n const checkMissing = () => {\n if(photos[0].base64_cropped !== '' && photos[0].missing) {\n return false\n } else if(photos[0].base64_cropped !== '' && !photos[0].missing){\n return true\n }\n } \n return(\n
\n
\n {!loading ? (\n <>\n
\n \n ) : null} \n { checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(0, photos[0]) : {})}\n className=\"col-12 baby-photo w-100 h-100 p-0\"\n />\n ) : (\n (!!onClickPhoto ? onClickPhoto(0, photos[0]) : {})}\n >\n \n
\n )}\n
\n
\n)};\n\nexport default Layout1A;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport './Layout2A.scss';\nimport { getProportionalSize, dynamicSize } from '../../utils/size';\nimport { highRes } from '../../env';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding: string;\n}\n\nconst SortableItem = SortableElement(\n ({ photo, photoIndex, onClickPhoto, padding = '0px' }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n >\n
\n \n
\n \n )\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout2A: React.FC = ({\n photos,\n onClickPhoto,\n onSortEnd,\n ignoreMargin,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n \n
\n
\n {!loading ? (\n
\n ): null }\n {photos.map((photo: SaveBabyPagePhoto, index: number) => (\n \n ))}\n
\n
\n \n
\n );\n};\n\nexport default Layout2A;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { highRes } from '../../env';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport { dynamicSize, getProportionalSize } from '../../utils/size';\nimport './Layout2B.scss';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding: string;\n}\n\nconst SortableItem = SortableElement(\n ({ photo, photoIndex, onClickPhoto, padding = '0px' }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n >\n
\n \n
\n \n )\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout2B: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n {photos.map((photo: SaveBabyPagePhoto, index: number) => (\n \n ))}\n \n
\n
\n
\n
\n);\n\nexport default Layout2B;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { highRes } from '../../env';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport { dynamicSize, getProportionalSize } from '../../utils/size';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n col: number;\n padding?: string;\n height?: string;\n}\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n col,\n padding = '0px',\n height = '100%',\n }: LayoutProps) => {\n\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n style={{ padding, height }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n style={{ padding, height }}\n >\n
\n \n
\n \n );\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout3A: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default Layout3A;\n","import { Icon } from \"antd\";\nimport React, { useState, useEffect } from \"react\";\nimport axios from \"axios\";\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from \"react-sortable-hoc\";\nimport { highRes } from \"../../env\";\nimport { SaveBabyPagePhoto } from \"../../interfaces\";\nimport { dynamicSize, getProportionalSize } from \"../../utils/size\";\nimport { getBase64 } from \"../../utils/image\";\nimport \"./Layout3B.scss\";\nimport { Background } from \"../../interfaces/background\";\nimport \"./Layout1A.scss\";\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n width?: string;\n photos: SaveBabyPagePhoto[];\n}\n\nexport const getPlaceholderB64 = async () => {\n const placeHolderFile = (\n await axios.get(\n `${\"\"}${\"https://babypage-staging.s3.amazonaws.com/public/missingImagePlaceholder/add_babypage_placeholder.png\"}`,\n { responseType: \"blob\" },\n )\n ).data;\n const placeHolderB64 = await getBase64(placeHolderFile);\n\n return placeHolderB64;\n};\n\nconst arrayBufferToBase64 = (buffer: ArrayBuffer): string => {\n let binary = \"\";\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n};\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = \"0px\",\n height = \"100%\",\n width = \"100%\",\n }: LayoutProps) => {\n const checkMissing = () => {\n if (photo.base64_cropped !== \"\" && photo.missing) {\n return false;\n } else if (photo.base64_cropped !== \"\" && !photo.missing) {\n return true;\n }\n };\n\n const [placeHolderB64, setPlaceHolderB64] = useState(null);\n\n useEffect(() => {\n // Fetch the placeholder when the component mounts\n getPlaceholderB64()\n .then((result) => {\n if (result instanceof ArrayBuffer) {\n // Convert ArrayBuffer to base64 string\n const base64String = arrayBufferToBase64(result);\n setPlaceHolderB64(base64String); // Save the base64 string in state\n } else if (typeof result === \"string\") {\n setPlaceHolderB64(result); // If it's already a string, directly set it\n } else {\n console.warn(\"Unexpected result type:\", result);\n }\n })\n .catch((error) => {\n console.error(\"Error getting placeholder:\", error);\n });\n }, []);\n\n return checkMissing() ? (\n {\n if (onClickPhoto) {\n if (photo) {\n onClickPhoto(photoIndex, photo);\n } else {\n onClickPhoto(photoIndex, {\n base64_cropped: \"\",\n side: \"left\",\n });\n }\n }\n }}\n style={{ padding, height, width }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n style={{ padding, height, width }}\n >\n
\n \n
\n \n );\n },\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer((props) => props.children);\n\nconst Layout3B: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n \n ) : null}\n \n
\n \n \n \n
\n
\n
\n \n );\n};\n\nexport default Layout3B;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport './Layout3C.scss';\nimport { getProportionalSize, dynamicSize } from '../../utils/size';\nimport { highRes } from '../../env';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n width?: string;\n}\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = '0px',\n height = '100%',\n width = '100%',\n }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n style={{ padding, height, width }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n style={{ padding, height, width }}\n >\n
\n \n
\n \n );\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout3C: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n \n \n \n
\n
\n
\n
\n );\n};\n\nexport default Layout3C;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { highRes } from '../../env';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport { dynamicSize, getProportionalSize } from '../../utils/size';\nimport './Layout3D.scss';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n width?: string;\n}\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = '0px',\n height = '100%',\n width = '100%',\n }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n style={{ padding, height, width }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n style={{ padding, height, width }}\n >\n
\n \n
\n \n );\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout3D: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n \n \n \n
\n
\n
\n
\n );\n};\n\nexport default Layout3D;\n","import { Icon } from \"antd\";\nimport React, { useState, useEffect } from \"react\";\nimport axios from \"axios\";\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from \"react-sortable-hoc\";\nimport { highRes } from \"../../env\";\nimport { SaveBabyPagePhoto } from \"../../interfaces\";\nimport { dynamicSize, getProportionalSize } from \"../../utils/size\";\nimport { getBase64 } from \"../../utils/image\";\nimport \"./Layout4A.scss\";\nimport { Background } from \"../../interfaces/background\";\nimport \"./Layout1A.scss\";\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n photos: SaveBabyPagePhoto[];\n}\n\nexport const getPlaceholderB64 = async () => {\n const placeHolderFile = (\n await axios.get(\n `${\"\"}${\"https://babypage-staging.s3.amazonaws.com/public/missingImagePlaceholder/add_babypage_placeholder.png\"}`,\n { responseType: \"blob\" },\n )\n ).data;\n const placeHolderB64 = await getBase64(placeHolderFile);\n\n return placeHolderB64;\n};\n\nconst arrayBufferToBase64 = (buffer: ArrayBuffer): string => {\n let binary = \"\";\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n};\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = \"0px\",\n height = \"100%\",\n }: LayoutProps) => {\n const checkMissing = () => {\n if (photo.base64_cropped !== \"\" && photo.missing) {\n return false;\n } else if (photo.base64_cropped !== \"\" && !photo.missing) {\n return true;\n }\n };\n const [placeHolderB64, setPlaceHolderB64] = useState(null);\n\n useEffect(() => {\n // Fetch the placeholder when the component mounts\n getPlaceholderB64()\n .then((result) => {\n if (result instanceof ArrayBuffer) {\n // Convert ArrayBuffer to base64 string\n const base64String = arrayBufferToBase64(result);\n setPlaceHolderB64(base64String); // Save the base64 string in state\n } else if (typeof result === \"string\") {\n setPlaceHolderB64(result); // If it's already a string, directly set it\n } else {\n console.warn(\"Unexpected result type:\", result);\n }\n })\n .catch((error) => {\n console.error(\"Error getting placeholder:\", error);\n });\n }, []);\n\n return checkMissing() ? (\n {\n if (onClickPhoto) {\n if (photo) {\n onClickPhoto(photoIndex, photo);\n } else {\n onClickPhoto(photoIndex, {\n base64_cropped: \"\",\n side: \"left\",\n });\n }\n }\n }}\n className=\"d-flex align-items-center\"\n style={{ padding, height, width: height }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className=\"d-flex align-items-center\"\n style={{ padding, height, width: height }}\n >\n
\n \n
\n \n );\n },\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer((props) => props.children);\n\nconst Layout4A: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n \n ) : null}\n \n
\n \n \n \n \n
\n
\n
\n \n );\n};\n\nexport default Layout4A;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { highRes } from '../../env';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport { dynamicSize, getProportionalSize } from '../../utils/size';\nimport './Layout4B.scss';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n width?: string;\n}\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = '0px',\n height = '100%',\n width = '100%',\n }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n
\n \n
\n \n );\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout4B: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n \n \n \n \n
\n
\n
\n
\n );\n};\n\nexport default Layout4B;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { highRes } from '../../env';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport { dynamicSize, getProportionalSize } from '../../utils/size';\nimport './Layout4C.scss';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n width?: string;\n}\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = '0px',\n height = '100%',\n width = '100%',\n }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n
\n \n
\n \n );\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout4C: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n \n \n \n \n
\n
\n
\n
\n );\n};\n\nexport default Layout4C;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { highRes } from '../../env';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport { dynamicSize, getProportionalSize } from '../../utils/size';\nimport './Layout4D.scss';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n width?: string;\n}\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = '0px',\n height = '100%',\n width = '100%',\n }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n
\n \n
\n \n );\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout4D: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n \n \n \n \n
\n
\n
\n
\n );\n};\n\nexport default Layout4D;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { highRes } from '../../env';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport { dynamicSize, getProportionalSize } from '../../utils/size';\nimport './Layout4E.scss';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n width?: string;\n}\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = '0px',\n height = '100%',\n width = '100%',\n }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n style={{ padding, height, width }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n style={{ padding, height, width }}\n >\n
\n \n
\n \n );\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout4E: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n \n
\n \n \n \n
\n
\n \n \n
\n
\n
\n \n \n );\n};\n\nexport default Layout4E;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { highRes } from '../../env';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport { dynamicSize, getProportionalSize } from '../../utils/size';\nimport './Layout6A.scss';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n width?: string;\n}\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = '0px',\n height = '100%',\n width = '100%',\n }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n
\n \n
\n \n );\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout6A: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n );\n};\n\nexport default Layout6A;\n","import { Icon } from 'antd';\nimport React from 'react';\nimport {\n SortableContainer,\n SortableElement,\n SortEndHandler,\n} from 'react-sortable-hoc';\nimport { highRes } from '../../env';\nimport { SaveBabyPagePhoto } from '../../interfaces';\nimport { dynamicSize, getProportionalSize } from '../../utils/size';\nimport './Layout6B.scss';\nimport { Background } from '../../interfaces/background';\nimport './Layout1A.scss'\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n ignoreMargin?: boolean;\n loading: boolean;\n backgroundSelected?: Background;\n}\n\ninterface LayoutProps {\n photo: SaveBabyPagePhoto;\n photoIndex: number;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n padding?: string;\n height?: string;\n width?: string;\n}\n\nconst SortableItem = SortableElement(\n ({\n photo,\n photoIndex,\n onClickPhoto,\n padding = '0px',\n height = '100%',\n width = '100%',\n }: LayoutProps) => {\n const checkMissing = () => {\n if(photo.base64_cropped !== '' && photo.missing) {\n return false\n } else if(photo.base64_cropped !== '' && !photo.missing){\n return true\n }\n }\n return checkMissing() ? (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n \n \n ) : (\n (!!onClickPhoto ? onClickPhoto(photoIndex, photo) : {})}\n className='d-flex align-items-center'\n style={{ padding, height, width }}\n >\n
\n \n
\n \n );\n }\n);\n\n// @ts-ignore\nconst SortableLayout = SortableContainer(props => props.children);\n\nconst Layout6B: React.FC = ({\n photos,\n onClickPhoto,\n ignoreMargin,\n onSortEnd,\n loading,\n backgroundSelected,\n}) => {\n return (\n \n
\n {!loading ? (\n
\n ): null }\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n );\n};\n\nexport default Layout6B;\n","import React, { useCallback, useEffect } from \"react\";\nimport { SortEndHandler } from \"react-sortable-hoc\";\nimport { Layout, SaveBabyPagePhoto } from \"../../interfaces\";\nimport Layout1A from \"../Layouts/Layout1A\";\nimport Layout2A from \"../Layouts/Layout2A\";\nimport Layout2B from \"../Layouts/Layout2B\";\nimport Layout3A from \"../Layouts/Layout3A\";\nimport Layout3B from \"../Layouts/Layout3B\";\nimport Layout3C from \"../Layouts/Layout3C\";\nimport Layout3D from \"../Layouts/Layout3D\";\nimport Layout4A from \"../Layouts/Layout4A\";\nimport Layout4B from \"../Layouts/Layout4B\";\nimport Layout4C from \"../Layouts/Layout4C\";\nimport Layout4D from \"../Layouts/Layout4D\";\nimport Layout4E from \"../Layouts/Layout4E\";\nimport Layout6A from \"../Layouts/Layout6A\";\nimport Layout6B from \"../Layouts/Layout6B\";\nimport { highRes } from \"../../env\";\nimport { Background } from \"../../interfaces/background\";\nimport \"./PhotoGallery.scss\";\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n layout: Layout;\n onClickPhoto?: (index: number, photo: SaveBabyPagePhoto) => void;\n onSortEnd: SortEndHandler;\n hidden?: boolean;\n backgroundSelected?: Background;\n htmlElementId?: string;\n isPhotoOnly?: boolean;\n photoOnlyLabelRight?: any;\n labelRight?: string;\n photoOnlyLabelLeft?: any;\n labelLeft?: string;\n fontGeneral?: string;\n labelLeftPosition?: string;\n labelRightPosition?: string;\n browserWidth?: number;\n setLabelLeftLength?: React.Dispatch>;\n setLabelRightLength?: React.Dispatch>;\n setMaxLabelLength?: React.Dispatch>;\n side?: string;\n setSide?: React.Dispatch>\n}\n\nconst PhotoGallery: React.FC = (props: Props) => {\n const renderLayout = useCallback(() => {\n const { layout, photos, onClickPhoto, onSortEnd, hidden } = props;\n const layoutProps = {\n photos,\n onClickPhoto,\n onSortEnd,\n loading: !!hidden,\n backgroundSelected: undefined,\n };\n switch (layout) {\n case \"layout2A\":\n return ;\n case \"layout2B\":\n return ;\n case \"layout3A\":\n return ;\n case \"layout3B\":\n return ;\n case \"layout3C\":\n return ;\n case \"layout3D\":\n return ;\n case \"layout4A\":\n return ;\n case \"layout4B\":\n return ;\n case \"layout4C\":\n return ;\n case \"layout4D\":\n return ;\n case \"layout4E\":\n return ;\n case \"layout6A\":\n return ;\n case \"layout6B\":\n return ;\n default:\n return ;\n }\n }, [props]);\n\n const style: React.CSSProperties = {};\n\n\n if (props.hidden) {\n style.height = highRes.height;\n style.width = highRes.width;\n } else {\n style.height = \"100%\";\n style.width = \"100%\";\n }\n\n style.position = 'relative';\n\n const left_ref:any = React.createRef();\n const right_ref:any = React.createRef();\n const div_ref : any = React.createRef();\n\n useEffect(() => {\n let maxWidth = 250;\n if(div_ref.current && props.setMaxLabelLength) {\n props.setMaxLabelLength(maxWidth);\n }\n if (left_ref.current && props.setLabelLeftLength) {\n props.setLabelLeftLength(left_ref.current.getBoundingClientRect().width)\n }\n\n if(right_ref.current && props.setLabelRightLength) {\n props.setLabelRightLength(right_ref.current.getBoundingClientRect().width)\n }\n }, [props.browserWidth, props.labelLeft, props.labelRight, props.labelLeftPosition, props.labelRightPosition, props.hidden]);\n\n\n return (\n
{\n if(!!props.side && !!props.setSide) {\n props.setSide(props.side)\n }\n }}>\n <>\n {renderLayout()}\n {props.isPhotoOnly && props.labelLeft && props.browserWidth &&(\n = 1024 ? '120%' : \n props.browserWidth >= 768 ? '90%' :\n props.browserWidth >= 540 ? '75%' :\n props.browserWidth >= 414 ? '70%' :\n '65%' \n }}\n >\n

\n {props.labelLeft}\n

\n
\n )}\n {props.isPhotoOnly && props.labelRight && props.browserWidth && (\n = 1024 ? '120%' : \n props.browserWidth >= 768 ? '90%' :\n props.browserWidth >= 540 ? '75%' :\n props.browserWidth >= 414 ? '70%' :\n '65%' \n }}\n >\n

\n {props.labelRight}\n

\n \n )}\n \n \n );\n};\n\nexport default PhotoGallery;\n","import { Button, Icon, Modal, Spin } from 'antd';\nimport 'cropperjs/dist/cropper.css';\nimport React from 'react';\nimport Cropper from 'react-cropper';\nimport './ImageEditModal.scss';\nimport { getBrowserWidth } from \"../../utils/size\"\n\ninterface Props {\n loading: boolean;\n visible: boolean;\n maskClosable:boolean;\n image: string;\n cropperRef: Cropper | null;\n setCropperRef: React.Dispatch>;\n croppedData?: Cropper.Data;\n aspect: number;\n onCropComplete: (\n croppedData: Cropper.Data,\n imageData: Cropper.ImageData\n ) => void;\n onOk: (e: React.MouseEvent) => void;\n onCancel: (e: React.MouseEvent) => void;\n onChangePhoto: (e: React.MouseEvent) => void;\n roundCropper?: boolean;\n}\n\nclass ImageEditModal extends React.PureComponent {\n render() {\n const { visible, maskClosable, onOk, onCancel, roundCropper } = this.props;\n const width = getBrowserWidth();\n\n const modalProps = { visible, maskClosable ,onOk, onCancel };\n\n // Checking if device is iOS to \"force\" img-cropping\n const isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);\n\n const roundClasses = roundCropper ? \"round-cropper\" : \"\"\n\n return (\n \n
\n { roundCropper ? (\n
\n

\n Crop photo\n

\n
\n ) : null\n }\n {\n this.props.setCropperRef(ref);\n }}\n src={this.props.image}\n minCropBoxWidth={15}\n aspectRatio={this.props.aspect}\n data={this.props.croppedData}\n ready={() => {\n if (!this.props.croppedData) {\n this.props.onCropComplete(\n this.props.cropperRef!.getData(),\n this.props.cropperRef!.getImageData()\n );\n } else {\n this.props.cropperRef!.setData(this.props.croppedData);\n }\n }}\n zoom={() =>\n this.props.onCropComplete(\n this.props.cropperRef!.getData(),\n this.props.cropperRef!.getImageData()\n )\n }\n cropend={() => {\n if (this.props.cropperRef!.getData().height >= this.props.cropperRef!.getImageData().naturalHeight - 0.00001) {\n this.props.cropperRef?.setCropBoxData({...this.props.cropperRef.getCropBoxData(), height: this.props.cropperRef.getCropBoxData().height - 0.3})\n } else if (this.props.cropperRef!.getData().width >= this.props.cropperRef!.getImageData().naturalWidth - 0.00001) {\n this.props.cropperRef?.setCropBoxData({...this.props.cropperRef.getCropBoxData(), width: this.props.cropperRef.getCropBoxData().width - 0.3})\n }\n this.props.onCropComplete(\n this.props.cropperRef!.getData(),\n this.props.cropperRef!.getImageData()\n )\n }\n }\n viewMode={2}\n style={{\n height: \n width > 1366 ? 456 :\n width >= 500 ? \n 360 : \n width >= 375 ? \n 310 : \n 280,\n }}\n />\n
\n
\n { roundCropper ? (<>\n
\n

\n Change Photo\n

\n

\n Next\n

\n
\n ) : (\n

\n Scroll to zoom in/out or \n click and drag to reposition.\n

\n )} \n
\n\n {roundCropper ? null : (\n
\n \n {this.props.loading && (\n }\n />\n )}\n {\n if (!!this.props.cropperRef) {\n const cropped = this.props.cropperRef.rotateTo(\n !!this.props.croppedData\n ? this.props.croppedData.rotate === 360\n ? 0\n : this.props.croppedData.rotate + 90\n : 90\n );\n \n this.props.onCropComplete(\n cropped.getData(),\n cropped.getImageData()\n );\n }\n }}\n />\n
\n )}\n \n \n );\n }\n}\n\nexport default ImageEditModal;\n","import { Modal, Button } from \"antd\";\nimport React from \"react\";\nimport bleedExample from \"../../assets/img/bleedtestline.png\"\nimport \"./BleedModal.scss\"\n\ninterface Props {\n visible: boolean;\n onClose: (e: React.MouseEvent) => void;\n}\n\n\nconst BleedModal: React.FC = ({visible, onClose}) => {\n\n if(localStorage.BPcreated) {\n visible = !visible\n }\n\n return (\n \n <>\n
\n \n

\n Be sure to keep important details within the dashed line to avoid trimming during the printing process.\n

\n
\n \n
\n )\n\n}\n\n\nexport default BleedModal;","import { useState, useEffect, useCallback } from \"react\";\nimport { Photo } from \"../interfaces\";\nimport { sagaMiddleware } from \"../store\"\nimport { fetchBabyPhotos } from \"../store/sagas/image\"\n\n\nfunction useFetchPhotos(baby_id: number, page: number) {\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(false);\n const [list, setList] = useState([]);\n const [hasMore, setHasMore ] = useState(false)\n\n const fetchPhotos = useCallback(async () => {\n try {\n setLoading(true);\n setError(false);\n sagaMiddleware.run(\n fetchBabyPhotos,\n baby_id,\n page,\n async(error: string | null, babyPhotos: any ) => {\n if (error !== null || babyPhotos.length===0 ) {\n setLoading(false)\n return;\n }\n try {\n setList((prev) => { \n return [...prev, ...babyPhotos.data]\n });\n \n setHasMore(babyPhotos.has_more_pages)\n setLoading(false)\n } catch(err) {\n setError(true); \n }\n }\n )\n } catch (err) {\n setError(true); \n }\n }, [baby_id, page]);\n\n useEffect(() => {\n fetchPhotos();\n }, [fetchPhotos, page]);\n\n useEffect(() => {\n setList([]);\n }, [baby_id])\n\n return { loading, error, list, hasMore };\n}\n\nexport default useFetchPhotos;","import React from \"react\";\n\nfunction CameraIcon() {\n return (\n \n \n \n );\n}\n\nexport default CameraIcon;\n","import React, { useState, useCallback, useMemo, useRef, useEffect } from 'react';\nimport { Modal, Tabs, Button, Spin, Icon } from 'antd';\nimport { ModalProps } from 'antd/lib/modal';\nimport { AppState } from '../../store';\nimport { connect } from 'react-redux';\nimport './SelectPhotoModal.scss';\nimport { PhotoState } from '../../store/ducks/photos';\nimport { Baby } from '../../interfaces';\nimport useFetchPhotos from \"../../hooks/useFetch\"\nimport CameraIcon from '../Icons/CameraIcon';\nimport { IsMounted } from '../../hooks/IsMounted';\nimport { useWindowSize } from '../../hooks/WindowsSize';\n\ndeclare const FB: any;\nconst { TabPane } = Tabs;\n\ntype Props = ModalProps & {\n inputRef: React.RefObject;\n cameraInputRef?: React.RefObject;\n babySelected?: Baby;\n photos: PhotoState;\n onSelectPhoto: (photoUrl: string) => void;\n setTriggerPhotoUpdate?: React.Dispatch>;\n step?: number;\n isProfile?: boolean;\n setBabyPhotoModal?: React.Dispatch>;\n setAddPhoto?: React.Dispatch>;\n};\n\nconst SelectPhotoModal: React.FC = ({\n inputRef,\n cameraInputRef,\n babySelected,\n photos,\n onSelectPhoto,\n setTriggerPhotoUpdate,\n step,\n isProfile,\n setBabyPhotoModal,\n setAddPhoto,\n ...props\n}) => {\n const [userId, setUserId] = useState(0);\n const [loadingFace, setLoadingFace] = useState(false);\n const [width] = useWindowSize();\n const isMount = IsMounted();\n // eslint-disable-next-line\n const [facePhotos, setFacePhotos] = useState([]);\n // eslint-disable-next-line\n const [nextCursor, setNextCursor] = useState('');\n // eslint-disable-next-line\n // const [loadingGoogle, setLoadingGoogle] = useState(false);\n // eslint-disable-next-line\n // const [googlePhotos, setGooglePhotos] = useState([]);\n\n const [page, setPage] = useState(1);\n const { loading, error, list, hasMore } = useFetchPhotos(!!babySelected ? babySelected.id : 0, page);\n const observer = useRef();\n\n useEffect(() => {\n if (isMount) return; \n else {\n setPage(1);\n }\n }, [babySelected?.id]) \n\n const lastPhotoRef = useCallback(node => {\n if (loading) return;\n if (observer.current) observer.current.disconnect();\n observer.current = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting && hasMore) {\n setPage(prev => prev + 1);\n }\n });\n if (node) observer.current.observe(node); \n }, [loading, hasMore]\n );\n const getFacebookPhotos = useCallback(\n (firstUserId?: number) => {\n try {\n if (!loadingFace) setLoadingFace(true);\n\n const options: any = {\n fields: 'images',\n };\n\n if (!!nextCursor && nextCursor !== '') {\n options.after = nextCursor;\n }\n\n FB.api(\n `/${firstUserId || userId}/photos/uploaded`,\n (photosResponse: any) => {\n setNextCursor(\n !!photosResponse &&\n !!photosResponse.paging &&\n !!photosResponse.paging.cursors &&\n !!photosResponse.paging.cursors.after\n ? photosResponse.paging.cursors.after\n : ''\n );\n\n setLoadingFace(false);\n\n if (!!photosResponse.data) {\n setFacePhotos(curr => [\n ...curr,\n ...photosResponse.data.map((e: any) => e.images[0].source),\n ]);\n }\n },\n options\n );\n } catch (error) {\n setLoadingFace(false);\n Modal.error({\n title: 'Error',\n content:\n 'Sorry, Facebook login is not available now, try again later',\n });\n }\n },\n [nextCursor, userId, loadingFace]\n );\n\n const checkFacebookLogin = useCallback(() => {\n if (!!FB) {\n setLoadingFace(true);\n\n let timeoutHandler = setTimeout(() => {\n setLoadingFace(false);\n }, 60000);\n\n try {\n FB.getLoginStatus((response: any) => {\n if (response.status === 'connected') {\n getFacebookPhotos(response.authResponse.userID);\n setUserId(response.authResponse.userID);\n } else {\n FB.login(\n (response: any) => {\n clearTimeout(timeoutHandler);\n if (response.status === 'connected') {\n getFacebookPhotos(response.authResponse.userID);\n setUserId(response.authResponse.userID);\n } else {\n setLoadingFace(false);\n\n if (response.status === 'not_authorized') {\n Modal.error({\n title: 'Error',\n content:\n 'When you sign in with Facebook please follow all steps and give permission for BabyPage App',\n });\n }\n }\n },\n { scope: 'public_profile,email,user_photos', auth_type: 'reauthenticate' }\n );\n }\n }, true);\n } catch (error) {\n setLoadingFace(false);\n Modal.error({\n title: 'Error',\n content:\n 'Sorry, Facebook login is not available now, try again later',\n });\n }\n }\n }, [getFacebookPhotos]);\n\n // const getGooglePhotos = useCallback(() => {}, []);\n let titleMarginClass = isProfile ? \"p-3 w-15\" : null;\n\n const uploadButtons = useMemo(() => {\n if(!isProfile) {\n return (\n {\n if (!!inputRef.current && !!props.onCancel) {\n inputRef.current.click();\n if(step!== undefined && step>=2 && setTriggerPhotoUpdate !== undefined) {\n setTriggerPhotoUpdate(true);\n } \n props.onCancel(e);\n }\n }}\n className={`mx-auto d-table my-3 ${titleMarginClass}`}\n >\n UPLOAD NEW\n \n )\n } else {\n if(width <= 480) {\n return (\n
\n {\n if (!!inputRef.current && !!props.onCancel) {\n inputRef.current.click(); \n props.onCancel(e);\n }\n }}\n className={`mx-2 d-table my-3 ${titleMarginClass}`}\n >\n +\n \n \n
\n )\n } else {\n return (\n {\n if (!!inputRef.current && !!props.onCancel) {\n inputRef.current.click();\n if(step!== undefined && step>=2 && setTriggerPhotoUpdate !== undefined) {\n setTriggerPhotoUpdate(true);\n } \n props.onCancel(e);\n }\n }}\n className={`mx-auto d-table my-3 ${titleMarginClass}`}\n >\n +\n \n )\n }\n }\n\n },[width])\n\n return (\n \n { isProfile ? \n
\n

\n Upload Photo\n

\n
:\n null \n }\n { uploadButtons } \n \n \n {!!list.length ? (\n
\n {list.map((photo, index) => { \n if(list.length === index + 1) {\n return (\n <>\n {\n if (!!props.onCancel) {\n onSelectPhoto(photo.photo);\n if(step!== undefined && step>=2 && setTriggerPhotoUpdate !== undefined) {\n setTriggerPhotoUpdate(true);\n } \n props.onCancel(e);\n }\n }}\n />\n { !!loading &&
\n
\n \n }\n />\n
}\n \n )\n } else {\n return (\n {\n if (!!props.onCancel) {\n onSelectPhoto(photo.photo);\n if(step!== undefined && step>=2 && setTriggerPhotoUpdate !== undefined) {\n setTriggerPhotoUpdate(true);\n }\n props.onCancel(e);\n }\n }}\n />\n )\n } \n })\n }\n \n
\n ) : list.length === 0 && loading ? (\n <>\n
\n \n }\n />\n
\n \n \n ) : list.length === 0 ? \n

\n No photos previously uploaded.\n

\n : null\n }\n {isProfile && setBabyPhotoModal ? \n {\n if(!!setAddPhoto) {\n setAddPhoto(false)\n } else {\n setBabyPhotoModal(false)\n }\n }}\n className={`mx-auto d-table mt-4 mb-2 w-75 light-btn`}\n >\n Cancel Upload\n : \n null \n }\n \n\n
\n \n {!!facePhotos.length ? (\n
\n {facePhotos.map((photo, index) => (\n {\n if (!!props.onCancel) {\n onSelectPhoto(photo);\n if(step!== undefined && step>=2 && setTriggerPhotoUpdate !== undefined) {\n setTriggerPhotoUpdate(true);\n } \n props.onCancel(e);\n }\n }}\n />\n ))}\n {!!nextCursor && (\n getFacebookPhotos()}\n className='w-100 my-3'\n >\n Load more\n \n )}\n
\n ) : loadingFace ? (\n
\n \n }\n />\n
\n ) : (\n \n GET FACEBOOK PHOTOS\n \n )}\n
\n {/* \n {!!googlePhotos.length ? (\n
\n {googlePhotos.map((photo, index) => (\n {\n if (!!props.onCancel) {\n onSelectPhoto(photo);\n props.onCancel(e);\n }\n }}\n />\n ))}\n
\n ) : loadingGoogle ? (\n
\n \n }\n />\n
\n ) : (\n \n GET GOOGLE PHOTOS\n \n )}\n
*/}\n
\n
\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n photos: state.photos,\n babySelected: state.baby.babySelected,\n});\n\nexport default connect(mapStateToProps)(SelectPhotoModal);\n","import { useRef, useEffect } from 'react';\n\nexport const IsMounted = () => {\n const isMountRef = useRef(true);\n useEffect(() => {\n isMountRef.current = false;\n }, []);\n return isMountRef.current;\n};","import { Popover, Tabs, Select } from 'antd';\nimport arrayMove from \"array-move\";\nimport { isEqual } from \"lodash\";\nimport React, { useCallback, useMemo, useRef, useState, useEffect } from \"react\";\nimport Cropper from \"react-cropper\";\nimport { SortEnd, SortEvent } from \"react-sortable-hoc\";\nimport { Icon, Spin, Input, Button } from \"antd\";\nimport './Finish.scss';\nimport {\n Background,\n Border,\n Illustration,\n Layout,\n SaveBabyPagePhoto,\n SimplifiedAnswer,\n SaveBabyPage,\n Milestone,\n} from \"../../interfaces\";\nimport {\n finishCrop,\n initialPhotoState,\n photoClick,\n PhotoSelected,\n selectImage,\n selectImageURL,\n} from \"../../pages/BabyPage/Save/SaveHelper\";\nimport PhotoGallery from \"../Gallery/PhotoGallery\";\nimport ImageEditModal from \"../ImageEditModal/ImageEditModal\";\nimport BleedModal from \"../BleedModal/BleedModal\"\nimport Content from \"./Content\";\nimport SelectPhotoModal from \"./SelectPhotoModal\";\nimport labelBottomCenter from '../../assets/img/labelBottomCenter.png';\nimport labelBottomLeft from '../../assets/img/labelBottomLeft.png';\nimport labelBottomRight from '../../assets/img/labelBottomRight.png';\nimport labelTopCenter from '../../assets/img/labelTopCenter.png';\nimport labelTopLeft from '../../assets/img/labelTopLeft.png';\nimport labelTopRight from '../../assets/img/labelTopRight.png';\nimport { getBrowserWidth } from \"../../utils/size\";\nimport { Fonts } from \"../../hooks/Fonts\";\nimport FontSelect from \"../FontSelect/FontSelect\"\nimport { DatePicker } from 'antd';\nimport moment from 'moment';\n\nconst { Option } = Select;\n\ninterface Props {\n font: string;\n textAlign: \"start\" | \"center\" | \"end\";\n subTitle: string;\n birthDate: string;\n backgroundSelected?: Background;\n borderSelected?: Border;\n illustrationSelected?: Illustration;\n textAnswers: string;\n labelUrl?: string;\n setPhotos: (\n photos: SaveBabyPagePhoto[],\n layout: Layout,\n forceRecrop?: boolean\n ) => void;\n photos: SaveBabyPagePhoto[];\n layout: Layout;\n loading: boolean;\n isTruncated: boolean;\n setIsTruncated: (isTruncated: boolean) => void;\n answersArray: SimplifiedAnswer[];\n setSortedAnswers: (orderedAnswers: SimplifiedAnswer[]) => void;\n setCustomAnswers: (changedAnswers: SimplifiedAnswer[]) => void;\n addCustomAnswer: (answer: string) => void;\n removeAnswer: (index: number) => void;\n setTitle: React.Dispatch>;\n setSubTitle: React.Dispatch>;\n ageWeeks: number;\n milestoneType?: Milestone;\n updateBPStep: React.Dispatch>;\n photosRightSide: SaveBabyPagePhoto[];\n layoutRightSide: Layout;\n babyPage: SaveBabyPage;\n setBabyPage: React.Dispatch>;\n babyPageId?: any;\n setTriggerPhotoUpdate?: React.Dispatch>;\n step?: number;\n setMilestoneDate?: React.Dispatch>;\n milestoneDate?: string;\n}\n\nconst Finish: React.FC = ({\n subTitle,\n birthDate,\n font,\n textAlign,\n backgroundSelected,\n borderSelected,\n illustrationSelected,\n textAnswers,\n labelUrl,\n setPhotos,\n photos,\n layout,\n loading,\n isTruncated,\n setIsTruncated,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n ageWeeks,\n milestoneType,\n updateBPStep,\n photosRightSide,\n layoutRightSide,\n babyPage,\n setBabyPage,\n babyPageId,\n setTriggerPhotoUpdate,\n step,\n setMilestoneDate,\n milestoneDate\n}) => {\n const inputRef = useRef(null);\n const [imgLoading, setImgLoading] = useState(false);\n const [cropperRef, setCropperRef] = useState(null);\n const [modalOpen, setModalOpen] = useState(false);\n const [photoSelected, setPhotoSelected] = useState(\n initialPhotoState\n );\n \n const isPhotoOnly = milestoneType?.title === \"Photo-Only Page\";\n const [photoOnlyLabelLeft, setPhotoOnlyLabelLeft] = useState(babyPage?.labelStatePositionLeft ? babyPage.labelStatePositionLeft : {\n display: \"flex\", \n justifyContent: \"flex-start\",\n alignItems:\"flex-end\"\n });\n const [photoOnlyLabelRight, setPhotoOnlyLabelRight] = useState(babyPage?.labelStatePositionRight ? babyPage.labelStatePositionRight :{\n display: \"flex\", \n justifyContent: \"flex-end\",\n alignItems:\"flex-end\",\n });\n\n const [labelLeft, setLabelLeft] = useState(babyPage?.label_left_text ? babyPage.label_left_text : \"\");\n const [labelRight, setLabelRight] = useState(babyPage?.label_right_text ? babyPage.label_right_text : \"\");\n const [fontGeneral, setFontGeneral] = useState(babyPage.font);\n const [disabledLeft, setDisabledLeft] = useState(babyPage.label_left_text === null ? true : false);\n const [disabledRight, setDisabledRight] = useState(babyPage.label_right_text === null ? true : false);\n const [maxLabelLength, setMaxLabelLength] = useState(0);\n const [labelRightLength, setLabelRightLength] = useState(0);\n const [labelLeftLength, setLabelLeftLength] = useState(0);\n const [side, setSide] = useState(\"left\");\n const [bleedModalVisible, setBleedModalVisible] = useState(true);\n\n const onSortEnd = useCallback(\n (sort: SortEnd, _: SortEvent) => {\n if (sort.oldIndex !== sort.newIndex) {\n const newPhotos = arrayMove([...photos], sort.oldIndex, sort.newIndex);\n const side = photos[0].side;\n setPhotos(newPhotos, side === \"left\" ? layout : layoutRightSide, true);\n }\n },\n [photos, setPhotos, layout, layoutRightSide]\n );\n\n const fonts = Fonts (isPhotoOnly)\n\n const onSelectImage = useCallback(\n (e: React.ChangeEvent) =>\n selectImage(\n e,\n photoSelected,\n photoSelected.side === \"left\" ? photos : photosRightSide,\n setPhotos,\n photoSelected.side === \"left\" ? layout : layoutRightSide,\n setPhotoSelected,\n inputRef,\n setImgLoading\n ),\n [layout, photoSelected, photos, setPhotos, inputRef, photosRightSide, layoutRightSide]\n );\n\n\n const onSelectImageURL = useCallback(\n (imageUrl: string) =>{\n selectImageURL(\n imageUrl,\n photoSelected,\n side === \"left\" ? photos : photosRightSide,\n setPhotos,\n photoSelected.side === \"left\" ? layout : layoutRightSide,\n setPhotoSelected,\n inputRef,\n setImgLoading,\n side\n )},\n [layout, photoSelected, photos, inputRef, layoutRightSide, photosRightSide, side]\n );\n\n const onClickPhoto = useCallback(\n (index: number, photo: SaveBabyPagePhoto) => {\n photoClick(\n index,\n photo,\n inputRef,\n photo.side === \"left\" ? layout : layoutRightSide,\n setPhotoSelected,\n setModalOpen,\n step,\n side\n)},\n [layout, inputRef, layoutRightSide]\n );\n\n\n const onCropComplete = useCallback(\n (croppedData: Cropper.Data, imageData: Cropper.ImageData) => {\n if (\n !!croppedData &&\n (!photoSelected.croppedData ||\n !isEqual(croppedData, photoSelected.croppedData))\n ) {\n setPhotoSelected((state) => ({\n ...state,\n croppedData,\n imageData,\n }));\n }\n },\n [photoSelected]\n );\n\n const onFinishCrop = useCallback(\n async (_: React.MouseEvent) => {\n if (cropperRef !== null) {\n finishCrop(\n cropperRef,\n photoSelected,\n photoSelected.side === \"left\" ? photos : photosRightSide,\n setPhotos,\n photoSelected.side === \"left\" ? layout : layoutRightSide,\n setImgLoading,\n setPhotoSelected\n );\n }\n },\n [cropperRef, photoSelected, photos, setPhotos, layout, photosRightSide, layoutRightSide]\n );\n\n // Set Font & Set Text Alignment\n // Set Font Information\n const setFont = useCallback((font: string, font_id: number) => {\n setBabyPage((state) => ({\n ...state,\n font,\n font_id,\n }));\n setFontGeneral(font);\n }, []);\n\n const browserWidth = getBrowserWidth();\n const labelButtons = [\n {\n label: \"Top Left\",\n labelToSave: \"top-left\",\n icon: ,\n width: \"45%\",\n position: { display: \"flex\", justifyContent: \"flex-start\", alignItems: \"flex-start\" },\n },\n {\n label: \"Top Center\",\n labelToSave: \"top-center\",\n icon: ,\n width: \"45%\",\n position: { display: \"flex\", justifyContent: \"center\", alignItems: \"flex-start\" },\n },\n {\n label: \"Top Right\",\n labelToSave: \"top-right\",\n icon: ,\n width: \"45%\",\n position: { display: \"flex\", justifyContent: \"flex-end\", alignItems: \"flex-start\" },\n },\n {\n label: \"Bottom Left\",\n labelToSave: \"bottom-left\",\n icon: ,\n width: \"45%\",\n position: { display: \"flex\", justifyContent: \"flex-start\", alignItems: \"flex-end\" },\n },\n {\n label: \"Bottom Center\",\n labelToSave: \"bottom-center\",\n icon: ,\n width: \"45%\",\n position: { display: \"flex\", justifyContent: \"center\", alignItems: \"flex-end\" },\n },\n {\n label: \"Bottom Right\",\n labelToSave: \"bottom-right\",\n icon: ,\n width: \"45%\",\n position: { display: \"flex\", justifyContent: \"flex-end\", alignItems: \"flex-end\" },\n },\n { label: \"No Label\", position: { display: \"none\" }, labelToSave:\"no-label\" },\n ];\n const photoProps = {\n photos,\n layout,\n onSortEnd,\n onClickPhoto,\n hidden: loading,\n backgroundSelected,\n isPhotoOnly,\n labelLeft,\n photoOnlyLabelLeft,\n fontGeneral,\n browserWidth,\n setLabelLeftLength,\n setMaxLabelLength,\n labelLeftPosition: babyPage.label_left_position,\n side: \"left\",\n setSide\n };\n\n const photoRightProps = {\n photos: photosRightSide || [],\n layout: layoutRightSide || [],\n onSortEnd,\n onClickPhoto,\n hidden: loading,\n backgroundSelected,\n isPhotoOnly,\n labelRight,\n photoOnlyLabelRight,\n fontGeneral,\n browserWidth,\n setLabelRightLength,\n labelRightPosition: babyPage.label_right_position,\n side: \"right\",\n setSide\n };\n\n const contentProps = {\n birthDate,\n font,\n textAlign,\n backgroundSelected,\n borderSelected,\n illustrationSelected,\n textAnswers,\n labelUrl,\n hidden: loading,\n isTruncated,\n setIsTruncated,\n subTitle,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n ageWeeks,\n ignoreMargin: true,\n finish: true,\n milestoneType,\n babyPageId,\n setMilestoneDate,\n milestoneDate\n };\n const marginBottomClass = isPhotoOnly ? \"\" : \"default-bp-margin-bottom\"\n const difference = useMemo(() => {\n return browserWidth >= 1024 ? 35 : \n browserWidth >= 768 ? 28 :\n browserWidth >= 540 ? 25 :\n browserWidth >= 414 ? 23 :\n 20\n\n }, [browserWidth])\n\n const leftLabelButtons = labelButtons.filter(item => {\n if (item.labelToSave === 'top-right' || item.labelToSave === 'bottom-right') {\n return false\n }\n return true\n });\n\n const rightLabelButtons = labelButtons.filter(item => {\n if(item.labelToSave === 'top-left' || item.labelToSave === 'bottom-left'){\n return false\n }\n return true\n });\n\n return loading && !isPhotoOnly? (\n <>\n \n \n \n
\n \n \n ) : (\n <>\n
\n

\n To reposition your photo(s) click on a photo.\n

\n \n
\n
\n {imgLoading && (\n
\n \n }\n />\n
\n )}\n
\n\n \n \n \n
\n\n {isPhotoOnly ? (\n
\n \n
\n ) : (\n {\n updateBPStep({ valid: true, step: 2 });\n }}\n >\n \n
\n )}\n \n\n {isPhotoOnly && (\n\n \n \n
\n
\n \n
\n \n {\n if(value && setMilestoneDate) {\n setSubTitle(value?.format(\"MMMM Do, YYYY\"))\n setMilestoneDate(value?.format(\"YYYY-MM-DD 00:00:00\"))\n }\n }}\n />\n \n
\n \n {\n if(maxLabelLength - difference <= labelLeftLength && maxLabelLength !== 0) {\n \n } else {\n setLabelLeft(e.target.value); \n setBabyPage({\n ...babyPage,\n label_left_text: e.target.value\n });\n }\n }}\n onKeyDown={(e) => {\n if(e.keyCode === 8 && maxLabelLength - difference <= labelLeftLength && maxLabelLength !== 0 ) {\n setLabelLeft(labelLeft.slice(0, labelLeft.length - 1))\n }\n }}\n maxLength={20}\n />\n
\n
\n
\n
Label Position
\n
{labelLeft.length}/20
\n
\n
\n
\n {leftLabelButtons.map((button, index) => {\n const { label, icon, width, position, labelToSave } = button;\n return (\n <>\n { browserWidth >= 1024 ? (\n \n

{label}

\n
\n )} trigger=\"hover\">\n {\n setPhotoOnlyLabelLeft({ ...position });\n setBabyPage({\n ...babyPage,\n label_left_position: labelToSave,\n labelStatePositionLeft: position,\n label_left_text: babyPage.label_left_text === null ? \"\" : babyPage.label_left_text\n })\n setDisabledLeft(false);\n if(button.labelToSave === \"no-label\") {\n setBabyPage({\n ...babyPage,\n label_left_text: null,\n label_left_position: labelToSave,\n labelStatePositionLeft: undefined,\n })\n setLabelLeft(\"\");\n setDisabledLeft(true);\n }\n }}\n style={{ \n width: width ? width : \"90%\" ,\n height: label === 'No Label' ? 20 : 60,\n backgroundColor: ((labelToSave === babyPage.label_left_position && babyPage.label_left_text !== null) || \n (labelToSave === \"no-label\" && babyPage.label_left_text === null)) \n ? \"#f8aba0\" : \"#ffffff\" \n }}\n key={index}>\n {label === 'No Label' ? label : icon}\n \n \n ) : (\n {\n setPhotoOnlyLabelLeft({ ...position });\n setBabyPage({\n ...babyPage,\n label_left_position: labelToSave,\n labelStatePositionLeft: position,\n label_left_text: babyPage.label_left_text === null ? \"\" : babyPage.label_left_text\n })\n setDisabledLeft(false);\n if(button.labelToSave === \"no-label\") {\n setBabyPage({\n ...babyPage,\n label_left_text: null,\n label_left_position: labelToSave,\n labelStatePositionLeft: undefined,\n })\n setLabelLeft(\"\");\n setDisabledLeft(true);\n }\n }}\n style={{ \n width: width ? width : \"90%\" ,\n height: label === 'No Label' ? 20 : 60,\n backgroundColor: ((labelToSave === babyPage.label_left_position && babyPage.label_left_text !== null) || \n (labelToSave === \"no-label\" && babyPage.label_left_text === null)) \n ? \"#f8aba0\" : \"#ffffff\" }}\n key={index}\n >\n {label === 'No Label' ? label : icon}\n \n )\n }\n \n );\n })}\n
\n
\n
\n \n \n
\n \n
\n
\n \n
\n \n {\n if(maxLabelLength - difference <= labelRightLength && maxLabelLength !== 0) {\n \n } else {\n setLabelRight(e.target.value); \n setBabyPage({\n ...babyPage,\n label_right_text: e.target.value\n });\n }\n }}\n onKeyDown={(e) => {\n if(e.keyCode === 8 && maxLabelLength - difference <= labelRightLength && maxLabelLength !== 0 ) {\n setLabelRight(labelRight.slice(0, labelRight.length - 1))\n }\n }}\n maxLength={20}\n />\n
\n
\n
Label Position
\n
{labelRight.length}/20
\n
\n
\n
\n {rightLabelButtons.map((button, index) => {\n const { label, icon, width, position, labelToSave } = button;\n return (\n <>\n { browserWidth >= 1024 ? (\n \n

{label}

\n
\n )} trigger=\"hover\">\n {\n setPhotoOnlyLabelRight({ ...position });\n setBabyPage({\n ...babyPage,\n label_right_position: labelToSave,\n labelStatePositionRight: position,\n label_right_text: babyPage.label_right_text === null ? \"\" : babyPage.label_right_text\n })\n setDisabledRight(false);\n if(button.labelToSave === \"no-label\") {\n setBabyPage({\n ...babyPage,\n label_right_text: null,\n label_right_position: labelToSave,\n labelStatePositionRight: undefined, \n })\n setLabelRight(\"\");\n setDisabledRight(true);\n }\n }}\n style={{ width: width ? width : \"90%\" ,\n height: label === 'No Label'? 20 : 60,\n backgroundColor: ((labelToSave === babyPage.label_right_position && babyPage.label_right_text !== null) || \n (labelToSave === \"no-label\" && babyPage.label_right_text === null)) \n ? \"#f8aba0\" : \"#ffffff\" }} \n key={index}\n >\n {label === 'No Label' ? label : icon}\n \n \n ) : (\n {\n setPhotoOnlyLabelRight({ ...position });\n setBabyPage({\n ...babyPage,\n label_right_position: labelToSave,\n labelStatePositionRight: position,\n label_right_text: babyPage.label_right_text === null ? \"\" : babyPage.label_right_text\n })\n setDisabledRight(false);\n if(button.labelToSave === \"no-label\") {\n setBabyPage({\n ...babyPage,\n label_right_text: null,\n label_right_position: labelToSave,\n labelStatePositionRight: undefined, \n })\n setLabelRight(\"\");\n setDisabledRight(true);\n }\n }}\n style={{ width: width ? width : \"90%\" ,\n height: label === 'No Label'? 20 : 60,\n backgroundColor: ((labelToSave === babyPage.label_right_position && babyPage.label_right_text !== null) || \n (labelToSave === \"no-label\" && babyPage.label_right_text === null)) \n ? \"#f8aba0\" : \"#ffffff\" }} \n key={index}\n >\n {label === 'No Label' ? label : icon}\n \n )}\n \n \n );\n })}\n
\n
\n
\n \n \n
\n
\n )}\n { isPhotoOnly ? (\n
\n \n \n
\n ) : null }\n \n \n \n\n \n\n setPhotoSelected(initialPhotoState)}\n onChangePhoto={() => {\n setPhotoSelected({...photoSelected, edit: false})\n setModalOpen(true)\n }}\n />\n setModalOpen(false)}\n inputRef={inputRef}\n onSelectPhoto={onSelectImageURL}\n setTriggerPhotoUpdate={setTriggerPhotoUpdate}\n step={step}\n />\n {\n setBleedModalVisible(false);\n }}>\n\n \n \n );\n};\n\nexport default Finish;\n","import { Baby, QuestionItem } from \"../interfaces\";\nimport { capitalizeTexts, replaceAll, capitalizeRawPronoun } from \"./string\";\n\nexport const MALE_PRONOUN = \"he\";\nexport const FEMALE_PRONOUN = \"she\";\nexport const MALE_POSSESSIVE_PRONOUN = \"his\";\nexport const FEMALE_POSSESSIVE_PRONOUN = \"her\";\nexport const MALE_CONTRACTION_PRONOUN = \"he's\";\nexport const FEMALE_CONTRACTION_PRONOUN = \"she's\";\nexport const MALE_REFLEXIVE_PRONOUN = \"himself\";\nexport const FEMALE_REFLEXIVE_PRONOUN = \"herself\";\nexport const MALE_ACCUSATIVE_PRONOUN = \"him\";\nexport const FEMALE_ACCUSATIVE_PRONOUN = \"her\";\nexport const RAW_PRONOUN = \"[HE/SHE]\";\nexport const RAW_POSSESSIVE_PRONOUN = \"[HIS/HER]\";\nexport const RAW_CONTRACTION_PRONOUN = \"[HE'S/SHE'S]\";\nexport const RAW_REFLEXIVE_PRONOUN = \"[HIMSELF/HERSELF]\";\nexport const RAW_ACCUSATIVE_PRONOUN = \"[HIM/HER]\";\nexport const RAW_NAME_SPACE = \"[BABY NAME]\";\nexport const RAW_NAME = \"[BABYNAME]\";\nexport const RAW_ANSWER = \"[ANSWER]\";\nexport const RAW_WEIGHTLBS = \"[WEIGHTLBS]\";\nexport const RAW_WEIGHTOZ = \"[WEIGHTOZ]\";\nexport const RAW_HEIGHT = \"[HEIGHT]\";\nexport const POSITIVE_INVISIBLE_ANSWERS = [\n \"yes\",\n \"yes.\",\n \"yes!\",\n \"yep\",\n \"yep.\",\n \"yep!\",\n \"yap\",\n \"yap.\",\n \"yap!\",\n \"did\",\n \"Barely\",\n \"Almost\"\n];\nexport const NEGATIVE_ANSWERS = [\n \"not yet\",\n \"not yet.\",\n \"not yet!\",\n \"no\",\n \"no.\",\n \"no!\",\n \"nope\",\n \"nope.\",\n \"nope!\",\n \"did not\",\n \"not this year\"\n];\n\n/**\n * Replace Pronouns of a String\n * Exs:\n * - [BABYNAME] => Gabriel\n * - [MALE_PRONOUN] => he\n */\nexport const replacePronouns = (initialValue: string, baby: Baby): string => {\n let newStringValue = initialValue;\n\n const gender = baby.baby_gender;\n const genderIsMale = gender === 1;\n const babyName = baby.baby_first_name.charAt(0).toUpperCase() + baby.baby_first_name.slice(1);;\n\n const genderProunoun = genderIsMale ? MALE_PRONOUN : FEMALE_PRONOUN;\n\n const possessiveProunoun = genderIsMale\n ? MALE_POSSESSIVE_PRONOUN\n : FEMALE_POSSESSIVE_PRONOUN;\n\n const reflexivePronoun = genderIsMale\n ? MALE_REFLEXIVE_PRONOUN\n : FEMALE_REFLEXIVE_PRONOUN;\n\n const accusativePronoun = genderIsMale\n ? MALE_ACCUSATIVE_PRONOUN\n : FEMALE_ACCUSATIVE_PRONOUN;\n\n const contractionPronoun = genderIsMale\n ? MALE_CONTRACTION_PRONOUN\n : FEMALE_CONTRACTION_PRONOUN;\n\n if (initialValue.indexOf(RAW_NAME) !== -1) {\n newStringValue = replaceAll(newStringValue, RAW_NAME, babyName);\n }\n\n if (initialValue.indexOf(RAW_NAME_SPACE) !== -1) {\n newStringValue = replaceAll(newStringValue, RAW_NAME_SPACE, babyName);\n }\n\n if (initialValue.indexOf(RAW_PRONOUN) !== -1) {\n newStringValue = replaceAll(newStringValue, RAW_PRONOUN, genderProunoun);\n newStringValue = capitalizeRawPronoun(newStringValue);\n }\n\n if (initialValue.indexOf(RAW_POSSESSIVE_PRONOUN) !== -1) {\n newStringValue = replaceAll(\n newStringValue,\n RAW_POSSESSIVE_PRONOUN,\n possessiveProunoun\n );\n }\n\n if (initialValue.indexOf(RAW_REFLEXIVE_PRONOUN) !== -1) {\n newStringValue = replaceAll(\n newStringValue,\n RAW_REFLEXIVE_PRONOUN,\n reflexivePronoun\n );\n }\n\n if (initialValue.indexOf(RAW_ACCUSATIVE_PRONOUN) !== -1) {\n newStringValue = replaceAll(\n newStringValue,\n RAW_ACCUSATIVE_PRONOUN,\n accusativePronoun\n );\n }\n\n if (initialValue.indexOf(RAW_CONTRACTION_PRONOUN) !== -1) {\n newStringValue = replaceAll(\n newStringValue,\n RAW_CONTRACTION_PRONOUN,\n contractionPronoun\n );\n }\n\n return newStringValue;\n};\n\nexport const cleanQuestions = (\n questions: QuestionItem[],\n baby: Baby\n): QuestionItem[] =>\n questions.map((question: QuestionItem) => {\n question.question = replacePronouns(question.question, baby);\n question.answers = !!question.answers\n ? question.answers.map((answer: string) => replacePronouns(answer, baby))\n : [];\n question.export = replacePronouns(question.export, baby);\n\n return question;\n });\n\nexport const exportAnswer = (\n answers: string[],\n exportString: string\n): string => {\n exportString =\n answers.length === 1\n ? exportSingleAnswer(answers[0], exportString)\n : exportMultipleAnswers(answers, exportString);\n return exportString;\n};\n\nexport const exportSingleAnswer = (\n answer: string,\n exportString: string\n): string => {\n if (NEGATIVE_ANSWERS.includes(answer.toLocaleLowerCase())) {\n exportString = replaceAll(exportString, exportString, \"\");\n } else if (POSITIVE_INVISIBLE_ANSWERS.includes(answer.toLocaleLowerCase())) {\n return exportString;\n } else if (exportString.indexOf(RAW_ANSWER) !== -1) {\n return replaceAll(exportString, RAW_ANSWER, answer);\n }\n return exportString;\n};\n\nexport const exportMultipleAnswers = (\n answers: string[],\n exportString: string\n): string => {\n if (exportString.indexOf(RAW_ANSWER) !== -1) {\n answers = answers.sort();\n let finalAnswers: string = \"\";\n\n answers.forEach((answer: string, index: number) => {\n finalAnswers += `${answer}${\n index === answers.length - 1\n ? \"\"\n : index === answers.length - 2\n ? \" and \"\n : \", \"\n }`;\n });\n\n return replaceAll(exportString, RAW_ANSWER, finalAnswers);\n }\n return exportString;\n};\n\nexport const exportGrowthAnswer = (\n height: number | null,\n lbs: number | null,\n oz: number | null,\n baby: Baby\n): string | null => {\n const babyNameIs = `${baby.baby_first_name} is`;\n let exportString = \"\";\n\n if (!lbs && !!height) {\n exportString = `${babyNameIs} ${height} inches.`;\n } else if (!!lbs && !!height && !oz) {\n exportString = `${babyNameIs} ${height} inches and ${lbs} lbs.`;\n } else if (!!lbs && !!height && !!oz) {\n exportString = `${babyNameIs} ${height} inches and ${lbs} lbs ${oz} oz.`;\n } else if (!height && !!lbs && !oz) {\n exportString = `${babyNameIs} ${lbs} lbs.`;\n } else if (!height && !!lbs && !!oz) {\n exportString = `${babyNameIs} ${lbs} lbs ${oz} oz.`;\n } else if (!height && !lbs && !!oz) {\n exportString = `${babyNameIs} 0 lbs ${oz} oz.`;\n } else {\n return null;\n }\n\n return exportString;\n};\n\nexport const multipleAnswers = (question_export: string, answer_string: string[]) => {\n let joinedArray = answer_string.join(', ');\n let concatenatedAnswer = `${question_export.replace('[ANSWER]', joinedArray)}`\n return concatenatedAnswer;\n}\n","import { Checkbox, DatePicker, Icon, Input, Radio } from \"antd\";\nimport { CheckboxValueType } from \"antd/lib/checkbox/Group\";\nimport { RadioChangeEvent } from \"antd/lib/radio\";\nimport moment, { Moment } from \"moment\";\nimport React, { useEffect, useMemo } from \"react\";\nimport { QuestionAnswer, QuestionItem, Milestone } from \"../../interfaces\";\nimport { multipleAnswers } from \"../../utils/bpQuestions\";\n\ninterface Props {\n question: QuestionItem;\n answer: QuestionAnswer | undefined;\n changeAnswer: (answer: QuestionAnswer) => void;\n setQuestions: any;\n milestone?: Milestone;\n setMilestoneDate?: React.Dispatch>;\n qIndex?: number;\n customAnswer: string;\n setCustomAnswer: React.Dispatch>;\n milestoneDate?: string;\n}\n\nconst Question: React.FC = ({\n question,\n answer,\n changeAnswer,\n setQuestions,\n milestone,\n setMilestoneDate,\n qIndex,\n customAnswer,\n setCustomAnswer,\n milestoneDate,\n}) => {\n const checked = useMemo(() => (answer ? answer.answer_string : []), [answer]);\n const uniqueAnswers = useMemo(\n () => Array.from(new Set(question.answers)),\n [question.answers],\n );\n\n useEffect(() => {\n setCustomAnswer(\"\");\n }, [qIndex]);\n\n return (\n <>\n

{question.question}

\n {question.multiple_choice === 1 ? (\n <>\n {\n const answer_string = [...newChecked] as string[];\n\n const newAnswer: QuestionAnswer = answer\n ? {\n ...answer,\n answer_string,\n question_export: question.export,\n answer: multipleAnswers(question.export, answer_string),\n }\n : {\n question_id: question.id,\n position: !!question.order ? question.order : 0,\n answer_string,\n answer: multipleAnswers(question.export, answer_string),\n type: question.type,\n question_export: question.export,\n };\n\n changeAnswer(newAnswer);\n }}\n />\n {\n if (customAnswer === \"\") return;\n\n const otherAnswer = customAnswer;\n setCustomAnswer(\"\");\n\n const answer_string = [...checked, otherAnswer] as string[];\n const newAnswer: QuestionAnswer = answer\n ? {\n ...answer,\n answer_string,\n answer: multipleAnswers(question.export, answer_string),\n }\n : {\n question_id: question.id,\n position: !!question.order ? question.order : 0,\n answer_string,\n answer: question.export,\n type: question.type,\n };\n\n changeAnswer(newAnswer);\n setQuestions((questions: QuestionItem[]) =>\n questions.map((q: QuestionItem) =>\n q.id === question.id\n ? { ...q, answers: [...q.answers, otherAnswer] }\n : q,\n ),\n );\n }}\n />\n }\n value={customAnswer}\n placeholder=\"Enter something different\"\n onChange={(e) => setCustomAnswer(e.target.value)}\n />\n \n ) : question.type !== \"first_event\" && question.type !== \"pregnancy\" ? (\n {\n const answer_string = [e.target.value] as string[];\n\n const newAnswer: QuestionAnswer = answer\n ? {\n ...answer,\n answer_string,\n answer: multipleAnswers(question.export, answer_string),\n }\n : {\n question_id: question.id,\n position: !!question.order ? question.order : 0,\n answer_string,\n answer: multipleAnswers(question.export, answer_string),\n type: question.type,\n };\n\n changeAnswer(newAnswer);\n }}\n >\n {uniqueAnswers.map((answer: string, index: number) => (\n \n {answer}\n \n ))}\n \n ) : (\n \n current !== null && current > moment().endOf(\"day\")\n }\n value={\n checked.length\n ? moment(checked[0], \"MMMM Do, YYYY\").isValid()\n ? moment(checked[0], \"MMMM Do, YYYY\")\n : null\n : milestone?.date_for_title\n ? moment(milestone.date_for_title).isValid()\n ? milestone.age_weeks !== -700\n ? moment(milestone.date_for_title)\n : moment(milestoneDate, \"MMMM Do, YYYY\") // date for pregnancy\n : null\n : null\n }\n onChange={(momentDate) => {\n let dateAnswer = \"\";\n if (momentDate !== null) {\n dateAnswer = momentDate.format(\"MMMM Do, YYYY\");\n setMilestoneDate!(dateAnswer);\n if (milestone?.age_weeks === -800) {\n setMilestoneDate!(momentDate?.format(\"YYYY-MM-DD 00:00:00\"));\n }\n }\n\n const newAnswer: QuestionAnswer = answer\n ? { ...answer, answer_string: [dateAnswer] }\n : {\n question_id: question.id,\n position: !!question.order ? question.order : 0,\n answer_string: [dateAnswer],\n answer: question.export,\n type: question.type,\n };\n\n changeAnswer(newAnswer);\n }}\n />\n )}\n \n );\n};\n\nexport default Question;\n","import React, { useMemo, useState, useCallback } from \"react\";\nimport { QuestionItem, QuestionAnswer, Entry } from \"../../interfaces\";\nimport { InputNumber } from \"antd\";\nimport { useEffect } from \"react\";\n\ninterface Props {\n questions: QuestionItem[];\n changeAnswer: (answer: QuestionAnswer) => void;\n initialHeight: number;\n initialWeight: number;\n setEntry: React.Dispatch>\n}\n\nconst QuestionHeight: React.FC = ({\n questions,\n changeAnswer,\n initialHeight,\n initialWeight,\n setEntry\n}) => {\n const [heightAnswer, setHeightAnswer] = useState(\n initialHeight\n );\n const [weightAnswer, setWeightAnswer] = useState(\n initialWeight > 0 ? ~~(initialWeight / 16) : 0\n );\n const [weightAnswerOz, setWeightAnswerOz] = useState(\n initialWeight > 0 ? initialWeight % 16 : 0\n );\n\n const [height, weight] = useMemo(\n () => [\n questions.find((q) => q.type === \"height\"),\n questions.find((q) => q.type === \"weight\"),\n ],\n [questions]\n );\n\n const weightValue = useCallback(\n (valueLbs: number | undefined, valueOz: number | undefined): string[] => {\n return [((valueOz || 0) + (valueLbs || 0) * 16).toString()];\n },\n []\n );\n\n const concatenatedHeightAnswer = (heightAnswer: number | undefined) => {\n if(heightAnswer){\n return `${height?.export.replace('[HEIGHT]', heightAnswer.toString())}`\n }\n\n return \"0\";\n }\n\n const concatenatedWeightAnswer = (weightAnswer: number | undefined) => {\n if(weightAnswer){\n return `${weight?.export.replace('[WEIGHTLBS]', weightAnswer.toString()).replace('[WEIGHTOZ] oz', '')}`\n }\n\n return \"0\";\n }\n\n const concatenatedWeightAnswerOZ = (weightAnswer: number | undefined) => {\n if(weightAnswer) {\n return `${weight?.export.replace(' [WEIGHTOZ]', weightAnswer.toString()).replace('[WEIGHTLBS] lbs', '')}`\n }\n return \"0\";\n }\n\n const concatenatedWeightAnswerBoth = (weightAnswer: number | undefined, weightAnswerOz: number | undefined) => {\n if(weightAnswer && weightAnswerOz) {\n return `${weight?.export.replace('[WEIGHTOZ]', weightAnswerOz.toString()).replace('[WEIGHTLBS]', weightAnswer.toString() )}`\n }\n return \"0\";\n }\n\n useEffect(() => {\n \n if(weightAnswer !== 0 || weightAnswerOz !== 0) {\n\n \n if (weight) {\n if(weightAnswer && weightAnswer > 0 && !weightAnswerOz) {\n changeAnswer({\n question_id: weight.id,\n position: !!weight.order ? weight.order : 0,\n answer_string: weightValue(weightAnswer, weightAnswerOz),\n answer: concatenatedWeightAnswer(weightAnswer),\n type: weight.type,\n });\n } else if (weightAnswer && weightAnswerOz && weightAnswer > 0 && weightAnswerOz > 0) {\n changeAnswer({\n question_id: weight.id,\n position: !!weight.order ? weight.order : 0,\n answer_string: weightValue(weightAnswer, weightAnswerOz),\n answer: concatenatedWeightAnswerBoth(weightAnswer,weightAnswerOz),\n type: weight.type,\n });\n } else {\n changeAnswer({\n question_id: weight.id,\n position: !!weight.order ? weight.order : 0,\n answer_string: weightValue(weightAnswer, weightAnswerOz),\n answer: concatenatedWeightAnswerOZ(weightAnswerOz),\n type: weight.type,\n });\n }\n }\n }\n\n }, [weightAnswer, weightAnswerOz])\n\n return (\n
\n {!!height && (\n
\n

{height.question}

\n \n {\n const value = e !== undefined && e > 99.9 ? 99.9 : e;\n setEntry((state) => ({\n ...state,\n height: !!value ? value : 0\n }));\n\n setHeightAnswer(value);\n changeAnswer({\n question_id: height.id,\n position: !!height.order ? height.order : 0,\n answer_string: [(value || 0).toString()],\n answer: concatenatedHeightAnswer(value),\n type: height.type,\n });\n }}\n className=\"w-100 my-1\"\n />\n
\n )}\n {!!weight && (\n
\n

{weight.question}

\n
\n
\n \n {\n const value = e !== undefined && e > 99 ? 99 : e;\n setEntry((state) => ({\n ...state,\n weight_lbs: !!value ? value : 0\n }));\n setWeightAnswer(value);\n }}\n className=\"w-100 my-1\"\n />\n
\n
\n \n {\n const value = e !== undefined && e > 15 ? 15 : e;\n setEntry((state) => ({\n ...state,\n weight_oz: !!value? value : 0\n }));\n setWeightAnswerOz(value);\n }}\n className=\"w-100 my-1\"\n />\n
\n
\n
\n )}\n
\n );\n};\n\nexport default QuestionHeight;\n","import { Button, Icon, Spin } from \"antd\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport {\n QuestionAnswer,\n QuestionItem,\n Milestone,\n Entry,\n} from \"../../interfaces\";\nimport Question from \"./Question\";\nimport QuestionHeight from \"./QuestionHeight\";\n\ninterface Props {\n questions: QuestionItem[];\n answers: QuestionAnswer[];\n setAnswers: (answers: QuestionAnswer[]) => void;\n setQuestions: any;\n heightQuestions: QuestionItem[];\n nextStep: () => void;\n milestone?: Milestone;\n setMilestoneDate?: React.Dispatch>;\n customAnswer: string;\n setCustomAnswer: React.Dispatch>;\n qIndex: number;\n setQIndex: React.Dispatch>;\n hasQuestions: boolean;\n answer: QuestionAnswer | undefined;\n changeAnswer: (answer: QuestionAnswer) => void;\n addQuestion: (question: QuestionItem) => void;\n setEntry: React.Dispatch>;\n milestoneDate?: string;\n}\n\nconst Questions: React.FC = ({\n questions,\n answers,\n setAnswers,\n heightQuestions,\n nextStep,\n setQuestions,\n milestone,\n setMilestoneDate,\n setEntry,\n customAnswer,\n setCustomAnswer,\n qIndex,\n setQIndex,\n hasQuestions,\n answer,\n changeAnswer,\n addQuestion,\n milestoneDate,\n}) => {\n const [showHeight, setShowHeight] = useState(false);\n const isPregnancyMilestone = milestone?.age_weeks === -700;\n\n const [initialHeight, initialWeight] = useMemo(() => {\n if (!heightQuestions || !heightQuestions.length) {\n return [0, 0];\n }\n const [height, weight] = [\n answers.find((a) => a.type === \"height\"),\n answers.find((a) => a.type === \"weight\"),\n ];\n let [initialHeight, initialWeight] = [0, 0];\n\n if (!!height) initialHeight = parseInt(height.answer_string[0]);\n if (!!weight) initialWeight = parseInt(weight.answer_string[0]);\n\n return [initialHeight, initialWeight];\n }, [heightQuestions, answers]);\n\n if (!hasQuestions) {\n if (!heightQuestions || !heightQuestions.length) {\n return (\n
\n }\n />\n
\n );\n } else if (!showHeight && !isPregnancyMilestone) {\n setShowHeight(true);\n }\n }\n\n return (\n <>\n
\n {showHeight ? (\n \n ) : (\n \n )}\n
\n
\n
\n {\n showHeight ? setShowHeight(false) : setQIndex(qIndex - 1);\n addQuestion(questions[qIndex]);\n }}\n disabled={qIndex === 0}\n />\n  \n \n {showHeight\n ? questions.length + (!!heightQuestions.length ? 1 : 0)\n : qIndex + 1}\n /{questions.length + (!!heightQuestions.length ? 1 : 0)}\n \n  \n {\n if (showHeight || qIndex === questions.length - 1) {\n if (showHeight || !heightQuestions || !heightQuestions.length) {\n addQuestion(questions[qIndex]);\n nextStep();\n } else {\n addQuestion(questions[qIndex]);\n setShowHeight(true);\n }\n } else {\n addQuestion(questions[qIndex]);\n setQIndex(qIndex + 1);\n }\n }}\n />\n
\n
\n \n );\n};\n\nexport default Questions;\n","import { Icon, Spin, Modal, Button } from \"antd\";\nimport arrayMove from \"array-move\";\nimport { isEqual } from \"lodash\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport Cropper from \"react-cropper\";\nimport { SortEnd, SortEvent } from \"react-sortable-hoc\";\nimport { Layout, SaveBabyPagePhoto } from \"../../interfaces\";\nimport { Background } from \"../../interfaces/background\";\nimport {\n finishCrop,\n initialPhotoState,\n photoClick,\n PhotoSelected,\n selectImage,\n selectImageURL,\n} from \"../../pages/BabyPage/Save/SaveHelper\";\nimport { possibleLayouts } from \"../../utils/layouts\";\nimport PhotoGallery from \"../Gallery/PhotoGallery\";\nimport ImageEditModal from \"../ImageEditModal/ImageEditModal\";\nimport SelectPhotoModal from \"./SelectPhotoModal\";\nimport PlusAlert from \"./PlusAlert\";\n\ninterface Props {\n photos: SaveBabyPagePhoto[];\n layout: Layout;\n setPhotos: (\n photos: SaveBabyPagePhoto[],\n layout: Layout,\n forceRecrop?: boolean\n ) => void;\n isPlus: boolean;\n showPlus: () => void;\n backgroundSelected?: Background;\n selectedPlus: { border: boolean; illustration: boolean; layout: boolean };\n setSelectedPlus: ({ border, illustration, layout }: any) => void;\n title?: string;\n step?: number;\n}\n\nconst SelectPhotos: React.FC = ({\n photos,\n layout,\n setPhotos,\n isPlus,\n showPlus,\n backgroundSelected,\n selectedPlus,\n setSelectedPlus,\n title,\n step\n}) => {\n const [cropperRef, setCropperRef] = useState(null);\n const inputRef = useRef(null);\n const [modalOpen, setModalOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const [photoSelected, setPhotoSelected] = useState(\n initialPhotoState\n );\n const [modalVisible, setModalVisible] = useState(false);\n\n const onSelectImage = useCallback(\n (e: React.ChangeEvent) =>\n selectImage(\n e,\n photoSelected,\n photos,\n setPhotos,\n layout,\n setPhotoSelected,\n inputRef,\n setLoading,\n setModalOpen\n ),\n [layout, photoSelected, photos, setPhotos, inputRef]\n );\n\n const onSelectImageURL = useCallback(\n (imageUrl: string) =>\n selectImageURL(\n imageUrl,\n photoSelected,\n photos,\n setPhotos,\n layout,\n setPhotoSelected,\n inputRef,\n setLoading,\n undefined,\n setModalOpen,\n ),\n [layout, photoSelected, photos, setPhotos, inputRef, setModalOpen]\n );\n\n const onPhotoClick = useCallback(\n (index: number, photo: SaveBabyPagePhoto) =>\n photoClick(\n index,\n photo,\n inputRef,\n layout,\n setPhotoSelected,\n setModalOpen,\n step\n ),\n [layout, inputRef]\n );\n\n const onCropComplete = useCallback(\n (croppedData: Cropper.Data, imageData: Cropper.ImageData) => {\n if (\n !!croppedData &&\n (!photoSelected.croppedData ||\n !isEqual(croppedData, photoSelected.croppedData))\n ) {\n setPhotoSelected((state) => ({\n ...state,\n croppedData,\n imageData,\n }));\n }\n },\n [photoSelected]\n );\n\n const onFinishCrop = useCallback(\n async (_: React.MouseEvent) => {\n if (cropperRef !== null) {\n finishCrop(\n cropperRef,\n photoSelected,\n photos,\n setPhotos,\n layout,\n setLoading,\n setPhotoSelected\n );\n }\n },\n [cropperRef, photoSelected, photos, setPhotos, layout]\n );\n\n const onSortEnd = useCallback(\n (sort: SortEnd, _: SortEvent) => {\n if (sort.oldIndex !== sort.newIndex) {\n const newPhotos = arrayMove([...photos], sort.oldIndex, sort.newIndex);\n setPhotos(newPhotos, layout, true);\n }\n },\n [photos, setPhotos, layout]\n );\n\n useEffect(() => {\n if(photos[0].base64_cropped !== \"\" && localStorage.getItem('show1stPhotoModal') !== \"false\") {\n setModalVisible(true)\n }\n }, [photos])\n\n return (\n <>\n

{photos[0].base64_cropped === \"\" ? \"Select your baby's photos\" : \" To reposition your photo(s) click on a photo.\"}

\n {loading && (\n
\n }\n />\n
\n )}\n {\n onSelectImage(e);\n e.target.value = \"\";\n }}\n style={{\n width: 0,\n height: 0,\n display: \"none\",\n }}\n />\n
\n \n
\n
\n
\n {possibleLayouts.map((e, index: number) => (\n
\n {!isPlus && !e.isFree && }\n {\n setPhotoSelected(initialPhotoState);\n setPhotos(photos, possibleLayouts[index].layout);\n selectedPlus.layout = !isPlus && !e.isFree ? true : false;\n setSelectedPlus(selectedPlus);\n }}\n />\n
\n ))}\n
\n
\n setPhotoSelected(initialPhotoState)}\n onChangePhoto={() => {\n setPhotoSelected((state) => ({ ...state, edit: false }));\n setModalOpen(true);\n }}\n />\n setModalOpen(false)}\n inputRef={inputRef}\n onSelectPhoto={onSelectImageURL}\n />\n setModalVisible(false)}\n footer={null}\n >\n
\n \n \n

\n To reposition your photo(s) click on a photo. Then scroll to zoom in/out or click and drag to reposition the photo.\n

\n\n setModalVisible(false)} className=\"responsive-sub-title my-1 px-3 text\">\n Do you want to see this message again?\n \n \n \n
\n
\n \n \n\n \n \n \n \n
\n \n \n );\n};\n\nexport default SelectPhotos;\n","export const delay = (time: number) =>\n new Promise((resolve, _) => setTimeout(resolve, time))\n","import { Button, Icon, Modal, notification } from \"antd\";\nimport html2canvas from \"html2canvas\";\nimport { isEqual } from \"lodash\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport moment from \"moment\";\nimport queryString from \"query-string\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport BaseLayout from \"../../../components/BaseLayout/BaseLayout\";\nimport Babypages from \"../../../components/Dashboard/Babypages\";\nimport ModalPlus from \"../../../components/ModalPlus/ModalPlus\";\nimport RouteLeavingGuard from \"../../../components/RouteLeavingGuard/RouteLeavingGuard\";\nimport EditBorderIllustration from \"../../../components/SaveBabyPage/EditBorderIllustration\";\nimport EditTextBackground from \"../../../components/SaveBabyPage/EditTextBackground\";\nimport Finish from \"../../../components/SaveBabyPage/Finish\";\nimport Questions from \"../../../components/SaveBabyPage/Questions\";\nimport SelectPhotos from \"../../../components/SaveBabyPage/SelectPhotos\";\nimport backgrounds from \"../../../data/backgrounds\";\nimport { BASE_URL, highRes, highResContent } from \"../../../env\";\nimport {\n Baby,\n Background,\n Border,\n BpPhotoDB,\n DraftBabyPage,\n Entry,\n Illustration,\n initialBabyPage,\n Layout,\n Milestone,\n MilestonesBaby,\n QuestionAnswer,\n QuestionItem,\n SaveBabyPage,\n SaveBabyPagePhoto,\n SimplifiedAnswer,\n User,\n} from \"../../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../../store\";\nimport { BabyState } from \"../../../store/ducks/baby\";\nimport {\n fetchBabyPageById,\n saveBabyPageSaga,\n} from \"../../../store/sagas/babyPage\";\nimport { checkUserModal } from \"../../../store/sagas/form\";\nimport {\n fetchPhotos,\n FileUploadedS3,\n FileUploadS3,\n savePhotosS3,\n} from \"../../../store/sagas/image\";\nimport { fetchQuestions } from \"../../../store/sagas/questions\";\nimport { saveEntryDashboard } from \"../../../store/sagas/dashboard\";\nimport {\n cleanQuestions,\n exportAnswer,\n exportGrowthAnswer,\n multipleAnswers,\n} from \"../../../utils/bpQuestions\";\nimport {\n b64toBlob,\n canvasToBlobPromise,\n checkPhotoLayouts,\n getBase64FromFileUrl,\n getPhotoFile,\n} from \"../../../utils/image\";\nimport { getAspectFromLayout, getLayoutInfos } from \"../../../utils/layouts\";\nimport { trackAction } from \"../../../utils/marketing\";\nimport {\n addSuffix,\n capitalizeText,\n capitalizeTexts,\n lastSegmentUrl,\n} from \"../../../utils/string\";\nimport { delay } from \"../../../utils/time\";\nimport \"./Save.scss\";\nimport {\n addCustomAnswerHelper,\n calculateOrigin,\n calculateOriginPercent,\n calculateZoom,\n getPlaceholderB64,\n setCustomAnswersHelper,\n setSortedAnswersHelper,\n} from \"./SaveHelper\";\nimport { Fonts } from \"../../../hooks/Fonts\";\nimport { setDraftBabyPage } from \"../../../store/sagas/bpHelper\";\nimport { PRODUCTION } from \"../../../env\";\nimport { fetchBabies } from \"../../../store/sagas/baby\";\nconst STANDARD_WEEKS_FOR_PREGNANCY_MILESTONE = 40;\ntype Props = {\n user: User;\n babySelected?: Baby;\n milestones: MilestonesBaby[];\n borders: Border[];\n illustrations: Illustration[];\n baby: BabyState;\n draftBabyPage: DraftBabyPage;\n};\n\nconst SaveBabyPagesPage: React.FC = ({\n milestones,\n user,\n babySelected,\n borders,\n illustrations,\n baby,\n draftBabyPage,\n}) => {\n // Internal state management\n const history = useHistory();\n const location = useLocation();\n const contentRef = useRef(null);\n\n const [freeUserModal, setFreeUserModal] = useState(\n !!user.user_level ? false : true,\n );\n const [milestone, setMilestone] = useState(undefined);\n const [loaded, setLoaded] = useState(false);\n const [loading, setLoading] = useState(false);\n // const [lastTextAnswers, setLastTextAnswers] = useState('');\n const [saveStep, setSaveStep] = useState<\n null | \"genImg\" | \"sendImg\" | \"saveBabyPage\"\n >(null);\n const [control, setControl] = useState({\n valid: false,\n step: 0,\n });\n const [babyPage, setBabyPage] = useState(\n cloneDeep(initialBabyPage),\n );\n\n const [questions, setQuestions] = useState([]);\n const [isTruncated, setIsTruncated] = useState(false);\n const [plusOpen, setPlusOpen] = useState(false);\n const [babyPageLimitPlusOpen, setBabyPageLimitPlusOpen] = useState(false);\n const [title, setTitle] = useState(\"\");\n const [subTitle, setSubTitle] = useState(\"\");\n const [milestoneDate, setMilestoneDate] = useState(\"\");\n const [selectedPlus, setSelectedPlus] = useState({\n border: false,\n illustration: false,\n layout: false,\n font: false,\n });\n const isSelectedPlus =\n selectedPlus.border ||\n selectedPlus.illustration ||\n selectedPlus.layout ||\n selectedPlus.font;\n const [saveWithoutPlus, setSaveWithoutPlus] = useState(false);\n const { confirm } = Modal;\n const isPhotoOnly = milestone?.age_weeks === -2;\n const isCustomOrFirstEvent =\n milestone?.age_weeks === -800 || milestone?.age_weeks === -1;\n const fonts = Fonts(!!user.user_level);\n const [milestoneAsFirstLine, setMilestoneAsFirstLine] = useState(false);\n const [isFutureDate, setIsFutureDate] = useState(false);\n const [entry, setEntry] = useState({\n entry_date: moment(),\n baby_id: babySelected!.id,\n height: 0,\n weight_oz: 0,\n weight_lbs: 0,\n });\n\n const saveGrowthChartEntry = useCallback(() => {\n if (entry !== null && moment.isMoment(entry.entry_date)) {\n const entryToSave = {\n ...entry,\n entry_date: entry.entry_date.format(\"YYYY[-]MM[-]DD\"),\n isEdit: undefined,\n };\n\n setLoading(true);\n sagaMiddleware.run(\n saveEntryDashboard,\n entryToSave,\n (error: any | null) => {\n if (error !== null) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n } else {\n trackAction(\n \"CreateGrowthChart\",\n {\n google: {\n event: \"create_growth_chart\",\n },\n },\n true,\n );\n }\n },\n );\n }\n }, [entry, loading]);\n\n const checkIfEntryExist = useCallback((babyBirth) => {\n let growthEntry = { ...entry };\n if (!!babyPage.id) {\n const repairedChild = baby.babies.filter(\n (baby) => babyPage.child_id === baby.id,\n );\n // REVISAR REPAIR\n }\n if (moment() < babyBirth) {\n setIsFutureDate(true);\n }\n\n const searchEntryHeight = babySelected!.heights.filter(\n (height) =>\n moment(height.entry_date).format(\"DDMMYYYY\") ===\n babyBirth.format(\"DDMMYYYY\"),\n );\n\n const searchEntryWeight = babySelected!.weights.filter(\n (weight) =>\n moment(weight.entry_date).format(\"DDMMYYYY\") ===\n babyBirth.format(\"DDMMYYYY\"),\n );\n\n if (searchEntryHeight.length > 0) {\n growthEntry.height = parseFloat(searchEntryHeight[0].height);\n }\n\n if (searchEntryWeight.length > 0) {\n const oz = parseInt(searchEntryWeight[0].oz);\n growthEntry.weight_lbs = ~~(oz / 16);\n growthEntry.weight_oz = oz % 16;\n }\n\n if (searchEntryHeight.length === 0 && searchEntryWeight.length === 0) {\n growthEntry.isEdit = false;\n } else {\n growthEntry.isEdit = true;\n }\n growthEntry.entry_date = babyBirth;\n return growthEntry;\n }, []);\n\n let missingContent: any = queryString.parse(location.search).both;\n\n useEffect(() => {\n document.body.classList.toggle(\"no-overflow\");\n }, []);\n\n useEffect(() => {\n let id: any = queryString.parse(location.search).id;\n\n if (user.user_level === 1) {\n return;\n }\n\n if (!id && baby && baby.babies.length) {\n const babyPagesCounter = baby.babies.reduce(\n (acc: number, baby: any) => acc + baby.babyPages.length,\n 0,\n );\n\n if (babyPagesCounter >= 15) {\n setBabyPageLimitPlusOpen(true);\n }\n }\n\n if (milestone?.age_weeks === -2) {\n setPlusOpen(true);\n }\n }, [user.user_level, milestone, history]);\n\n useEffect(() => {\n if (saveWithoutPlus) {\n saveBabyPage();\n }\n }, [saveWithoutPlus, babyPage.photos]);\n\n useEffect(() => {\n sagaMiddleware.run(fetchPhotos);\n\n return () => {\n setBabyPage(cloneDeep(initialBabyPage));\n setControl({ valid: false, step: 0 });\n };\n }, []);\n\n // On start\n useEffect(() => {\n if (loaded) return;\n\n let id: any = queryString.parse(location.search).id; // If is update\n let from: any = queryString.parse(location.search).from;\n if (draftBabyPage && draftBabyPage.photos && !!from) {\n setBabyPage(draftBabyPage);\n if (user.user_level) {\n setControl({ valid: true, step: 4 });\n setSaveWithoutPlus(true);\n } else {\n setSelectedPlus({\n border: true,\n layout: true,\n illustration: true,\n font: true,\n });\n setControl({ valid: true, step: 4 });\n }\n\n sagaMiddleware.run(setDraftBabyPage, {});\n }\n\n if (!!id) {\n if (\n !!babySelected &&\n !!milestones &&\n !!milestones.length &&\n !!borders &&\n !!borders.length &&\n !!illustrations &&\n !!illustrations.length &&\n isEqual(babyPage, initialBabyPage)\n ) {\n setLoading(true);\n id = parseInt(id.toString());\n\n sagaMiddleware.run(\n fetchBabyPageById,\n id,\n async (error: string | null, babyPageBD?: any) => {\n if (error !== null || !babyPageBD || !babyPageBD.new_version) {\n Modal.error({\n title: \"Error\",\n content: !!error ? error : \"You can only edit new BabyPages\",\n });\n history.push(\"/\");\n setLoading(false);\n return;\n }\n\n setTitle(babyPageBD.title);\n setSubTitle(babyPageBD.subtitle);\n setMilestoneDate(babyPageBD.original_title);\n\n try {\n const borderSelected = !!babyPageBD.border\n ? borders.find(\n (border) => border.image_url === babyPageBD.border,\n )\n : undefined;\n\n const illustrationSelected = !!babyPageBD.illustration\n ? illustrations.find(\n (illustration) =>\n illustration.image_url === babyPageBD.illustration,\n )\n : undefined;\n\n const backgroundSelected = !!babyPageBD.background_color\n ? backgrounds.find(\n (background) =>\n background.color === babyPageBD.background_color,\n )\n : undefined;\n\n const layout = babyPageBD.layout;\n const layoutRightSide = babyPageBD.layout_right;\n\n const labelUrlPhoto: BpPhotoDB = babyPageBD.photos.find(\n (p: BpPhotoDB) => !!p.label_url,\n );\n\n let label_url_file = !!labelUrlPhoto\n ? labelUrlPhoto.label_url\n : undefined;\n\n // Use this to test big contents\n // let label_url_file =\n // 'https://babypage-prod.s3.amazonaws.com/public/10704/photos/5a9d597a5.png';\n\n let label_url = !!label_url_file\n ? await getBase64FromFileUrl(\n label_url_file,\n `${BASE_URL}api/avoid-cors?url=`,\n )\n : undefined;\n let photos: SaveBabyPagePhoto[] = [];\n let photosRightSide: SaveBabyPagePhoto[] = [];\n\n let placeHolderB64 = await getPlaceholderB64();\n\n if (!!babyPageBD.photos && !!babyPageBD.photos.length) {\n for (let i = 0; i < babyPageBD.photos.length; i++) {\n photos.push(\n await getPhotoFile(\n cloneDeep(babyPageBD.photos[i]),\n layout,\n i,\n !!babyPageBD.version ? babyPageBD.version : \"web\",\n ),\n );\n }\n for (let photo of photos) {\n if (photo.base64 === placeHolderB64) {\n photo.missing = true;\n }\n photo.side = \"left\";\n }\n\n if (\n !!babyPageBD.photos_right &&\n !!babyPageBD.photos_right.length\n ) {\n for (let i = 0; i < babyPageBD.photos_right.length; i++) {\n photosRightSide.push(\n await getPhotoFile(\n cloneDeep(babyPageBD.photos_right[i]),\n layoutRightSide,\n i,\n !!babyPageBD.version ? babyPageBD.version : \"web\",\n ),\n );\n }\n }\n for (let photo of photosRightSide) {\n if (photo.base64 === placeHolderB64) {\n photo.missing = true;\n }\n photo.side = \"right\";\n }\n } else {\n photos = cloneDeep(initialBabyPage.photos);\n }\n\n // Changes to adjust phoonly babypages that had internal labels, before internal label option was removed\n babyPageBD.label_left_position =\n babyPageBD.label_left_position === \"top-right\"\n ? \"top-left\"\n : babyPageBD.label_left_position === \"bottom-right\"\n ? \"bottom-left\"\n : babyPageBD.label_left_position;\n\n babyPageBD.label_right_position =\n babyPageBD.label_right_position === \"top-left\"\n ? \"top-right\"\n : babyPageBD.label_right_position === \"bottom-left\"\n ? \"bottom-right\"\n : babyPageBD.label_right_position;\n\n let labelPositionLeft, labelPositionRight;\n switch (babyPageBD.label_left_position) {\n case \"top-left\":\n labelPositionLeft = {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n };\n break;\n case \"top-right\":\n labelPositionLeft = {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-start\",\n };\n break;\n case \"top-center\":\n labelPositionLeft = {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n };\n break;\n case \"bottom-right\":\n labelPositionLeft = {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-end\",\n };\n break;\n case \"bottom-left\":\n labelPositionLeft = {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-end\",\n };\n break;\n case \"bottom-center\":\n labelPositionLeft = {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"flex-end\",\n };\n break;\n case \"\":\n labelPositionLeft = {\n display: \"none\",\n };\n }\n\n switch (babyPageBD.label_right_position) {\n case \"top-left\":\n labelPositionRight = {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n };\n break;\n case \"top-right\":\n labelPositionRight = {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-start\",\n };\n break;\n case \"top-center\":\n labelPositionRight = {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n };\n break;\n case \"bottom-left\":\n labelPositionRight = {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-end\",\n };\n break;\n case \"bottom-right\":\n labelPositionRight = {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-end\",\n };\n break;\n case \"bottom-center\":\n labelPositionRight = {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"flex-end\",\n };\n break;\n case \"\":\n labelPositionRight = {\n display: \"none\",\n };\n }\n let allPhotos = [...photos, ...photosRightSide];\n let hasMissing = allPhotos.some((item) => {\n return item.missing;\n });\n\n let isIosWeightAnswer =\n babyPageBD.answers !== null\n ? babyPageBD.answers.filter(\n (item: any) =>\n item.type === \"height\" &&\n babyPageBD.version === \"ios\" &&\n item.answerString.length > 1,\n )\n : false;\n let separateQuestions: any = [];\n\n if (!!isIosWeightAnswer.length) {\n let weight = 0;\n separateQuestions = isIosWeightAnswer[0].answerString\n .map((item: any, index: number) => {\n if (item !== \"-\") {\n if (index === 0) {\n return {\n answer_string: item.split(\" \"),\n answer: isIosWeightAnswer[0].answers,\n position: isIosWeightAnswer[0].position,\n question_id: isIosWeightAnswer[0].question_id,\n type: \"height\",\n };\n } else if (index === 1) {\n weight += parseInt(item) * 16;\n\n if (isIosWeightAnswer[0].answerString[2] !== \"-\") {\n return null;\n } else {\n return {\n answer_string: weight.toString().split(\" \"),\n answer: `${babySelected.baby_first_name} is ${weight} lbs `,\n position: isIosWeightAnswer[0].position,\n question_id: isIosWeightAnswer[0].question_id,\n type: \"weight\",\n };\n }\n } else {\n weight += parseInt(item);\n return {\n answer_string: weight.toString().split(\" \"),\n answer: `${babySelected.baby_first_name} is ${\n (weight - (weight %= 16)) / 16\n } lbs ${(weight %= 16)} oz`,\n position: isIosWeightAnswer[0].position,\n question_id: isIosWeightAnswer[0].question_id,\n type: \"weight\",\n };\n }\n }\n })\n .filter((item: any) => item != null);\n }\n\n let completedAnswers =\n !!babyPageBD.answers && !!babyPageBD.answers.length\n ? babyPageBD.answers.map((answer: any) => {\n return {\n answer_string: answer.answerString,\n answer: answer.answers,\n position: answer.position,\n question_id: answer.question_id,\n type: answer.type.toLowerCase(),\n };\n })\n : [];\n\n let filteredAnswers = completedAnswers.filter(\n (item: any) => item.type !== \"height\",\n );\n completedAnswers = !!isIosWeightAnswer.length\n ? [...filteredAnswers, ...separateQuestions]\n : [...completedAnswers, ...separateQuestions];\n\n const bp: SaveBabyPage = {\n id,\n photos,\n photosRightSide,\n answers:\n !!babyPageBD.answers && !!babyPageBD.answers.length\n ? completedAnswers\n : [],\n borderSelected,\n illustrationSelected,\n backgroundSelected,\n font: babyPageBD.font,\n textAlign: babyPageBD.font_alignment,\n layout,\n layoutRightSide,\n somethingChanged: true,\n thumbnail: babyPageBD.thumbnail,\n thumbnail_content: babyPageBD.thumbnail_content,\n label_url,\n label_url_file,\n label_left_text: babyPageBD.label_left_text,\n label_right_text: babyPageBD.label_right_text,\n label_left_position: babyPageBD.label_left_position,\n label_right_position: babyPageBD.label_right_position,\n labelStatePositionLeft: labelPositionLeft,\n labelStatePositionRight: labelPositionRight,\n placeholder: !!placeHolderB64 ? placeHolderB64 : undefined,\n isEdit: true,\n hasMissing: hasMissing,\n font_id: babyPageBD.font_id,\n child_id: babyPageBD.child_id,\n };\n setMilestoneAsFirstLine(\n !!babyPageBD.milestone_date_as_first_line,\n );\n setBabyPage(bp);\n\n // cleaning names of photos by removing the url\n const cleanPhotos = babyPageBD.photos;\n const cleanPhotosRight = babyPageBD.photos_right;\n\n for (let photo of cleanPhotos) {\n let name = photo.name.split(\"/photos/\")[1];\n photo.name = name;\n }\n for (let photo of cleanPhotosRight) {\n let name = photo.name.split(\"/photos/\")[1];\n photo.name = name;\n }\n\n setPhotosToBeSaved({\n photos: cleanPhotos,\n photos_right: cleanPhotosRight,\n });\n setTriggerPhotoUpdate(false);\n\n let i = -1;\n let holiday = false;\n const searchMilestones = milestones.find((milestone) => {\n i = milestone.all_milestones.findIndex(\n (e) => e.id === babyPageBD.milestone_id,\n );\n\n if (i === -1) {\n i = milestone.holiday_milestones.findIndex(\n (e) => e.id === babyPageBD.milestone_id,\n );\n holiday = i !== -1;\n }\n\n return i !== -1;\n });\n const isHoliday = babyPageBD.age_weeks === -999;\n const isFirstEvent = babyPageBD.age_weeks === -800;\n const isPregnancy = babyPageBD.age_weeks === -700;\n\n const heightAnswer =\n babyPageBD.answers !== null\n ? babyPageBD.answers.filter(\n (item: { type: string }) => item.type === \"height\",\n )\n : \"\";\n const weightAnswer =\n babyPageBD.answers !== null\n ? babyPageBD.answers.filter(\n (item: { type: string }) => item.type === \"weight\",\n )\n : \"\";\n\n const exactMilestone = isHoliday\n ? searchMilestones?.holiday_milestones.filter(\n (item) => babyPageBD.milestone_id === item.id,\n )\n : isFirstEvent\n ? searchMilestones?.first_event_milestones.filter(\n (item) => babyPageBD.milestone_id === item.id,\n )\n : isPregnancy\n ? searchMilestones?.pregnancy_milestones.filter(\n (item) => babyPageBD.milestone_id === item.id,\n )\n : searchMilestones?.all_milestones.filter(\n (item) => babyPageBD.milestone_id === item.id,\n );\n const babyID = babyPageBD.child_id;\n const event = exactMilestone![0].title_name;\n const exactBaby = baby.babies.filter(\n (baby) => babyID === baby.id,\n );\n const quarantineMilestoneID = PRODUCTION ? 195 : 228;\n let growthEntry = { ...entry };\n let babyBirth = moment(\n exactBaby[0].baby_birthdate.replace(\" 00:00:00\", \"\"),\n );\n\n if (\n !!exactMilestone![0].age_months &&\n parseInt(exactMilestone![0].age_months) > 0\n ) {\n babyBirth = babyBirth.add(\n parseInt(exactMilestone![0].age_months),\n \"months\",\n );\n growthEntry = checkIfEntryExist(babyBirth);\n } else if (event.toLowerCase() === \"custom page\") {\n babyBirth = moment();\n } else if (\n !!exactMilestone![0].age_weeks &&\n !isNaN(exactMilestone![0].age_weeks) &&\n exactMilestone![0].age_weeks > 0\n ) {\n babyBirth =\n exactMilestone![0].id === quarantineMilestoneID\n ? babyBirth\n : babyBirth.add(exactMilestone![0].age_weeks, \"weeks\");\n growthEntry = checkIfEntryExist(babyBirth);\n }\n\n if (babyPageBD.answers !== null) {\n if (!!heightAnswer.length || weightAnswer.length) {\n setEntry({\n ...growthEntry,\n baby_id: babyPageBD.child_id,\n height:\n heightAnswer[0] !== undefined\n ? parseInt(heightAnswer[0].answerString[0])\n : 0,\n weight_lbs:\n weightAnswer[0] !== undefined\n ? Math.floor(\n parseInt(weightAnswer[0].answerString[0]) / 16,\n )\n : 0,\n weight_oz:\n weightAnswer[0] !== undefined\n ? parseInt(weightAnswer[0].answerString[0]) % 16\n : 0,\n });\n } else {\n setEntry({ ...growthEntry, baby_id: babyPageBD.child_id });\n }\n } else {\n setEntry({ ...growthEntry, baby_id: babyPageBD.child_id });\n }\n\n if (i !== -1 && !!searchMilestones) {\n setMilestone(\n searchMilestones[\n holiday ? \"holiday_milestones\" : \"all_milestones\"\n ][i],\n );\n\n sagaMiddleware.run(\n fetchQuestions,\n searchMilestones[\n holiday ? \"holiday_milestones\" : \"all_milestones\"\n ][i].title_name,\n (questionsRes: QuestionItem[]) => {\n if (!!questionsRes && !!questionsRes.length) {\n for (let question of questionsRes) {\n let questionsFixed = [...question.answers];\n if (!!question.multiple_choice) {\n let matchedAnswerQuestion = bp.answers.find(\n (answer: any) => answer.question_id === question.id,\n );\n if (!!matchedAnswerQuestion) {\n for (let answerString of matchedAnswerQuestion.answer_string) {\n let missingAnswer =\n !question.answers.includes(answerString);\n if (missingAnswer) {\n questionsFixed.push(answerString);\n }\n }\n question.answers = [...questionsFixed];\n }\n }\n }\n setQuestions(questionsRes);\n }\n },\n );\n } else {\n Modal.error({\n title: \"Error\",\n content: \"Milestone not found\",\n });\n history.push(\"/\");\n }\n\n setControl({\n valid: true,\n step:\n !!missingContent && !!photosRightSide.length\n ? 4\n : !!missingContent\n ? 3\n : 4,\n });\n } catch (error) {\n Modal.error({\n title: \"Error\",\n content: error.message\n ? error.message\n : \"Error loading BabyPage\",\n });\n history.push(\"/\");\n }\n\n setLoaded(true);\n setLoading(false);\n },\n );\n }\n return;\n } else if (!!babySelected) {\n const milestoneId = queryString.parse(location.search).milestoneId; // If is create\n if (!!milestoneId) {\n const milestoneBaby = milestones.find(\n (milestone) => milestone.id === babySelected.id,\n );\n if (!!milestoneBaby) {\n const searchMilestone = [\n ...milestoneBaby.all_milestones,\n ...milestoneBaby.holiday_milestones,\n ].find(\n (milestone) => milestone.id === parseInt(milestoneId.toString()),\n );\n\n if (!!searchMilestone) {\n setMilestone(searchMilestone);\n\n sagaMiddleware.run(\n fetchQuestions,\n searchMilestone.title_name,\n (questionsRes: QuestionItem[]) => {\n if (!!questionsRes && !!questionsRes.length) {\n setQuestions(questionsRes);\n }\n },\n );\n\n let babyBirth = moment(\n babySelected.baby_birthdate.replace(\" 00:00:00\", \"\"),\n );\n\n const event = searchMilestone.title_name;\n const ageWeeks = searchMilestone.age_weeks || 0;\n const isBirth = event === \"Birth Announcement\";\n\n // Setting id for quarantine milestone depending on the enviroment\n // This ID should never change at db if it changes then this hardcoded\n // options should change.\n const quarantineMilestoneID = PRODUCTION ? 195 : 228;\n\n let ordinal = \"\";\n let growthEntry = { ...entry };\n\n if (\n ageWeeks < 0 &&\n searchMilestone.active_date !== \"0000-00-00\" &&\n !isBirth\n ) {\n babyBirth = moment(searchMilestone.active_date);\n ordinal = addSuffix(parseInt(babyBirth.format(\"D\")));\n } else if (!isBirth) {\n if (\n !!searchMilestone.age_months &&\n parseInt(searchMilestone.age_months) > 0\n ) {\n babyBirth = babyBirth.add(\n parseInt(searchMilestone.age_months),\n \"months\",\n );\n growthEntry = checkIfEntryExist(babyBirth);\n } else if (event.toLowerCase() === \"custom page\") {\n babyBirth = moment();\n } else if (\n !!searchMilestone.age_weeks &&\n !isNaN(searchMilestone.age_weeks) &&\n searchMilestone.age_weeks > 0\n ) {\n babyBirth =\n searchMilestone.id === quarantineMilestoneID\n ? babyBirth\n : babyBirth.add(searchMilestone.age_weeks, \"weeks\");\n growthEntry = checkIfEntryExist(babyBirth);\n }\n setEntry({\n ...growthEntry,\n });\n ordinal = addSuffix(parseInt(babyBirth.format(\"D\")));\n } else {\n if (\n !!babySelected &&\n !!babySelected.heights &&\n !!babySelected.weights &&\n !!babySelected.heights.length &&\n !!babySelected.weights.length\n ) {\n // Add Birth Answers\n const firstHeight = babySelected.heights[0];\n const firstWeight = babySelected.weights[0];\n\n const oz = parseInt(firstWeight.oz) % 16;\n const lbs = ~~(parseInt(firstWeight.oz) / 16);\n\n let preparedAnswers: any[] = [];\n if (isBirth) {\n let firstAnswer = `${\n !!babySelected.baby_birthdate\n ? `${moment(babySelected.baby_birthdate).format(\n \"MMMM Do, YYYY\",\n )}`\n : \"\"\n }`;\n\n if (firstAnswer) {\n preparedAnswers = preparedAnswers.concat({\n answer: firstAnswer,\n answer_string: [firstAnswer],\n position: 1,\n question_id: -1002,\n type: \"custom\",\n });\n }\n let secondAnswer = `${\n !!babySelected.baby_birth_time\n ? `${babySelected.baby_birth_time}`\n : \"\"\n }`;\n\n if (secondAnswer) {\n secondAnswer =\n secondAnswer.charAt(0) === \"0\"\n ? secondAnswer.slice(1, secondAnswer.length)\n : secondAnswer;\n\n preparedAnswers = preparedAnswers.concat({\n answer: secondAnswer,\n answer_string: [secondAnswer],\n position: 2,\n question_id: -1003,\n type: \"custom\",\n });\n }\n\n let weightAnswer = `${lbs >= 0 ? `${lbs} lbs` : \"\"}${\n oz >= 0 ? `${oz >= 0 ? \" \" : \"\"}${oz} oz,` : \"\"\n }`;\n let heightAnswer = `${\n !!firstHeight.height && parseFloat(firstHeight.height) > 0\n ? ` ${firstHeight.height} Inches`\n : ` ${parseFloat(firstHeight.height).toFixed(1)} Inches`\n }`;\n let thirdAnswer: string;\n if (parseFloat(firstHeight.height) <= 0 && lbs + oz <= 0) {\n thirdAnswer = \"\";\n } else {\n thirdAnswer = weightAnswer + heightAnswer;\n }\n\n if (thirdAnswer) {\n preparedAnswers = preparedAnswers.concat({\n answer: thirdAnswer,\n answer_string: [thirdAnswer],\n position: 3,\n question_id: -999,\n type: \"custom\",\n });\n }\n let fourthAnswer = `${\n !!babySelected.baby_birthplace\n ? `${babySelected.baby_birthplace}`\n : \"\"\n }`;\n\n if (fourthAnswer) {\n preparedAnswers = preparedAnswers.concat({\n answer: fourthAnswer,\n answer_string: [fourthAnswer],\n position: 4,\n question_id: -1001,\n type: \"custom\",\n });\n }\n } else {\n let answer = `${lbs > 0 ? `${lbs} lbs` : \"\"}${\n oz > 0 ? `${oz > 0 ? \" and \" : \"\"}${oz} oz` : \"\"\n }${\n !!firstHeight.height ? ` ${firstHeight.height} Inches` : \"\"\n }${\n !!babySelected.baby_birthplace\n ? ` ${babySelected.baby_birthplace}`\n : \"\"\n }`;\n\n preparedAnswers = preparedAnswers.concat({\n answer,\n answer_string: [answer],\n position: 1,\n question_id: -999,\n type: \"custom\",\n });\n }\n\n setBabyPage((state) => ({\n ...state,\n answers: preparedAnswers,\n }));\n }\n\n ordinal = addSuffix(parseInt(babyBirth.format(\"D\")));\n }\n\n let initialTitle;\n let milestoneTitle;\n let today = moment().format(\"MMMM Do, YYYY\");\n if (!draftBabyPage.title) {\n if (ageWeeks === -800) {\n today = moment().format(\"YYYY-MM-DD 00:00:00\");\n // Event Milestone\n initialTitle = moment().format(\"MMMM Do, YYYY\");\n milestoneTitle = today;\n } else if (ageWeeks === -700 || ageWeeks === -2) {\n if (ageWeeks === -700) {\n // Pregnancy Milestone\n initialTitle = moment(babySelected.baby_birthdate)\n .subtract(\n STANDARD_WEEKS_FOR_PREGNANCY_MILESTONE -\n searchMilestone.pregnancy_weeks,\n \"week\",\n )\n .format(\"MMMM Do, YYYY\");\n milestoneTitle = initialTitle;\n setMilestoneDate(milestoneTitle);\n } // Photo Only Milestone\n else initialTitle = today;\n milestoneTitle = initialTitle;\n } else if (ageWeeks === -1) {\n // Custom Milestone\n milestoneTitle = moment().format(\"YYYY-MM-DD 00:00:00\");\n initialTitle = today;\n } else {\n // MileStone Date\n initialTitle = babyBirth.format(`MMMM [${ordinal},] YYYY`);\n milestoneTitle = initialTitle;\n }\n setMilestoneDate(milestoneTitle);\n setSubTitle(initialTitle);\n setTitle(\n ageWeeks < 0\n ? event.toLowerCase() === \"custom page\"\n ? \"\"\n : ageWeeks === -800\n ? `${babySelected.baby_first_name}${\n babySelected.baby_first_name.toLocaleLowerCase()[\n babySelected.baby_first_name.length - 1\n ] === \"s\"\n ? \"'\"\n : \"'s\"\n } ${event}`\n : event\n : ageWeeks === 0\n ? `${babySelected.baby_first_name}${\n !!babySelected.baby_middle_name\n ? ` ${babySelected.baby_middle_name}`\n : \"\"\n } ${babySelected.baby_last_name}`\n : searchMilestone.id === quarantineMilestoneID\n ? event\n : `${babySelected.baby_first_name} at ${event}`,\n );\n } else if (\n !!draftBabyPage &&\n !!draftBabyPage.title &&\n !!draftBabyPage.subTitle\n ) {\n setTitle(draftBabyPage.title);\n setSubTitle(draftBabyPage.subTitle);\n }\n setLoaded(true);\n return;\n }\n }\n }\n }\n\n history.push(\"/\");\n }, [\n milestones,\n location.search,\n babySelected,\n history,\n borders,\n illustrations,\n babyPage,\n loaded,\n ]);\n\n // Automatic select first border available\n useEffect(() => {\n if (\n borders &&\n !!borders.length &&\n !babyPage.borderSelected &&\n !draftBabyPage.borderSelected\n ) {\n setBabyPage((state) => ({\n ...state,\n borderSelected:\n !!user.user_level && user.user_level === 1\n ? borders[0]\n : borders.filter((b) => !b.is_plus)[0],\n }));\n }\n }, [borders, babyPage.borderSelected, user.user_level]);\n\n /**\n * Update Photos or Layout Selected\n * @param {SaveBabyPagePhoto[]} photos // Selected Photos\n * @param {Layout} layout // Selected Layout\n * @param {boolean} forceRecrop // If should force recrop photos (layout change)\n */\n const setPhotos = useCallback(\n async (\n photos: SaveBabyPagePhoto[],\n layout: Layout,\n forceRecrop: boolean = false,\n step: number = control.step,\n ) => {\n const layoutInfo = getLayoutInfos(layout);\n if (babyPage.layout !== layout && step === 0) {\n photos = photos.filter((photo) => photo.base64_cropped !== \"\");\n while (layoutInfo.length < photos.length) {\n photos.splice(photos.length - 1, 1);\n }\n while (layoutInfo.length > photos.length) {\n photos.push({\n base64_cropped: \"\",\n });\n }\n\n photos = await checkPhotoLayouts(\n photos,\n layout,\n layoutInfo,\n true,\n babyPage.layout,\n );\n } else if (isPhotoOnly && step === 1) {\n if (babyPage.layoutRightSide !== layout) {\n photos = photos.filter((photo) => photo.base64_cropped !== \"\");\n while (layoutInfo.length < photos.length) {\n photos.splice(photos.length - 1, 1);\n }\n while (layoutInfo.length > photos.length) {\n photos.push({\n base64_cropped: \"\",\n });\n }\n\n photos = await checkPhotoLayouts(\n photos,\n layout,\n layoutInfo,\n true,\n babyPage.layoutRightSide,\n );\n }\n } else if (forceRecrop) {\n photos = await checkPhotoLayouts(photos, layout, layoutInfo);\n }\n\n if (isPhotoOnly && control.step === 1) {\n photos = photos.map((photo) => {\n photo.side = \"right\";\n return photo;\n });\n setBabyPage((old) => ({\n ...old,\n font: \"Montserrat-Regular\",\n photosRightSide: photos,\n layoutRightSide: layout,\n somethingChanged: true,\n label_left_position: babyPage.label_left_position\n ? babyPage.label_left_position\n : \"bottom-left\",\n label_right_position: babyPage.label_right_position\n ? babyPage.label_right_position\n : \"bottom-right\",\n }));\n } else if (!isPhotoOnly || (isPhotoOnly && control.step === 0)) {\n if (isPhotoOnly) {\n photos = photos.map((photo) => {\n photo.side = \"left\";\n return photo;\n });\n }\n setBabyPage((old) => ({\n ...old,\n photos,\n layout,\n somethingChanged: true,\n }));\n }\n\n setControl((state) => ({\n ...state,\n valid:\n photos.filter((photo) => photo.base64_cropped !== \"\").length ===\n layoutInfo.length,\n }));\n\n if (isPhotoOnly && control.step === 1) {\n setControl((state) => ({\n ...state,\n valid:\n photos.filter((photo) => photo.base64_cropped !== \"\").length ===\n layoutInfo.length,\n }));\n }\n },\n [babyPage, milestone, control.step],\n );\n\n // Set Answers Information\n const setAnswers = useCallback((answers: QuestionAnswer[]) => {\n setBabyPage((state) => ({\n ...state,\n answers,\n label_url: undefined,\n thumbnail_content: undefined,\n }));\n }, []);\n\n // Set Font Information\n const setFont = useCallback((font: string, font_id: number) => {\n setBabyPage((state) => ({\n ...state,\n font,\n label_url: undefined,\n thumbnail_content: undefined,\n font_id,\n }));\n }, []);\n\n // Set Text Align Information\n const setTextAlign = useCallback((textAlign: \"start\" | \"center\" | \"end\") => {\n setBabyPage((state) => ({\n ...state,\n textAlign,\n label_url: undefined,\n thumbnail_content: undefined,\n }));\n }, []);\n\n // Set Border Information\n const setBorder = useCallback((borderSelected: Border) => {\n setBabyPage((state) => ({\n ...state,\n borderSelected,\n label_url: undefined,\n thumbnail_content: undefined,\n }));\n }, []);\n\n // Set Illustration Information\n const setIllustration = useCallback(\n (illustrationSelected: Illustration | undefined) => {\n setBabyPage((state) => ({\n ...state,\n illustrationSelected,\n label_url: undefined,\n thumbnail_content: undefined,\n }));\n },\n [],\n );\n\n // Set Background Information\n const setBackground = useCallback(\n (backgroundSelected: Background | undefined) => {\n setBabyPage((state) => ({\n ...state,\n backgroundSelected,\n label_url: undefined,\n thumbnail_content: undefined,\n }));\n },\n [],\n );\n\n const saveBeforeUpgradeToPlus = () => {\n const milestoneId = queryString.parse(location.search).milestoneId; // If is create\n const babyPageObject = {\n ...babyPage,\n milestoneId,\n textAnswers,\n title,\n subTitle,\n };\n sagaMiddleware.run(setDraftBabyPage, babyPageObject);\n history.push(\"/cart/subscription/yearly\");\n };\n\n const sendToUpgradeToPlus = () => {\n history.push(\"/cart/subscription/yearly\");\n };\n\n const confirmSaveFeature = useCallback(async () => {\n const freeBorderSelected = borders.filter((border) => !border.is_plus);\n const freeFontSelected = fonts.filter((font) => !font.plus);\n const isFreeLayout =\n babyPage.layout === \"layout1A\" ||\n babyPage.layout === \"layout2A\" ||\n babyPage.layout === \"layout2B\";\n let newPhoto;\n\n if (babyPage.photos.length <= 2 && isFreeLayout) {\n newPhoto = babyPage.photos;\n } else {\n newPhoto = babyPage.photos.splice(0, 1);\n }\n\n setPhotos(newPhoto, initialBabyPage.layout);\n setBorder(freeBorderSelected[0]);\n setIllustration(undefined);\n setBabyPage((state) => ({\n ...state,\n layout: isFreeLayout ? babyPage.layout : initialBabyPage.layout,\n font: selectedPlus.font ? freeFontSelected[0].name : babyPage.font,\n font_id: selectedPlus.font ? freeFontSelected[0].id : babyPage.font_id,\n }));\n setPlusOpen(false);\n setSaveWithoutPlus(true);\n }, [babyPage, selectedPlus]);\n\n // Save free features\n const saveFreeFeatures = async () => {\n confirm({\n title: (\n <>\n

Are you sure?

\n

\n Do you want to remove all PLUS features of your BabyPage and save\n the free version?\n

\n \n ),\n okText: \"Save\",\n okType: \"primary\",\n cancelText: \"Cancel\",\n width: 300,\n icon: \"warning\",\n async onOk() {\n await confirmSaveFeature();\n },\n });\n };\n\n const ageWeeks = useMemo(\n () => (!!milestone ? milestone.age_weeks : 0),\n [milestone],\n );\n\n // Separate what is Question and Height/Weight part\n const [cleanedQuestions, heightQuestions] = useMemo(() => {\n if (!!babySelected) {\n const cleanedQuestions: QuestionItem[] = [];\n const heightQuestions: QuestionItem[] = [];\n\n cleanQuestions(questions, babySelected).forEach((e) => {\n if (e.id === null) heightQuestions.push(e);\n else cleanedQuestions.push(e);\n });\n\n // age_weeks=-800 means first event milestone\n // age_weeks=-700 means pregnancy milestone\n if (\n milestone?.age_weeks === -800 ||\n (milestone?.age_weeks === -700 && !!milestone.date_required)\n ) {\n cleanedQuestions.push({\n id: milestone?.age_weeks === -800 ? -800 : -700,\n title: \"When did this milestone take place?\",\n question: \"When did this milestone take place?\",\n export: \"\",\n answers: [\"\"],\n multiple_choice: 3,\n milestone_id: milestone?.id || 0,\n order: cleanedQuestions.length + 1,\n created_at: \"\",\n deleted_at: \"\",\n updated_at: \"\",\n type: milestone?.age_weeks === -800 ? \"first_event\" : \"pregnancy\",\n });\n }\n\n return [cleanedQuestions, heightQuestions];\n }\n return [[], []];\n }, [questions, babySelected, milestone]);\n\n const setCustomAnswers = useCallback(\n (changedAnswers: SimplifiedAnswer[]) =>\n setCustomAnswersHelper(setBabyPage, changedAnswers),\n [],\n );\n\n const setSortedAnswers = useCallback(\n (orderedAnswers: SimplifiedAnswer[]) =>\n setSortedAnswersHelper(setBabyPage, orderedAnswers),\n [],\n );\n\n const addCustomAnswer = useCallback(\n (answer: string) => addCustomAnswerHelper(setBabyPage, answer),\n [],\n );\n\n const removeAnswer = useCallback((index: number) => {\n setBabyPage((state) => ({\n ...state,\n answers: ((): QuestionAnswer[] => {\n const newAnswers = cloneDeep(state.answers);\n newAnswers.splice(index, 1);\n return newAnswers;\n })(),\n label_url: undefined,\n }));\n }, []);\n let repair: any = queryString.parse(location.search).repair;\n const getTextMessageByStep = () => {\n const { step: currentStep } = control;\n let repair: any = queryString.parse(location.search).repair;\n\n if (currentStep === 1 && !isPhotoOnly) {\n return \"SKIP\";\n } else if (currentStep === 4 || (currentStep === 2 && isPhotoOnly)) {\n if (repair) {\n return \"REPAIR\";\n }\n return \"FINISH\";\n }\n return \"NEXT\";\n };\n\n const answersArray: SimplifiedAnswer[] = useMemo(() => {\n const answersArray: SimplifiedAnswer[] = [];\n\n if (!babySelected) return answersArray;\n\n const answers = babyPage.answers;\n answers.forEach((answer: any) => {\n if (answer.answer === null) {\n answer.answer = \"[anwser here]\";\n }\n });\n\n if (!answers || !answers.length) return answersArray;\n\n const [height, weight] = [\n answers.find((a) => a.type === \"height\"),\n answers.find((a) => a.type === \"weight\"),\n ];\n\n if (\n height &&\n !!height.answer_string.length &&\n weight &&\n !!weight.answer_string.length\n ) {\n const totalWeight = parseInt(weight.answer_string[0]);\n const [lbs, oz] = [~~(totalWeight / 16), totalWeight % 16];\n const growthAnswer = exportGrowthAnswer(\n parseFloat(height.answer_string[0]),\n lbs,\n oz,\n babySelected,\n );\n if (!!growthAnswer) {\n answersArray.push({\n answer: growthAnswer,\n question_id: null,\n type: \"height_weight\",\n });\n }\n }\n\n // age_weeks=-800 means first event milestone\n // age_weeks=-700 means pregnancy milestone\n if (milestone?.age_weeks === -800 || milestone?.age_weeks === -700) {\n const firstEventDate = answers.filter(\n (answer) =>\n (answer.type === \"first_event\" && !!answer.answer_string.length) ||\n (answer.type === \"pregnancy\" && !!answer.answer_string.length),\n );\n\n if (firstEventDate[0]) {\n setSubTitle(\n exportAnswer(\n firstEventDate[0].answer_string,\n firstEventDate[0].question_export || firstEventDate[0].answer,\n ),\n );\n }\n }\n const hasHeightAndWeight = answersArray.some(\n (answer) => answer.type === \"height_weight\",\n );\n\n const filteredAnswers = hasHeightAndWeight\n ? answers.filter(\n (answer) =>\n (answer.type === \"question\" ||\n answer.type === \"custom\" ||\n answer.type === \"first_event\" ||\n answer.type === \"pregnancy\" ||\n answer.type === \"height_weight\") &&\n !!answer.answer_string.length,\n )\n : answers.filter(\n (answer) =>\n (answer.type === \"question\" ||\n answer.type === \"custom\" ||\n answer.type === \"first_event\" ||\n answer.type === \"pregnancy\" ||\n answer.type === \"height\" ||\n answer.type === \"weight\" ||\n answer.type === \"height_weight\") &&\n !!answer.answer_string.length,\n );\n\n //we should not show answers of type first event\n return answersArray.concat(\n filteredAnswers.map((answer) =>\n answer.type === \"custom\"\n ? {\n answer: answer.answer,\n question_id: answer.question_id,\n type: answer.type,\n }\n : {\n answer: capitalizeText(\n exportAnswer(\n answer.answer_string,\n answer.question_export || answer.answer,\n ),\n ),\n question_id: answer.question_id,\n type: answer.type,\n answer_string: answer.answer_string,\n },\n ),\n );\n }, [babyPage.answers, babySelected, milestone]);\n\n // Mount Text Answer (Content Part)\n const textAnswers: string = useMemo(() => {\n if (answersArray.length === 0) setIsTruncated(false);\n\n if (milestone?.title === \"Birth Announcement\") {\n return answersArray.map((a) => a.answer).join(\"\\n\");\n }\n\n //we should not show answers of type first event\n const result = answersArray\n .filter(\n (a) => a.answer && a.type !== \"first_event\" && a.type !== \"pregnancy\",\n )\n .map((a) => a.answer)\n .join(\" \");\n\n if (result.trim().length === 0) setIsTruncated(false);\n\n return result;\n }, [answersArray, milestone, babyPage.answers]);\n\n let responsesImageLeft: any, responsesImageRight: any;\n const [photosTobeSaved, setPhotosToBeSaved] = useState({});\n const [triggerPhotoUpdate, setTriggerPhotoUpdate] = useState(false);\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n let allPhotos = isPhotoOnly\n ? [...babyPage.photos, ...babyPage.photosRightSide]\n : [...babyPage.photos];\n if (control.step === 4) {\n let hasMissingImages = allPhotos.some((item) => {\n return item.base64 === babyPage.placeholder;\n });\n if (hasMissingImages) {\n setDisabled(true);\n } else if (!hasMissingImages) {\n setDisabled(false);\n }\n }\n }, [\n JSON.stringify(babyPage.photos),\n JSON.stringify(babyPage.photosRightSide),\n control.step,\n ]);\n useEffect(() => {\n setBabyPage((old) => ({\n ...old,\n photosUploaded: 2,\n }));\n }, [triggerPhotoUpdate]);\n\n useEffect(() => {\n if (isPhotoOnly && control.step === 1) {\n setControl((old) => ({\n ...old,\n valid: false,\n }));\n }\n }, [control.step]);\n\n useEffect(() => {\n setBabyPage((old) => ({\n ...old,\n photosUploaded: 2,\n }));\n }, [photosTobeSaved]);\n\n const [qIndex, setQIndex] = useState(0);\n const [customAnswer, setCustomAnswer] = useState(\"\");\n const hasQuestions = useMemo(\n () =>\n !!cleanedQuestions && !!cleanedQuestions.length && !!cleanedQuestions[0],\n [questions],\n );\n\n const answer = useMemo(\n () =>\n hasQuestions\n ? babyPage.answers.find(\n (e) => e.question_id === cleanedQuestions[qIndex].id,\n )\n : undefined,\n [babyPage.answers, qIndex, questions, hasQuestions],\n );\n const checked = useMemo(() => (answer ? answer.answer_string : []), [answer]);\n\n const changeAnswer = useCallback(\n (answer: QuestionAnswer) => {\n if (babyPage.answers.length === 0) return setAnswers([answer]);\n const index = babyPage.answers.findIndex((e) =>\n e.question_id !== null && answer.question_id !== null\n ? e.question_id === answer.question_id\n : e.type === answer.type,\n );\n if (index === -1) return setAnswers([...babyPage.answers, answer]);\n else if (\n babyPage.answers[index].answer_string.toString() !==\n answer.answer_string.toString()\n ) {\n const newAnswers = [...babyPage.answers];\n newAnswers[index] = answer;\n setAnswers(newAnswers);\n }\n },\n [babyPage.answers, setAnswers],\n );\n\n const addQuestion = (question: QuestionItem) => {\n if (customAnswer === \"\") return;\n const otherAnswer = customAnswer;\n setCustomAnswer(\"\");\n\n const answer_string = [...checked, otherAnswer] as string[];\n const newAnswer: QuestionAnswer = answer\n ? {\n ...answer,\n answer_string,\n answer: multipleAnswers(question.export, answer_string),\n }\n : {\n question_id: question.id,\n position: !!question.order ? question.order : 0,\n answer_string,\n answer: question.export,\n type: question.type,\n };\n\n changeAnswer(newAnswer);\n setQuestions((cleanedQuestions: QuestionItem[]) =>\n cleanedQuestions.map((q: QuestionItem) =>\n q.id === question.id\n ? { ...q, answers: [...q.answers, otherAnswer] }\n : q,\n ),\n );\n };\n\n const uploadPhotosToS3 = useCallback(async () => {\n setSaveStep(\"genImg\");\n setDisabled(true);\n\n let cPhotos: HTMLCanvasElement | null = null;\n let cContent: HTMLCanvasElement | null = null;\n let label_url = !!babyPage.label_url ? babyPage.label_url : undefined;\n\n try {\n const photoGrid = document.getElementById(\"photo-grid-bp\");\n if (!!photoGrid) {\n cPhotos = await html2canvas(photoGrid, { ...highRes, scale: 1 });\n\n if (isPhotoOnly) {\n cContent = null;\n }\n }\n\n if (!!cPhotos && !!milestone && !!babySelected) {\n // First send images to S3 and Get URL\n var imageCPhoto = await canvasToBlobPromise(cPhotos);\n\n const photosRightToS3: FileUploadS3[] = [\n {\n image: imageCPhoto,\n folder: \"bps_content\",\n },\n ...(babyPage.photosRightSide\n .filter((photo) => !!photo.file)\n .map((photo) => ({\n image: photo.file,\n folder: \"photos\",\n baby_id: babySelected.id,\n gallery_image: photo.isLocal\n ? null\n : photo.name?.split(\"/\").slice(-1)[0],\n })) as FileUploadS3[]),\n ];\n if (control.step === 1 && isPhotoOnly) {\n sagaMiddleware.run(\n savePhotosS3,\n photosRightToS3,\n (err: string | null, responses?: FileUploadedS3[]) => {\n if (err !== null) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n setLoading(false);\n setSaveStep(null);\n return;\n } else if (!!responses) {\n responsesImageRight = responses;\n let photosRightToBeSaved: any;\n photosRightToBeSaved = {\n photos_right: babyPage.photosRightSide.map(\n (photo: SaveBabyPagePhoto, index: number) => ({\n zoom: calculateZoom(\n photo,\n getAspectFromLayout(babyPage.layoutRightSide, index),\n ),\n name: responsesImageRight[index + 1].high_res,\n croppedData: photo.croppedData,\n origin: calculateOrigin(photo),\n originPercent: calculateOriginPercent(photo),\n rotation: !!photo.croppedData\n ? photo.croppedData.rotate\n : 0,\n label_url:\n index === 0\n ? !!label_url\n ? babyPage.label_url_file\n ? babyPage.label_url_file\n : responsesImageRight[\n responsesImageRight.length - 1\n ].high_url\n : undefined\n : undefined,\n }),\n ),\n };\n setPhotosToBeSaved((old) => ({\n ...old,\n ...photosRightToBeSaved,\n }));\n setDisabled(false);\n }\n },\n );\n }\n } else {\n setLoading(false);\n setSaveStep(null);\n }\n } catch (error) {\n setBabyPage((state) => ({ ...state, label_url }));\n setLoading(false);\n setSaveStep(null);\n\n Modal.error({\n title: \"Error\",\n content: error.message,\n });\n }\n setLoading(false);\n }, [isPhotoOnly, babyPage, control.step, photosTobeSaved]);\n\n const uploadThumbnailsAndSaveBP = useCallback(async () => {\n setLoading(true);\n setSaveStep(\"genImg\");\n const hasEntry = answersArray.filter(\n (a) =>\n a.type === \"height_weight\" ||\n a.type === \"weight\" ||\n a.type === \"height\",\n );\n\n if (!!hasEntry.length && !isFutureDate) {\n saveGrowthChartEntry();\n }\n\n const border = !!babyPage.borderSelected\n ? lastSegmentUrl(babyPage.borderSelected.image_url)\n : null;\n const illustration = !!babyPage.illustrationSelected\n ? lastSegmentUrl(babyPage.illustrationSelected.image_url)\n : \"\";\n const background_color = !!babyPage.backgroundSelected\n ? babyPage.backgroundSelected.color\n : \"#ffffff\";\n\n let cPhotos: HTMLCanvasElement | null = null;\n let cContent: HTMLCanvasElement | null = null;\n let cAnswers: HTMLCanvasElement | null = null;\n let label_url = !!babyPage.label_url ? babyPage.label_url : undefined;\n\n try {\n if (!!babyPage.borderSelected) {\n const borderWithBase64 = {\n ...babyPage.borderSelected,\n image_b64: await getBase64FromFileUrl(\n babyPage.borderSelected.image_url,\n `${BASE_URL}api/avoid-cors?url=`,\n ),\n };\n setBorder(borderWithBase64);\n }\n\n if (!!babyPage.illustrationSelected) {\n const illustrationWithBase64 = {\n ...babyPage.illustrationSelected,\n image_b64: await getBase64FromFileUrl(\n babyPage.illustrationSelected.image_url,\n `${BASE_URL}api/avoid-cors?url=`,\n ),\n };\n setIllustration(illustrationWithBase64);\n }\n\n if (!!textAnswers && !label_url) {\n const answersElement = document.getElementById(\"bp-answers\");\n if (!!answersElement) {\n cAnswers = await html2canvas(answersElement, {\n backgroundColor: \"transparent\",\n });\n\n if (!!cAnswers) {\n label_url = cAnswers.toDataURL(\"image/png\", {\n backgroundColor: \"transparent\",\n });\n }\n }\n }\n\n await delay(300);\n const photoGrid = document.getElementById(\"photo-grid-bp\");\n const content = document.getElementById(\"content-bp\");\n\n if (!!photoGrid && !!content) {\n cPhotos = await html2canvas(photoGrid, { ...highRes, scale: 1 });\n\n if (isPhotoOnly) {\n cContent = await html2canvas(content, { ...highRes, scale: 1 });\n } else {\n cContent = await html2canvas(content, {\n ...highResContent,\n scale: 1,\n backgroundColor: !!babyPage.backgroundSelected\n ? babyPage.backgroundSelected.color\n : \"#ffffff\",\n });\n }\n }\n if (!!cPhotos && !!cContent && !!milestone && !!babySelected) {\n // First send images to S3 and Get URL\n var imageCPhoto = await canvasToBlobPromise(cPhotos);\n var imageCContent = await canvasToBlobPromise(cContent);\n\n const photosToS3: FileUploadS3[] = [\n {\n image: imageCPhoto,\n folder: \"bps\",\n },\n {\n image: imageCContent,\n folder: \"bps_content\",\n },\n ...(babyPage.photos\n .filter((photo) => !!photo.file)\n .map((photo) => ({\n image: photo.file,\n folder: \"photos\",\n baby_id: babySelected.id,\n gallery_image: photo.isLocal\n ? null\n : photo.name?.split(\"/\").slice(-1)[0],\n })) as FileUploadS3[]),\n ];\n\n const photosRightToS3: FileUploadS3[] = [\n // {\n // image: imageCPhoto,\n // folder: \"bps\",\n // },\n {\n image: imageCContent,\n folder: \"bps_content\",\n },\n ...(babyPage.photosRightSide\n .filter((photo) => !!photo.file)\n .map((photo) => ({\n image: photo.file,\n folder: \"photos\",\n baby_id: babySelected.id,\n gallery_image: photo.isLocal\n ? null\n : photo.name?.split(\"/\").slice(-1)[0],\n })) as FileUploadS3[]),\n ];\n if (!!label_url && !babyPage.label_url_file) {\n photosToS3.push({\n image: b64toBlob(label_url, \"image/png\"),\n folder: \"photos\",\n });\n }\n\n if (triggerPhotoUpdate === true) {\n let babyPageToSave = {};\n sagaMiddleware.run(\n savePhotosS3,\n photosToS3,\n (err: string | null, responses?: FileUploadedS3[]) => {\n if (err !== null) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n setLoading(false);\n setSaveStep(null);\n return;\n } else if (!!responses) {\n responsesImageLeft = responses;\n let allPhotos = {};\n let photosLeftToBeSaved: any;\n photosLeftToBeSaved = {\n photos: babyPage.photos.map(\n (photo: SaveBabyPagePhoto, index: number) => ({\n zoom: calculateZoom(\n photo,\n getAspectFromLayout(babyPage.layout, index),\n ),\n name: responsesImageLeft[index + 2].high_res,\n croppedData: photo.croppedData,\n origin: calculateOrigin(photo),\n originPercent: calculateOriginPercent(photo),\n rotation: !!photo.croppedData\n ? photo.croppedData.rotate\n : 0,\n label_url:\n index === 0\n ? !!label_url\n ? babyPage.label_url_file\n ? babyPage.label_url_file\n : responsesImageLeft[\n responsesImageLeft.length - 1\n ].high_url\n : undefined\n : undefined,\n }),\n ),\n };\n allPhotos = {\n ...photosLeftToBeSaved,\n };\n\n if (isPhotoOnly) {\n sagaMiddleware.run(\n savePhotosS3,\n photosRightToS3,\n (err: string | null, responses?: FileUploadedS3[]) => {\n if (err !== null) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n setLoading(false);\n setSaveStep(null);\n return;\n } else if (!!responses) {\n responsesImageRight = responses;\n let photosRightToBeSaved: any;\n photosRightToBeSaved = {\n photos_right: babyPage.photosRightSide.map(\n (photo: SaveBabyPagePhoto, index: number) => ({\n zoom: calculateZoom(\n photo,\n getAspectFromLayout(\n babyPage.layoutRightSide,\n index,\n ),\n ),\n name: responsesImageRight[index + 1].high_res,\n croppedData: photo.croppedData,\n origin: calculateOrigin(photo),\n originPercent: calculateOriginPercent(photo),\n rotation: !!photo.croppedData\n ? photo.croppedData.rotate\n : 0,\n label_url:\n index === 0\n ? !!label_url\n ? babyPage.label_url_file\n ? babyPage.label_url_file\n : responsesImageRight[\n responsesImageRight.length - 1\n ].high_url\n : undefined\n : undefined,\n }),\n ),\n };\n allPhotos = {\n ...allPhotos,\n ...photosRightToBeSaved,\n };\n babyPageToSave = {\n ...allPhotos,\n id: !!babyPage.id ? babyPage.id : undefined,\n milestone_id: milestone.id,\n event: milestone.title_name,\n title: babyPage.label_left_text\n ? babyPage.label_left_text\n : babyPage.label_right_text\n ? babyPage.label_right_text\n : \"BabyPage\",\n subtitle: subTitle,\n background_color: isPhotoOnly\n ? null\n : background_color,\n font: babyPage.font,\n font_id: babyPage.font_id,\n font_alignment: babyPage.textAlign,\n font_size: \"15\",\n illustration: isPhotoOnly ? null : illustration,\n answers: isPhotoOnly\n ? null\n : babyPage.answers.map((answer) => ({\n answerString: answer.answer_string,\n answers: answer.answer,\n question_id: answer.question_id,\n type: answer.type,\n position: answer.position,\n })),\n layout: babyPage.layout,\n layout_right: babyPage.layoutRightSide,\n border,\n child_id: !!repair\n ? babyPage.child_id\n : babySelected.id,\n parent_id: babySelected.baby_parent_id,\n version: \"web\",\n thumbnail: responsesImageLeft[0].thumbnail,\n thumbnail_content: responsesImageRight[0].thumbnail,\n label_left_text: babyPage.label_left_text\n ? babyPage.label_left_text\n : null,\n label_right_text: babyPage.label_right_text\n ? babyPage.label_right_text\n : null,\n label_left_position:\n babyPage.label_left_text &&\n babyPage.label_left_position\n ? babyPage.label_left_position\n : babyPage.label_left_text\n ? \"bottom-left\"\n : \"no-label\",\n label_right_position:\n babyPage.label_right_text &&\n babyPage.label_right_position\n ? babyPage.label_right_position\n : babyPage.label_right_text\n ? \"bottom-left\"\n : \"no-label\",\n original_title: milestoneDate,\n };\n setSaveStep(\"saveBabyPage\");\n sagaMiddleware.run(\n saveBabyPageSaga,\n babyPageToSave,\n (error?: any, id?: number) => {\n setLoading(false);\n setSaveStep(null);\n\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n return;\n }\n\n trackAction(\n \"SaveBabyPage\",\n {\n google: {\n event: \"save_baby_page\",\n },\n },\n true,\n );\n\n setBabyPage((old) => ({\n ...old,\n somethingChanged: false,\n }));\n\n notification.success({\n message: \"Success\",\n description: \"BabyPage saved successfully\",\n });\n\n setTimeout(() => {\n // Check if show rating form\n sagaMiddleware.run(checkUserModal, history);\n\n if (!!id) {\n history.push(`/babypages/after-save?id=${id}`);\n } else {\n history.push(\"/babypages\");\n }\n }, 300);\n },\n );\n }\n },\n );\n //is not photoOnly\n } else {\n babyPageToSave = {\n ...allPhotos,\n id: !!babyPage.id ? babyPage.id : undefined,\n milestone_id: milestone.id,\n event: milestone.title_name,\n title,\n subtitle: subTitle,\n background_color: isPhotoOnly ? null : background_color,\n font: babyPage.font,\n font_id: babyPage.font_id,\n font_alignment: babyPage.textAlign,\n font_size: \"15\",\n illustration: isPhotoOnly ? null : illustration,\n answers: isPhotoOnly\n ? null\n : babyPage.answers.map((answer) => ({\n answerString: answer.answer_string,\n answers: answer.answer,\n question_id: answer.question_id,\n type: answer.type,\n position: answer.position,\n })),\n layout: babyPage.layout,\n layout_right: babyPage.layoutRightSide,\n border,\n child_id: !!repair ? babyPage.child_id : babySelected.id,\n parent_id: babySelected.baby_parent_id,\n version: \"web\",\n thumbnail: responsesImageLeft[0].thumbnail,\n thumbnail_content: responsesImageLeft[1].thumbnail,\n label_left_text: babyPage.label_left_text\n ? babyPage.label_left_text\n : null,\n label_right_text: babyPage.label_right_text\n ? babyPage.label_right_text\n : null,\n label_left_position:\n babyPage.label_left_text && babyPage.label_left_position\n ? babyPage.label_left_position\n : babyPage.label_left_text\n ? \"bottom-left\"\n : \"no-label\",\n label_right_position:\n babyPage.label_right_text && babyPage.label_right_position\n ? babyPage.label_right_position\n : babyPage.label_right_text\n ? \"bottom-left\"\n : \"no-label\",\n original_title: milestoneDate,\n milestone_date_as_first_line: isCustomOrFirstEvent\n ? milestoneAsFirstLine\n : null,\n };\n setSaveStep(\"saveBabyPage\");\n sagaMiddleware.run(\n saveBabyPageSaga,\n babyPageToSave,\n (error?: any, id?: number) => {\n setLoading(false);\n setSaveStep(null);\n\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n return;\n }\n\n trackAction(\n \"SaveBabyPage\",\n {\n google: {\n event: \"save_baby_page\",\n },\n },\n true,\n );\n\n setBabyPage((old) => ({\n ...old,\n somethingChanged: false,\n }));\n\n notification.success({\n message: \"Success\",\n description: \"BabyPage saved successfully\",\n });\n\n setTimeout(() => {\n // Check if show rating form\n sagaMiddleware.run(checkUserModal, history);\n\n if (!!id) {\n history.push(`/babypages/after-save?id=${id}`);\n } else {\n history.push(\"/babypages\");\n }\n }, 300);\n },\n );\n }\n }\n },\n );\n // not update\n } else if (!triggerPhotoUpdate) {\n const photosToS3WithThumbnails: FileUploadS3[] = [\n {\n image: imageCPhoto,\n folder: \"bps\",\n },\n {\n image: imageCContent,\n folder: \"bps_content\",\n },\n ...(babyPage.photos\n .filter((photo) => !!photo.file)\n .map((photo) => ({\n image: photo.file,\n folder: \"photos\",\n baby_id: babySelected.id,\n gallery_image: photo.isLocal\n ? null\n : photo.name?.split(\"/\").slice(-1)[0],\n })) as FileUploadS3[]),\n ];\n\n if (!isPhotoOnly && label_url) {\n photosToS3WithThumbnails.push({\n image: b64toBlob(label_url!, \"image/png\"),\n folder: \"photos\",\n });\n }\n\n sagaMiddleware.run(\n savePhotosS3,\n photosToS3WithThumbnails,\n (err: string | null, responses?: FileUploadedS3[]) => {\n if (err !== null) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n setLoading(false);\n setSaveStep(null);\n return;\n } else if (!!responses) {\n let babyPageToSave = {\n ...photosTobeSaved,\n photos: babyPage.photos.map(\n (photo: SaveBabyPagePhoto, index: number) => ({\n zoom: calculateZoom(\n photo,\n getAspectFromLayout(babyPage.layout, index),\n ),\n name: responses[index + 2].high_res,\n croppedData: photo.croppedData,\n origin: calculateOrigin(photo),\n originPercent: calculateOriginPercent(photo),\n rotation: !!photo.croppedData\n ? photo.croppedData.rotate\n : 0,\n label_url: responses[responses.length - 1].high_url,\n }),\n ),\n id: !!babyPage.id ? babyPage.id : undefined,\n milestone_id: milestone.id,\n event: milestone.title_name,\n title: !isPhotoOnly\n ? title\n : babyPage.label_left_text\n ? babyPage.label_left_text\n : babyPage.label_right_text\n ? babyPage.label_right_text\n : \"BabyPage\",\n subtitle: subTitle,\n background_color: isPhotoOnly ? null : background_color,\n font: babyPage.font,\n font_id: babyPage.font_id,\n font_alignment: babyPage.textAlign,\n font_size: \"15\",\n illustration: isPhotoOnly ? null : illustration,\n answers: isPhotoOnly\n ? null\n : babyPage.answers.map((answer) => ({\n answerString: answer.answer_string,\n answers: answer.answer,\n question_id: answer.question_id,\n type: answer.type,\n position: answer.position,\n })),\n layout: babyPage.layout,\n layout_right: babyPage.layoutRightSide,\n border,\n child_id: !!repair ? babyPage.child_id : babySelected.id,\n parent_id: babySelected.baby_parent_id,\n version: \"web\",\n thumbnail: responses[0].thumbnail,\n thumbnail_content: responses[1].thumbnail,\n label_left_text: babyPage.label_left_text\n ? babyPage.label_left_text\n : null,\n label_right_text: babyPage.label_right_text\n ? babyPage.label_right_text\n : null,\n label_left_position:\n babyPage.label_left_text && babyPage.label_left_position\n ? babyPage.label_left_position\n : babyPage.label_left_text\n ? \"bottom-left\"\n : \"no-label\",\n label_right_position:\n babyPage.label_right_text && babyPage.label_right_position\n ? babyPage.label_right_position\n : babyPage.label_right_text\n ? \"bottom-left\"\n : \"no-label\",\n original_title: milestoneDate,\n milestone_date_as_first_line: isCustomOrFirstEvent\n ? milestoneAsFirstLine\n : null,\n };\n setPhotosToBeSaved((old) => ({\n ...old,\n photos: babyPage.photos.map(\n (photo: SaveBabyPagePhoto, index: number) => ({\n zoom: calculateZoom(\n photo,\n getAspectFromLayout(babyPage.layout, index),\n ),\n name: responses[index + 2].high_res,\n croppedData: photo.croppedData,\n origin: calculateOrigin(photo),\n originPercent: calculateOriginPercent(photo),\n rotation: !!photo.croppedData\n ? photo.croppedData.rotate\n : 0,\n label_url:\n index === 0\n ? !!label_url\n ? babyPage.label_url_file\n ? babyPage.label_url_file\n : responses[responses.length - 1].high_url\n : undefined\n : undefined,\n }),\n ),\n }));\n setSaveStep(\"saveBabyPage\");\n sagaMiddleware.run(\n saveBabyPageSaga,\n babyPageToSave,\n (error?: any, id?: number) => {\n setLoading(false);\n setSaveStep(null);\n\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n return;\n }\n\n trackAction(\n \"SaveBabyPage\",\n {\n google: {\n event: \"save_baby_page\",\n },\n },\n true,\n );\n\n setBabyPage((old) => ({\n ...old,\n somethingChanged: false,\n }));\n\n notification.success({\n message: \"Success\",\n description: \"BabyPage saved successfully\",\n });\n\n setTimeout(() => {\n // Check if show rating form\n sagaMiddleware.run(checkUserModal, history);\n\n if (!babyPage?.id && !id) {\n history.push(\"/babypages\");\n return;\n }\n\n history.push(\n `/babypages/after-save?id=${id ?? babyPage.id}`,\n );\n }, 300);\n },\n );\n }\n },\n );\n }\n } else {\n setLoading(false);\n setSaveStep(null);\n }\n } catch (error) {\n setBabyPage((state) => ({ ...state, label_url }));\n setLoading(false);\n setSaveStep(null);\n\n Modal.error({\n title: \"Error\",\n content: error.message,\n });\n }\n }, [\n isPhotoOnly,\n babyPage,\n control.step,\n photosTobeSaved,\n subTitle,\n milestoneDate,\n ]);\n\n // Save BabyPage\n const saveBabyPage = useCallback(async () => {\n setLoading(true);\n setSaveStep(\"genImg\");\n\n let cPhotos: HTMLCanvasElement | null = null;\n let cContent: HTMLCanvasElement | null = null;\n let cAnswers: HTMLCanvasElement | null = null;\n let label_url = !!babyPage.label_url ? babyPage.label_url : undefined;\n\n const border = !!babyPage.borderSelected\n ? lastSegmentUrl(babyPage.borderSelected.image_url)\n : null;\n const illustration = !!babyPage.illustrationSelected\n ? lastSegmentUrl(babyPage.illustrationSelected.image_url)\n : \"\";\n const background_color = !!babyPage.backgroundSelected\n ? babyPage.backgroundSelected.color\n : \"#ffffff\";\n\n try {\n if (!!babyPage.borderSelected) {\n const borderWithBase64 = {\n ...babyPage.borderSelected,\n image_b64: await getBase64FromFileUrl(\n babyPage.borderSelected.image_url,\n `${BASE_URL}api/avoid-cors?url=`,\n ),\n };\n setBorder(borderWithBase64);\n }\n\n if (!!babyPage.illustrationSelected) {\n const illustrationWithBase64 = {\n ...babyPage.illustrationSelected,\n image_b64: await getBase64FromFileUrl(\n babyPage.illustrationSelected.image_url,\n `${BASE_URL}api/avoid-cors?url=`,\n ),\n };\n setIllustration(illustrationWithBase64);\n }\n\n if (!!textAnswers && !label_url) {\n const answersElement = document.getElementById(\"bp-answers\");\n if (!!answersElement) {\n cAnswers = await html2canvas(answersElement, {\n backgroundColor: \"transparent\",\n });\n\n if (!!cAnswers) {\n label_url = cAnswers.toDataURL(\"image/png\", {\n backgroundColor: \"transparent\",\n });\n }\n }\n }\n\n await delay(300);\n const photoGrid = document.getElementById(\"photo-grid-bp\");\n const content = document.getElementById(\"content-bp\");\n\n if (!!photoGrid && !!content) {\n cPhotos = await html2canvas(photoGrid, { ...highRes, scale: 1 });\n\n if (isPhotoOnly) {\n cContent = await html2canvas(content, { ...highRes, scale: 1 });\n } else {\n cContent = await html2canvas(content, {\n ...highResContent,\n scale: 1,\n backgroundColor: !!babyPage.backgroundSelected\n ? babyPage.backgroundSelected.color\n : \"#ffffff\",\n });\n }\n }\n if (!!cPhotos && !!cContent && !!milestone && !!babySelected) {\n // First send images to S3 and Get URL\n var imageCPhoto = await canvasToBlobPromise(cPhotos);\n var imageCContent = await canvasToBlobPromise(cContent);\n\n // const checkCanvasToBlobPromise = (\n // cPhotos: HTMLCanvasElement,\n // cContent: HTMLCanvasElement\n // ) => {\n // canvasToBlobPromise(cPhotos)\n // .then(() => {\n // canvasToBlobPromise(cContent).catch(err => err);\n // })\n // .catch(err => err);\n // };\n\n // checkCanvasToBlobPromise(cPhotos, cContent);\n const photosToS3: FileUploadS3[] = [\n {\n image: imageCPhoto,\n folder: \"bps\",\n },\n {\n image: imageCContent,\n folder: \"bps_content\",\n },\n ...(babyPage.photos\n .filter((photo) => !!photo.file)\n .map((photo) => ({\n image: photo.file,\n folder: \"photos\",\n baby_id: babySelected.id,\n gallery_image: photo.isLocal\n ? null\n : photo.name?.split(\"/\").slice(-1)[0],\n })) as FileUploadS3[]),\n ];\n\n const photosRightToS3: FileUploadS3[] = [\n {\n image: imageCContent,\n folder: \"bps\",\n },\n {\n image: imageCPhoto,\n folder: \"bps_content\",\n },\n ...(babyPage.photosRightSide\n .filter((photo) => !!photo.file)\n .map((photo) => ({\n image: photo.file,\n folder: \"photos\",\n baby_id: babySelected.id,\n gallery_image: photo.isLocal\n ? null\n : photo.name?.split(\"/\").slice(-1)[0],\n })) as FileUploadS3[]),\n ];\n if (!!label_url && !babyPage.label_url_file) {\n photosToS3.push({\n image: b64toBlob(label_url, \"image/png\"),\n folder: \"photos\",\n });\n }\n\n setSaveStep(\"sendImg\");\n let responsesImageLeft: any, responsesImageRight: any;\n\n sagaMiddleware.run(\n savePhotosS3,\n photosToS3,\n (err: string | null, responses?: FileUploadedS3[]) => {\n if (err !== null) {\n setLoading(false);\n setSaveStep(null);\n return;\n } else if (!!responses) {\n responsesImageLeft = responses;\n let babyPageToSave;\n\n if (isPhotoOnly) {\n sagaMiddleware.run(\n savePhotosS3,\n photosRightToS3,\n (err: string | null, responses?: FileUploadedS3[]) => {\n if (err !== null) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n setLoading(false);\n setSaveStep(null);\n return;\n } else if (!!responses) {\n responsesImageRight = responses;\n\n babyPageToSave = {\n id: !!babyPage.id ? babyPage.id : undefined,\n milestone_id: milestone.id,\n event: milestone.title_name,\n title: babyPage.label_left_text\n ? babyPage.label_left_text\n : babyPage.label_right_text\n ? babyPage.label_right_text\n : \"BabyPage\",\n subtitle: subTitle,\n background_color,\n font: babyPage.font,\n font_id: babyPage.font_id,\n font_alignment: babyPage.textAlign,\n font_size: \"15\",\n illustration,\n answers: babyPage.answers.map((answer) => ({\n answerString: answer.answer_string,\n answers: answer.answer,\n question_id: answer.question_id,\n type: answer.type,\n position: answer.position,\n })),\n photos: babyPage.photos.map(\n (photo: SaveBabyPagePhoto, index: number) => ({\n zoom: calculateZoom(\n photo,\n getAspectFromLayout(babyPage.layout, index),\n ),\n name: responsesImageLeft[index + 2].high_res,\n croppedData: photo.croppedData,\n origin: calculateOrigin(photo),\n originPercent: calculateOriginPercent(photo),\n rotation: !!photo.croppedData\n ? photo.croppedData.rotate\n : 0,\n label_url:\n index === 0\n ? !!label_url\n ? babyPage.label_url_file\n ? babyPage.label_url_file\n : responsesImageLeft[\n responsesImageLeft.length - 1\n ].high_url\n : undefined\n : undefined,\n }),\n ),\n photos_right: isPhotoOnly\n ? babyPage.photosRightSide.map(\n (photo: SaveBabyPagePhoto, index: number) => ({\n zoom: calculateZoom(\n photo,\n getAspectFromLayout(\n babyPage.layoutRightSide,\n index,\n ),\n ),\n name: responsesImageRight[index + 2].high_res,\n croppedData: photo.croppedData,\n origin: calculateOrigin(photo),\n originPercent: calculateOriginPercent(photo),\n rotation: !!photo.croppedData\n ? photo.croppedData.rotate\n : 0,\n label_url:\n index === 0\n ? !!label_url\n ? babyPage.label_url_file\n ? babyPage.label_url_file\n : responsesImageRight[\n responsesImageRight.length - 1\n ].high_url\n : undefined\n : undefined,\n }),\n )\n : null,\n layout: babyPage.layout,\n layout_right: babyPage.layoutRightSide,\n border,\n child_id: !!repair\n ? babyPage.child_id\n : babySelected.id,\n parent_id: babySelected.baby_parent_id,\n version: \"web\",\n thumbnail: responsesImageLeft[0].thumbnail,\n thumbnail_content: responsesImageLeft[1].thumbnail,\n label_left_text: babyPage.label_left_text\n ? babyPage.label_left_text\n : null,\n label_right_text: babyPage.label_right_text\n ? babyPage.label_right_text\n : null,\n label_left_position:\n babyPage.label_left_text &&\n babyPage.label_left_position\n ? babyPage.label_left_position\n : babyPage.label_left_text\n ? \"bottom-left\"\n : \"no-label\",\n label_right_position:\n babyPage.label_right_text &&\n babyPage.label_right_position\n ? babyPage.label_right_position\n : babyPage.label_right_text\n ? \"bottom-left\"\n : \"no-label\",\n original_title: milestoneDate,\n };\n\n setSaveStep(\"saveBabyPage\");\n sagaMiddleware.run(\n saveBabyPageSaga,\n babyPageToSave,\n (error?: any, id?: number) => {\n setLoading(false);\n setSaveStep(null);\n\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n return;\n }\n\n trackAction(\n \"SaveBabyPage\",\n {\n google: {\n event: \"save_baby_page\",\n },\n },\n true,\n );\n\n setBabyPage((old) => ({\n ...old,\n somethingChanged: false,\n }));\n\n notification.success({\n message: \"Success\",\n description: \"BabyPage saved successfully\",\n });\n\n setTimeout(() => {\n // Check if show rating form\n sagaMiddleware.run(checkUserModal, history);\n\n if (!!id) {\n history.push(`/babypages/after-save?id=${id}`);\n } else {\n history.push(\"/babypages\");\n }\n }, 300);\n },\n );\n } else {\n Modal.error({\n title: \"Error\",\n content: \"Error saving BabyPage\",\n });\n setLoading(false);\n setSaveStep(null);\n }\n },\n );\n } else {\n babyPageToSave = {\n id: !!babyPage.id ? babyPage.id : undefined,\n milestone_id: milestone.id,\n event: milestone.title_name,\n title: title,\n subtitle: subTitle,\n background_color,\n font: babyPage.font,\n font_id: babyPage.font_id,\n font_alignment: babyPage.textAlign,\n font_size: \"15\",\n illustration,\n answers: babyPage.answers.map((answer) => ({\n answerString: answer.answer_string,\n answers: answer.answer,\n question_id: answer.question_id,\n type: answer.type,\n position: answer.position,\n })),\n photos: babyPage.photos.map(\n (photo: SaveBabyPagePhoto, index: number) => ({\n zoom: calculateZoom(\n photo,\n getAspectFromLayout(babyPage.layout, index),\n ),\n name: responsesImageLeft[index + 2].high_res,\n croppedData: photo.croppedData,\n origin: calculateOrigin(photo),\n originPercent: calculateOriginPercent(photo),\n rotation: !!photo.croppedData\n ? photo.croppedData.rotate\n : 0,\n label_url:\n index === 0\n ? !!label_url\n ? babyPage.label_url_file\n ? babyPage.label_url_file\n : responsesImageLeft[\n responsesImageLeft.length - 1\n ].high_url\n : undefined\n : undefined,\n }),\n ),\n layout: babyPage.layout,\n border,\n child_id: !!repair ? babyPage.child_id : babySelected.id,\n parent_id: babySelected.baby_parent_id,\n version: \"web\",\n thumbnail: responses[0].thumbnail,\n thumbnail_content: responses[1].thumbnail,\n original_title: milestoneDate,\n };\n setSaveStep(\"saveBabyPage\");\n\n sagaMiddleware.run(\n saveBabyPageSaga,\n babyPageToSave,\n (error?: any, id?: number) => {\n setLoading(false);\n setSaveStep(null);\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n return;\n }\n trackAction(\n \"SaveBabyPage\",\n {\n google: {\n event: \"save_baby_page\",\n },\n },\n true,\n );\n\n setBabyPage((old) => ({\n ...old,\n somethingChanged: false,\n }));\n notification.success({\n message: \"Success\",\n description: \"BabyPage saved successfully\",\n });\n setTimeout(() => {\n // Check if show rating form\n sagaMiddleware.run(checkUserModal, history);\n if (!!id) {\n history.push(`/babypages/after-save?id=${id}`);\n } else {\n history.push(\"/babypages\");\n }\n }, 300);\n },\n );\n }\n } else {\n Modal.error({\n title: \"Error\",\n content: \"Error saving BabyPage\",\n });\n setLoading(false);\n setSaveStep(null);\n }\n },\n );\n } else {\n setLoading(false);\n setSaveStep(null);\n }\n } catch (error) {\n setBabyPage((state) => ({ ...state, label_url }));\n setLoading(false);\n setSaveStep(null);\n\n Modal.error({\n title: \"Error\",\n content: error.message,\n });\n }\n }, [\n babyPage,\n milestone,\n babySelected,\n history,\n setBorder,\n setIllustration,\n title,\n textAnswers,\n subTitle,\n isPhotoOnly,\n ]);\n\n const nextStep = useCallback(() => {\n if (control.step === 4 || (control.step === 2 && isPhotoOnly)) {\n if (isSelectedPlus) {\n setPlusOpen(true);\n } else {\n window.scrollTo(0, 0);\n document.body.style.overflow = \"hidden\";\n uploadThumbnailsAndSaveBP();\n }\n } else {\n window.scrollTo(0, 0);\n if (control.step === 1 && isPhotoOnly) {\n uploadPhotosToS3();\n }\n if (!!contentRef.current) {\n contentRef.current.scrollTo(0, 0);\n }\n\n let step = control.step + 1;\n if (\n step === 1 &&\n (ageWeeks === 0 || ageWeeks === -1 || questions.length === 0)\n ) {\n step += 1;\n }\n\n setControl({\n step,\n valid: step !== 0,\n });\n\n // if (control.step === 0 && isPhotoOnly) {\n // Modal.info({\n // title: \"Right Page!\",\n // content: `Awesome! you already created the left side of your BabyPage,\n // so let's go ahead and select other layout to complete the right side.`,\n // okText: \"Got It\",\n // maskClosable: true,\n // });\n // }\n }\n }, [\n control.step,\n saveBabyPage,\n questions.length,\n ageWeeks,\n contentRef,\n milestone,\n isPhotoOnly,\n ]);\n\n // Render SelectPhotos Component\n const renderPhotos = useCallback(() => {\n const props = {\n setPhotos,\n photos: babyPage.photos,\n layout: babyPage.layout,\n isPlus: !!user.user_level && user.user_level === 1,\n showPlus: () => setPlusOpen(true),\n title: milestone?.age_weeks === -2 ? \"Left Page\" : undefined,\n step: control.step,\n selectedPlus,\n setSelectedPlus,\n };\n return ;\n }, [setPhotos, babyPage, user.user_level, milestone]);\n\n // Render Questions Component\n const renderQuestions = useCallback(() => {\n const props = {\n questions: cleanedQuestions,\n heightQuestions,\n setQuestions, // To add custom answers\n answers: babyPage.answers,\n setAnswers,\n nextStep,\n milestone,\n setMilestoneDate,\n customAnswer,\n setCustomAnswer,\n qIndex,\n setQIndex,\n hasQuestions,\n answer,\n checked,\n changeAnswer,\n addQuestion,\n setEntry,\n milestoneDate,\n };\n return ;\n }, [\n cleanedQuestions,\n heightQuestions,\n babyPage.answers,\n setAnswers,\n nextStep,\n milestone,\n qIndex,\n customAnswer,\n ]);\n\n // Render EditBorderIllustration Component\n const renderBorder = useCallback(() => {\n const props = {\n borderSelected: babyPage.borderSelected,\n illustrationSelected: babyPage.illustrationSelected,\n setBorder,\n setIllustration,\n borders,\n backgroundSelected: babyPage.backgroundSelected,\n illustrations,\n birthDate: title,\n subTitle,\n textAnswers: textAnswers,\n font: babyPage.font,\n textAlign: babyPage.textAlign,\n isPlus: !!user.user_level && user.user_level === 1,\n showPlus: () => setPlusOpen(true),\n isTruncated,\n setIsTruncated,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n labelUrl: babyPage.thumbnail_content,\n milestoneType: milestone,\n selectedPlus,\n setSelectedPlus,\n milestoneDate,\n setMilestoneDate,\n setMilestoneAsFirstLine,\n milestoneAsFirstLine,\n };\n return ;\n }, [\n babyPage,\n textAnswers,\n setBorder,\n setIllustration,\n borders,\n illustrations,\n user.user_level,\n isTruncated,\n title,\n subTitle,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n milestone,\n selectedPlus,\n setSelectedPlus,\n ]);\n\n // Render EditTextBackground Component\n const renderTextBG = useCallback(() => {\n const props = {\n baby: babySelected,\n borderSelected: babyPage.borderSelected,\n backgroundSelected: babyPage.backgroundSelected,\n illustrationSelected: babyPage.illustrationSelected,\n birthDate: title,\n subTitle,\n textAnswers,\n font: babyPage.font,\n textAlign: babyPage.textAlign,\n setFont,\n setTextAlign,\n setBackground,\n isPlus: !!user.user_level && user.user_level === 1,\n showPlus: () => setPlusOpen(true),\n isTruncated,\n setIsTruncated,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n labelUrl: babyPage.thumbnail_content,\n milestoneType: milestone,\n selectedPlus,\n setSelectedPlus,\n milestoneDate,\n setMilestoneDate,\n setMilestoneAsFirstLine,\n milestoneAsFirstLine,\n };\n return ;\n }, [\n babySelected,\n babyPage,\n textAnswers,\n setFont,\n setTextAlign,\n setBackground,\n user.user_level,\n isTruncated,\n title,\n subTitle,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n milestone,\n ]);\n\n const renderFinish = useCallback(() => {\n const props = {\n birthDate: title,\n subTitle,\n font: babyPage.font,\n textAlign: babyPage.textAlign,\n backgroundSelected: babyPage.backgroundSelected,\n borderSelected: babyPage.borderSelected,\n illustrationSelected: babyPage.illustrationSelected,\n textAnswers,\n setPhotos,\n photos: babyPage.photos,\n layout: babyPage.layout,\n babyPageId: babyPage.id,\n isTruncated,\n setIsTruncated,\n loading,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n setTitle,\n setSubTitle,\n ageWeeks,\n labelUrl: babyPage.thumbnail_content,\n milestoneType: milestone,\n updateBPStep: setControl,\n photosRightSide: babyPage.photosRightSide,\n layoutRightSide: babyPage.layoutRightSide,\n setBabyPage,\n babyPage,\n setTriggerPhotoUpdate,\n step: control.step,\n setMilestoneDate,\n milestoneDate,\n };\n return ;\n }, [\n babyPage,\n textAnswers,\n setPhotos,\n loading,\n isTruncated,\n title,\n subTitle,\n answersArray,\n setSortedAnswers,\n setCustomAnswers,\n addCustomAnswer,\n removeAnswer,\n ageWeeks,\n milestone,\n ]);\n\n const renderPhotosRightSide = useCallback(() => {\n const props = {\n setPhotos,\n photos: babyPage.photosRightSide,\n layout: babyPage.layoutRightSide,\n isPlus: !!user.user_level && user.user_level === 1,\n showPlus: () => setPlusOpen(true),\n title: \"Right Page\",\n step: control.step,\n selectedPlus,\n setSelectedPlus,\n };\n return ;\n }, [setPhotos, babyPage, user.user_level]);\n\n // Check what step should be rendered\n const renderStep = useCallback(() => {\n if (milestone?.age_weeks === -2) {\n switch (control.step) {\n case 0:\n return renderPhotos();\n case 1:\n return renderPhotosRightSide();\n default:\n return renderFinish();\n }\n } else {\n switch (control.step) {\n case 0:\n return renderPhotos();\n case 1:\n return renderQuestions();\n case 2:\n return renderBorder();\n case 3:\n return renderTextBG();\n default:\n return renderFinish();\n }\n }\n }, [\n control.step,\n renderPhotos,\n renderQuestions,\n renderBorder,\n renderTextBG,\n renderFinish,\n milestone,\n ]);\n\n return (\n \n history.push(path)}\n />\n {loading && (\n
\n \n {!!saveStep && (\n

\n {saveStep === \"genImg\"\n ? \"Generating High Res. Images...\"\n : saveStep === \"sendImg\"\n ? \"Saving High Res. Images...\"\n : \"Saving BabyPage...\"}\n

\n )}\n
\n )}\n \n \n {renderStep()}\n \n \n
\n
\n
\n {control.step > 0 && (\n <>\n {\n window.scrollTo(0, 0);\n if (!!contentRef.current) {\n contentRef.current.scrollTo(0, 0);\n }\n\n setControl((old) => {\n let step = old.step - 1;\n const isPhotoOnlyEdit = old.step === 4 && isPhotoOnly;\n if (\n step === 1 &&\n (ageWeeks === 0 ||\n ageWeeks === -1 ||\n questions.length === 0)\n ) {\n step -= 1;\n }\n\n if (isPhotoOnlyEdit) {\n step -= 2;\n }\n\n return { step, valid: true };\n });\n }}\n >\n PREVIOUS\n \n  \n \n )}\n {\n if (!isPhotoOnly && control.step === 1) {\n addQuestion(questions[qIndex]);\n }\n nextStep();\n }}\n disabled={\n control.step === 4 || (isPhotoOnly && control.step === 2)\n ? disabled\n : !control.valid || loading || (control.step > 1 && isTruncated)\n }\n >\n {(disabled && control.step === 2 && isPhotoOnly) ||\n (disabled && control.step === 4 && !isPhotoOnly)\n ? \"Uploading Photos..\"\n : getTextMessageByStep()}\n \n
\n
\n
\n {\n setPlusOpen(false);\n }}\n onSaveFreeFeatures={saveFreeFeatures}\n onSaveBeforeUpgradeToPlus={saveBeforeUpgradeToPlus}\n savingBabyPage={true}\n />\n {\n setPlusOpen(false);\n\n if (milestone?.age_weeks === -2) {\n history.push(\"/milestones\");\n }\n }}\n onSaveBeforeUpgradeToPlus={sendToUpgradeToPlus}\n />\n\n {!isPhotoOnly ? (\n {\n setFreeUserModal(false);\n }}\n footer={null}\n >\n
\n

\n As a free user, you will NOT be able to save any PLUS options\n selected.\n

\n \n \n Upgrade to PLUS\n \n\n {\n setFreeUserModal(false);\n }}\n >\n Continue\n \n
\n \n \n ) : null}\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user,\n milestones: state.milestones.milestones,\n babySelected: state.baby.babySelected,\n borders: state.bpHelper.borders,\n illustrations: state.bpHelper.illustrations,\n baby: state.baby,\n draftBabyPage: state.bpHelper.draftBabyPage,\n});\n\nexport default connect(mapStateToProps)(SaveBabyPagesPage);\n","import { Button, Modal, Avatar } from \"antd\";\nimport React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport logoImg from \"../../assets/img/logo_2.png\";\nimport \"./ModalCoverPlus.scss\";\n\nconst { confirm } = Modal;\n\ninterface Props {\n visible: boolean;\n onClose: (e: React.MouseEvent) => void;\n bookId: number;\n}\n\nconst ModalCoverPlus: React.FC = ({\n visible,\n onClose,\n bookId\n}) => {\n const history = useHistory();\n\n const [showConfirm, setShowConfirm] = useState(false);\n\n const baseText = \n `This book has a PLUS cover, which you likely selected during the limited-edition\n design release. If you want to make edits and keep this cover, please upgrade to a \n PLUS account. If you do not upgrade and wish to edit this book, you will need to \n select a Free cover design. If you print this book without edits, you can keep \n the current cover design`;\n \n const confirmText = \n `Do you want to change the\n current cover for a free one to \n edit?`;\n\n const confirm = () => {\n return (\n setShowConfirm(false)}\n width=\"auto\"\n >\n
\n \n

Are you sure?

\n {confirmText}\n
\n
\n setShowConfirm(false)}\n >\n CANCEL\n \n\n history.push(`/books/save?id=${bookId}`)}\n >\n EDIT\n \n
\n \n );\n };\n\n return (\n \n
\n

{baseText}.

\n
\n history.push(\"/cart/subscription/yearly\")}\n >\n Upgrade to PLUS\n \n\n setShowConfirm(true)}\n >\n Select a Free Cover\n \n
\n {confirm()}\n
\n \n \n );\n};\n\nexport default ModalCoverPlus;\n","import { Button, Modal, Spin } from \"antd\";\nimport React, { useState, useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport { AppState } from \"../../store\";\nimport { replaceThumbURL } from \"../../utils/string\";\nimport ModalPlus from \"../ModalPlus/ModalPlus\";\nimport \"./BookModal.scss\";\nimport logo from \"../../assets/img/logo_2.png\"\nimport { useHistory } from \"react-router\";\n\ninterface Props {\n leftPage: string;\n rightPage: string;\n visible: boolean | undefined;\n currentIndex: number;\n setCurrentIndex: React.Dispatch>;\n isPlus: boolean;\n pagesLimit: number;\n onClose: (e: React.MouseEvent) => void;\n useOldBabypages: boolean;\n}\n\nconst BookModal: React.FC = ({\n leftPage,\n rightPage,\n visible,\n currentIndex,\n setCurrentIndex,\n isPlus,\n pagesLimit,\n onClose,\n useOldBabypages\n}) => {\n const [zoomed, setZoomed] = useState(false);\n const [showPlus, setShowPlus] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [loadedRight, setLoadedRight] = useState(false);\n // This state is to check whether the user when through all photos (loaded all photos) or not\n const [gotToEnd, setGotToEnd] = useState(false);\n const history = useHistory();\n const sendToUpgradeToPlus = () => { \n history.push(\"/cart/subscription/yearly\");\n }\n\n const onLoad = () => {\n if(!gotToEnd) {\n setTimeout(()=> {\n setLoaded(true);\n }, 250)\n } else {\n setLoaded(true);\n }\n }\n\n const onLoadRight = () => {\n if(!gotToEnd) {\n setTimeout(()=> {\n setLoadedRight(true);\n }, 250)\n } else {\n setLoadedRight(true);\n }\n }\n\n \n useEffect(() => {\n\n if(currentIndex >= pagesLimit) {\n setGotToEnd(true);\n }\n\n if(!gotToEnd) {\n setLoaded(false);\n setLoadedRight(false);\n } else {\n setLoaded(true);\n setLoadedRight(true);\n }\n \n }, [currentIndex])\n\n\n const images = (\n <>\n \"BabyPage\" {\n onLoad();\n }} \n style={loaded ? {} : { display: 'none' }} \n />\n {!loaded &&\n \n }\n \"Content\" { \n onLoadRight();\n }}\n style={loadedRight ? {} : { display: 'none' }} \n />\n {!loadedRight && \n \n }\n \n );\n\n return (\n \n {/* {preLoadImg} */}\n
\n {images}\n
\n \n !useOldBabypages ? setCurrentIndex(currentIndex - 1) : setCurrentIndex(currentIndex - 2)}\n />\n (setZoomed(!zoomed))}\n />\n !useOldBabypages ? setCurrentIndex(currentIndex + 1) : setCurrentIndex(currentIndex + 2)}\n />\n \n setShowPlus(false)} onSaveBeforeUpgradeToPlus={sendToUpgradeToPlus} />\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n isPlus: !!state.user.user_level && state.user.user_level === 1\n});\n\nexport default connect(mapStateToProps)(BookModal);\n","import { Button, Icon, Modal, notification, Popover,Spin, Tooltip} from \"antd\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Book, StripeProduct, BabyPage, User } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { deleteBook, duplicateBook, fetchBookById,inspectAllBabypagesImages } from \"../../store/sagas/books\";\nimport { addProductStore, updateUserStore } from \"../../store/sagas/cart\";\nimport { capitalizeTexts } from \"../../utils/string\";\nimport ModalCoverPlus from \"../ModalCoverPlus/ModalCoverPlus\";\nimport BookModal from \"../BookModal/BookModal\";\nimport { getBrowserWidth } from \"../../utils/size\";\nimport \"./BookPreview.scss\";\nimport { PRODUCTION } from \"../../env\";\nimport { connect } from \"react-redux\";\nconst { confirm } = Modal;\n\ninterface CompleteBook {\n id: number;\n babypages: [BabyPage];\n babypages_ids: [number];\n cover:string;\n new_version?: boolean;\n pages: [string];\n pages_with_url: [string];\n parent_email: string;\n parent_id: number;\n subtitle: string;\n subtitle_styles?: {\n fontFamily: string;\n };\n thumbnail : string;\n thumbnail_with_url: string;\n title: string;\n title_style?: {\n fontFamily: string;\n };\n type:string;\n}\n\ninterface Props {\n book: Book;\n loading: boolean;\n setLoading: React.Dispatch>;\n stripeProducts: StripeProduct[];\n isGuestUser: boolean | undefined;\n isPlusUser: boolean | undefined;\n user: User;\n}\n\nconst BookPreview: React.FC = ({\n book,\n setLoading,\n loading,\n stripeProducts,\n isGuestUser,\n isPlusUser,\n user\n}) => {\n const history = useHistory();\n const [control, setControl] = useState({ popover: false });\n const [showPlus, setShowPlus] = useState(false);\n const [pagesWithError, setPagesWithError] = useState([])\n const [bookLoading, setBookLoading] = useState(false)\n const [bookModal, setBookModal] = useState(false);\n const [bpsCorruptedModal, setBpsCorruptedModal] = useState(false);\n const [currentIndex, setCurrentIndex] = useState(0);\n const [completeBook, setCompleteBook] = useState();\n const [editPurchased, setEditPurchased] = useState(false);\n const [checkedBook, setCheckedBook] = useState(false);\n const width = getBrowserWidth();\n \n useEffect(() => {\n if(!!book.id) {\n setBookLoading(true);\n sagaMiddleware.run(\n fetchBookById,\n parseInt(book.id.toString()),\n (error: any | null, bookBD?: any) => {\n if (error !== null || !bookBD) {\n history.push(\"/\");\n setBookLoading(false);\n return;\n }\n \n try {\n setCompleteBook(bookBD);\n setBookLoading(false);\n } catch (error) {\n Modal.error({\n title: \"Error\",\n content: error.message ? error.message : \"Error loading book\",\n });\n history.push(\"/\");\n setBookLoading(false);\n } \n \n }\n );\n }\n }, [book, loading])\n\n\n const showDeleteConfirm = () => {\n confirm({\n title: (\n <>\n

Are you sure?

\n

Do you want to delete this BabyPage?

\n \n ),\n okText: \"Yes\",\n okType: \"primary\",\n cancelText: \"No\",\n width: 300,\n icon: \"warning\",\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(deleteBook, book.id, (err: string | null) => {\n setLoading(false);\n if (err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n } else {\n notification.success({\n message: \"Success\",\n description: \"The book was deleted successfully!\",\n });\n }\n });\n const store = JSON.parse(user.store!)\n if(!!store) {\n let newStoreWithoutDeletedBook = store.filter((item :any) => item.book_id !== book.id.toString())\n if(newStoreWithoutDeletedBook.length !== store.length) {\n sagaMiddleware.run(\n updateUserStore,\n JSON.stringify(newStoreWithoutDeletedBook),\n (error?: string, description?: string) => {\n if (!!error) {\n Modal.error({\n title: 'Error',\n content: error,\n });\n }\n }\n );\n }\n }\n },\n });\n };\n\n const addToCart = useCallback(() => {\n setControl((state) => ({ ...state, popover: false }));\n\n const stripeBooksProduct = stripeProducts.filter(\n (sp) =>\n sp.active &&\n sp.caption === \"book\" &&\n sp.id !== \"prod_IFKYM8tBfQm4JL\" &&\n sp.description !== \"Perfect Bound\"\n );\n const stripeProduct = stripeProducts.find(\n (sp) =>\n sp.description === \"Perfect Bound\" || sp.id === \"prod_IFKYM8tBfQm4JL\"\n );\n\n const stripeProductSelected =\n stripeBooksProduct.find(\n (sp) =>\n sp.id === book.type\n ) || stripeProducts[2];\n\n if (stripeProduct === undefined) {\n Modal.error({\n title: \"Error\",\n content: \"Product not found\",\n });\n return;\n }\n\n stripeBooksProduct.unshift(cloneDeep(stripeProduct));\n\n const pageType = (id : string) => {\n const books = [\n { \n // Soft 6x6\n book: PRODUCTION ? \"prod_IFKYM8tBfQm4JL\" : \"prod_I7jSbgrXSo5swo\", \n extraPage: PRODUCTION ? \"prod_KBaDC6z4xR3E0t\" : \"prod_K405fzq8nRA3yi\",\n type: \"6x6\"\n }, \n { \n // Hard 8x8\n book: PRODUCTION ? \"prod_BapkUaCa3Cqagm\" : \"prod_BWKvTyP8P3Unjy\", \n extraPage: PRODUCTION ? \"prod_KBaAeZVUgYzmlW\" : \"prod_K4iB8gtqa1HryM\",\n type: \"8x8\"\n }, \n { \n // Soft 8x8\n book: PRODUCTION ? \"prod_BapjuDhk2DuUDt\" : \"prod_BWKtiPgZB0ndp6\",\n extraPage: PRODUCTION ? \"prod_KBaAeZVUgYzmlW\" : \"prod_K4iB8gtqa1HryM\",\n type: \"8x8\"\n } \n ]\n const match = books.filter((item) => { \n return item.book === id\n })\n const page = stripeProducts.filter((item) => {\n return item.id === match[0].extraPage\n })\n\n return {\n active: page[0].active,\n attributes: page[0].attributes,\n description: page[0].description,\n id: page[0].id,\n images: page[0].images,\n name: page[0].name,\n metadata: page[0].metadata,\n price : page[0].skus.data[0].price / 100,\n qty: book?.babypages_ids.length - 30,\n selected: book?.babypages_ids.length > 30,\n sku_id: page[0].skus.data[0].id,\n sku_type: \"sku\",\n sku_inventory: page[0].skus.data[0].inventory,\n sku_image: page[0].skus.data[0].image,\n sku_attributes: page[0].skus.data[0].attributes,\n title: capitalizeTexts(page[0].name),\n package_dimensions: page[0].package_dimensions,\n sku_package_dimensions: page[0].skus.data[0].package_dimensions,\n };\n\n }\n\n setLoading(true);\n \n\n const options = stripeBooksProduct.map((p, index) => {\n\n const extraPage = pageType(p.id);\n\n return ({\n active: p.active,\n attributes: p.attributes,\n description: p.description,\n id: p.id,\n images: p.images,\n metadata: p.metadata,\n price: p.skus.data[0].price / 100,\n qty: stripeProductSelected.id === p.id ? 1 : 0,\n selected: (index === 0 && !book.type) || book.type === p.id,\n shippable: p.shippable,\n sku_id: p.skus.data[0].id,\n package_dimensions: p.package_dimensions,\n sku_package_dimensions: p.skus.data[0].package_dimensions,\n sku_type: p.skus.data[0].object,\n title: capitalizeTexts(p.name),\n sku_inventory: p.skus.data[0].inventory,\n sku_image: p.skus.data[0].image,\n sku_attributes: p.skus.data[0].attributes,\n extra_pages: book?.babypages_ids.length > 30 ? extraPage : null,\n total_with_pages: book?.babypages_ids.length > 30 ? p.skus.data[0].price / 100 + (extraPage.price * extraPage.qty) : null\n })})\n\n setLoading(true);\n\n let selectedOptions = options.filter(option => {\n return option.selected\n })\n sagaMiddleware.run(\n addProductStore,\n {\n book_id: book.id.toString(),\n babypage_id: null,\n event: \"\",\n gift: { status: false, email: \"\", receiver: \"\" },\n id: stripeProductSelected.id,\n iosHidden: false,\n item: stripeProduct.caption,\n options: options,\n prices: [],\n qty: 1,\n stripe_id: stripeProductSelected.id,\n subtitle: capitalizeTexts(stripeProductSelected.name),\n thumbnail: book.thumbnail_with_url,\n title: \"BabyPage Book\",\n total: book.babypages_ids.length > 30 && selectedOptions[0].total_with_pages ? (selectedOptions[0].total_with_pages) : stripeProductSelected.skus.data[0].price / 100,\n type: stripeProduct.caption,\n extra_pages: book.over_page_limit,\n extra_pages_qty: book.extra_pages,\n book_type: book.type,\n totalWithoutPages: book.babypages_ids.length > 30 && selectedOptions[0].total_with_pages ? stripeProductSelected.skus.data[0].price / 100 : null\n },\n (error?: string, description?: string) => {\n setLoading(false);\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n } else {\n const key = Date.now().toString();\n\n notification.success({\n message: \"Success\",\n description,\n key,\n btn: (\n {\n history.push(\"/cart\");\n notification.close(key);\n }}\n >\n Go to Cart\n \n ),\n });\n }\n }\n );\n }, [book, stripeProducts, setLoading, history]);\n\n const inspectBabypages = async (addingToCart: boolean = false) => {\n if(pagesWithError.length > 0 || checkedBook) {\n if(addingToCart) {\n addToCart();\n } \n return ;\n }\n setBookLoading(true)\n sagaMiddleware.run(\n inspectAllBabypagesImages,\n parseInt(book.id.toString()),\n (error: any | null, res?: any) => {\n setPagesWithError(res);\n \n try {\n if(res.length > 0) {\n setBpsCorruptedModal(true) \n setControl((state) => ({ ...state, popover: false }));\n } else {\n if(addingToCart) {\n addToCart();\n } else {\n setControl((state) => ({ ...state, popover: true }));\n }\n }\n setCheckedBook(true);\n setBookLoading(false);\n } catch (error) {\n Modal.error({\n title: \"Error\",\n content: error.message ? error.message : \"Error loading book\",\n });\n }\n })\n }\n\n const popupContent = (\n
    \n {\n setControl((state) => ({ ...state, popover: false }));\n setBookModal(true);\n }}\n >\n \n Preview\n \n {!isGuestUser && width > 768 ? (\n \n {\n if(!!book.was_purchased) {\n // setEditPurchased(true);\n // setControl((state) => ({ ...state, popover: false }));\n return ;\n }\n setControl((state) => ({ ...state, popover: false }));\n if(!isPlusUser && book.is_cover_plus !== 0)\n setShowPlus(true)\n else\n history.push(`/books/save?id=${book.id}`)\n }}\n >\n \n \n Edit\n \n \n \n ) : (\n user.permission !== \"Read-Only\" ? (\n {\n if(!!book.was_purchased) {\n setEditPurchased(true);\n setControl((state) => ({ ...state, popover: false }));\n return ;\n }\n setControl((state) => ({ ...state, popover: false }));\n if(!isPlusUser && book.is_cover_plus !== 0)\n setShowPlus(true)\n else\n history.push(`/books/save?id=${book.id}`)\n }}\n >\n \n \n Edit\n \n ) : null\n ) }\n {!isGuestUser && (\n {\n setControl((state) => ({ ...state, popover: false }));\n showDeleteConfirm();\n }}\n >\n \n Delete\n \n )}\n {!isGuestUser && (\n {\n setControl((state) => ({ ...state, popover: false }));\n setLoading(true);\n\n sagaMiddleware.run(\n duplicateBook,\n book.id,\n (error: string | null) => {\n setLoading(false);\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n } else {\n notification.success({\n message: \"Success\",\n description: \"The book was duplicated successfully!\",\n });\n }\n }\n );\n }}\n >\n \n Duplicate\n \n )}\n
  • \n \n Add to cart\n
  • \n
\n );\n\n return (\n <>\n {\n if(checkedBook && !pagesWithError.length){ \n setControl((state) => ({ ...state, popover }))\n } else if(!!pagesWithError.length) {\n setBpsCorruptedModal(true) \n }\n }}\n >\n
{\n inspectBabypages();\n }}>\n \n
\n

{book.title}

\n

{book.subtitle}

\n {bookLoading ? \n
\n \n }\n />\n
: \n <>\n {pagesWithError.length ? \n : \n <>\n {\n e.stopPropagation();\n inspectBabypages(true);\n }}\n className=\"mobile-hidden\"\n >\n Add to Cart\n \n {\n e.stopPropagation();\n inspectBabypages(true);\n }}\n size=\"small\"\n className=\"mobile-only\"\n >\n Add to Cart\n \n }\n \n \n }\n \n
\n
\n \n {!!completeBook ? ( setBookModal!(false)}\n useOldBabypages={false}\n />) : null\n }\n setShowPlus(false)}\n bookId={book.id}\n />\n\n setBpsCorruptedModal(false)} \n width=\"auto\"\n \n >\n
\n
The following babypages have missing images. Please click on each page to edit before adding to your book.
\n
    \n {pagesWithError.map((item:any)=>\n
  • {\n setBpsCorruptedModal(false);\n if(!!item.left) {\n history.push(`/babypages/save?id=${item.id}&repair=true`)\n } else {\n history.push(`/babypages/save?id=${item.id}&repair=true&both=true`)\n }\n }} > \n \n {item.event}: {item.title}\n \n
  • )}\n
\n
\n \n\n { setEditPurchased(false)}}\n onOk={() => setEditPurchased(false)}\n cancelButtonProps={{ style: { display: 'none' } }}\n >\n
\n

\n Purchased books cannot be edited. Please duplicate your book in order to make changes.\n

\n
\n \n \n \n\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user,\n});\nexport default connect(mapStateToProps)(BookPreview);\n\n","import React from 'react';\nimport { Book, StripeProduct } from '../../interfaces';\nimport BookPreview from '../BookPreview/BookPreview';\n\ninterface Props {\n books: Book[];\n loading: boolean;\n setLoading: React.Dispatch>;\n stripeProducts: StripeProduct[];\n isGuestUser?: boolean;\n isPlusUser?: boolean;\n}\n\nconst BookList: React.FC = ({\n books,\n loading,\n setLoading,\n stripeProducts,\n isGuestUser,\n isPlusUser\n}) => {\n return (\n
\n
\n
\n {books.map((book, index) => {\n return (\n \n );\n })}\n
\n
\n
\n );\n};\nexport default BookList;\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport \"./FloatButton.scss\";\n\ninterface Props {\n type?:\n | \"link\"\n | \"default\"\n | \"ghost\"\n | \"primary\"\n | \"dashed\"\n | \"danger\"\n | undefined;\n shape?: \"circle\" | \"round\" | \"circle-outline\" | undefined;\n icon: string;\n position: \"top-right\" | \"top-right-banner\" | \"top-left\" | \"bottom-right\" | \"bottom-left\";\n onClick?:\n | ((event: React.MouseEvent) => void)\n | undefined;\n ghost?: boolean;\n unFixed?: boolean;\n size?: \"default\" | \"small\" | \"large\" | undefined;\n hasHeader?: boolean;\n}\n\nconst FloatButton: React.FC = ({\n type,\n shape,\n icon,\n position,\n onClick,\n ghost,\n unFixed,\n size,\n hasHeader\n}) => (\n \n);\n\nexport default FloatButton;\n","import { Button, Icon, Modal, Spin, Tabs } from \"antd\";\nimport React, { useEffect, useMemo, useState, useLayoutEffect, Dispatch } from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\nimport {isMobile} from 'react-device-detect';\nimport BaseLayout from \"../../components/BaseLayout/BaseLayout\";\nimport BookList from \"../../components/BookList/BookList\";\nimport FloatButton from \"../../components/FloatButton/FloatButton\";\nimport { Baby, Book, StripeProduct, User } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { BookState } from \"../../store/ducks/books\";\nimport {\n fetchBooks,\n getStripeBookTypes,\n setBookType as setBookTypeSaga,\n} from \"../../store/sagas/books\";\nimport \"./BooksPage.scss\";\nimport Banner from \"../../components/Banner/Banner\";\nimport {BASE_URL} from \"../../env\"\n\nconst { TabPane } = Tabs;\n\ninterface Props {\n books: BookState;\n babies: Baby[];\n stripeProducts: StripeProduct[];\n user: User;\n}\n\nconst BooksPage: React.FC = ({ books, babies, stripeProducts, user }) => {\n const history = useHistory();\n const [loading, setLoading] = useState(false);\n const [headerImageUrl, setHeaderImageUrl] = useState(null);\n const [stripeBookTypes, setStripeBookTypes] = useState([]);\n const [showUserBooks, setShowUserBooks] = useState(false)\n // Hiding books with no pages\n const [filteredBooks, setFilteredBooks] = useState(books.books.filter((book) => book.pages.length > 0));\n\n useEffect(() => {\n //Hiding books with no pages when global book state updates\n setFilteredBooks(books.books.filter((book) => book.pages.length > 0))\n }, [books])\n \n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getStripeBookTypes,\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (err) {\n console.error(err);\n return;\n }\n\n setHeaderImageUrl(response.header_image_books);\n setStripeBookTypes(response.products);\n }\n );\n }, []);\n\n useEffect(() => {\n if(!!history.location.search) {\n setShowUserBooks(true)\n }\n }, [showUserBooks])\n\n useLayoutEffect(()=>{\n setLoading(true);\n sagaMiddleware.run(fetchBooks, (error: string | null) => {\n setLoading(false);\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n }); \n }\n });\n },[books])\n\n const setBookType = (stripeId: string) => {\n if (counts.old < 8 && counts.new < 8) {\n Modal.info({\n title: \"Notice\",\n content: `You need at least 8 BabyPages to create a book.\n Create a few more babypages to make your book.`,\n });\n\n return;\n }\n\n setLoading(true);\n sagaMiddleware.run(setBookTypeSaga, stripeId, (err?: string) => {\n setLoading(false);\n\n if (err) {\n console.error(err);\n return;\n }\n\n history.push(\"/books/save\");\n });\n };\n\n const counts = useMemo(\n () =>\n babies.reduce(\n (total, baby) => ({\n new:\n total.new +\n baby.babyPages.filter((babypage) => babypage.new_version === true)\n .length,\n old:\n total.old +\n baby.babyPages.filter((babypage) => babypage.new_version === false)\n .length,\n }),\n { new: 0, old: 0 }\n ),\n [babies]\n );\n const showCreateTab= !user.guest_user;\n return (\n <>\n \n \n \n {showCreateTab && \n
\n
\n \n Once you save at least 8 babypages, you can create a book.\n

\n
\n
\n
\n {stripeBookTypes.map((bookType: any) => (\n \n
\n \n \n
\n
\n
\n
\n \n {bookType.title}\n \n \n {bookType.description}\n

\n \n Starting at ${(bookType.price / 100).toFixed(2)}\n

\n {\n setBookType(bookType.id);\n }}\n >\n Select\n \n
\n
\n
\n
\n \n ))}\n \n
}\n \n
\n {books.books.length !== 0 && (\n {\n setLoading(true);\n\n sagaMiddleware.run(fetchBooks, (err: string | null) => {\n setLoading(false);\n if (err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n }\n });\n }}\n hasHeader\n />\n )}\n {!filteredBooks.length ? (\n
\n
\n
\n \n

\n Hang on!\n

\n

\n You haven't created any books yet. You need at least 8 BabyPages to create a book.\n

\n
\n
\n
\n ) : (\n \n )}\n {loading && (\n
\n \n }\n />\n
\n )}\n
\n
\n
\n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n books: state.books,\n babies: state.baby.babies,\n stripeProducts: state.stripeProduct,\n user: state.user,\n});\n\nexport default connect(mapStateToProps)(BooksPage);\n","import React, { useEffect, useRef, useState, useCallback } from \"react\";\nimport { highResContent } from \"../../env\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport { BabyPage, Cover } from \"../../interfaces\";\nimport { dynamicSize, getProportionalSize } from \"../../utils/size\";\nimport BookModal from \"../BookModal/BookModal\";\nimport \"./BookCover.scss\";\nimport logo from \"../../assets/img/logo-babypage.png\";\n\ninterface Props {\n loading: boolean;\n bookText: {\n title: string;\n subtitle: string;\n font: string;\n };\n selectedCover: Cover | undefined;\n selectedBabypages?: BabyPage[];\n useOldBabypages?: boolean;\n modal?: boolean;\n setModal?: React.Dispatch>;\n}\n\nconst initialSize = {\n title: 19.5,\n subtitle: 16.5,\n};\n\nconst BookCover: React.FC = ({\n loading,\n bookText,\n selectedCover,\n selectedBabypages,\n useOldBabypages,\n modal,\n setModal,\n}) => {\n const [width] = useWindowSize();\n const [sizes, setSizes] = useState(initialSize);\n const [currentIndex, setCurrentIndex] = useState(0);\n const contentRef = useRef(null);\n\n useEffect(() => {\n const getSize = (size: number) =>\n getProportionalSize(\n dynamicSize(size),\n contentRef.current !== null\n ? loading\n ? highResContent.width\n : contentRef.current.offsetWidth\n : width\n );\n\n setSizes({\n title: getSize(initialSize.title),\n subtitle: getSize(initialSize.subtitle),\n });\n }, [contentRef, loading, width]);\n\n useEffect(() => {\n const title = bookText.title;\n const subtitle = bookText.subtitle;\n const startResizingAt =\n width <= 320\n ? 24\n : width <= 375\n ? 21\n : width <= 425\n ? 19\n : width <= 540\n ? 16\n : width <= 768\n ? 28\n : width <= 1024\n ? 30\n : width < 1440\n ? 24\n : 25;\n\n const getSize = (size: number) =>\n getProportionalSize(\n dynamicSize(size),\n contentRef.current !== null\n ? loading\n ? highResContent.width\n : contentRef.current.offsetWidth\n : width\n );\n\n let initialSizeTitle = getSize(initialSize.title);\n let initialSizeSubtitle = getSize(initialSize.subtitle);\n\n if (bookText.font === \"Montserrat\") {\n initialSizeTitle = getSize(initialSize.title * 0.90);\n initialSizeSubtitle = getSize(initialSize.subtitle * 0.90);\n } else if (bookText.font === \"NunitoSans\") {\n initialSizeTitle = getSize(initialSize.title * 1.05);\n initialSizeSubtitle = getSize(initialSize.subtitle * 1.05);\n } else if (bookText.font === \"EBGaramond\") {\n initialSizeTitle = getSize(initialSize.title * 1.1);\n initialSizeSubtitle = getSize(initialSize.subtitle * 1.1);\n } else if (bookText.font === \"BigCaslon\") {\n initialSizeTitle = getSize(initialSize.title * 1.05);\n initialSizeSubtitle = getSize(initialSize.subtitle * 1.05);\n } else if (bookText.font === \"JosefinSans\") {\n initialSizeTitle = getSize(initialSize.title);\n initialSizeSubtitle = getSize(initialSize.subtitle);\n } else if (bookText.font === \"StyleScript-Regular\") {\n initialSizeTitle = getSize(initialSize.title * 1.1);\n initialSizeSubtitle = getSize(initialSize.subtitle * 1.1);\n }\n\n const newTitleFontSize = resizeFont(\n initialSizeTitle,\n startResizingAt,\n title.length\n );\n const newSubtitleFontSize = resizeFont(\n initialSizeSubtitle,\n startResizingAt,\n subtitle.length\n );\n\n if (newSubtitleFontSize > newTitleFontSize) {\n setSizes({\n title: newTitleFontSize,\n subtitle: newTitleFontSize - 1,\n });\n\n return;\n }\n\n setSizes({\n title: newTitleFontSize,\n subtitle: newSubtitleFontSize,\n });\n }, [contentRef, loading, width, bookText.title, bookText.subtitle, bookText.font]);\n\n const resizeFont = useCallback(\n (initialFontSize: number, startResizingAt: number, textLenght: number) => {\n return (\n initialFontSize *\n (startResizingAt /\n (textLenght + 2 > startResizingAt ? textLenght + 4 : startResizingAt))\n );\n },\n []\n );\n\n const contentStyle: React.CSSProperties = {\n fontFamily: bookText.font,\n };\n\n if (loading) {\n contentStyle.height = highResContent.height;\n contentStyle.width = highResContent.width;\n }\n\n return (\n <>\n \n
\n setModal!(true)}\n >\n {!!selectedCover && (\n \n )}\n
\n \n {bookText.title}\n \n \n {bookText.subtitle}\n \n
\n
\n \n \n {!!selectedBabypages &&\n (!useOldBabypages ? (\n setModal!(false)}\n useOldBabypages={useOldBabypages!}\n />\n ) : (\n setModal!(false)}\n useOldBabypages={useOldBabypages!}\n />\n ))}\n \n );\n};\n\nexport default BookCover;\n","import React, { useState } from \"react\";\nimport { BabyPage, Cover } from \"../../interfaces\";\nimport BookCover from \"../BookCover/BookCover\";\nimport { Button } from \"antd\";\n\ninterface Props {\n loading: boolean;\n bookText: {\n title: string;\n subtitle: string;\n font: string;\n };\n selectedCover: Cover | undefined;\n selectedBabypages: BabyPage[];\n useOldBabypages: boolean;\n setControl: React.Dispatch>;\n nextStep:React.EffectCallback;\n}\n\nconst BookFinalPreview: React.FC = ({\n loading,\n bookText,\n selectedCover,\n selectedBabypages,\n useOldBabypages,\n setControl,\n nextStep\n}) => {\n const [modal, setModal] = useState(false);\n const props = {\n loading,\n bookText,\n selectedCover,\n selectedBabypages,\n useOldBabypages,\n modal,\n setModal\n };\n return (\n
\n
\n
\n
\n

\n Tap the book cover to open the preview\n

\n \n
\n
\n
\n
\n \n
\n
\n \n Save Book\n \n
\n
\n
\n
\n );\n};\n\nexport default BookFinalPreview;\n","import { Icon, Spin } from \"antd\";\nimport React, { useState } from \"react\";\n\ninterface Props {\n thumbnail: string;\n title: string;\n isSelected?: boolean;\n}\n\nconst ImageProgress: React.FC = ({\n thumbnail,\n title,\n isSelected = false,\n}) => {\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(false);\n\n const handleImageLoad = () => {\n setLoading(false);\n };\n\n const handleImageError = () => {\n setLoading(false);\n setError(true);\n };\n\n return (\n <>\n {loading && (\n
\n }\n />\n
\n )}\n {error && }\n {!error && (\n <>\n \n {!!isSelected && (\n \n )}\n \n )}\n \n );\n};\n\nexport default ImageProgress;","import React from \"react\";\nimport { Cover } from \"../../interfaces\";\nimport \"./CoverPreview.scss\";\nimport ImageProgress from \"../ImageProgress/ImageProgress\";\ninterface Props {\n cover: Cover;\n setSelectedCover: React.Dispatch>;\n selectedCover: Cover | undefined;\n isPlus: boolean;\n showPlus: () => void;\n setControl: React.Dispatch<\n React.SetStateAction<{\n valid: boolean;\n step: number;\n }>\n >;\n setSomethingChange: React.Dispatch>;\n}\n\nconst CoverPreview: React.FC = ({\n cover,\n setSelectedCover,\n selectedCover,\n isPlus,\n showPlus,\n setControl,\n setSomethingChange,\n}) => {\n return (\n {\n if (isPlus || !cover.plus) {\n if (\n !selectedCover ||\n (!!selectedCover && selectedCover.id !== cover.id)\n ) {\n setSelectedCover(cover);\n setControl((state) => ({ ...state, valid: true }));\n setSomethingChange(true);\n }\n } else {\n showPlus();\n }\n }}\n >\n \n \n );\n};\n\nexport default CoverPreview;\n","import React from \"react\";\nimport { Cover } from \"../../interfaces\";\nimport CoverPreview from \"../CoverPreview/CoverPreview\";\nimport CustomDivider from \"../CustomDivider\";\n\ninterface Props {\n text: string;\n covers: Cover[];\n setSelectedCover: React.Dispatch>;\n selectedCover: Cover | undefined;\n setControl: React.Dispatch<\n React.SetStateAction<{\n valid: boolean;\n step: number;\n }>\n >;\n isPlus: boolean;\n showPlus: () => void;\n setSomethingChange: React.Dispatch>;\n}\n\nconst CoverList: React.FC = ({\n covers,\n text,\n setSelectedCover,\n selectedCover,\n showPlus,\n setControl,\n isPlus,\n setSomethingChange\n}) => {\n const props = {\n setSelectedCover,\n selectedCover,\n showPlus,\n isPlus,\n setControl,\n setSomethingChange\n };\n\n return (\n
\n {covers.length !== 0 && }\n
\n
\n {covers.map((cover, index) => {\n return ;\n })}\n
\n
\n
\n );\n};\nexport default CoverList;\n","import { Input, Select } from \"antd\";\nimport React, { useCallback } from \"react\";\nimport \"./EditTextFont.scss\";\nimport FontSelect from \"../FontSelect/FontSelect\"\nimport { newFont } from \"../../interfaces/font\";\n\nconst { Option } = Select;\n\ninterface Props {\n bookText: {\n title: string;\n subtitle: string;\n font: string;\n font_id:number;\n };\n setBookText: React.Dispatch<\n React.SetStateAction<{\n title: string;\n subtitle: string;\n font: string;\n font_id:number;\n }>\n >;\n isPlus: boolean;\n setPlusOpen: React.Dispatch>;\n fonts: newFont[];\n}\n\nconst EditTextFont: React.FC = ({ bookText, setBookText, isPlus, setPlusOpen, fonts }) => {\n\n const setFont = useCallback(\n (font: string, font_id:number) => {\n setBookText(state => ({ ...state, font, font_id }));\n },\n [setBookText]\n );\n\n return (\n
\n \n \n \n setBookText({ ...bookText, title: e.target.value })}\n maxLength={36}\n className=\"mb-0\"\n />\n

{bookText.title.length}/36

\n \n setBookText({ ...bookText, subtitle: e.target.value })}\n maxLength={36}\n className=\"mb-0\"\n />\n

{bookText.subtitle.length}/36

\n
\n );\n};\n\nexport default EditTextFont;\n","import React from \"react\";\n\ninterface Props {\n classes?: string;\n}\n\nconst ArrowNext: React.FC = ({\n classes\n}) => {\n return (\n \n \n \n );\n }\nexport default ArrowNext;\n","import React, { useEffect } from \"react\";\nimport { Cover } from \"../../interfaces\";\nimport BookCover from \"../BookCover/BookCover\";\nimport EditTextFont from \"../EditTextFont/EditTextFont\";\nimport { Button } from \"antd\";\nimport ArrowNext from \"../Icons/ArrowNext\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport { newFont } from \"../../interfaces/font\";\n\ninterface Props {\n bookText: {\n title: string;\n subtitle: string;\n font: string;\n font_id:number;\n };\n setBookText: React.Dispatch<\n React.SetStateAction<{\n title: string;\n subtitle: string;\n font: string;\n font_id:number;\n }>\n >;\n selectedCover: Cover | undefined;\n loading: boolean;\n isPlus: boolean;\n setPlusOpen: React.Dispatch>;\n setControl: React.Dispatch>;\n nextStep:React.EffectCallback;\n fonts: newFont[];\n}\n\nconst EditText: React.FC = ({\n bookText,\n setBookText,\n selectedCover,\n loading,\n isPlus,\n setPlusOpen,\n setControl,\n nextStep,\n fonts\n}) => {\n const coverProps = {\n bookText,\n selectedCover,\n loading\n };\n const [width] = useWindowSize();\n let responsiveButtonBarClass = width <= 450 ? \"button-bar-book\" : \"\"\n\n return (\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n \n Next\n \n \n
\n
\n
\n
\n
\n );\n};\n\nexport default EditText;\n","import moment from \"moment\";\nimport React from \"react\";\nimport { BabyPage } from \"../../interfaces\";\n\ninterface Props {\n babypage: BabyPage;\n}\n\nconst BabyPageOrderable: React.FC = ({ babypage }) => {\n return (\n
\n {babypage.title}\n
\n

{babypage.title}

\n

{babypage.subtitle}

\n
\n
\n );\n};\nexport default BabyPageOrderable;\n","import React, { useEffect, useState } from \"react\";\nimport { Dropdown, Menu, Icon, Modal, Radio } from \"antd\";\nimport AscendingSort from \"../Icons/AscendingSort\";\nimport DescendingSort from \"../Icons/DescendingSort\";\nimport SortIcon from \"../Icons/SortIcon\";\nimport { RadioChangeEvent } from \"antd/lib/radio\";\nimport { capitalize } from \"lodash\";\nimport \"./SortSelectedBabypages.scss\";\n\ninterface sortOption {\n value: string;\n label: string;\n}\n\ninterface Props {\n sortOptions: sortOption[];\n sortBy: string;\n setSortBy: React.Dispatch>;\n dropdownVisible: boolean;\n setDropdownVisible: React.Dispatch>;\n reverseSort: boolean;\n setReverseSort: React.Dispatch>;\n setValidate1stReverse: React.Dispatch>;\n sortBabypages: Function;\n}\n\nconst SortSelectedBabypages: React.FC = ({\n sortOptions,\n sortBy,\n setSortBy,\n dropdownVisible,\n setDropdownVisible,\n reverseSort,\n setReverseSort,\n setValidate1stReverse,\n sortBabypages,\n}) => {\n const [modalVisible, setModalVisible] = useState(false);\n\n useEffect(() => {\n sortBabypages(\"milestone\");\n }, []);\n\n return (\n {\n setModalVisible(true);\n }}\n >\n \n \n \n {\n e.stopPropagation();\n setModalVisible(false);\n }}\n footer={null}\n >\n

Sort By

\n {\n setSortBy(e.target.value);\n sortBabypages(e.target.value);\n }}\n >\n {sortOptions\n .filter((item) => item.value !== \"\")\n .map((item, index) => (\n \n {\" \"}\n {capitalize(item.label)}{\" \"}\n \n ))}\n \n {sortBy !== \"\" ? (\n
\n {\n setValidate1stReverse(true);\n setReverseSort(!reverseSort);\n }}\n >\n {!reverseSort ? : }\n \n\n \n {sortBy === \"date\"\n ? !reverseSort\n ? \"Latest First\"\n : \"Earliest First\"\n : sortBy === \"milestone\"\n ? !reverseSort\n ? \"Earliest Milestones\"\n : \"Latest Milestones\"\n : !reverseSort\n ? \"A-Z\"\n : \"Z-A\"}\n \n
\n ) : null}\n \n \n );\n};\n\nexport default SortSelectedBabypages;\n\n","import arrayMove from \"array-move\";\nimport React, { useCallback, useEffect, useState, useRef } from \"react\";\nimport {\n SortableContainer,\n SortableElement,\n SortEnd,\n SortEvent\n} from \"react-sortable-hoc\";\nimport { BabyPage } from \"../../interfaces\";\nimport BabyPageOrderable from \"../BabyPageOrderable/BabyPageOrderable\";\nimport SortSelectedBabypages from \"./SortSelectedBabypages\"\nimport { Button } from \"antd\";\nimport \"./OrderBabypages.scss\"\nimport ArrowNext from \"../Icons/ArrowNext\";\n\ninterface Props {\n selectedBabypages: BabyPage[];\n setSelectedBabypages: React.Dispatch>;\n setControl: React.Dispatch>;\n nextStep:React.EffectCallback;\n}\n\nconst OrderBabypages: React.FC = ({\n selectedBabypages,\n setSelectedBabypages,\n setControl,\n nextStep\n}) => {\n const sortOptions = [\n {\n value:'',\n label:''\n },\n {\n value: 'date',\n label: 'Creation Date'\n }, \n {\n value: 'alpha',\n label: 'Alphabetical'\n },\n {\n value: 'milestone',\n label: 'Milestone Date'\n }\n ]\n const [sortBy, setSortBy] = useState(sortOptions[0].value);\n const [dropdownVisible, setDropdownVisible] = useState(false);\n const [reverseSort, setReverseSort] = useState(false);\n const [validate1stReverse, setValidate1stReverse] = useState(false);\n\n const sortedBabypages = [\n ...selectedBabypages\n ]\n \nconst sortBabypages = (sortBy: string) => {\n if(sortBy === 'alpha') {\n setSelectedBabypages(\n sortedBabypages.sort((a,b) => {\n let titleA = a.title.toLowerCase(),\n titleB = b.title.toLowerCase();\n if (titleA > titleB) {\n return 1\n } else if (titleA < titleB) {\n return -1\n } else {\n return 0\n }\n })\n )\n } else if (sortBy === 'milestone') {\n setSelectedBabypages(\n sortedBabypages.sort((a,b) => {\n if(a.original_title && b.original_title) {\n let milestoneDateA = new Date(a.original_title)\n let milestoneDateB = new Date(b.original_title)\n \n return milestoneDateA.valueOf() - milestoneDateB.valueOf()\n } else {\n return 0\n }\n })\n )\n } else if(sortBy === 'date') {\n setSelectedBabypages(\n sortedBabypages.sort((a,b) => {\n if(a.created_at && b.created_at) {\n let createdDateA = new Date(a.created_at)\n let createdDateB = new Date(b.created_at)\n return createdDateB.valueOf() - createdDateA.valueOf()\n } else {\n return 0\n }\n })\n )\n } else {\n return;\n }\n }\n\n\n useEffect(() => {\n if(validate1stReverse) {\n setSelectedBabypages([\n ...sortedBabypages.reverse()\n ])\n }\n }, [reverseSort])\n\n\n const onSortEnd = useCallback(\n (sort: SortEnd, _: SortEvent) => {\n if (sort.oldIndex !== sort.newIndex) {\n const newOrder = arrayMove(\n [...selectedBabypages],\n sort.oldIndex,\n sort.newIndex\n );\n setSelectedBabypages(newOrder);\n }\n },\n [selectedBabypages, setSelectedBabypages]\n );\n\n const SortableList = SortableContainer(({ items }: { items: BabyPage[] }) => {\n return (\n
\n
\n
\n {!!items &&\n items.map((babypage: BabyPage, index: number) => (\n \n ))}\n
\n
\n
\n );\n });\n\n const SortableItem = SortableElement(({ value }: { value: BabyPage }) => (\n \n ));\n\n return (\n <>\n
\n
\n

\n To reorder your pages simply tap & hold, then drag into position.\n

\n
\n \n
\n \n
\n \n
\n
\n
\n \n
\n
\n \n Next\n \n \n
\n
\n \n \n );\n};\n\nexport default OrderBabypages;\n","import { Icon } from 'antd';\nimport moment from 'moment';\nimport React, {useMemo} from 'react';\nimport TruncateMarkup from 'react-truncate-markup';\nimport { BabyPage } from '../../interfaces';\nimport './BabyPageItem.scss';\n\ninterface Props {\n babypage: BabyPage;\n setSelectedBabypages: React.Dispatch>;\n selectedBabypages: BabyPage[] | undefined;\n}\n\nconst BabyPageItem: React.FC = ({\n babypage,\n setSelectedBabypages,\n selectedBabypages,\n}) => {\n const isSelected = !!selectedBabypages\n ? !!selectedBabypages.find(selected => selected.id === babypage.id)\n : false;\n\n const title = useMemo(() => {\n if( babypage.event === \"Custom Page\" && babypage.title === \"\" ) {\n return (\n <>\n

{babypage.event}

\n \n )\n }\n else {\n return (\n <>\n

{babypage.title}

\n \n )\n }\n }, [babypage])\n const cursorClass = selectedBabypages!.length >= 100 && !isSelected ? \"forbidden\" : \"\"\n\n return (\n <>\n {!!selectedBabypages && (\n {\n if (isSelected) {\n const updatedBabypages = selectedBabypages.filter(\n item => item.id !== babypage.id\n );\n setSelectedBabypages(updatedBabypages);\n } else {\n setSelectedBabypages(state => {\n let newState = state.length === 100 ? [...state] : [...state, babypage] \n return [...newState]\n });\n }\n }}\n >\n \n
\n {title} \n {!!babypage.subtitle && (\n

{babypage.subtitle}

\n )}\n
\n {isSelected && (\n \n )}\n \n )}\n \n );\n};\nexport default BabyPageItem;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { Baby, BabyPage } from \"../../interfaces\";\nimport BabyPageItem from \"../BabyPageItem/BabyPageItem\";\nimport CustomDivider from \"../CustomDivider\";\nimport { searchBabypages } from \"../../utils/searchBabypages\";\n\n\ninterface Props {\n baby: Baby; \n selectedBabypages: BabyPage[];\n setSelectedBabypages: React.Dispatch>;\n reverseSort: boolean;\n sortBy: string;\n search?: string;\n}\n\nconst ChildBabypages: React.FC = ({\n baby, \n selectedBabypages,\n setSelectedBabypages,\n reverseSort,\n sortBy,\n search\n}) => {\n const [filteredBabypages, setFilteredBabypages] = useState(\n [...baby.babyPages] \n )\n\n const isFirstRun = useRef(true);\n useEffect (() => {\n if (isFirstRun.current) {\n isFirstRun.current = false;\n return;\n }\n let arr = [...filteredBabypages].reverse()\n setFilteredBabypages([...arr])\n }, [reverseSort]);\n\n \n\n useEffect(() => {\n searchBabypages(search ? search : \"\", baby.babyPages, setFilteredBabypages)\n }, [search, baby])\n\n return (\n
\n {filteredBabypages.length > 0 ? (\n

{baby.baby_first_name.toUpperCase()}

\n ) : null }\n \n
\n
\n {filteredBabypages.map((babypage, index) => (\n \n ))}\n
\n
\n
\n );\n};\nexport default ChildBabypages;","import React from \"react\";\n\nfunction SaveBookTooltipIcon() {\n return (\n \n \n \n );\n}\n\nexport default SaveBookTooltipIcon;","import React, { useMemo, useState, useEffect } from \"react\";\nimport { Icon, Modal, Spin, Button, Radio, Tooltip } from \"antd\";\nimport { Baby, BabyPage } from \"../../interfaces\";\nimport ChildBabypages from \"../../components/SaveBook/ChildBabypages\";\nimport { trackAction } from \"../../utils/marketing\";\nimport SearchBarIcon from \"../BabyPageSearchBar/SearchBarIcon/SearchBarIcon\";\nimport \"./SelectBabypages.scss\";\nimport { sagaMiddleware } from \"../../store\";\nimport { fetchBabies } from \"../../store/sagas/baby\";\nimport SortIcon from \"../Icons/SortIcon\";\nimport { RadioChangeEvent } from \"antd/lib/radio\";\nimport { capitalize } from \"lodash\";\nimport AscendingSort from \"../Icons/AscendingSort\";\nimport DescendingSort from \"../Icons/DescendingSort\";\nimport ArrowNext from \"../Icons/ArrowNext\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport SaveBookTooltipIcon from \"./SaveBookTooltipIcon/SaveBookTooltipIcon\";\n\ninterface Props {\n useOldBabypages: boolean;\n babies: Baby[];\n selectedBabypages: BabyPage[];\n setSelectedBabypages: React.Dispatch>;\n setControl: React.Dispatch>;\n nextStep:React.EffectCallback;\n}\n\nconst SelectBabypages: React.FC = ({\n useOldBabypages,\n babies,\n selectedBabypages,\n setSelectedBabypages,\n setControl,\n nextStep\n}) => {\n const [search, setSearch] = useState(\"\");\n const sortOptions = [{\n value: 'date',\n label: 'Creation Date'\n }, {\n value: 'alpha',\n label: 'Alphabetical'\n },\n {\n value: 'milestone',\n label: 'Milestone Date'\n }\n ]\n const [dropdownVisible, setDropdownVisible] = useState(false);\n const [sortModalVisible, setSortModalVisible] = useState(false);\n const [sortBy, setSortBy] = useState(sortOptions[2].value);\n const [reverseSort, setReverseSort] = useState(false);\n const [width] = useWindowSize();\n const [loading, setLoading] = useState(false);\n const filteredBabies = useMemo(\n () =>\n babies\n .map((baby) => ({\n ...baby,\n babyPages: baby.babyPages.filter(\n (bp) => bp.new_version !== useOldBabypages\n ),\n }))\n .filter((baby) => !!baby.babyPages.length),\n [babies, useOldBabypages, loading]\n );\n let selectBabypagesText = width >= 768 ? \"Click to select the babypages you want to include in your book. Click again to unselect.\" : \"Tap to select the babypages you want to include in your book. Tap again to unselect.\"\n\n useEffect(() => {\n setLoading(true);\n setReverseSort(false);\n sagaMiddleware.run(\n fetchBabies,\n (err: string | null) => {\n setLoading(false);\n if (err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n }\n },\n undefined,\n sortBy\n );\n }, [sortBy]);\n\n let babyPages = useMemo(() => {\n let arr = babies\n .filter((item) => item.babyPages)\n .map((item) => {\n let arr = [...item.babyPages].reverse();\n if (reverseSort) {\n return arr;\n } else {\n return item.babyPages;\n }\n });\n let allBabypages: BabyPage[] = [];\n for (let babypageList of arr) {\n for (let babypage of babypageList) {\n if (allBabypages.length === 100) {\n break;\n }\n allBabypages.push(babypage);\n }\n if (allBabypages.length === 100) {\n break;\n }\n }\n\n return [...allBabypages];\n }, [sortBy, babies, reverseSort]);\n\n const [allSelect, setAllSelect] = useState(\n selectedBabypages.length === babyPages.length\n ? true\n : selectedBabypages.length === 100\n ? true\n : false\n );\n\n let selectAll100 = useMemo(() => {\n if (!allSelect) {\n let arr = babies\n .filter((item) => item.babyPages)\n .map((item) => {\n let arr = [...item.babyPages].reverse();\n if (reverseSort) {\n return arr;\n } else {\n return item.babyPages;\n }\n });\n\n let selected100Babypages: BabyPage[] = [];\n for (let babypageList of arr) {\n for (let babypage of babypageList) {\n if (selected100Babypages.length === 100) {\n break;\n }\n selected100Babypages.push(babypage);\n }\n if (selected100Babypages.length === 100) {\n break;\n }\n }\n if (selectedBabypages.length === 100) {\n return [];\n }\n return [...selected100Babypages];\n } else {\n return [];\n }\n }, [sortBy, allSelect, babies, reverseSort]);\n\n useEffect(() => {\n if (allSelect === false) {\n if (\n selectedBabypages.length === 100 ||\n selectedBabypages.length === selectAll100.length\n ) {\n setAllSelect(true);\n }\n } else if (allSelect === true) {\n if (selectedBabypages.length === babyPages.length - 1) {\n setAllSelect(false);\n }\n }\n }, [selectedBabypages]);\n\n return (\n
\n
\n
\n
\n {\" \"}\n {\" \"}\n
\n
\n {\n setSearch(e.target.value);\n }}\n onFocus={() => {\n trackAction(\n \"Search_Babypages\",\n {\n google: {\n event: \"search_babypage\",\n },\n },\n true\n );\n }}\n placeholder=\"Search\"\n />\n setSortModalVisible(true)}\n >\n
\n {\" \"}\n {\" \"}\n
\n
\n
\n
\n
\n

\n {!!useOldBabypages\n ? \"Please select between 8 and 60 babypages.\" \n : width < 1024 ? \"Please select between 8 and 100 babypages. Click to select the babypages you want to include in your book. Click again to unselect.\" \n : \"Please select between 8 and 100 babypages.\" }\n { width >= 1024 ? \n \n : null }\n\n

\n
\n
\n \n {\n if (!allSelect) {\n setSelectedBabypages([...selectAll100]);\n } else {\n setSelectedBabypages([]);\n }\n setAllSelect(!allSelect);\n }}\n >\n {allSelect ? \"Unselect All\" : \"Select All (Max 100)\" }\n \n

\n
\n
\n {!loading && \n \n
\n {!!filteredBabies &&\n filteredBabies.map((baby, index) => (\n
\n \n
\n ))}\n
\n
\n
\n
\n \n
\n
\n =8 ? false : true}\n onClick={nextStep}\n >\n Next\n \n \n
\n \n
\n
\n

Babypages Selected: {selectedBabypages.length}

\n
\n
\n }\n \n {loading ? (\n
\n }\n />\n
\n ) : null}\n setSortModalVisible(false)}\n footer={null}\n >\n

Sort By

\n {\n setSortBy(e.target.value);\n }}\n >\n {sortOptions.map((item, index) => (\n \n {\" \"}\n {capitalize(item.label)}{\" \"}\n \n ))}\n \n
\n {\n setReverseSort(!reverseSort);\n }}\n >\n {!reverseSort ? : }\n \n\n \n {sortBy === \"date\"\n ? !reverseSort\n ? \"Latest First\"\n : \"Earliest First\"\n : sortBy === \"milestone\"\n ? !reverseSort\n ? \"Earliest Milestones\"\n : \"Latest Milestones\"\n : !reverseSort\n ? \"A-Z\"\n : \"Z-A\"}\n \n
\n \n \n );\n};\nexport default SelectBabypages;\n","import { Button, Icon, Modal, notification, Tooltip } from 'antd';\nimport html2canvas from 'html2canvas';\nimport moment from 'moment';\nimport queryString from 'query-string';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { connect } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router';\nimport BaseLayout from '../../../components/BaseLayout/BaseLayout';\nimport CustomDivider from '../../../components/CustomDivider';\nimport ModalPlus from '../../../components/ModalPlus/ModalPlus';\nimport RouteLeavingGuard from '../../../components/RouteLeavingGuard/RouteLeavingGuard';\nimport BookFinalPreview from '../../../components/SaveBook/BookFinalPreview';\nimport CoverList from '../../../components/SaveBook/CoverList';\nimport EditText from '../../../components/SaveBook/EditText';\nimport OrderBabypages from '../../../components/SaveBook/OrderBabypages';\nimport SelectBabypages from '../../../components/SaveBook/SelectBabypages';\nimport SaveBookTooltipIcon from '../../../components/SaveBook/SaveBookTooltipIcon/SaveBookTooltipIcon';\nimport { BASE_URL, highResContent } from '../../../env';\nimport { Baby, BabyPage, Cover, User } from '../../../interfaces';\nimport { AppState, sagaMiddleware } from '../../../store';\nimport {\n fetchBookById,\n fetchCovers,\n saveBookSaga\n} from '../../../store/sagas/books';\nimport { checkUserModal } from '../../../store/sagas/form';\nimport {\n FileUploadedS3,\n FileUploadS3,\n savePhotosS3\n} from '../../../store/sagas/image';\nimport {\n canvasToBlobPromise,\n getBase64FromFileUrl\n} from '../../../utils/image';\nimport { trackAction } from '../../../utils/marketing';\nimport { capitalizeTexts, lastSegmentUrl } from '../../../utils/string';\nimport { delay } from '../../../utils/time';\nimport { getBrowserWidth } from \"../../../utils/size\";\nimport './Save.scss';\nimport { Fonts } from \"../../../hooks/Fonts\";\nimport ArrowNext from '../../../components/Icons/ArrowNext';\nconst { confirm } = Modal;\ninterface Props {\n covers: Cover[];\n user: User;\n babies: Baby[];\n babySelected?: Baby;\n bookType?: string;\n}\n\nconst SaveBooksPage: React.FC = ({\n covers,\n user,\n babies,\n babySelected,\n bookType,\n}) => {\n const history = useHistory();\n const location = useLocation();\n\n const contentRef = useRef(null);\n\n let id: any = queryString.parse(location.search).id;\n\n const [loaded, setLoaded] = useState(false);\n const [loading, setLoading] = useState(false);\n const [somethingChange, setSomethingChange] = useState(false);\n const [saveStep, setSaveStep] = useState<\n null | \"genImg\" | \"sendImg\" | \"saveBook\"\n >(null);\n const [plusOpen, setPlusOpen] = useState(false);\n const [selectedCover, setSelectedCover] = useState(\n undefined\n );\n const [selectedBabypages, setSelectedBabypages] = useState([]);\n const fonts = Fonts (!!user.user_level)\n\n const [bookText, setBookText] = useState({\n title: `${\n babySelected ? babySelected.baby_first_name : \"\"\n } ${babySelected ? babySelected.baby_last_name : \"\"}`,\n subtitle: babySelected\n ? moment(babySelected.baby_birthdate).format(\"LL\")\n : \"\",\n font: \"a\",\n font_id:0,\n });\n useEffect(() => {\n if(!!fonts.length) {\n setBookText((old) => {\n return {\n ...old,\n font: fonts[0].name,\n font_id:fonts[0].id\n }\n })\n }\n \n }, [fonts])\n const [useOldBabypages, setUseOldBabypages] = useState(false);\n const [control, setControl] = useState({\n valid: false,\n step: 0,\n });\n\n const buttonBarClasses = control.step === 1 ? \"\" : \"row justify-content-center align-items-center\"\n\n const sendToUpgradeToPlus = () => { \n history.push(\"/cart/subscription/yearly\");\n }\n\n const browserWidth = getBrowserWidth();\n\n const triggerTooltip = browserWidth >= 1024 ? \"hover\" : \"click\"\n\n // On start\n useEffect(() => {\n if (loaded) return;\n\n if (!!id) {\n setLoading(true);\n\n setControl((state) => ({\n ...state,\n valid: true,\n }));\n\n sagaMiddleware.run(\n fetchBookById,\n parseInt(id.toString()),\n (error: any | null, bookBD?: any) => {\n if (error !== null || !bookBD) {\n history.push(\"/\");\n setLoading(false);\n return;\n }\n\n try {\n if(!!bookBD.was_purchased) {\n history.push(\"/books\")\n }\n const valid = user.user_level !==0 || covers.find((cover) => cover.image === bookBD.cover)?.plus === 0;\n \n if(valid)\n setSelectedCover(covers.find((cover) => cover.image === bookBD.cover));\n\n setUseOldBabypages(!bookBD.babypages[0].new_version);\n\n setSelectedBabypages(\n bookBD.babypages_ids.map((bpId: number) =>\n bookBD.babypages.find((bp: any) => bp.id === bpId)\n )\n );\n const extraRegular = bookBD.title_styles.fontFamily.includes(\"-Regular-Regular\")\n const indexFirstRegular = bookBD.title_styles.fontFamily.indexOf(\"-\");\n const fontFamilyWithoutExtraRegular = extraRegular && !!indexFirstRegular ? bookBD.title_styles.fontFamily.slice(0, indexFirstRegular + 8) : bookBD.title_styles.fontFamily\n\n setBookText({\n title: bookBD.title,\n subtitle: bookBD.subtitle,\n font: fontFamilyWithoutExtraRegular, \n font_id: bookBD.font_id,\n });\n\n setControl({\n valid: valid,\n step: 0,\n });\n } catch (error) {\n Modal.error({\n title: \"Error\",\n content: error.message ? error.message : \"Error loading book\",\n });\n history.push(\"/\");\n }\n\n setLoaded(true);\n setLoading(false);\n }\n );\n }\n }, [\n location.search,\n babySelected,\n loaded,\n covers,\n babies,\n setControl,\n id,\n history,\n user.user_level,\n ]);\n\n useEffect(() => {\n const counts = babies.reduce(\n (total, baby) => ({\n new:\n total.new +\n baby.babyPages.filter((babypage) => babypage.new_version === true)\n .length,\n old:\n total.old +\n baby.babyPages.filter((babypage) => babypage.new_version === false)\n .length,\n }),\n { new: 0, old: 0 }\n );\n\n counts.new === 0 ? setUseOldBabypages(true) : setUseOldBabypages(false);\n }, [babies]);\n\n useEffect(() => {\n setLoading(true);\n sagaMiddleware.run(fetchCovers, (error?: any) => {\n setLoading(false);\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n }\n });\n }, []);\n\n useEffect(() => {\n if (\n (!!useOldBabypages &&\n selectedBabypages.length >= 8 &&\n selectedBabypages.length <= 60) ||\n (!useOldBabypages &&\n selectedBabypages.length >= 8 && selectedBabypages.length <= 100 )\n ) {\n setControl((state) => {\n return { ...state, valid: true };\n });\n } else {\n if(control.step === 1) {\n setControl((state) => {\n return { ...state, valid: false };\n });\n }\n }\n }, [useOldBabypages, selectedBabypages, setControl, control.step]);\n\n const allCovers = useMemo(\n () => {\n let sortedArray: any = {}\n covers.forEach((cover) => {\n if (sortedArray[cover.order] != undefined && sortedArray[cover.order].length != 0){\n return sortedArray[cover.order].push(cover)\n }\n sortedArray[cover.order] = [cover]\n })\n return sortedArray;\n },\n [covers]\n\n );\n\n const counts = useMemo(\n () =>\n babies.reduce(\n (total, baby) => ({\n new:\n total.new +\n baby.babyPages.filter((babypage) => babypage.new_version === true)\n .length,\n old:\n total.old +\n baby.babyPages.filter((babypage) => babypage.new_version === false)\n .length,\n }),\n { new: 0, old: 0 }\n ),\n [babies]\n );\n\n const showChangeConfirm = useCallback((value: boolean) => {\n confirm({\n title:\n \"Are you sure you want to continue? If you change the BabyPage version to use, you will lose your current selection\",\n okText: \"Yes\",\n okType: \"danger\",\n cancelText: \"No\",\n width: 300,\n icon: \"warning\",\n onOk() {\n setUseOldBabypages(value);\n setSelectedBabypages([]);\n },\n });\n }, []);\n\n const selectCover = useCallback(() => {\n const props = {\n setSelectedCover,\n selectedCover,\n setControl,\n isPlus: !!user.user_level && user.user_level === 1,\n showPlus: () => setPlusOpen(true),\n setSomethingChange,\n };\n\n return (\n <>\n

\n Scroll to browse design options & click to select the cover you want to use.\n

\n \n
\n {Object.keys(allCovers).map(key => {\n return \n }\n )\n }\n
\n
\n
\n \n
\n
\n \n Next\n \n \n
\n
\n \n \n );\n }, [\n selectedCover,\n allCovers,\n user.user_level,\n setSomethingChange,\n ]);\n\n const selectBabypages = useCallback(() => {\n const props = {\n useOldBabypages,\n babies,\n selectedBabypages,\n setSelectedBabypages,\n setControl,\n nextStep\n };\n\n return (\n
\n {counts.new >= 4 && counts.old >= 8 && (\n <>\n
\n
\n
\n {\n useOldBabypages && selectedBabypages.length\n ? showChangeConfirm(false)\n : setUseOldBabypages(false);\n }}\n >\n New Babypages\n \n
\n
\n {\n !useOldBabypages && selectedBabypages.length\n ? showChangeConfirm(true)\n : setUseOldBabypages(true);\n }}\n >\n Old BabyPages\n \n
\n
\n
\n \n )} \n \n
\n );\n }, [babies, useOldBabypages, selectedBabypages, showChangeConfirm, counts]);\n\n const orderBabypages = useCallback(() => {\n const props = {\n selectedBabypages,\n setSelectedBabypages,\n setControl,\n nextStep\n };\n\n return (\n
\n \n
\n );\n }, [selectedBabypages, control.step]);\n\n const editText = useCallback(() => {\n const props = {\n bookText,\n setBookText,\n selectedCover,\n loading,\n isPlus: !!user.user_level,\n setPlusOpen,\n setControl,\n nextStep,\n fonts\n };\n\n return ;\n }, [bookText, setBookText, selectedCover, loading, control.step]);\n\n const bookFinal = useCallback(() => {\n const props = {\n loading,\n bookText,\n selectedCover,\n selectedBabypages,\n useOldBabypages,\n setControl,\n nextStep\n };\n\n return ;\n }, [loading, bookText, selectedCover, selectedBabypages, useOldBabypages, control.step]);\n\n const renderStep = useCallback(() => {\n switch (control.step) {\n case 0:\n return selectCover();\n case 1:\n return selectBabypages();\n case 2:\n return orderBabypages();\n case 3:\n return editText();\n case 4:\n return bookFinal();\n default:\n return false; //cambiar por ultimo paso\n }\n }, [\n control.step,\n selectCover,\n selectBabypages,\n orderBabypages,\n editText,\n bookFinal,\n ]);\n\n const saveBook = useCallback(async () => {\n setLoading(true);\n setSaveStep(\"genImg\");\n\n let Cover: HTMLCanvasElement | null = null;\n\n try {\n const coverWithBase64 = {\n ...selectedCover!,\n image_b64: await getBase64FromFileUrl(\n selectedCover!.thumbnail,\n `${BASE_URL}api/avoid-cors?url=`\n ),\n };\n\n setSelectedCover(coverWithBase64);\n\n await delay(300);\n const coverImage = document.getElementById(\"book-cover\");\n\n if (!!coverImage) {\n Cover = await html2canvas(coverImage, { ...highResContent, scale: 1 });\n }\n\n if (!!Cover) {\n // First send images to S3 and Get URL\n const photoToS3: FileUploadS3[] = [\n {\n image: await canvasToBlobPromise(Cover),\n folder: \"books\",\n },\n ];\n\n setSaveStep(\"sendImg\");\n\n sagaMiddleware.run(\n savePhotosS3,\n photoToS3,\n (err: string | null, responses?: FileUploadedS3[]) => {\n if (err !== null) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n setLoading(false);\n setSaveStep(null);\n return;\n } else if (!!responses) {\n const fontFamily = bookText.font\n\n const bookToSave = {\n id: !!id ? id : undefined,\n cover: selectedCover!.image,\n thumbnail: responses[0].thumbnail,\n title: bookText.title,\n subtitle: bookText.subtitle,\n font_id:bookText.font_id,\n pages: selectedBabypages.map((babypage) =>\n lastSegmentUrl(babypage.thumbnail)\n ),\n babypages_ids: selectedBabypages.map((babypage) => babypage.id),\n title_styles: { fontFamily },\n subtitle_styles: { fontFamily },\n parent_id: user.id,\n type: bookType,\n };\n\n setSaveStep(\"saveBook\");\n\n sagaMiddleware.run(\n saveBookSaga,\n bookToSave,\n (error?: any, id?: number) => {\n setLoading(false);\n setSaveStep(null);\n\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n return;\n }\n\n setSomethingChange(false);\n\n notification.success({\n message: \"Success\",\n description: \"Book saved successfully\",\n });\n\n setTimeout(() => {\n // Check if show rating form\n sagaMiddleware.run(checkUserModal, history);\n\n history.push(\"/books?createdBook=true\");\n }, 300);\n }\n );\n } else {\n Modal.error({\n title: \"Error\",\n content: \"Error saving Book\",\n });\n setLoading(false);\n setSaveStep(null);\n }\n }\n );\n } else {\n setLoading(false);\n setSaveStep(null);\n }\n } catch (error) {\n setLoading(false);\n setSaveStep(null);\n\n Modal.error({\n title: \"Error\",\n content:\n \"An error has occurred during Book generation, please try again later\",\n });\n }\n }, [bookText, history, user, selectedCover, selectedBabypages, id]);\n\n const nextStep = useCallback(() => {\n if (control.step === 4) {\n window.scrollTo(0, 0);\n document.body.style.overflow='hidden'\n saveBook();\n } else { \n if (!!contentRef.current) {\n contentRef.current.scrollTo(0, 0);\n }\n\n\n if (!!id) {\n setControl((prev) => {\n return {\n ...prev,\n step:prev.step + 1,\n }\n })\n } else {\n setControl((prev) => {\n const step = prev.step + 1\n return {\n valid: step === 2 || step === 3 || step === 4,\n step: step,\n }\n })\n }\n }\n }, [control.step, saveBook, contentRef, id]);\n\n return (\n \n history.push(path)}\n />\n {loading && (\n
\n \n {!!saveStep && (\n

\n {saveStep === \"genImg\"\n ? \"Generating High Res. ...\"\n : saveStep === \"sendImg\"\n ? \"Saving High Res. Image...\"\n : \"Saving Book...\"}\n

\n )}\n
\n )}\n
\n
{renderStep()}
\n
\n {/*
\n \n {control.step === 1 && (\n

\n Selected BabyPages: {selectedBabypages.length}\n

\n )}\n
\n {control.step > 0 && (\n <>\n {\n if (!!contentRef.current) {\n contentRef.current.scrollTo(0, 0);\n }\n setControl((old) => {\n let step = old.step - 1;\n return { step, valid: true };\n });\n }}\n >\n PREVIOUS\n \n  \n \n )}\n \n {control.step !== 4 ? \"NEXT\" : \"FINISH\"}\n \n
\n
*/}\n {/* */}\n setPlusOpen(false)} onSaveBeforeUpgradeToPlus={sendToUpgradeToPlus} bookMessage={true} />\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n covers: state.books.covers,\n user: state.user,\n babies: state.baby.babies,\n babySelected: state.baby.babySelected,\n bookType: state.books.bookType,\n});\n\nexport default connect(mapStateToProps)(SaveBooksPage);\n","import { Button, Icon, InputNumber } from \"antd\";\nimport React from \"react\";\nimport { CartItem } from \"../../interfaces/cart\";\n\ninterface Props {\n item: CartItem;\n itemIndex: number;\n store: CartItem[];\n setStore: React.Dispatch>;\n updateStore: (newStore: CartItem[]) => void;\n onRemoveItem: (index: number) => void;\n}\n\nconst BabyPrint: React.FC = ({\n item,\n itemIndex,\n store,\n setStore,\n updateStore,\n onRemoveItem\n}) => {\n return (\n
\n
\n \"Thumbnail\"\n
\n
\n
\n
\n

\n {item.event}\n

\n

\n {item.title} / $\n {!!item.options && !!item.options.length\n ? item.options[0].price.toFixed(2)\n : \"2.50\"}{\" \"}\n each\n

\n
\n
\n onRemoveItem(itemIndex)}\n style={{ fontSize: 24 }}\n />\n
\n
\n
\n
\n {\n if (!value || isNaN(value) || value < 1) value = 1;\n if (value > 20) value = 20;\n\n const qty = value!;\n const total =\n value! *\n (!!item.options && !!item.options.length\n ? item.options[0].price\n : 2.5);\n\n const newStore = store.map((e, i) => {\n if (i === itemIndex)\n return {\n ...e,\n qty,\n total,\n options: [{ ...e.options[0], qty }]\n };\n return e;\n });\n\n setStore(newStore);\n updateStore(newStore);\n }}\n />\n
\n
\n \n {\n const newStore = store.map((e, i) => {\n if (i === itemIndex && !!e.qty && e.qty > 1)\n return {\n ...e,\n qty: e.qty - 1,\n total:\n (e.qty - 1) *\n (!!item.options && !!item.options.length\n ? item.options[0].price\n : 2.5),\n options: [{ ...e.options[0], qty: e.qty - 1 }]\n };\n return e;\n });\n\n setStore(newStore);\n updateStore(newStore);\n }}\n disabled={(item.qty || 1) === 1}\n />\n {\n const newStore = store.map((e, i) => {\n if (i === itemIndex && (!e.qty || e.qty < 20))\n return {\n ...e,\n qty: (e.qty || 1) + 1,\n total:\n ((e.qty || 1) + 1) *\n (!!item.options && !!item.options.length\n ? item.options[0].price\n : 2.5),\n options: [{ ...e.options[0], qty: (e.qty || 1) + 1 }]\n };\n return e;\n });\n\n setStore(newStore);\n updateStore(newStore);\n }}\n disabled={(item.qty || 1) === 20}\n />\n \n
\n
\n
\n
\n );\n};\n\nexport default BabyPrint;\n","import React from \"react\";\n\nfunction EyeOpen() {\n return (\n \n \n \n );\n}\n\nexport default EyeOpen;\n","import React from \"react\";\n\nfunction Thrash() {\n return (\n \n \n \n );\n}\n\nexport default Thrash;","import { Button, Checkbox, Icon, InputNumber, Modal } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { CartItem } from \"../../interfaces/cart\";\nimport { itemInvalid } from \"../../pages/Cart/CheckoutHelper\";\nimport { sagaMiddleware } from \"../../store\";\nimport { fetchBookById } from \"../../store/sagas/books\";\nimport BookModal from \"../BookModal/BookModal\";\nimport DetailArrow from \"../Icons/DetailArrow\";\nimport EyeOpen from \"../Icons/EyeOpen\";\nimport Thrash from \"../Icons/Thrash\";\nimport \"./Book.scss\";\n\ninterface Props {\n item: CartItem;\n onChangeItem: (item: CartItem) => void;\n onRemoveItem: (event: React.MouseEvent) => void;\n itemIndex: number;\n setLoading: React.Dispatch>;\n}\n\nconst Book: React.FC = ({\n item,\n onChangeItem,\n onRemoveItem,\n itemIndex,\n setLoading,\n}) => {\n const history = useHistory();\n const [completeBook, setCompleteBook] = useState(item);\n const [currentIndex, setCurrentIndex] = useState(0);\n const [bookPreviewModal, setBookPreviewModal] = useState(false);\n const [totalExtraPagesCost, setTotalExtraPagesCost] = useState(0);\n const [totalWithExtraPages, setTotalWithExtraPages] = useState(0);\n\n useEffect(() => {\n setLoading(true);\n sagaMiddleware.run(\n fetchBookById,\n parseInt(item.book_id),\n (error: any | null, bookBD?: any) => {\n if (error !== null || !bookBD) {\n setLoading(false);\n history.push(\"/\");\n return;\n }\n try {\n item.babypages = bookBD.babypages;\n item.title = bookBD.title;\n setCompleteBook(item);\n } catch (error) {\n Modal.error({\n title: \"Error\",\n content: error.message ? error.message : \"Error loading book\",\n });\n }\n },\n );\n setLoading(false);\n }, []);\n\n useEffect(() => {\n const calculateTotalCost = () => {\n const totalWithoutExtraPages = item.options.reduce((acc, current) => {\n return acc + current.price * current.qty;\n }, 0);\n\n const totalExtraPages = item.options.reduce((acc, current) => {\n if (\n current.selected &&\n current.extra_pages &&\n current.extra_pages.selected\n ) {\n return acc + current.extra_pages.price * current.extra_pages.qty;\n }\n return acc;\n }, 0);\n\n const totalWithExtraPages = totalWithoutExtraPages + totalExtraPages;\n\n return {\n totalWithoutExtraPages,\n totalWithExtraPages,\n totalExtraPages,\n };\n };\n const { totalExtraPages, totalWithExtraPages } = calculateTotalCost();\n setTotalExtraPagesCost(totalExtraPages.toFixed(2));\n setTotalWithExtraPages(totalWithExtraPages.toFixed(2));\n }, [item]);\n\n const cartDividerStyle = itemIndex > 0 ? \"cart-divider\" : \"\";\n\n const removeSmallOrLarge = (title: string) => {\n let titleResult;\n titleResult = title.includes(\"Large\")\n ? title.replace(\"Large\", \"\")\n : title.replace(\"Small\", \"\");\n return titleResult;\n };\n\n const replaceSmallOrLarge = (title: string) => {\n let titleResult;\n titleResult = title.includes(\"Large\")\n ? title.replace(\"Large\", '8\"x8\"')\n : title.replace(\"Small\", '6\"x6\"');\n\n return titleResult;\n };\n\n return (\n
\n
\n \"Thumbnail\"\n
\n
\n
\n
\n

\n {item.title}\n

\n
\n
\n <>\n {item.options\n .filter((option: any) => option.active)\n .map((option, index) => (\n \n
\n {\n const options = item.options.map((o, i) => {\n if (o.extra_pages) {\n if (i === index) {\n return {\n ...option,\n qty: value || 0,\n selected: !!value && value > 0 ? true : false,\n extra_pages: {\n ...option.extra_pages,\n },\n };\n }\n } else {\n if (i === index) {\n return {\n ...option,\n qty: value || 0,\n selected: !!value && value > 0 ? true : false,\n };\n }\n }\n\n return o;\n });\n\n onChangeItem({\n ...item,\n options,\n total: options\n .filter((o) => !!o.selected)\n .reduce((total, curr) => {\n if (curr.total_with_pages) {\n return (\n total +\n parseFloat(curr.total_with_pages) *\n parseInt(curr.qty)\n );\n } else {\n return (\n total +\n parseFloat(curr.price) * parseInt(curr.qty)\n );\n }\n }, 0),\n totalWithoutPages: options\n .filter((o) => !!o.selected)\n .reduce((total, curr) => {\n return (\n total +\n parseFloat(curr.price) * parseInt(curr.qty)\n );\n }, 0),\n });\n }}\n />\n
\n\n
\n
\n

\n {removeSmallOrLarge(option.title)}\n

\n

\n ${option.price.toFixed(2)}\n

\n
\n
\n ))}\n \n {totalExtraPagesCost > 0 ? (\n
\n
\n

Additional Pages:

\n

${totalExtraPagesCost}

\n
\n\n
\n
\n \n Details\n \n {item.options.map((option) => {\n if (option.selected && option.extra_pages) {\n // return

{option.extra_pages.qty} - {replaceSmallOrLarge(option.extra_pages.title)} ${option.extra_pages.price.toFixed(2)}

\n return (\n
\n

\n {option.extra_pages.qty} -{\" \"}\n {replaceSmallOrLarge(option.extra_pages.title)}{\" \"}\n

\n

\n ${option.extra_pages.price.toFixed(2)}\n

\n
\n );\n }\n })}\n
\n
\n
\n ) : null}\n
\n

Subtotal:

\n

${totalWithExtraPages}

\n {/*

${item.total.toFixed(2)}

*/}\n
\n\n
\n \n {\" \"}\n {\" \"}\n \n {\n setBookPreviewModal(true);\n }}\n >\n {\" \"}\n Preview{\" \"}\n

\n\n \n {\" \"}\n {\" \"}\n \n

\n Remove\n

\n
\n
\n {!!completeBook.babypages ? (\n setBookPreviewModal(false)}\n useOldBabypages={false}\n />\n ) : null}\n \n );\n};\n\nexport default Book;","import React from \"react\";\n\nfunction PlusIcon() {\n return (\n \n \n \n +\n \n \n \n );\n}\n\nexport default PlusIcon;\n","import { Input, Icon, Button, DatePicker, Popover } from \"antd\";\nimport React, { useState } from \"react\";\nimport giftcard from \"../../assets/img/book_line.png\";\nimport { CartItem } from \"../../interfaces/cart\";\nimport moment, { Moment } from \"moment\";\nimport PlusIcon from \"../Icons/PlusIcon\";\nimport Thrash from \"../Icons/Thrash\";\n\ninterface Props {\n item: CartItem;\n onChangeItem: (item: CartItem) => void;\n onRemoveItem: (event: React.MouseEvent) => void;\n itemIndex: number;\n addGiftCard: Function;\n}\n\nconst GiftCard: React.FC = ({\n item,\n onChangeItem,\n onRemoveItem,\n itemIndex,\n addGiftCard,\n}) => {\n const [messageLength, setMessageLength] = useState(\n item.gift.message?.length || 0,\n );\n\n const getMessageLengthStyle = (): React.CSSProperties => {\n const maxLength = 255;\n const halfLength = maxLength / 2;\n const threeQuartersLength = (maxLength * 3) / 4;\n\n if (messageLength <= halfLength) {\n return { color: \"green\" };\n } else if (messageLength <= threeQuartersLength) {\n return { color: \"#ed5a62\" };\n } else {\n return { color: \"red\" };\n }\n };\n const cartDividerStyle = itemIndex > 0 ? \"cart-divider\" : \"\";\n return (\n
\n
\n \"Gift\n
\n
\n
\n
\n

\n {item.title}\n

\n
\n
\n
\n
\n \n onChangeItem({ ...item, total: parseInt(e.target.value) || 10 })\n }\n onBlur={() => {\n if (item.total < 10) {\n onChangeItem({ ...item, total: 10 });\n } else if (item.total > 300) {\n onChangeItem({ ...item, total: 300 });\n }\n }}\n />\n
\n
\n\n \n \n onChangeItem({\n ...item,\n gift: { ...item.gift, receiver: e.target.value },\n })\n }\n />\n\n \n \n onChangeItem({\n ...item,\n gift: { ...item.gift, email: e.target.value },\n })\n }\n />\n\n \n {\n onChangeItem({\n ...item,\n gift: { ...item.gift, message: e.target.value },\n });\n setMessageLength(e.target.value.length);\n }}\n maxLength={255}\n />\n
\n {messageLength} /\n 255\n
\n\n \n \n (current !== null &&\n current > moment().add(1, \"years\").endOf(\"day\")) ||\n (current !== null && current < moment().startOf(\"day\"))\n }\n onChange={(momentDate) => {\n onChangeItem({\n ...item,\n gift: {\n ...item.gift,\n date: momentDate?.startOf(\"day\").toString(),\n },\n });\n }}\n />\n
\n

Subtotal:

\n

${item.total.toFixed(2)}

\n
\n\n
\n \n {\" \"}\n {\" \"}\n \n

\n {\" \"}\n Remove{\" \"}\n

\n\n \n {\" \"}\n \n {\n addGiftCard();\n }}\n >\n Gift Card\n

\n
\n
\n
\n );\n};\n\nexport default GiftCard;\n","import React, {useEffect} from \"react\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\n\nfunction Rattle() {\n\n const [width] = useWindowSize();\n let size = width >= 768 ? \"107\" : \"67\";\n\n useEffect(() => {\n size = width >= 768 ? \"107\" : \"67\"\n }, [width])\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default Rattle;","import { Icon, Radio } from 'antd';\nimport React from 'react';\nimport plusThumb from '../../assets/img/plus-thumbnail.png';\nimport { CartItem } from '../../interfaces/cart';\nimport { User } from \"../../interfaces\";\nimport Rattle from '../Icons/Rattle';\nimport Thrash from '../Icons/Thrash';\ninterface Props {\n item: CartItem;\n onChangeItem: (item: CartItem) => void;\n onRemoveItem: (event: React.MouseEvent) => void;\n user: User;\n itemIndex: number;\n}\n\nconst Subscription: React.FC = ({\n item,\n onChangeItem,\n onRemoveItem,\n user,\n itemIndex\n}) => {\n const cartDividerStyle = itemIndex > 0 ? \"cart-divider\" : \"\";\n\n return (\n
\n
\n \n
\n
\n
\n
\n

\n BabyPage PLUS Subscription\n

\n
\n
\n {\n const description = e.target.value;\n const option = item.options.find(e => e.description === description);\n if (!!option) {\n onChangeItem({\n ...item,\n item: option.description,\n description: option.description,\n stripe_id: option.stripe_id,\n id: option.stripe_id,\n total: option.price,\n subtitle: option.title,\n options: item.options.map(e => ({ ...e, selected: e.description === description })),\n });\n }\n }}\n value={item.description}\n className='my-1'\n >\n {item.options.map((option, index) => (\n \n ${option.price.toFixed(2)} \n \n for{' '}\n {option.description === 'monthly'\n ? '1 Month'\n : option.description === 'three month'\n ? '3 Months'\n : '1 Year'}{' '}\n \n \n ))}\n \n
\n \n

Remove

\n
\n
\n
\n);\n}\n\nexport default Subscription;\n","import { Button, Icon, Modal, notification, Tooltip } from 'antd';\nimport cloneDeep from 'lodash/cloneDeep';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router';\nimport { Dispatch } from 'redux';\nimport BaseLayout from '../../components/BaseLayout/BaseLayout';\nimport BabyPrint from '../../components/Cart/BabyPrint';\nimport Book from '../../components/Cart/Book';\nimport GiftCard from '../../components/Cart/GiftCard';\nimport Subscription from '../../components/Cart/Subscription';\nimport { isEmailValid } from '../../components/SignIn/data/emails';\nimport { CartItem } from '../../interfaces/cart';\nimport { Product } from '../../interfaces/product';\nimport { User } from '../../interfaces/user';\nimport { AppState, sagaMiddleware } from '../../store/';\nimport { BaseAction } from '../../store/actionTypes';\nimport { changeUser } from '../../store/ducks/user';\nimport queryString from 'query-string';\nimport {\n addProductStore,\n getUserStore,\n updateUserStore,\n} from '../../store/sagas/cart';\nimport './Cart.scss';\nimport { StripeProduct } from '../../interfaces';\nimport moment from 'moment';\n\nconst { confirm, info } = Modal;\n\ninterface Props {\n user: User;\n products: Product[];\n onChangeUser: (payload: any) => void;\n stripeProducts: StripeProduct[];\n}\n\nconst CartPage: React.FC = ({ user, products, onChangeUser, stripeProducts }) => {\n const history = useHistory();\n const location = useLocation();\n\n const [loading, setLoading] = useState(false);\n const [debounce, setDebounce] = useState(null);\n const [store, setStore] = useState([]);\n const subscriptionOptions = products.filter(item => item.type === \"subscription\" && !!item.stripe_id && item.description !== 'six month')\n .map(item => {\n return {\n ...item,\n id: item.stripe_id,\n qty: 1,\n price: (item.price / 100),\n selected: false,\n sku_id: null,\n sku_type: null,\n sku_image: null,\n sku_attributes: null,\n sku_package_dimensions: null,\n sku_inventory: null,\n shippable: false,\n attributes: null,\n package_dimensions: null,\n active: null,\n metadata: [],\n images: null,\n }\n }) \n\n const cartSummaryMarginClasses = user.user_level === 0 ? \"summary-position\" : \"\";\n const getDayForSubscription = () => {\n const momentDate = moment().add(1, \"week\").format(\"MM/DD/YY\");\n return momentDate;\n };\n const addGiftCard = () => {\n const giftCard = stripeProducts.find((p) => p.caption === \"giftcard\");\n if (!giftCard) {\n return;\n }\n\n if (!!giftCard) {\n sagaMiddleware.run(\n addProductStore,\n {\n book_id: null,\n babypage_id: null,\n event: '',\n gift: { status: true, email: '', receiver: '', message: '', date: '' },\n id: giftCard.id,\n item: giftCard.type,\n options: [\n {\n id: giftCard.id,\n title: giftCard.name,\n description: giftCard.description,\n shippable: giftCard.shippable,\n attributes: giftCard.attributes,\n package_dimensions: giftCard.package_dimensions,\n active: giftCard.active,\n metadata: giftCard.metadata,\n images: giftCard.images,\n price: giftCard.skus.data[0].price / 100,\n qty: 1,\n sku_id: giftCard.skus.data[0].id,\n sku_type: giftCard.skus.data[0].object,\n sku_image: giftCard.skus.data[0].image,\n sku_attributes: giftCard.skus.data[0].attributes,\n sku_package_dimensions: giftCard.skus.data[0].package_dimensions,\n sku_inventory: giftCard.skus.data[0].inventory,\n selected: true,\n },\n ],\n prices: [],\n qty: 1,\n stripe_id: giftCard.id,\n subtitle: giftCard.name,\n thumbnail: \"\",\n title: `BabyPage ${giftCard.name}`,\n total: giftCard.skus.data[0].price / 100,\n type: giftCard.caption,\n },\n (error?: string, _?: string) => {\n if (!!error) {\n Modal.error({\n title: 'Error',\n content: error,\n });\n }\n }\n );\n }\n }\n useEffect(() => {\n sagaMiddleware.run(getUserStore, (error?: string) => {\n if (!!error) {\n Modal.error({\n title: 'Error',\n content: error,\n });\n }\n });\n }, []);\n\n useEffect(() => {\n if (!!user.store) {\n try {\n const localStore = JSON.parse(user.store);\n if (!!localStore && Array.isArray(localStore)) {\n let newStore: CartItem[] =\n !!user.user_level && user.user_level === 1\n ? cloneDeep(\n localStore.filter((e: CartItem) => e.type !== 'subscription')\n )\n : cloneDeep(localStore);\n\n newStore = newStore.map((e) => ({\n ...e,\n options: e.options.sort(function (a, b) {\n return a.price - b.price;\n }),\n }));\n\n setStore(\n newStore.map(e => ({\n ...e,\n qty:\n !!e.qty && typeof e.qty === 'number' && !isNaN(e.qty)\n ? e.qty\n : 1,\n }))\n );\n }\n } catch (error) {}\n }\n }, [user]);\n\n useEffect(() => {\n if (!!user.user_level && user.user_level === 1) return;\n\n if (location.pathname.indexOf('/subscription') !== -1) {\n // If user has a subscription in cart dont override cart\n if(!!user.store) {\n let subscription = JSON.parse(user.store).filter((item: CartItem) => item.type === \"subscription\")\n if (subscription.length) {\n return;\n }\n }\n setLoading(true);\n let product: Product | undefined = undefined;\n\n if (location.pathname.indexOf('/yearly') !== -1) {\n product = products.find(p => p.description === 'one year');\n } else if (location.pathname.indexOf('/monthly') !== -1) {\n product = products.find(p => p.description === 'monthly');\n } else if (location.pathname.indexOf('/three-month') !== -1) {\n product = products.find(p => p.description === 'three month');\n }\n \n if (!!product) {\n sagaMiddleware.run(\n addProductStore,\n {\n book_id: null,\n babypage_id: null,\n event: '',\n gift: { status: false, email: '', receiver: '', message: '', date: '' },\n id: product.stripe_id,\n item: product.description,\n description: product.description,\n options: subscriptionOptions.map(e => {\n if (e.description === product!.description) return { ...e, selected: true };\n return e;\n }),\n prices: { monthly: 7.99, 'three month': 13.98, 'one year': 45 },\n qty: 1,\n stripe_id: product.stripe_id,\n subtitle: `BabyPage ${product.title}`,\n thumbnail: '',\n title: 'BabyPage PLUS Subscription',\n total: product.price / 100,\n type: product.type,\n },\n (error?: string, _?: string) => {\n if (!!error) {\n Modal.error({\n title: 'Error',\n content: error,\n });\n } else {\n if (user.source === 'baby-list') {\n history.push('/checkout');\n }\n setLoading(false);\n }\n }\n );\n }\n }\n }, [user.user_level, location.pathname, products]);\n\n const subTotal = useMemo(\n () => store.reduce((total: number, curr: any) => total + curr.total, 0),\n [store]\n );\n\n const subscription = useMemo(\n () => store.find(item => item.type === 'subscription'),\n [store]\n );\n\n const updateStore = useCallback(\n (newStore: CartItem[]) => {\n if (debounce !== null) {\n clearTimeout(debounce);\n }\n\n setDebounce(\n setTimeout(() => {\n sagaMiddleware.run(\n updateUserStore,\n JSON.stringify(newStore),\n (error?: string, description?: string) => {\n if (!!error) {\n Modal.error({\n title: 'Error',\n content: error,\n });\n }\n }\n );\n }, 3000)\n );\n },\n [debounce]\n );\n\n const onRemoveItem = useCallback(\n (index: number) => {\n confirm({\n title: 'Are you sure you want to delete this item?',\n okType: 'danger',\n width: 300,\n icon: 'warning',\n onOk() {\n if (!!debounce) {\n clearTimeout(debounce);\n setDebounce(null);\n }\n\n setLoading(true);\n const clonedStore = cloneDeep(store);\n clonedStore.splice(index, 1);\n\n sagaMiddleware.run(\n updateUserStore,\n JSON.stringify(clonedStore),\n (error?: string, description?: string) => {\n setLoading(false);\n\n if (!!error) {\n Modal.error({\n title: 'Error',\n content: error,\n });\n } else if (!!description) {\n notification.success({\n message: 'Success',\n description,\n });\n }\n }\n );\n },\n });\n },\n [store, debounce]\n );\n\n const onCheckout = useCallback(() => {\n const itemInvalid = store.find(item => {\n if (\n item.type === 'giftcard' &&\n (!item.gift.receiver ||\n !item.gift.email ||\n !isEmailValid(item.gift.email))\n ) {\n info({\n title:\n 'Please fill your gift card information with a valid name and email.',\n });\n\n return true;\n } else if (\n item.type === 'book' &&\n !item.options.find(o => !!o.selected)\n ) {\n info({\n title:\n \"You have a book without selecting any options, if you don't want it, remove it from the cart.\",\n });\n\n return true;\n }\n return false;\n });\n\n if (itemInvalid) return;\n\n // Ensure the giftcard value is valid\n const userStore = store.map(i => {\n if (i.type === 'giftcard') {\n if (i.total < 10) {\n i.total = 10;\n } else if (i.total > 300) {\n i.total = 300;\n }\n }\n\n return i;\n });\n\n onChangeUser({ store: JSON.stringify(userStore) });\n\n setTimeout(() => {\n history.push('/checkout');\n }, 100);\n }, [store, history, onChangeUser]);\n\n return (\n \n {loading ? (\n
\n \n
\n ) : store.length > 0 ? (\n
\n
\n
\n {store.map((item, index) =>\n item.type === 'giftcard' ? (\n
\n {\n const newStore = store.map((e, i) => {\n if (i === index) return item;\n return e;\n });\n\n setStore(newStore);\n updateStore(newStore);\n }}\n onRemoveItem={() => onRemoveItem(index)}\n itemIndex={index}\n addGiftCard={addGiftCard}\n />\n
\n ) : item.type === 'book' ? (\n {\n const newStore = store.map((e, i) => {\n if (i === index) return item;\n return e;\n });\n\n const filteredStored = newStore.map(({babypages, ...keepAttrs}) => keepAttrs)\n setStore(filteredStored);\n updateStore(filteredStored);\n }}\n onRemoveItem={() => onRemoveItem(index)}\n itemIndex={index}\n setLoading={setLoading}\n />\n ) : item.type === 'subscription' ? (\n {\n const newStore = store.map((e, i) => {\n if (i === index) return item;\n return e;\n });\n\n setStore(newStore);\n updateStore(newStore);\n }}\n onRemoveItem={() => onRemoveItem(index)}\n user={user}\n itemIndex={index}\n />\n ) : (\n \n )\n )}\n
\n
\n
\n
\n
\n

Summary:

\n
\n
\n

\n Subtotal: \n

\n \n \n ${' '}\n {subscription && !user.trialUsed\n ? (subTotal - subscription.total).toFixed(2)\n : subTotal.toFixed(2)}\n \n {!!subscription && !user.trialUsed && (\n \n \n \n )}\n \n
\n {!!subscription && !user.trialUsed && (\n
\n

Your subscription total ${subscription.total} will be charged on {getDayForSubscription()}.

\n
\n )}\n \n
\n \n Proceed to Checkout\n \n
\n
\n
\n
\n ) : (\n
\n \n

\n Shopping Cart Empty\n

\n
\n )}\n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user,\n products: state.product.products,\n stripeProducts: state.stripeProduct,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n onChangeUser: (payload: any) => dispatch(changeUser(payload)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CartPage);\n","import React from \"react\";\nimport { PAYPAL } from \"../../env\";\nimport { trackAction } from \"../../utils/marketing\";\nimport \"./PaypalButton.scss\";\n\nconst rootUrl =\n PAYPAL.mode === \"sandbox\"\n ? \"https://www.sandbox.paypal.com\"\n : \"https://www.paypal.com\";\n\ninterface Props {\n buttonId: string;\n userId: number;\n subscription: any;\n registerBeginPurchaseEvent?: () => void;\n disabled?: boolean;\n}\n\nconst PaypalButton: React.FC = ({\n buttonId,\n userId,\n subscription,\n registerBeginPurchaseEvent,\n disabled = false\n}) => (\n
\n \n \n \n {\n trackAction('Purchase', subscription);\n if (!!registerBeginPurchaseEvent) registerBeginPurchaseEvent();\n }}\n disabled={disabled}\n />\n \"\"\n \n);\n\nexport default PaypalButton;\n","import { call, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { Coupon, Purchase, ShippingMethod } from \"../../interfaces\";\nimport { createCardToken } from \"../../stripe\";\nimport { parseRequestError } from \"../../utils/error\";\nimport { changeUser } from \"../ducks/user\";\nimport { trackAction, trackPurchase } from \"./../../utils/marketing\";\nimport { getCustomerInfo } from \"./customer\";\nimport { getAuthenticatedUser } from \"./user\";\n\n/**\n * Create a new Purchase\n */\nexport function* createPurchaseSaga(\n purchase: Purchase,\n total: number,\n cardInfo: {\n cardNumber: number;\n cardName: string;\n cardCVV: number;\n cardMonth: number;\n cardYear: number;\n customerId: string;\n } | null,\n callback: (error?: string) => void\n) {\n \n\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n try {\n if (!!cardInfo) {\n const token = yield call(createCardToken, {\n number: cardInfo.cardNumber,\n exp_month: cardInfo.cardMonth,\n exp_year: cardInfo.cardYear,\n cvc: cardInfo.cardCVV,\n name: cardInfo.cardName,\n });\n if (!!token) {\n const response = yield call(\n api.post,\n \"api/stripe/create-card\",\n {\n source: token,\n customer_id: cardInfo.customerId,\n },\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n if (\n !!response &&\n !!response.data &&\n !!response.data.data &&\n !!response.data.data.id\n ) {\n trackAction('AddPaymentInfo', {\n google: {\n event: \"add_payment_info\"\n }\n });\n purchase.card_token = response.data.data.id;\n } else {\n throw new Error(\"Invalid Card\");\n }\n } else {\n throw new Error(\"Invalid Card\");\n }\n }\n\n const mainUserId = yield select(\n (state: AppState) => state.user.main_user?.id\n );\n const mainUserStripeId = yield select(\n (state: AppState) => state.user.main_user?.stripe_id\n );\n \n if (mainUserId) purchase.stripe_token = mainUserStripeId;\n\n yield call(api.post, \"api/create-purchase?lang=en\", purchase, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n // trackAction(\"OrderConfirmation\", {\n // google: {\n // event: \"purchase\",\n // },\n // });\n yield call(getAuthenticatedUser);\n yield call(getCustomerInfo);\n\n trackPurchase(purchase.store, total);\n callback(undefined);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Check user coupon\n */\nexport function* checkCoupon(\n coupon: string,\n callback: (error?: string, coupon?: Coupon) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n try {\n const response = yield call(\n api.get,\n `api/stripe/retrieve-coupon/${coupon}`,\n {\n headers: {\n Authorization: accessToken,\n },\n }\n );\n\n if (response.data && response.data.code === 200 && !!response.data.data) {\n callback(undefined, response.data.data);\n } else {\n callback(\"Coupon not valid\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n\n/**\n * Check paypal transaction\n */\nexport function* checkPaypalTransaction(\n data: any,\n callback?: (error?: string) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n try {\n const response = yield call(api.post, \"api/verify-paypal-payment\", data, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200 && !!response.data.data) {\n const { user } = response.data.data;\n const trackActionData = {\n facebook: response.data.data,\n amplitude: response.data.data,\n pinterest: response.data.data,\n google: {\n event: \"subscription\",\n },\n };\n trackAction(\"Subscribe\", trackActionData);\n changeUser({ ...user });\n }\n\n if (!!callback) callback(undefined);\n } catch (error) {\n if (!!callback) callback(parseRequestError(error));\n }\n}\n\n/**\n * Get shipping methods\n */\nexport function* getShippingMethods(\n country:any,\n callback: (err?: string, response?: ShippingMethod[]) => void\n) {\n const accessToken = yield select(\n (state: AppState) => state.user.access_token\n );\n\n try {\n const response = yield call(api.get, `api/stripe/shipping-methods?country=${country}`, {\n headers: {\n Authorization: accessToken,\n },\n });\n\n if (response.data && response.data.code === 200 && !!response.data.data) {\n callback(undefined, response.data.data);\n } else {\n callback(\"There was an error trying to get shipping methods\");\n }\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { Modal } from \"antd\";\nimport { isEmailValid } from \"../../components/SignIn/data/emails\";\nimport {\n AlexandersShippingMethods,\n CartItem,\n Coupon,\n Purchase,\n shippingOption,\n User,\n} from \"../../interfaces\";\nimport { PurchaseForm } from \"./Checkout\";\nconst { info } = Modal;\n\nexport const getPurchase = (\n form: PurchaseForm,\n store: CartItem[],\n shippingValue: number,\n disableShipping: boolean,\n useBalance: boolean,\n balance: number,\n bookYearSub: any | null,\n coupon?: Coupon,\n shippingObj?: shippingOption\n): Purchase => ({\n billing_first: form.billingFirstName!,\n billing_last: form.billingLastName!,\n billing_email: form.billingEmail!,\n billing_address: form.billingStreet!,\n billing_city: form.billingCity!,\n billing_country: form.billingCountry,\n billing_state: form.billingState!,\n billing_zip: form.billingZipcode!.toString(),\n shipping_first: !!form.sameAsBilling\n ? form.billingFirstName!\n : form.shippingFirstName!,\n shipping_last: !!form.sameAsBilling\n ? form.billingLastName!\n : form.shippingLastName!,\n shipping_email: !!form.sameAsBilling\n ? form.billingEmail!\n : form.shippingEmail!,\n shipping_address: !!form.sameAsBilling\n ? form.billingStreet!\n : form.shippingStreet!,\n shipping_city: !!form.sameAsBilling ? form.billingCity! : form.shippingCity!,\n shipping_country: form.shippingCountry,\n shipping_state: !!form.sameAsBilling\n ? form.billingState!\n : form.shippingState!,\n shipping_zip: !!form.sameAsBilling\n ? form.billingZipcode!.toString()\n : form.shippingZipcode!.toString(),\n stripe_token: \"\",\n card_token: \"\",\n disable_ship: disableShipping,\n shipping_value: shippingValue,\n use_balance: useBalance,\n balance,\n store: !!bookYearSub\n ? store.map((i) => ({\n ...i,\n options: i.options.map((o) =>\n o.description === bookYearSub.description\n ? { ...o, selected: false }\n : o\n ),\n }))\n : store,\n tax: false,\n coupon: !!coupon ? [coupon] : [],\n one_year_subscription_book: bookYearSub,\n shipping_phone_number: form.billingPhoneNumber || \"\",\n billing_phone_number: form.billingPhoneNumber || \"\",\n ship_method: shippingObj?.alexanders_key || AlexandersShippingMethods.FEDEXONERATEENVELOPE,\n});\n\nexport const purchaseValid = (\n form: PurchaseForm,\n shippingObj: shippingOption | undefined,\n disableShipping: boolean\n): boolean => {\n if (\n !form.selectedCard &&\n (!form.cardNumber ||\n !form.cardName ||\n !form.cardCVV ||\n form.cardCVV.length < 3 ||\n !form.cardMonth ||\n !form.cardYear ||\n form.cardNumberInvalid)\n ) {\n info({\n title: \"Please fill your payment information.\",\n });\n return false;\n }\n\n if (\n !form.billingFirstName ||\n !form.billingLastName ||\n !form.billingStreet ||\n !form.billingState ||\n !form.billingZipcode\n ) {\n info({\n title: \"Please fill your billing information.\",\n });\n return false;\n }\n if (\n !disableShipping &&\n (!shippingObj ||\n (!form.sameAsBilling &&\n (!form.shippingFirstName ||\n !form.shippingLastName ||\n !form.shippingStreet ||\n !form.shippingState ||\n !form.shippingZipcode)))\n ) {\n info({\n title: \"Please fill your shipping information.\",\n });\n return false;\n }\n\n return true;\n};\n\nexport const itemInvalid = (localStore: CartItem[]): boolean =>\n !!localStore.find((item: CartItem) => {\n if (\n item.type === \"giftcard\" &&\n (!item.gift.receiver ||\n !item.gift.email ||\n !isEmailValid(item.gift.email))\n ) {\n info({\n title:\n \"Please fill your gift card information with a valid name and email.\",\n });\n\n return true;\n } else if (\n item.type === \"book\" &&\n !item.options.find((o) => !!o.selected)\n ) {\n info({\n title:\n \"You have a book without selecting any options, if you don't want it, remove it from the cart.\",\n });\n\n return true;\n }\n return false;\n });\n\nexport const userIsPlusY = (user: User) =>\n !!user.user_level &&\n user.user_level === 1 &&\n ((!!user.in_app_purchase &&\n user.in_app_purchase.title === \"One Year Subscription\") ||\n (!!user.stripe_subscriptions &&\n user.stripe_subscriptions.name === \"one year\"));\n","import React, {\n useEffect,\n useState,\n } from \"react\";\nimport { Modal, Spin, Icon } from \"antd\";\nimport { CartItem, User } from \"../../interfaces\";\nimport BookModal from \"../../components/BookModal/BookModal\";\nimport { trackAction } from \"../../utils/marketing\";\nimport { AppState } from \"../../store\";\nimport { connect } from \"react-redux\";\n\n interface Props {\n user: User;\n book: CartItem;\n marginClass: string;\n setLoading: React.Dispatch>;\n loading: boolean;\n }\n \n\n\n const BookDisclaimer: React.FC = ({user, book, marginClass, setLoading, loading}) => {\n const [bookModal, setBookModal] = useState(false);\n const [currentIndex, setCurrentIndex] = useState(0);\n const [completeBook, setCompleteBook] = useState(book);\n const onPreviewAndTrack = (email: string, bookTitle: string = 'unknown') => {\n trackAction(\n \"Pages_Preview\",\n {\n google: {\n event: \"pages_preview\",\n details: `User ${email} has clicked the preview of \"${bookTitle}\"`,\n },\n },\n true\n );\n }\n return (\n <>\n {loading ? (\n
\n }\n />\n
\n ) : (\n
\n
\n
\n \n
\n
\n
\n {!!completeBook ? (\n {completeBook.title}\n ) : null }\n \n

{\n setBookModal(true);\n onPreviewAndTrack(user.email!, book.title)\n }}\n >See Preview

\n
\n
\n )}\n \n {!!completeBook?.babypages ? (\n {\n setBookModal!(false)\n setCurrentIndex(0)\n }}\n useOldBabypages={false}\n />\n ) : null}\n\n \n )\n\n }\n\n const mapStateToProps = (state: AppState) => ({\n user: state.user,\n });\n\n export default connect(mapStateToProps)(BookDisclaimer);\n","import { Modal } from \"antd\";\nimport React, { PropsWithChildren } from \"react\";\n\ninterface Props {\n open: boolean;\n onVisibleChange?: (value: boolean | React.MouseEvent) => void;\n variant?: 'modal' | 'popover'\n}\n\nconst MessageTip = ({open, onVisibleChange, children}: PropsWithChildren ): JSX.Element | null => {\n \n return onVisibleChange!(false)}\n \n >\n <>{children}\n \n\n}\n\nexport default MessageTip;","import {\n Button,\n Checkbox,\n Icon,\n Input,\n InputNumber,\n Modal,\n notification,\n Select,\n Spin,\n Tooltip,\n Typography,\n} from \"antd\";\nimport moment from \"moment\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { isCreditCard } from \"validator\";\nimport BaseLayout from \"../../components/BaseLayout/BaseLayout\";\nimport CustomDivider from \"../../components/CustomDivider\";\nimport PaypalButton from \"../../components/Paypal/PaypalButton\";\nimport { PAYPAL } from \"../../env\";\nimport {\n CartItem,\n Coupon,\n Customer,\n CustomerCard,\n Purchase,\n shippingOption,\n User,\n CountryOptions,\n DraftBabyPage,\n} from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport {\n checkCoupon,\n createPurchaseSaga,\n getShippingMethods,\n} from \"../../store/sagas/checkout\";\nimport { fetchBookById } from \"../../store/sagas/books\";\nimport { startCase, toLower } from \"lodash\";\nimport { addGiftCard, getCustomerInfo } from \"../../store/sagas/customer\";\nimport { UserSettings } from \"../../pages/User/ProfilePage/ProfilePage\";\nimport { trackAction } from \"../../utils/marketing\";\nimport \"./Checkout.scss\";\nimport { getPurchase, itemInvalid, purchaseValid } from \"./CheckoutHelper\";\nimport BookDisclaimer from \"../../components/BookDisclaimer/BookDisclaimer\";\nimport { PAGE_URL } from \"../../env\";\nimport { useManageModal } from \"../../hooks/useManageModal\";\nimport MessageTip from \"./MessageTip\";\nimport icon_warning from \"../../assets/img/navy_warning.png\";\nconst { Option } = Select;\nconst { success } = Modal;\n\n/**\n * First option to card list\n */\nconst newCard: CustomerCard = {\n id: \"\",\n};\n\nfunction getDiscountForSpecificProduct(\n subTotal: number,\n coupon: Coupon,\n): number {\n let discount = 0;\n\n if (!coupon) {\n return discount;\n }\n\n discount = !!coupon.percent_off\n ? (coupon.percent_off / 100) * subTotal\n : ((coupon?.amount_off || 0) > subTotal\n ? subTotal\n : coupon?.amount_off || 0) / 100;\n\n return discount;\n}\n\ninterface Props {\n user: User;\n customer: Customer;\n draftBabyPage: DraftBabyPage;\n milestoneId?: string;\n}\n\nexport interface PurchaseForm {\n selectedCard?: string;\n cardNumber?: number;\n cardNumberInvalid?: boolean;\n cardName?: string;\n cardCVV?: string;\n cardCVVInvalid?: boolean;\n cardMonth?: number;\n cardYear?: number;\n billingFirstName?: string;\n billingLastName?: string;\n billingEmail?: string;\n billingStreet?: string;\n billingCountry: string;\n billingState?: string;\n billingCity?: string;\n billingZipcode?: string;\n shippingFirstName?: string;\n shippingLastName?: string;\n shippingEmail?: string;\n shippingStreet?: string;\n shippingCountry: string;\n shippingState?: string;\n shippingCity?: string;\n shippingZipcode?: string;\n sameAsBilling: boolean;\n billingPhoneNumber?: string;\n}\n\nconst currentMonth = moment().month() + 1;\nconst currentYear = moment().year();\n\nconst CheckoutPage: React.FC = ({ customer, user, milestoneId }) => {\n const history = useHistory();\n const [disableButton, setDisableButton] = useState(false);\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [store, setStore] = useState([]);\n const [bookYearSub, setBookYearSub] = useState(null);\n const [form, setForm] = useState({\n selectedCard: \"\",\n billingCountry: \"US\",\n shippingCountry: \"US\",\n sameAsBilling: true,\n });\n const [couponText, setCouponText] = useState(\"\");\n const [coupon, setCoupon] = useState(null);\n const [useBalance, setUseBalance] = useState(false);\n const [shippingOptions, setShippingOptions] = useState<\n shippingOption[] | undefined\n >(undefined);\n const [selectedShippingOption, setSelectedShippingOption] = useState<\n shippingOption | undefined\n >(undefined);\n const [updateDisscount, setUpdateDisscount] = useState(true);\n const [selectedCountry, setSelectedCountry] = useState<\n CountryOptions | undefined\n >({ name: \"US\", code: \"US\" });\n const [selectedShippingCountry, setSelectedShippingCountry] = useState<\n CountryOptions | undefined\n >({ name: \"US\", code: \"US\" });\n const [countryOptions, setCountryOptions] = useState([\n {\n name: \"US\",\n code: \"US\",\n },\n {\n name: \"Canada\",\n code: \"CA\",\n },\n ]);\n const [disclaimerCheck, setDisclaimerCheck] = useState(true);\n const [showTip, setShowTip] = useState(false);\n const [showBooksModal, setShowBooksModal] = useState(false);\n const [showBabyListModal, setShowBabyListModal] = useState(false);\n const [showAddressValidation, setShowAddressValidation] =\n useState(false);\n const disccountRef = useRef(0);\n let lastIndexOfSubscriptions = customer?.subscriptions?.data.length - 1;\n const isTrialing =\n customer?.subscriptions?.data[lastIndexOfSubscriptions]?.status ===\n \"trialing\"\n ? true\n : customer?.iap_subscriptions?.is_trial_period\n ? true\n : false;\n\n const months = [\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"10\",\n \"11\",\n \"12\",\n ];\n const presentYear = moment().format(\"YYYY\");\n let expireYears = [];\n // Max expire year is current year + 30\n for (let i = 0; i < 31; i++) {\n expireYears.push((parseInt(presentYear) + i).toString());\n }\n\n useEffect(() => {\n setLoading(true);\n trackAction(\"initiateCheckout\", {\n google: {\n event: \"begin_checkout\",\n },\n });\n }, []);\n\n useEffect(() => {\n if (!form.billingFirstName) {\n const newForm = {\n ...form,\n billingFirstName: user.first_name,\n billingLastName: user.last_name,\n billingEmail: user.email,\n shippingFirstName: user.first_name,\n shippingLastName: user.last_name,\n shippingEmail: user.email,\n };\n\n setForm(newForm);\n }\n }, [user, form]);\n\n useEffect(() => {\n if (\n selectedCountry !== undefined &&\n selectedShippingCountry !== undefined\n ) {\n if (form.sameAsBilling) {\n setForm((state) => ({\n ...state,\n billingCountry: selectedCountry?.code,\n shippingCountry: selectedCountry?.code,\n }));\n setSelectedShippingCountry(selectedCountry);\n } else {\n setForm((state) => ({\n ...state,\n billingCountry: selectedCountry?.code,\n shippingCountry: selectedShippingCountry?.code,\n }));\n }\n }\n }, [form.sameAsBilling, selectedCountry, selectedShippingCountry]);\n\n useEffect(() => {\n if (!!user.store) {\n try {\n const localStore = JSON.parse(user.store);\n if (!!localStore && Array.isArray(localStore)) {\n if (localStore.length === 0) {\n history.push(\"/cart\");\n return;\n }\n\n if (itemInvalid(localStore)) {\n history.push(\"/cart\");\n return;\n }\n\n if (user.user_level === 1) {\n setStore(\n localStore.filter((e: CartItem) => e.type !== \"subscription\"),\n );\n } else {\n setStore(localStore);\n }\n }\n } catch (error) {}\n }\n }, [user, history]);\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getShippingMethods,\n form.shippingCountry,\n (err?: string, response?: shippingOption[]) => {\n setLoading(false);\n\n if (!!err) {\n return notification.error({\n message: \"Error\",\n description: err,\n });\n }\n\n if (response) {\n let visibleShippingOptions: shippingOption[] = [];\n isTrialing\n ? (visibleShippingOptions = response.filter(\n (v, i) => v.value !== 0,\n ))\n : (visibleShippingOptions = response);\n\n setShippingOptions(visibleShippingOptions);\n setSelectedShippingOption(visibleShippingOptions[0]);\n }\n },\n );\n }, [form.shippingCountry]);\n\n const validateYearBookSub = useCallback(\n (coupon: Coupon): boolean => {\n if (\n !coupon.metadata ||\n coupon.metadata.type !== \"Large Soft Cover Book\"\n ) {\n // Not coupon for year subscription\n return true;\n }\n\n let bookOption: any = undefined;\n\n // Searching by books on store\n store.forEach((product) => {\n if (\n !bookOption &&\n product.type === \"book\" &&\n !!product.options &&\n Array.isArray(product.options)\n ) {\n bookOption = product.options.find(\n (option) =>\n option.selected && option.description === \"saddle large\",\n );\n }\n });\n\n if (\n !!bookOption &&\n !!coupon.metadata &&\n coupon.metadata.type === \"Large Soft Cover Book\"\n ) {\n if (coupon.metadata.customer === customer.id) {\n setBookYearSub(bookOption);\n return true;\n } else {\n // Invalid Customer use\n Modal.error({\n title: \"Error\",\n content: \"This coupon is not for you\",\n });\n }\n } else {\n // Store without books\n Modal.error({\n title: \"Error\",\n content: \"Your cart haven't books, so the coupon will be ignored\",\n });\n }\n\n return false;\n },\n [customer, store],\n );\n\n const applyCoupon = useCallback(\n (couponApplied: string) => {\n if (loading) return;\n\n setLoading(true);\n sagaMiddleware.run(\n checkCoupon,\n couponApplied,\n (err?: string, found?: Coupon) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n return;\n } else if (!!found) {\n if (!!coupon && found.id === coupon.id) {\n Modal.error({\n title: \"Error\",\n content: \"Coupon already applied\",\n });\n return;\n }\n\n const valid = validateYearBookSub(found) && found.valid;\n if (!valid) {\n setCoupon(null);\n setBookYearSub(null);\n notification.error({\n message: \"Cannot Redeem Expired Coupon\",\n description: \"Coupon Expired\",\n });\n if (user.user_level === 1) {\n setLoaded(false);\n }\n return;\n }\n\n if (!!found.metadata) {\n if (found.metadata.type === \"Gift Card\") {\n setLoading(true);\n\n sagaMiddleware.run(\n addGiftCard,\n found.id,\n (err?: string, description?: string) => {\n setLoading(false);\n if (!!err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n } else if (!!description) {\n setUseBalance(true);\n notification.success({\n message: \"Success\",\n description,\n });\n }\n },\n );\n } else if (\n user.user_level !== 1 &&\n found.id === \"one_year_subscription_discount\"\n ) {\n notification.error({\n message: \"Only for PLUS users\",\n description: \"Discount only valid for PLUS users\",\n });\n } else if (\n user.user_level === 1 &&\n found.id === \"one_year_subscription_discount\"\n ) {\n notification.success({\n message: \"Success\",\n description: \"PLUS subscription discount applied.\",\n });\n setCoupon(found);\n } else {\n setCoupon(found);\n notification.success({\n message: \"Success\",\n description: `Coupon ${found.name} applied`,\n });\n }\n } else if (!!found.id) {\n setCoupon(found);\n notification.success({\n message: \"Success\",\n description: \"Coupon applied\",\n });\n }\n }\n },\n );\n },\n [loading, coupon, validateYearBookSub],\n );\n\n const userIsPlus = useMemo(() => {\n if (!!loaded) {\n return;\n }\n if (user.user_level === 1 && !coupon && !loaded && !isTrialing) {\n setLoaded(true);\n applyCoupon(\"one_year_subscription_discount\");\n }\n\n return user.user_level === 1;\n }, [applyCoupon, loaded, coupon, user]);\n\n const subscription = useMemo(\n () => store.find((item) => item.type === \"subscription\"),\n [store],\n );\n\n const books = useMemo(\n () => store.filter((item) => item.type === \"book\"),\n [store],\n );\n\n const couponSubscription = useMemo(() => {\n let matchStripeID;\n if (!!coupon?.applies_to) {\n matchStripeID = coupon.applies_to.products.filter((stripeID) => {\n return subscription?.stripe_id === stripeID;\n });\n\n if (matchStripeID.length > 0) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n }, [subscription, coupon]);\n\n useEffect(() => {\n for (let book of books) {\n if (!!book.book_id) {\n setLoading(true);\n sagaMiddleware.run(\n fetchBookById,\n parseInt(book.book_id.toString()),\n (error: any | null, bookBD?: any) => {\n if (error !== null || !bookBD) {\n setLoading(false);\n history.push(\"/\");\n return;\n }\n try {\n book.babypages = bookBD.babypages;\n book.title = bookBD.title;\n } catch (error) {\n Modal.error({\n title: \"Error\",\n content: error.message ? error.message : \"Error loading book\",\n });\n }\n setLoading(false);\n },\n );\n }\n }\n }, [books]);\n\n const giftCards = useMemo(\n () => store.filter((item) => item.type === \"giftcard\"),\n [store],\n );\n\n const couponGiftCard = useMemo(() => {\n let matchStripeID;\n if (!!coupon?.applies_to) {\n matchStripeID = coupon.applies_to.products.filter((stripeID) => {\n return giftCards[0]?.stripe_id === stripeID;\n });\n\n if (matchStripeID.length > 0) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n }, [giftCards, coupon]);\n\n const couponBook = useMemo(() => {\n if (!!coupon?.applies_to) {\n let bookMatch = books.map((book) => {\n return coupon.applies_to?.products.filter((stripeID) => {\n return book.stripe_id === stripeID;\n });\n });\n\n if (bookMatch.length > 0) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n }, [books, coupon]);\n\n const [paymentTime, setPaymentTime] = useState(\"\");\n\n useEffect(() => {\n if (!!subscription) {\n switch (subscription.id) {\n case \"one year\":\n setPaymentTime(\"year\");\n break;\n case \"three month\":\n setPaymentTime(\"3-months\");\n break;\n case \"monthly\":\n setPaymentTime(\"mo\");\n break;\n default:\n break;\n }\n }\n }, [subscription]);\n\n const subTotal = useMemo(() => {\n const subTotal = store.reduce(\n (total: number, curr: any) => total + curr.total,\n 0,\n );\n return !!subscription && !user.trialUsed\n ? subTotal - subscription.total\n : subTotal;\n }, [store, subscription]);\n\n const cards: CustomerCard[] = useMemo(\n () =>\n !!customer && !!customer.sources && !!customer.sources.data\n ? [newCard, ...customer.sources.data]\n : [newCard],\n [customer],\n );\n\n const card: CustomerCard | undefined = useMemo(\n () =>\n !!form.selectedCard\n ? cards.find((c) => c.id === form.selectedCard)\n : undefined,\n [cards, form.selectedCard],\n );\n\n const shippingObj: shippingOption | undefined = useMemo(\n () =>\n !!selectedShippingOption &&\n shippingOptions &&\n store.filter((p) => p.type !== \"subscription\" && p.type !== \"giftcard\")\n .length > 0\n ? shippingOptions.find((s) => s.price === selectedShippingOption.price)\n : undefined,\n [selectedShippingOption, shippingOptions, store],\n );\n\n const discount = useMemo(() => {\n if (!updateDisscount) {\n return disccountRef.current;\n }\n let discount = 0;\n\n if (!!coupon) {\n if (!!coupon.applies_to) {\n let specificDiscount = 0;\n store.map((item) => {\n coupon.applies_to?.products?.map((id) => {\n if (id === item.stripe_id) {\n if (!!coupon.percent_off) {\n if (!!subscription && !user.trialUsed) {\n if (store.length === 1) {\n specificDiscount = 0;\n } else {\n if (item.type !== \"subscription\") {\n specificDiscount += getDiscountForSpecificProduct(\n item.total,\n coupon,\n );\n }\n }\n } else {\n specificDiscount += getDiscountForSpecificProduct(\n item.total,\n coupon,\n );\n }\n } else if (!!coupon.amount_off) {\n specificDiscount = coupon.amount_off / 100;\n }\n }\n });\n });\n disccountRef.current = specificDiscount;\n return specificDiscount;\n }\n }\n\n discount = !!coupon\n ? !!coupon.percent_off\n ? (coupon.percent_off / 100) * subTotal\n : (coupon.amount_off || 0) / 100\n : 0;\n\n disccountRef.current = discount;\n\n return discount;\n }, [\n books,\n coupon,\n giftCards,\n subTotal,\n subscription,\n user.user_level,\n updateDisscount,\n ]);\n\n const balance = useMemo(\n () => (!!customer.bp_balance ? customer.bp_balance : 0),\n [customer.balance],\n );\n\n useEffect(() => {\n setUseBalance(balance > 0);\n amountBalanceToUse();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [balance]);\n\n const amountBalanceToUse = () => {\n let toUse = 0;\n\n if (!!balance && balance > 0) {\n let amountToPay = 0;\n if (!user.trialUsed) {\n if (!!couponSubscription) {\n amountToPay = subTotal + totalToBeCharged;\n } else if (subscription && store.length === 1) {\n amountToPay = subTotal + totalToBeCharged;\n } else {\n amountToPay = subTotal - discount + totalToBeCharged;\n }\n } else if (user.trialUsed) {\n amountToPay = subTotal - discount;\n }\n toUse = balance > amountToPay ? amountToPay : balance;\n }\n\n if (toUse <= 0) {\n return 0;\n }\n return toUse;\n };\n\n const total = useMemo(() => {\n let total = 0;\n\n if (useBalance) {\n if (!user.trialUsed && !!couponSubscription) {\n total = subTotal - balance;\n } else {\n total = subTotal - discount - balance;\n }\n } else if (!useBalance) {\n if (!user.trialUsed && !!couponSubscription) {\n total = subTotal;\n } else {\n total = subTotal - discount;\n }\n }\n\n return (total >= 0 ? total : 0) + (!!shippingObj ? shippingObj.value : 0);\n }, [subTotal, discount, balance, useBalance, shippingObj]);\n\n const disableShipping = useMemo(\n () =>\n store.filter((p) => p.type !== \"subscription\" && p.type !== \"giftcard\")\n .length === 0,\n [store],\n );\n\n const renderPaypal = useCallback(() => {\n if (!!subscription) {\n let buttonId = PAYPAL.buttons.monthly;\n\n if (subscription.id === \"three month\") {\n buttonId = PAYPAL.buttons.three_month;\n } else if (subscription.id === \"one year\") {\n buttonId = PAYPAL.buttons.one_year;\n }\n\n const productTrackingData = {\n facebook: {\n content_name: subscription.title,\n content_category: subscription.type,\n content_ids: [subscription.id],\n num_items: subscription.qty,\n value: subscription.total,\n currency: \"USD\",\n },\n amplitude: {\n id: subscription.id,\n name: subscription.title,\n category: subscription.type,\n number_items: subscription.qty,\n value: subscription.total,\n currency: \"USD\",\n },\n pinterest: {\n value: subscription.total,\n order_quantity: subscription.qty,\n currency: \"USD\",\n line_items: [\n {\n product_name: subscription.title,\n product_category: subscription.type,\n product_id: subscription.id,\n product_price: subscription.total,\n product_quantity: subscription.qty,\n },\n ],\n },\n google: {\n event: \"add_to_cart\",\n details: `User added ${subscription.qty} ${subscription.title} to the cart`,\n },\n };\n\n return (\n
\n

\n Please click here if you'd like to pay with PayPal.\n

\n \n

\n Or fill out the info below to pay with credit card.\n

\n
\n );\n }\n return null;\n }, [subscription, user.id, user.last_pay_pal_transaction_started_at]);\n\n const createPurchase = useCallback(() => {\n if (!purchaseValid(form, shippingObj, disableShipping)) {\n return;\n } else if (\n form.cardYear === currentYear &&\n form.cardMonth! < currentMonth\n ) {\n Modal.error({\n title: \"Error\",\n content: \"Invalid card month\",\n });\n return;\n }\n sagaMiddleware.run(getCustomerInfo, (err?: string) => {\n if (!!err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n }\n });\n\n const purchase: Purchase = getPurchase(\n form,\n store,\n !!shippingObj && !disableShipping ? shippingObj.value : 0,\n disableShipping,\n useBalance,\n balance,\n bookYearSub,\n !!coupon ? coupon : undefined,\n shippingObj,\n );\n\n let cardInfo = null;\n\n if (!!form.selectedCard) {\n purchase.card_token = form.selectedCard;\n } else {\n cardInfo = {\n cardNumber: form.cardNumber!,\n cardName: form.cardName!,\n cardCVV: form.cardCVV!,\n cardMonth: form.cardMonth!,\n cardYear: form.cardYear!,\n customerId:\n !!customer && !!customer.id\n ? customer.id\n : !customer.id && !!user.guest_user\n ? user.main_user.stripe_id\n : user.stripe_id,\n };\n }\n\n setLoading(true);\n setDisableButton(true);\n setUpdateDisscount(false);\n sagaMiddleware.run(\n createPurchaseSaga,\n purchase,\n total,\n cardInfo,\n (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n setUpdateDisscount(true);\n setDisableButton(false);\n } else {\n if (milestoneId) {\n history.push(\n `/babypages/save?milestoneId=${milestoneId}&from=checkout`,\n );\n } else {\n if (!!subscription) {\n history.push(\"/?product=subscription\");\n } else {\n history.push(\"/\");\n }\n }\n // Quora Tracking - New purchase\n trackAction(\"trackNewPurchase\", {\n google: {\n event: \"new_purchase\",\n },\n });\n if (user.source === \"baby-list\" && !user.trialUsed) {\n trackAction(\"babyListPurchase\", {\n google: {\n event: \"babylist_purchase\",\n },\n });\n }\n\n success({\n title: \"Thank you! Your purchase has been processed.\",\n content: (\n

\n We love our customers, and we hope you love BabyPage. If you\n have any problems, please contact us at support@babypage.com\n

\n ),\n });\n }\n },\n );\n }, [\n history,\n form,\n store,\n useBalance,\n balance,\n coupon,\n shippingObj,\n bookYearSub,\n customer,\n disableShipping,\n user.stripe_id,\n total,\n ]);\n\n const cartItemsHtml = useMemo(() => {\n return store.map((item, index) => {\n let cartItemContainerClasses = \"d-flex justify-content-between\";\n\n let markup;\n if (item.type === \"book\") {\n const selectedBookOptions = item?.options.map((book) => {\n if (book.selected) {\n const bookData = {\n price: book.price,\n qty: book.qty,\n name: `${book.title} Book`,\n extra_pages: book.extra_pages ? book.extra_pages.qty : null,\n extra_pages_price: book.extra_pages\n ? book.extra_pages.price * book.extra_pages.qty\n : null,\n extra_pages_name: book.extra_pages\n ? book.extra_pages.title\n : null,\n };\n return bookData;\n }\n });\n\n const bookMarkup = selectedBookOptions.map((selectedBook) => {\n if (selectedBook) {\n return (\n <>\n {selectedBook.extra_pages && selectedBook.extra_pages_price ? (\n <>\n
\n \n {selectedBook.qty} - {selectedBook.name}\n \n \n ${(selectedBook.price * selectedBook.qty).toFixed(2)}\n \n
\n
\n \n {selectedBook.extra_pages} -{\" \"}\n {selectedBook.extra_pages_name}\n \n \n ${selectedBook.extra_pages_price.toFixed(2)}\n \n
\n \n ) : (\n <>\n
\n \n {selectedBook.qty} - {selectedBook.name}\n \n \n ${(selectedBook.price * selectedBook.qty).toFixed(2)}\n \n
\n \n )}\n \n );\n } else {\n return null;\n }\n });\n markup = bookMarkup;\n }\n\n if (item.type === \"giftcard\") {\n markup = (\n
\n \n ${item.total} {item.subtitle}\n \n ${item.total.toFixed(2)}\n
\n );\n }\n\n if (item.type === \"subscription\") {\n markup = (\n
\n
\n {item.subtitle}\n ${item.total.toFixed(2)}\n
\n {!!subscription && !user.trialUsed && (\n

\n \n {user.source === \"baby-list\"\n ? `You will not be charged until after your free trial ends and you\n may cancel at any time.`\n : `You will not be charged until after the 7-day free trial ends and you may cancel at any time.`}\n \n

\n )}\n
\n );\n }\n return markup;\n });\n }, [store]);\n\n // This date could be changed if the user changes the date on his device\n const getDayForSubscription = () => {\n const momentDate = moment().add(1, \"week\").format(\"MM/DD/YY\");\n return momentDate;\n };\n\n const autoApplyCouponBabyList = useMemo(() => {\n if (\n user.source === \"baby-list\" &&\n user.user_level === 0 &&\n !user.trialUsed\n ) {\n setShowBabyListModal(true);\n applyCoupon(\"BABYLIST\");\n }\n }, [user]);\n\n const toolTipTitle = () => {\n if (user.source === \"baby-list\") {\n return `You have a PLUS subscription in your cart, but you will not be charged for it until your free trial period expires.`;\n } else {\n return `You have a PLUS subscription in your cart, but you will not be charged for it until your 7-day free trial period expires.`;\n }\n };\n\n const totalToBeCharged = useMemo(() => {\n let totalToBeCharged = 0;\n if (subscription && !user.trialUsed) {\n if (!!couponSubscription && !!coupon) {\n totalToBeCharged =\n subscription.total -\n getDiscountForSpecificProduct(subscription.total, coupon);\n } else if (!!coupon?.percent_off && coupon.applies_to === null) {\n totalToBeCharged =\n subscription.total -\n getDiscountForSpecificProduct(subscription.total, coupon);\n } else if (store.length === 1 && coupon?.applies_to === null) {\n totalToBeCharged = subscription.total - discount;\n } else {\n totalToBeCharged = subscription.total;\n }\n }\n\n if (totalToBeCharged < 0) {\n totalToBeCharged = 0;\n }\n\n return totalToBeCharged;\n }, [store, subscription, coupon]);\n\n const leftOverDiscount = useMemo(() => {\n let leftOverDiscount = 0;\n if (!user.trialUsed) {\n if (!!couponSubscription && !user.trialUsed) {\n return 0;\n } else if (!!couponGiftCard || !!couponBook) {\n return 0;\n } else if (subscription && store.length === 1) {\n return 0;\n }\n subTotal - discount < 0\n ? (leftOverDiscount = discount - subTotal)\n : (leftOverDiscount = 0);\n }\n\n return leftOverDiscount;\n }, [discount, subTotal]);\n\n const leftOverBalance = useMemo(() => {\n let leftOverBalance = 0;\n\n if (useBalance) {\n if (!!couponSubscription) {\n leftOverBalance = amountBalanceToUse() - subTotal;\n } else if (subscription && store.length === 1) {\n leftOverBalance = amountBalanceToUse() - subTotal;\n } else {\n leftOverBalance =\n amountBalanceToUse() - subTotal + discount - leftOverDiscount;\n }\n\n if (leftOverBalance <= 0) {\n return 0;\n }\n\n return leftOverBalance;\n } else {\n return 0;\n }\n }, [useBalance, balance, coupon, discount, leftOverDiscount]);\n\n const addressToUse = form.sameAsBilling\n ? {\n street: form.billingStreet,\n city: form.billingCity,\n state: form.billingState,\n zipcode: form.billingZipcode,\n country: form.billingCountry,\n }\n : {\n street: form.shippingStreet || form.billingStreet,\n city: form.shippingCity || form.billingCity,\n state: form.shippingState || form.billingState,\n zipcode: form.shippingZipcode || form.billingZipcode,\n country: form.shippingCountry || form.billingCountry,\n };\n\n const isAddressEmpty =\n !addressToUse.street &&\n !addressToUse.city &&\n !addressToUse.state &&\n !addressToUse.zipcode;\n\n return (\n \n
\n {/* {!!subscription && store.length === 1 && (\n <>\n \n {renderPaypal()}\n \n )} */}\n\n setShowBabyListModal(false)}\n >\n
\n

\n Complete checkout to activate your{\" \"}\n 3 month FREE trial and access your BabyPage PLUS\n membership features. You will not be charged until after your 3\n month trial period and you may cancel at any time.\n

\n {\n setShowBabyListModal(false);\n }}\n >\n Continue\n \n
\n \n \n
\n {!!cards.length && (\n \n setForm((state) => ({ ...state, selectedCard }))\n }\n >\n {cards.map((card: CustomerCard, index: number) => (\n \n ))}\n \n )}\n {!!card ? (\n
\n
\n \n

**** **** **** {card.last4}

\n
\n
\n \n

{card.name}

\n
\n
\n \n

***

\n
\n
\n \n

{card.exp_month}

\n
\n
\n \n

{card.exp_year!.toString()}

\n
\n
\n ) : (\n
\n \n \n \n setForm((state) => ({\n ...state,\n cardNumber,\n cardNumberInvalid:\n !!cardNumber && !isCreditCard(cardNumber.toString()),\n }))\n }\n />\n {form.cardNumberInvalid && (\n
\n Please provide a valid card.\n
\n )}\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({ ...state, cardName: value }));\n }}\n />\n
\n \n \n {\n e.persist();\n const cardCVV = e.target.value.replace(/[^\\d]/g, \"\");\n\n setForm((state) => ({\n ...state,\n cardCVV,\n cardCVVInvalid: !!cardCVV && cardCVV.length < 3,\n }));\n }}\n />\n {form.cardCVVInvalid && (\n
\n Please provide a valid CVV.\n
\n )}\n
\n
\n \n \n setForm((state) => ({\n ...state,\n cardMonth: parseInt(selectedMonth!),\n }))\n }\n >\n {months.map((month: string, index: number) => (\n \n ))}\n \n
\n
\n \n \n setForm((state) => ({\n ...state,\n cardYear: parseInt(selectedYear!),\n }))\n }\n >\n {expireYears.map((year: string, index: number) => (\n \n ))}\n \n
\n
\n )}\n \n \n
\n
\n
\n setCouponText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n applyCoupon(couponText);\n }\n }}\n />\n
\n
\n applyCoupon(couponText)}\n disabled={couponText.length === 0 || loading}\n >\n Apply\n \n applyCoupon(couponText)}\n disabled={couponText.length === 0 || loading}\n >\n Apply\n \n
\n
\n {!!coupon && (\n

Coupon {coupon.name} applied.

\n )}\n
\n \n
\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n billingFirstName: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n billingLastName: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n billingEmail: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n billingStreet: value,\n }));\n }}\n />\n
\n
\n \n {\n setSelectedCountry(\n countryOptions.find(\n (country: CountryOptions) =>\n country.name === selectedCountryValue,\n ),\n );\n if (form.sameAsBilling) {\n setSelectedShippingCountry(\n countryOptions.find(\n (country: CountryOptions) =>\n country.name === selectedCountryValue,\n ),\n );\n }\n }}\n >\n {countryOptions.map(\n (country: CountryOptions, index: number) => {\n return (\n \n );\n },\n )}\n \n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n billingState: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n billingCity: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n billingZipcode: value,\n }));\n }}\n type=\"text\"\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n billingPhoneNumber: value.replace(/[^0-9]/g, \"\"),\n }));\n }}\n />\n
\n
\n
\n {!disableShipping && (\n <>\n \n
\n
\n {!form.sameAsBilling && (\n <>\n {\" \"}\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n shippingFirstName: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n shippingLastName: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n shippingEmail: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n shippingStreet: value,\n }));\n }}\n />\n
\n
\n \n {\n setSelectedShippingCountry(\n countryOptions.find(\n (country: CountryOptions) =>\n country.name === selectedCountryValue,\n ),\n );\n }}\n >\n {countryOptions.map(\n (country: CountryOptions, index: number) => {\n return (\n \n );\n },\n )}\n \n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n shippingState: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n shippingCity: value,\n }));\n }}\n />\n
\n
\n \n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n shippingZipcode: value,\n }));\n }}\n type=\"text\"\n />\n
\n \n )}\n
\n {\n const value = e.target.value;\n setForm((state) => ({\n ...state,\n sameAsBilling: e.target.checked,\n }));\n }}\n >\n Same as Billing\n \n
\n\n
\n \n {!!shippingOptions &&\n !!shippingOptions.length &&\n selectedShippingOption && (\n \n setSelectedShippingOption(\n shippingOptions.find(\n (shippingOption: shippingOption) =>\n shippingOption.price === selectedShippingOption,\n ),\n )\n }\n >\n {shippingOptions.map(\n (shippingOption: shippingOption, index: number) => (\n \n ),\n )}\n \n )}\n \n Prior to shipping, processing and printing requires 3-5\n business days.{\" \"}\n \n More info.{\" \"}\n \n

\n
\n
\n
\n \n )}\n\n \n
\n {/* Pricing info details */}\n {books.length > 0 ? (\n <>\n
\n {\n setDisclaimerCheck(!disclaimerCheck);\n if (disclaimerCheck && !showTip) {\n setShowTip(true);\n }\n }}\n style={{\n fontWeight: \"bold\",\n }}\n >\n I certify I have proofread my book(s).\n \n\n {\n setShowTip(!showTip);\n }}\n >\n
\n \n \n Have you proofread your book(s)?\n \n \n Be sure to check the following before placing your order:\n \n
    \n
  • \n Check that pages are in order – babypages are NOT\n automatically sorted\n
  • \n
  • \n Confirm all images fit within trim lines to avoid\n unintended cropping\n
  • \n
  • \n Proofread all content including dates, spelling, and\n punctuation\n
  • \n
\n {\n setShowBooksModal(true);\n setShowTip(false);\n trackAction(\n \"Book_Preview\",\n {\n google: {\n event: \"book_preview_from_proofread\",\n details: `User ${user.email} has clicked the See Preview link`,\n },\n },\n true,\n );\n }}\n className=\"my-3 mx-auto d-table\"\n >\n See Book Preview\n \n
\n \n
\n {\n setShowBooksModal(true);\n trackAction(\n \"Book_Preview\",\n {\n google: {\n event: \"book_preview\",\n details: `User ${user.email} has clicked the See Preview link`,\n },\n },\n true,\n );\n }}\n >\n See Preview\n \n \n Refund Policy\n \n
\n
\n\n setShowBooksModal(false)}\n footer={null}\n bodyStyle={{ padding: 0 }}\n closable={false}\n >\n {!!loading ? (\n
\n \n }\n />\n
\n ) : (\n
\n {books.map((item, index) => {\n let marginClass =\n index === 0 && books.length !== 1\n ? \"pt-4 pb-2\"\n : index === 0 && books.length === 1\n ? \"pt-4 pb-4\"\n : index === books.length - 1\n ? \"pt-2 pb-4\"\n : \"py-2\";\n\n return (\n \n );\n })}\n
\n )}\n \n \n ) : null}\n\n {cartItemsHtml}\n
\n\n
\n Subtotal\n \n {/* {!!subscription && !user.trialUsed && (\n \n \n \n )} */}\n ${subTotal.toFixed(2)}\n \n
\n\n
\n Discount\n \n - ${\" \"}\n {!user.trialUsed &&\n !!subscription &&\n coupon?.percent_off &&\n (couponSubscription || !coupon.applies_to)\n ? (\n discount +\n getDiscountForSpecificProduct(subscription.total, coupon)\n ).toFixed(2)\n : discount.toFixed(2)}\n \n
\n\n
\n
\n Gift Card Applied\n - ${amountBalanceToUse().toFixed(2)}\n
\n\n
\n {balance > 0 && (\n

\n setUseBalance(e.target.checked)}\n >\n Do you want to use it?\n \n

\n )}\n
\n
\n\n
\n Shipping\n \n $\n {!disableShipping && !!selectedShippingOption\n ? selectedShippingOption.price\n : \"0.00\"}\n \n
\n\n \n\n
\n TOTAL Charged Today\n ${total.toFixed(2)}\n
\n {!!subscription && !user.trialUsed && (\n
\n TOTAL to be Charged {getDayForSubscription()}\n \n \n \n \n $\n {totalToBeCharged - leftOverBalance > 0\n ? (\n totalToBeCharged -\n leftOverBalance -\n leftOverDiscount\n ).toFixed(2)\n : \"0.00\"}\n \n
\n )}\n \n {loading && (\n
\n }\n />\n
\n )}\n\n {\n if (books && books.length > 0) {\n setShowAddressValidation(true);\n } else {\n createPurchase();\n }\n }}\n disabled={\n books.length > 0 && !loading ? disclaimerCheck : disableButton\n }\n className=\"my-3 mx-auto d-table\"\n >\n Complete Purchase\n \n\n {!!subscription ? (\n <>\n
\n

AUTOMATIC RENEWAL REMINDER

\n
    \n
  • \n By completing your purchase, you are signing up for a BabyPage\n PLUS subscription and agree to the subscription terms. You\n understand that your subscription will continue to\n automatically renew until you cancel.\n
  • \n
  • \n Your payment method will be automatically charged every\n subscription cycle and timing will be based on the PLUS\n subscription selected; every 30 days, every 90 days, or every\n 365 days.\n
  • \n
  • \n You may cancel your subscription at\n any time in your account settings, or by contacting us at{\" \"}\n \n support@babypage.com\n \n . Cancellations will take effect at the end of your current\n billing period. For more information, see our{\" \"}\n \n terms & conditions.\n \n
  • \n
\n

\n 7-Day Free Trial: Users within the 7-day free\n trial period are not entitled to the 10% off discount or free\n shipping benefits.\n

\n
\n \n ) : null}\n \n {\n setShowAddressValidation(!showAddressValidation);\n }}\n >\n
\n \n \n Is this your correct shipping address?\n \n \n {isAddressEmpty ? (\n
Please fill the address form
\n ) : (\n <>\n
{addressToUse.street}
\n
\n {addressToUse.city}, {addressToUse.state}{\" \"}\n {addressToUse.zipcode}\n
\n
{addressToUse.country}
\n \n )}\n
\n \n {\n setShowAddressValidation(!showAddressValidation);\n }}\n style={{ width: \"120px\" }}\n >\n No\n \n {\n createPurchase();\n setShowAddressValidation(!showAddressValidation);\n }}\n style={{ width: \"120px\" }}\n >\n Yes\n \n
\n \n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user,\n customer: state.customer,\n milestoneId: state.bpHelper.milestoneId,\n products: state.product.products,\n draftBabyPage: state.bpHelper.draftBabyPage,\n});\n\nexport default connect(mapStateToProps)(CheckoutPage);\n","import queryString from 'query-string';\nimport React, { useEffect } from 'react';\nimport { useLocation } from 'react-router';\nimport BaseLayout from '../../components/BaseLayout/BaseLayout';\nimport { sagaMiddleware } from '../../store';\nimport { checkPaypalTransaction } from '../../store/sagas/checkout';\n\nconst OrderConfirmationPage: React.FC = () => {\n const location = useLocation();\n\n useEffect(() => {\n const queryParams = queryString.parse(location.search);\n\n // Verify paypal payment\n if (!!queryParams && queryParams.tx) {\n sagaMiddleware.run(checkPaypalTransaction, queryParams);\n }\n }, [location]);\n\n return (\n \n
\n

\n Thank you! Your purchase has been processed.\n

\n

\n We love our customers, and we hope you love BabyPage. If you have any\n problems, please contact us at{' '}\n support@babypage.com\n

\n
\n \n );\n};\n\nexport default OrderConfirmationPage;\n","import { Card } from \"antd\";\nimport React, { useMemo } from \"react\";\nimport { DashboardInfo } from \"../../interfaces\";\nimport { capitalizeTexts } from \"../../utils/string\";\nimport CustomDivider from \"../CustomDivider\";\nimport \"./Babyage.scss\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\n\nexport interface Props {\n baby: DashboardInfo;\n}\n\nconst BabyAge: React.FC = ({ baby }) => {\n const babyName = useMemo(() => {\n const babyName = `${baby.baby_first_name}${\n !!baby.baby_middle_name\n ? ` ${baby.baby_middle_name} `\n : \"\"\n } ${baby.baby_last_name}`;\n\n return babyName.length > 35 ? babyName.substr(0, 32) + \"...\" : babyName;\n }, [baby.baby_first_name, baby.baby_middle_name, baby.baby_last_name]);\n const [width ] = useWindowSize();\n const sectionTitle = baby.baby_hasborn ? `${babyName.toUpperCase()}'S AGE` : \"DUE DATE COUNTDOWN\"\n \n return (\n <>\n \n
\n

{sectionTitle}

\n
\n
\n {!!baby.baby_age.due_date ? (\n <>\n
\n

\n Countdown\n

\n
\n
\n

\n {baby.baby_age.due_date.weeks}\n

\n

\n WEEKS\n

\n
\n
\n

\n {baby.baby_age.due_date.days}\n

\n

\n DAYS\n

\n
\n \n ) : (\n <>\n
\n

\n {!!baby.baby_age ? baby.baby_age.years : 0}\n

\n

\n YEARS\n

\n
\n
\n

\n {!!baby.baby_age ? baby.baby_age.months : 0}\n

\n

\n MONTHS\n

\n
\n
\n

\n {!!baby.baby_age ? baby.baby_age.weeks : 0}\n

\n

\n WEEKS\n

\n
\n
\n

\n {!!baby.baby_age ? baby.baby_age.days : 0}\n

\n

\n DAYS\n

\n
\n \n )}\n
767 ? \"mt-4\" : \"mt-2 mb-2\"}`}>\n

\n {baby.baby_first_name}\n {baby.baby_first_name[baby.baby_first_name.length - 1] === \"s\"\n ? \"'\"\n : \"'s\"}{\" \"}\n {!!baby.baby_age.due_date ? \"due date\" : \"birthday\"}:{\" \"}\n {!!baby.baby_age ? baby.baby_age.strBirthDate : \"\"}\n

\n
\n
\n
\n \n );\n};\n\nexport default BabyAge;\n","import React from \"react\";\n\n\nfunction AddBabypage() {\n return (\n \n \n \n \n \n \n \n );\n}\n\nexport default AddBabypage;","import { Card, Carousel, Button, Modal } from \"antd\";\nimport React, { useMemo, useState } from \"react\";\nimport TruncateMarkup from \"react-truncate-markup\";\nimport { Baby, BabyPage, DashboardInfo } from \"../../interfaces\";\nimport CustomDivider from \"../CustomDivider\";\nimport PhotoModal from \"../PhotoModal/PhotoModal\";\nimport \"./Babypages.scss\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport AddBabypage from \"../Icons/addBabypage\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport CarouselSelect from \"./CarouselSelect\";\nimport { connect } from \"react-redux\";\nimport { AppState } from \"../../store\";\n\nexport interface Props {\n baby: DashboardInfo;\n isGuestUser?: boolean;\n hasFullAccess?: boolean;\n babies: Baby[];\n}\n\nconst initialModal: {\n thumbnail: string;\n thumbnail_content: string;\n babyPage: BabyPage | null;\n visible: boolean;\n} = {\n thumbnail: \"\",\n thumbnail_content: \"\",\n babyPage: null,\n visible: false,\n};\n\nconst Babypages: React.FC = ({\n baby,\n isGuestUser,\n hasFullAccess,\n babies,\n}) => {\n const [modal, setModal] = useState({ ...initialModal });\n const history = useHistory();\n const [width] = useWindowSize();\n const [currentIndex, setCurrentIndex] = useState(0);\n const [count, setCount] = useState(0);\n const reversedBabypages = [...baby.babyPages].reverse();\n\n const title: any = (index: number) => {\n if (reversedBabypages[index].event === \"Custom Page\") {\n return (\n <>\n

\n {reversedBabypages[index].title\n ? reversedBabypages[index].title\n : \"Custom Page\"}\n

\n \n );\n } else {\n return (\n \n

{reversedBabypages[index].title}

\n
\n );\n }\n };\n\n const allBabypages = useMemo(() => {\n let allBabypages: any = [];\n\n babies.map((baby) => {\n allBabypages = [...allBabypages, ...baby.babyPages];\n });\n return allBabypages;\n }, [babies]);\n\n return (\n <>\n {/*
\n \n
*/}\n \n 767 ? \"mt-2\" : \"mt-2\"}`}\n >\n

\n

BABYPAGES

\n {\n history.push(\"/milestones\");\n }}\n className=\"clickable\"\n >\n {(isGuestUser && hasFullAccess) || !isGuestUser ? (\n \n ) : null}\n \n \n {baby.babyPages.length > 0 ? (\n <>\n {\n if (\n currentIndex > 4 &&\n index < currentIndex &&\n Number.isInteger(currentIndex / 5)\n ) {\n setCount(count - 1);\n } else if (\n currentIndex >= 4 &&\n index >= currentIndex &&\n Number.isInteger(index / 5)\n ) {\n setCount(count + 1);\n }\n setCurrentIndex(index);\n }}\n autoplay\n autoplaySpeed={15000}\n infinite={false}\n dots={true}\n arrows={false}\n >\n {reversedBabypages.map((babyPage, index: number) => (\n
\n
\n \n setModal({\n visible: true,\n thumbnail: babyPage.thumbnail,\n thumbnail_content: babyPage.thumbnail_content,\n babyPage: babyPage,\n })\n }\n />\n
\n {title(index)}\n {!!babyPage.subtitle && (\n

{babyPage.subtitle}

\n )}\n
\n
\n
\n ))}\n \n
767 ? \"mt-3\" : \"mt-3 mx-2 mb-4\"}`}>\n
\n \n \n View All\n \n \n
\n\n
\n {\n if (allBabypages.length >= 8) {\n history.push(\"/books\");\n } else {\n Modal.info({\n title: \"Notice\",\n content: `You need at least 8 Babypages to create a book.\n Create a few more babypages to make your book.`,\n });\n\n return;\n }\n }}\n >\n {isGuestUser ? \"View Books\" : \"Make a Book\"}\n \n
\n
\n \n ) : (\n <>\n
\n
\n

\n Create your first babypage for {baby.baby_first_name}.\n

\n
\n
\n
\n {hasFullAccess || !isGuestUser ? (\n
\n \n \n Start a babypage\n \n \n
\n ) : null}\n
\n \n )}\n
\n {!!modal.babyPage && (\n setModal((state) => ({ ...initialModal }))}\n hasFullAccess={hasFullAccess}\n isGuestUser={isGuestUser}\n />\n )}\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n babies: state.baby.babies,\n});\n\nexport default connect(mapStateToProps)(Babypages);\n","import { Button, DatePicker, InputNumber, Modal } from 'antd';\nimport moment, { Moment } from 'moment';\nimport React from 'react';\nimport { Entry } from '../../interfaces/entry';\n\ninterface Props {\n babyname: string;\n entry: Entry | null;\n isEntryValid: boolean;\n opened: boolean;\n onSave: (e: React.MouseEvent) => void;\n onDelete: (e: React.MouseEvent) => void;\n onClose: (e: React.MouseEvent) => void;\n onChangeDate: (date: Moment | null, dateString: string) => void;\n onChangeEntry: (\n value: number | undefined,\n field: 'height' | 'weight_lbs' | 'weight_oz'\n ) => void;\n}\n\nconst EntryModal: React.FC = ({\n babyname,\n entry,\n isEntryValid,\n opened,\n onSave,\n onDelete,\n onClose,\n onChangeDate,\n onChangeEntry,\n}) =>\n !!entry ? (\n \n

Growth Chart

\n

\n Add a height and weight entry for {babyname}\n

\n \n \n current !== null && current > moment().endOf('day')\n }\n placeholder='Date'\n className='w-100 my-1'\n popupStyle={{position:'fixed'}}\n />\n \n onChangeEntry(e, 'height')}\n className='w-100 my-1'\n />\n
\n
\n \n onChangeEntry(e, 'weight_lbs')}\n className='w-100 my-1'\n />\n
\n
\n \n onChangeEntry(e, 'weight_oz')}\n className='w-100 my-1'\n />\n
\n
\n {!!entry.isEdit && (\n
\n \n
\n )}\n \n ) : null;\n\nexport default EntryModal;\n","import { Button, Card, Modal, notification, Spin, Tabs } from \"antd\";\nimport moment, { Moment } from \"moment\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport { DashboardInfo, Entry, User } from \"../../interfaces\";\nimport { Baby } from \"../../interfaces/baby\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport {\n deleteEntryDashboard,\n saveEntryDashboard,\n} from \"../../store/sagas/dashboard\";\nimport { trackAction } from \"../../utils/marketing\";\nimport EntryModal from \"../EntryModal/EntryModal\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport \"./GrowthChart.scss\";\nimport { connect } from \"react-redux\";\nimport { remainingOuncesByPound } from \"../../utils/calculates\";\n\nconst formatDate = (dateString: string): string => {\n return moment(dateString).format(\"MM[/]DD[/]YYYY\");\n};\n\nexport interface Props {\n baby: DashboardInfo | Baby;\n customTitle?: string;\n customFontColor?: string;\n customChartColor?: string;\n customFont?: string;\n customFromTo?: number[];\n defaultType?: \"height\" | \"weight\";\n onChangeType?: (type: \"height\" | \"weight\") => void;\n isGuestUser?: boolean;\n user?: User;\n}\n\nconst GrowthChart: React.FC = ({\n baby,\n customFontColor,\n customChartColor,\n customFont,\n customFromTo,\n defaultType,\n onChangeType,\n isGuestUser,\n user,\n}) => {\n const [tabSelected, setTabSelected] = useState(\n !!defaultType ? (defaultType === \"height\" ? \"1\" : \"2\") : \"1\"\n );\n const [entry, setEntry] = useState(null);\n const [chartLoading, setChartLoading] = useState(false);\n const [width] = useWindowSize();\n const [heightChart, weightChart] = useMemo(\n () => [\n (!!customFromTo && !!baby.heights && !!baby.heights.length\n ? [...baby.heights].slice(customFromTo[0], customFromTo[1] + 1)\n : baby.heights\n )\n .filter(height => parseFloat(height.height) >= 0)\n .map(height => {\n const Inches = parseFloat(height.height);\n\n return {\n ...height,\n name: formatDate(height.entry_date),\n id: height.id,\n Inches: Inches > 99.9 ? 99.9 : Inches,\n };\n }),\n (!!customFromTo && !!baby.weights && !!baby.weights.length\n ? [...baby.weights].slice(customFromTo[0], customFromTo[1] + 1)\n : baby.weights\n )\n .filter(weight => parseInt(weight.oz) >= 0)\n .map(weight => {\n const Pounds = parseFloat(\n parseFloat((parseInt(weight.oz) / 16).toString()).toString()\n );\n\n return {\n ...weight,\n id: weight.id,\n name: formatDate(weight.entry_date),\n Pounds: Pounds > 114 ? 114 : Pounds,\n };\n }),\n ],\n [baby, customFromTo]\n );\n\n const createOrEditEntry = useCallback(\n (event: any, isHeight: boolean) => {\n if (!!event && !!event[0] && event[0]._index >= 0) {\n let payload: any;\n\n if (isHeight) {\n payload = heightChart[event[0]._index];\n let weight = baby.weights.find(\n (e) => e.entry_date === payload.entry_date\n );\n\n payload.oz = !!weight ? parseInt(weight.oz) : 0;\n payload.weight_id = !!weight ? weight.id : null;\n } else {\n payload = weightChart[event[0]._index];\n let height = baby.heights.find(\n (e) => e.entry_date === payload.entry_date\n );\n\n payload.height = !!height ? parseFloat(height.height) : 0;\n payload.height_id = !!height ? height.id : null;\n }\n\n // Edit Entry\n setEntry({\n baby_id: payload.baby_id,\n entry_date: moment(payload.entry_date),\n height: payload.height,\n weight_lbs: ~~(payload.oz / 16), // Get the quocient (Ex: 20 / 3 = 6)\n weight_oz: payload.oz % 16, // Get the rest (Ex: 20 % 3 = 2)\n isEdit: true,\n height_id: isHeight ? payload.id : payload.height_id,\n weight_id: isHeight ? payload.weight_id : payload.id,\n });\n } else {\n // Create new\n const entry: Entry = {\n entry_date: moment(),\n baby_id: baby.id,\n height: 0,\n weight_oz: 0,\n weight_lbs: 0,\n };\n\n setEntry(entry);\n }\n },\n [baby.heights, baby.weights, baby.id, heightChart, weightChart]\n );\n\n const onSave = useCallback(() => {\n if (entry !== null && moment.isMoment(entry.entry_date) && !chartLoading) {\n const entryToSave = {\n ...entry,\n entry_date: !entry.isEdit\n ? entry.entry_date.format(\"YYYY[-]MM[-]DD\")\n : `${entry.entry_date.format(\"YYYY[-]MM[-]DD\")} 00:00:00`,\n isEdit: !!entry.isEdit ? entry.isEdit : undefined,\n };\n setEntry(null);\n setChartLoading(true);\n\n sagaMiddleware.run(\n saveEntryDashboard,\n entryToSave,\n (error: any | null) => {\n setChartLoading(false);\n\n if (error !== null) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n } else {\n trackAction(\n \"CreateGrowthChart\",\n {\n google: {\n event: \"create_growth_chart\",\n },\n },\n true\n );\n notification.success({\n message: \"Success\",\n description: \"Entry saved\",\n });\n }\n }\n );\n }\n }, [entry, chartLoading]);\n\n const onDelete = useCallback(() => {\n if (entry !== null && moment.isMoment(entry.entry_date) && !chartLoading) {\n Modal.confirm({\n title: \"Are you sure you want to remove this entry?\",\n onOk() {\n const entryDateFormated = (entry.entry_date as Moment).format(\n \"YYYY[-]MM[-]DD\"\n );\n const height = baby.heights.find(\n (h) =>\n moment(h.entry_date).format(\"YYYY[-]MM[-]DD\") ===\n entryDateFormated\n );\n const weight = baby.weights.find(\n (w) =>\n moment(w.entry_date).format(\"YYYY[-]MM[-]DD\") ===\n entryDateFormated\n );\n\n if (!!height || !!weight) {\n setEntry(null);\n setChartLoading(true);\n\n sagaMiddleware.run(\n deleteEntryDashboard,\n height?.id ?? 0,\n weight?.id ?? 0,\n (error: any | null, description?: string) => {\n setChartLoading(false);\n\n if (error !== null) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n } else {\n notification.success({\n message: \"Success\",\n description,\n });\n }\n }\n );\n } else {\n Modal.error({\n title: \"Error\",\n content: \"Entry not found\",\n });\n }\n },\n });\n }\n }, [entry, chartLoading, baby.heights, baby.weights]);\n\n const onChangeEntry = useCallback(\n (\n value: number | undefined,\n field: \"height\" | \"weight_lbs\" | \"weight_oz\"\n ) => {\n if (value !== undefined && entry !== null) {\n setEntry({ ...entry, [field]: value });\n }\n },\n [entry]\n );\n\n const onChangeDate = useCallback(\n (date: Moment | null, _: string) => {\n if (date !== null && entry !== null) {\n const newEntry = { ...entry, entry_date: date };\n\n const searchEntryHeight = baby.heights.filter(\n (height) =>\n moment(height.entry_date).format(\"DDMMYYYY\") ===\n date.format(\"DDMMYYYY\")\n );\n const searchEntryWeight = baby.weights.filter(\n (weight) =>\n moment(weight.entry_date).format(\"DDMMYYYY\") ===\n date.format(\"DDMMYYYY\")\n );\n\n if (searchEntryHeight.length > 0) {\n newEntry.height = parseFloat(searchEntryHeight[0].height);\n newEntry.height_id = searchEntryHeight[0].id;\n }\n\n if (searchEntryWeight.length > 0) {\n const oz = parseInt(searchEntryWeight[0].oz);\n newEntry.weight_lbs = ~~(oz / 16);\n newEntry.weight_oz = oz % 16;\n newEntry.weight_id = searchEntryWeight[0].id;\n }\n\n setEntry(newEntry);\n }\n },\n [entry, baby.heights, baby.weights]\n );\n const renderChart = (labels: string[], data: any[], isHeight: boolean) => (\n {\n if (user?.permission !== \"Read-Only\") {\n createOrEditEntry(e, isHeight);\n }\n }}\n options={{\n responsive: true,\n legend: {\n display: false,\n onClick: (e) => e.stopPropagation(),\n },\n title: { display: false },\n scales: {\n yAxes: [\n {\n ticks: {\n fontFamily: \"Montserrat\",\n },\n },\n ],\n xAxes: [\n {\n ticks: {\n fontFamily: \"Montserrat\",\n },\n },\n ],\n },\n tooltips: {\n callbacks: {\n label: function (\n tooltipItem: Chart.ChartTooltipItem,\n chartData: Chart.ChartData\n ) {\n if (!chartData.datasets) return \"\";\n\n const dataset = chartData.datasets[0];\n const pound: string | number | undefined = tooltipItem.yLabel;\n const remaining = remainingOuncesByPound(Number(pound));\n return isHeight\n ? `${dataset.label}: ${pound}`\n : `${Math.floor(Number(pound))}lbs ${\n remaining ? `${remaining}oz` : \"\"\n }`;\n },\n },\n },\n }}\n />\n );\n\n return (\n <>\n \n 767 ? \"mb-4\" : \"\"}`}\n headStyle={{\n color: !!customFontColor ? customFontColor : \"#000000\",\n fontFamily: !!customFont ? customFont : \"ProximaNovaLight\",\n }}\n style={{\n padding: 0,\n }}\n >\n 768 ? \"mt-2\" : \"mt-2\"\n }`}\n >\n

GROWTH CHART

\n \n {\n setTabSelected(e);\n\n if (onChangeType) {\n onChangeType(e === \"1\" ? \"height\" : \"weight\");\n }\n }}\n >\n \n
\n {renderChart(\n heightChart.map((h) => h.name),\n heightChart.map((h) => h.Inches),\n true\n )}\n
\n
\n \n
\n {renderChart(\n weightChart.map((h) => h.name),\n weightChart.map((h) => parseFloat(h.Pounds.toString())),\n false\n )}\n
\n
\n \n\n {!isGuestUser && (\n
\n
\n createOrEditEntry(null, tabSelected === \"1\")}\n >\n Add Entry\n \n
\n
\n )}\n \n
\n 0 || entry.weight_lbs > 0 || entry.weight_oz > 0)\n }\n onSave={onSave}\n onDelete={onDelete}\n onClose={() => setEntry(null)}\n onChangeDate={onChangeDate}\n onChangeEntry={onChangeEntry}\n />\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user_level: state.user.user_level,\n babySelected: state.baby.babySelected,\n dashboard: state.dashboard,\n user: state.user,\n});\n\nexport default connect(mapStateToProps)(GrowthChart);","export const remainingOuncesByPound = (\n pounds: number,\n minUnitOunces: number = 16\n ) => {\n return Math.abs((Math.trunc(pounds) - pounds) * minUnitOunces);\n };","import React, {useState} from 'react';\nimport { DashboardInfo } from '../../interfaces';\nimport { Button, Card, Carousel } from 'antd';\nimport './RecentMilestones.scss';\nimport { Link } from 'react-router-dom';\nimport CompletedMilestones from '../Milestones/icons/CompletedMilestones';\nimport { useWindowSize } from '../../hooks/WindowsSize';\nimport CarouselSelect from './CarouselSelect';\n\nexport interface Props {\n baby: DashboardInfo;\n}\n\nconst RecentMilestones: React.FC = ({ baby }) => {\n // Checking if device is iOS to \"force\" refresh after loading route\n const [width] = useWindowSize();\n const [currentIndex, setCurrentIndex] = useState(0)\n const [count, setCount] = useState(0);\n const recentMilestones = baby.limited_milestones.concat(baby.holiday_milestones)\n const sectionTitle = !!baby.baby_hasborn ? \"RECENT MILESTONES\" : \"PREGNANCY MILESTONES\"\n const marginButton = width > 767 ? \"mt-3\" : width <= 320 ? \"mt-5\" : \"mt-3 mb-4\"\n\n return (\n <>\n \n
767 ? \"mt-2\" : \"mt-2\"} mb-3`}>\n

{sectionTitle}

\n
\n
\n {\n if(currentIndex > 4 && index < currentIndex && Number.isInteger(currentIndex / 5)) {\n setCount(count-1)\n } else if (currentIndex >= 4 && index >= currentIndex && Number.isInteger(index / 5)) {\n setCount(count + 1);\n }\n setCurrentIndex(index)\n }}\n draggable\n autoplay\n autoplaySpeed={15000}\n infinite={false}\n dots={true}\n arrows={false}\n >\n {baby.limited_milestones\n .concat(baby.holiday_milestones).map((milestone, index: number) => {\n const milestoneCompletedOverlay = milestone.is_used ? \"completed-overlay\" : \"\";\n const imageOpacity = milestone.is_used ? \"image-opacity\" : \"\";\n\n return(\n \n
\n \n
\n {\n milestone.is_used ? : null\n }\n \n

{milestone.title}

\n
\n \n
\n \n )})}\n \n
\n
\n \n \n \n
\n \n \n );\n};\n\nexport default RecentMilestones;\n","// @ts-nocheck\nimport queryString from 'query-string';\nimport { Modal } from 'antd';\nimport React from 'react';\nimport { useHistory, useLocation } from 'react-router';\nimport { connect } from 'react-redux';\nimport { User } from '../../interfaces';\nimport { AppState, sagaMiddleware } from '../../store';\nimport storkIllustration from '../../assets/img/illustrations/stork-illustration.png';\nimport { getAuthenticatedUser } from '../../store/sagas/user';\nimport SaveChild from '../SaveChild/SaveChild';\nimport \"./AddChildInfoModal.scss\"\n\ninterface Props {\n user: User;\n visible: boolean;\n close: () => void;\n closeAndShowSecondModal: () => void;\n babySelected: Baby;\n}\n\nconst AddChildInfoModal: React.FC = ({ visible, close, closeAndShowSecondModal, user, babySelected }) => {\n const location = useLocation();\n const history = useHistory();\n\n const saveChild = (\n {\n close();\n \n sagaMiddleware.run(getAuthenticatedUser);\n\n const query = queryString.parse(location.search);\n history.push(!!query.redirect && query.redirect.toString());\n }}\n hideCustomDivider\n extraInfo\n shortForm\n />\n );\n\n return (\n closeAndShowSecondModal()}\n footer={null}\n >\n
\n \"BP\n \n

\n Let's finish adding your child's info to complete their profile\n

\n \n {saveChild}\n\n closeAndShowSecondModal()} className=\"close-link\">No thanks, I'll complete it later\n
\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user\n});\n\nexport default connect(mapStateToProps)(AddChildInfoModal);\n","// @ts-nocheck\nimport React from \"react\";\nimport {User } from \"../../interfaces\";\nimport { connect } from 'react-redux';\nimport { AppState, sagaMiddleware } from '../../store';\nimport { Modal } from 'antd';\nimport { getAuthenticatedUser } from '../../store/sagas/user';\nimport SaveChild from '../SaveChild/SaveChild';\nimport { useHistory, useLocation } from 'react-router';\nimport queryString from 'query-string';\n\ninterface Props {\n user: User;\n visible: boolean;\n close: () => void;\n closeAndShowSecondModal: () => void;\n babySelected: Baby;\n }\n \n const UpdateBirthModal: React.FC = ({ visible, close, closeAndShowSecondModal, user, babySelected }) => {\n const location = useLocation();\n const history = useHistory();\n \n const saveChild = (\n {\n close();\n \n sagaMiddleware.run(getAuthenticatedUser);\n \n const query = queryString.parse(location.search);\n history.push(!!query.redirect && query.redirect.toString());\n }}\n hideCustomDivider\n updateBirthDate\n />\n );\n return (\n <>\n closeAndShowSecondModal()}\n footer={null}\n style={{display: visible ? \"block\" : \"none\"}}\n >\n
\n

\n We noticed your due date has passed.\n

\n

\n If your little one has arrived, congrats! Add their birth date now!\n

\n \n {saveChild}\n\n closeAndShowSecondModal()} className=\"close-link\">No thanks, I'll complete it later\n
\n \n\n \n )\n }\n\n const mapStateToProps = (state: AppState) => ({\n user: state.user\n });\n \n export default connect(mapStateToProps)(UpdateBirthModal);","import React, { useState } from \"react\";\nimport { DashboardInfo } from \"../../interfaces\";\nimport { connect } from \"react-redux\";\nimport { Card, Button } from \"antd\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport { AppState } from \"../../store\";\nimport ModalPlus from \"../ModalPlus/ModalPlus\";\nimport guestUserImg from \"../../assets/img/icon-manage-guest-users.png\"\nimport \"./ManageUsers.scss\"\n\ninterface Props {\n baby: DashboardInfo;\n user_level?: number;\n}\n\nconst ManageUsers: React.FC = ({ baby, user_level }) => {\n const history = useHistory();\n const [plusOpen, setPlusOpen] = useState(false);\n const [ width ] = useWindowSize();\n\n return (\n <>\n \n
\n

MANAGE GUEST USERS

\n
\n
\n { width > 767 \n ? null \n : \n }\n
\n {\n user_level === 1\n ? history.push(\"/guest-users\")\n : setPlusOpen(true);\n }}\n >\n Share BabyPage Profile\n \n
\n {user_level === 1 ? null : (\n
\n \n Not a PLUS member? Upgrade Now!\n \n
\n )}\n
\n
\n\n {\n setPlusOpen(false);\n }}\n />\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user_level: state.user.user_level,\n});\n\nexport default connect(mapStateToProps)(ManageUsers);\n","import React, { Dispatch, SetStateAction, useCallback, useEffect, useRef, useState } from 'react'\nimport { Carousel, Modal, Button, Icon, Spin } from \"antd\"\nimport { connect } from 'react-redux';\nimport { Baby, SaveBabyPagePhoto, SimpleBaby, User } from '../../interfaces';\nimport { AppState, sagaMiddleware } from '../../store';\nimport { BaseAction } from '../../store/actionTypes';\nimport { selectBaby } from '../../store/ducks/baby';\nimport addChildPhotoIcon from \"../../assets/icons/IconPlacholder.png\";\nimport SelectPhotoModal from '../SaveBabyPage/SelectPhotoModal';\nimport layout from 'antd/lib/layout';\nimport { PhotoSelected, initialPhotoState, selectOneImage, selectOneImageURL, finishOneCrop, profilePhotoClick } from '../../pages/BabyPage/Save/SaveHelper';\nimport { isEqual } from 'lodash';\nimport ImageEditModal from '../ImageEditModal/ImageEditModal';\nimport Cropper from \"react-cropper\";\nimport { saveProfilePicture } from '../../store/sagas/baby';\nimport { useHistory } from 'react-router';\nimport \"./BabyCarousel.scss\"\nimport { getBase64FromFileUrl } from '../../utils/image';\nimport { BASE_URL } from '../../env';\nimport AddProfilePhotoIcon from '../Icons/AddProfilePhotoIcon';\n\ninterface Props {\n simpleBabies: SimpleBaby[];\n selectBabyIndex: Function;\n babySelectedIndex?: number;\n babies: Baby[];\n babySelected: Baby | undefined;\n editPhoto?: boolean;\n setEditPhoto?: React.Dispatch>;\n addPhoto?:boolean;\n setAddPhoto?:React.Dispatch>;\n user: User;\n}\n\nexport const BabyCarousel : React.FC = ({ \n simpleBabies,\n selectBabyIndex,\n babySelectedIndex,\n babies,\n babySelected,\n editPhoto,\n setEditPhoto,\n addPhoto,\n setAddPhoto,\n user\n}) => {\n const [babyPhotoModal, setBabyPhotoModal] = useState(false);\n const [photo, setPhoto] = useState({base64_cropped: \"\"}); \n const babyPhotoCarouselRef = React.createRef();\n const inputRef = useRef(null);\n const cameraInputRef = useRef(null);\n const [cropperRef, setCropperRef] = useState(null);\n const [loading, setLoading] = useState(false);\n const [photoSelected, setPhotoSelected] = useState(\n initialPhotoState\n );\n let slidesToShow = babies.length >= 3 ? 3 : babies.length\n const[finalPhotoModal, setFinalPhotoModal] = useState(false);\n const isGuestUser = !!user.guest_user\n const history = useHistory();\n const onSelectImage = useCallback(\n (e: React.ChangeEvent) =>\n selectOneImage(\n e,\n photoSelected,\n photo,\n setPhoto,\n setPhotoSelected,\n inputRef,\n setLoading\n ),\n [ photoSelected, photo, setPhoto, inputRef]\n );\n\n const getBase64 = async () => {\n let base64 = await getBase64FromFileUrl(babySelected?.baby_profile_picture!,`${BASE_URL}api/avoid-cors?url=`)\n return base64;\n }\n\n useEffect(() => {\n if(!!babySelected?.baby_profile_picture?.length && !!setEditPhoto) {\n let profilePhoto = getBase64()\n\n profilePhoto.then((value) => {\n setPhoto({base64:value, base64_cropped:value})\n })\n }\n }, [babySelected])\n \n\n const onSelectImageURL = useCallback(\n (imageUrl: string) =>\n selectOneImageURL(\n imageUrl,\n photoSelected,\n photo,\n setPhoto,\n setPhotoSelected,\n inputRef,\n setLoading\n ),\n [ photoSelected, photo, setPhoto, inputRef]\n );\n\n const onCropComplete = useCallback(\n (croppedData: Cropper.Data, imageData: Cropper.ImageData) => {\n if (\n !!croppedData &&\n (!photoSelected.croppedData ||\n !isEqual(croppedData, photoSelected.croppedData))\n ) {\n setPhotoSelected((state) => ({\n ...state,\n croppedData,\n imageData,\n }));\n }\n },\n [photoSelected]\n );\n \n const onFinishCrop = useCallback(\n async (_: React.MouseEvent) => {\n if (cropperRef !== null) {\n finishOneCrop(\n cropperRef,\n photoSelected,\n photo,\n setPhoto,\n setLoading,\n setPhotoSelected\n );\n }\n if(!!setEditPhoto) {\n setEditPhoto(true)\n } else {\n setFinalPhotoModal(true)\n }\n\n },\n [cropperRef, photoSelected, photo, setPhoto]\n );\n\n const onPhotoClick = useCallback(\n ( photo: SaveBabyPagePhoto) => {\n profilePhotoClick(\n photo,\n inputRef,\n setPhotoSelected,\n )\n if(!!setEditPhoto) {\n setEditPhoto(false)\n } else {\n setFinalPhotoModal(false)\n }\n \n },\n\n [layout, inputRef]\n );\n\n useEffect(() => {\n if(!!babySelectedIndex && babySelectedIndex > 2) {\n babyPhotoCarouselRef.current?.goTo(babySelectedIndex - 2)\n } else {\n babyPhotoCarouselRef.current?.goTo(0)\n }\n }, [babySelectedIndex])\n\n const uploadPhoto = useCallback( async () => {\n setLoading(true)\n if(!!babySelected) {\n\n let file = await dataUrlToFileUsingFetch(photo.base64_cropped, \"output.png\", \"image/jpeg\");\n\n const image = {\n image: file,\n folder: \"photos\",\n baby_id: babySelected.id,\n }\n\n sagaMiddleware.run(saveProfilePicture, babySelected.id, image ,(error: string | null) => {\n if (error !== null) {\n setLoading(false)\n console.error(error);\n }try {\n setLoading(false)\n if(!!setEditPhoto) {\n setEditPhoto(false)\n } else {\n setFinalPhotoModal(false)\n }\n } catch {\n setLoading(false)\n }\n });\n }\n }\n , [photo, babySelectedIndex])\n \n \n const dataUrlToFileUsingFetch = async (\n url: string,\n fileName: string,\n mimeType: string\n ) => {\n const response = await fetch(url);\n const buffer = await response.arrayBuffer();\n \n return new File([buffer], fileName, { type: mimeType });\n };\n \n const babyListHtml = simpleBabies.map((baby, index) => {\n return (\n
\n
{\n if(index !== babySelectedIndex) {\n selectBabyIndex(index)\n } else if (!isGuestUser) {\n if(!!setAddPhoto && !babySelected?.baby_profile_picture) {\n setAddPhoto(true)\n } else {\n setBabyPhotoModal(true);\n }\n\n } \n }}>\n {babies[index].baby_profile_picture ? \n {\n if(index === babySelectedIndex && !isGuestUser ) {\n history.push(`profile?child`)\n }\n }}/> \n : <> }\n \n
\n

{baby.baby_first_name}

\n
\n )\n })\n return (\n <>\n
\n
\n \n { babyListHtml }\n \n
\n\n \n\n \n\n setPhotoSelected(initialPhotoState)}\n onChangePhoto={() => {\n setPhotoSelected((state) => ({ ...state, edit: false }));\n if(!!setAddPhoto) {\n setAddPhoto(true)\n } else {\n setBabyPhotoModal(true)\n }\n }}\n roundCropper\n />\n\n {\n if(!!setAddPhoto) {\n setAddPhoto(false)\n } else {\n setBabyPhotoModal(false)\n }\n }}\n inputRef={inputRef}\n cameraInputRef={cameraInputRef}\n onSelectPhoto={onSelectImageURL}\n isProfile\n setBabyPhotoModal={setBabyPhotoModal}\n setAddPhoto={setAddPhoto}\n />\n\n {\n if(!!setEditPhoto) {\n setEditPhoto(false)\n } else {\n setFinalPhotoModal(false)\n }\n }}\n footer={null}\n className=\"mobile-profile-modal\"\n > \n
\n\n
\n

\n Crop photo\n

\n

Move and Scale

\n
\n (!!onPhotoClick ? onPhotoClick(photo) : {})}\n className=\"baby-photo baby-profile-photo p-0 my-3\"\n />\n
\n uploadPhoto()}\n >\n Finish\n \n
\n\n {loading ?\n (
\n \n }\n />\n
\n ) : (\n
\n

(!!onPhotoClick ? onPhotoClick(photo) : {})}\n >Edit Profile Photo

\n
\n )}\n
\n
\n
\n
\n
\n \n )\n}\n\n\nconst mapStateToProps = (state: AppState) => ({\n simpleBabies: state.baby.simpleBabies,\n babySelectedIndex: state.baby.babySelectedIndex,\n babies: state.baby.babies,\n babySelected: state.baby.babySelected,\n user: state.user,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n selectBabyIndex: (index: number) => dispatch(selectBaby(index)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BabyCarousel);\n\n\n","import { Icon, Modal, Spin } from \"antd\";\nimport React, { useState, useEffect, useMemo } from \"react\";\nimport { connect } from \"react-redux\";\nimport moment from \"moment\";\nimport BaseLayout from \"../../components/BaseLayout/BaseLayout\";\nimport BabyAge from \"../../components/Dashboard/Babyage\";\nimport Babypages from \"../../components/Dashboard/Babypages\";\nimport GrowthChart from \"../../components/Dashboard/GrowthChart\";\nimport RecentMilestones from \"../../components/Dashboard/RecentMilestones\";\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport { Baby, DashboardInfo, User } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { DashboardState } from \"../../store/ducks/dashboard\";\nimport { fetchDashboard } from \"../../store/sagas/dashboard\";\nimport { createGuestCustomer } from \"../../store/sagas/customer\";\nimport { useLastLocation } from \"react-router-last-location\";\nimport AddChildInfoModal from \"../../components/AddChildInfoModal/AddChildInfoModal\";\nimport UpdateBirthModal from \"../../components/UpdateBirthModal/UpdateBirthModal\";\nimport logoImg from \"../../assets/img/logo_2.png\";\nimport \"./DashboardPage.scss\";\nimport ManageUsers from \"../../components/Dashboard/ManageUsers\";\nimport BabyCarousel from \"../../components/Dashboard/BabyCarousel\";\nimport { useManageModal } from \"../../hooks/useManageModal\";\nimport { MilestoneState } from \"../../store/ducks/milestones\";\n\ninterface Props {\n user_level?: number;\n babySelected?: Baby;\n dashboard: DashboardState;\n user: User;\n milestones: MilestoneState;\n}\n\nconst DashboardPage: React.FC = ({\n user_level,\n babySelected,\n dashboard,\n user,\n milestones\n}) => {\n const [width] = useWindowSize();\n const lastLocation = useLastLocation();\n const [showModalExtraInfo, onModalExtraInfo] = useManageModal();\n const [showModalUpdate, setShowModalUpdate] = useState(false);\n const [showModalInfo, setShowModalInfo] = useState(false);\n const babyDueDate = babySelected?.baby_duedate;\n const isDueDate =\n babyDueDate &&\n moment(babyDueDate).diff(moment().format(\"YYYY-MM-DD\"), \"days\") > 0\n ? true\n : false;\n const hasBorn = !!babySelected?.baby_hasborn\n ? !!babySelected?.baby_hasborn\n : false;\n useEffect(() => {\n if (!hasBorn && !isDueDate && !!babySelected) {\n setShowModalUpdate(true);\n } else {\n setShowModalUpdate(false);\n }\n }, [babySelected?.baby_birthdate]);\n\n useEffect(() => {\n if (!!lastLocation && lastLocation.pathname === \"/step-3\" && !isDueDate) {\n onModalExtraInfo(true);\n } else if (\n !!lastLocation &&\n lastLocation.pathname === \"/step-3\" &&\n isDueDate\n ) {\n setShowModalInfo(true);\n }\n\n sagaMiddleware.run(fetchDashboard, (error: string | null) => {\n if (error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n }\n });\n }, [lastLocation]);\n\n useEffect(() => {\n if (!!user.main_user && !user.main_user.stripe_id) {\n sagaMiddleware.run(createGuestCustomer, (error: string | null) => {\n if (error !== null) {\n console.error(error);\n }\n });\n }\n }, [user]);\n\n const baby: DashboardInfo | undefined = useMemo(() => {\n if (dashboard && dashboard.dashboard.length && babySelected) {\n return dashboard.dashboard.find((d) => d.id === babySelected.id);\n }\n return undefined;\n }, [dashboard, babySelected]);\n\n const cardDividerClass = !baby?.baby_hasborn ? \"dashboard-card-border\" : \"\";\n\n return (\n 767\n ? {\n backgroundColor: \"#f0f0f0\",\n }\n : { backgroundColor: \"white\" }\n }\n >\n 1200 ? \"container\" : \"mx-3\"} ${\n width > 767 ? \"my-3\" : \"\"\n }`}\n >\n {(dashboard.loading || milestones.loading ) && (\n
\n }\n />\n
\n )}\n {(!!baby && !milestones.loading) && (\n <>\n {\n setShowModalUpdate(false);\n }}\n closeAndShowSecondModal={() => {\n setShowModalUpdate(false);\n }}\n babySelected={babySelected}\n />\n
\n
\n
\n \n
\n
\n
\n {width > 767 ? (\n 1024 ? \"no-gutters\" : \"\"\n }`}\n >\n
\n
\n
\n \n
\n\n
\n \n
\n\n
\n {!user.guest_user && (\n \n )}\n
\n
\n
\n
\n
\n
\n {!user.guest_user || user.permission === \"Full Access\" ? (\n \n ) : (\n \n )}\n
\n\n {(!user.guest_user ||\n user.permission === \"Full Access\") && (\n
\n \n
\n )}\n
\n
\n \n ) : (\n
\n {!baby.baby_hasborn ? (\n
\n \n
\n ) : (\n \n \n
\n )}\n\n {(!user.guest_user || user.permission === \"Full Access\") && (\n \n {!baby.baby_hasborn ? (\n \n ) : (\n \n )}\n \n )}\n\n {!baby.baby_hasborn ? (\n \n \n \n ) : (\n
\n \n
\n )}\n {!user.guest_user && (\n \n \n \n )}\n\n
\n \n
\n \n )}\n \n )}\n \n\n {\n onModalExtraInfo(false);\n }}\n closeAndShowSecondModal={() => {\n onModalExtraInfo(false);\n setShowModalInfo(true);\n }}\n babySelected={babySelected}\n />\n\n setShowModalInfo(false)}\n >\n
\n
\n \"Plus\n
\n\n

\n To complete your child's profile later, simply go to My Account and\n select Manage Children in the top navigation.\n

\n
\n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user_level: state.user.user_level,\n babySelected: state.baby.babySelected,\n dashboard: state.dashboard,\n user: state.user,\n milestones: state.milestones\n});\n\nexport default connect(mapStateToProps)(DashboardPage);\n","import { useEffect, useState } from \"react\";\n\ntype useManageModalType = [boolean, (isOpen: boolean) => void];\n\nexport const useManageModal = (): useManageModalType => {\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (!open) {\n document.documentElement.style.overflowY = \"visible\";\n } else {\n document.documentElement.style.overflowY = \"hidden\";\n }\n }, [open]);\n\n const onToggleModal = (isOpen: boolean): void => {\n setOpen(!!isOpen);\n };\n\n return [open, onToggleModal];\n};\n","import {\n Button,\n Card,\n Checkbox,\n DatePicker,\n Icon,\n Input,\n InputNumber,\n Modal,\n notification,\n Radio,\n Select\n} from 'antd';\nimport { CheckboxValueType } from 'antd/lib/checkbox/Group';\nimport { RadioChangeEvent } from 'antd/lib/radio';\nimport moment from 'moment';\nimport queryString from 'query-string';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { sagaMiddleware } from '../../store';\nimport { answerFormSaga, getFormByCode } from '../../store/sagas/form';\n\nconst FormPage: React.FC = () => {\n const [loading, setLoading] = useState(true);\n const [form, setForm] = useState();\n const history = useHistory();\n\n useEffect(() => {\n let code = queryString.parse(history.location.search).code;\n\n if (!code || !code.toString()) {\n history.push('/');\n return;\n }\n\n setLoading(true);\n\n sagaMiddleware.run(\n getFormByCode,\n code.toString(),\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err\n });\n\n history.push('/');\n return;\n } else if (!!response) {\n setForm(response);\n }\n },\n false\n );\n }, [history]);\n\n const submitForm = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n\n const invalid = form.questions.find(\n (q: any) =>\n !!q.is_required &&\n (q.type_answer === 'INPUT'\n ? !q.answer\n : !q.other_answer && (!q.options_id || !q.options_id.length))\n );\n\n if (invalid) {\n Modal.error({\n title: 'Error',\n content: `Question \"${invalid.question}\" is required`\n });\n return;\n }\n\n setLoading(true);\n\n sagaMiddleware.run(\n answerFormSaga,\n {\n form_id: form.id,\n extra_question_answer: !!form.extra_question_answer\n ? form.extra_question_answer\n : undefined,\n answers: form.questions\n .filter((q: any) =>\n q.type_answer === 'INPUT'\n ? !!q.answer\n : !!q.other_answer || (!!q.options_id && !!q.options_id.length)\n )\n .map((q: any) => {\n const answer: any = {\n question_id: q.id\n };\n\n if (q.type_answer === 'INPUT') {\n answer.answer = q.answer;\n } else if (!!q.other_answer) {\n answer.other_answer = q.other_answer;\n } else {\n answer.options_id = q.options_id;\n }\n\n return answer;\n })\n },\n (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n notification.error({\n message: 'Error',\n description: err\n });\n } else {\n notification.success({\n message: 'Success',\n description: 'Thank you for answering our form!'\n });\n\n history.push('/');\n }\n }\n );\n },\n [form, history]\n );\n\n return loading || !form ? (\n
\n \n
\n ) : (\n
\n

{form.title}

\n
\n {form.questions.map((q: any, index: number) => (\n
\n \n

\n {q.question}{' '}\n {!!q.is_required && (*)}\n

\n\n {q.type_answer === 'INPUT' ? (\n q.type_data === 'TEXT' ? (\n {\n e.persist();\n\n setForm((state: any) => ({\n ...state,\n // QM / IM (QuestionMap, IndexMap) to don't confuse with the top map\n questions: state.questions.map((qm: any, im: number) =>\n index === im ? { ...q, answer: e.target.value } : qm\n )\n }));\n }}\n />\n ) : q.type_data === 'NUMBER' ? (\n \n setForm((state: any) => ({\n ...state,\n // QM / IM (QuestionMap, IndexMap) to don't confuse with the top map\n questions: state.questions.map((qm: any, im: number) =>\n index === im ? { ...q, answer } : qm\n )\n }))\n }\n />\n ) : (\n \n setForm((state: any) => ({\n ...state,\n // QM / IM (QuestionMap, IndexMap) to don't confuse with the top map\n questions: state.questions.map((qm: any, im: number) =>\n index === im\n ? { ...q, answer: dateString || undefined }\n : qm\n )\n }))\n }\n />\n )\n ) : (\n <>\n {q.type_answer === 'LIST' ? (\n <>\n \n setForm((state: any) => ({\n ...state,\n // QM / IM (QuestionMap, IndexMap) to don't confuse with the top map\n questions: state.questions.map(\n (qm: any, im: number) =>\n index === im\n ? {\n ...q,\n options_id: !!e ? [e] : undefined,\n other_answer: undefined\n }\n : qm\n )\n }))\n }\n >\n {q.options.map((o: any) => (\n \n {' '}\n {o.description}{' '}\n \n ))}\n \n \n ) : q.type_answer === 'RADIO' ? (\n <>\n
\n \n setForm((state: any) => ({\n ...state,\n // QM / IM (QuestionMap, IndexMap) to don't confuse with the top map\n questions: state.questions.map(\n (qm: any, im: number) =>\n index === im\n ? {\n ...q,\n options_id: !!e.target.value\n ? [e.target.value]\n : undefined,\n other_answer: undefined\n }\n : qm\n )\n }))\n }\n >\n {q.options.map((o: any) => (\n \n {o.description}\n \n ))}\n \n \n ) : (\n <>\n
\n ({\n label: o.description,\n value: o.id\n }))}\n value={q.options_id || []}\n onChange={(options_id: CheckboxValueType[]) =>\n setForm((state: any) => ({\n ...state,\n // QM / IM (QuestionMap, IndexMap) to don't confuse with the top map\n questions: state.questions.map(\n (qm: any, im: number) =>\n index === im\n ? {\n ...q,\n options_id,\n other_answer: undefined\n }\n : qm\n )\n }))\n }\n />\n \n )}\n {!!q.has_other && (\n {\n e.persist();\n\n setForm((state: any) => ({\n ...state,\n // QM / IM (QuestionMap, IndexMap) to don't confuse with the top map\n questions: state.questions.map(\n (qm: any, im: number) =>\n index === im\n ? {\n ...q,\n other_answer: e.target.value,\n options_id: undefined\n }\n : qm\n )\n }));\n }}\n />\n )}\n \n )}\n
\n
\n ))}\n {!!form.extra_question && (\n
\n \n

{form.extra_question}

\n {\n e.persist();\n\n setForm((state: any) => ({\n ...state,\n extra_question_answer: e.target.value\n }));\n }}\n />\n
\n
\n )}\n
\n \n SUBMIT\n \n
\n
\n
\n );\n};\n\nexport default FormPage;\n","import { Button, Card, Icon, Modal, notification, Spin } from \"antd\";\nimport moment from \"moment\";\nimport React, { useMemo, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport logo from \"../../assets/img/logo_2.png\";\nimport BaseLayout from \"../../components/BaseLayout/BaseLayout\";\nimport FloatButton from \"../../components/FloatButton/FloatButton\";\nimport PhotoModal from \"../../components/PhotoModal/PhotoModal\";\nimport ShareModal from \"../../components/ShareModal/ShareModal\";\nimport { Baby } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { GrowthChartState } from \"../../store/ducks/growthChart\";\nimport { deleteGrowthChart, fetchGrowthCharts } from \"../../store/sagas/growthChart\";\nimport { capitalizeTexts } from \"../../utils/string\";\nimport \"./GrowthChart.scss\";\nconst { confirm } = Modal;\n\ninterface Props {\n babySelected?: Baby;\n growthChart: GrowthChartState;\n}\n\nconst GrowthChartPage: React.FC = ({ babySelected, growthChart }) => {\n const history = useHistory();\n const [loading, setLoading] = useState(false);\n const [image, setImage] = useState(\"\");\n const [share, setShare] = useState(\"\");\n\n const babyGrowth = useMemo(() => {\n if (!!babySelected) {\n const babyGrowth = growthChart.find(g => g.id === babySelected.id);\n\n if (!!babyGrowth) {\n return {\n ...babyGrowth,\n babyGrowthCharts: babyGrowth.babyGrowthCharts.map(chart => ({\n ...chart,\n from_date: moment(chart.from_date.substr(0, 10)).format(\n \"MM[/]DD[/]YYYY\"\n ),\n to_date: moment(chart.to_date.substr(0, 10)).format(\n \"MM[/]DD[/]YYYY\"\n )\n }))\n };\n }\n }\n\n return undefined;\n }, [babySelected, growthChart]);\n\n return !babySelected ? null : (\n \n {loading && (\n
\n }\n />\n
\n )}\n {!!babyGrowth && !!babyGrowth.babyGrowthCharts.length ? (\n
\n
\n
\n {babyGrowth.babyGrowthCharts.map((g, index) => (\n
\n \n
\n \n
\n

\n {g.title}\n

\n

From: {g.from_date}

\n

To: {g.to_date}

\n
\n
\n \"Growth\n \n \n history.push(`/growth-chart/save?id=${g.id}`)\n }\n />\n setImage(g.thumbnail)}\n />\n {\n setShare(g.thumbnail);\n }}\n />\n \n confirm({\n title:\n \"Are you sure you want to delete this Growth Chart?\",\n okText: \"Yes\",\n okType: \"danger\",\n cancelText: \"No\",\n icon: \"warning\",\n onOk() {\n setLoading(true);\n sagaMiddleware.run(\n deleteGrowthChart,\n g.id,\n (error: string | null) => {\n setLoading(false);\n\n if (!!error) {\n Modal.error({\n title: \"Error\",\n content: error\n });\n } else {\n notification.success({\n message: \"Success\",\n description:\n \"Growth Chart removed successfully\"\n });\n }\n }\n );\n }\n })\n }\n />\n \n
\n
\n ))}\n
\n {\n history.push(\"/growth-chart/save\");\n }}\n />\n
\n ) : (\n
\n

\n {babySelected.baby_first_name} does not have any growth chart entries.\n

\n Create a new chart\n
\n )}\n {\n setLoading(true);\n\n sagaMiddleware.run(fetchGrowthCharts, (err: string | null) => {\n setLoading(false);\n\n if (err) {\n Modal.error({\n title: \"Error\",\n content: err\n });\n }\n });\n }}\n />\n setImage(\"\")}\n image={image}\n width=\"90%\"\n />\n setShare(\"\")}\n image={share}\n />\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n babySelected: state.baby.babySelected,\n growthChart: state.growthChart\n});\n\nexport default connect(mapStateToProps)(GrowthChartPage);\n","export const fontColors: string[] = [\n \"#000000\",\n \"#EF6F7A\",\n \"#F08B83\",\n \"#13668B\",\n \"#F0B754\",\n \"#EFB653\",\n \"#EF662F\",\n \"#9B0B0E\",\n \"#500A0A\",\n \"#A1CB5E\"\n];\n\nexport const chartColors: string[] = [\n \"rgb(35,32,32)\",\n \"rgb(59,76,105)\",\n \"#658071\",\n \"rgb(88,88,88)\",\n \"rgb(239,111,122)\",\n \"rgb(239,111,122)\",\n \"rgb(240,183,84)\",\n \"rgb(253,238,52)\",\n \"rgb(155,11,14)\",\n \"rgb(239,102,47)\"\n];\n","import {\n Button,\n Card,\n Icon,\n Input,\n Modal,\n notification,\n Select,\n Slider,\n Spin\n} from \"antd\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport isEqual from \"lodash/isEqual\";\nimport moment from \"moment\";\nimport queryString from \"query-string\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport BaseLayout from \"../../../components/BaseLayout/BaseLayout\";\nimport CustomDivider from \"../../../components/CustomDivider\";\nimport GrowthChart from \"../../../components/Dashboard/GrowthChart\";\nimport { Baby } from \"../../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../../store\";\nimport {\n getGrowthChartById,\n saveGrowthChartSaga\n} from \"../../../store/sagas/growthChart\";\nimport { trackAction } from \"../../../utils/marketing\";\nimport { capitalizeTexts } from \"../../../utils/string\";\nimport \"../../Dashboard/DashboardPage.scss\";\nimport { chartColors, fontColors } from \"./Colors\";\nimport \"./Save.scss\";\nconst { Option } = Select;\n\ninterface Props {\n babySelected?: Baby;\n}\n\ninterface SaveGrowthChart {\n child_id: number;\n color: string;\n font: string;\n fontcolor: string;\n from_date: number;\n title: string;\n to_date: number;\n type: \"height\" | \"weight\";\n editId: number;\n}\n\nconst SaveGrowthChartPage: React.FC = ({ babySelected }) => {\n // eslint-disable-next-line\n const history = useHistory();\n const location = useLocation();\n\n const [lastBaby, setLastBaby] = useState(undefined);\n // eslint-disable-next-line\n const [loading, setLoading] = useState(false);\n const [growthChart, setGrowthChart] = useState(\n undefined\n );\n\n useEffect(() => {\n if (!babySelected) return;\n if (!!lastBaby && isEqual(babySelected, lastBaby)) return;\n\n let id: any = queryString.parse(location.search).id; // If is update\n\n if (!!id && !lastBaby) {\n setLoading(true);\n setLastBaby(cloneDeep(babySelected));\n\n sagaMiddleware.run(\n getGrowthChartById,\n id,\n (error: string | null, gc?: any) => {\n setLoading(false);\n if (error || !gc || !gc.length) {\n Modal.error({\n title: \"Error\",\n content: !!error ? error : \"Growth Chart not found\"\n });\n history.push(\"/growth-chart\");\n return;\n } else {\n const from_date = babySelected.heights.findIndex(\n e => e.entry_date === gc[0].from_date\n );\n const to_date = babySelected.heights.findIndex(\n e => e.entry_date === gc[0].to_date\n );\n\n setGrowthChart({\n child_id: babySelected.id,\n color: gc[0].color,\n font: gc[0].font,\n fontcolor: gc[0].fontcolor,\n from_date: from_date !== -1 ? from_date : 0,\n type: gc[0].type,\n to_date: to_date !== -1 ? to_date : 0,\n title: gc[0].title,\n editId: gc[0].id\n });\n }\n }\n );\n } else {\n setLastBaby(cloneDeep(babySelected));\n\n setGrowthChart({\n child_id: babySelected.id,\n color: \"#658071\",\n font: \"NunitoSans\",\n fontcolor: \"#000000\",\n from_date: 0,\n editId: 0,\n type: \"height\",\n to_date:\n !!babySelected.heights && !!babySelected.heights.length\n ? babySelected.heights.length - 1\n : 0,\n title: `${babySelected.baby_first_name}'s Growth Chart`\n });\n }\n }, [babySelected, lastBaby, location.search, history]);\n\n const formattedDates: string[] = useMemo(\n () =>\n !!babySelected && !!babySelected.heights && !!babySelected.heights.length\n ? babySelected.heights.map(h =>\n moment(h.entry_date.substr(0, 10)).format(\"MM[/]DD[/]YYYY\")\n )\n : [],\n [babySelected]\n );\n\n const saveGrowthChart = useCallback(() => {\n if (!babySelected || !growthChart) return;\n\n setLoading(true);\n\n sagaMiddleware.run(\n saveGrowthChartSaga,\n {\n ...growthChart,\n editId: !!growthChart.editId ? growthChart.editId : undefined,\n from_date: babySelected.heights[growthChart.from_date].entry_date,\n to_date: babySelected.heights[growthChart.to_date].entry_date\n },\n (error: string | null) => {\n setLoading(false);\n\n if (!!error) {\n Modal.error({\n title: \"Error\",\n content: error\n });\n } else {\n notification.success({\n message: \"Success\",\n description: \"Growth Chart saved successfully\"\n });\n trackAction(\n \"CreateGrowthChart\",\n {\n google: {\n event: \"create_growth_chart\",\n }\n },\n true\n );\n history.push(\"/growth-chart\");\n }\n }\n );\n }, [babySelected, growthChart, history]);\n\n return !babySelected ? null : (\n \n {loading && (\n
\n }\n />\n
\n )}\n {!!growthChart && (\n
\n
\n
\n \n setGrowthChart(state => ({ ...state!, type }))\n }\n />\n
\n
\n
\n
\n \n
\n
\n \n
\n \n \n setGrowthChart(state => ({\n ...state!,\n title: e.target.value\n }))\n }\n />\n
\n \n
\n {fontColors.map((c, index) => (\n \n \n setGrowthChart(state => ({\n ...state!,\n fontcolor: c\n }))\n }\n >
\n  \n \n ))}\n
\n
\n \n
\n {chartColors.map((c, index) => (\n \n \n setGrowthChart(state => ({ ...state!, color: c }))\n }\n >
\n  \n \n ))}\n
\n
\n \n \n setGrowthChart(state => ({\n ...state!,\n font\n }))\n }\n style={{ fontFamily: growthChart.font }}\n className=\"w-100 mb-3\"\n >\n \n BigCaslon\n \n \n EBGaramond\n \n \n JosefinSans\n \n \n Montserrat\n \n \n NunitoSans\n \n \n {!!babySelected.heights && !!babySelected.heights.length && (\n <>\n
\n \n {\n setGrowthChart(state => ({\n ...state!,\n // @ts-ignore\n from_date: e[0],\n // @ts-ignore\n to_date: e[1]\n }));\n }}\n tipFormatter={value => formattedDates[value]}\n />\n \n )}\n
\n \n
\n \n
\n
\n {babySelected.heights.length < 3 && (\n

\n Please create at least 3 entries before generating a Growth\n Chart\n

\n )}\n \n Save\n \n
\n
\n \n )}\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n babySelected: state.baby.babySelected\n});\n\nexport default connect(mapStateToProps)(SaveGrowthChartPage);\n","import React from \"react\";\n\ninterface Props {\n classes?: string;\n}\nconst Facebook: React.FC = ({\nclasses\n}) => {\n return (\n \n \n \n \n \n );\n}\n\nexport default Facebook;","import React from \"react\";\n\ninterface Props {\n classes?: string;\n}\n\n\nconst Instagram: React.FC = ({\n classes\n }) => {\n return (\n \n \n \n \n \n );\n}\n\nexport default Instagram;\n","import React from \"react\";\n\ninterface Props {\n classes?: string;\n}\n\n\nconst Pinterest: React.FC = ({\n classes\n }) => {\n return (\n \n \n \n \n \n );\n}\n\nexport default Pinterest;\n","import React from \"react\";\n\ninterface Props {\n classes?: string;\n}\n\nconst Twitter: React.FC = ({\n classes\n }) => {\n return (\n \n \n \n \n \n );\n}\n\nexport default Twitter;","import React, { useEffect } from 'react';\nimport BaseLayout from '../../components/BaseLayout/BaseLayout';\nimport './Maintenance.scss'\nimport { AppState } from '../../store';\nimport { connect } from 'react-redux';\nimport { Maintenance as maintenanceType } from \"../../interfaces\";\nimport { useHistory } from 'react-router-dom';\nimport CryBaby from '../../assets/img/crybaby.jpg';\nimport Facebook from '../../components/Icons/SocialMedia/Facebook';\nimport Instagram from '../../components/Icons/SocialMedia/Instagram';\nimport Pinterest from '../../components/Icons/SocialMedia/Pinterest';\nimport Twitter from '../../components/Icons/SocialMedia/Twitter';\nimport { useWindowSize } from '../../hooks/WindowsSize';\n\n\ninterface Props {\n maintenance?: maintenanceType;\n}\n\nconst Maintenance: React.FC = ({maintenance}) => {\n const history = useHistory();\n const [width] = useWindowSize();\n let responsiveClass = width > 820 ? \"\" : \"maintenance-container\";\n\n useEffect(() => {\n responsiveClass = width > 820 ? \"\" : \"maintenance-container\"\n }, [width])\n\n useEffect(() => {\n if(!maintenance?.in_maintenance) {\n history.push(\"/\")\n }\n }, [maintenance?.in_maintenance])\n return (\n \n
\n
\n \n
\n

Uh-oh! Don't Cry!

\n

\n {maintenance?.body_message}\n

\n

We apologize for any inconvenience.

\n
\n\n
\n \n \n \n \n
\n
\n
\n \n)};\n\nconst mapStateToProps = (state: AppState) => ({\n babySelected: state.baby.babySelected,\n user: state.user,\n invitationCode: state.guestUsers.deepLinkInfo?.invitation_code,\n maintenance: state.maintenance\n});\n\n\nexport default connect(mapStateToProps)(Maintenance);\n","import {Card, Icon, Modal, Spin} from 'antd';\nimport React, {useCallback, useEffect, useState} from 'react';\nimport BaseLayout from '../../components/BaseLayout/BaseLayout';\nimport {PurchaseHistoryResponse} from '../../interfaces/purchase';\nimport {sagaMiddleware} from '../../store';\nimport {getAlexandersOrders} from '../../store/sagas/user';\nimport './MyOrders.scss';\nimport moment from \"moment\";\nimport {useHistory} from \"react-router-dom\";\n\ninterface Order {\n alexandersOrderId: string;\n booksOrder: Array;\n distinctBooksOrder: Array;\n cost: number;\n createdAt: string;\n currentStatus: {\n alexandersData: any;\n date: string;\n status: string;\n },\n finished: boolean;\n id: number;\n orderId: string;\n shipMethod: string;\n userId: number;\n}\n\nconst MyOrdersPage: React.FC = () => {\n const history = useHistory();\n\n const [loading, setLoading] = useState(false);\n const [pageData, setPageData] = useState<{\n history?: PurchaseHistoryResponse;\n alexandersOrders: Order[];\n }>({\n history: undefined,\n alexandersOrders: [],\n });\n\n const getDistinctBooks = useCallback((booksOrder: any) => {\n const result = [];\n const map = new Map();\n for (const item of booksOrder) {\n if (!map.has(item.book_id)) {\n map.set(item.book_id, true);\n result.push(item);\n }\n }\n\n return result;\n }, []);\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getAlexandersOrders,\n (err?: string, data?: any) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err,\n });\n } else if (!!data) {\n const alexandersOrders: Order[] = [];\n\n if (!!data && !!data.length) {\n data.forEach((order: any) => {\n alexandersOrders.push({\n alexandersOrderId: order.alexanders_order_id,\n booksOrder: order.books_order,\n distinctBooksOrder: getDistinctBooks(order.books_order),\n currentStatus: order.current_status,\n finished: order.finished,\n id: order.id,\n orderId: order.order_id,\n shipMethod: order.ship_method,\n userId: order.user_id,\n cost: order.cost.toFixed(2),\n createdAt: moment(order.created_at).format('MM[-]DD[-]YYYY'),\n });\n });\n }\n\n setPageData({\n history: data,\n alexandersOrders: alexandersOrders,\n });\n }\n }\n );\n }, [getDistinctBooks]);\n\n return (\n \n {loading && (\n
\n }\n />\n
\n )}\n
\n {pageData.alexandersOrders.length < 1 && (\n
\n
\n

\n There are no orders yet.\n

\n
\n
\n )}\n {pageData.alexandersOrders.map((alexanderOrder, index) => (\n
\n \n history.push(`/my-orders/${alexanderOrder.alexandersOrderId}`)\n }>\n
\n
\n
\n
\n {alexanderOrder.distinctBooksOrder.map((book, key) => (\n \n ))}\n
\n
\n
\n

\n Order #: {!!alexanderOrder.orderId.slice(9, 36)\n ? alexanderOrder.orderId.slice(9, 36) : alexanderOrder.orderId }\n

\n
\n
\n

Cost: ${alexanderOrder.cost}

\n
\n
\n

Products: {alexanderOrder.booksOrder.length}

\n
\n
\n

Status: {alexanderOrder.currentStatus.status}

\n
\n
\n

Date: {alexanderOrder.createdAt}

\n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n \n );\n};\n\nexport default MyOrdersPage;\n","import {Input, Modal, notification} from 'antd';\nimport React, {useCallback, useEffect, useState} from 'react';\nimport isEmail from \"validator/lib/isEmail\";\nimport {sagaMiddleware} from '../../store';\nimport {contactSupportAlexandersOrders} from '../../store/sagas/user';\n\ninterface Props {\n visible: boolean;\n close: () => void;\n alexandersOrder: string\n}\n\ninterface SupportForm {\n firstName: string;\n lastName: string;\n email: string;\n phoneNumber?: string;\n message: string;\n}\n\nconst AlexandersContactSupportModal: React.FC = ({visible, close, alexandersOrder}) => {\n const [loading, setLoading] = useState(false);\n\n const [form, setForm] = useState({\n firstName: '',\n lastName: '',\n email: '',\n message: '',\n });\n\n const addCard = useCallback(\n (form: SupportForm) => {\n setLoading(true);\n sagaMiddleware.run(\n contactSupportAlexandersOrders,\n {\n first_name: form.firstName,\n last_name: form.lastName,\n email: form.email,\n phone: form.phoneNumber,\n text_message: `${form.message}
-----
Message to contact support from the order # :
${alexandersOrder}`,\n },\n (err?: string, card_id?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n } else if (!!card_id) {\n notification.success({\n message: 'Success',\n description: 'Message sent successfully'\n });\n\n close();\n }\n }\n );\n },\n []\n );\n\n useEffect(() => {\n if (!visible) {\n setForm({\n firstName: '',\n lastName: '',\n email: '',\n phoneNumber: '',\n message: '',\n });\n }\n }, [visible]);\n\n return (\n addCard(form)}\n okButtonProps={{\n disabled:\n loading ||\n !form.firstName ||\n !form.lastName ||\n !isEmail(form.email) ||\n !form.message\n }}\n okText=\"Send Message\"\n >\n
\n \n
\n \n {\n e.persist();\n setForm(state => ({\n ...state,\n firstName: e.target.value.replace(/[^A-Za-z]/g, '')\n }));\n }}\n />\n
\n
\n \n {\n e.persist();\n setForm(state => ({\n ...state,\n lastName: e.target.value.replace(/[^A-Za-z]/g, '')\n }));\n }}\n />\n
\n
\n \n {\n e.persist();\n setForm(state => ({\n ...state,\n email: e.target.value\n }));\n }}\n />\n
\n
\n \n {\n e.persist();\n setForm(state => ({\n ...state,\n phoneNumber: e.target.value.replace(/[^0-9]/g, '')\n }));\n }}\n />\n
\n
\n \n {\n e.persist();\n setForm(state => ({\n ...state,\n message: e.target.value\n }));\n }}\n />\n
\n
\n \n \n );\n};\n\nexport default AlexandersContactSupportModal;\n","import { Button, Card, Icon, Modal, Spin, Timeline } from \"antd\";\nimport moment from \"moment\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport BaseLayout from \"../../../components/BaseLayout/BaseLayout\";\nimport AlexandersContactSupportModal from \"../../../components/ContactSupportModal/AlexandersContactSupportModal\";\nimport { sagaMiddleware } from \"../../../store\";\nimport { getAlexandersOrdersDetail } from \"../../../store/sagas/user\";\nimport \"./MyOrdersDetail.scss\";\n\ninterface Order {\n alexandersOrderId: string;\n booksOrder: Array;\n distinctBooksOrder: Array;\n cost: number;\n createdAt: string;\n currentStatus: {\n alexandersData: any;\n date: string;\n status: string;\n };\n finished: boolean;\n id: number;\n orderId: string;\n shipMethod: string;\n userId: number;\n shippingAddress: any;\n trackingNumber: string;\n statuses: Array<{\n alexanders_data: any;\n date: string;\n status: string;\n }>;\n}\n\nconst MyOrdersDetailPage: React.FC = () => {\n let { id } = useParams();\n\n const [loading, setLoading] = useState(false);\n const [alexandersOrder, setAlexandersOrder] = useState();\n const [showSupportModal, setShowSupportModal] = useState(false);\n\n const getDistinctBooks = useCallback((booksOrder: any) => {\n const result = [];\n const map = new Map();\n for (const item of booksOrder) {\n if (!map.has(item.book_id)) {\n map.set(item.book_id, true);\n result.push(item);\n }\n }\n\n return result;\n }, []);\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getAlexandersOrdersDetail,\n id,\n (err?: string, data?: any) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n } else if (!!data) {\n const alexandersOrder: Order = {\n alexandersOrderId: data.alexanders_order_id,\n booksOrder: data.books_order,\n distinctBooksOrder: getDistinctBooks(data.books_order),\n currentStatus: data.current_status,\n finished: data.finished,\n id: data.id,\n orderId: data.order_id,\n shipMethod: data.ship_method,\n userId: data.user_id,\n cost: data.cost.toFixed(2),\n createdAt: moment(data.created_at).format(\"MM[-]DD[-]YYYY\"),\n shippingAddress: data.shipping_address,\n trackingNumber: data.tracking_number,\n statuses: data.statuses,\n };\n\n setAlexandersOrder(alexandersOrder);\n }\n }\n );\n }, [id]);\n\n const orderedStatus = alexandersOrder?.statuses.find(\n (status) => status.status === \"ORDERED\"\n );\n const inProgressStatus = alexandersOrder?.statuses.find(\n (status) => status.status === \"PRINTED\" || status.status === \"IN PROGRESS\"\n );\n const shippedStatus = alexandersOrder?.statuses.find(\n (status) => status.status === \"SHIPPED\"\n );\n\n const shippingMethodToShow = useMemo(() => {\n switch (alexandersOrder?.shipMethod) {\n case \"FEDEXONERATEENVELOPE\":\n return \"FedEx 2-4 Day Air\";\n case \"UPSGROUND\":\n case \"UPSMIEXPBPM\":\n return \"UPS\";\n default:\n return alexandersOrder?.shipMethod;\n }\n }, [alexandersOrder?.shipMethod]);\n\n return (\n \n {loading && (\n
\n }\n />\n
\n )}\n {alexandersOrder && (\n
\n
\n \n
\n
\n
\n
\n {alexandersOrder.distinctBooksOrder.map((book, key) => (\n \n ))}\n
\n
\n
\n

\n Order Information\n

\n
\n
\n \n Order #:{\" \"}\n {!!alexandersOrder.orderId.slice(9, 36)\n ? alexandersOrder.orderId.slice(9, 36) : alexandersOrder.orderId }\n

\n
\n
\n

\n Ship. Method: {shippingMethodToShow}\n

\n
\n
\n

\n Cost: ${alexandersOrder.cost}\n

\n
\n
\n

\n Products:{\" \"}\n {alexandersOrder.booksOrder.length}\n

\n
\n
\n

\n Address:{\" \"}\n {alexandersOrder.shippingAddress.address1}\n

\n
\n
\n

\n Tracking #: \n {alexandersOrder.trackingNumber}\n

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

\n Ordered\n

\n \n \n {orderedStatus\n ? moment(orderedStatus.date).format(\n \"MM[-]DD[-]YYYY\"\n )\n : \"\"}{\" \"}\n \n

\n
\n \n

\n In Progress\n

\n \n \n {inProgressStatus\n ? moment(inProgressStatus.date).format(\n \"MM[-]DD[-]YYYY\"\n )\n : \"\"}\n \n

\n
\n \n

\n Shipped\n {alexandersOrder.trackingNumber && (\n {\n let url: string = \"\";\n if (alexandersOrder.shipMethod.indexOf('UPS') < 0) {\n url = `https://tools.usps.com/go/TrackConfirmAction?tRef=fullpage&tLc=2&text28777=&tLabels=${alexandersOrder.trackingNumber}`;\n } else {\n url = `https://www.ups.com/track?loc=en_US&tracknum=${alexandersOrder.trackingNumber}`;\n }\n\n const winOpened = window.open(url, \"_blank\");\n try {\n winOpened!.focus();\n } catch (err) {\n console.error(err);\n }\n }}\n style={{\n padding: 0,\n width: \"60%\",\n fontSize: \"12px\",\n marginLeft: \"15px\",\n borderRadius: \"9px\",\n }}\n >\n Track your order\n \n )}\n

\n \n \n {shippedStatus\n ? moment(shippedStatus.date).format(\n \"MM[-]DD[-]YYYY\"\n )\n : \"\"}\n \n

\n
\n
\n
\n
\n \n
\n \n \n \n \n
\n setShowSupportModal(false)}\n alexandersOrder={alexandersOrder.orderId}\n />\n \n )}\n \n );\n};\n\nexport default MyOrdersDetailPage;\n","import { Icon, Modal, Spin } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport BaseLayout from \"../../components/BaseLayout/BaseLayout\";\nimport { User } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { setPayPalTime } from \"../../store/sagas/user\";\nimport \"./PayPalOrderConfirmationPage.scss\";\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\ninterface Props {\n user: User;\n}\n\nconst PayPalOrderConfirmationPage: React.FC = ({ user }) => {\n const [isLoading, setIsLoading] = useState(true);\n let query = useQuery();\n let history = useHistory();\n\n useEffect(() => {\n if (!query.get(\"token\")) {\n return history.push(\"/\");\n }\n\n sagaMiddleware.run(setPayPalTime, (err?: string) => {\n setIsLoading(false);\n\n if (!!err) {\n return history.push(\"/\");\n }\n });\n }, [query.get(\"token\")]);\n\n return (\n \n
\n {isLoading ? (\n
\n }\n />\n
\n ) : (\n
\n
\n
\n

\n Thank you! Your purchase has been processed.\n

\n

\n We love our customers, and we hope you love BabyPage. If you\n have any problems, please contact us at{\" \"}\n support@babypage.com.\n

\n
\n
\n
\n )}\n
\n
\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user,\n});\n\nexport default connect(mapStateToProps)(PayPalOrderConfirmationPage);\n","import {Button, Input, Radio, Select} from \"antd\";\nimport Form from \"antd/lib/form\";\nimport {RadioChangeEvent} from \"antd/lib/radio\";\nimport React from \"react\";\nimport {useHistory} from \"react-router\";\nimport isEmail from \"validator/lib/isEmail\";\n// import matches from \"validator/lib/matches\";\n\ninterface Props {\n handleSubmit: (event: any) => void;\n setGuestUserData: Function;\n guestUserData: any;\n familyRelationshipNames:any[];\n loading: boolean;\n}\n\nconst GuestUserForm: React.FC = ({handleSubmit, setGuestUserData, guestUserData, familyRelationshipNames, loading}) => {\n const history = useHistory();\n\n return (\n
\n
\n
\n
\n \n \n {\n const value = e.target.value;\n setGuestUserData((state: any) => ({\n ...state,\n fullName: value\n }));\n }}\n />\n \n
\n
\n \n \n {\n const value = e.target.value\n setGuestUserData((state: any) => ({\n ...state,\n email: value\n }));\n }}\n />\n \n
\n
\n {\n const value = e.target.value\n setGuestUserData((state: any) => ({\n ...state,\n permission: value\n }));\n }}\n >\n \n
\n \n Read-Only\n \n
\n \n Full Access\n \n \n
\n
\n \n
\n 0 ? guestUserData.family_relationship_id : null}\n onChange={(value: any) => {\n setGuestUserData((state: any) => ({\n ...state,\n family_relationship_id: value\n }));\n }}\n >\n {familyRelationshipNames.map(f => (\n \n {f.name}\n \n ))}\n\n \n
\n
\n
\n
\n \n \n {guestUserData.id ? 'Save' : 'Send Invitation'}\n \n \n
\n
\n \n history.push(\"/guest-users\")}\n style={{maxWidth: 300}}\n disabled={loading}\n >\n Cancel\n \n \n
\n
\n
\n
\n );\n};\n\nexport default GuestUserForm;\n","import { call, select } from \"redux-saga/effects\";\nimport { AppState } from \"..\";\nimport api from \"../../api\";\nimport { RelationshipInterface } from \"../../interfaces\";\nimport { parseRequestError } from \"../../utils/error\";\nimport { User } from \"../../interfaces/user\";\n\n/**\n * This function get questions by milestone id\n **/\nexport function* getFamilyRelationships(\n callback: (err?: string, response?: RelationshipInterface[]) => void\n) {\n\n const user: User = yield select((state: AppState) => state.user);\n\n if (!user.access_token) return;\n\n try {\n const response = yield call(\n api.get,\n `api/family-relationships`,\n {\n headers: {\n Authorization: user.access_token\n }\n }\n );\n\n callback(undefined, response.data.data);\n } catch (error) {\n callback(parseRequestError(error));\n }\n}\n","import { Icon, Modal, notification, Spin } from \"antd\";\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { useHistory } from \"react-router\";\nimport BaseLayout from '../../../components/BaseLayout/BaseLayout';\nimport GuestUserForm from \"../../../components/GuestUserForm/GuestUserForm\";\nimport { GuestUserInterface } from \"../../../interfaces/guestUser\";\nimport { AppState, sagaMiddleware } from '../../../store';\nimport { createGuestUser } from \"../../../store/sagas/guestUser\";\nimport { getFamilyRelationships } from \"../../../store/sagas/familyRelationship\";\n\nconst CreateGuestUserPage = () => {\n const history = useHistory();\n\n let [loading, setLoading] = useState(false);\n let [guestUserData, setGuestUserData] = useState({\n fullName: '',\n email: '',\n permission: 'Read-Only',\n family_relationship_id:''\n });\n let [familyRelationshipNames, setFamilyRelationshipNames] = useState([]);\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getFamilyRelationships,\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n\n return;\n }\n\n setFamilyRelationshipNames(response);\n });\n }, []);\n\n const handleSubmit = useCallback(\n (event: any) => {\n event.preventDefault();\n\n setLoading(true);\n\n const body : any = {\n full_name: guestUserData.fullName,\n email: guestUserData.email,\n permission: guestUserData.permission,\n };\n\n if (!!guestUserData.family_relationship_id) {\n body.family_relationship_id = guestUserData.family_relationship_id;\n }\n\n sagaMiddleware.run(\n createGuestUser,\n body,\n (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n\n return;\n }\n\n notification.success({message: 'The invitation has been sent'});\n history.push(\"/guest-users\")\n });\n },\n [guestUserData, history]\n );\n\n return (\n \n {loading ? (\n
\n }\n />\n
\n ) : (\n \n )}\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({});\n\nexport default connect(mapStateToProps)(CreateGuestUserPage);\n","import {Button, Divider, Icon, List, Modal, Spin, Table} from 'antd';\nimport React, {useCallback, useEffect, useState} from 'react';\nimport {connect} from 'react-redux';\nimport {useHistory} from \"react-router\";\nimport {Link} from \"react-router-dom\";\nimport {Dispatch} from \"redux\";\nimport BaseLayout from '../../components/BaseLayout/BaseLayout';\nimport {GuestUserInterface} from \"../../interfaces/guestUser\";\nimport {AppState, sagaMiddleware} from '../../store';\nimport {BaseAction} from \"../../store/actionTypes\";\nimport {selectGuestUser} from \"../../store/ducks/guesUsers\";\nimport {deleteGuestUser, getGuestUsers} from \"../../store/sagas/guestUser\";\nimport \"./GuestUser.scss\"\n\ninterface Props {\n dispatchSelectGuestUser: (guestUser: GuestUserInterface) => void;\n}\n\nconst GuestUsersPage: React.FC = ({dispatchSelectGuestUser}) => {\n const history = useHistory();\n\n let [loading, setLoading] = useState(false);\n let [guestUsers, setGuestUsers] = useState([]);\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n getGuestUsers,\n (err: string | null, data?: any[]) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n\n return;\n }\n\n if (!!data) {\n setGuestUsers(data);\n }\n });\n }, []);\n\n const handleDelete = useCallback((id: number) => {\n Modal.confirm({\n title: 'Are you sure you want to delete this Guest User?',\n okText: 'Yes',\n okType: 'danger',\n cancelText: 'No',\n width: 300,\n icon: 'warning',\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(\n deleteGuestUser,\n id,\n (err: string | null, data?: any[]) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n\n return;\n }\n\n setGuestUsers((guestUsers: any) => guestUsers.filter((guestUser: any) => guestUser.id !== id ));\n });\n },\n });\n }, []);\n\n const handleUpdate = useCallback(\n (guestUser: any) => {\n dispatchSelectGuestUser({\n fullName: guestUser.full_name,\n email: guestUser.email,\n permission: guestUser.permission,\n family_relationship_id: guestUser.family_relationship_id\n });\n history.push(`/guest-users/${guestUser.id}`);\n },\n [history, dispatchSelectGuestUser]\n );\n\n const columns = [\n {\n title: 'Email',\n dataIndex: 'email',\n key: 'email',\n },\n {\n title: 'Permission',\n dataIndex: 'permission',\n key: 'permission',\n },\n {\n title: 'Actions',\n key: 'actions',\n render: (text: any, record: any) => (\n \n handleUpdate(record)}\n disabled={loading}\n />\n \n handleDelete(record.id)}\n disabled={loading}\n />\n \n ),\n },\n ];\n\n return (\n \n
\n {loading && (\n
\n }\n />\n
\n )}\n
\n
\n {!loading && !guestUsers && (\n

You don't have guest users yet

\n )}\n {!loading && guestUsers && (\n <>\n (\n handleUpdate(item)}\n disabled={loading}\n />,\n handleDelete(item.id)}\n disabled={loading}\n />\n ]}\n >\n \n {item.permission}\n \n )}\n style={{\n color: 'rgba(0, 0, 0, 0.45)',\n wordBreak: 'break-word',\n }}\n />\n \n \n )}\n \n
\n \n \n \n
\n \n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n dispatchSelectGuestUser: (payload: GuestUserInterface) => dispatch(selectGuestUser(payload)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GuestUsersPage);\n","import {Icon, Modal, notification, Spin} from \"antd\";\nimport React, {useCallback, useEffect, useState} from 'react';\nimport {connect} from 'react-redux';\nimport {useHistory} from \"react-router\";\nimport {useParams} from \"react-router-dom\";\nimport BaseLayout from '../../../components/BaseLayout/BaseLayout';\nimport GuestUserForm from \"../../../components/GuestUserForm/GuestUserForm\";\nimport {GuestUserInterface} from \"../../../interfaces/guestUser\";\nimport {AppState, sagaMiddleware} from '../../../store';\nimport {updateGuestUser} from \"../../../store/sagas/guestUser\";\nimport { getFamilyRelationships } from \"../../../store/sagas/familyRelationship\";\n\ninterface Props {\n selectedGuestUser: GuestUserInterface;\n}\n\nconst UpdateGuestUserPage: React.FC = ({selectedGuestUser}) => {\n const history = useHistory();\n let { id } = useParams();\n let [familyRelationshipNames, setFamilyRelationshipNames] = useState([]);\n let [loading, setLoading] = useState(true);\n let [guestUserData, setGuestUserData] = useState({\n fullName: '',\n email: '',\n permission: 'Read-Only',\n family_relationship_id:''\n });\n\n useEffect(() => {\n setLoading(true);\n \n sagaMiddleware.run(\n getFamilyRelationships,\n (err?: string, response?: any) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n\n return;\n }\n\n setFamilyRelationshipNames(response);\n\n });\n }, []);\n\n useEffect(() => {\n setGuestUserData({\n ...selectedGuestUser,\n id: id\n });\n setLoading(false);\n }, [selectedGuestUser, id]);\n\n const handleSubmit = useCallback(\n (event: any) => {\n event.preventDefault();\n\n setLoading(true);\n\n const body : any = {\n full_name: guestUserData.fullName,\n email: guestUserData.email,\n permission: guestUserData.permission,\n };\n\n if (!!guestUserData.family_relationship_id) {\n body.family_relationship_id = guestUserData.family_relationship_id;\n }\n\n sagaMiddleware.run(\n updateGuestUser,\n guestUserData.id,\n body,\n (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: \"Error\",\n content: err,\n });\n\n return;\n }\n\n notification.success({ message: \"Guest User updated successfully\" });\n history.push(\"/guest-users\");\n }\n );\n },\n [guestUserData, history]\n );\n\n return (\n \n {loading ? (\n
\n }\n />\n
\n ) : guestUserData.id && (\n \n )}\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n selectedGuestUser: state.guestUsers.selectedGuestUser\n});\n\nexport default connect(mapStateToProps)(UpdateGuestUserPage);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport BaseLayout from \"../../components/BaseLayout/BaseLayout\";\nimport Store from \"../../components/Store/Store\";\nimport { AppState } from \"../../store\";\n\ninterface Props {\n isPlus: boolean;\n}\n\nconst StorePage: React.FC = ({ isPlus }) => {\n return (\n \n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n isPlus: !!state.user.user_level\n});\n\nexport default connect(mapStateToProps)(StorePage);\n","/* eslint-disable no-restricted-globals */\nimport { Button, Modal } from \"antd\";\nimport React, { useCallback, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory} from \"react-router-dom\";\nimport cardsImg from \"../../assets/img/gift-card/cards.png\";\nimport cardsImgMobile from \"../../assets/img/gift-card/cards-mobile.png\"\nimport newMomImg from \"../../assets/img/gift-card/giftcard-newmom.jpg\"\nimport newMomImgMobile from \"../../assets/img/gift-card/giftcard-newmom-mobile.png\"\nimport showerImg from \"../../assets/img/gift-card/giftcard-babyshower.jpg\"\nimport showerImgMobile from \"../../assets/img/gift-card/giftcard-babyshower-mobile.png\"\nimport holidayImg from \"../../assets/img/gift-card/giftcard-holiday.jpg\"\nimport holidayImgMobile from \"../../assets/img/gift-card/giftcard-holiday-mobile.png\"\nimport { useWindowSize } from \"../../hooks/WindowsSize\";\nimport { StripeProduct } from \"../../interfaces\";\nimport { AppState, sagaMiddleware } from \"../../store\";\nimport { addProductStore } from \"../../store/sagas/cart\";\nimport Select from \"react-select\";\nimport \"./GiftCards.scss\";\n\ninterface Props {\n stripeProducts: StripeProduct[];\n store?: string;\n }\n\nconst GiftCard: React.FC = ({\n stripeProducts,\n store\n }) => {\n const [width] = useWindowSize();\n const history = useHistory();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [loading, setLoading] = useState(false);\n\n const [selectedOption, setSelectedOption] = useState({ value: 40, label: \"$40.00\" });\n let options = [{}]\n const range = [...Array(39 - 10 + 1)].map((_, i) => 10 + i * 10)\n for (const key of range) {\n const obj = { value: key, label: \"$\" + key + \".00\" };\n options.push(obj)\n }\n const basicInfo = [\n {\n title: \"New Mom\",\n text: \"Crazy with baby-prep, give mom something to make life easier.\",\n imgMobile: newMomImgMobile,\n img: newMomImg,\n },\n {\n title: \"Baby Showers\",\n text: \"Give a special mom-to-be something unique and unexpected!\",\n imgMobile: showerImgMobile,\n img: showerImg,\n },\n {\n title: \"Holiday\",\n text: \"Make the holidays brighter and share the warm and fuzzies.\",\n imgMobile: holidayImgMobile,\n img: holidayImg,\n }\n ]\n \n const floatingCardsInfo = [\n {\n title: \"$40 Gift Card\",\n value: 40,\n perk1: \"3-Month PLUS Membership\",\n perk2: \"Unlimited Babypages\",\n perk3: \"Free Shipping\",\n perk4: \"Small Softcover Book\",\n },\n {\n title: \"$75 Gift Card\",\n value: 75,\n perk1: \"1 Year PLUS Membership\",\n perk2: \"Unlimited Babypages\",\n perk3: \"Free Shipping\",\n perk4: \"Large Softcover Book\",\n },\n {\n title: \"$100 Gift Card\",\n value: 100,\n perk1: \"1 Year PLUS Membership\",\n perk2: \"Unlimited Babypages\",\n perk3: \"Free Shipping\",\n perk4: \"Large Hardcover Book\",\n },\n ]\n\n const addGiftCard = useCallback(() => {\n const giftCard = stripeProducts.find((p) => p.caption === \"giftcard\");\n if (!!giftCard) {\n setLoading(true);\n \n sagaMiddleware.run(\n addProductStore,\n {\n book_id: null,\n babypage_id: null,\n event: \"\",\n gift: { status: true, email: \"\", receiver: \"\", message: \"\", date: \"\" },\n id: giftCard.id,\n item: giftCard.type,\n options: [\n {\n id: giftCard.id,\n title: giftCard.name,\n description: giftCard.description,\n shippable: giftCard.shippable,\n attributes: giftCard.attributes,\n package_dimensions: giftCard.package_dimensions,\n active: giftCard.active,\n metadata: giftCard.metadata,\n images: giftCard.images,\n price: selectedOption.value,\n qty: 1,\n sku_id: giftCard.skus.data[0].id,\n sku_type: giftCard.skus.data[0].object,\n sku_image: giftCard.skus.data[0].image,\n sku_attributes: giftCard.skus.data[0].attributes,\n sku_package_dimensions: giftCard.skus.data[0].package_dimensions,\n sku_inventory: giftCard.skus.data[0].inventory,\n selected: true,\n },\n ],\n prices: [],\n qty: 1,\n stripe_id: giftCard.id,\n subtitle: giftCard.name,\n thumbnail: \"\",\n title: `BabyPage ${giftCard.name}`,\n total: selectedOption.value,\n type: giftCard.caption,\n },\n (error?: string, description?: string) => {\n setLoading(false);\n \n if (!!error) {\n Modal.error({\n title: \"Error\",\n content: error,\n });\n } else if (!!description) {\n const key = Date.now().toString();\n \n // Go directly to cartPage, instead to get notification\n history.push(\"/cart\");\n }\n }\n );\n }\n }, [stripeProducts, store, history, selectedOption.value]);\n\n return (\n
\n
\n
\n
\n

GIVE SOMETHING DIFFERENT

\n \n
\n

The gift that keeps on giving

\n
\n\n
\n
\n

Easy to order and easier to use, BabyPage gift cards give busy parents an extra-special way to enjoy magical memories.

\n
\n
\n
\n
\n\n
\n {basicInfo.map((item, index) => {\n return (\n
\n 767 ? item.img : item.imgMobile} alt={item.title}/>\n

{item.title}

\n\n
\n
\n

{item.text}

\n
\n
\n
\n )\n })}\n
\n
\n\n
\n
\n
\n
\n

Choose the perfect amount

\n\n
\n
\n

\n Select any amount in increments of $10. The gift card will be sent straight to their inbox and the\n journey to fabulous baby books can begin!\n

\n
\n
\n\n
\n
\n 767 ? cardsImg : cardsImgMobile} alt=\"BP Gift Cards\" className=\"my-4\" />\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n

Examples of what they can get with a gift card:

\n
\n
\n\n
\n {floatingCardsInfo.map((item, index) => {\n return (\n
\n {\n setSelectedOption({ value: item.value, label: \"$\" + item.value + \".00\" })\n }\n }\n className={`floating-card py-3${selectedOption.value === item.value ? \" active\" : \"\"}`}\n >\n

{item.title}

\n
    \n
  • {item.perk1}

  • \n
  • {item.perk2}

  • \n
  • {item.perk3}

  • \n
  • {item.perk4}

  • \n
\n
\n
\n )\n })}\n
\n\n
\n
\n setSelectedOption({value: value.value, label: value.label})} \n options={options}\n isSearchable\n />\n
\n\n
\n \n Purchase Gift Card\n \n
\n
\n
\n
\n \n )\n }\n\n const mapStateToProps = (state: AppState) => ({\n stripeProducts: state.stripeProduct,\n store: state.user.store,\n user: state.user,\n products: state.product.products,\n });\n \n export default connect(mapStateToProps)(GiftCard);","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport BaseLayout from \"../../components/BaseLayout/BaseLayout\";\nimport GiftCard from \"../../components/GiftCards/GiftCards\";\nimport Store from \"../../components/Store/Store\";\nimport { AppState } from \"../../store\";\n\ninterface Props {\n isPlus: boolean;\n}\n\nconst GiftCardsPage: React.FC = ({ isPlus }) => {\n return (\n \n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n isPlus: !!state.user.user_level\n});\n\nexport default connect(mapStateToProps)(GiftCardsPage);\n","// @ts-nocheck\nimport React, {useCallback, useState} from 'react';\nimport BaseLayout from '../../../components/BaseLayout/BaseLayout';\nimport { AppState, sagaMiddleware } from '../../../store';\nimport { connect } from 'react-redux';\nimport { Baby, User } from '../../../interfaces';\nimport { useHistory } from 'react-router-dom';\nimport SaveChild from '../../../components/SaveChild/SaveChild';\nimport BabyCarousel from '../../../components/Dashboard/BabyCarousel';\nimport AddBabypage from '../../../components/Icons/addBabypage';\nimport addChildPhotoIcon from \"../../../assets/icons/IconPlacholder.png\";\nimport { Modal, notification } from 'antd';\nimport { deleteChild } from '../../../store/sagas/baby';\nimport AddProfilePhotoIcon from '../../../components/Icons/AddProfilePhotoIcon';\nimport ModalPlus from '../../../components/ModalPlus/ModalPlus';\nimport \"./ManageChildrenPage.scss\"\n\n\ninterface Props {\n babySelected?: Baby | undefined;\n babies: Baby[];\n isPlus: boolean;\n user: User;\n}\n\nconst ManageChildrenPage: React.FC = ({ babySelected, babies, isPlus, user }) => {\n const history = useHistory();\n const [editPhoto, setEditPhoto] = useState(false);\n const [addPhoto, setAddPhoto] = useState(false);\n const [showPlus, setShowPlus] = useState(false);\n const sendToUpgradeToPlus = () => {\n history.push(\"/cart/subscription/yearly\");\n }\n const [loading, setLoading] = useState(false)\n\n const onDelete = useCallback(() => {\n Modal.confirm({\n title: 'Are you sure you want to delete this child profile?',\n okText: 'Yes',\n okType: 'danger',\n cancelText: 'No',\n width: 300,\n icon: 'warning',\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(\n deleteChild,\n babySelected?.id,\n (err?: string, description?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n } else if (!!description) {\n notification.success({\n message: 'Success',\n description\n });\n }\n }\n );\n }\n });\n }, [babySelected]);\n\n const saveChild = (\n \n history.push('/')\n }\n shortForm={false}\n onDelete={onDelete}\n />\n );\nreturn (\n <>\n setShowPlus(false)} manageChildrenMsg={user.user_level === 0} onSaveBeforeUpgradeToPlus={sendToUpgradeToPlus} />\n
\n

MANAGE CHILDREN

\n
{\n if (!user.guest_user) {\n isPlus ? history.push(\"/save-child\") : setShowPlus(true);\n } \n }}\n className=\"clickable\"\n >\n \n
\n
\n
\n
\n \n
\n
\n \n
\n

Profile Photo

\n
{\n if(!!babySelected?.baby_profile_picture) {\n setEditPhoto(true);\n }\n }}>\n {!!babySelected?.baby_profile_picture ? (\n <>\n \"\"\n \n \n ) : <> {\n setAddPhoto(true)\n }}/> }\n \n
\n
\n { saveChild }\n \n \n);\n}\nconst mapStateToProps = (state: AppState) => ({\n babySelected: state.baby.babySelected,\n babies: state.baby.babies,\n isPlus: !!state.user.user_level && state.user.user_level === 1,\n user: state.user,\n});\n\nexport default connect(mapStateToProps)(ManageChildrenPage);\n","import React, { useCallback, useState } from 'react';\nimport { sagaMiddleware } from '../../store';\nimport { updatePassword } from '../../store/sagas/user';\nimport { Modal, Input } from 'antd';\n\ninterface Props {\n visible: boolean;\n finishSuccess: (description: string) => void;\n cancel: () => void;\n}\n\nconst ChangePassword: React.FC = ({\n visible,\n finishSuccess,\n cancel\n}) => {\n const [loading, setLoading] = useState(false);\n const [currentPassword, setCurrentPassword] = useState('');\n const [password, setPassword] = useState('');\n\n const changePassword = useCallback(\n (actualPass: string, newPass: string) => {\n setLoading(true);\n\n sagaMiddleware.run(\n updatePassword,\n {\n current_password: actualPass,\n password: newPass,\n password_confirmation: newPass\n },\n (err?: string, description?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n } else if (!!description) {\n finishSuccess(description);\n setCurrentPassword(\"\");\n setPassword(\"\");\n }\n }\n );\n },\n [finishSuccess]\n );\n\n const currError = !!currentPassword.length && currentPassword.length < 6;\n const passError = !!password.length && password.length < 6;\n\n return (\n {\n cancel()\n setCurrentPassword(\"\");\n setPassword(\"\");\n }}\n onOk={() => changePassword(currentPassword, password)}\n okButtonProps={{\n disabled: loading || currentPassword.length < 6 || password.length < 6\n }}\n >\n
\n \n setCurrentPassword(e.target.value)}\n maxLength={100}\n value={currentPassword}\n className={`w-100${currError ? ' has-error' : ''}`}\n />\n {currError && (\n
\n Please enter at least 6 characters.\n
\n )}\n
\n
\n
\n \n setPassword(e.target.value)}\n maxLength={100}\n value={password}\n className={`w-100${passError ? ' has-error' : ''}`}\n />\n {passError && (\n
\n Please enter at least 6 characters.\n
\n )}\n
\n \n );\n};\n\nexport default ChangePassword;\n","import { Icon, Input, Modal } from 'antd';\nimport React, { useCallback, useState } from 'react';\nimport { sagaMiddleware } from '../../store';\nimport { addGiftCard } from '../../store/sagas/customer';\n\ninterface Props {\n visible: boolean;\n finishSuccess: (description: string) => void;\n cancel: () => void;\n}\n\nconst RedeemCode: React.FC = ({ visible, finishSuccess, cancel }) => {\n const [loading, setLoading] = useState(false);\n const [code, setCode] = useState('');\n\n const redeemCode = useCallback(\n (code: string) => {\n setLoading(true);\n sagaMiddleware.run(\n addGiftCard,\n code,\n (err?: string, description?: string) => {\n setLoading(false);\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n } else if (!!description) {\n finishSuccess(description);\n setCode('');\n }\n }\n );\n },\n [finishSuccess]\n );\n\n return (\n redeemCode(code)}\n okText=\"Redeem Your Gift Card\"\n okButtonProps={{\n disabled: loading || code.length === 0\n }}\n >\n
\n \n
\n

Enter Your Gift Card Code

\n \n setCode(e.target.value)}\n value={code}\n className=\"w-100\"\n />\n \n );\n};\n\nexport default RedeemCode;\n","import { Input, InputNumber, Modal, notification } from 'antd';\nimport moment from 'moment';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport cardValidator from 'card-validator';\nimport { User } from '../../interfaces';\nimport { AppState, sagaMiddleware } from '../../store';\nimport {\n addCustomerCard,\n updateCustomerCard\n} from '../../store/sagas/customer';\n\ninterface Props {\n user: User;\n visible: boolean;\n close: () => void;\n}\n\ninterface CardForm {\n cardNumber?: number;\n cardNumberInvalid?: boolean;\n cardName?: string;\n cardCVV?: string;\n cardCVVInvalid?: boolean;\n cardMonth?: number;\n cardYear?: number;\n cardValidationCard?: cardValidator.Card | null;\n}\n\nconst currentMonth = moment().month() + 1;\nconst currentYear = moment().year();\n\nconst AddCardModal: React.FC = ({ visible, close, user }) => {\n const [loading, setLoading] = useState(false);\n\n const [form, setForm] = useState({});\n\n const updateDefaultCard = useCallback((card_id: string) => {\n setLoading(true);\n\n sagaMiddleware.run(updateCustomerCard, card_id, (err?: string) => {\n setLoading(false);\n if (err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n }\n });\n }, []);\n\n const addCard = useCallback(\n (form: CardForm) => {\n if (form.cardYear === currentYear && form.cardMonth! < currentMonth) {\n Modal.error({\n title: 'Error',\n content: 'Invalid card month'\n });\n return;\n }\n\n setLoading(true);\n sagaMiddleware.run(\n addCustomerCard,\n {\n number: form.cardNumber!,\n exp_month: form.cardMonth!,\n exp_year: form.cardYear!,\n cvc: form.cardCVV!,\n name: form.cardName!\n },\n (err?: string, card_id?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n } else if (!!card_id) {\n notification.success({\n message: 'Success',\n description: 'Card added successfully'\n });\n\n if (\n !!user.stripe_subscriptions &&\n !!user.stripe_subscriptions.stripe_id\n ) {\n Modal.confirm({\n title:\n 'Do you want to set this new card as your subscription card?',\n okText: 'Yes',\n okType: 'danger',\n cancelText: 'No',\n width: 300,\n icon: 'warning',\n onOk() {\n updateDefaultCard(card_id);\n }\n });\n } else {\n updateDefaultCard(card_id);\n }\n\n close();\n }\n }\n );\n },\n [close, user.stripe_subscriptions, updateDefaultCard]\n );\n\n useEffect(() => {\n if (!visible) {\n setForm({\n cardNumber: undefined,\n cardNumberInvalid: undefined,\n cardName: undefined,\n cardCVV: undefined,\n cardCVVInvalid: undefined,\n cardMonth: undefined,\n cardYear: undefined\n });\n }\n }, [visible]);\n\n return (\n addCard(form)}\n okButtonProps={{\n disabled:\n loading ||\n !form.cardNumber ||\n form.cardNumberInvalid ||\n !form.cardName ||\n !form.cardName.length ||\n !form.cardCVV ||\n form.cardCVVInvalid ||\n form.cardCVV.length < 3\n }}\n >\n
\n \n \n {\n const cardValidation = cardValidator.number(\n cardNumber?.toString() ?? ''\n );\n const cardNumberInvalid = !!cardNumber && !cardValidation.isValid;\n const cardValidationCard = cardValidation.card;\n\n setForm(state => ({\n ...state,\n cardNumber,\n cardNumberInvalid,\n cardValidationCard,\n cardCVVInvalid:\n !!state.cardCVV &&\n !cardNumberInvalid &&\n (!cardValidationCard ||\n !cardValidationCard.code ||\n state.cardCVV.length !== cardValidationCard.code.size)\n }));\n }}\n />\n {form.cardNumberInvalid && (\n
Please provide a valid card.
\n )}\n
\n
\n \n {\n e.persist();\n setForm(state => ({\n ...state,\n cardName: e.target.value.replace(/[^A-Za-z ]/g, '')\n }));\n }}\n />\n
\n
\n \n {\n e.persist();\n const cardCVV = e.target.value.replace(/[^\\d]/g, '');\n\n setForm(state => ({\n ...state,\n cardCVV,\n cardCVVInvalid:\n !!cardCVV &&\n !state.cardNumberInvalid &&\n (!state.cardValidationCard ||\n !state.cardValidationCard.code ||\n cardCVV.length !== state.cardValidationCard.code.size)\n }));\n }}\n />\n {form.cardCVVInvalid && (\n
Please provide a valid CVV.
\n )}\n
\n
\n \n setForm(state => ({ ...state, cardMonth }))}\n />\n
\n
\n \n setForm(state => ({ ...state, cardYear }))}\n />\n
\n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user: state.user\n});\n\nexport default connect(mapStateToProps)(AddCardModal);\n","import { Button, Card, Icon, Modal, Spin } from 'antd';\nimport moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport giftcard from '../../../assets/img/book_line.png';\nimport logobp from '../../../assets/img/logo-babypage.png';\nimport plusThumb from '../../../assets/img/plus-thumbnail.png';\nimport BaseLayout from '../../../components/BaseLayout/BaseLayout';\nimport { PurchaseHistoryResponse } from '../../../interfaces/purchase';\nimport {AppState, sagaMiddleware } from '../../../store';\nimport { purchaseHistory } from '../../../store/sagas/user';\nimport './PurchaseHistory.scss';\nimport { StripeProduct } from \"../../../interfaces\";\nimport { connect } from \"react-redux\";\nimport { capitalizeTexts } from \"../../../utils/string\";\n\ninterface Purchase {\n orderId: string;\n orderDate: string;\n orderTotal: string;\n paymentMethod: string;\n products: {\n image: React.ReactElement;\n name: string;\n price: string;\n extra_pages?: number;\n price_pages?:number | null;\n extra_page_name?: string | null;\n }[];\n}\ninterface Props {\n stripeProducts: StripeProduct[];\n}\n\nconst PurchaseHistoryPage: React.FC = ({stripeProducts}) => {\n const [control, setControl] = useState<{\n after: string | null;\n lastPages: string[];\n }>({\n after: null,\n lastPages: [],\n });\n const [loading, setLoading] = useState(false);\n const [pageData, setPageData] = useState<{\n history?: PurchaseHistoryResponse;\n purchases: Purchase[];\n }>({\n history: undefined,\n purchases: [],\n });\n\n useEffect(() => {\n setLoading(true);\n\n sagaMiddleware.run(\n purchaseHistory,\n control.after,\n (err?: string, data?: PurchaseHistoryResponse) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err,\n });\n } else if (!!data) {\n const newPurchases: Purchase[] = [];\n\n if (!!data.order && !!data.order.length) {\n data.order.forEach(order => {\n newPurchases.push({\n orderId: order.id,\n orderDate: moment(order.created).format('MM[/]DD[/]YYYY'),\n orderTotal: parseFloat((order.amount / 100).toString()).toFixed(\n 2\n ),\n paymentMethod: '****' + order.source.last4,\n products: order.products.map(product => {\n return {\n image: (\n \n ),\n name: `${product.quantity || 1}x ${product.description}`,\n price: parseFloat(\n (\n ((product.quantity || 1) * product.amount) /\n 100\n ).toString()\n ).toFixed(2),\n extra_pages: product.extra_pages ? product.extra_pages.qty : 0,\n price_pages: product.extra_pages ? (product.extra_pages.price / 100) * (product.extra_pages.qty) * product.quantity: null,\n extra_page_name: product.extra_pages ? `${product.quantity}x ${(product.extra_pages.qty)} ${product.extra_pages.name}` : null\n };\n }),\n });\n });\n }\n\n if (!!data.charges && !!data.charges.length) {\n data.charges.forEach(charge => {\n newPurchases.push({\n orderId: charge.id,\n orderDate: moment(charge.created).format('MM[/]DD[/]YYYY'),\n orderTotal: parseFloat(\n (charge.amount / 100).toString()\n ).toFixed(2),\n paymentMethod: '****' + charge.source.last4,\n products: [\n {\n image: (\n \n ),\n name: charge.description,\n price: parseFloat((charge.amount / 100).toString()).toFixed(\n 2\n ),\n },\n ],\n });\n });\n }\n\n if (\n !!data.iap &&\n !!data.iap.data &&\n !!data.iap.data.length &&\n !control.lastPages.length\n ) {\n data.iap.data.forEach(iap => {\n newPurchases.push({\n orderId: iap.transaction_id,\n orderDate: moment(iap.purchase_date).format('MM[/]DD[/]YYYY'),\n orderTotal: parseFloat((iap.amount / 100).toString()).toFixed(\n 2\n ),\n paymentMethod: 'In App Purchase',\n products: [\n {\n image: (\n \n ),\n name: iap.title,\n price: parseFloat((iap.amount / 100).toString()).toFixed(2),\n },\n ],\n });\n });\n }\n\n setPageData({\n history: data,\n purchases: newPurchases,\n });\n }\n }\n );\n }, [control]);\n\n return (\n <>\n {loading && (\n
\n }\n />\n
\n )}\n\n {!!pageData.purchases!.length ? (\n <>\n
\n {pageData.purchases.map((purchase, index) => (\n
\n \n
\n
\n
\n Order Date\n
\n

{purchase.orderDate}

\n
\n
\n
\n Order Total\n
\n

${purchase.orderTotal}

\n
\n
\n
\n Payment Method\n
\n

{purchase.paymentMethod}

\n
\n
\n
\n Order #\n
\n

{purchase.orderId}

\n
\n {!!purchase.products &&\n purchase.products.map((product, index) => (\n
\n {product.extra_pages ? (\n <>\n
\n
{product.image}
\n
\n
\n {product.name}\n
\n

${product.price}

\n
\n
\n
\n
\n
\n {`${product.extra_page_name}`} \n
\n

${product.price_pages}

\n
\n
\n \n ) : (\n
\n
{product.image}
\n
\n
\n {product.name}\n
\n

${product.price}

\n
\n
\n )}\n
\n ))}\n
\n
\n
\n ))}\n
\n
\n
\n {\n const newLastPages =\n control.lastPages.length > 1 ? [...control.lastPages] : [];\n if (!!newLastPages.length) {\n newLastPages.splice(newLastPages.length - 1, 1);\n }\n\n setControl({\n after:\n control.lastPages.length > 1\n ? control.lastPages[control.lastPages.length - 2]\n : null,\n lastPages: newLastPages,\n });\n\n window.scrollTo(0, 0);\n }}\n className='w-100 d-table mx-auto'\n style={{ maxWidth: 300 }}\n >\n Previous\n \n
\n
\n {\n setControl({\n after: pageData.history!.starting_after,\n lastPages: [\n ...control.lastPages,\n pageData.history!.starting_after,\n ],\n });\n\n window.scrollTo(0, 0);\n }}\n className='w-100 d-table mx-auto'\n style={{ maxWidth: 300 }}\n >\n Next\n \n
\n
\n \n ) : (\n
\n

You have no purchase history

\n
\n ) \n }\n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n stripeProducts: state.stripeProduct,\n});\n\nexport default connect(mapStateToProps)(PurchaseHistoryPage);\n\n","import React from \"react\";\n\nfunction PinkCircle() {\n return (\n \n \n \n \n \n \n \n );\n}\n\nexport default PinkCircle;\n","import {\n Button,\n Card,\n Icon,\n Input,\n List,\n Modal,\n notification,\n Spin,\n Select,\n Tabs\n} from 'antd';\nimport cloneDeep from 'lodash/cloneDeep';\nimport moment from 'moment';\nimport React, { Dispatch, useCallback, useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { isEmail } from 'validator';\nimport BaseLayout from '../../../components/BaseLayout/BaseLayout';\nimport CustomDivider from '../../../components/CustomDivider';\nimport ChangePassword from '../../../components/Profile/ChangePassword';\nimport RedeemCode from '../../../components/Profile/RedeemCode';\nimport { PAYPAL_URL } from '../../../env';\nimport { useWindowSize } from '../../../hooks/WindowsSize';\nimport { Customer, CustomerCard, User } from '../../../interfaces';\nimport { AppState, sagaMiddleware } from '../../../store';\nimport {\n getCustomerInfo,\n updateCustomerCard,\n deleteCustomerCard\n} from '../../../store/sagas/customer';\nimport {\n deactivateAccount,\n guestToUser,\n unsubscribePlan,\n updateAccount\n} from '../../../store/sagas/user';\nimport './ProfilePage.scss';\nimport AddCardModal from '../../../components/AddCardModal/AddCardModal';\nimport ManageChildrenPage from '../ManageChildrenPage/ManageChildrenPage';\nimport PurchaseHistory from '../PurchaseHistory/PurchaseHistory';\nimport PinkCircle from '../../../components/Icons/PinkCircle';\n\n\nconst { confirm } = Modal;\nconst { TabPane } = Tabs;\n\ninterface Props {\n customer: Customer;\n user: User;\n}\n\nexport interface UserSettings {\n first?: string;\n last?: string;\n email?: string;\n}\n\nconst ProfilePage: React.FC = ({ customer, user }) => {\n const [width] = useWindowSize();\n const [loading, setLoading] = useState(false);\n const [showCards, setShowCards] = useState(false);\n const [addCard, setAddCard] = useState(false);\n const [modalPassword, setModalPassword] = useState(false);\n const [modalCode, setModalCode] = useState(false);\n const [settings, setSettings] = useState({});\n const [oldStripeId, setOldStripeId] = useState('');\n const [card, setCard] = useState('');\n const history = useHistory();\n\n useEffect(() => {\n setCard(customer.default_source || '');\n }, [customer]);\n\n useEffect(() => {\n if ( card !== customer.default_source && card !==\"\" ) {\n changeDefaultCard(card)\n }\n }, [card]);\n\n useEffect(() => {\n setSettings({\n first: user.first_name,\n last: user.last_name,\n email: user.email\n });\n\n if (user.stripe_id !== oldStripeId && !!user.stripe_id) {\n setOldStripeId(user.stripe_id);\n setLoading(true);\n sagaMiddleware.run(getCustomerInfo, (error?: string) => {\n setLoading(false);\n\n if (!!error) {\n Modal.error({\n title: \"Error\",\n content: error,\n }); \n }\n });\n }\n }, [user, oldStripeId]);\n\n const saveSettings = useCallback(\n (e: React.FormEvent, settings: UserSettings) => {\n e.preventDefault();\n setLoading(true);\n\n sagaMiddleware.run(\n updateAccount,\n settings,\n (err?: string, description?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n } else if (!!description) {\n notification.success({\n message: 'Success',\n description\n });\n }\n }\n );\n },\n []\n );\n\n const desactivateAccount = useCallback(\n (e: React.MouseEvent) => {\n confirm({\n title: 'Are you sure you want to delete your BabyPage account?',\n content: 'You will lose access to your content, photos and BabyPages',\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(deactivateAccount, (err?: string) => {\n setLoading(false);\n if (!!err) {\n if (err === \"In order to deactivate your account, please first unsubscribe from BabyPage Plus.\" ) {\n const error = err.replace(\"deactivate\", \"delete\");\n Modal.warn({\n title: 'Warning',\n content: error,\n })\n } else {\n Modal.error({\n title: 'Error',\n content: err\n });\n } \n }\n });\n }\n });\n },\n []\n );\n\n const changeUserLevel = useCallback(\n (e: React.MouseEvent) => {\n confirm({\n title: 'Would you like to create your own BabyPage account?',\n content: 'With an account you can create your own BabyPages and books',\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(\n guestToUser,\n user.id as number,\n (err?: string, data?: any) => {\n setLoading(false);\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n } else if (!!data) {\n history.push('/step-2');\n }\n }\n );\n }\n });\n },\n [user.id, history]\n );\n\n const unsubscribe = useCallback(\n (body: { planId: string; subsId: string }) => {\n confirm({\n title: 'Are you sure you want to unsubscribe from your plan?',\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(unsubscribePlan, body, (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n }\n else {\n notification.success({\n message: 'Success',\n description: 'We are sorry to see you go. You will have access to PLUS features until the end of your current billing cycle.'\n });\n }\n });\n }\n });\n },\n []\n );\n\n const changeDefaultCard = useCallback((cardToken: string) => {\n confirm({\n title: 'Are you sure you want to change subscription card?',\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(\n updateCustomerCard,\n cardToken,\n (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n } else {\n customer.default_source = cardToken;\n notification.success({\n message: 'Success',\n description: 'Card changed successfully'\n });\n }\n }\n );\n },\n onCancel() {\n setCard(customer.default_source || '');\n }\n });\n }, []);\n\n const deleteCard = useCallback((cardToken: string) => {\n confirm({\n title: 'Are you sure you want to remove this card?',\n onOk() {\n setLoading(true);\n\n sagaMiddleware.run(\n deleteCustomerCard,\n cardToken,\n (err?: string) => {\n setLoading(false);\n\n if (!!err) {\n Modal.error({\n title: 'Error',\n content: err\n });\n } else {\n notification.success({\n message: 'Success',\n description: 'Card removed successfully'\n });\n }\n }\n );\n }\n });\n }, []);\n\n const getNameSubscription = useCallback((name: string) => {\n switch (name) {\n case 'monthly':\n return 'Monthly Membership';\n case 'three month':\n return 'Quarterly Membership';\n case 'six month':\n return 'Semesterly Membership';\n case 'one year':\n default:\n return 'Annual Membership';\n }\n }, []);\n\n const renderMember = useCallback(\n () => (\n \n

MEMBERSHIP STATUS

\n

\n {!!user.user_level && user.stripe_subscriptions ? `BabyPage ${getNameSubscription(user.stripe_subscriptions.name)}` : !!user.user_level && user.in_app_purchase ? \n user.in_app_purchase.title : \"FREE MEMBER\"}\n

\n {!!user.in_app_purchase || !!user.stripe_subscriptions ? (\n <>\n

\n {!!user.in_app_purchase\n ? `Your Subscription will renew on ${user.in_app_purchase?.expires_date.slice(0, 10)}.`\n : `Your Subscription will renew on ${user.stripe_subscriptions?.current_period_end.slice(0, 10)}.`\n }\n

\n {!!user.in_app_purchase ? (\n <>\n {user.in_app_purchase.status === \"grace-period\" &&\n !!user.in_app_purchase.cancelation_date ? (\n

\n You unsubscribed from your BabyPage PLUS account on{\" \"}\n {moment(user.in_app_purchase.cancelation_date).format(\n \"MM[/]DD[/]YYYY\"\n )}\n . Please reactivate your PLUS account before it expires on{\" \"}\n {moment(user.in_app_purchase.expires_date).format(\n \"MM[/]DD[/]YYYY\"\n )}{\" \"}\n so you don't lose access to the content you created with\n PLUS features.\n

\n ) : null\n }\n
\n \n \n Cancel Subscription\n \n \n
\n \n ) : !!user.stripe_subscriptions!.stripe_id!! ? (\n \n unsubscribe({\n planId: user.stripe_subscriptions!.name,\n subsId: user.stripe_subscriptions!.stripe_id!,\n })\n }\n disabled={loading}\n >\n Cancel subscription\n \n ) : (\n \n Manage Subscription\n \n )}\n \n ) : (\n <>\n

\n Upgrade to PLUS and get FREE shipping,\n 10% off books, premium designs, covers and more. Only $3.75 per month with an annual membership!\n

\n \n \n )}\n
\n ),\n [user, getNameSubscription, loading, unsubscribe]\n );\n\n const renderProfile = useCallback(\n () => (\n <>\n \n

PROFILE SETTINGS

\n
saveSettings(e, settings)}>\n
\n
\n \n {\n let value = e.target.value;\n setSettings(state => ({\n ...state,\n first: value\n }))\n }\n }\n />\n
\n
\n \n {\n let value = e.target.value;\n setSettings(state => ({\n ...state,\n last: value\n }))\n } \n }\n />\n
\n
\n \n {\n let value = e.target.value;\n setSettings(state => ({\n ...state,\n email: value,\n }))\n }\n }\n />\n
\n
\n \n Update Settings\n \n
\n
\n setModalPassword(true)}\n >\n Change Password\n

\n
\n
\n \n
\n \n ),\n [settings, loading, saveSettings]\n );\n\n const renderGift = useCallback(\n () => (\n <>\n \n
\n

GIFT CARD BALANCE

\n

\n {!!customer.bp_balance\n ? `You have $${customer.bp_balance.toFixed(2)} left on your giftcard.`\n : 'You have no gift card balance'}\n

\n setModalCode(true)}\n >\n Redeem Code\n

\n
\n
\n \n ),\n [customer.bp_balance]\n );\n\n const renderDeactivate = useCallback(\n () => (\n <>\n \n

DELETE ACCOUNT

\n

\n Once you delete your account, you will no longer have access to\n any of your content, photos or BabyPages\n

\n \n Delete account\n \n
\n \n ),\n [loading, desactivateAccount]\n );\n\n const renderChangeUserLevel = useCallback(\n () => (\n
\n

\n Would you like to create your own BabyPage account?\n

\n \n
\n ),\n [loading, changeUserLevel]\n );\n\n const renderCards = useCallback(() => {\n let cardList = null;\n\n if (\n !!customer.sources &&\n !!customer.sources.data &&\n !!customer.sources.data.length\n ) {\n let cards = cloneDeep(customer.sources.data);\n const defaultIndex = cards.findIndex(\n c => c.id === customer.default_source\n );\n\n if (defaultIndex > 0) {\n cards.splice(0, 0, cards.splice(defaultIndex, 1)[0]);\n }\n\n cardList = (\n <>\n\n { customer.sources.data.length > 0 && (\n
\n
\n
\n \n
\n
\n )}\n (\n \n !user.stripe_subscriptions ||\n !user.stripe_subscriptions.stripe_id ||\n customer.sources!.data!.length > 1\n ? deleteCard(item.id!)\n : Modal.error({\n title: 'Error',\n content:\n 'You cannot have an account without cards while you have an active subscription'\n })\n }\n disabled={loading}\n />\n ]}\n >\n 25\n ? item.name.substr(0, 22) + '...'\n : item.name\n : ''\n }\n description={`${item.brand} - ****${item.last4 ||\n item.dynamic_last4 ||\n ''}`}\n />\n \n )}\n />\n \n );\n }\n\n return (\n <>\n \n

PAYMENT METHODS

\n {cardList || (\n

You don't have any payment methods

\n )}\n
\n {!!customer.sources &&\n !!customer.sources.data &&\n customer.sources.data.length > 1 && (\n
\n setShowCards(!showCards)}\n >\n {showCards ? \"Hide\" : \"Show All\"} Payment Methods\n

\n
\n )}\n \n setAddCard(true)}\n >\n Add Payment Method\n

\n
\n \n
\n \n );\n }, [\n card,\n customer.default_source,\n customer.sources,\n user.stripe_subscriptions,\n loading,\n showCards,\n changeDefaultCard,\n deleteCard\n ]);\n\n return (\n \n
\n
\n \n \n {user.user_level === 3 && renderChangeUserLevel()}\n
\n {loading && (\n
\n }\n />\n
\n )}\n {user.user_level === 3 ? (\n
\n
{renderProfile()}
\n
\n {renderDeactivate()}\n
\n
\n ) : width >= 768 ? (\n
\n
\n
\n
{renderMember()}
\n
{renderCards()}
\n
{renderGift()}
\n
\n
\n
\n
\n
{renderProfile()}
\n
{renderDeactivate()}
\n
\n
\n
\n ) : (\n
\n
{renderMember()}
\n
{renderProfile()}
\n
{renderCards()}
\n
{renderGift()}
\n
{renderDeactivate()}
\n
\n )}\n
\n setModalPassword(false)}\n finishSuccess={(description: string) => {\n setModalPassword(false);\n notification.success({\n message: 'Success',\n description\n });\n }}\n />\n setModalCode(false)}\n finishSuccess={(description: string) => {\n setModalCode(false);\n notification.success({\n message: 'Success',\n description\n });\n }}\n />\n setAddCard(false)} />\n
\n \n \n \n \n \n \n
\n
\n
\n
\n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n customer: state.customer,\n user: state.user\n});\n\nexport default connect(mapStateToProps)(ProfilePage);\n","// @ts-nocheck\nimport queryString from 'query-string';\nimport React, { useEffect, useMemo } from 'react';\nimport { connect } from 'react-redux';\nimport { useHistory, useLocation } from 'react-router';\nimport BaseLayout from '../../../components/BaseLayout/BaseLayout';\nimport SaveChild from '../../../components/SaveChild/SaveChild';\nimport { AppState } from '../../../store/index';\nimport { Modal } from 'antd';\n\ninterface Props {\n isPlus: boolean;\n}\n\nconst SaveChildPage: React.FC = ({ isPlus }) => {\n const history = useHistory();\n const location = useLocation();\n\n const [id, redirectManage] = useMemo(() => {\n const locationParsed = queryString.parse(location.search);\n return [locationParsed.id, locationParsed.redirectManage === 'true'];\n }, [location.search]);\n\n useEffect(() => {\n const locationParsed = queryString.parse(location.search);\n\n if (!isPlus && !locationParsed.id) {\n Modal.error({\n title: 'Error',\n content: 'You should be PLUS to add more children',\n });\n\n history.push('/');\n }\n }, [location.search, isPlus, history]);\n\n const saveChild = (\n \n !!id || redirectManage\n ? history.push('/profile?child')\n : history.push('/')\n }\n shortForm={false}\n addChild\n />\n );\n\n return (\n \n
\n
\n

ADD CHILD

\n \n
\n \n {saveChild}\n
\n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n isPlus: !!state.user.user_level && state.user.user_level === 1,\n});\n\nexport default connect(mapStateToProps)(SaveChildPage);\n","import React, { Dispatch, useEffect, useMemo } from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n BrowserRouter as Router,\n Redirect,\n Route,\n Switch,\n useLocation,\n} from \"react-router-dom\";\nimport AdminRoutes from \"./Admin.routes\";\nimport { DeepLinkInterface } from \"./interfaces/guestUser\";\nimport AboutPage from \"./pages/About/About\";\nimport SignInPage from \"./pages/Auth/SignInPage/SignInPage\";\nimport ResetPassword from \"./pages/Auth/ResetPassword/ResetPassword\";\nimport SignInToken from \"./pages/Auth/SignInToken\";\nimport StepThree from \"./pages/Auth/SignUpSteps/StepThree\";\nimport StepTwo from \"./pages/Auth/SignUpSteps/StepTwo\";\nimport AfterSavePage from \"./pages/BabyPage/AfterSave/AfterSave\";\nimport BabyPagesPage from \"./pages/BabyPage/BabyPages\";\nimport MilestonesPage from \"./pages/BabyPage/MilestonesPage/MilestonesPage\";\nimport SaveBabyPagesPage from \"./pages/BabyPage/Save/Save\";\nimport BooksPage from \"./pages/Books/BooksPage\";\nimport SaveBooksPage from \"./pages/Books/Save/Save\";\nimport CartPage from \"./pages/Cart/Cart\";\nimport CheckoutPage from \"./pages/Cart/Checkout\";\nimport OrderConfirmationPage from \"./pages/Cart/OrderConfirmation\";\nimport DashboardPage from \"./pages/Dashboard/DashboardPage\";\nimport FormPage from \"./pages/Form/FormPage\";\nimport GrowthChartPage from \"./pages/GrowthChart/GrowthChart\";\nimport SaveGrowthChartPage from \"./pages/GrowthChart/Save/Save\";\nimport { LastLocationProvider } from \"react-router-last-location\";\nimport Maintenance from \"./pages/Maintenance/Maintenance\";\nimport MyOrdersPage from \"./pages/MyOrders/MyOrders\";\nimport MyOrdersDetailPage from \"./pages/MyOrders/MyOrdersDetail/MyOrdersDetail\";\nimport PayPalOrderConfirmationPage from \"./pages/PayPalOrderConfirmation/PayPalOrderConfirmationPage\";\nimport CreateGuestUserPage from \"./pages/GuestUser/CreateGuestUserPage/CreateGuestUserPage\";\nimport GuestUserPage from \"./pages/GuestUser/GuestUsersPage\";\nimport UpdateGuestUserPage from \"./pages/GuestUser/UpdateGuestUserPage/UpdateGuestUserPage\";\nimport StorePage from \"./pages/Store/Store\";\nimport GiftCardsPage from \"./pages/GiftCards/GiftCards\";\nimport ManageChildrenPage from \"./pages/User/ManageChildrenPage/ManageChildrenPage\";\nimport ProfilePage from \"./pages/User/ProfilePage/ProfilePage\";\nimport PurchaseHistoryPage from \"./pages/User/PurchaseHistory/PurchaseHistory\";\nimport SaveChildPage from \"./pages/User/SaveChildPage/SaveChildPage\";\nimport { AppState, sagaMiddleware } from \"./store\";\nimport { BaseAction } from \"./store/actionTypes\";\nimport { saveDeepLinkInfo } from \"./store/ducks/guesUsers\";\nimport { getGuestUserInfo } from \"./store/sagas/guestUser\";\nimport { initMarketingTools } from \"./utils/marketing\";\nimport { User } from './interfaces';\n\ninterface Props {\n access_token?: string;\n babies_count?: number;\n user_level?: number;\n saveDeepLinkInfoToStore: (payload: DeepLinkInterface) => void;\n user: User;\n}\n\nconst ScrollToTop = () => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n initMarketingTools();\n }, [pathname]);\n\n return null;\n};\n\nfunction GetQueryParams({ saveDeepLinkInfo }: { saveDeepLinkInfo: any }) {\n const query = new URLSearchParams(useLocation().search);\n const invitation_code = query.get(\"invitation_code\");\n const users_exists = query.get(\"users_exists\");\n\n if (invitation_code) {\n sagaMiddleware.run(\n getGuestUserInfo,\n invitation_code,\n (err: string, data: any) => {\n if (!!err) {\n console.error('Guest user not found.');\n\n return;\n }\n\n saveDeepLinkInfo({\n invitation_code,\n users_exists,\n additional_data: data,\n });\n }\n );\n }\n\n return null;\n}\n\nconst AppRoutes: React.FC = ({\n access_token,\n babies_count,\n user_level,\n saveDeepLinkInfoToStore,\n user,\n}) => {\n const isLogged = useMemo(() => !!access_token, [access_token]);\n\n const isLoggedHasBabyNotLevel3 = useMemo(\n () => !!access_token && !!babies_count && user_level !== 3,\n [access_token, babies_count, user_level]\n );\n\n const isLoggedNotLevel3 = useMemo(() => !!access_token && user_level !== 3, [\n access_token,\n user_level,\n ]);\n\n const redirectOn404 = useMemo(() => (isLogged ? \"/\" : \"/signin\"), [isLogged]);\n const redirectOnAccess = useMemo(\n () => (user_level === 3 ? \"/store\" : !!user.guest_user ? \"/\" : \"/step-2\"),\n [user_level, user]\n );\n\n /**\n * When we have a protected route we need to put \"access_token &&\" before the Route definition\n */\n return (\n \n \n \n \n \n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLogged && !babies_count && (\n \n )}\n {isLogged && }\n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLoggedHasBabyNotLevel3 && (\n \n )}\n {isLogged && (\n \n )}\n {isLogged && (\n \n )}\n {isLogged && (\n \n )}\n {isLogged && (\n \n )}\n {isLogged && (\n \n )}\n {isLogged && }\n {isLogged && }\n {isLogged && }\n {isLogged && (\n \n )}\n {isLogged && (\n \n )}\n {isLogged && (\n \n )}\n {isLogged && (\n \n )}\n {isLoggedNotLevel3 && (\n \n )}\n {isLoggedNotLevel3 && (\n \n )}\n {isLogged && }\n {isLogged && }\n \n \n \n \n\n \n\n {isLogged && (babies_count === 0 || user_level === 3) && (\n } />\n )}\n\n } />\n \n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n access_token: state.user.access_token,\n babies_count: state.user.babies_count,\n user_level: state.user.user_level,\n user: state.user,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => ({\n saveDeepLinkInfoToStore: (payload: DeepLinkInterface) =>\n dispatch(saveDeepLinkInfo(payload)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AppRoutes);\n","import { Button, Modal } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { Provider, connect } from \"react-redux\";\nimport { PersistGate } from \"redux-persist/integration/react\";\nimport AppRoutes from \"./App.routes\";\nimport appPopup from \"./assets/img/ios-app-popup.jpg\";\nimport store, { persistor, sagaMiddleware, AppState } from \"./store\";\nimport rootSaga from \"./store/sagas\";\nimport { isIphone } from \"./utils/accessibility\";\nimport { getMaintenance } from \"./store/sagas/maintenance\";\n\ninterface Props {\n user_level?: number;\n}\n\nconst App: React.FC = ({\n user_level,\n}) => {\n const [modal, setModal] = useState(false);\n const isPlus = !!user_level && user_level === 1;\n\n useEffect(() => {\n sagaMiddleware.run(getMaintenance);\n }, [])\n\n useEffect(() => {\n setTimeout(() => {\n // Run Global functions (Fetch babies, ...)\n // Removed this root saga called to prevent duplicate request with plus users\n // sagaMiddleware.run(rootSaga);\n }, 500);\n\n if (!!isPlus && isIphone() && !localStorage.getItem(\"closediPhoneAlert\")) {\n setModal(true);\n }\n }, [isPlus]);\n\n return (\n <>\n \n \n \n setModal(false)}\n footer={null}\n width=\"auto\"\n bodyStyle={{\n padding: 0\n }}\n >\n
\n {\n const winOpened = window.open(\n \"https://apps.apple.com/us/app/babypage/id1362796822?utm_campaign=5d98fd57b8-EMAIL_CAMPAIGN_2018_05_10_COPY_01&utm_medium=email&utm_source=Production%20User%20List&utm_term=0_dc5a4498e0-5d98fd57b8-424824993\",\n \"_blank\"\n );\n try {\n winOpened!.focus();\n } catch (err) {}\n }}\n />\n {\n localStorage.setItem(\"closediPhoneAlert\", \"true\");\n setModal(false);\n }}\n style={{\n position: \"absolute\",\n bottom: 10,\n left: 10,\n fontSize: 12\n }}\n >\n Please don't show me this again\n \n
\n \n \n );\n};\n\nconst mapStateToProps = (state: AppState) => ({\n user_level: state.user.user_level,\n});\n\nexport default connect(mapStateToProps)(App);","export const isIphone = () =>\n !!navigator.platform\n ? navigator.platform.match(/iPad|iPhone|iPod/) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)\n : navigator.userAgent.match(/(iPad|iPhone|iPod)/g);\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.1/8 is 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\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: 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(\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\n window.location.href\n );\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: string, config?: 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: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\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.then(registration => {\n registration.unregister();\n });\n }\n}\n","// @ts-ignore\nimport \"blueimp-canvas-to-blob\";\nimport * as firebase from \"firebase/app\";\nimport \"firebase/analytics\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport ReactPixel from \"react-facebook-pixel\";\nimport { Provider } from \"react-redux\";\nimport store from \"./store\";\nimport App from \"./App\";\nimport { FACEBOOK_PIXEL, FIREBASE_CONFIG, PRODUCTION } from \"./env\";\nimport \"./fonts\";\nimport \"./index.scss\";\nimport * as serviceWorker from \"./serviceWorker\";\n\ntry {\n ReactPixel.init(FACEBOOK_PIXEL.id, undefined, {\n autoConfig: false,\n debug: !PRODUCTION\n });\n} catch (error) {}\n\ntry {\n const firebaseConfig = FIREBASE_CONFIG;\n firebase.initializeApp(firebaseConfig);\n firebase.analytics();\n} catch (error) {\n console.error(error);\n}\n\nReactDOM.render(\n \n \n , document.getElementById(\"root\"));\n\nserviceWorker.unregister();\n","module.exports = __webpack_public_path__ + \"static/media/logo-babypage.683b1b50.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/book_line.fb60b1bb.png\";","module.exports = __webpack_public_path__ + \"static/media/cards.e9bb9848.png\";","module.exports = __webpack_public_path__ + \"static/media/cards-mobile.cd5f2245.png\";","module.exports = __webpack_public_path__ + \"static/media/stork-illustration.8eb35363.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPBAMAAADJ+Ih5AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAwUExURUdwTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVM9DkAAAAPdFJOUwBWDOuTjL8hcoABt/KfL3bUyKcAAABHSURBVAjXY2AgAqSCSdYEBmcFEEPZgaHmAohxp4CB5QtQSOULA4P8Zks5SeP9Agyii/z//3daKgCUly+qFwBrbeNia8BrAwCBSA7O0SxQOQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAA5UExURUdwTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMtw8x8AAAATdFJOUwApsuEvDMT6y1zwt+lrgBihQIM/KQzKAAAAW0lEQVQI142OSxKAIAxDU6C05SOf+x9WHd0IG7N7mUwS4IcsFynZXgoq7rDDiYYbKcXw+DERwD4yhiYd4OgZVRpInDkhNKnQDkx/xf0Eum685te+dW/7s/396ASkHwO/w81VxgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/book-mockup-store-xl.d0e53e54.png\";","module.exports = __webpack_public_path__ + \"static/media/navy_warning.b872bd9f.png\";","module.exports = __webpack_public_path__ + \"static/media/plus-thumbnail.c314cb31.png\";","import { CartItem } from \"./cart\";\n\nexport interface Coupon {\n id: string;\n object: string;\n amount_off: number | null;\n created: 1572392527;\n currency: string | null;\n duration: any;\n duration_in_months: any;\n livemode: boolean;\n max_redemptions: number | null;\n metadata: any;\n name: string;\n percent_off: number | null;\n percent_off_precise: number | null;\n redeem_by: any;\n times_redeemed: number;\n valid: boolean;\n applies_to?: {\n products:string[]\n }\n}\n\nexport interface Purchase {\n billing_first: string;\n billing_last: string;\n billing_email: string;\n billing_address: string;\n billing_city: string;\n billing_country: string;\n billing_state: string;\n billing_zip: string;\n shipping_first: string;\n shipping_last: string;\n shipping_email: string;\n shipping_address: string;\n shipping_city: string;\n shipping_country: string;\n shipping_state: string;\n shipping_zip: string;\n stripe_token: string;\n card_token: string;\n disable_ship: boolean;\n shipping_value: number;\n use_balance: boolean;\n balance: number;\n store: CartItem[];\n tax: boolean;\n coupon: Coupon[];\n one_year_subscription_book: any | null;\n shipping_phone_number: string;\n billing_phone_number: string;\n ship_method: AlexandersShippingMethods;\n}\n\nexport enum AlexandersShippingMethods {\n UPS1D = \"UPS1D\",\n UPS2D = \"UPS2D\",\n UPSGROUND = \"UPSGROUND\",\n UPSMIEXPBPM = \"UPSMIEXPBPM\",\n USPSFISTCLASSLETTER = \"USPSFISTCLASSLETTER\",\n USPSPRIORITY = \"USPSPRIORITY\",\n USPSEXPRESSMAIL = \"USPSEXPRESSMAIL\",\n FEDEX1D = \"FEDEX1D\",\n FEDEXINTLPRPAK = \"FEDEXINTLPRPAK\",\n FEDEXGROUND = \"FEDEXGROUND\",\n FEDEXONERATEENVELOPE = \"FEDEXONERATEENVELOPE\",\n}\n\nexport interface CountryOptions {\n name:string;\n code:string;\n}\n","import { Background } from \"./background\";\nimport { Border, Illustration } from \"./bpHelper\";\nimport { QuestionAnswer } from \"./question\";\n\nexport interface SaveBabyPagePhoto {\n file?: File | Blob;\n base64?: string;\n isLocal?: boolean;\n base64_cropped: string;\n name?: string;\n croppedData?: Cropper.Data;\n imageData?: Cropper.ImageData;\n oldAspect?: number;\n side?: string;\n missing?: boolean;\n // origin?: number[]; // x, y\n // originPercent?: number[]; // x, y\n}\n\nexport type Layout =\n | \"layout1A\"\n | \"layout2A\"\n | \"layout2B\"\n | \"layout3A\"\n | \"layout3B\"\n | \"layout3C\"\n | \"layout3D\"\n | \"layout4A\"\n | \"layout4B\"\n | \"layout4C\"\n | \"layout4D\"\n | \"layout4E\"\n | \"layout6A\"\n | \"layout6B\";\n\nexport interface SaveBabyPage {\n id?: number;\n photos: SaveBabyPagePhoto[];\n photosRightSide: SaveBabyPagePhoto[];\n answers: QuestionAnswer[];\n borderSelected?: Border;\n illustrationSelected?: Illustration;\n backgroundSelected?: Background;\n font: string;\n textAlign: \"start\" | \"center\" | \"end\";\n layout: Layout;\n layoutRightSide: Layout;\n somethingChanged: boolean;\n thumbnail?: string;\n thumbnailRightSide?: string;\n thumbnail_content?: string;\n label_url?: string;\n label_url_file?: string;\n label_left_text?: string | null;\n label_left_position?: string;\n label_right_text?: string | null;\n label_right_position?: string;\n labelStatePositionLeft?: {\n display?: string;\n justifyContent?: string;\n alignItems?: string;\n }\n labelStatePositionRight?: {\n display?: string;\n justifyContent?: string;\n alignItems?: string;\n }\n placeholder?: string | ArrayBuffer;\n isEdit?: boolean | undefined;\n hasMissing?: boolean | undefined;\n font_id?: number;\n original_title?: string;\n child_id?: number | undefined; \n}\n\nexport interface DraftBabyPage {\n id?: number;\n photos: SaveBabyPagePhoto[];\n photosRightSide: SaveBabyPagePhoto[];\n answers: QuestionAnswer[];\n borderSelected?: Border;\n illustrationSelected?: Illustration;\n backgroundSelected?: Background;\n font: string;\n textAlign: \"start\" | \"center\" | \"end\";\n layout: Layout;\n layoutRightSide: Layout;\n somethingChanged: boolean;\n thumbnail?: string;\n thumbnailRightSide?: string;\n thumbnail_content?: string;\n label_url?: string;\n label_url_file?: string;\n label_left_text?: string | null;\n label_left_position?: string;\n label_right_text?: string | null;\n label_right_position?: string;\n labelStatePositionLeft?: {\n display?: string;\n justifyContent?: string;\n alignItems?: string;\n }\n labelStatePositionRight?: {\n display?: string;\n justifyContent?: string;\n alignItems?: string;\n }\n placeholder?: string | ArrayBuffer;\n isEdit?: boolean | undefined;\n hasMissing?: boolean | undefined;\n title?: string | undefined;\n subTitle?: string | undefined;\n milestoneId?: string | undefined;\n};\n\nexport const initialBabyPage: SaveBabyPage = {\n photos: [\n {\n base64_cropped: \"\",\n },\n ],\n photosRightSide: [\n {\n base64_cropped: '',\n },\n ],\n answers: [],\n layout: 'layout1A',\n layoutRightSide: 'layout1A',\n font: 'Montserrat-Regular',\n textAlign: 'center',\n somethingChanged: false,\n};\n\nexport interface Photo {\n id: number;\n photo: string;\n}\n","module.exports = __webpack_public_path__ + \"static/media/logo.1960c4ff.svg\";","module.exports = __webpack_public_path__ + \"static/media/working.50f43f7e.png\";","module.exports = __webpack_public_path__ + \"static/media/homeMessage.b592f6af.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABHCAMAAACTZfGgAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAA/UExURUdwTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALoT4l0AAAAUdFJOUwDd6x0QVDtmnsgsuferB19IdYiSchodoQAAAjNJREFUWMPtmNlyqzAMhm153/Hy/s9ayaQt6TIByrk66MKDJ+hDlvzLEDbOm2RbuxBkzRmz30GGnTF1g27QDbpBN+gGnQb53vMloG/2E0gYU+gQLEpsY2jJcXUIxJaIJ7J1OGwdF5wvx0CMjxGZRMewDfQECMaA6djmokotYgVpuSyZiUImdCm7QHY4g5VRfHSc6wkKuGgucqJL6bYB/gqKmCJInrE4OAtjVOYpZ5Q+ywSOLkf7cmn0XNbQESQr1X+CPEv0E0aLUJztAmVYs7u0AJ+gPkF0zdPrZI95N6fsYjTgHd2mJ8iuFUhz8gpEhY+CHC2lmCuMMBmaKwHDkcj089b4GeTDaqlpxjJG1EwEKzSvCYC3VawOgz2otXdxyo1KBauBXSBaO6pbrgCFEQM7AtJpmu3VP1fDlHwINEseFfWBcqIffVE8TBxcAaJx4Fq8aa1Q9XN1nKfWMeHach7KTtAyOxPub7cqDTfR8AY3Ke4C3KSaIC9ApCkQ6OemXBc9P2byY72OBsBWijXcAYrJNoUL013N2CQpLcpKQkblOSF35Miv8n2ss8w+jn4Ckk1d04YakPeW/x2E0u1lgjxgz+sVQZ2y57PSu0D540RYAnUAreP66eekgHnRX0VUeUSDME8lTDY0dEwS+Y5DpCSJzrnVB7Wm0UFqTJGGUb3QNZo/ijY9vmrtX9WvqQnHoC54iRBesCv60XHR/h4SHd33O+QN+h9A3J0x/s/+Y7Pn7Um0bygSR+S9sv4CAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/book-mockup-store.7545c4a3.png\";","module.exports = __webpack_public_path__ + \"static/media/bees-illustration.95b5f28b.png\";","module.exports = __webpack_public_path__ + \"static/media/bees-illustration-2.22444d55.png\";","module.exports = __webpack_public_path__ + \"static/media/camera-illustration.ca6b017d.png\";","module.exports = __webpack_public_path__ + \"static/media/fireworks-illustration.b81b95bb.png\";","module.exports = __webpack_public_path__ + \"static/media/safetypins-illustration.caf4d3c3.png\";","module.exports = __webpack_public_path__ + \"static/media/three-stars-illustration.9b08ff7c.png\";","module.exports = __webpack_public_path__ + \"static/media/Step1.51dfd9f5.png\";","module.exports = __webpack_public_path__ + \"static/media/Step2.dc4e91d6.png\";","module.exports = __webpack_public_path__ + \"static/media/Step3.77010296.png\";","module.exports = __webpack_public_path__ + \"static/media/Step4.ef8cd9a7.png\";","module.exports = __webpack_public_path__ + \"static/media/Step5.d56a2f66.png\";","module.exports = __webpack_public_path__ + \"static/media/Step6.f0180eae.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAiCAMAAAB/VplGAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAA2UExURUdwTKXN3MDm/6XM3KXM3KbO3qnQ4abM3qXM26XM3LDa5KfN36XM3KXN3aXM3KTM3KXM3KTL25+2/jAAAAARdFJOUwB5BO7TPRlG+ZsLL4llveCriUrriAAAAMlJREFUOMuVk1ESgyAMBSFAUAEx979sxQIKBjrdL8edqLw8hfgbVFrCWHsi2reR3dSpSY+8pAs5GyaKvA6UQc5CLFrjbPj8ekbrW5N5Wfuw5F96f+qjt4Z67dVy01iKKIAmyF+6OUmPPTOOs2EhjtlwXeCb5QodRzpnPnq6KdVj7VqidJzfgd9TDvS2kKJ55p2uQy1fOpoENBmHKSrlttp60vBuhQq1XN62fDfhun50hPnGZH41HWuLLjtBzXUSY6kiOOuYX82kux/z+iS36Y6ewwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAfCAMAAAC8lk/5AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTLCwsLCwsLCwsLW1ta+vr7KysrCwsLa2trGxsbCwsLCwsLCwsLCwsLOzs7Gxsa+vryf0DgEAAAAQdFJOUwDg+tUX7jSeDESyacKIJVN+wMWNAAAA+UlEQVQ4y5VT2ZaFIAxjqZSd/v/XDohXO9eKM3kheGJ7aFKlLrTELqo4JcFl2mWQ0Y8TaZ6/0QzR+Bw2IlsHIdJVUlGpLdMODDXSXRcMibDAVX6jB0QuQ3pEYI98VpH+UzFeblvJ8HzmSkXbHDLgslgfShmqF1GH6VMpV/VUHQq8wyl78ZARjr+CiyfvSCp/aIZuWITJhy0Hn7LzFz2amHm1jM+m3r4+YTfWl7XQ5CPU3ryV+penLCFxOKdBTAgrp32fUGIuNyZjjqEPDqycXr4LFlkW7NcOJjm68gZ+R6gKW3+bsrT1o7HmohzUExrqT2KdWsJ7gHuzH6VNLY/INR3ZAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAiCAMAAACUYSJFAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAA8UExURUdwTP+wpv+wpv+wpv+yqP+wpv+wpv+3qv+wpv+wpv+wpv+6s/+wpv+wp/+zqf+xp/+wpv+wpv+wqP+vpQ7yfoEAAAATdFJOUwCVZ9YtV6gTtvrFCXmIHkvk7z8U7xjCAAAA8ElEQVQoz41TSbLFIAjEGYckJtz/rl/9LlAT6/VCq+hqaAEBfoTJXgCcwaMbCW3RnJ6IJIRyioF0dwklavF6hip4zs5eNWS5NqpyHT1xZdOlcip1rRIRZI1Qqa+Vx8NTiLzW0VgN0HKcGnSyGFCYZvhfWyrXC8Eo6vBWd58IXYvEUQo7I69mCbMNNGIwIWiGZc3wC1vtdsiVLG35Tkxkdqx3U2MGJDbYhUTYeM7D+Kdm+GeYfvpsxUvqZ1o4OySOE/tw9l62VW3Z4cluK7624rT+E/x8b8V5v3YZ+IeYJs8g31aOqXPL6z5+cDRH0jzwB9j3Igl73kAdAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAiBAMAAAAnq33PAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAwUExURUdwTLjkypzBrZ3BrZ3ArZ3BrZ7CrqTKtZ7Br53CsJ3BraHDsZ3BrZ3CrZ3BrZzArGlreo4AAAAPdFJOUwAF4POecVEQPTK1JNCLxAtwkb4AAAD9SURBVCjPY2DADrbYFICoZFUBmAiH/f+FQIobQoFB8///X4Dym/7//wdVxq7/////Y4V77YHUBYgQy38E+AERykcS+iQA1wcHYJ1cyCL/v4GE4lGEPm9gYOD8jwoeMjAIQZlWUPovwr5AmC0CDFVQMwqgZprCjDfNZuAIATtsAsjTIB3qQAYbSMgd7PoaIOsfMHSSgfRXJD8CXQ3y9k8koQAGBn00ocaUDevRhNb8/4KuCgpwC7EhBdhyaHSI2sNEXsDjcR9U5Cs8HhkY10OEEpCiWwaiCDkFcICFDqKkivfo+iBh+0kARQjkXAvU5MR4//+nBrQkxj5jI4wJAIEnMDRivmWSAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAiCAMAAADmrkDzAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAA5UExURUdwTOd6eul8fOd6euh7e/+Tk+d5ee6EhOp8fOd9feh6eud6eud5eed6euh7e+d6eud5eed6euZ5eeJCENQAAAASdFJOUwCYIu5PBeMORDKGp7luYPnK1RUC2mwAAAD5SURBVDjLvZPbDoQgDES5lRYUUf//Y1cLXtCSbPZh56WBnBSYDkopQEmgDuG4yhqxEnHtSX9NmNwjTCWmbo9UCd0lhkpQ9xQ6nmtckOSCuhwhQeouI5xgfyP8vbQE8t6C/KgFCtcQimcXYWCboKxaImjvI/kQ5zmRddpuK7gDYLWbtgZc8pq3ojM2hGTofwjTWhZoGmwnpSXLo04Gkm8Z72ft7q6PAQchRXi5vqdOSPXM1h3toxK6TDtx7jvw74/FUT0vB+/klymfTRLYJ7GwZWjPlq/PUXNAFckqPYB8RN4sdRxOekoxNnIbQ+01XTNASjEiuktkdrs+bAsxRK9x4jkAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAiCAMAAACUYSJFAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAA/UExURUdwTP/Rif/RiP/QiP/PiP/TjP/QiP/QiP/Yj//QiP/Sif/QiP/Rif/QiP/QiP/QiP/QiP/SiP/Qh//QiP/PhwhzR+wAAAAUdFJOUwBYaOb6HbB1DIwx0j7EfvGiSpbbTVRxRAAAAPZJREFUKM+Nk9sOhCAMRMsdEQSE///WtYguLjXZeSHxxDJDW4B/ZT3fQ6za/n53bNGidqURMV1kHRUHuNdJ6ltUzpR96QzrBkwIEfyBxUw1ODzkcYOeqej3cYCtUrZWPAxAJmiG1KkibZlOIVK2/EXDTMsZFOlClLZQOmUE9S0oUkdQ04IipWylFrRRwtbagpqXHkqL798oJy52aKtRyhZHW+ZtAHYM2ujZkKcC2jppImwByE45+ZaxU09Vtte/8+QFhR0+6Wgrhp37Y1dcvGnGTHJNJvdBV1usNwXFmbt3zaRydWqUypsu5E7APNnrY1UtW0ZxCx/3vjLbRJ3aGwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAIhJREFUaAXt1jsOgCAQBUD1Btz/kBxBa1ZMCAUfM3YSiY+h2HccHgIECBAgQIBAt8AZd6aU7ri20nvOuch8rRSuJ4sD9KjZQ4AAAQLLCBRj+SvVrHoRa0Mtn0lcUxm5tv0NjMTyLwIECPxQ4FUlZtWGVttYL7YfZA7QevW+I0CAAAECBAgsKPAA6hgMFnOkPrgAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAIRJREFUaAXt1jEKwCAMAMC2P/D/j/QJLR11CgFppOemGImXITkOiwABAgQIECCQFjjnyNbaPZ9V2vfeh5yvSsllcvGBjJoYAgQIECgjMLTlN6uvRol5RIgK6cRRqVX3tq/AKhjvEiBA4CcCy0eJ7IgQ9d++kflAtNTuESBAgAABAgQKCjwalgwW02fgZQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAINJREFUaAXt1sENgCAMBVB0A/YfkhH0DCcgplbzuEFKKI8DvxSDAAECBAgQILAtcIw7a63XuJZp3lrrej4zNbfTiwvsqNlDgAABAmkEum95pau3IocosfJKEbWfz0IRSM4gQIDAjwW2o8SsydORQ5SYlY+qEyWipJ1DgAABAgQIZBS4ATp4DBa8YsPZAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/bleedtestline.8e0b7c22.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRFAAAAAAAApWe5zwAAAAJ0Uk5T/wDltzBKAAAAG0lEQVR4nGNggID6/0Dwb5RCUA8YGNhJoSAAAGfB5iwhSF1SAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRFAAAAAAAApWe5zwAAAAJ0Uk5T/wDltzBKAAAAGUlEQVR4nGNggID6/0Dwb5SCU0BgTyoFBAAoZuUUyc0r1gAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRFAAAAAAAApWe5zwAAAAJ0Uk5T/wDltzBKAAAAGklEQVR4nGNggID6/0Dwb5RCov5AwoVYCgIAkRLmxlbO8JYAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRFAAAAAAAApWe5zwAAAAJ0Uk5T/wDltzBKAAAAG0lEQVR4nGNggID6BwwM7P9Iof4DwSiFoCAAAGSl5izG5T56AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRFAAAAAAAApWe5zwAAAAJ0Uk5T/wDltzBKAAAAGUlEQVR4nGNggAP7//9IoOr/A8EohaAgAAD6lOUUmccVrAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRFAAAAAAAApWe5zwAAAAJ0Uk5T/wDltzBKAAAAGElEQVR4nGNggID6/39IpYDg3ygFpyAAADI/5sZ+iH4eAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/crybaby.153929f3.jpg\";","module.exports = __webpack_public_path__ + \"static/media/giftcard-newmom.441b82ff.jpg\";","module.exports = __webpack_public_path__ + \"static/media/giftcard-newmom-mobile.619af7e1.png\";","module.exports = __webpack_public_path__ + \"static/media/giftcard-babyshower.6df71506.jpg\";","module.exports = __webpack_public_path__ + \"static/media/giftcard-babyshower-mobile.bee01801.png\";","module.exports = __webpack_public_path__ + \"static/media/giftcard-holiday.6849c582.jpg\";","module.exports = __webpack_public_path__ + \"static/media/giftcard-holiday-mobile.602254f4.png\";","module.exports = __webpack_public_path__ + \"static/media/ios-app-popup.d6cf56a2.jpg\";","module.exports = __webpack_public_path__ + \"static/media/chandelier.0a693ead.png\";"],"sourceRoot":""}