{"version":3,"sources":["common/utils/token.ts","common/Client/ApiError.ts","common/Client/backendClient.ts","common/UserContext/CognitoUserPool.ts","common/UserContext/User.ts","common/UserContext/UserContext.tsx","common/Theme/createUseClasses.ts","common/Page/MainContainer.tsx","common/Title/Title.tsx","common/ConfigurationsContext/Configuration.ts","Stores/StoreSettings/flowRules.ts","Stores/StoreSettings/flowRulesReducer.ts","Stores/StoreSettings/flowRulesReducerInitialStateNew.ts","common/utils/localStorage.ts","Stores/StoreSettings/FAQs.ts","Stores/StoreSettings/FAQsReducer.ts","common/ConfigurationsContext/configurationsReducer.ts","common/ConfigurationsContext/backendToDashboardTransformer.ts","common/Client/BackendResponse.ts","common/ConfigurationsContext/dashboardToBackendTransformer.ts","common/ConfigurationsContext/configurationsApi.ts","common/ConfigurationsContext/ConfigurationsContext.tsx","common/SVG/sidebar-background.svg","common/SVG/log-out.svg","common/SVG/placeholderImg.svg","common/SVG/sidenav-logo.svg","common/Icons/AIIcon.tsx","common/Navigation/Navigation.tsx","common/Page/FullPageHeightGrid.tsx","common/SVG/handwave.svg","Stores/Dashboard/Welcome.tsx","common/Page/TopContainer.tsx","common/ConfirmBox/StoreDeleteConfirmBox.tsx","common/Page/Page.tsx","Stores/Store.tsx","Stores/Dashboard/Dashboard.tsx","common/CenteringContainer/CenteringContainer.tsx","common/SVG/Component/LogoUpsyShoppingHelper.tsx","common/GoldenRatioishPage/GoldenRatioishPage.tsx","common/Loader/Loader.tsx","common/SVG/upsy-background.svg","common/AuthWrapper/AuthWrapper.tsx","Lobby/Lobby.tsx","common/utils/var.ts","common/utils/validation.ts","common/StyledLabel/StyledLabel.tsx","common/LoginCredentials/LoginCredentials.tsx","Login/Login.tsx","Register/Register.tsx","Register/ConfirmEmail.tsx","ForgotPassword/ForgotPassword.tsx","Account/Account.tsx","Stores/Stores.tsx","Stores/Metrics/dateUtils.ts","Stores/Metrics/quicksight.ts","Stores/Metrics/dateFilterShortcuts.ts","Stores/Metrics/Metrics.tsx","404/NotFound.tsx","PasswordResetRequired/PasswordResetRequired.tsx","common/Tooltip/Tooltip.tsx","common/CustomUiComponent/TextField.tsx","common/CustomUiComponent/DropDownIcon.tsx","common/CustomUiComponent/Select.tsx","Stores/StoreIntegration/WooCommerceSpecificConfiguration.tsx","Stores/StoreIntegration/CommonBackendConfiguration.tsx","Stores/StoreIntegration/ConfigurationSummary.tsx","Stores/StoreIntegration/IntegrationWizardPage.ts","common/LoadingButton/LoadingButton.tsx","Stores/StoreIntegration/ConfigurationSuccess.tsx","common/CustomeStepper/index.tsx","Stores/StoreIntegration/IntegrationWizard.tsx","Stores/StoreIntegration/StoreIntegration.tsx","Stores/StoreSettings/types/widgetPreview.ts","Stores/StoreSettings/UpsyPreview.tsx","Stores/StoreSettings/ImageUpload.tsx","common/ImageUploader/ImageUpload.tsx","Stores/StoreSettings/CommonFrontendConfiguration.tsx","Stores/StoreSettings/useWidgetContextAndScreenByTabIndex.ts","Configs/language.tsx","Stores/StoreSettings/SettingsSummary.tsx","Stores/StoreSettings/SettingsWizardPage.ts","Stores/StoreSettings/SettingsSuccess.tsx","common/CustomUiComponent/CustomButton.tsx","common/SVG/uploadIcon.svg","common/FileUploadWidget/FileUploadWidget.tsx","common/utils/file.ts","common/Hooks/usePagination.tsx","common/SVG/editIcon.svg","common/SVG/trashIcon.svg","common/SVG/pinIcon.svg","common/SVG/unPinIcon.svg","Stores/StoreSettings/CommonFrontendFAQs.tsx","Stores/StoreSettings/CategoryForm.tsx","common/ImageUploader/InlineImageUpload.tsx","Stores/StoreSettings/Categories.tsx","Stores/StoreSettings/CommonFrontendCategories.tsx","Stores/StoreSettings/PromotionsConfiguration.tsx","Stores/PageIndexProvider.tsx","Stores/StoreSettings/GreetingTab/style.ts","Stores/StoreSettings/GreetingTab/ButtonGroup.tsx","Stores/StoreSettings/GrettingLangContext.tsx","Stores/StoreSettings/GreetingTab/HomePage.tsx","Stores/StoreSettings/GreetingTab/useHelper.tsx","Stores/StoreSettings/GreetingTab/Category.tsx","Stores/StoreSettings/GreetingTab/NewArrival.tsx","Stores/StoreSettings/GreetingTab/DailyDeal.tsx","Stores/StoreSettings/GreetingTab/LineBreak.tsx","Stores/StoreSettings/GreetingTab/Faq.tsx","Stores/StoreSettings/GreetingTab/UpSell.tsx","Stores/StoreSettings/GreetingTab/CrossSell.tsx","Stores/StoreSettings/GreetingTab.tsx","Stores/StoreSettings/CommonFrontendGreeting.tsx","Stores/StoreSettings/SettingsWizard.tsx","Stores/StoreSettings/StoreSettings.tsx","Stores/AbTest/quicksight.ts","Stores/AbTest/ab-test.service.ts","Stores/AbTest/index.tsx","common/Hooks/useStateWithValidation.ts","Stores/AI/ProductDescription/product-description-generator.service.ts","Stores/AI/Hooks/useProductDescriptionChat.tsx","common/Icons/CopyIcon.tsx","Stores/AI/ProductDescription/Components/ChatCard.tsx","Stores/AI/Context/productDescriptionGenerate.tsx","Stores/AI/Hooks/useProductDescriptionGeneratorChildComponent.tsx","Stores/AI/ProductDescription/Components/DividerWithContent.tsx","Stores/AI/ProductDescription/ConstentAndInfoScreen.tsx","Stores/AI/ProductDescription/DescriptionGenerator.tsx","Stores/AI/ProductDescription/DescriptionHistory.tsx","Stores/AI/ProductDescription/index.tsx","AppRoutes.tsx","common/Theme/Theme.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["getAwsTokenFromLocalStorage","keys","Object","localStorage","i","length","tokenValue","includes","getItem","getAwsRefreshTokenFromLocalStorage","generateNewAccessToken","a","fetch","process","headers","mode","cache","method","body","JSON","stringify","ClientId","AuthFlow","AuthParameters","REFRESH_TOKEN","response","json","data","setItem","AuthenticationResult","IdToken","console","log","ApiError","message","isObject","jsonBody","name","undefined","Error","totalTry","backendClient","axios","create","baseURL","backendImageUploadClient","interceptors","use","error","originalRequest","config","status","newToken","Authorization","Promise","reject","addAuthParameters","user","encodeURIComponent","email","secretKey","callBackend","axiosResponse","errorHandler","createUser","post","errData","getUser","get","saveShopConfiguration","operationType","fetchShopConfigurations","testShopConfiguration","shopConfiguration","getQuickSightEmbedUrl","deleteStore","storeId","delete","createAwsLambdaApiClient","client","defaults","request","getCognitoUserSession","cognitoUserSession","token","getAccessToken","getJwtToken","abTestClient","llmClient","userPool","CognitoUserPool","UserPoolId","addRoleToUser","getUserFromDB","dbUser","role","CognitoUser","Username","Pool","register","fullName","password","confirmEmail","confirmationCode","resolve","confirmRegistration","result","resendConfirmationCode","logIn","authDetails","AuthenticationDetails","Password","authenticateUser","onSuccess","session","userConfirmationNecessary","getCurrentUser","hasValidSession","getAttribute","verified","onFailure","code","forgotPassword","currentUser","getUserEmail","getSession","isValid","getPasswordRecoveryCode","recoverPassword","newPassword","confirmPassword","getUserAttributes","attributes","emailAttribute","find","attribute","getName","getValue","attributeName","userAttributes","userAttribute","UserRole","LoadingContext","createContext","UserContext","SetUserContext","UserContextProvider","children","useState","loading","setLoading","setUser","useEffect","then","Provider","value","useUserContext","useContext","loggedInUser","registeredUser","logOut","signOut","isAdmin","createUseClasses","styles","makeStyles","theme","createStyles","MainContainer","style","props","classes","useClasses","Grid","className","container","margin","padding","TitleVariant","backgroundColor","boxShadow","borderRadius","Title","variant","Secondary","SecondaryTitle","PrimaryTitle","Typography","title","Hidden","mdUp","smDown","Platform","breakpoints","down","fontSize","lineHeight","newConfigurationId","OperationMode","OperationModeFE","defaultPlatform","WooCommerce","Language","DisplayLanguage","defaultOperationMode","Test","defaultOperationModeFE","Production","AuthorizationStrategy","WooCommerceApiVersion","WooCommerceVersion","defaultLanguage","Finnish","ActivePromotion","wooCommerceVersionPairs","wooCommerceVersion","v26X","apiVersion","v1","v30X","v2","v35X","v3","getWooCommerceVersion","pair","PopupOptionType","FlowRuleType","defaultAvatar","defaultButtonColor","defaultAccentColorLight","defaultGreeting","homePage","textInBubble","category","upperText","newArrival","dailyDeal","faq","feedback","positiveFeedback","negativeFeedback","thankYouText","upSell","crossSell","createDefaultFlowRuleUI","trigger","type","ClassSelector","buttons","initial","createDefaultFlowRuleUIInitialButton","expanded","createDefaultFlowRuleUIButton","addToCart","text","FlowRulesActionType","categoriesUIPopupOption","flowRulesReducerInitialStateNew","Url","isPurchase","searchResults","relevantProducts","productFaq","UpsySelector","flowRulesReducer","state","action","SetTriggerType","map","rule","index","triggerType","SetTriggerValue","SetPopupText","SetButtonType","button","buttonIndex","buttonType","url","SetButtonText","SetButtonUrl","EnablePurchase","newRule","enabled","AddButton","RemoveButton","filter","AddRule","RemoveRule","Init","writeToLocalStorageDebounced","callback","timer","timeout","args","clearTimeout","setTimeout","debounce","key","FAQType","FAQsActionType","createDefaultFAQ","question","answer","Text","UpdateFAQWithPayload","oldIndex","newIndex","setFaqPined","isPined","SetFaqPined","removeFaqs","mapIndexToFaqDelete","copyState","splice","deleteFrom","deleteCount","faqReRank","questionRemoved","slice","questionReplaced","FAQsReducer","FAQ","isPinded","newState","SetQuestionText","SetAnswerText","SetFAQType","SetFAQRank","AddFAQ","originalIndex","AddFAQWithPayload","RemoveFAQ","SetBulkFAQ","faqs","removeBulkFAQ","mapIndexForFaqDelete","ConfigurationActionType","configurationsInitialState","newConfigurationInitialState","id","platform","operationMode","language","setAllConfigurations","configurations","tempNewConfigurationString","localStorageKeyTempNewConfiguration","SetAll","parse","localStorageConfigurationsReducer","configurationsReducer","newConfigurationIndex","findIndex","setAllConfigurationsReducer","SetCommonBackendConfiguration","commonBackendConfigurationReducer","SetCommonFrontendConfiguration","commonFrontendConfigurationReducer","SetCommonFrontendFlowRules","commonFrontendFlowRulesReducer","SetCommonFrontendFAQs","commonFrontendFAQsReducer","SetWooCommerceSpecificConfiguration","wooCommerceSpecificConfigurationReducer","ClearTemp","clearTempConfigurationReducer","configuration","commonBackendConfiguration","commonFrontendConfiguration","flows","flowRulesAction","customQnA","FAQsAction","wooCommerceSpecificConfiguration","_action","UpsertShopConfigurationOperationType","wooCommerceApiVersionRegex","parseWooCommerceApiVersion","path","match","exec","transformCommonProperties","backendConfiguration","storeName","tenantId","storeNameFormatted","replace","split","letter","toLocaleUpperCase","join","storeUrl","urlBase","transformCommonFrontendProperties","frontendConfiguration","testMode","avatar","buttonColor","customerCategories","widgetToLeft","minimizedMode","accentColorLight","newArrivalTimeLimit","isNewArrivalTabDisabled","isDailyDealsDisabled","activePromotion","greetings","activeExperimentId","experiments","qna","dashboardTransformationByType","transform","productUrlPath","authStrategy","consumerKey","secret","consumerSecret","woocommerceLanguage","backendTransformationByType","woocommerce","commonConfiguration","categoryUrlPath","default","saveConfiguration","configurationToSave","transformationSpec","toLowerCase","New","Update","defaultTransformationSpec","loadConfigurations","shopConfigurations","sc","spec","toUpperCase","ConfigurationsLoadingContext","ConfigurationSaveContext","ConfigurationsRefreshContext","ConfigurationDeleteContext","ConfigurationErrorContext","ConfigurationsStateContext","ConfigurationsDispatchContext","ConfigurationsContextProvider","useReducer","dispatch","configurationError","setConfigurationError","useConfigurations","useConfigurationTester","testingConfiguration","setTestingConfiguration","testingError","setTestingError","testBackendShopConfiguration","successCallback","useCommonBackendConfigurationValidator","commonBackendConfigurationValidationError","setCommonBackendConfigurationValidationError","validateCommonBackendConfiguration","urlString","test","URL","protocol","_","isValidURL","useConfiguration","deleteConfiguration","setCommonBackendConfiguration","setCommonFrontendConfiguration","dispatchFlowRulesAction","setCommonFrontendFlowRules","dispatchFAQsAction","setCommonFrontendFAQs","setWooCommerceSpecificConfiguration","clearTempConfiguration","_extends","assign","target","arguments","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","width","height","fill","patternContentUnits","xlinkHref","SvgSidenavLogo","_ref","svgRef","titleId","viewBox","xmlns","xmlnsXlink","ref","ForwardRef","AIIcon","createSvgIcon","strokeWidth","stroke","d","UpsyNavLink","React","to","activeProps","isActive","activeClassName","getPublicFile","DesktopNavigation","onOpenDeleteConfirm","useDesktopClasses","useParams","listContainer","customScrollbar","List","topListItemWrapper","ListItem","logo","flex","backgroundImage","palceholderBgImage","item","xs","direction","userName","color","middleListItemWrapper","component","end","DynamicRoutePath","StoreIntegration","active","ListItemIcon","Add","ListItemText","primary","StaticRoutePath","Stores","alt","src","StoreSettings","StoreMetrics","abTest","generateAiProductDescription","onClick","bottomListItemWrapper","logOutIcon","StoreWithAccount","Account","MobileNavigation","useMobileClasses","AppBar","Toolbar","justify","alignItems","IconButton","brighter","edge","nested","paddingLeft","spacing","justifyContent","marginTop","paddingBottom","display","marginRight","backgroundRepeat","backgroundSize","flexGrow","flexShrink","background","palette","position","left","content","borderBottom","paddingTop","marginBottom","secondary","flexDirection","sidebarBgImg","overflowY","fontWeight","letterSpacing","appBarItem","paper","marginLeft","FullPageHeightGrid","styled","SvgHandwave","WelcomeScreen","useStyles","gridContainer","welcomeTypography","userStyles","welcomeEmoji","TopContainer","StoreDeleteConfirmBox","isOpen","updateIsOpen","onDelete","errorMessage","hasError","setHasError","Boolean","handleCloseBtn","handleClose","Dialog","open","onClose","onBackdropClick","aria-labelledby","aria-describedby","DialogTitle","DialogContent","DialogContentText","gutterBottom","DialogActions","Button","endIcon","CircularProgress","size","autoFocus","Page","internalNavigation","isStoreDeleteDialogOpen","setIsStoreDeleteDialogOpen","isDeleteLoading","setIsDeleteLoading","deleteErrorMessage","setDeleteErrorMessage","navigate","useNavigate","handleOpenDeleteConfirmBox","storeDeleteHandler","md","lg","navigationContainer","pageHeaderAndContent","Box","noMarginTop","pageContent","maxHeight","Store","tabs","tab","Dashboard","href","CenteringContainer","Container","textAlign","LogoUpsyShoppingHelper","fillColor","version","x","y","filterUnits","stdDeviation","in","fillRule","GoldenRatioishPage","GradientBackgroundSupportContent","sm","logoContent","fullHeightContainer","only","minHeight","Loader","LinearProgress","m","AuthWrapper","innerWrapperHeight","GradientBackgroundContainer","wrapperContainerGrid","upsyBackgroundImg","backgroundOrigin","border","maxWidth","backdropFilter","Lobby","shouldShowConfirmEmailView","ConfirmEmail","fullWidth","Register","Login","emailReg","isValidEmail","StyledLabel","LoginCredentials","submitButtonTitle","onSubmit","beforeContent","setEmail","setPassword","showPassword","setShowPassword","showValidationErrors","setShowValidationErrors","submitError","setSubmitError","submitErrorApiError","setSubmitErrorApiError","showResetInstructions","setShowResetInstructions","isValidPassword","hasEmailError","hasPasswordError","TextField","placeholder","onChange","e","helperText","InputProps","endAdornment","InputAdornment","aria-label","Visibility","VisibilityOff","my","Divider","Link","textDecoration","RouterLink","ForgotPassword","mt","Root","setFullName","setConfirmationCode","codeResent","setCodeResent","success","setSuccess","inputProps","autoComplete","codeRequested","setCodeRequested","setCode","setNewPassword","passwordRecovered","setPasswordRecovered","root","label","readOnly","locationState","useLocation","locationStateSuccessMessage","setLocationStateSuccessMessage","selectedOperationMode","setSelectedOperationMode","filteredConfigurations","useMemo","filters","reduce","applyFilters","filterOutUnmodifiedNewConfiguration","searchInput","setSearchInput","delayInSeconds","searchQuery","setSearchQuery","timeoutId","trim","searchedConfiguratons","useDebounceSearchConfigurations","NoStoresDisclaimer","StoreDashboard","Collapse","Alert","severity","wordBreak","NativeSelect","SearchInput","onClear","StoreList","list","StoreListItem","storeListItem","divider","getHighlightedText","inputRef","input","focus","cursor","htmlColor","highlight","parts","RegExp","part","gap","flexWrap","getStartDateFilter","date","getBasicDateString","getEndDateFilter","getFullYear","getMonth","toString","padStart","getDate","daysBefore","days","Date","monthsBefore","months","yearsBefore","years","beginningOfMonth","beginningOfYear","previousMonday","weekday","getDay","getWeekday","mondayDateNumber","weekBefore","formatTenantId","noPrefix","charAt","parseParameters","parameters","dateRange","comparisonDateRange","datefrom","start","dateto","datefromcomparison","datetocomparison","customer","today","lastFullDay","dateFilterShortcuts","setFilter","startOfWeek","lastWeeksMonday","lastWeekToday","startOfMonth","startOfPreviousMonth","monthAgoToday","startOfYear","startOfPreviousYear","lastYearToday","startOfPreviousWeek","endOfPreviousWeek","sevenDaysAgo","weekBeforeSevenDaysAgo","fourteenDaysAgo","startOfPreviousFourteenDays","endOfPreviousFourteenDays","thirtyDaysAgo","startOfPreviousThirtyDays","endOfPreviousThirtyDays","Metrics","useMetricsClasses","dateFilters","dateRangeBaseDate","setDate","comparisonRangeBaseDate","dateRanges","setDateRanges","useDateFilters","quicksightParameters","iframeRef","useRef","loaded","setLoaded","setUrl","dashboard","setDashboard","current","embedDashboard","loadCallback","embedQuicksight","dependencyParameterString","setParameters","setQuicksightParameters","useEmbed","Filters","metricsContainer","loaderContainer","setStart","setEnd","comparisonStart","setComparisonStart","comparisonEnd","setComparisonEnd","useFilterClasses","setDateFilterDates","dates","startDate","endDate","comparisonStartDate","comparisonEndDate","dateFilterShortcutIndex","setDateFilterShortcutIndex","updateDateRangesFlag","setupdateDateRangesFlag","event","preventDefault","typographyLabelStyle","dateAndLevelStyle","labelStyle","Select","dropDownInputStyle","shortcut","MenuItem","submitButton","top","bottom","right","opacity","transition","pointerEvents","borderColor","columnGap","NotFound","h1","textMuted","link","btn","textTransform","PasswordResetRequired","disabled","HtmlTooltip","withStyles","arrow","tooltip","typography","pxToRem","fontWeightRegular","tooltipPlacementTop","tooltipPlacementBottom","Tooltip","CustomHtmlTooltip","TransitionComponent","Zoom","TransitionProps","placement","CustomTextField","labelText","labelFor","labelClassName","htmlFor","inputRoot","required","resize","multiline","paddingBlock","borderWidth","fontStyle","DropDownIcon","h","w","focusable","aria-hidden","CustomSelectField","dropDownIconColor","dropDownIconHeight","dropDownIconWidth","dropDownIconGapFromRight","rest","IconComponent","bind","selectRoot","WooCommerceSpecificConfiguration","setPageType","useWooCommerceSpecificConfigurationClasses","basic","getPartialWooCommerceSpecificConfiguration","subTitle","FormControl","defaultValue","displayEmpty","English","Swedish","German","Netherland","CommonBackendConfiguration","isWooCommerceSpecificConfiguration","useCommonBackendConfigurationClasses","getPartialCommonBackendConfiguration","maxLength","platformSpecificConfigurationWrapper","ConfigurationSummary","SummaryRow","SummaryLabelAndValue","IntegrationWizardCommonPageType","summaryRow","fullIntegrationWizardPages","CommonBackend","StoreSpecificBackend","Summary","Success","BasicIntegrationWizardPages","IntegrationWizardPagesByType","Liana","Magento","MyCashFlow","GoogleShoppingXML","Refox","Sotka","Shopify","LoadingButton","loadingText","buttonText","progress","buttonProps","spinner","ConfigurationSuccess","navigateURL","clearInterval","colorActive","mutedColor","whiteColor","useConfigurationStepperClasses","paddingInline","hideStepperProgressBar","minWidth","stepLabelContainerAlignment","CustomStepper","steps","activeStep","breakpointDirection","breakpoint","useTheme","matches","useMediaQuery","Stepper","orientation","Step","StepLabel","alternativeLabel","IntegrationWizard","IntegrationWizardPages","pageType","setSteps","prev","setActiveStep","IntegrationWizardPage","IntegrationWizardNavigation","useNavigationButtonsClasses","ignoreError","setIgnoreError","pageIndex","setPageIndex","isCommonBackendConfigPage","isShopConfigTestPage","isSummaryPage","isSuccessPage","moveToPage","MobileStepper","mobileStepper","buttonsContainer","backButton","nextButton","ProceedButton","alert","FormControlLabel","control","Checkbox","checked","maxIndex","isCommonBackendPage","next","useProceedButtonClasses","whiteSpace","activeWidgetScreenEnum","UpsyContextEnum","UpsyPreview","widgetScreen","widgetContext","parentRef","scriptLoaded","setScriptLoaded","widgetClicked","setWidgetClicked","upsyWidget","initialWidgetContext","initialWidgetScreen","setHeight","window","upsy_sdk","preview","widgetBranch","getWidgetScreen","getWidgetContext","setWidgetScreen","setWidgetContext","subscribeScreen","screen","WIDGETMINIFIED","FEEDBACK","WIDGETEXPANDED","updateConfig","widgetJsUrl","onLoad","UpsyPreviewContainer","usePreviewContainerClasses","ImageUpload","uploadImage","img","FormData","append","fileTypes","defaultAvatarName","ImageUploadWidget","setImageURLFunction","buttonLabelName","file","setFile","fileToUpload","setFileToUpload","trackFileUpload","setTrackFileUpload","handleImageUpload","reason","gridItemRoot","avatarContainer","typographyForLogoUploadTitle","typographyForLogoUploadRules","imageBoxContainer","handleChange","Blob","createObjectURL","types","imageContainer","imageTypo","imageLink","imageUploaderButton","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","fontFamily","buttonColorBox","borderStyle","up","CommonFrontendConfiguration","getPartialCommonFrontendConfiguration","imageURL","setImageURL","RadioGroup","radioGroupRootStyle","Radio","gridItemBreak","compact","onChangeComplete","hex","dropDownLabelStyle","widgetContextAndScreenEntries","GREETINGLG","CATEGORY","NEW_ARRIVAL","DAILY_DEALS","UP_SELL","CROSS_SELL","useWidgetContextAndScreenByTabIndex","context","setContext","setScreen","allowedLanguage","a11yProps","SettingsSummary","setValue","selectedLang","setSelectedLang","entries","entry","Tabs","newValue","tabsRootStyle","Tab","Fragment","previewText","SettingsWizardCommonPageType","fullSettingsWizardPages","CommonFrontend","CommonFrontendFAQs","Categories","Promotions","Greetings","SettingsWizardPagesByType","SettingsSuccess","CustomButton","forwardRef","clipRule","SvgUploadIcon","useClassesFileUploadWidget","uploadIcon","FileUploadWidget","fieldName","accept","multiple","startIcon","hidden","csvToArray","l","p","row","ret","r","s","usePagination","itemsPerPage","currentPage","setCurrentPage","maxPage","Math","ceil","startIndex","endIndex","getPaginatedData","nextPage","min","prevPage","max","jumpToPage","page","pageNumber","strokeLinecap","strokeLinejoin","SvgEditIcon","SvgTrashIcon","SvgPinIcon","SvgUnPinIcon","EnumFaqUploadTyped","allowedLanguageKeySwapWithValue","fromEntries","FaqLanguageContext","FaqLanguageProvider","lang","updateLang","useFaqLang","useFaqChange","faqState","setFaqState","setNewIndex","handleLangChange","handleFaqChange","locale","handleUndo","allowedUploadFileTypes","useFAQAddFormClasses","cancelBtn","useFaqListClasses","tableRoot","values","verticalAlign","useFaqsClasses","useEditableFaqItemClasses","faqIconContainer","labelLessInput","EditableFaqItem","allFaqs","actualIndex","onUpdate","onCancel","TableRow","TableCell","Number","indexValue","rowsMax","useFaqItemsClasses","pined","faqLabel","faqContent","marginBlock","FAQItem","currentListIndex","onEdit","onPin","FAQList","currentFaqs","itemPerPage","onPaginationChange","pinedFaqs","setPinedFaqs","editablePinedFaqIndex","setEditablePinedFaqIndex","editableFaqIndex","setEditableFaqIndex","pinedSnackbarOpen","setPinedSnackbarOpen","handlePin","handlePinedPin","handleDelete","removeFAQ","handlePinedItemCancelUpdate","handleCancelUpdate","handleUpdate","handlePinedItemUpdate","TableContainer","Table","TableHead","TableBody","Pagination","count","showFirstButton","showLastButton","FAQAddForm","faqLength","defaultFaq","setFaq","handleCancelFaqSave","Array","order","rows","LanguageSelector","useFAQs","faqUploadType","setFaqUploadType","BY_CSV_UPLOAD","align","BY_FILLING_FORM","CsvFAQUpload","isCsvLoading","setIsCsvLoading","fail","uploadMsg","setUploadMsg","useCsvFaqUploadClasses","ul","icon","alertIcon","fileListItem","ListItemAvatar","Avatar","reader","FileReader","onload","onerror","readAsText","readFileAsText","csvArr","defaultFAQ","faqKeys","csvObject","every","parseObject","faqType","push","csvToFaqs","str","arr","el","objArr","header","csvStringToObjectArray","addBulkFAQ","catch","uploadBtn","uploadFile","files","listItem","listStyleType","paddingRight","CategoryForm","categoryAvatarURL","setCategoryAvatarURL","categoryLength","defaultOrder","setOrder","useCategory","categoryName","categoryURL","resetLang","handleCategoryChange","categoryState","resetCategory","resetInputFields","categoryTitleStyle","categorySubTitleStyle","categoryInstructionStyle","categoryInstructionExampleStyle","buttonContainerStyle","cancelButtonStyle","oldCategory","categoryReplaced","now","isPinned","handleCategorySubmit","gridContainerRootStyle","InlineImageUploadWidget","handleFileChange","table","cellHeadStyle","tableRowRoot","categoryImage","iconContainer","tableCellStyle","categoryIdForEdit","setCategoryIdForEdit","Paper","isCurrentItemSelected","EditCategoryItem","onFinished","CategoryList","totalCategoriesLength","categoryIndex","onResetField","scope","oldCategories","updatedCategory","categoryRemoved","categoryPinnedStatus","categories","onPinChange","newCategories","CategoryLanguageContext","CategoryLanguageProvider","useCategoryLang","setCategoryState","CommonFrontendCategories","typographyForAvatarTitle","NewArrivalTimeLimit","initialState","currentPageIndex","nextBtnDisableForIndex","actionName","reducer","payload","PageIndexContext","PageIndexProvider","useCurrentPageIndex","updateCurrentPageIndex","currentPageUpdateAction","useNextButtonDisableIndex","updateNextBtnDisableForIndex","nextButtonDisableIndexAction","TabPanel","other","mapNewArrivalTimeLimit","Map","_14DAYS","_30DAYS","_90DAYS","_180DAYS","_365DAYS","activeTab","setActiveTab","textColor","indicatorColor","DailyDealsPanel","NewArrivalPanel","transitionOnOpacity","light","from","mapValue","buttonFormatting","formControllerText","gridTemplateColumns","defaultButtonStyle","lineBreakStyle","ButtonGroup","submithandler","defaultHandler","GreetingLanguageContext","useGreetingLang","HomePage","countCharacter","limit","errorMessageLabel","textInBubbleForm","setTextInBubbleForm","updatedData","defaultTextInBubble","Category","upperTextState","setUpperTextState","defaultUpperText","NewArrival","DailyDeal","LineBreak","Faq","Upsell","CrossSell","tabPannelStyle","GreetingTab","CommonFrontendGreeting","typographyForTitle","typographyForSubTitle","setLang","letterHeight","SettingsWizard","SettingsWizardPages","isSaveSucceed","setIsSaveSucceed","SettingsWizardPage","SettingsWizardNavigation","isNexButtonDisable","ConditionalButton","experimentId","params","embedParams","getAbTestQuickSightEmbedUrl","processErrorResponse","startAbTest","endAbTest","patch","requestStartAbTest","isAxiosError","errorResponse","errors","errorTitle","ABTestError","ABTest","configExperiments","isAdminUser","activeExperiment","experiment","getActiveExperiment","filteredExperiments","exp","endTs","sortedExperiments","sort","b","startTs","initialExperiment","setExperimentId","latestExperiment","useExperiment","selectedExperiment","minDate","formatDate","maxDate","updateStartDate","updateEndDate","updateStartAndEndDate","resetValidation","initialDateRange","startDateValidationError","endDateValidationError","dateRangeReducer","dateValidationError","useDateRange","isDrawerOpen","setIsDrawerOpen","handleDrawerClose","useAbTestConfigurationClasses","res","embedUrl","Drawer","anchor","dividerSmall","rowGap","AdminAction","MerchantAction","experimentName","wordSpacing","fill-opacity","cx","cy","rx","ry","isLoading","setIsLoading","setError","isSuccess","setIsSuccess","updateError","updateSuccess","toDateString","dialogOpen","setDialogOpen","refreshConfigurations","handleDialogClose","FormGroup","labelPlacement","Switch","isValidDate","dateTs","getTime","minDateTs","maxDateTs","isNaN","timestamp","year","month","String","day","useStateWithValidation","validate","setState","setErrors","isDirty","setIsDirty","setIsValid","validationErrors","isFormValid","dirty","update","prevState","llmProductDescriptionGenerate","promptType","useProductDescriptionChat","localStorageKey","useLocalStorage","setChats","chats","generate","withUpsy","apiKey","prompt","generateProductDescriptionPrompt","chat","chatId","description","formatProductDescriptionGenerateNetworkError","clearError","firstError","errorDebugDescription","CopyIcon","ChatCard","copyTimeoutHandlerRef","useCopyToClipboard","copyToClipboard","isCopied","setIsCopied","handleCopy","ChatCardSkeleton","Skeleton","animation","ProductDescriptionContext","ProductDescriptionProvider","componentType","updateComponentType","componentProps","useProductDescriptionGeneratorChildComponent","isWithUpsy","updateIsWithUpsy","useProductDescriptionContext","DividerWithContent","thickness","dividerColor","contentColor","dividerWithContent","marginInline","apiKeyValidationRules","trimedApiKey","useApiKey","updateApiKey","ConsentAndInfoScreen","apiKeyState","Star","descriptionGenerateFormvalidationRules","trimmedTitle","trimmedLanguage","trimmedAttributes","validateField","field","minLength","requiredMessage","lengthMessage","languages","DescriptionGenerator","lastChat","pop","ArrowBack","ArrowForward","FormHelperText","DescriptionHistory","filteredChats","reverseChat","reverse","childComponentsMap","ParentComponent","ComponentToRender","LLMProductDescritionGenerate","AppRoutes","element","PrivateRoute","Theme","ThemeProvider","CssBaseline","createMuiTheme","overrides","MuiButton","MuiFormControl","MuiLink","MuiTextField","MuiPaper","elevation1","main","h4","App","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.81bc99dd.chunk.js","sourcesContent":["export function getAwsTokenFromLocalStorage() {\n let keys = Object.keys(localStorage),\n i = keys.length,\n tokenValue = \"\";\n\n while (i--) {\n if (keys[i].includes(\"idToken\")) {\n tokenValue = keys[i];\n break;\n }\n }\n return localStorage.getItem(tokenValue);\n}\n\nfunction getAwsRefreshTokenFromLocalStorage() {\n let keys = Object.keys(localStorage),\n i = keys.length,\n tokenValue = \"\";\n\n while (i--) {\n if (keys[i].includes(\"refreshToken\")) {\n tokenValue = keys[i];\n break;\n }\n }\n return localStorage.getItem(tokenValue);\n}\n\nexport async function generateNewAccessToken() {\n try {\n const response = await fetch(`${process.env.REACT_APP_AWS_COGNITO_URL}`, {\n headers: {\n \"X-Amz-Target\": \"AWSCognitoIdentityProviderService.InitiateAuth\",\n \"Content-Type\": \"application/x-amz-json-1.1\",\n },\n mode: \"cors\",\n cache: \"no-cache\",\n method: \"POST\",\n body: JSON.stringify({\n ClientId: process.env.REACT_APP_COGNITO_CLIENT_ID,\n AuthFlow: \"REFRESH_TOKEN_AUTH\",\n AuthParameters: {\n REFRESH_TOKEN: getAwsRefreshTokenFromLocalStorage(),\n },\n }),\n });\n const data = await response.json();\n\n localStorage.setItem(\n \"CognitoIdentityServiceProvider.7r2h0qk48nvd2dk055sn4g4fc8.8686061b-8e7a-47bb-b814-1c24a7e39e62.idToken\",\n data.AuthenticationResult.IdToken\n );\n\n return data.AuthenticationResult.IdToken;\n } catch (error) {\n console.log(error);\n }\n}\n","class ApiError extends Error {\n jsonBody: Object | undefined;\n\n constructor(message: string | Object) {\n const isObject = typeof message === \"object\";\n super(isObject ? JSON.stringify(message) : \"Error\");\n this.name = \"ApiError\";\n this.jsonBody = isObject ? message : undefined;\n }\n}\n\nexport default ApiError;\n","import axios, { AxiosRequestConfig, AxiosResponse } from \"axios\";\nimport { IBackendConfiguration } from \"../ConfigurationsContext/Configuration\";\nimport { User } from \"../UserContext/User\";\nimport {\n generateNewAccessToken,\n getAwsTokenFromLocalStorage,\n} from \"../utils/token\";\nimport ApiError from \"./ApiError\";\nimport {\n CreateUserApiError,\n CreateUserRequest,\n FetchShopConfigurationsResponse,\n GetUserResponse,\n UpsertShopConfigurationOperationType,\n UpsertShopConfigurationRequest,\n} from \"./BackendResponse\";\nimport { getCognitoUserSession } from \"../UserContext/CognitoUserPool\";\nlet totalTry = 0;\nconst maxTryForGettingIdToken = 3;\n\nconst backendClient = axios.create({\n baseURL: process.env.REACT_APP_BACKEND_BASE_URL,\n headers: { \"Content-Type\": \"application/json\" },\n});\n\nexport const backendImageUploadClient = axios.create({\n baseURL: process.env.REACT_APP_AWS_API_BASE_URL,\n headers: {\n \"content-Type\": \"multipart/Form-data\",\n },\n});\n\nbackendImageUploadClient.interceptors.response.use(\n (response) => {\n totalTry = 0;\n return response;\n },\n async (error) => {\n const originalRequest = error.config;\n if (error.response.status === 401) {\n totalTry = totalTry + 1;\n if (totalTry <= maxTryForGettingIdToken) {\n const newToken = await generateNewAccessToken();\n error.config.headers.Authorization = newToken;\n return backendImageUploadClient(originalRequest);\n }\n }\n return Promise.reject(error);\n }\n);\n\nexport const addAuthParameters = (user: User) =>\n `user=${encodeURIComponent(\n user?.email || \"\"\n )}&customerSecretKey=${encodeURIComponent(user?.secretKey || \"\")}`;\n\nexport const callBackend = async (\n axiosResponse: Promise,\n errorHandler?: (errData: Object | string) => Error\n): Promise => {\n try {\n const response = await axiosResponse;\n return response && response.data;\n } catch (err) {\n if (err.response && err.response.data) {\n if (errorHandler) {\n errorHandler(err.response.data);\n } else {\n throw new Error(err.response.data);\n }\n }\n throw new Error(\"Unknown error\");\n }\n};\n\nexport const createUser = async (data: CreateUserRequest): Promise =>\n callBackend(\n backendClient.post(\"user/create\", data),\n (errData: CreateUserApiError | string) => {\n throw new ApiError(errData);\n }\n );\n\nexport const getUser = async (user: User): Promise =>\n callBackend(backendClient.get(`user?${addAuthParameters(user)}`));\n\nexport const saveShopConfiguration = async (\n operationType: UpsertShopConfigurationOperationType,\n user: User,\n data: UpsertShopConfigurationRequest\n): Promise =>\n callBackend(\n backendClient.post(\n `shop-configuration/upsert?${addAuthParameters(\n user\n )}&type=${operationType}`,\n data\n )\n );\n\nexport const fetchShopConfigurations = async (\n user: User\n): Promise> =>\n callBackend(\n backendClient.get(`shop-configuration/list?${addAuthParameters(user)}`)\n );\n\nexport const testShopConfiguration = async (\n user: User,\n shopConfiguration: IBackendConfiguration\n): Promise =>\n callBackend(\n backendClient.post(\n `shop-configuration/test?${addAuthParameters(user)}`,\n shopConfiguration\n )\n );\n\nexport const getQuickSightEmbedUrl = async (user: User): Promise =>\n callBackend(\n backendClient.get(`quicksight-embed-url?${addAuthParameters(user)}`)\n );\n\nexport const deleteStore = async (\n storeId: string,\n user: User\n): Promise => {\n return callBackend(\n backendClient.delete(\n `shop-configuration/delete?tenantId=${storeId}&${addAuthParameters(user)}`\n )\n );\n};\n\nconst createAwsLambdaApiClient = (headers?: AxiosRequestConfig[\"headers\"]) => {\n const client = axios.create({\n baseURL: process.env.REACT_APP_AWS_API_BASE_URL,\n headers: {\n ...axios.defaults.headers,\n ...(headers ? headers : {}),\n },\n });\n\n client.interceptors.request.use(async (request) => {\n const cognitoUserSession = await getCognitoUserSession();\n const token = cognitoUserSession\n ? cognitoUserSession.getAccessToken().getJwtToken()\n : \"\";\n request.headers.Authorization = `${token}`;\n return request;\n });\n\n return client;\n};\n\nexport const abTestClient = createAwsLambdaApiClient({\n \"Content-Type\": \"application/json\",\n});\nexport const llmClient = createAwsLambdaApiClient({\n \"Content-Type\": \"text/plain\",\n});\n","import {\n AuthenticationDetails,\n CognitoUser,\n CognitoUserAttribute,\n CognitoUserPool,\n CognitoUserSession,\n} from \"amazon-cognito-identity-js\";\n\nimport { User } from \"./User\";\nimport { createUser, getUser as getUserFromDB } from \"../Client/backendClient\";\n\nconst userPool = new CognitoUserPool({\n UserPoolId:\n process.env.REACT_APP_CONGNITO_USER_POOL_ID || \"mock_user_pool_id\",\n ClientId: process.env.REACT_APP_COGNITO_CLIENT_ID || \"mock_client_id\",\n});\n\nasync function addRoleToUser(\n user: NonNullable\n): Promise> {\n const dbUser = await getUserFromDB(user);\n return {\n ...user,\n role: dbUser ? dbUser.role : null,\n };\n}\n\nfunction getUser(email: string) {\n return new CognitoUser({\n Username: email,\n Pool: userPool,\n });\n}\n\nexport async function register(\n fullName: string,\n email: string,\n password: string\n): Promise {\n return await createUser({ fullName, email, password });\n}\n\nexport function confirmEmail(\n email: string,\n confirmationCode: string\n): Promise {\n return new Promise((resolve, reject) => {\n getUser(email).confirmRegistration(\n confirmationCode,\n true,\n (error, result) => {\n if (error) {\n reject(error);\n } else {\n resolve(result);\n // TODO: Create client secret (backend api call) and store it to the cognito user attributes\n }\n }\n );\n });\n}\n\nexport function resendConfirmationCode(email: string): Promise {\n return new Promise((resolve, reject) => {\n getUser(email).resendConfirmationCode((error, result) => {\n if (error) {\n reject(error);\n } else {\n resolve(result);\n }\n });\n });\n}\n\nexport function logIn(\n email: string,\n password: string\n): Promise<{ error: any; user: User }> {\n const authDetails = new AuthenticationDetails({\n Username: email,\n Password: password,\n });\n\n return new Promise((resolve, reject) => {\n getUser(email).authenticateUser(authDetails, {\n onSuccess: async (session, userConfirmationNecessary) => {\n const user = userPool.getCurrentUser();\n if (user && (await hasValidSession(user))) {\n resolve({\n error: null,\n user: await addRoleToUser({\n name: await getAttribute(user, \"name\"),\n email,\n verified: !userConfirmationNecessary,\n secretKey: await getAttribute(user, \"custom:userSecret\"),\n }),\n });\n } else {\n reject(\"logIn: Unexpected error\");\n }\n },\n onFailure: async (error) => {\n if (error.code === \"PasswordResetRequiredException\") {\n await getUser(email).forgotPassword({\n onSuccess: () => resolve({ error, user: null }),\n onFailure: reject,\n });\n } else {\n reject(error);\n }\n },\n });\n });\n}\n\nexport async function getCurrentUser(): Promise {\n try {\n const currentUser = userPool.getCurrentUser();\n if (currentUser && (await hasValidSession(currentUser))) {\n return await addRoleToUser({\n name: await getAttribute(currentUser, \"name\"),\n email: await getUserEmail(currentUser),\n verified: true,\n secretKey: await getAttribute(currentUser, \"custom:userSecret\"),\n });\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n}\n\nasync function hasValidSession(user: CognitoUser): Promise {\n return new Promise((resolve, reject) => {\n user.getSession((error: Error | null, session: CognitoUserSession) => {\n if (error) {\n reject(error);\n } else {\n resolve(session.isValid());\n }\n });\n });\n}\n\nexport function getPasswordRecoveryCode(email: string): Promise {\n return new Promise((resolve, reject) => {\n getUser(email).forgotPassword({\n onSuccess: () => resolve(true),\n onFailure: reject,\n });\n });\n}\n\nexport function recoverPassword(\n email: string,\n code: string,\n newPassword: string\n): Promise {\n return new Promise((resolve, reject) => {\n getUser(email).confirmPassword(code, newPassword, {\n onSuccess: () => resolve(true),\n onFailure: reject,\n });\n });\n}\n\nfunction getUserEmail(user: CognitoUser): Promise {\n return new Promise((resolve, reject) => {\n user.getUserAttributes((error, attributes) => {\n if (error) {\n reject(error);\n } else {\n const emailAttribute = (attributes as CognitoUserAttribute[]).find(\n (attribute) => attribute.getName() === \"email\"\n );\n if (!emailAttribute) {\n reject(\"getUserEmail: Unexpected error\");\n } else {\n resolve(emailAttribute.getValue());\n }\n }\n });\n });\n}\n\nexport function logOut() {\n userPool.getCurrentUser()?.signOut();\n}\n\nfunction getAttribute(\n user: CognitoUser,\n attributeName: string\n): Promise {\n return new Promise((resolve) => {\n user.getUserAttributes((error, userAttributes) => {\n resolve(\n userAttributes?.length\n ? userAttributes\n .find(\n (userAttribute) => userAttribute.getName() === attributeName\n )\n ?.getValue()\n : undefined\n );\n });\n });\n}\n\nexport async function getCognitoUserSession(): Promise {\n const user = userPool.getCurrentUser();\n if (!user) return null;\n return new Promise((resolve) => {\n user.getSession((error: Error | null, session: CognitoUserSession) => {\n if (error) resolve(null);\n resolve(session);\n });\n });\n}\n","export const UserRole = {\n admin: \"admin\",\n} as const;\n\nexport type UserRoleType = keyof typeof UserRole | null | undefined;\n\nexport type User = {\n name?: string;\n email: string;\n verified: boolean;\n secretKey?: string;\n role?: UserRoleType;\n} | null;\n","import * as React from \"react\";\nimport {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport {\n register,\n logIn,\n getCurrentUser,\n confirmEmail,\n resendConfirmationCode,\n getPasswordRecoveryCode,\n recoverPassword,\n logOut,\n} from \"./CognitoUserPool\";\nimport { User, UserRole } from \"./User\";\n\nconst LoadingContext = createContext(true);\nconst UserContext = createContext(null);\nconst SetUserContext = createContext<(user: User) => void>(() => {});\n\nexport function UserContextProvider({ children }: { children: ReactNode }) {\n const [loading, setLoading] = useState(true);\n const [user, setUser] = useState(null);\n\n useEffect(() => {\n getCurrentUser().then((currentUser) => {\n setUser(currentUser);\n setLoading(false);\n });\n }, []);\n\n return (\n \n \n \n {children}\n \n \n \n );\n}\n\nexport interface IUserContext {\n loading: boolean;\n user: User;\n logIn: (email: string, password: string) => Promise;\n register: (\n fullName: string,\n email: string,\n password: string\n ) => Promise;\n confirmEmail: (email: string, confirmationCode: string) => Promise;\n resendConfirmationCode: typeof resendConfirmationCode;\n getPasswordRecoveryCode: typeof getPasswordRecoveryCode;\n recoverPassword: typeof recoverPassword;\n logOut: () => void;\n}\n\nexport function useUserContext(): IUserContext {\n const setUser = useContext(SetUserContext);\n\n return {\n loading: useContext(LoadingContext),\n user: useContext(UserContext),\n logIn: async (email: string, password: string) => {\n const { user: loggedInUser } = await logIn(email, password);\n setUser(loggedInUser);\n },\n register: async (fullName: string, email: string, password: string) => {\n const registeredUser = await register(fullName, email, password);\n setUser(registeredUser);\n },\n confirmEmail: async (email: string, confirmationCode: string) => {\n await confirmEmail(email, confirmationCode);\n setUser(null);\n },\n resendConfirmationCode,\n getPasswordRecoveryCode,\n recoverPassword,\n logOut: () => {\n logOut();\n setUser(null);\n },\n };\n}\n\nexport function isAdmin(user: User) {\n return user && user.role == UserRole.admin ? true : false;\n}\n","import { createStyles, makeStyles, Theme } from \"@material-ui/core\";\nimport { StyleRules } from \"@material-ui/styles/withStyles\";\n\nexport function createUseClasses(styles: (theme: Theme) => StyleRules) {\n return makeStyles((theme: Theme) => createStyles(styles(theme)));\n}\n","import React from \"react\";\nimport { Grid } from \"@material-ui/core\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\n\nimport type { ReactElementPropsType } from \"../ElementProps\";\n\nexport function MainContainer({\n children,\n style,\n ...props\n}: ReactElementPropsType) {\n const classes = useClasses();\n return (\n \n {children}\n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n container: {\n backgroundColor: \"#ffffff\",\n boxShadow: \" 0px 4px 8px rgba(0, 0, 0, 0.1)\",\n borderRadius: \"8px\",\n },\n}));\n","import * as React from \"react\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\nimport { Hidden, Typography } from \"@material-ui/core\";\nimport { ReactNode } from \"react\";\n\nexport enum TitleVariant {\n Primary = \"Primary\",\n Secondary = \"Secondary\",\n}\n\nexport function Title({\n children,\n variant,\n}: {\n children: ReactNode;\n variant?: TitleVariant;\n}) {\n return variant === TitleVariant.Secondary ? (\n {children}\n ) : (\n {children}\n );\n}\n\nfunction PrimaryTitle({ children }: { children: ReactNode }) {\n const classes = useClasses();\n return (\n \n {children}\n \n );\n}\n\nfunction SecondaryTitle({ children }: { children: ReactNode }) {\n return (\n <>\n \n {children}\n \n \n {children}\n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n title: {\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: \"1.5rem\",\n lineHeight: 1,\n },\n },\n}));\n","import { GREETINGS } from \"./../../Stores/StoreSettings/GREETINGs\";\nimport { CATEGORY, IFAQ } from \"../../Stores/StoreSettings/FAQs\";\nimport { IFlowRule } from \"../../Stores/StoreSettings/flowRules\";\n\nexport const newConfigurationId = \"new\";\n\nexport enum Platform {\n WooCommerce = \"WOOCOMMERCE\",\n MyCashFlow = \"MYCASHFLOW\",\n GoogleShoppingXML = \"GOOGLE_SHOPPING_XML\",\n Magento = \"MAGENTO\",\n Refox = \"REFOX\",\n Shopify = \"SHOPIFY\",\n Sotka = \"SOTKA\",\n Liana = \"LIANA\",\n}\n\nexport type IBackendConfigurationType =\n | `${Platform.WooCommerce}`\n | `${Platform.MyCashFlow}`\n | `${Platform.GoogleShoppingXML}`\n | `${Platform.Magento}`\n | `${Platform.Refox}`\n | `${Platform.Shopify}`\n | `${Platform.Sotka}`\n | `${Platform.Liana}`;\n\nexport const defaultPlatform = Platform.WooCommerce;\n\nexport enum OperationMode {\n Test = \"Test\",\n Production = \"Production\",\n}\n\nexport enum OperationModeFE {\n Test = \"1\",\n Production = \"0\",\n}\n\nexport const defaultOperationMode = OperationMode.Test;\n\nexport const defaultOperationModeFE = OperationModeFE.Production;\n\nexport enum Language {\n English = \"en\",\n Finnish = \"fi\",\n Swedish = \"sv\",\n German = \"de\",\n Netherland = \"nl\",\n Estonian = \"ee\", // As https://ee.tattootukku.com/ use ee for estonia lang code\n}\n\nexport enum DisplayLanguage {\n en = \"English\",\n fi = \"Finnish\",\n sv = \"Swedish\",\n de = \"German\",\n}\n\nexport const defaultLanguage = Language.Finnish;\n\nexport enum AuthorizationStrategy {\n query = \"Query\",\n basic = \"Basic\",\n oauth = \"OAuth\",\n}\n\nexport enum WooCommerceApiVersion {\n v1 = \"v1\",\n v2 = \"v2\",\n v3 = \"v3\",\n}\n\nexport enum WooCommerceVersion {\n v26X = \"2.6.X\",\n v30X = \"3.0.X\",\n v35X = \"3.5.X\",\n}\n\ninterface WooCommerceVersionPair {\n wooCommerceVersion: WooCommerceVersion;\n apiVersion: WooCommerceApiVersion;\n}\n\nconst wooCommerceVersionPairs: WooCommerceVersionPair[] = [\n {\n wooCommerceVersion: WooCommerceVersion.v26X,\n apiVersion: WooCommerceApiVersion.v1,\n },\n {\n wooCommerceVersion: WooCommerceVersion.v30X,\n apiVersion: WooCommerceApiVersion.v2,\n },\n {\n wooCommerceVersion: WooCommerceVersion.v35X,\n apiVersion: WooCommerceApiVersion.v3,\n },\n];\n\nexport function getWooCommerceVersion(apiVersion: WooCommerceApiVersion) {\n return (\n wooCommerceVersionPairs.find(\n (pair) => pair.apiVersion === apiVersion\n ) as WooCommerceVersionPair\n ).wooCommerceVersion;\n}\n\nexport interface IConfigurationCommonBackend {\n id: string;\n platform?: IBackendConfigurationType;\n storeName: string;\n storeNameFormatted: string;\n storeUrl: string;\n}\nexport enum ActivePromotion {\n NEW_ARRIVAL = \"NEW_ARRIVAL\",\n DAILY_DEALS = \"DAILY_DEALS\",\n}\nexport interface IExperiment {\n endTs?: number | null; // end time of the experiment\n experimentId: string;\n experimentName: string;\n startTs: number;\n tenantId: string;\n}\nexport interface IConfigurationCommonFrontend {\n operationMode: OperationMode;\n language: Language;\n avatar: string;\n buttonColor: string;\n accentColorLight: string;\n widgetToLeft: boolean;\n minimizedMode?: boolean;\n flows: IFlowRule[];\n customQnA: IFAQ[];\n greetings: GREETINGS;\n customerCategories: CATEGORY[];\n newArrivalTimeLimit?: number | null;\n isNewArrivalTabDisabled?: boolean;\n isDailyDealsDisabled?: boolean;\n activePromotion?: `${ActivePromotion}` | \"\";\n activeExperimentId?: IExperiment[\"experimentId\"] | null;\n experiments?: IExperiment[];\n}\n\nexport const defaultAvatar =\n \"https://upsy.shoppinghelper.net/files/images/avatar/avatar.jpg\";\nexport const defaultButtonColor = \"#000000\";\nexport const defaultAccentColorLight = \"#000000\";\n\nexport type IConfigurationCommon = IConfigurationCommonBackend &\n IConfigurationCommonFrontend;\n\nexport interface IConfigurationWooCommerceSpecific {\n key: string;\n secret: string;\n apiVersion: WooCommerceApiVersion;\n authStrategy: string;\n woocommerceLanguage?: Language | \"\";\n}\n\nexport interface IWooCommerceConfiguration\n extends IConfigurationCommon,\n IConfigurationWooCommerceSpecific {\n platform: `${Platform.WooCommerce}`;\n}\n\nexport interface IMyCashFlowConfiguration extends IConfigurationCommon {\n platform: `${Platform.MyCashFlow}`;\n}\n\nexport interface IGoogleShoppingXMLConfiguration extends IConfigurationCommon {\n platform: `${Platform.GoogleShoppingXML}`;\n}\n\nexport interface IMagentoConfiguration extends IConfigurationCommon {\n platform: `${Platform.Magento}`;\n}\n\nexport interface IRefoxConfiguration extends IConfigurationCommon {\n platform: `${Platform.Refox}`;\n}\n\nexport interface IShopifyConfiguration extends IConfigurationCommon {\n platform: `${Platform.Shopify}`;\n}\n\nexport interface ILianaConfiguration extends IConfigurationCommon {\n platform: `${Platform.Liana}`;\n}\n\nexport interface ISotkaConfiguration extends IConfigurationCommon {\n platform: `${Platform.Sotka}`;\n}\n\nexport type IConfiguration = Partial<\n | IWooCommerceConfiguration\n | IMyCashFlowConfiguration\n | IMagentoConfiguration\n | IGoogleShoppingXMLConfiguration\n | IRefoxConfiguration\n | IShopifyConfiguration\n | ILianaConfiguration\n | ISotkaConfiguration\n>;\nexport type IBackendConfiguration = IBackendConfigurationCommon &\n IBackendConfigurationShopSpecific;\n\nexport interface IBackendConfigurationCommon {\n id: string;\n disabled?: boolean;\n mlConfig?: object;\n name?: string;\n tenantId: string;\n type?: IBackendConfigurationType;\n urlBase: string;\n}\n\nexport interface IBackendConfigurationShopSpecific {\n accessToken?: string;\n apiKey?: string;\n authUser?: string;\n authPassword?: string;\n categoryPageBasePath?: string;\n categoryUrlPath?: string;\n consumerKey?: string;\n consumerSecret?: string;\n convertPrices?: boolean;\n homePageUrl?: string;\n language?: string;\n pageSize?: number;\n productPageBasePath?: string;\n productUrlPath?: string;\n scrapePrice?: boolean;\n updateCategories?: boolean;\n version?: number;\n authStrategy?: string;\n}\n\nexport const defaultGreeting = {\n homePage: {\n textInBubble: \"Hi! What is on your mind?\",\n },\n category: {\n upperText: \"Hello there!\",\n },\n newArrival: {\n upperText: \"Hello there\",\n },\n dailyDeal: {\n upperText: \"Hello there\",\n },\n faq: {\n textInBubble: \"Any questions?\",\n upperText: \"Hello there\",\n },\n feedback: {\n textInBubble: \"Did I manage to help you with your purchase?\",\n positiveFeedback: \"Thank you! What did you like it?\",\n negativeFeedback: \"Thank you! What can we improve?\",\n thankYouText: \"Thank you!\",\n },\n upSell: {\n upperText: \"\",\n },\n crossSell: {\n upperText: \"\",\n },\n};\n","export interface PopupOptionsGroup {\n [key: string]: PopupOption;\n}\n\nexport interface PopupOptionCommon {\n type: PopupOptionType;\n url: string;\n}\n\ntype PopupOption = PopupOptionCommon | \"enabled\";\n\nexport function createPopupOption(type: PopupOptionType): PopupOption {\n return {\n type,\n url: \"\",\n };\n}\n\nexport enum PopupOptionType {\n searchResults = \"searchResults\",\n close = \"close\",\n faq = \"faq\",\n relevantProducts = \"relevantProducts\",\n productFaq = \"productFaq\",\n addToCart = \"addToCart\",\n}\n\nexport interface IFlowRule {\n trigger: IFlowRuleTrigger;\n buttons: IFlowRuleButtons;\n}\n\ninterface IFlowRuleTrigger {\n type: FlowRuleType;\n value: string;\n isPurchase?: true;\n}\n\ninterface IFlowRuleButtons {\n expanded: IFlowRuleButton[];\n initial: IFlowRuleButtonCommon[];\n}\n\nexport interface IFlowRuleButtonCommon {\n type: UIPopupOptionType;\n text: string;\n}\n\ninterface IFlowRuleButtonCategories {\n type: CategoriesUIPopupOptionType;\n}\n\nexport interface IFlowRuleButtonUrl {\n type: UrlUIPopupOptionType;\n text: string;\n url: string;\n}\n\nexport type IFlowRuleButton =\n | IFlowRuleButtonCommon\n | IFlowRuleButtonCategories\n | IFlowRuleButtonUrl;\n\nexport function isCommonButton(\n button: IFlowRuleButton\n): button is IFlowRuleButtonCommon {\n return (button as IFlowRuleButtonCommon).text !== undefined;\n}\n\nexport enum FlowRuleType {\n Url = \"Url\",\n ClassSelector = \"ClassSelector\",\n UpsySelector = \"UpsySelector\",\n HideOnUrl = \"HideOnUrl\",\n}\n\nexport function createDefaultFlowRuleUI(): IFlowRule {\n return {\n trigger: {\n type: FlowRuleType.ClassSelector,\n value: \"\",\n },\n buttons: createDefaultInitialFlowRuleUIButtons(),\n };\n}\n\nexport function createDefaultInitialFlowRuleUIButtons(): IFlowRuleButtons {\n return {\n initial: [createDefaultFlowRuleUIInitialButton()],\n expanded: [createDefaultFlowRuleUIButton()],\n };\n}\n\nexport function createDefaultFlowRuleUIButton(): IFlowRuleButton {\n return {\n type: PopupOptionType.addToCart,\n text: \"\",\n };\n}\n\nexport function createDefaultFlowRuleUICloseButton(): IFlowRuleButton {\n return {\n type: PopupOptionType.close,\n text: \"✕\",\n };\n}\n\nexport function createDefaultFlowRuleUIFaqButton(): IFlowRuleButtonCommon {\n return {\n type: PopupOptionType.faq,\n text: \"Kysy myyjältä\",\n };\n}\n\nexport function createDefaultFlowRuleUIInitialButton(\n text: string = \"\"\n): IFlowRuleButtonCommon {\n return {\n type: PopupOptionType.faq,\n text: text || \"Kysy myyjältä\",\n };\n}\n\nexport function getRuleTypeName(ruleType: FlowRuleType) {\n if (ruleType === FlowRuleType.Url) {\n return \"Url\";\n } else if (ruleType === FlowRuleType.ClassSelector) {\n return \"Class selector\";\n } else if (ruleType === FlowRuleType.HideOnUrl) {\n return \"Hide on URL\";\n } else {\n return \"Upsy selector\";\n }\n}\n\nexport function getRuleTypeTooltip(ruleType: FlowRuleType) {\n if (ruleType === FlowRuleType.Url) {\n return \"Specify a (part of) web address, where this rule should be triggered.\";\n } else if (ruleType === FlowRuleType.ClassSelector) {\n return \"Specify a HTML class, the existence of which on a store page, triggers this rule.\";\n } else if (ruleType === FlowRuleType.HideOnUrl) {\n return \"Specify a (part of) web address, where Upsy should NOT be visible.\";\n } else {\n return \"Specify a upsy selector, the existence of which on a store page, triggers this rule.\";\n }\n}\n\ntype CategoriesUIPopupOptionType = \"categories\";\nexport const categoriesUIPopupOption: CategoriesUIPopupOptionType =\n \"categories\";\n\ntype UrlUIPopupOptionType = \"url\";\nexport const urlUIPopupOption: UrlUIPopupOptionType = \"url\";\n\nexport type UIPopupOptionType =\n | PopupOptionType\n | CategoriesUIPopupOptionType\n | UrlUIPopupOptionType;\n","import {\n categoriesUIPopupOption,\n createDefaultFlowRuleUI,\n createDefaultFlowRuleUIButton,\n FlowRuleType,\n IFlowRule,\n IFlowRuleButtonCommon,\n IFlowRuleButtonUrl,\n PopupOptionType,\n UIPopupOptionType,\n} from \"./flowRules\";\nimport { flowRulesReducerInitialStateNew } from \"./flowRulesReducerInitialStateNew\";\n\nexport enum FlowRulesActionType {\n Init = \"Init\",\n SetTriggerType = \"SetTriggerType\",\n SetTriggerValue = \"SetTriggerValue\",\n SetPopupText = \"SetPopupText\",\n SetButtonType = \"SetButtonType\",\n SetButtonText = \"SetButtonText\",\n SetButtonUrl = \"SetButtonUrl\",\n EnablePurchase = \"EnablePurchase\",\n AddButton = \"AddButton\",\n RemoveButton = \"RemoveButton\",\n AddRule = \"AddRule\",\n RemoveRule = \"RemoveRule\",\n}\n\ninterface InitAction {\n type: FlowRulesActionType.Init;\n}\n\nexport function init(): InitAction {\n return {\n type: FlowRulesActionType.Init,\n };\n}\n\ninterface SetTriggerTypeAction {\n type: FlowRulesActionType.SetTriggerType;\n index: number;\n triggerType: FlowRuleType;\n}\n\nexport function setTriggerType(\n index: number,\n triggerType: FlowRuleType\n): SetTriggerTypeAction {\n return {\n type: FlowRulesActionType.SetTriggerType,\n index,\n triggerType,\n };\n}\n\ninterface SetTriggerValueAction {\n type: FlowRulesActionType.SetTriggerValue;\n index: number;\n value: string;\n}\n\nexport function setTriggerValue(\n index: number,\n value: string\n): SetTriggerValueAction {\n return {\n type: FlowRulesActionType.SetTriggerValue,\n index,\n value,\n };\n}\n\ninterface SetPopupTextAction {\n type: FlowRulesActionType.SetPopupText;\n index: number;\n text: string;\n}\n\nexport function setPopupText(index: number, text: string): SetPopupTextAction {\n return {\n type: FlowRulesActionType.SetPopupText,\n index,\n text,\n };\n}\n\ninterface SetButtonTypeAction {\n type: FlowRulesActionType.SetButtonType;\n index: number;\n buttonIndex: number;\n buttonType: UIPopupOptionType;\n}\n\nexport function setButtonType(\n index: number,\n buttonType: UIPopupOptionType,\n buttonIndex: number\n): SetButtonTypeAction {\n return {\n type: FlowRulesActionType.SetButtonType,\n index,\n buttonIndex,\n buttonType,\n };\n}\n\ninterface SetButtonTextAction {\n type: FlowRulesActionType.SetButtonText;\n index: number;\n buttonIndex: number;\n text: string;\n}\n\nexport function setButtonText(\n index: number,\n text: string,\n buttonIndex: number\n): SetButtonTextAction {\n return {\n type: FlowRulesActionType.SetButtonText,\n index,\n buttonIndex,\n text,\n };\n}\n\ninterface SetButtonUrlAction {\n type: FlowRulesActionType.SetButtonUrl;\n index: number;\n buttonIndex: number;\n url: string;\n}\n\nexport function setButtonUrl(\n index: number,\n url: string,\n buttonIndex: number\n): SetButtonUrlAction {\n return {\n type: FlowRulesActionType.SetButtonUrl,\n index,\n buttonIndex,\n url,\n };\n}\n\ninterface EnablePurchaseAction {\n type: FlowRulesActionType.EnablePurchase;\n index: number;\n enabled: boolean;\n}\n\nexport function enablePurchase(\n index: number,\n enabled: boolean\n): EnablePurchaseAction {\n return {\n type: FlowRulesActionType.EnablePurchase,\n index,\n enabled,\n };\n}\n\ninterface AddButtonAction {\n type: FlowRulesActionType.AddButton;\n index: number;\n}\n\nexport function addButton(index: number): AddButtonAction {\n return {\n type: FlowRulesActionType.AddButton,\n index,\n };\n}\n\ninterface RemoveButtonAction {\n type: FlowRulesActionType.RemoveButton;\n index: number;\n buttonIndex: number;\n}\n\nexport function removeButton(\n index: number,\n buttonIndex: number\n): RemoveButtonAction {\n return {\n type: FlowRulesActionType.RemoveButton,\n index,\n buttonIndex,\n };\n}\n\ninterface AddRuleAction {\n type: FlowRulesActionType.AddRule;\n}\n\nexport function addRule(): AddRuleAction {\n return {\n type: FlowRulesActionType.AddRule,\n };\n}\n\ninterface RemoveRuleAction {\n type: FlowRulesActionType.RemoveRule;\n index: number;\n}\n\nexport function removeRule(index: number): RemoveRuleAction {\n return {\n type: FlowRulesActionType.RemoveRule,\n index,\n };\n}\n\nexport type FlowRulesAction =\n | InitAction\n | SetTriggerTypeAction\n | SetTriggerValueAction\n | SetPopupTextAction\n | SetButtonTypeAction\n | SetButtonTextAction\n | SetButtonUrlAction\n | EnablePurchaseAction\n | AddButtonAction\n | RemoveButtonAction\n | AddRuleAction\n | RemoveRuleAction;\n\nexport function flowRulesReducer(\n state: IFlowRule[] = flowRulesReducerInitialStateNew,\n action: FlowRulesAction\n): IFlowRule[] {\n switch (action.type) {\n case FlowRulesActionType.SetTriggerType: {\n return state.map((rule, index) =>\n index === action.index\n ? {\n ...rule,\n trigger: {\n ...rule.trigger,\n type: action.triggerType,\n },\n }\n : rule\n );\n }\n case FlowRulesActionType.SetTriggerValue: {\n return state.map((rule, index) =>\n index === action.index\n ? {\n ...rule,\n trigger: {\n ...rule.trigger,\n value: action.value,\n },\n }\n : rule\n );\n }\n case FlowRulesActionType.SetPopupText: {\n return state.map((rule, index) =>\n index === action.index\n ? {\n ...rule,\n buttons: {\n ...rule.buttons,\n initial: [\n {\n type: PopupOptionType.faq,\n text: action.text,\n },\n ],\n },\n }\n : rule\n );\n }\n case FlowRulesActionType.SetButtonType: {\n return state.map((rule, index) =>\n index === action.index\n ? {\n ...rule,\n buttons: {\n ...rule.buttons,\n expanded: rule.buttons.expanded.map((button, buttonIndex) => {\n if (buttonIndex !== action.buttonIndex) {\n return button;\n }\n if (action.buttonType === categoriesUIPopupOption) {\n return {\n type: categoriesUIPopupOption,\n };\n } else {\n return {\n text: (button as IFlowRuleButtonCommon)?.text || \"\",\n url: (button as IFlowRuleButtonUrl)?.url || \"\",\n type: action.buttonType,\n };\n }\n }),\n },\n }\n : rule\n );\n }\n case FlowRulesActionType.SetButtonText: {\n return state.map((rule, index) =>\n index === action.index\n ? {\n ...rule,\n buttons: {\n ...rule.buttons,\n expanded: rule.buttons.expanded.map((button, buttonIndex) => {\n if (buttonIndex !== action.buttonIndex) {\n return button;\n }\n return {\n ...button,\n text: action.text,\n };\n }),\n },\n }\n : rule\n );\n }\n case FlowRulesActionType.SetButtonUrl: {\n return state.map((rule, index) =>\n index === action.index\n ? {\n ...rule,\n buttons: {\n ...rule.buttons,\n expanded: rule.buttons.expanded.map((button, buttonIndex) => {\n if (buttonIndex !== action.buttonIndex) {\n return button;\n }\n return {\n ...button,\n url: action.url,\n };\n }),\n },\n }\n : rule\n );\n }\n case FlowRulesActionType.EnablePurchase: {\n return state.map((rule, index) => {\n if (index !== action.index) {\n return rule;\n }\n const newRule: IFlowRule = {\n ...rule,\n trigger: {\n type: rule.trigger.type,\n value: rule.trigger.value,\n },\n };\n if (action.enabled) {\n newRule.trigger.isPurchase = true;\n }\n return newRule;\n });\n }\n case FlowRulesActionType.AddButton: {\n return state.map((rule, index) =>\n index === action.index\n ? {\n ...rule,\n buttons: {\n ...rule.buttons,\n expanded: [\n ...rule.buttons.expanded,\n createDefaultFlowRuleUIButton(),\n ],\n },\n }\n : rule\n );\n }\n case FlowRulesActionType.RemoveButton: {\n return state.map((rule, index) =>\n index === action.index\n ? {\n ...rule,\n buttons: {\n ...rule.buttons,\n expanded: rule.buttons.expanded.filter(\n (button, index) => index !== action.buttonIndex\n ),\n },\n }\n : rule\n );\n }\n case FlowRulesActionType.AddRule: {\n return [...state, createDefaultFlowRuleUI()];\n }\n case FlowRulesActionType.RemoveRule: {\n return state.filter((rule, index) => index !== action.index);\n }\n case FlowRulesActionType.Init:\n default:\n return state;\n }\n}\n","import {\n categoriesUIPopupOption,\n createDefaultFlowRuleUIFaqButton,\n createDefaultFlowRuleUIInitialButton,\n FlowRuleType,\n IFlowRule,\n} from \"./flowRules\";\nimport { PopupOptionType } from \"./flowRules\";\n\nexport const flowRulesReducerInitialStateNew: IFlowRule[] = [\n getDefaultThankYouRule(),\n getDefaultCheckoutRule(),\n getDefaultCartRule(),\n getDefaultProductRule(),\n getDefaultCategoryRule(),\n getDefaultGeneralRule(),\n];\n\nfunction getDefaultThankYouRule(): IFlowRule {\n return {\n trigger: {\n type: FlowRuleType.Url,\n value: \"/order-received/\",\n isPurchase: true,\n },\n buttons: {\n initial: [createDefaultFlowRuleUIInitialButton()],\n expanded: [\n {\n type: PopupOptionType.faq,\n text: \"Lisätietoja toimitus- ja palautustavoista\",\n },\n {\n type: PopupOptionType.searchResults,\n text: \"Etsi muita tuotteita\",\n },\n ],\n },\n };\n}\n\nfunction getDefaultCheckoutRule(): IFlowRule {\n return {\n trigger: {\n type: FlowRuleType.Url,\n value: \"/kassa/\",\n },\n buttons: {\n initial: [createDefaultFlowRuleUIInitialButton()],\n expanded: [\n {\n type: PopupOptionType.faq,\n text: \"Lisätietoja toimitus- ja palautustavoista\",\n },\n {\n type: PopupOptionType.searchResults,\n text: \"Etsi muita tuotteita\",\n },\n ],\n },\n };\n}\n\nfunction getDefaultCartRule(): IFlowRule {\n return {\n trigger: {\n type: FlowRuleType.Url,\n value: \"/ostoskori\",\n },\n buttons: {\n initial: [\n createDefaultFlowRuleUIInitialButton(\n \"Haluatko lisätietoja tilauksen tekemisestä tai maksu- ja toimitustavoista?\"\n ),\n ],\n expanded: [\n {\n type: PopupOptionType.relevantProducts,\n text: \"Näytä yhteensopivia tuotteita\",\n },\n {\n type: PopupOptionType.faq,\n text: \"Lisätietoja toimitus- ja palautustavoista\",\n },\n ],\n },\n };\n}\n\nfunction getDefaultProductRule(): IFlowRule {\n return {\n trigger: {\n type: FlowRuleType.ClassSelector,\n value: \".single-product\",\n },\n buttons: {\n initial: [\n createDefaultFlowRuleUIInitialButton(\n \"Haluatko lisätietoja tästä tuotteesta tai vaihtoehtoisia tuotesuosituksia?\"\n ),\n ],\n expanded: [\n {\n type: PopupOptionType.productFaq,\n text: \"Lisätietoja tuotteesta\",\n },\n {\n type: PopupOptionType.relevantProducts,\n text: \"Katso vaihtoehtoiset tuotteet\",\n },\n {\n type: PopupOptionType.faq,\n text: \"Lisätietoja toimitus- ja palautustavoista\",\n },\n {\n type: PopupOptionType.addToCart,\n text: \"+ Lisää ostoskoriin\",\n },\n ],\n },\n };\n}\n\nfunction getDefaultCategoryRule(): IFlowRule {\n return {\n trigger: {\n type: FlowRuleType.UpsySelector,\n value: \"category\",\n },\n buttons: {\n initial: [\n createDefaultFlowRuleUIInitialButton(\n \"Moikka! Autan sinua löytämään sopivan tuotteen tästä ryhmästä.\"\n ),\n ],\n expanded: [\n createDefaultFlowRuleUIFaqButton(),\n {\n type: PopupOptionType.searchResults,\n text: \"Etsi tuote\",\n },\n ],\n },\n };\n}\n\nfunction getDefaultGeneralRule(): IFlowRule {\n return {\n trigger: {\n type: FlowRuleType.Url,\n value: \"/\",\n },\n buttons: {\n initial: [createDefaultFlowRuleUIInitialButton()],\n expanded: [\n {\n type: PopupOptionType.searchResults,\n text: \"Etsi tuote\",\n },\n {\n type: categoriesUIPopupOption,\n },\n {\n type: PopupOptionType.faq,\n text: \"Lisätietoja toimitus- ja palautustavoista\",\n },\n ],\n },\n };\n}\n","export const writeToLocalStorageDebounced = debounce(\n (key: string, data: string) => localStorage.setItem(key, data)\n);\n\nfunction debounce(\n callback: (...args: T) => void,\n timeout = 100\n) {\n let timer: NodeJS.Timeout;\n return (...args: T) => {\n clearTimeout(timer);\n timer = setTimeout(() => callback(...args), timeout);\n };\n}\n\nexport const readFromLocalStorage = (key: string) => localStorage.getItem(key);\n","import { ALLOWED_LANGUAGE } from \"../../Configs/language\";\nexport interface IFAQLocalization {\n question?: string;\n answer?: string;\n}\n\nexport interface IFAQ {\n question: string;\n answer: string;\n type: FAQType;\n originalIndex?: number;\n isPinded?: boolean;\n locale?: {\n [key in ALLOWED_LANGUAGE]?: IFAQLocalization;\n };\n}\n\nexport interface CATEGORY {\n categoryName: string;\n categoryAvatarURL: string;\n categoryURL: string;\n order: number;\n isPinned?: boolean;\n locale?: {\n [key in ALLOWED_LANGUAGE]?: {\n categoryName?: string;\n categoryURL?: string;\n };\n };\n}\n\nexport enum FAQType {\n Text = \"Text\",\n Url = \"Url\",\n}\n\nexport function createDefaultFAQ(): IFAQ {\n return createDefaultTextFAQ();\n}\n\nexport function createDefaultTextFAQ(): IFAQ {\n return {\n question: \"\",\n answer: \"\",\n type: FAQType.Text,\n };\n}\n\nexport function createDefaultUrlFAQ(): IFAQ {\n return {\n question: \"\",\n answer: \"\",\n type: FAQType.Url,\n };\n}\n\nexport function getFAQTypeName(type: FAQType) {\n if (type === FAQType.Url) {\n return \"Url\";\n } else if (type === FAQType.Text) {\n return \"Answer\";\n } else {\n return \"Answer\";\n }\n}\n","import { createDefaultFAQ, FAQType, IFAQ } from \"./FAQs\";\n\nexport enum FAQsActionType {\n Init = \"Init\",\n SetQuestionText = \"SetQuestionText\",\n SetAnswerText = \"SetAnswerText\",\n SetAnswerUrl = \"SetAnswerText\",\n AddFAQ = \"AddFAQ\",\n AddFAQWithPayload = \"AddFAQWithPayload\",\n UpdateFAQWithPayload = \"UpdateFAQWithPayload\",\n SetFaqPined = \"SetFaqPined\",\n RemoveFAQ = \"RemoveFAQ\",\n SetFAQType = \"SetFAQType\",\n SetFAQRank = \"SetFAQRank\",\n SetBulkFAQ = \"SetBulkFAQ\",\n removeBulkFAQ = \"RemoveBulkFAQ\",\n}\n\ninterface InitAction {\n type: FAQsActionType.Init;\n}\n\nexport function init(): InitAction {\n return {\n type: FAQsActionType.Init,\n };\n}\ninterface SetFAQTypeAction {\n type: FAQsActionType.SetFAQType;\n index: number;\n FAQType: FAQType;\n}\n\nexport function setFAQType(index: number, FAQType: FAQType): SetFAQTypeAction {\n return {\n type: FAQsActionType.SetFAQType,\n index,\n FAQType,\n };\n}\n\ninterface SetFAQRankAction {\n type: FAQsActionType.SetFAQRank;\n index: number;\n newIndex: number;\n}\n\nexport function setFAQRank(index: number, newIndex: number): SetFAQRankAction {\n return {\n type: FAQsActionType.SetFAQRank,\n index,\n newIndex: newIndex,\n };\n}\ninterface SetQuestionTextAction {\n type: FAQsActionType.SetQuestionText;\n index: number;\n text: string;\n}\n\nexport function setQuestionText(\n index: number,\n text: string\n): SetQuestionTextAction {\n return {\n type: FAQsActionType.SetQuestionText,\n index,\n text,\n };\n}\n\ninterface SetAnswerTextAction {\n type: FAQsActionType.SetAnswerText;\n index: number;\n text: string;\n}\n\nexport function setAnswerText(\n index: number,\n text: string\n): SetAnswerTextAction {\n return {\n type: FAQsActionType.SetAnswerText,\n index,\n text,\n };\n}\n\ninterface AddFAQAction {\n type: FAQsActionType.AddFAQ;\n}\n\nexport function addFAQ(): AddFAQAction {\n return {\n type: FAQsActionType.AddFAQ,\n };\n}\n\ninterface AddFAQWithPayLoadAction {\n type: FAQsActionType.AddFAQWithPayload;\n faq: IFAQ;\n oldIndex: number;\n newIndex: number;\n}\n\n// add and save faq all field once\nexport function AddFAQWithPayload(\n oldIndex: number,\n newIndex: number,\n faq: IFAQ\n): AddFAQWithPayLoadAction {\n return {\n type: FAQsActionType.AddFAQWithPayload,\n oldIndex,\n newIndex,\n faq,\n };\n}\n\n// update faq all field once\ninterface UpdateFAQWithPayloadAction {\n type: FAQsActionType.UpdateFAQWithPayload;\n faq: IFAQ;\n oldIndex: number;\n newIndex: number;\n}\n\nexport function UpdateFAQWithPayload(\n oldIndex: number,\n newIndex: number,\n faq: IFAQ\n): UpdateFAQWithPayloadAction {\n return {\n type: FAQsActionType.UpdateFAQWithPayload,\n oldIndex,\n newIndex,\n faq,\n };\n}\ninterface RemoveFAQAction {\n type: FAQsActionType.RemoveFAQ;\n index: number;\n}\n\nexport function removeFAQ(index: number): RemoveFAQAction {\n return {\n type: FAQsActionType.RemoveFAQ,\n index,\n };\n}\n\ninterface AddBulkFAQAction {\n type: FAQsActionType.SetBulkFAQ;\n faqs: IFAQ[];\n}\n\nexport function addBulkFAQ(faqs: IFAQ[]): AddBulkFAQAction {\n return {\n type: FAQsActionType.SetBulkFAQ,\n faqs: faqs,\n };\n}\n\nexport interface IMapIndexForFAQDelete {\n deleteFrom: number;\n deleteCount: number;\n}\n\ninterface RemoveBulkFAQAction {\n type: FAQsActionType.removeBulkFAQ;\n mapIndexForFaqDelete: IMapIndexForFAQDelete;\n}\n\nexport function removeBulkFAQ(\n mapIndexForFaqDelete: IMapIndexForFAQDelete\n): RemoveBulkFAQAction {\n return {\n type: FAQsActionType.removeBulkFAQ,\n mapIndexForFaqDelete,\n };\n}\n// add isPined boolean field to check either this is pined item or not\nexport interface SetFaqPinedAction {\n type: FAQsActionType.SetFaqPined;\n index: number;\n isPined: boolean;\n}\n\nexport function setFaqPined(\n index: number,\n isPined: boolean\n): SetFaqPinedAction {\n return {\n type: FAQsActionType.SetFaqPined,\n index,\n isPined,\n };\n}\n\nexport type FAQsAction =\n | InitAction\n | SetQuestionTextAction\n | SetAnswerTextAction\n | SetFAQTypeAction\n | SetFAQRankAction\n | AddFAQAction\n | AddFAQWithPayLoadAction\n | UpdateFAQWithPayloadAction\n | SetFaqPinedAction\n | RemoveFAQAction\n | AddBulkFAQAction\n | RemoveBulkFAQAction;\n\nconst removeFaqs = function removeBulkFaq(\n state: IFAQ[],\n mapIndexToFaqDelete: IMapIndexForFAQDelete\n) {\n let copyState = [...state];\n copyState.splice(\n mapIndexToFaqDelete.deleteFrom,\n mapIndexToFaqDelete.deleteCount\n );\n return [...copyState];\n};\n\nfunction faqReRank(state: IFAQ[], oldIndex: number, newIndex: number): IFAQ[] {\n const question = state[oldIndex];\n const questionRemoved = [\n ...state.slice(0, oldIndex),\n ...state.slice(oldIndex + 1, state.length),\n ];\n const questionReplaced = [\n ...questionRemoved.slice(0, newIndex),\n question,\n ...questionRemoved.slice(newIndex, questionRemoved.length),\n ];\n console.log(question, questionRemoved, questionReplaced);\n return questionReplaced;\n}\n\nexport function FAQsReducer(\n state: IFAQ[] = [], //flowFAQsReducerInitialStateNew,\n action: FAQsAction\n): IFAQ[] {\n switch (action.type) {\n case FAQsActionType.SetFaqPined: {\n return state.map((FAQ, index) =>\n index === action.index\n ? {\n ...FAQ,\n isPinded: action.isPined,\n }\n : FAQ\n );\n }\n\n case FAQsActionType.UpdateFAQWithPayload: {\n const { oldIndex, newIndex, faq } = action;\n const newState = state.map((FAQ, index) =>\n index === oldIndex ? { ...FAQ, ...faq } : FAQ\n );\n return oldIndex === newIndex\n ? newState\n : faqReRank(newState, oldIndex, newIndex);\n }\n case FAQsActionType.SetQuestionText: {\n return state.map((FAQ, index) =>\n index === action.index\n ? {\n ...FAQ,\n question: action.text,\n }\n : FAQ\n );\n }\n case FAQsActionType.SetAnswerText: {\n return state.map((FAQ, index) =>\n index === action.index\n ? {\n ...FAQ,\n answer: action.text,\n }\n : FAQ\n );\n }\n case FAQsActionType.SetFAQType: {\n return state.map((FAQ, index) =>\n index === action.index\n ? {\n ...FAQ,\n type: action.FAQType,\n }\n : FAQ\n );\n }\n case FAQsActionType.SetFAQRank: {\n const oldIndex = action.index;\n const { newIndex } = action;\n return faqReRank(state, oldIndex, newIndex);\n }\n case FAQsActionType.AddFAQ: {\n return [...state, { ...createDefaultFAQ(), originalIndex: state.length }];\n }\n case FAQsActionType.AddFAQWithPayload: {\n const { oldIndex, newIndex, faq } = action;\n const newState = [...state, { ...faq }];\n return oldIndex === newIndex\n ? newState\n : faqReRank(newState, oldIndex, newIndex);\n }\n\n case FAQsActionType.RemoveFAQ: {\n return state.filter((FAQ, index) => index !== action.index);\n }\n case FAQsActionType.SetBulkFAQ: {\n let faqs = action.faqs.map((faq, index) => {\n const originalIndex = faq.originalIndex || index;\n return {\n ...faq,\n originalIndex: state.length + originalIndex,\n };\n });\n return [...state, ...faqs];\n }\n case FAQsActionType.removeBulkFAQ: {\n return removeFaqs(state, action.mapIndexForFaqDelete);\n }\n case FAQsActionType.Init:\n default:\n return state;\n }\n}\n","import {\n defaultLanguage,\n defaultOperationMode,\n defaultPlatform,\n IConfiguration,\n IConfigurationCommonBackend,\n IConfigurationCommonFrontend,\n IConfigurationWooCommerceSpecific,\n newConfigurationId,\n} from \"./Configuration\";\nimport {\n FlowRulesAction,\n flowRulesReducer,\n} from \"../../Stores/StoreSettings/flowRulesReducer\";\nimport {\n readFromLocalStorage,\n writeToLocalStorageDebounced,\n} from \"../utils/localStorage\";\nimport {\n FAQsAction,\n FAQsReducer,\n} from \"../../Stores/StoreSettings/FAQsReducer\";\n\nexport const configurationsInitialState: IConfiguration[] = [];\nconst newConfigurationInitialState = {\n id: newConfigurationId,\n platform: defaultPlatform,\n operationMode: defaultOperationMode,\n language: defaultLanguage,\n};\n\nenum ConfigurationActionType {\n SetAll = \"SetAll\",\n SetCommonBackendConfiguration = \"SetCommonBackendConfiguration\",\n SetCommonFrontendConfiguration = \"SetCommonFrontendConfiguration\",\n SetCommonFrontendFlowRules = \"SetCommonFrontendFlowRules\",\n SetCommonFrontendFAQs = \"SetCommonFrontendFAQs\",\n SetWooCommerceSpecificConfiguration = \"SetWooCommerceSpecificConfiguration\",\n ClearTemp = \"ClearTemp\",\n}\n\nexport interface SetAllConfigurationsAction {\n type: ConfigurationActionType.SetAll;\n configurations: IConfiguration[];\n}\n\nexport function setAllConfigurations(\n configurations: IConfiguration[]\n): SetAllConfigurationsAction {\n const tempNewConfigurationString =\n readFromLocalStorage(localStorageKeyTempNewConfiguration) || \"{}\";\n return {\n type: ConfigurationActionType.SetAll,\n configurations: [\n ...configurations,\n {\n ...newConfigurationInitialState,\n ...JSON.parse(tempNewConfigurationString),\n },\n ],\n };\n}\n\nexport interface SetCommonBackendConfigurationAction {\n type: ConfigurationActionType.SetCommonBackendConfiguration;\n id: string;\n commonBackendConfiguration: Partial;\n}\n\nexport function setCommonBackendConfiguration(\n id: SetCommonBackendConfigurationAction[\"id\"],\n commonBackendConfiguration: SetCommonBackendConfigurationAction[\"commonBackendConfiguration\"]\n): SetCommonBackendConfigurationAction {\n return {\n type: ConfigurationActionType.SetCommonBackendConfiguration,\n id,\n commonBackendConfiguration,\n };\n}\n\nexport interface SetCommonFrontendConfigurationAction {\n type: ConfigurationActionType.SetCommonFrontendConfiguration;\n id: string;\n commonFrontendConfiguration: Partial;\n}\n\nexport function setCommonFrontendConfiguration(\n id: SetCommonFrontendConfigurationAction[\"id\"],\n commonFrontendConfiguration: SetCommonFrontendConfigurationAction[\"commonFrontendConfiguration\"]\n): SetCommonFrontendConfigurationAction {\n return {\n type: ConfigurationActionType.SetCommonFrontendConfiguration,\n id,\n commonFrontendConfiguration,\n };\n}\n\nexport interface SetCommonFrontendFlowRulesAction {\n type: ConfigurationActionType.SetCommonFrontendFlowRules;\n id: string;\n flowRulesAction: FlowRulesAction;\n}\n\nexport function setCommonFrontendFlowRules(\n id: SetCommonFrontendFlowRulesAction[\"id\"],\n flowRulesAction: SetCommonFrontendFlowRulesAction[\"flowRulesAction\"]\n): SetCommonFrontendFlowRulesAction {\n return {\n type: ConfigurationActionType.SetCommonFrontendFlowRules,\n id,\n flowRulesAction,\n };\n}\n\nexport interface SetCommonFrontendFAQsAction {\n type: ConfigurationActionType.SetCommonFrontendFAQs;\n id: string;\n FAQsAction: FAQsAction;\n}\n\nexport function setCommonFrontendFAQs(\n id: SetCommonFrontendFlowRulesAction[\"id\"],\n FAQsAction: SetCommonFrontendFAQsAction[\"FAQsAction\"]\n): SetCommonFrontendFAQsAction {\n return {\n type: ConfigurationActionType.SetCommonFrontendFAQs,\n id,\n FAQsAction,\n };\n}\n\nexport interface SetWooCommerceSpecificConfigurationAction {\n type: ConfigurationActionType.SetWooCommerceSpecificConfiguration;\n id: string;\n wooCommerceSpecificConfiguration: Partial;\n}\n\nexport function setWooCommerceSpecificConfiguration(\n id: SetWooCommerceSpecificConfigurationAction[\"id\"],\n wooCommerceSpecificConfiguration: SetWooCommerceSpecificConfigurationAction[\"wooCommerceSpecificConfiguration\"]\n): SetWooCommerceSpecificConfigurationAction {\n return {\n type: ConfigurationActionType.SetWooCommerceSpecificConfiguration,\n id,\n wooCommerceSpecificConfiguration,\n };\n}\n\nexport interface ClearTempConfigurationAction {\n type: ConfigurationActionType.ClearTemp;\n}\n\nexport function clearTempConfiguration(): ClearTempConfigurationAction {\n return {\n type: ConfigurationActionType.ClearTemp,\n };\n}\n\nexport type ConfigurationAction =\n | SetAllConfigurationsAction\n | SetCommonBackendConfigurationAction\n | SetCommonFrontendConfigurationAction\n | SetCommonFrontendFlowRulesAction\n | SetCommonFrontendFAQsAction\n | SetWooCommerceSpecificConfigurationAction\n | ClearTempConfigurationAction;\n\nexport const localStorageKeyTempNewConfiguration = \"tempNewConfiguration\";\n\nexport function localStorageConfigurationsReducer(\n state: IConfiguration[] = configurationsInitialState,\n action: ConfigurationAction\n) {\n const newState = configurationsReducer(state, action);\n const newConfigurationIndex = newState.findIndex(\n (value) => value.id === newConfigurationId\n );\n if (0 <= newConfigurationIndex) {\n writeToLocalStorageDebounced(\n localStorageKeyTempNewConfiguration,\n JSON.stringify(newState[newConfigurationIndex])\n );\n }\n return newState;\n}\n\nexport function configurationsReducer(\n state: IConfiguration[] = configurationsInitialState,\n action: ConfigurationAction\n): IConfiguration[] {\n if (action.type === ConfigurationActionType.SetAll) {\n return setAllConfigurationsReducer(state, action);\n } else if (\n action.type === ConfigurationActionType.SetCommonBackendConfiguration\n ) {\n return commonBackendConfigurationReducer(state, action);\n } else if (\n action.type === ConfigurationActionType.SetCommonFrontendConfiguration\n ) {\n return commonFrontendConfigurationReducer(state, action);\n } else if (\n action.type === ConfigurationActionType.SetCommonFrontendFlowRules\n ) {\n return commonFrontendFlowRulesReducer(state, action);\n } else if (action.type === ConfigurationActionType.SetCommonFrontendFAQs) {\n return commonFrontendFAQsReducer(state, action);\n } else if (\n action.type === ConfigurationActionType.SetWooCommerceSpecificConfiguration\n ) {\n return wooCommerceSpecificConfigurationReducer(state, action);\n } else if (action.type === ConfigurationActionType.ClearTemp) {\n return clearTempConfigurationReducer(state, action);\n }\n\n return state;\n}\n\nfunction setAllConfigurationsReducer(\n state: IConfiguration[],\n action: SetAllConfigurationsAction\n) {\n return action.configurations;\n}\n\nfunction commonBackendConfigurationReducer(\n state: IConfiguration[],\n action: SetCommonBackendConfigurationAction\n) {\n return state.map((configuration) => {\n if (configuration.id === action.id) {\n return {\n ...configuration,\n ...action.commonBackendConfiguration,\n };\n } else {\n return configuration;\n }\n }) as IConfiguration[];\n}\n\nfunction commonFrontendConfigurationReducer(\n state: IConfiguration[],\n action: SetCommonFrontendConfigurationAction\n) {\n return state.map((configuration) => {\n if (configuration.id === action.id) {\n return {\n ...configuration,\n ...action.commonFrontendConfiguration,\n };\n } else {\n return configuration;\n }\n }) as IConfiguration[];\n}\n\nfunction commonFrontendFlowRulesReducer(\n state: IConfiguration[],\n action: SetCommonFrontendFlowRulesAction\n) {\n return state.map((configuration) => {\n if (configuration.id === action.id) {\n return {\n ...configuration,\n flows: flowRulesReducer(configuration.flows, action.flowRulesAction),\n };\n } else {\n return configuration;\n }\n }) as IConfiguration[];\n}\n\nfunction commonFrontendFAQsReducer(\n state: IConfiguration[],\n action: SetCommonFrontendFAQsAction\n) {\n return state.map((configuration) => {\n if (configuration.id === action.id) {\n return {\n ...configuration,\n customQnA: FAQsReducer(configuration.customQnA, action.FAQsAction),\n };\n } else {\n return configuration;\n }\n }) as IConfiguration[];\n}\n\nfunction wooCommerceSpecificConfigurationReducer(\n state: IConfiguration[],\n action: SetWooCommerceSpecificConfigurationAction\n) {\n return state.map((configuration) => {\n if (configuration.id === action.id) {\n return {\n ...configuration,\n ...action.wooCommerceSpecificConfiguration,\n };\n } else {\n return configuration;\n }\n }) as IConfiguration[];\n}\n\nfunction clearTempConfigurationReducer(\n state: IConfiguration[],\n _action: ClearTempConfigurationAction\n) {\n return state.map((configuration) =>\n configuration.id === newConfigurationId\n ? newConfigurationInitialState\n : configuration\n );\n}\n","import {\n defaultAvatar,\n defaultButtonColor,\n defaultAccentColorLight,\n defaultLanguage,\n defaultOperationModeFE,\n IConfiguration,\n IConfigurationCommon,\n IConfigurationCommonFrontend,\n IWooCommerceConfiguration,\n Language,\n OperationMode,\n OperationModeFE,\n Platform,\n WooCommerceApiVersion,\n defaultGreeting,\n} from \"./Configuration\";\nimport {\n FetchShopConfigurationsResponse,\n IConfigurationCommonFrontendDynamoDB,\n} from \"../Client/BackendResponse\";\nimport { FAQType } from \"../../Stores/StoreSettings/FAQs\";\n\nconst wooCommerceApiVersionRegex = /wc\\/(v\\d)\\/products/g;\nconst parseWooCommerceApiVersion = (path: string): WooCommerceApiVersion => {\n let result;\n\n const match = wooCommerceApiVersionRegex.exec(path);\n if (match && match.length >= 2)\n result =\n WooCommerceApiVersion[match[1] as keyof typeof WooCommerceApiVersion];\n\n return result || WooCommerceApiVersion.v3;\n};\n\nconst transformCommonProperties = (\n shopConfiguration: FetchShopConfigurationsResponse\n): Omit => ({\n id: shopConfiguration.backendConfiguration.id,\n storeName: shopConfiguration.backendConfiguration.tenantId,\n storeNameFormatted: shopConfiguration.backendConfiguration.tenantId\n .replace(/^(ups-)/, \"\")\n .split(\"\")\n .map((letter, i) => (i === 0 ? letter.toLocaleUpperCase() : letter))\n .join(\"\"), //Capitalize first letter\n storeUrl: shopConfiguration.backendConfiguration.urlBase,\n ...transformCommonFrontendProperties(shopConfiguration.frontendConfiguration),\n});\n\nconst transformOperationMode = (operationMode: OperationModeFE) => {\n return operationMode === OperationModeFE.Production\n ? OperationMode.Production\n : operationMode === OperationModeFE.Test\n ? OperationMode.Test\n : OperationMode.Production;\n};\n\nconst transformCommonFrontendProperties = ({\n testMode,\n language,\n avatar,\n buttonColor,\n flows,\n customQnA,\n customerCategories,\n widgetToLeft,\n minimizedMode,\n accentColorLight,\n newArrivalTimeLimit,\n isNewArrivalTabDisabled,\n isDailyDealsDisabled,\n activePromotion,\n greetings,\n activeExperimentId,\n experiments,\n}: Partial): IConfigurationCommonFrontend => ({\n operationMode: transformOperationMode(testMode ?? defaultOperationModeFE),\n language: language ?? defaultLanguage,\n avatar: avatar ?? defaultAvatar,\n buttonColor: buttonColor ?? defaultButtonColor,\n accentColorLight: accentColorLight ?? defaultAccentColorLight,\n newArrivalTimeLimit: newArrivalTimeLimit ? newArrivalTimeLimit : null,\n isNewArrivalTabDisabled: isNewArrivalTabDisabled\n ? isNewArrivalTabDisabled\n : false,\n isDailyDealsDisabled: isDailyDealsDisabled ? isDailyDealsDisabled : false,\n activePromotion: activePromotion ? activePromotion : \"\",\n widgetToLeft: widgetToLeft ?? false,\n minimizedMode: minimizedMode ?? false,\n flows: flows ?? [],\n greetings: greetings ?? defaultGreeting,\n customerCategories: customerCategories ?? [],\n customQnA:\n (customQnA &&\n customQnA.map((qna: any) =>\n qna.url\n ? { ...qna, answer: qna.url, type: FAQType.Url }\n : !qna.type\n ? { ...qna, type: FAQType.Text }\n : qna\n )) ??\n [],\n activeExperimentId: activeExperimentId,\n experiments: experiments ?? [],\n});\n\nconst transformToWooCommerceConfiguration = (\n shopConfiguration: FetchShopConfigurationsResponse\n): IWooCommerceConfiguration => ({\n ...transformCommonProperties(shopConfiguration),\n platform: Platform.WooCommerce,\n apiVersion: parseWooCommerceApiVersion(\n shopConfiguration.backendConfiguration.productUrlPath || \"\"\n ),\n authStrategy: shopConfiguration.backendConfiguration.authStrategy || \"\",\n key: shopConfiguration.backendConfiguration.consumerKey || \"\",\n secret: shopConfiguration.backendConfiguration.consumerSecret || \"\",\n woocommerceLanguage:\n (shopConfiguration.backendConfiguration.language as Language) || \"\",\n});\n\nconst transformToGenericConfiguration = (\n shopConfiguration: FetchShopConfigurationsResponse\n): IConfiguration => ({\n ...transformCommonProperties(shopConfiguration),\n platform: shopConfiguration.backendConfiguration.type,\n});\n\ninterface TransformationSpec {\n transform(shopConfiguration: FetchShopConfigurationsResponse): IConfiguration;\n}\n\ninterface TransformationSpecByPlatformType {\n [key: string]: TransformationSpec;\n}\n\nexport const dashboardTransformationByType: TransformationSpecByPlatformType = {\n [Platform.WooCommerce]: {\n transform: transformToWooCommerceConfiguration,\n },\n default: {\n transform: transformToGenericConfiguration,\n },\n};\n","import {\n IBackendConfiguration,\n IConfigurationCommonFrontend,\n OperationModeFE,\n} from \"../ConfigurationsContext/Configuration\";\nimport { IFlowRule } from \"../../Stores/StoreSettings/flowRules\";\nimport { UserRoleType } from \"../UserContext/User\";\n\nexport interface Store {\n name?: string;\n tenantId: string;\n role?: string;\n}\n\nexport interface GetUserResponse {\n fullName: string;\n user: string;\n secretKey: string;\n stores?: Array;\n id: string;\n role?: UserRoleType;\n}\n\nexport interface CreateUserRequest {\n fullName: string;\n email: string;\n password: string;\n}\n\nexport interface CreateUserApiError {\n user?: string;\n password?: string;\n}\n\nexport interface IConfigurationCommonFrontendDynamoDB\n extends Omit, \"operationMode\"> {\n flows: IFlowRule[];\n testMode: OperationModeFE;\n tenantId: string;\n}\n\nexport interface FetchShopConfigurationsResponse {\n backendConfiguration: IBackendConfiguration;\n frontendConfiguration: IConfigurationCommonFrontendDynamoDB;\n}\n\nexport interface UpsertShopConfigurationRequest {\n backendConfiguration: IBackendConfiguration;\n frontendConfiguration: IConfigurationCommonFrontendDynamoDB;\n}\n\nexport enum UpsertShopConfigurationOperationType {\n New = \"new\",\n Update = \"update\",\n}\n","import {\n defaultAvatar,\n defaultButtonColor,\n defaultLanguage,\n defaultOperationMode,\n defaultAccentColorLight,\n IBackendConfigurationCommon,\n IConfiguration,\n IWooCommerceConfiguration,\n OperationMode,\n OperationModeFE,\n WooCommerceApiVersion,\n defaultGreeting,\n} from \"./Configuration\";\nimport {\n IConfigurationCommonFrontendDynamoDB,\n UpsertShopConfigurationRequest,\n} from \"../Client/BackendResponse\";\n\ninterface UpsertShopConfigurationRequestCommon {\n backendConfiguration: IBackendConfigurationCommon;\n frontendConfiguration: IConfigurationCommonFrontendDynamoDB;\n}\n\nconst transformOperationMode = (operationMode: string) => {\n return operationMode === OperationMode.Production\n ? OperationModeFE.Production\n : operationMode === OperationMode.Test\n ? OperationModeFE.Test\n : OperationModeFE.Production;\n};\n\nexport const transformCommonProperties = (\n shopConfiguration: IConfiguration\n): UpsertShopConfigurationRequestCommon => ({\n backendConfiguration: {\n id: shopConfiguration.storeName || \"\",\n tenantId: shopConfiguration.storeName || \"\",\n type: shopConfiguration.platform,\n urlBase: shopConfiguration.storeUrl || \"\",\n },\n frontendConfiguration: {\n testMode: transformOperationMode(\n shopConfiguration.operationMode ?? defaultOperationMode\n ),\n language: shopConfiguration.language ?? defaultLanguage,\n avatar: shopConfiguration.avatar ?? defaultAvatar,\n buttonColor: shopConfiguration.buttonColor ?? defaultButtonColor,\n accentColorLight:\n shopConfiguration.accentColorLight ?? defaultAccentColorLight,\n widgetToLeft: shopConfiguration.widgetToLeft as boolean,\n minimizedMode: shopConfiguration.minimizedMode ?? false,\n flows: shopConfiguration.flows ?? [],\n customQnA: shopConfiguration.customQnA ?? [],\n greetings: shopConfiguration.greetings ?? defaultGreeting,\n tenantId: shopConfiguration.storeName || \"\",\n customerCategories: shopConfiguration.customerCategories ?? [],\n newArrivalTimeLimit: shopConfiguration?.newArrivalTimeLimit\n ? shopConfiguration.newArrivalTimeLimit\n : null,\n isNewArrivalTabDisabled: shopConfiguration?.isNewArrivalTabDisabled\n ? shopConfiguration?.isNewArrivalTabDisabled\n : false,\n isDailyDealsDisabled: shopConfiguration?.isDailyDealsDisabled\n ? shopConfiguration.isDailyDealsDisabled\n : false,\n activePromotion: shopConfiguration?.activePromotion\n ? shopConfiguration.activePromotion\n : \"\",\n activeExperimentId: shopConfiguration.activeExperimentId,\n experiments: shopConfiguration.experiments ?? [],\n },\n});\n\nconst transformToWooCommerceConfiguration = (\n shopConfiguration: IWooCommerceConfiguration\n): UpsertShopConfigurationRequest => {\n const commonConfiguration = transformCommonProperties(shopConfiguration);\n return {\n ...commonConfiguration,\n backendConfiguration: {\n ...commonConfiguration.backendConfiguration,\n productUrlPath: `wp-json/wc/${\n shopConfiguration.apiVersion || WooCommerceApiVersion.v3\n }/products`,\n categoryUrlPath: `wp-json/wc/${\n shopConfiguration.apiVersion || WooCommerceApiVersion.v3\n }/products/categories`,\n consumerKey: shopConfiguration.key,\n consumerSecret: shopConfiguration.secret,\n authStrategy: shopConfiguration.authStrategy,\n language: shopConfiguration.woocommerceLanguage,\n },\n };\n};\n\nconst transformToGenericConfiguration = (\n shopConfiguration: IWooCommerceConfiguration\n): UpsertShopConfigurationRequest => {\n const commonConfiguration = transformCommonProperties(shopConfiguration);\n return {\n ...commonConfiguration,\n backendConfiguration: {\n ...commonConfiguration.backendConfiguration,\n },\n };\n};\n\ninterface TransformationSpec {\n transform(shopConfiguration: IConfiguration): UpsertShopConfigurationRequest;\n}\n\ninterface TransformationSpecByPlatformType {\n [key: string]: TransformationSpec;\n}\n\nexport const backendTransformationByType: TransformationSpecByPlatformType = {\n woocommerce: { transform: transformToWooCommerceConfiguration },\n default: { transform: transformToGenericConfiguration },\n};\n","import { IConfiguration, newConfigurationId } from \"./Configuration\";\nimport {\n fetchShopConfigurations,\n saveShopConfiguration,\n} from \"../Client/backendClient\";\nimport { User } from \"../UserContext/User\";\nimport { dashboardTransformationByType } from \"./backendToDashboardTransformer\";\nimport { backendTransformationByType } from \"./dashboardToBackendTransformer\";\nimport { UpsertShopConfigurationOperationType } from \"../Client/BackendResponse\";\n\nexport async function saveConfiguration(\n configurationToSave: IConfiguration,\n user: User\n): Promise {\n const transformationSpec =\n backendTransformationByType[\n configurationToSave.platform\n ? configurationToSave.platform.toLowerCase()\n : \"\"\n ];\n\n if (transformationSpec) {\n await saveShopConfiguration(\n configurationToSave.id === newConfigurationId\n ? UpsertShopConfigurationOperationType.New\n : UpsertShopConfigurationOperationType.Update,\n user,\n transformationSpec.transform(configurationToSave)\n );\n } else {\n const defaultTransformationSpec = backendTransformationByType[\"default\"];\n await saveShopConfiguration(\n configurationToSave.id === newConfigurationId\n ? UpsertShopConfigurationOperationType.New\n : UpsertShopConfigurationOperationType.Update,\n user,\n defaultTransformationSpec.transform(configurationToSave)\n );\n }\n\n return new Promise((resolve) => {\n setTimeout(() => resolve(true), 50);\n });\n}\n\nexport async function loadConfigurations(\n user: User\n): Promise {\n if (user) {\n const shopConfigurations = await fetchShopConfigurations(user);\n return shopConfigurations.map((sc) => {\n const { type } = sc.backendConfiguration;\n if (type) {\n const spec = dashboardTransformationByType[type.toUpperCase()];\n if (spec) {\n return spec.transform(sc);\n }\n }\n const defaultSpec = dashboardTransformationByType[\"default\"];\n return defaultSpec.transform(sc);\n });\n }\n\n return Promise.resolve([]);\n}\n","import * as React from \"react\";\nimport {\n createContext,\n Dispatch,\n ReactNode,\n useContext,\n useEffect,\n useReducer,\n useState,\n} from \"react\";\n\nimport { IConfiguration } from \"./Configuration\";\nimport {\n clearTempConfiguration,\n ConfigurationAction,\n configurationsInitialState,\n localStorageConfigurationsReducer,\n setAllConfigurations,\n setCommonBackendConfiguration,\n SetCommonBackendConfigurationAction,\n setCommonFrontendConfiguration,\n SetCommonFrontendConfigurationAction,\n setCommonFrontendFAQs,\n SetCommonFrontendFAQsAction,\n setCommonFrontendFlowRules,\n SetCommonFrontendFlowRulesAction,\n setWooCommerceSpecificConfiguration,\n SetWooCommerceSpecificConfigurationAction,\n} from \"./configurationsReducer\";\nimport { loadConfigurations, saveConfiguration } from \"./configurationsApi\";\nimport { backendTransformationByType } from \"./dashboardToBackendTransformer\";\nimport { deleteStore, testShopConfiguration } from \"../Client/backendClient\";\nimport { useUserContext } from \"../UserContext/UserContext\";\n\nconst ConfigurationsLoadingContext = createContext(true);\nconst ConfigurationSaveContext = createContext(\n (configuration: IConfiguration) => {}\n);\nconst ConfigurationsRefreshContext = createContext(async () => {});\nconst ConfigurationDeleteContext = createContext((storeId: string) => {});\nconst ConfigurationErrorContext = createContext(undefined);\nconst ConfigurationsStateContext = createContext([]);\nconst ConfigurationsDispatchContext = createContext<\n Dispatch\n>(() => {});\n\nexport function ConfigurationsContextProvider({\n children,\n}: {\n children: ReactNode;\n}) {\n const { user } = useUserContext();\n const [loading, setLoading] = useState(true);\n const [state, dispatch] = useReducer(\n localStorageConfigurationsReducer,\n configurationsInitialState\n );\n const [configurationError, setConfigurationError] = useState(undefined);\n\n useEffect(() => {\n setLoading(true);\n loadConfigurations(user).then((configurations) => {\n dispatch(setAllConfigurations(configurations));\n setLoading(false);\n });\n }, [user]);\n\n async function save(configuration: IConfiguration) {\n setLoading(true);\n\n try {\n await saveConfiguration(configuration, user);\n } catch (err) {\n setConfigurationError(err ? err.message : \"Failed saving configuration\");\n setLoading(false);\n throw err;\n }\n\n const configurations = await loadConfigurations(user);\n dispatch(setAllConfigurations(configurations));\n setLoading(false);\n setConfigurationError(undefined);\n }\n\n async function refreshConfigurations() {\n const configurations = await loadConfigurations(user);\n dispatch(setAllConfigurations(configurations));\n }\n\n async function deleteStoreConfiguration(storeId: string) {\n await deleteStore(storeId, user);\n const configurations = await loadConfigurations(user);\n dispatch(setAllConfigurations(configurations));\n }\n\n return (\n \n \n \n \n \n \n \n {children}\n \n \n \n \n \n \n \n );\n}\n\nexport function useConfigurations() {\n const loading = useContext(ConfigurationsLoadingContext);\n const configurations = useContext(ConfigurationsStateContext);\n return {\n loading,\n configurations,\n };\n}\n\nexport const useConfigurationTester = (\n configuration: Partial\n) => {\n const [testingConfiguration, setTestingConfiguration] =\n useState(false);\n const [testingError, setTestingError] = useState(\n undefined\n );\n const { user } = useUserContext();\n\n return {\n testBackendShopConfiguration: async (\n successCallback: () => void\n ): Promise => {\n const spec =\n backendTransformationByType[\n configuration?.platform ? configuration.platform.toLowerCase() : \"\"\n ];\n if (!user || !spec || !configuration) {\n setTestingError(\n \"Internal error, unable to validate store configuration\"\n );\n return Promise.resolve();\n }\n\n setTestingConfiguration(true);\n try {\n await testShopConfiguration(\n user,\n spec.transform(configuration).backendConfiguration\n );\n setTestingConfiguration(false);\n setTestingError(undefined);\n successCallback();\n } catch (err) {\n setTestingError(err.message || \"Failed validating shop configuration\");\n setTestingConfiguration(false);\n }\n },\n testingConfiguration,\n testingError,\n };\n};\n\nconst isValidURL = (urlString?: string): boolean => {\n try {\n return /^(http|https)/.test(new URL(urlString || \"\").protocol);\n } catch (_) {\n return false;\n }\n};\n\nexport const useCommonBackendConfigurationValidator = (\n configuration: Partial\n) => {\n const [\n commonBackendConfigurationValidationError,\n setCommonBackendConfigurationValidationError,\n ] = useState(undefined);\n\n return {\n validateCommonBackendConfiguration: (successCallback: () => void): void => {\n const { storeName, storeUrl } = configuration || {};\n if (!storeName || !storeUrl) {\n setCommonBackendConfigurationValidationError(\n \"Store name and store URL are both required!\"\n );\n } else if (!isValidURL(storeUrl)) {\n setCommonBackendConfigurationValidationError(\n \"The entered store URL is not valid\"\n );\n } else {\n successCallback();\n }\n },\n commonBackendConfigurationValidationError,\n };\n};\n\nexport function useRefreshConfigurations() {\n return useContext(ConfigurationsRefreshContext);\n}\nexport function useConfiguration(id: string) {\n const configurations = useContext(ConfigurationsStateContext);\n const dispatch = useContext(ConfigurationsDispatchContext);\n const saveConfiguration = useContext(ConfigurationSaveContext);\n const deleteConfiguration = useContext(ConfigurationDeleteContext);\n const configurationError = useContext(ConfigurationErrorContext);\n return {\n configuration: configurations.find(\n (configuration) => configuration.id === id\n ),\n setCommonBackendConfiguration: (\n commonBackendConfiguration: SetCommonBackendConfigurationAction[\"commonBackendConfiguration\"]\n ) =>\n dispatch(setCommonBackendConfiguration(id, commonBackendConfiguration)),\n setCommonFrontendConfiguration: (\n commonFrontendConfiguration: SetCommonFrontendConfigurationAction[\"commonFrontendConfiguration\"]\n ) =>\n dispatch(setCommonFrontendConfiguration(id, commonFrontendConfiguration)),\n dispatchFlowRulesAction: (\n flowRulesAction: SetCommonFrontendFlowRulesAction[\"flowRulesAction\"]\n ) => dispatch(setCommonFrontendFlowRules(id, flowRulesAction)),\n dispatchFAQsAction: (\n FAQsAction: SetCommonFrontendFAQsAction[\"FAQsAction\"]\n ) => dispatch(setCommonFrontendFAQs(id, FAQsAction)),\n setWooCommerceSpecificConfiguration: (\n wooCommerceSpecificConfiguration: SetWooCommerceSpecificConfigurationAction[\"wooCommerceSpecificConfiguration\"]\n ) =>\n dispatch(\n setWooCommerceSpecificConfiguration(\n id,\n wooCommerceSpecificConfiguration\n )\n ),\n saveConfiguration,\n deleteConfiguration,\n configurationError,\n clearTempConfiguration: () => dispatch(clearTempConfiguration()),\n };\n}\n","export default __webpack_public_path__ + \"static/media/sidebar-background.730ca1e1.svg\";","export default __webpack_public_path__ + \"static/media/log-out.8b6628c9.svg\";","export default __webpack_public_path__ + \"static/media/placeholderImg.0c8079d5.svg\";","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 100,\n height: 39,\n fill: \"url(#pattern0)\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n}, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_5742_3404\",\n transform: \"translate(-0.000642633) scale(0.000305643 0.000783699)\"\n})), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_5742_3404\",\n width: 3276,\n height: 1276,\n xlinkHref: \"data:image/png;base64,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gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJRFZg+/ZJRtv7/2bsXMLvK+lD477v2zCQkJJMbt5kEAkZuEaXGr96Qg6Kt2mrbJGPAG5Za2n7WVtvT9nztaZva89mbFXus5+tBq1iLApPw1J7aCx5vPVapFUU0BBFCSCYBQshMQhKSmdlrff8d8AJCSMhc9uW3n2ee2Ze13vf//63Jztprv//3ze9u1fjbNe6c83Dq6n7D4OBgvV1zlBcBAgQIECBAgACBThRQMNOJR13OBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhMucCBB7b9aqwuc9qUd6zDwwpEwcxbt++6duthN/IiAQIECBAgQIAAAQItJ6BgpuUOmYAJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGg1gf7+Ny+sUv7tVou73ePNOf3PoZF1N7R7nvIjQIAAAQIECBAg0IkCCmY68ajLmQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBKRWoHtr3e1VV9U5ppzo7vEDO/9o9f+47Dr+RVwkQIECAAAECBAgQaFUBBTOteuTETYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBASwgsnjuwLKf0Sy0RbKcEmfPNs2ozX7N589UHOiVleRIgQIAAAQIECBDoNAEFM512xOVLgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCUClS5/OMqVd1T2qnODiOQbzt+ds8r79x1zZ7DbOQlAgQIECBAgAABAgRaXEDBTIsfQOETIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINC8AkvnXbK0qtJPN2+EHRZZznfXerpfccf2T+zssMylS4AAAQIECBAgQKDjBBTMdNwhlzABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAlMlsHnk2s1dteKinPOmqepTP08sEMfg67k288KtO6/d/sRbeJYAAQIECBAgQIAAgXYSUDDTTkdTLgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINJ3AluHBL87rKZ6TcvpQ0wXXIQHlnNadPHvhBdt2XTPUISlLkwABAgQIECBAgEDHC3R1vAAAAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITLLAhgcG90YXP98/f/Unq3rZKJw5aZK71PwjAlVR5D/cOrxubawwU0EhQIAAAQIECBAgQKBzBKww0znHWqYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECEyzwLbhdf9QpNq5OeUrc0oHpzmctu4+CmR25Vx73dDI+t9XLNPWh1pyBAgQIECAAAECBJ5QQMHME7J4kgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApMjMLRncNe2Pet/radIZ0XhzMdSyuXk9NS5rUaBzGDPjJ5zt+0eXNe5CjInQIAAAQIECBAg0NkCCmY6+/jLngABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBaRK4e+SGe6Jw5s1FLf1IFM780zSF0Vbdxqo999aK/DPbdq9/3d07PnF/WyUnGQIECBAgQIAAAQIEjkpAwcxRcdmYAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECEyswNLz+1iiceXXu6n5hKtI1UfRxcGJ7aP/WDpkV+S+7i7nnbh1Z/3ftn7EMCRAgQIAAAQIECBB4KoGup9rA6wQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAw+QLbdl13U/Ry07KTB9758MP1t1Yp/0KqqtMmv+fW7eFQoUxOf51qx/3R9l3XDLVuJiInQIAAAQIECBAgQGCiBawwM9Gi2iNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMAxCNx53+AD23bf8EdXvPO8M1Itvzan/I/xM3YMTbbdro1CmaLIH0hdxy0Lq7dtUyzTdsdYQgQIECBAgAABAgSOVcAKM8cqaH8CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhMgsDatWvLaPZ/NX7OmD/QO1qv/0SV809XKb0qVp45fhK6bPomc07fSLm4+riZ+ZpGYVHTByxAAgQIECBAgAABAgSmTUDBzLTR65gAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJHJrBpeHB3bPnxxs/SpW+ZObZ778ursvrpKJz5yXjupCNrpVW3yg/EijIfT0Vx9baRwVtaNQtxEyBAgAABAgQIECAwtQIKZqbWW28ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4JoHNm68+EA38w6M/qX/RmjOr8fELclVdkKp8QZWqZx5TB9O+cy5zrr6aUv50zsWnT3rG/C/dfPNVY9MelgAIECBAgAABAgQIEGgpAQUzLXW4BEuAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHHCmzbed0d8Uzj58ONV55x0ptOPHjw4QuqKr0oimfOy6k6N+4vbrzWjLdYPeZgyvm2lKqv5CiSKdKMz27Z/fHh78Y6dPN37/lNgAABAgQIECBAgACBIxdQMHPkVrYkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAWwi88ReXP/jR9926dNqS6ZnRmBXfrVUEjp/92zP27X33dIVbW3DyfWnXdPWuXwIECLSmwF33f2xHRH7Doz+Hkjhr0eVz9o0+dE5VlOdUVT43VqM5t0rp9JzTKVVVLZiSTHPaHwUx21OVbk+5ujX6v7W7q/vWH31Zecfg4GB9SmLQCQECBAgQaBUBn8Va5UiJkwCBJhaI4nw3AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOhUgeXLB3qG762dVIzXTymLdHJRlSeXVfzO6fgyVzNzlWekqpoZq8DMbPyu4ncMPOuJgpfRKLw5EM8fiOcP/Y6VbA79LlL5YCry9qrM93Z11bbXynL7puHB3Z1qLG8CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC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PlTl+nBEfrjU1aFS1YcbdbTN9aHSiPs6HWzU1YHFSwcOHFm0+MG5Oo64K4J2I0CAAAECBAgQIEBg5gIXn/MT5x4+fOSXZ76nPQgQmK1AfK4eVywzWz379aqAgplenVl5EXgSgY0bx6NIJd336M+TtOqSl/d0SZzCJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6DuBRwtwWiuTWJ1kIWe/VfLkRoAAAQIECBAgQIBA2wWOHD7yH6NA/oy2ByIAAn0kUFXVB/ooXakSmJZA6+owbgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEDhlgQtXrL08VpX8p6fckQ4IEJi2QKwM+83tD9z8mWnvoCGBPhFQMNMnEy1NAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAvMtMNVMv5VSacz3OPonQOBxArlYXeZxHB4SeExAwcxjEu4JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJi1wOjQ2rWplFfOugM7EiAwC4HczAOND85iR7sQ6HkBBTM9P8USJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDC/As8+941LSyrvnN9R9E6AwLECOaVP7rh/fOexr3tOgEBKAxAIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwKgJ7Dj38q6mkC06lD/sSIDALgVy9fxZ72YVAXwhYYaYvplmSBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOZHYPVZa5+WS3rH/PSuVwIEnkwgVpe5f3g0/emTbfc6gX4XUDDT778B8idAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwCgKTU+k9JZXBU+jCrgQIzEKgpPyRjRvHj8xiV7sQ6AsBBTN9Mc2SJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDD3AiPDa3+mlPLDc9+zHgkQOJlArqoPnKyN7QT6WUDBTD/PvtwJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzFJg9cqx81JJ75zl7nYjQOAUBHLOX965b/wrp9CFXQn0vICCmZ6fYgkSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmHuBySP178bqMsvnvmc9EiBwMoFc0vtP1sZ2Av0uoGCm338D5E+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBghgIjQ2PXRLHM1TPcTXMCBOZAIKd0OKXqj+agK10Q6GkBBTM9Pb2SI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDC3AqPLxlaU0nzP3PaqNwIEpi2Q85/s2D++d9rtNSTQpwIKZvp04qVNgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYDYCJTd/N/Y7dzb72ocAgVMXyDn/3qn3ogcCvS+gYKb351iGBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOZEYHTZNW8oJb1+TjrTCQECsxDIX9+x7+ZbZ7GjXQj0nYCCmb6bcgkTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmLnAxcNXX1Ryaa0u40aAQJsEqiq9t01DG5ZA1wkomOm6KRMwAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYUVWLduXXW4zh8qpQwt7MhGI0DgOwI5PTyQzvzgd557QIDACQUUzJyQx0YGP05uAABAAElEQVQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBH7/nX//yymVl5AgQKB9AlXKN27Zd/2+9kVgZALdJaBgprvmS7QECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEFlRgZMXYVamUdQs6qMEIEPgegZzSe7/nRS8QIPCkAgpmnpTGBgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQL9LbDmvLGVqdn8aEllsL8lZE+gzQI5b9g+sf6LbY7C8AS6SkDBTFdNl2AJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQILIzAunXrqocPNj9SShpdmBGNQoDAkwlUqVhd5slwvE7gSQQUzDwJjJcJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI9LPAH7zrzn+fSnpFPxvInUAnCOScJ85devYNnRCLGAh0k4CCmW6aLbESIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWACBC5atfVVdl19dgKEMQYDASQRKLh/csOu6h0/SzGYCBI4RUDBzDIinBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpZYHTl2svqnFqrWeR+dpA7gU4RGKgav9cpsYiDQDcJKJjpptkSKwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIF5FFg9/Kbhcjj9WSll+TwOo2sCBKYrkPNfb9s7/tXpNteOAIHvCiiY+a6FRwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgT6VuBlL1s3MFkOjJdUntq3CBIn0GkCJb+300ISD4FuEVAw0y0zJU4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC8yiw6St3vitWlvkH8ziErgkQmJnAt5dfkG+Z2S5aEyDwmICCmcck3BMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoU4HRZde8ra7Lv+jT9KVNoDMFcn7/xo3jRzozOFER6HwBBTOdP0ciJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDBvAiNDa19Xp/KueRtAxwQIzEIgNxflwffNYke7ECDwqICCGb8KBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpUYGTomh9OJX0opeK84j79HZB2ZwrknP5ky74bt3RmdKIi0B0C/sPWHfMkSgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJzKnDR0LXfV1L9xyWVRXPasc4IEDhlgUZVWfXplBV10O8CCmb6/TdA/gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAn0nMLpy7WWTZfLjsbrMmX2XvIQJdLpAzhu2PTD+2U4PU3wEOl1AwUynz5D4CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMyhwOiysTXlSPqr6PKcOexWVwQIzJFAVfI756gr3RDoawEFM309/ZInQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoJ4ELhq69tOTmX5VSRvopb7kS6BaBnNKucy9b8dFuiVecBDpZQMFMJ8+O2AgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMkcCFQ2svqdPkraWk0TnqUjcECMy1QK5+d8OG6ybnulv9EehHAQUz/TjrciZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOgrgdbKMs1UFMv01axLttsEcs4Hly4dvK7b4hYvgU4VUDDTqTMjLgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJzIDAyfO1zmmXqs7GyzAVz0J0uCBCYJ4GS0ofv2nXDnnnqXrcE+k5AwUzfTbmECRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+kXgguGrX5rK1KdTKuf1S87yJNCtAgON9NvdGru4CXSigIKZTpwVMREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4RYFVw2Ovrev8f0spQ6fYld0JEJhvgZw/uW3v+o3zPYz+CfSTgIKZfpptuRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPSFwOjQ2p9NdX1LSeW0vkhYkgS6XKCq8ru6PAXhE+g4AQUzHTclAiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwO4GxsbHGyLKr31mXcl1KpTG7XuxFgMDCCuSvb987/omFHdNoBHpfYKD3U5QhAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgd4XuGT52NDffLJ5Y2T6I72frQwJ9I5Azum3c86ldzKSCYHOELDCTGfMgygIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzFrggqFrLz3UbP5tKoplZo1oRwJtEIhCmb3nLT3rg20Y2pAEel5AwUzPT7EECRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEellgdHjsx+s0+cXI8em9nKfcCPSiQCwrc92GXdc93Iu5yYlAuwUG2h2A8QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmLnA5ZePLdq3vf5vdd18+8z3tgcBAu0WyCkfGlxU/Xa74zA+gV4VUDDTqzMrLwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZ4VWD38+tX7dhz5aKxO8fyeTVJiBHpdIKcPbLlv/J5eT1N+BNolULVrYOMSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDBzgZHhq984WY58uRTFMjPXsweBThHIzYFU/fdOiUYcBHpRwAozvTirciJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOg5gdUrx86bPNx8X6nTa3suOQkR6DeBnG7aOjG+ud/Sli+BhRSwwsxCahuLAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwCwEVi275vVRLPP3JSmWmQWfXQh0mkCpquq/dlpQ4iHQawJWmOm1GZUPAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAzwisHn796sn6yG+XVL82imXcCBDoAYGc8v/Z8cD4nT2QihQIdLSAgpmOnh7BESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI9KPAmjVvW3zw27t/abJM/n9RKLOkHw3kTKBXBcpA/i+9mpu8CHSSgIKZTpoNsRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPS9wOjyta8+eN/O34lCmUuTZWX6/vcBQK8J5M/s2nvzbb2WlXwIdKKAgplOnBUxESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI9J3A6LKx7y+5/q91s7y875KXMIE+EagaVpfpk6mWZgcIKJjpgEkQAgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINA5AqWU/LyRn1tyIB04/aFD1WnzGdngssE9W7Zcf2g+x9B35wtcdNa1T5+cmvz1ujR/3IoynT9fIiQwW4Gc81d2PHDzx2e7v/0IEJiZgIKZmXlpTYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPSAwOrhNw1P5QevKnV9RUn54pzSJZHWxSWlc0eG1p4ej+Ol+b8d2XuwjCy7+p6I4e4YcHOqyuaSqs1VPF+U0+affvvlO9atW1fPfyRGaIfAhSvWXt6cSv9mcnLqJ2P8RjtiMCYBAgsnUFL5rws3mpEIEFAw43eAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6HmBK6986+C9d9//ilKX18YCMj9wpN7/jEj60aKYOIW5fQI5xj4/pXJ+3L84HS2NqY/etZad+f3funNyZOjqbbEtCmry5lZRTZ3K5kYZvHvJGdXmu3bdsKd9oRt5tgIXLh/7gWaz/jdTU+U10ceCFGfNNlb7ESAwNwKxusymF72yunl8fG760wsBAicXUDBzciMtCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgS4VGB0e+8G61G+8Z9P9V5dSlj+SRhvLY2boGKU8g1HNc2nsdmmrrOexyJtpMj34YEqrhtY+2CqiKaVVUFM25ypvrmNlmoGc7h4ePH3LHfd+6KEZDqn5PAm0irbu2bT3H6dSfmGq2XzRPA2jWwIEOlQg/lb/t/Hx8WaHhicsAj0poGCmJ6dVUgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoH8FxsbGGrd9slwd5SW/VNfN57UkHis06TmVUs6I3J4VeT2rlWOsoHM0xan4/z1TD6VVy67+dmtlmhIFNEcLalK1OVpsHkj57oufe/n2W29d12rqNo8CFwxde2kzTf3s7m/u+ScxzDnzOJSuCRDoUIEoltl92spVH0wTHRqgsAj0qICCmR6dWGkRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIF+FLhgeO0/vu2T9X+P1WTW9GP+x8n5nCgcOicqhl5wtKAm1UebTMb/3/WlO5urhq7efrSgJrUKatLmXMrmMtDYvGhg4O7N377h3uP056VpCKxZ8YZlB+vDrdVk3tgskz8cuwSvGwEC/SoQq3/95qZN7z7cr/nLm0C7BBTMtEveuAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCcCYwuG1tTUv07zbr8wznrtOc7Ko0opFkdBTWrI9WXP1JQE4+mmulw/EQxzcOp5C2tlWlK1SqoyZurKKqp08DmJdXA5k17P7K/54lmkOCzz33j0gcOPvzaZkrXHpw6+CPhuXgGu2tKgECPCkS13K6B4TPfl/b1aILSItDBAgpmOnhyhEaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAicXGB0eO3bS938TQUKJ7eaUYuSTk+pPCNcn9FamCYKa1IUg8RtMj1cT6aRZVffX3Le3FqZJtp8p6CmLCqbh86ptm7cOH5kRuN1YePRlWsvS4dzFMeUH7n/0MNRdFSWtNIIDzcCBAgcFSgp/8aWLdcfwkGAwMILKJhZeHMjEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAnMgcMnysaFDdfMDdV1+fA6608UMBaIo5KxUyllx/7zWrt8pqDmc0gPb63pk6OqdcaL45lweLaipyuZGbmyuq7R5+56P7so5tnTZbWTFG0ZT89CLItsfTCn/SH24XPKd8piuy6bL8IVLoAsFck7bl6xc9QfJelxdOHtC7gUBBTO9MItyIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC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AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwPEFSmlec/wtXiVAgAABAh0mkMuvb5v4owc6LCrhECDwOAEFM4/D8JAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBon0Ap9dr2jW5kAgQIECAwTYGctiw5e+Q902ytGQECbRJQMNMmeMMSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC3xW4aGjs4lLSM7/7ikcECBAgQKAzBaqSfmXTpncf7szoREWAwGMCCmYek3BPgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItE2gWdUvbtvgBiZAgAABAtMVyHnD9on1N0y3uXYECLRPQMFM++yNTIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDwmUNILH3vongABAgQIdKpAzuUXc/xfp8YnLgIEviugYOa7Fh4RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECbRKoS7mqTUMblgABAgQITEsgp/yxnftu+atpNdaIAIG2CyiYafsUCIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPS3wNjYWCOX/Kz+VpA9AQIECHSyQBTLTJZF1Ts6OUaxESDwRIGBJz71jAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwsAJf/PPmaElpcGFHNRoBAgQIEJi+QMn5nbv2jH9j+ntoSYBAuwWsMNPuGTA+AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoc4HJ1Fjd5wTSJ0CAAIEOFsgp7Vq+KP+nDg5RaAQIHEdAwcxxULxEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQILJxASfXqhRvNSAQIECBAYGYCVcr/78b7xh+c2V5aEyDQbgEFM+2eAeMTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIF+Fyh5pN8J5E+AAAECnSmQc/r09v3rb+jM6ERFgMCJBAZOtNE2AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMD8C5TT538MIxAgQIAAgZkK5GauqrfNdC/tCRDoDAErzHTGPIiCAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAj0r0ApS/s3eZkTIECAQAcL/O6OB8bv7OD4hEaAwAkEFMycAMcmAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYAEEcrbCzAIwG4IAAQIEZiTw7dMa1a/NaA+NCRDoKAEFMx01HYIhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJ9KFDSkj7MWsoECBAg0MkCVfXLdz8wPtHJIYqNAIETCyiYObGPrQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMD8C+T5H8IIBAgQIEBgegI55dt3PjB+/fRaa0WAQKcKKJjp1JkRFwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgssECuq5z+Zc65LPDAhiNAYI4FFMzMMajuCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKA7BXJOf7B9Yv0XuzN6URMg8HgBBTOP1/CYAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPpUIN+Xzlj6b/s0eWkT6DkBBTM9N6USIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGZCjRSevvOnR+8f6b7aU+AQGcKKJjpzHkRFQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgskEBO6f9s37/+hgUazjAECCyAwMACjGEIAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQmQI5HSiNRf+sM4MTFQECsxWwwsxs5exHgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAt0vUKpf3rX3xu3dn4gMCBB4vICCmcdreEyAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECfSSQ/2bnxPh7+yhhqRLoG4GBvslUogQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4FGBnNLhwcH0lpxzgUKAQO8JWGGm9+ZURgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwMoGc/9OW+9d//WTNbCdAoDsFFMx057yJmgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmKRCrytxx3pqz/tssd7cbAQJdIKBgpgsmSYgECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMFcCuVmVgbds2HDd5Fz1qB8CBDpPQMFM582JiAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgngRySr+9ff9NX5in7nVLgECHCCiY6ZCJEAYBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzK9Azvnu884461fndxS9EyDQCQIKZjphFsRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAvMskOtGVf3Mhl3XPTzPA+meAIEOEFAw0wGTIAQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmF+BWF3mN7c9MP7Z+R1F7wQIdIqAgplOmQlxECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMD8COT0pfPWrPj389O5XgkQ6ESBgU4MSkwECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAuBGJlmYMDAwM/tWHDdZNz0Z8+CBDoDgErzHTHPImSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYhkEv6pa333/S1WexqFwIEulhAwUwXT57QCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOAEAjl9Ysf+9e85QQubCBDoUYGBHs1LWgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQxwI5pfsHBk9/cx8TSJ1AXwtYYaavp1/yBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6E2BXFVv3brnw7t7MztZESBwMgEFMycTsp0AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEukog5/SBHftuvqWrghYsAQJzKjAwp73pjAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItFEg53z3GYNDb29jCIYmQKADBKww0wGTIAQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmAuB3CyN/MZv7Hn/gbnoTR8ECHSvgIKZ7p07kRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDA4wSqnP7drr033/a4lzwkQKBPBRTM9OnES5sAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQK9JJBT/t/b9938m72Uk1wIEJi9wMDsd7UnAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoAIGcNzfS4p/OOZcOiEYIBAh0gICCmQ6YBCEQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwOwEckqHG6ka2zbxRw/Mrgd7ESDQiwJVLyYlJwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoE4FcvX3bxPiGPslWmgQITFNAwcw0oTQjQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgc4SyCl/eOfEze/rrKhEQ4BAJwgomOmEWRADAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMxQIG88a8npPz/DnTQnQKBPBAb6JE9pEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECvCOT84KKBdM0d937ooV5JSR4ECMytgIKZufXUGwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMu0B5y5b7b/n6vA9jAAIEulag6trIBU6AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC/SdQ5ffsmrjlpv5LXMYECMxEQMHMTLS0JUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIG2CeScPn3+pWe9o20BGJgAga4RUDDTNVMlUAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPSvQBTLfCudccbaDRuum+xfBZkTIDBdAQUz05XSjgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTaIhDFMvsGB/KP7tz5wfvbEoBBCRDoOgEFM103ZQImQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAXwlMNVLjdVvuX//1vspasgQInJKAgplT4rMzAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMynQM75/9k2Mf7n8zmGvgkQ6D0BBTO9N6cyIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQG8IVOndOyfWv7c3kpEFAQILKaBgZiG1jUWAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC0xPI6RMvfkXjX02vsVYECBB4ooCCmSd6eEaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECbRfIXz29seTa8fHxZttDEQABAl0poGCmK6dN0AQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOhZgT2DufrRTXs/sr9nM5QYAQLzLqBgZt6JDUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC0xHIKR8aaDR+fOvE+ObptNeGAAECTyagYObJZLxOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgspMFUa6XXbHhj/7EIOaiwCBHpTQMFMb86rrAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBNAuX/b+/eg+wsz8OAv8939qIbunAHYYxtIFNkcCh1zcWZ4sQBe5I68WXBSeq0prWbmSZp3WHqmfxRb5O0Td00bULbTPBM62Jz89GCXTtt0jhExdeMUXDsCixbCCHtithIWq0ACUl7ztt3sc0oIO2e1eocnctvZ3bOOd/3fO/7PL/3rAbOOc95o0q37Z6e+GwvJS1XAgS6V0DDTPeujcwIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwEAJVFR+a2v/AJwaiWEUSINARAQ0zHWE2CQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgcT6A0y/z65P6J3z3eOccIECBwsgIaZk5WznUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsCSB0izzX0qzzEeWNIiLCRAgcBwBDTPHQXGIAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBNosEHHPrumNv9LmWQxPgMCACgwNaN3KJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHTJBAp/eFlV1/59yMin6YUTEuAQJ8L2GGmzxdYeQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOgygS/G6trYpk3js12Wl3QIEOgjAQ0zfbSYSiFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEA3C0Skry2r1X56crJ+qJvzlBsBAr0voGGm99dQBQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOh6gUjpK8try9+6fbo+0/XJSpAAgZ4X0DDT80uoAAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHS5QMTDa0drN23bd/eBLs9UegQI9ImAhpk+WUhlECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoBsFItJDF6w86+1bnqk/1435yYkAgf4U0DDTn+uqKgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECJx+gYg/jjNqP715950HT38yMiBAYJAENMwM0mqrlQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAh0SiBSfW3HOhT8zOVk/1KEpTUOAAIGXBDTMvEThDgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAicEoFID55/2Vnv2rbtjsOnZDyDECBAYJECGmYWCSacAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBE4sEBGfuvzqq27ZvPnOoyeOcoYAAQLtFdAw015foxMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBgBCKlu66/qfr5TZvGZwemaIUSINCVAkNdmZWkCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCnBCKqfzs1s/HX6vWeSluyBAj0qYCGmT5dWGURIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgMwLRiIh/Uppl/qAz85mFAAECCwtomFnYSAQBAgQIECBAgAAB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FLGzj0tUGgECBE5eIOLJiLh1auaBn9Asc/KMriRAoH8FNMz079qqjAABAgQIECBAgAABAicUuO4nq18vbyw8fMIAJwgQeJlAfOmyq6/6yMsOekiAAAECBAgQIECAAAECBAgQIECAAAECBAi0WWDnzD3TUaveW6aZbfNUhidAgEDPCJQmmZkq0odXnHPh35iamfhUzyQuUQIECHRYIDo8n+kIECBAgAABAgQIECBAoEsELj1/7JxDB5tfyilf1iUpSYNAVwqU7cufGBkdveHJ79373a5MUFIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAABC5c857bU27++wEoVYkECBCYT2C2vH9558qVox/59u5798wX6BwBAgQIpKRhxrOAAAECBAgQIECAAAECAyxwydr3XnK0eeTLOaULBphB6QTmE/juUMT1O2cmts8X5BwBAgQIECBAgAABAgQIECBAgAABAgQIECDQfoH1a979+znnX2r/TGYgQIBA9wlEiv81NDx0+1N773+8+7KTEQECBLpToOrOtGRFgAABAgQIECBAgAABAp0Q2LH/vh1Ri7eVb6DZ34n5zEGgpwQiDqQq3q5ZpqdWTbIECBAgQIAAAQIECBAgQIAAAQIECBAg0McC199U/XL5nvDP9HGJSiNAgMArBCLiGyniJ6cOTPyUZplX8DhAgACBeQU0zMzL4yQBAgQIECBAgAABAgT6X2ByeqK8uDZ8Y9mC9On+r1aFBFoW+G7Zl/fG3fsnHm35CoEECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAWwXq9XqjWl39XPkyuP/b1okMToAAgS4QKP/W7aqi+sAHPnTl1btnJj7fBSlJgQABAj0nUD4P5YcAAQIECBAgQIAAAQIECKT06jVjr5nNzT/OKV/Gg8AgC5QXnp+o0vDNu2buf2KQHdROgAABAgQIECBAgAABAgQIECBAgAABAgS6VeCii8aW5wONek7pp7o1R3kRIEDgpAUi7YhU/dbai+K/b9lSP3LS47iQAAECBJIdZjwJCBAgQIAAAQIECBAgQOBFgadm6k8uW77izeXBF5EQGFSBSPHlkdHRGzTLDOozQN0ECBAgQIAAAQIECBAgQIAAAQIECBAg0AsCk5P1Q9ffXPuZFPHveiFfORIgADm4YgAADRBJREFUQKAVgYjYXkX6RxdcevblUzMb/0CzTCtqYggQIDC/QG3+084SIECAAAECBAgQIECAwCAJTD//jeff9o7X3zW5PQ+VuueaZ+xMOkhPgMGuNZc31T56+d+88he/vuU/PzvYFKonQIAAAQIECBAgQIAAAQIECBAgQIAAAQLdL/DYY4/lZw8//vnVKzZsTjn9eMl4VfdnLUMCBAi8UqB8qd93okq3X3b1VR/8xtbf3/z005ubr4xyhAABAgRORsAHn05GzTUECBAgQIAAAQIECBAYAIFXrXnPTc3c/HjZyv6CAShXiQMtEH9Vper9kwfqfzTQDIonQIAAAQIECBAgQIAAAQIECBAgQIAAAQI9KnDR6rEzc2r8x/K+1vtKCT4X2aPrKG0CgyZQGmW2Ri395nVvre6t1+uNQatfvQQIEOiEgP8w7ISyOQgQIECAAAECBAgQINCjAj9y9m1nPHf0wEdSzr+aUx7u0TKkTeBEArPlReg7lg8tG9+27+4DJwpynAABAgQIECBAgAABAgQIECBAgAABAgQIEOgNgfVn3nptahz9vZzTG3sjY1kSIDCIAhHx9Sqnj/7Df37l/ePj43aTGcQngZoJEOiYgIaZjlGbiAABAgQIECBAgAABAr0rcPGZY1c0Zpu/XZpm3t67VcicwDECkf5oqBa379w3seWYo+4SIECAAAECBAgQIECAAAECBAgQIECAAAECPS6Qc45XrRt7Z87Nf1UaZ17f4+VInwCB/hGYLY0yD1ZV3LFreuMX+qcslRAgQKC7BTTMdPf6yI4AAQIECBAgQIAAAQJdJbB+7a1vyHn2X5QdZ24piQ11VXKSIbCgQDRSpE9FVB+d2l//+oLhAggQIECAAAECBAgQIECAAAECBAgQIECAAIGeFXipcabZvD2ndF3PFiJxAgR6XWBPeX/yY6k2+l+n9t092evFyJ8AAQK9JqBhptdWTL4ECBAgQIAAAQIECBDoAoHXrhu7+HAz/72U8nvLmw1XdkFKUiBwQoGI9P9SivtGIn/yyf0PPHXCQCcIECBAgAABAgQIECBAgAABAgQIECBAgACBvhS4eN27bmg041dSTu/MKY/0ZZGKIkCgqwTKbjJfz5HuGFl7xj07dnz8ha5KTjIECBAYIAENMwO02EolQIAAAQIECBAgQIBAOwQuPnPsikYj/2xOzR+LFNeVBpo17ZjHmARaFog4UGK/Ul70+EKtlj69c9/ElpavFUiAAAECBAgQIECAAAECBAgQIECAAAECBAj0rcDrznvfuYdfOHhbeT/r/WXXmcv7tlCFESBwmgSiEZEfrKrq93ZNb/zCaUrCtAQIECBwjICGmWMw3CVAgAABAgQIECBAgACBpQmMj49XH/tPj5cdZxpvKP/D+drczK8rI762/J5TdqNZmSJWlm/uWlG+uWt4aTO5eoAFZsu3MT2fcn6+7BpTfvOecvtEVGl7eWNre0rVX37gn234RnkuNgfYSOkECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAAgLrz7z12tSY/cXynsMt5T2GsxYId5oAAQLzCMRjVcRdaSg+Obm3PjVPoFMECBAg0GEBDTMdBjcdAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0B0CN944PrT90S1vmU2NWyKnd2qe6Y51kQWB7heIZ1KV7xvKtf+xc6a+ufvzlSEBAgQGU0DDzGCuu6oJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBYwTGxsZqX/2Txg3NXL0j5ebfLc0zlx9z2l0CBAZcIFIcSZE+m6O664LXrfvfmzffeXTASZRPgACBrhfQMNP1SyRBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoNMCF53z7svS4XhbTs2bc8SNKeeVnc7BfAQInH6B8mHrr6aIu2pp9L6dM/dMn/6MZECAAAECrQpomGlVShwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwkAIbNoyNzEzl60vzzI/nZnpL2WniTTnl4YHEUDSBvheIRkT+YmmS+cxQrj791Ez9yb4vWYEECBDoUwENM326sMoiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE2iNwzYUfXPHM89M3NKLxYynHm0vzzJtSTivaM5tRCRBou0CkgynF/4lIn04rV35uauquvW2f0wQECBAg0HYBDTNtJzYBAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0M8CN944PvTEXzx+da5mr885X5vLDjQp59f0c81qI9D7AvFMFemzzag+U61K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\"\n}));\n\nfunction SvgSidenavLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 100,\n height: 39,\n viewBox: \"0 0 100 39\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSidenavLogo);\nexport default __webpack_public_path__ + \"static/media/sidenav-logo.ad9e1eed.svg\";\nexport { ForwardRef as ReactComponent };","import { createSvgIcon } from \"@material-ui/core\";\n\nexport const AIIcon = createSvgIcon(\n \n \n \n \n \n \n \n ,\n \"AIIcon\"\n);\n","import {\n AppBar,\n Grid,\n IconButton,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Theme,\n Toolbar,\n Typography,\n} from \"@material-ui/core\";\nimport {\n DynamicRoutePath,\n IStoreRouteParams,\n StaticRoutePath,\n} from \"../../AppRoutes\";\nimport * as React from \"react\";\nimport { NavLink, useParams } from \"react-router-dom\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\nimport { Title } from \"../Title/Title\";\nimport { NavLinkProps } from \"react-router-dom\";\n\nimport {\n useConfiguration,\n useConfigurations,\n} from \"../ConfigurationsContext/ConfigurationsContext\";\nimport { useUserContext, isAdmin } from \"../UserContext/UserContext\";\nimport sidebarBgImg from \"./../../common/SVG/sidebar-background.svg\";\nimport logOutIcon from \"./../../common/SVG/log-out.svg\";\nimport palceholderBgImage from \"./../../common/SVG/placeholderImg.svg\";\nimport { ReactComponent as Logo } from \"./../../common/SVG/sidenav-logo.svg\";\nimport { Add } from \"@material-ui/icons\";\nimport { newConfigurationId } from \"../ConfigurationsContext/Configuration\";\nimport DeleteOutlinedIcon from \"@material-ui/icons/DeleteOutlined\";\nimport CompareIcon from \"@material-ui/icons/Compare\";\nimport { AIIcon } from \"../Icons/AIIcon\";\nconst UpsyNavLink = React.forwardRef(\n (props: NavLinkProps & { activeClassName: string }, ref) => (\n {\n return `${props.className} ${\n activeProps.isActive ? props.activeClassName : \"\"\n }`;\n }}\n >\n {props.children}\n \n )\n);\n\nconst getPublicFile = (path: string) => `${process.env.PUBLIC_URL}${path}`;\nconsole.log(process.env.PUBLIC_URL);\n\nexport type NavigationPropsType = {\n onOpenDeleteConfirm: () => void;\n};\nexport function DesktopNavigation({\n onOpenDeleteConfirm,\n}: NavigationPropsType) {\n const { user, logOut } = useUserContext();\n const classes = useDesktopClasses();\n const { configurations } = useConfigurations();\n const { id = \"\" } = useParams();\n const { configuration } = useConfiguration(id);\n\n return (\n
\n \n \n \n \n \n
\n \n {user?.name}\n \n {\" \"}\n {configuration?.storeName?.replace(\"ups-\", \"\")}\n \n \n \n \n \n {isAdmin(user) ? (\n \n \n \n \n \n \n ) : null}\n {configurations.length > 1 ? (\n \n \n \n \n \n \n ) : (\n <>\n )}\n {id && id != newConfigurationId ? (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {isAdmin(user) ? (\n {\n onOpenDeleteConfirm();\n }}\n >\n \n \n \n \n \n ) : null}\n \n ) : (\n <>\n )}\n \n \n \n \n \"Account\"\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport function MobileNavigation({ onOpenDeleteConfirm }: NavigationPropsType) {\n const classes = useMobileClasses();\n const { id = \"\" } = useParams();\n const { logOut, user } = useUserContext();\n return (\n \n \n \n \n upsy\n \n \n \n {isAdmin(user) ? (\n \n \n \n ) : null}\n {id && id != newConfigurationId ? (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {isAdmin(user) ? (\n {\n onOpenDeleteConfirm();\n }}\n >\n \n \n ) : null}\n \n ) : (\n <>\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst useDesktopClasses = createUseClasses((theme: Theme) => ({\n nested: {\n paddingLeft: theme.spacing(4),\n },\n logo: {\n justifyContent: \"center\",\n margin: 0,\n padding: 0,\n marginTop: 32,\n paddingBottom: \"16px\",\n },\n flex: {\n display: \"flex\",\n },\n avatar: {\n marginRight: \"12px\",\n height: \"48px\",\n width: \"48px\",\n backgroundColor: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0px 6px 12px rgba(0, 0, 0, 0.1)\",\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"cover\",\n flexGrow: 0,\n flexShrink: 0,\n },\n active: {\n background: \"rgba(192, 210, 255, 0.36)\",\n color: theme.palette.text.primary,\n position: \"relative\",\n \"&:before\": {\n width: \"8px\",\n height: \"100%\",\n background: \"rgba(178, 200, 255, 1)\",\n position: \"absolute\",\n left: \"-8px\",\n content: '\"\"',\n \"border-radius\": \"4px 0px 0px 4px\",\n },\n },\n topListItemWrapper: {\n borderBottom: \"1px solid #F1F4F8\",\n paddingTop: 0,\n },\n middleListItemWrapper: {\n flex: 1,\n marginTop: \"55px\",\n marginBottom: \"50px\",\n color: theme.palette.text.secondary,\n },\n bottomListItemWrapper: {\n color: theme.palette.text.secondary,\n },\n listContainer: {\n paddingLeft: \"2em\",\n height: \"100vh\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n backgroundImage: `url(\"${sidebarBgImg}\")`,\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"cover\",\n },\n customScrollbar: {\n overflowY: \"auto\",\n \"scrollbar-width\": \"thin\",\n \"scrollbar-color\": \"#dfdfdf #F5F5F5\",\n \"&::-webkit-scrollbar-track\": {\n \"-webkit-box-shadow\": \"inset 0 0 6px rgba(0,0,0,0.15)\",\n \"border-radius\": \"10px\",\n \"background-color\": \"#F5F5F5\",\n },\n\n \"&::-webkit-scrollbar\": {\n width: \"5px\",\n \"background-color\": \"#F5F5F5\",\n },\n\n \"&::-webkit-scrollbar-thumb\": {\n \"border-radius\": \"10px\",\n \"box-shadow\": \"inset 0 0 6px rgba(0,0,0,.3)\",\n \"-webkit-box-shadow\": \"inset 0 0 6px rgba(0,0,0,.3)\",\n \"background-color\": \"#dfdfdf\",\n },\n \"&::-webkit-scrollbar-thumb:hover\": {\n \"background-color\": \"#cfcfcf\",\n },\n },\n userName: {\n fontWeight: 600,\n fontSize: \"16px\",\n lineHeight: \"19px\",\n letterSpacing: \"0.02em\",\n },\n storeName: {\n fontWeight: 400,\n fontSize: \"14px\",\n lineHeight: \"17px\",\n letterSpacing: \"0.02em\",\n },\n}));\n\nconst useMobileClasses = createUseClasses((theme: Theme) => ({\n appBarItem: {\n color: theme.palette.background.paper,\n },\n active: {\n background: \"rgba(192, 210, 255, 0.36)\",\n \"&:nth-of-type(1)\": {\n marginLeft: \"3px\",\n },\n },\n brighter: {\n filter: \"brightness(3)\",\n },\n}));\n","import { Grid, styled } from \"@material-ui/core\";\n\nexport const FullPageHeightGrid = styled(Grid)({\n height: \"100vh\",\n width: \"100%\",\n margin: 0,\n});\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.24565 6.07733C3.87305 5.63882 4.81882 5.72291 5.38214 6.18812L4.73605 5.24903C4.21611 4.5075 4.40233 3.70523 5.14453 3.18462C5.88673 2.66601 7.98985 4.06031 7.98985 4.06031C7.46524 3.31143 7.56335 2.36233 8.31222 1.83705C9.0611 1.31377 10.0943 1.49465 10.6189 2.24486L17.5737 12.0697L16.6873 20.663L9.29003 17.9652L2.83784 8.3987C2.30855 7.64516 2.49143 6.60594 3.24565 6.07733Z\",\n fill: \"#D2A077\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.79954 11.5428C1.79954 11.5428 1.044 10.4415 2.14595 9.68666C3.24657 8.93178 4.00145 10.0324 4.00145 10.0324L7.5062 15.1437C7.62701 14.9421 7.75916 14.7432 7.90667 14.547L3.04233 7.45405C3.04233 7.45405 2.28745 6.35344 3.38873 5.59855C4.48935 4.84367 5.24423 5.94429 5.24423 5.94429L9.81957 12.6167C9.98977 12.4779 10.164 12.3384 10.3435 12.2016L5.03932 4.46523C5.03932 4.46523 4.28444 3.36461 5.38573 2.60973C6.48634 1.85485 7.24123 2.95547 7.24123 2.95547L12.5454 10.6905C12.7403 10.571 12.9332 10.4676 13.1268 10.3581L8.16897 3.12834C8.16897 3.12834 7.41409 2.02772 8.51471 1.27284C9.61533 0.517959 10.3702 1.61858 10.3702 1.61858L15.6123 9.2635L16.4093 10.4262C13.1067 12.6915 12.7924 16.9531 14.6792 19.705C15.0563 20.2557 15.607 19.8785 15.607 19.8785C13.3423 16.5754 14.0338 12.8637 17.337 10.5991L16.3632 5.72537C16.3632 5.72537 15.9994 4.4412 17.2829 4.07678C18.5671 3.71302 18.9315 4.99719 18.9315 4.99719L20.0562 8.33708C20.502 9.66129 20.9766 10.9808 21.6047 12.229C23.3781 15.7531 22.3188 20.1328 18.9749 22.4269C15.3273 24.9278 10.3408 23.998 7.83926 20.3511L1.79954 11.5428Z\",\n fill: \"#F3D2A2\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.00913 21.3583C5.33934 21.3583 2.64153 18.6605 2.64153 15.9907C2.64153 15.6216 2.37122 15.3232 2.00212 15.3232C1.63302 15.3232 1.30664 15.6216 1.30664 15.9907C1.30664 19.9954 4.00445 22.6932 8.00913 22.6932C8.37822 22.6932 8.67657 22.3668 8.67657 21.9977C8.67657 21.6286 8.37822 21.3583 8.00913 21.3583Z\",\n fill: \"#5DADEC\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.67212 22.6654C2.66978 22.6654 1.33489 21.3305 1.33489 19.3282C1.33489 18.9591 1.03654 18.6607 0.667445 18.6607C0.298348 18.6607 0 18.9591 0 19.3282C0 21.9979 2.00234 24.0003 4.67212 24.0003C5.04121 24.0003 5.33956 23.7019 5.33956 23.3328C5.33956 22.9637 5.04121 22.6654 4.67212 22.6654ZM16.0187 1.30713C15.6503 1.30713 15.3512 1.60614 15.3512 1.97457C15.3512 2.343 15.6503 2.64202 16.0187 2.64202C18.6885 2.64202 21.3583 5.03748 21.3583 7.98158C21.3583 8.35001 21.6573 8.64903 22.0257 8.64903C22.3941 8.64903 22.6931 8.35001 22.6931 7.98158C22.6931 4.30129 20.0234 1.30713 16.0187 1.30713Z\",\n fill: \"#5DADEC\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.3549 0C18.9865 0 18.6875 0.270983 18.6875 0.639413C18.6875 1.00784 18.9865 1.33489 19.3549 1.33489C21.3573 1.33489 22.6641 2.81996 22.6641 4.64409C22.6641 5.01252 22.9905 5.31153 23.3596 5.31153C23.7287 5.31153 23.999 5.01252 23.999 4.64409C23.999 2.0831 22.0247 0 19.3549 0Z\",\n fill: \"#5DADEC\"\n});\n\nfunction SvgHandwave(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHandwave);\nexport default __webpack_public_path__ + \"static/media/handwave.d14f44c1.svg\";\nexport { ForwardRef as ReactComponent };","import { Box, Grid, Typography } from \"@material-ui/core\";\nimport { ReactComponent as EmojiHandIcon } from \"../../common/SVG/handwave.svg\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useUserContext } from \"../../common/UserContext/UserContext\";\n\nexport default function WelcomeScreen() {\n const { user } = useUserContext();\n\n const classes = useStyles();\n\n return (\n \n \n \n Welcome,\n \n \n {user?.name}\n \n \n \n \n );\n}\n\nconst useStyles = makeStyles(() => ({\n gridContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n welcomeTypography: {\n fontWeight: 700,\n marginRight: \"10px\",\n lineHeight: \"29px\",\n letterSpacing: \"0.02em\",\n fontSize: \"24px\",\n },\n userStyles: {\n fontWeight: 400,\n lineHeight: \"29px\",\n letterSpacing: \"0.02em\",\n fontSize: \"24px\",\n },\n welcomeEmoji: {\n height: \"22.822589874267578px\",\n width: \"20.90808868408203px\",\n borderRadius: \"0px\",\n marginLeft: \"10px\",\n },\n}));\n","import React from \"react\";\nimport { Grid } from \"@material-ui/core\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\n\nimport type { ReactElementPropsType } from \"../ElementProps\";\n\nexport function TopContainer({\n children,\n style,\n ...props\n}: ReactElementPropsType) {\n const classes = useClasses();\n return (\n \n {children}\n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n container: {\n backgroundColor: \"#ffffff\",\n boxShadow: \" 0px 4px 8px -4px rgba(0, 0, 0, 0.1)\",\n },\n}));\n","import React, { useEffect, useState } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Typography,\n} from \"@material-ui/core\";\nimport { IConfiguration } from \"../ConfigurationsContext/Configuration\";\n\nexport type StoreDeleteConfirmBoxProps = {\n isOpen: boolean;\n configuration: IConfiguration | undefined;\n onDelete: () => void;\n updateIsOpen: (isOpen: boolean) => void;\n loading: boolean;\n errorMessage: string | null;\n};\n\nexport default function StoreDeleteConfirmBox({\n isOpen,\n configuration,\n updateIsOpen,\n onDelete,\n errorMessage,\n loading = false,\n}: StoreDeleteConfirmBoxProps) {\n const [hasError, setHasError] = useState(false);\n useEffect(() => {\n setHasError(Boolean(errorMessage));\n }, [errorMessage]);\n\n const handleCloseBtn = () => {\n updateIsOpen(false);\n };\n\n const handleClose = () => {\n if (loading) {\n return;\n }\n updateIsOpen(false);\n };\n\n const ActionButton = () => {\n if (loading) {\n return (\n }\n >\n {`Deleting ${\n configuration && configuration.storeNameFormatted\n ? configuration.storeNameFormatted.toLowerCase()\n : \"\"\n } ..`}\n \n );\n } else if (hasError) {\n return (\n <>\n \n \n \n );\n } else {\n return (\n <>\n \n \n \n );\n }\n };\n\n return (\n \n {`Are you sure you want to delete the store ${\n configuration && configuration.storeNameFormatted\n ? configuration.storeNameFormatted.toLowerCase()\n : \"\"\n }?`}\n \n \n \n Deleting the store will remove it from the dashboard and our system.\n Deletion is permanent so make sure you are removing the correct\n store before proceeding.\n \n {hasError ? (\n {errorMessage}\n ) : null}\n \n \n {ActionButton()}\n \n );\n}\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { DesktopNavigation, MobileNavigation } from \"../Navigation/Navigation\";\nimport { Box, Grid, Hidden } from \"@material-ui/core\";\nimport { FullPageHeightGrid } from \"./FullPageHeightGrid\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\nimport WelcomeScreen from \"../../Stores/Dashboard/Welcome\";\nimport { TopContainer } from \"./TopContainer\";\nimport StoreDeleteConfirmBox from \"../ConfirmBox/StoreDeleteConfirmBox\";\nimport { useConfiguration } from \"../ConfigurationsContext/ConfigurationsContext\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { IStoreRouteParams, StaticRoutePath } from \"../../AppRoutes\";\n\nexport function Page({\n title,\n internalNavigation,\n children,\n}: {\n title?: ReactNode;\n internalNavigation?: ReactNode;\n children?: ReactNode;\n}) {\n //state initialize\n const [isStoreDeleteDialogOpen, setIsStoreDeleteDialogOpen] =\n React.useState(false);\n const [isDeleteLoading, setIsDeleteLoading] = React.useState(false);\n const [deleteErrorMessage, setDeleteErrorMessage] = React.useState<\n string | null\n >(null);\n\n //hooks call\n const classes = useClasses();\n const { id = \"\" } = useParams();\n const navigate = useNavigate();\n const { configuration, deleteConfiguration } = useConfiguration(id);\n\n //handlers\n const handleOpenDeleteConfirmBox = () => {\n if (!id || !configuration) {\n console.error(\n \"Failed to open delete confirm dialog because store id or configuration is empty/invalid\"\n );\n return;\n }\n setDeleteErrorMessage(null);\n setIsStoreDeleteDialogOpen(true);\n };\n\n const storeDeleteHandler = async () => {\n if (!id || !configuration) {\n setIsStoreDeleteDialogOpen(false);\n return;\n }\n setIsDeleteLoading(true);\n\n try {\n const storeName = configuration.storeNameFormatted;\n await deleteConfiguration(id);\n navigate(StaticRoutePath.Stores, {\n replace: true,\n state: { message: `Successfully deleted store: ${storeName}` },\n });\n } catch (error) {\n if (error instanceof Error) {\n setDeleteErrorMessage(error.message);\n } else {\n setDeleteErrorMessage(\n `There is an error happending while deleting the store ${configuration.storeNameFormatted}. This might be cause by network failure or api failure.`\n );\n }\n } finally {\n setIsDeleteLoading(false);\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {internalNavigation && (\n {internalNavigation}\n )}\n \n {children && (\n \n {children}\n \n )}\n \n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n noMarginTop: {\n marginTop: 0,\n },\n navigationContainer: {\n backgroundColor: theme.palette.background.paper,\n },\n pageHeaderAndContent: {\n maxHeight: \"100vh\",\n overflowY: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: \"#F4F3F1\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: \"64px\",\n },\n [theme.breakpoints.down(\"xs\")]: {\n paddingTop: \"56px\",\n },\n },\n pageContent: {\n height: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n}));\n","import * as React from \"react\";\nimport { Page } from \"../common/Page/Page\";\nimport { ReactNode } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { DynamicRoutePath, IStoreRouteParams } from \"../AppRoutes\";\nimport { useConfiguration } from \"../common/ConfigurationsContext/ConfigurationsContext\";\nimport { Tab, Tabs } from \"@material-ui/core\";\nimport { newConfigurationId } from \"../common/ConfigurationsContext/Configuration\";\nimport { createUseClasses } from \"../common/Theme/createUseClasses\";\nimport { Title } from \"../common/Title/Title\";\n\nexport function Store({\n children,\n storeId,\n}: {\n children?: ReactNode;\n storeId?: string;\n}) {\n const { id = \"\" } = useParams();\n const { configuration } = useConfiguration(storeId || id);\n\n return (\n \n {id === newConfigurationId\n ? \"New Configuration\"\n : configuration\n ? configuration.storeNameFormatted\n : \"Error: Could not find store\"}\n \n }\n >\n {children}\n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n tabs: {\n backgroundColor: theme.palette.background.paper,\n },\n tab: {\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: \"0.8rem\",\n },\n },\n}));\n","import * as React from \"react\";\nimport { MainContainer } from \"../../common/Page/MainContainer\";\nimport { Store } from \"../Store\";\n\nexport function Dashboard() {\n return (\n \n \n

Welcome to Upsy Dashboard!

\n

\n Upsy Dashboard is the place where you can access your store’s Upsy\n metrics and manage Upsy settings. For now, the configuration tool to\n manage Upsy settings is only available for WooCommerce stores, and it\n will become available for all users soon.\n

\n

\n In case you need our help or have any questions, you can always reach\n us at{\" \"}\n support@upsyshopping.com\n .\n

\n
\n
\n );\n}\n","import { Container, styled } from \"@material-ui/core\";\n\nexport const CenteringContainer = styled(Container)({\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n textAlign: \"center\",\n});\n","import * as React from \"react\";\n\nexport function LogoUpsyShoppingHelper({\n variant,\n width,\n}: {\n variant: \"light\" | \"dark\" | \"blue\";\n width?: string;\n}) {\n const fillColor =\n variant === \"blue\" ? \"#876bfd\" : variant === \"light\" ? \"#FFF\" : \"#1A0E52\";\n return (\n \n Upsy Logo\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { Grid, styled } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { FullPageHeightGrid } from \"../Page/FullPageHeightGrid\";\nimport { CenteringContainer } from \"../CenteringContainer/CenteringContainer\";\nimport { LogoUpsyShoppingHelper } from \"../SVG/Component/LogoUpsyShoppingHelper\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\n\nexport function GoldenRatioishPage({\n children,\n}: {\n children: NonNullable;\n}) {\n const classes = useClasses();\n\n return (\n \n \n \n \n \n \n \n {children}\n \n \n );\n}\n\nconst GradientBackgroundSupportContent = styled(Grid)({\n background:\n \"linear-gradient(169deg, rgba(215,213,255,1) 0%, rgba(178,200,255,1) 19%, rgba(253,247,234,1) 50%, rgba(252,243,231,1) 62%, rgba(241,180,183,1) 86%, rgba(226,97,121,1) 100%)\",\n});\n\nconst useClasses = createUseClasses((theme) => ({\n logoContent: {\n [theme.breakpoints.only(\"xs\")]: {\n height: \"38vh\",\n },\n },\n fullHeightContainer: {\n height: \"100%\",\n [theme.breakpoints.only(\"xs\")]: {\n minHeight: \"62vh\",\n },\n },\n}));\n","import * as React from \"react\";\nimport { Box, LinearProgress, Typography } from \"@material-ui/core\";\nimport { GoldenRatioishPage } from \"../GoldenRatioishPage/GoldenRatioishPage\";\n\nexport function Loader() {\n return (\n \n \n \n Loading...\n \n \n );\n}\n","export default __webpack_public_path__ + \"static/media/upsy-background.d06c2180.svg\";","import { Grid, styled } from \"@material-ui/core\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport { CenteringContainer } from \"../CenteringContainer/CenteringContainer\";\nimport { LogoUpsyShoppingHelper } from \"../SVG/Component/LogoUpsyShoppingHelper\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\nimport upsyBackgroundImg from \"../SVG/upsy-background.svg\";\n\ntype CssUnitType = `${number}${\n | \"px\"\n | \"em\"\n | \"rem\"\n | \"%\"\n | \"vh\"\n | \"vw\"\n | \"vmin\"\n | \"vmax\"\n | \"ch\"\n | \"ex\"\n | \"in\"\n | \"pt\"\n | \"cm\"}`;\n\nexport function AuthWrapper({\n children,\n innerWrapperHeight = \"78%\",\n}: {\n children: NonNullable;\n innerWrapperHeight?: CssUnitType;\n}) {\n const classes = useClasses();\n\n return (\n \n \n \n \n \n \n \n \n {children}\n \n \n \n );\n}\n\nconst GradientBackgroundContainer = styled(Grid)({\n backgroundImage: `url(\"${upsyBackgroundImg}\")`,\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n backgroundOrigin: \"border-box\",\n height: \"100%\",\n minHeight: \"100vh\",\n});\n\nconst useClasses = createUseClasses((theme) => ({\n fullHeightContainer: {\n height: \"100vh\",\n [theme.breakpoints.only(\"xs\")]: {\n minHeight: \"62vh\",\n },\n },\n wrapperContainerGrid: {\n border: \"3px solid rgba(103, 147, 255, 0.3)\",\n borderRadius: \"40px\",\n height: \"78%\",\n maxHeight: \"690px\",\n maxWidth: \"690px\",\n width: \"100%\",\n backdropFilter: \"blur(25px)\",\n padding: \"0px 45px\",\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n}));\n","import * as React from \"react\";\nimport { useUserContext } from \"../common/UserContext/UserContext\";\nimport { StaticRoutePath } from \"../AppRoutes\";\nimport { Navigate, useNavigate } from \"react-router-dom\";\nimport { Button, Grid, Typography } from \"@material-ui/core\";\nimport { Loader } from \"../common/Loader/Loader\";\nimport { Title } from \"../common/Title/Title\";\nimport { AuthWrapper } from \"../common/AuthWrapper/AuthWrapper\";\n\nexport function Lobby() {\n const navigate = useNavigate();\n const { loading, user } = useUserContext();\n const shouldShowConfirmEmailView = user && !user.verified;\n\n if (loading) {\n return ;\n }\n if (shouldShowConfirmEmailView) {\n return ;\n }\n if (user) {\n return ;\n }\n\n return (\n \n \n \n \n Welcome!\n \n Please register or log in.\n \n \n \n \n navigate(StaticRoutePath.Register)}\n >\n Register\n \n \n \n navigate(StaticRoutePath.Login)}\n >\n Login\n \n \n \n \n );\n}\n","export const emailReg = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/;\n","import { emailReg } from \"./var\";\n\nexport const isValidEmail = (email: string): Boolean => emailReg.test(email);\n","import { styled } from \"@material-ui/styles\";\n\nconst StyledLabel = styled(\"label\")({\n display: \"block\",\n fontWeight: 500,\n fontSize: \"16px\",\n margin: \"2px 0px 3px\",\n});\n\nexport default StyledLabel;\n","import {\n Button,\n Grid,\n IconButton,\n InputAdornment,\n Link,\n TextField,\n Box,\n Typography,\n Divider,\n} from \"@material-ui/core\";\nimport * as React from \"react\";\nimport { ReactNode, useState } from \"react\";\nimport { Visibility, VisibilityOff } from \"@material-ui/icons\";\nimport ApiError from \"../Client/ApiError\";\nimport { CreateUserApiError } from \"../Client/BackendResponse\";\nimport { isValidEmail } from \"../utils/validation\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { StaticRoutePath } from \"../../AppRoutes\";\nimport StyledLabel from \"../StyledLabel/StyledLabel\";\n\ntype LoginCredentialsProps = {\n submitButtonTitle: string;\n onSubmit: (username: string, password: string) => void;\n beforeContent?: ReactNode;\n};\n\nexport function LoginCredentials({\n submitButtonTitle,\n onSubmit,\n beforeContent,\n}: LoginCredentialsProps) {\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [showPassword, setShowPassword] = useState(false);\n const [showValidationErrors, setShowValidationErrors] = useState(false);\n const [submitError, setSubmitError] = useState();\n const [submitErrorApiError, setSubmitErrorApiError] =\n useState({});\n const [showResetInstructions, setShowResetInstructions] = useState(false);\n async function submit() {\n setShowResetInstructions(false);\n if (!isValidEmail(email) || !isValidPassword(password)) {\n setShowValidationErrors(true);\n return;\n }\n try {\n await onSubmit(email, password);\n } catch (error) {\n if ((error as { code: string })?.code === \"NotAuthorizedException\") {\n setShowResetInstructions(true);\n }\n if (error instanceof ApiError && error.jsonBody) {\n setSubmitErrorApiError(error.jsonBody);\n } else {\n setSubmitError((error as { message?: string })?.message);\n }\n }\n }\n\n const hasEmailError =\n Boolean(submitError) ||\n Boolean(submitErrorApiError.user) ||\n (showValidationErrors && !isValidEmail(email));\n const hasPasswordError =\n Boolean(submitError) ||\n Boolean(submitErrorApiError.password) ||\n (showValidationErrors && !isValidPassword(password));\n\n return (\n \n {beforeContent}\n \n Email \n {\n setEmail(e.target.value);\n setSubmitError(undefined);\n }}\n helperText={submitError || submitErrorApiError.user}\n />\n \n \n Password \n {\n setPassword(e.target.value);\n setSubmitError(undefined);\n }}\n InputProps={{\n endAdornment: (\n \n setShowPassword(!showPassword)}\n >\n {showPassword ? : }\n \n \n ),\n }}\n helperText={submitError || submitErrorApiError.password}\n />\n {showResetInstructions ? (\n <>\n \n \n \n \n \n We've enhanced our security. If you're unable to access your\n account,{\" \"}\n \n please reset your password.\n \n \n \n \n ) : null}\n \n \n {submitButtonTitle}\n \n \n \n \n Forgot password?\n \n \n \n \n );\n}\n\nfunction isValidPassword(password: string) {\n return password.length;\n}\n","import * as React from \"react\";\nimport { useUserContext } from \"../common/UserContext/UserContext\";\nimport { LoginCredentials } from \"../common/LoginCredentials/LoginCredentials\";\nimport { Link as RouterLink, Navigate } from \"react-router-dom\";\nimport { StaticRoutePath } from \"../AppRoutes\";\nimport { Grid, Typography, Link } from \"@material-ui/core\";\nimport { Title } from \"../common/Title/Title\";\nimport { AuthWrapper } from \"../common/AuthWrapper/AuthWrapper\";\n\nexport function Login() {\n const { user, logIn } = useUserContext();\n\n if (user) {\n return ;\n }\n\n return (\n \n \n \n Login\n \n \n \n \n \n \n Don’t have an account yet?\n \n {\" \"}\n Register now\n \n \n \n \n \n );\n}\n","import * as React from \"react\";\nimport { useUserContext } from \"../common/UserContext/UserContext\";\nimport { LoginCredentials } from \"../common/LoginCredentials/LoginCredentials\";\nimport { StaticRoutePath } from \"../AppRoutes\";\nimport { Link as RouterLink, Navigate } from \"react-router-dom\";\nimport { Grid, TextField, Typography, Link } from \"@material-ui/core\";\nimport { useState } from \"react\";\nimport { Title } from \"../common/Title/Title\";\nimport { AuthWrapper } from \"../common/AuthWrapper/AuthWrapper\";\nimport StyledLabel from \"../common/StyledLabel/StyledLabel\";\n\nexport function Register() {\n const { user, register } = useUserContext();\n const [fullName, setFullName] = useState(\"\");\n const shouldShowConfirmEmailView = user && !user.verified;\n\n async function handleSubmit(email: string, password: string) {\n await register(fullName, email, password);\n }\n\n if (user) {\n return ;\n }\n\n return shouldShowConfirmEmailView ? (\n \n ) : (\n \n \n \n Register\n \n \n Full Name \n setFullName(e.target.value)}\n />\n \n }\n />\n \n \n Already registered?{\" \"}\n \n Login\n \n \n \n \n \n );\n}\n","import * as React from \"react\";\nimport { useUserContext } from \"../common/UserContext/UserContext\";\nimport { useState } from \"react\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { StaticRoutePath } from \"../AppRoutes\";\nimport { Button, Grid, TextField, Typography, Link } from \"@material-ui/core\";\nimport { Title } from \"../common/Title/Title\";\nimport { AuthWrapper } from \"../common/AuthWrapper/AuthWrapper\";\nimport StyledLabel from \"../common/StyledLabel/StyledLabel\";\n\nexport function ConfirmEmail() {\n const { user, confirmEmail, resendConfirmationCode } = useUserContext();\n const [confirmationCode, setConfirmationCode] = useState(\"\");\n const [codeResent, setCodeResent] = useState(false);\n const [success, setSuccess] = useState(false);\n const [submitError, setSubmitError] = useState();\n\n async function confirm() {\n try {\n if (user) {\n await confirmEmail(user.email, confirmationCode);\n setSuccess(true);\n } else {\n throw Error(\"confirm: Unexpected error\");\n }\n } catch (error) {\n setSubmitError((error as { message?: string })?.message);\n }\n }\n\n async function resend() {\n try {\n if (user) {\n await resendConfirmationCode(user.email);\n setCodeResent(true);\n } else {\n throw Error(\"resend: Unexpected error\");\n }\n } catch (error) {\n setSubmitError((error as { message?: string })?.message);\n }\n }\n\n return (\n \n \n \n Confirm Email\n \n \n {success ? (\n <>\n \n \n Email confirmed succesfully!\n \n \n \n \n Go to login\n \n \n \n ) : (\n <>\n \n Code\n setConfirmationCode(e.target.value)}\n />\n \n \n \n Confirm\n \n \n {codeResent && (\n \n Code was resent\n \n )}\n \n \n Resend code{codeResent ? \" again\" : \"\"}\n \n \n {submitError && (\n \n {submitError}\n \n )}\n \n )}\n \n \n \n );\n}\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { useUserContext } from \"../common/UserContext/UserContext\";\nimport { StaticRoutePath } from \"../AppRoutes\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { Button, Grid, TextField, Typography, Link } from \"@material-ui/core\";\nimport { Title } from \"../common/Title/Title\";\nimport { AuthWrapper } from \"../common/AuthWrapper/AuthWrapper\";\nimport StyledLabel from \"../common/StyledLabel/StyledLabel\";\n\nexport function ForgotPassword() {\n const { getPasswordRecoveryCode, recoverPassword } = useUserContext();\n const [email, setEmail] = useState(\"\");\n const [codeRequested, setCodeRequested] = useState(false);\n const [code, setCode] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [passwordRecovered, setPasswordRecovered] = useState(false);\n const [submitError, setSubmitError] = useState();\n\n async function getRecoveryCode() {\n try {\n const success = await getPasswordRecoveryCode(email);\n if (success) {\n setCodeRequested(true);\n }\n } catch (error) {\n setSubmitError((error as { message?: string }).message);\n }\n }\n\n async function recover() {\n try {\n const success = await recoverPassword(email, code, newPassword);\n if (success) {\n setPasswordRecovered(true);\n }\n } catch (error) {\n setSubmitError((error as { message?: string }).message);\n }\n }\n\n return (\n \n \n \n Forgot Password\n \n {passwordRecovered ? (\n <>\n \n \n Your password was succesfully reset!\n \n \n \n \n Login from here\n \n \n \n ) : codeRequested ? (\n <>\n \n Check your email: {email}\n \n \n Code\n setCode(e.target.value)}\n />\n \n \n New Password\n setNewPassword(e.target.value)}\n />\n \n \n \n Set new password\n \n \n {submitError && (\n \n

{submitError}

\n
\n )}\n \n ) : (\n <>\n \n Email\n setEmail(e.target.value)}\n />\n \n \n \n Recover password\n \n \n {submitError && (\n \n

{submitError}

\n
\n )}\n \n \n Login from here\n \n \n \n )}\n
\n
\n );\n}\n","import * as React from \"react\";\nimport { Page } from \"../common/Page/Page\";\nimport { Button, Grid } from \"@material-ui/core\";\nimport { useUserContext } from \"../common/UserContext/UserContext\";\nimport { TextField } from \"@material-ui/core\";\nimport { Title } from \"../common/Title/Title\";\nimport { createUseClasses } from \"../common/Theme/createUseClasses\";\nimport { MainContainer } from \"../common/Page/MainContainer\";\n\nexport function Account() {\n const { user, logOut } = useUserContext();\n const classes = useClasses();\n return (\n Account}>\n \n {user && (\n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n root: {\n flexDirection: \"column\",\n [theme.breakpoints.only(\"xs\")]: {\n flexDirection: \"row\",\n },\n },\n}));\n","import { Page } from \"../common/Page/Page\";\nimport {\n Box,\n CircularProgress,\n Collapse,\n Grid,\n IconButton,\n List,\n ListItem,\n NativeSelect,\n TextField,\n Theme,\n Typography,\n} from \"@material-ui/core\";\nimport { useNavigate, Navigate, useLocation } from \"react-router-dom\";\nimport { DynamicRoutePath } from \"../AppRoutes\";\nimport {\n IConfiguration,\n OperationMode,\n newConfigurationId,\n} from \"../common/ConfigurationsContext/Configuration\";\nimport { useConfigurations } from \"../common/ConfigurationsContext/ConfigurationsContext\";\nimport { createUseClasses } from \"../common/Theme/createUseClasses\";\nimport { MainContainer } from \"../common/Page/MainContainer\";\nimport { Alert } from \"@material-ui/lab\";\nimport { Fragment, useEffect, useMemo, useState } from \"react\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nfunction applyFilters(data: T[], filters: ((items: T[]) => T[])[]) {\n return filters.reduce((result, filter) => filter(result), data);\n}\n\nfunction filterByOperationMode(status: IConfiguration[\"operationMode\"]) {\n return (configurations: IConfiguration[]) => {\n if (!status) return configurations;\n return configurations.filter((config) => config.operationMode == status);\n };\n}\n\nconst useDebounceSearchConfigurations = (\n searchInput: string = \"\",\n configurations: IConfiguration[] = [],\n delayInSeconds = 1\n) => {\n const [searchQuery, setSearchQuery] = useState(searchInput);\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n setSearchQuery(searchInput?.trim());\n }, 1000 * delayInSeconds);\n return () => clearTimeout(timeoutId);\n }, [searchInput, delayInSeconds]);\n\n const searchedConfiguratons = useMemo(() => {\n return configurations.filter(\n (configuration) =>\n configuration.id?.toLowerCase()?.includes(searchQuery?.toLowerCase()) ||\n configuration.storeName\n ?.toLowerCase()\n ?.includes(searchQuery?.toLowerCase())\n );\n }, [searchQuery, configurations.length]);\n\n return { searchedConfiguratons, searchQuery };\n};\n\ntype StoresLocationType = ReturnType & {\n state: {\n message?: string;\n } | null;\n};\nexport function Stores() {\n const { loading, configurations } = useConfigurations();\n const { state: locationState } = useLocation() as StoresLocationType;\n const [locationStateSuccessMessage, setLocationStateSuccessMessage] =\n useState(locationState?.message);\n\n const [selectedOperationMode, setSelectedOperationMode] =\n useState();\n\n const filteredConfigurations = useMemo(() => {\n return applyFilters(configurations, [\n filterOutUnmodifiedNewConfiguration,\n filterByOperationMode(selectedOperationMode),\n ]);\n }, [configurations, selectedOperationMode]);\n\n const [searchInput, setSearchInput] = useState(\"\");\n const { searchedConfiguratons, searchQuery } =\n useDebounceSearchConfigurations(searchInput, filteredConfigurations, 0.5);\n\n return (\n \n {loading ? (\n \n ) : (\n <>\n {filteredConfigurations.length === 0 ? (\n \n ) : filteredConfigurations.length === 1 ? (\n \n ) : (\n \n <>\n {locationState?.message ? (\n \n {\n setLocationStateSuccessMessage(\"\");\n }}\n >\n {locationState.message}\n \n \n ) : null}\n {/* Filter result store count section */}\n {filteredConfigurations && filteredConfigurations.length ? (\n \n \n {\" \"}\n Total {selectedOperationMode} Stores:{\" \"}\n {filteredConfigurations.length}\n \n \n ) : null}\n {/* Search result message section */}\n \n {searchQuery && searchQuery.length ? (\n \n \n {searchedConfiguratons.length\n ? searchedConfiguratons.length\n : \"No\"}{\" \"}\n {selectedOperationMode}\n {\" \"}\n stores found for search query:{\" \"}\n \n \"{searchQuery}\"\n \n \n ) : null}\n \n {/* Filter and search input section */}\n \n \n Filter By\n \n \n \n setSelectedOperationMode(\n e.target.value\n ? (e.target.value as OperationMode)\n : undefined\n )\n }\n >\n \n \n \n \n \n {filteredConfigurations &&\n filteredConfigurations.length > 5 ? (\n \n setSearchInput(e.target.value)}\n onClear={(e) => setSearchInput(\"\")}\n searchQuery={searchQuery}\n searchedConfiguratons={searchedConfiguratons}\n />\n \n ) : null}\n \n {/* Show store list */}\n \n \n \n )}\n
\n \n )}\n
\n );\n}\n\nfunction StoreList({\n configurations,\n searchQuery = \"\",\n}: {\n configurations: IConfiguration[];\n searchQuery: string;\n}) {\n const classes = useClasses();\n return (\n \n {configurations.map((configuration, index) => (\n \n ))}\n \n );\n}\n\nfunction StoreListItem({\n configuration,\n searchQuery = \"\",\n}: {\n configuration: IConfiguration;\n searchQuery: string;\n}) {\n const navigate = useNavigate();\n const classes = useClasses();\n\n return (\n \n navigate(\n configuration.id === newConfigurationId\n ? DynamicRoutePath.StoreIntegration(configuration.id as string)\n : DynamicRoutePath.StoreMetrics(configuration.id as string)\n )\n }\n >\n \n {getHighlightedText(\n configuration.storeNameFormatted || configuration.storeName,\n searchQuery\n )}{\" \"}\n {configuration.id === newConfigurationId ? \"(Local draft)\" : \"\"}\n \n \n );\n}\n\n//Custom SearchInput component for adding search ability\nfunction SearchInput({\n onChange,\n onClear,\n value,\n searchQuery = \"\",\n searchedConfiguratons = [],\n}: {\n onChange: (\n e: React.ChangeEvent\n ) => void;\n onClear: (e: React.MouseEvent) => void;\n value: string;\n searchQuery: string;\n searchedConfiguratons: IConfiguration[];\n}) {\n return (\n \n \n \n input && input.focus()}\n size=\"small\"\n variant=\"outlined\"\n value={value}\n onChange={onChange}\n InputProps={{\n endAdornment: (\n \n {value.length ? (\n \n \n \n ) : (\n \n )}\n \n ),\n }}\n />\n \n \n \n );\n}\n\nfunction NoStoresDisclaimer() {\n return (\n \n \n

Welcome to Upsy Dashboard!

\n

Your account has been created successfully!

\n

\n To gain access to your store metrics and settings, please email us\n (support@upsyshopping.com) your username (the email address you used\n to create the account) and request us to connect your store with your\n account. We will notify you once the store is connected with your\n account for you to access it.\n

\n
\n

\n If you still haven't purchased Upsy yet and would like to boost up\n your store sales, please contact sales@upsyshopping.com and we will\n contact you shortly!\n

\n
\n
\n );\n}\n\nfunction filterOutUnmodifiedNewConfiguration(configurations: IConfiguration[]) {\n return configurations.filter(\n (configuration) =>\n configuration.id !== newConfigurationId ||\n (configuration.storeName && 0 < configuration.storeName.length)\n );\n}\n\nfunction getHighlightedText(text: string = \"\", highlight: string = \"\") {\n // Split on highlight term and include term into parts, ignore case\n const parts = text.split(new RegExp(`(${highlight})`, \"gi\"));\n return (\n \n {\" \"}\n {parts.map((part, i) => (\n \n {part}\n \n ))}{\" \"}\n \n );\n}\n\nconst useClasses = createUseClasses((theme: Theme) => ({\n list: {\n display: \"flex\",\n maxWidth: \"824px\",\n gap: \"8px\",\n flexWrap: \"wrap\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"min(100%, 204px)\",\n },\n },\n storeListItem: {\n flex: \"0 1 200px\",\n border: \"3px solid #B2C8FF\",\n borderRadius: \"5px\",\n marginTop: \"5px\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n button: {\n marginTop: \"20px\",\n },\n}));\n","export function getStartDateFilter(date: Date) {\n return `${getBasicDateString(date)} 00:00`;\n}\n\nexport function getEndDateFilter(date: Date) {\n return `${getBasicDateString(date)} 23:59`;\n}\n\nexport function getBasicDateString(date: Date) {\n // YYYY-MM-DD\n return `${date.getFullYear()}-${(date.getMonth() + 1)\n .toString()\n .padStart(2, \"0\")}-${date.getDate().toString().padStart(2, \"0\")}`;\n}\n\nexport const daysBefore = (date: Date, days: number) => {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - days);\n};\n\nexport const monthsBefore = (date: Date, months: number) => {\n return new Date(date.getFullYear(), date.getMonth() - months, date.getDate());\n};\n\nexport const yearsBefore = (date: Date, years: number) => {\n return new Date(date.getFullYear() - years, date.getMonth(), date.getDate());\n};\n\nexport const beginningOfMonth = (date: Date) => {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n};\n\nexport const beginningOfYear = (date: Date) => {\n return new Date(date.getFullYear(), 0, 1);\n};\n\nconst getWeekday = (date: Date) => date.getDay();\n\nexport const previousMonday = (date: Date) => {\n const weekday = getWeekday(date);\n const mondayDateNumber =\n weekday === 0 ? date.getDate() - 6 : date.getDate() - (weekday - 1);\n return new Date(date.getFullYear(), date.getMonth(), mondayDateNumber);\n};\n\nexport const weekBefore = (date: Date) => daysBefore(date, 7);\n","import { embedDashboard } from \"amazon-quicksight-embedding-sdk\";\nimport { getEndDateFilter, getStartDateFilter } from \"./dateUtils\";\n\ninterface DateRange {\n start: Date;\n end: Date;\n}\n\nexport interface QuicksightEmbedDateParameters {\n dateRange: DateRange;\n comparisonDateRange: DateRange;\n}\n\nexport interface QuicksightEmbedParameters\n extends QuicksightEmbedDateParameters {\n tenantId: string;\n}\n\nexport const embedQuicksight = (\n container: HTMLIFrameElement,\n url: string,\n parameters: QuicksightEmbedParameters,\n setLoaded: (loaded: true) => void\n) => {\n return embedDashboard({\n url,\n container,\n parameters: parseParameters(parameters),\n loadCallback: () => setLoaded(true),\n height: \"3000px\",\n });\n};\n\nexport function setQuicksightParameters(\n dashboard: any,\n parameters: QuicksightEmbedParameters\n) {\n try {\n dashboard.setParameters(parseParameters(parameters));\n } catch (error) {\n console.error(error);\n }\n}\n\nconst formatTenantId = (tenantId: string): string => {\n const noPrefix = tenantId.replace(/^(\\s*ups-)/, \"\");\n return `${noPrefix.charAt(0).toUpperCase()}${noPrefix.slice(1)}`;\n};\n\nfunction parseParameters(parameters: QuicksightEmbedParameters) {\n const { dateRange, comparisonDateRange, tenantId } = parameters;\n return {\n datefrom: getStartDateFilter(dateRange.start),\n dateto: getEndDateFilter(dateRange.end),\n datefromcomparison: getStartDateFilter(comparisonDateRange.start),\n datetocomparison: getEndDateFilter(comparisonDateRange.end),\n customer: formatTenantId(tenantId),\n };\n}\n","import {\n beginningOfMonth,\n beginningOfYear,\n daysBefore,\n monthsBefore,\n previousMonday,\n weekBefore,\n yearsBefore,\n} from \"./dateUtils\";\n\nconst today = new Date();\nconst lastFullDay = daysBefore(today, 1);\n\nexport const dateFilterShortcuts = [\n {\n label: \"Week to Date\",\n setFilter: () => {\n const startOfWeek = previousMonday(lastFullDay);\n const lastWeeksMonday = weekBefore(startOfWeek);\n const lastWeekToday = weekBefore(lastFullDay);\n return [startOfWeek, lastFullDay, lastWeeksMonday, lastWeekToday];\n },\n },\n {\n label: \"Month to Date\",\n setFilter: () => {\n const startOfMonth = beginningOfMonth(lastFullDay);\n const startOfPreviousMonth = monthsBefore(startOfMonth, 1);\n const monthAgoToday = monthsBefore(lastFullDay, 1);\n return [startOfMonth, lastFullDay, startOfPreviousMonth, monthAgoToday];\n },\n },\n {\n label: \"Year to Date\",\n setFilter: () => {\n const startOfYear = beginningOfYear(lastFullDay);\n const startOfPreviousYear = yearsBefore(startOfYear, 1);\n const lastYearToday = yearsBefore(lastFullDay, 1);\n return [startOfYear, lastFullDay, startOfPreviousYear, lastYearToday];\n },\n },\n {\n label: \"Previous Week\",\n setFilter: () => {\n const startOfPreviousWeek = weekBefore(previousMonday(today));\n const endOfPreviousWeek = daysBefore(previousMonday(today), 1);\n const startOfWeekBeforePreviousWeek = weekBefore(startOfPreviousWeek);\n const endOfWeekBeforePreviousWeek = weekBefore(endOfPreviousWeek);\n return [\n startOfPreviousWeek,\n endOfPreviousWeek,\n startOfWeekBeforePreviousWeek,\n endOfWeekBeforePreviousWeek,\n ];\n },\n },\n {\n label: \"Previous Month\",\n setFilter: () => {\n const startOfPreviousMonth = monthsBefore(beginningOfMonth(today), 1);\n const endOfPreviousMonth = daysBefore(beginningOfMonth(today), 1);\n const startOfMonthBeforePreviousMonth = monthsBefore(\n startOfPreviousMonth,\n 1\n );\n const endOfMonthBeforePreviousMonth = daysBefore(startOfPreviousMonth, 1);\n return [\n startOfPreviousMonth,\n endOfPreviousMonth,\n startOfMonthBeforePreviousMonth,\n endOfMonthBeforePreviousMonth,\n ];\n },\n },\n {\n label: \"Show Last 7 Days\",\n setFilter: () => {\n const sevenDaysAgo = daysBefore(lastFullDay, 6);\n const weekBeforeSevenDaysAgo = daysBefore(sevenDaysAgo, 7);\n const lastWeekToday = daysBefore(sevenDaysAgo, 1);\n return [sevenDaysAgo, lastFullDay, weekBeforeSevenDaysAgo, lastWeekToday];\n },\n },\n {\n label: \"Show Last 14 Days\",\n setFilter: () => {\n const fourteenDaysAgo = daysBefore(lastFullDay, 13);\n const startOfPreviousFourteenDays = daysBefore(fourteenDaysAgo, 14);\n const endOfPreviousFourteenDays = daysBefore(fourteenDaysAgo, 1);\n return [\n fourteenDaysAgo,\n lastFullDay,\n startOfPreviousFourteenDays,\n endOfPreviousFourteenDays,\n ];\n },\n },\n {\n label: \"Show Last 30 Days\",\n setFilter: () => {\n const thirtyDaysAgo = daysBefore(lastFullDay, 29);\n const startOfPreviousThirtyDays = daysBefore(thirtyDaysAgo, 30);\n const endOfPreviousThirtyDays = daysBefore(thirtyDaysAgo, 1);\n return [\n thirtyDaysAgo,\n lastFullDay,\n startOfPreviousThirtyDays,\n endOfPreviousThirtyDays,\n ];\n },\n },\n {\n label: \"Show Last Year\",\n setFilter: () => {\n const startOfPreviousYear = yearsBefore(beginningOfYear(today), 1);\n const endOfPreviousYear = daysBefore(beginningOfYear(today), 1);\n const startOfYearBeforePreviousYear = yearsBefore(startOfPreviousYear, 1);\n const endOfYearBeforePreviousYear = daysBefore(startOfPreviousYear, 1);\n return [\n startOfPreviousYear,\n endOfPreviousYear,\n startOfYearBeforePreviousYear,\n endOfYearBeforePreviousYear,\n ];\n },\n },\n];\n","import * as React from \"react\";\nimport {\n Box,\n Button,\n CircularProgress,\n Grid,\n MenuItem,\n Select,\n TextField,\n Typography,\n} from \"@material-ui/core\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n embedQuicksight,\n QuicksightEmbedDateParameters,\n QuicksightEmbedParameters,\n setQuicksightParameters,\n} from \"./quicksight\";\nimport { useUserContext } from \"../../common/UserContext/UserContext\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport { Store } from \"../Store\";\nimport { getQuickSightEmbedUrl } from \"../../common/Client/backendClient\";\nimport { getBasicDateString } from \"./dateUtils\";\nimport { useParams } from \"react-router-dom\";\nimport { IStoreRouteParams } from \"../../AppRoutes\";\nimport { dateFilterShortcuts } from \"./dateFilterShortcuts\";\nimport { TopContainer } from \"../../common/Page/TopContainer\";\nimport { MainContainer } from \"../../common/Page/MainContainer\";\n\nexport function Metrics() {\n const classes = useMetricsClasses();\n const dateFilters = useDateFilters();\n const { dateRange, comparisonDateRange } = dateFilters;\n const { iframeRef, loaded } = useEmbed({\n dateRange,\n comparisonDateRange,\n });\n\n return (\n \n \n \n \n \n
\n \n \n \n
\n
\n
\n );\n}\n\nfunction Filters({\n dateRange,\n comparisonDateRange,\n setDateRanges,\n}: DateFilters) {\n const [start, setStart] = useState(getBasicDateString(dateRange.start));\n const [end, setEnd] = useState(getBasicDateString(dateRange.end));\n const [comparisonStart, setComparisonStart] = useState(\n getBasicDateString(comparisonDateRange.start)\n );\n const [comparisonEnd, setComparisonEnd] = useState(\n getBasicDateString(comparisonDateRange.end)\n );\n const classes = useFilterClasses();\n\n const setDateFilterDates = (dates: Date[]) => {\n const [startDate, endDate, comparisonStartDate, comparisonEndDate] = dates;\n setStart(getBasicDateString(startDate));\n setEnd(getBasicDateString(endDate));\n setComparisonStart(getBasicDateString(comparisonStartDate));\n setComparisonEnd(getBasicDateString(comparisonEndDate));\n };\n\n const [dateFilterShortcutIndex, setDateFilterShortcutIndex] = useState(0);\n const [updateDateRangesFlag, setupdateDateRangesFlag] = useState(false);\n //Default date filter label to \"Last 30 Days\"\n const defaultDateFilterShortcutIndex = 7;\n\n useEffect(() => {\n setDateFilterShortcutIndex(defaultDateFilterShortcutIndex);\n setDateFilterDates(\n dateFilterShortcuts[defaultDateFilterShortcutIndex].setFilter()\n );\n setupdateDateRangesFlag(true);\n }, []);\n\n useEffect(() => {\n if (updateDateRangesFlag) {\n setDateRanges({\n dateRange: {\n start: new Date(start),\n end: new Date(end),\n },\n comparisonDateRange: {\n start: new Date(comparisonStart),\n end: new Date(comparisonEnd),\n },\n });\n setupdateDateRangesFlag(false);\n }\n }, [\n updateDateRangesFlag,\n start,\n end,\n comparisonStart,\n comparisonEnd,\n setDateRanges,\n ]);\n\n return (\n {\n event.preventDefault();\n setDateRanges({\n dateRange: {\n start: new Date(start),\n end: new Date(end),\n },\n comparisonDateRange: {\n start: new Date(comparisonStart),\n end: new Date(comparisonEnd),\n },\n });\n }}\n >\n \n \n \n \n \n Select Date\n \n \n \n \n {\" \"}\n Select Date for Comparison\n \n \n \n \n Shortcut Date Filter\n \n \n \n \n \n \n setStart(event.target.value)}\n />\n \n \n \n setComparisonStart(event.target.value)}\n />\n \n \n {\n setDateFilterShortcutIndex(event.target.value as number);\n setDateFilterDates(\n dateFilterShortcuts[\n event.target.value as number\n ].setFilter()\n );\n }}\n >\n {dateFilterShortcuts.map((shortcut, i) => {\n return {shortcut.label};\n })}\n \n \n \n \n \n \n setEnd(event.target.value)}\n />\n \n \n \n setComparisonEnd(event.target.value)}\n />\n \n \n \n Update\n \n \n \n \n \n \n );\n}\n\ntype DateFilters = QuicksightEmbedDateParameters &\n SetQuicksightEmbedDateParameters;\n\ninterface SetQuicksightEmbedDateParameters {\n setDateRanges: (dateRanges: QuicksightEmbedDateParameters) => void;\n}\n\nfunction useDateFilters(): DateFilters {\n const dateRangeBaseDate = new Date();\n dateRangeBaseDate.setDate(new Date().getDate() - 1);\n\n const comparisonRangeBaseDate = new Date();\n comparisonRangeBaseDate.setDate(new Date().getDate() - 7);\n\n const [dateRanges, setDateRanges] = useState({\n dateRange: {\n start: dateRangeBaseDate,\n end: dateRangeBaseDate,\n },\n comparisonDateRange: {\n start: comparisonRangeBaseDate,\n end: comparisonRangeBaseDate,\n },\n });\n\n return {\n ...dateRanges,\n setDateRanges,\n };\n}\n\nfunction useEmbed(parameters: QuicksightEmbedDateParameters) {\n const { id = \"\" } = useParams();\n const quicksightParameters: Partial = useMemo(\n () => ({\n ...parameters,\n tenantId: id,\n }),\n [parameters, id]\n );\n const iframeRef = useRef(null);\n const [loaded, setLoaded] = useState(false);\n\n const { user } = useUserContext();\n const [url, setUrl] = useState();\n const [dashboard, setDashboard] = useState();\n\n useEffect(() => {\n getQuickSightEmbedUrl(user).then(setUrl);\n }, [user]);\n\n useEffect(() => {\n if (iframeRef.current && url) {\n setDashboard(\n embedQuicksight(\n iframeRef.current,\n url,\n quicksightParameters as QuicksightEmbedParameters,\n setLoaded\n )\n );\n }\n // eslint-disable-next-line\n }, [url]);\n\n const dependencyParameterString = JSON.stringify(quicksightParameters);\n useEffect(() => {\n if (dashboard && loaded) {\n setQuicksightParameters(\n dashboard as any,\n quicksightParameters as QuicksightEmbedParameters\n );\n }\n }, [dashboard, quicksightParameters, loaded, dependencyParameterString]);\n\n return {\n iframeRef,\n loaded,\n };\n}\n\nconst useMetricsClasses = createUseClasses(() => ({\n metricsContainer: {\n height: \"3000px\",\n position: \"relative\",\n },\n loaderContainer: {\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n opacity: 1,\n transition: \"opacity 0.5s\",\n },\n loaded: {\n opacity: 0,\n pointerEvents: \"none\",\n },\n}));\n\nconst useFilterClasses = createUseClasses((theme) => ({\n root: {\n width: \"50%\",\n \"&.MuiTextField-root .MuiOutlinedInput-root fieldset\": {\n borderColor: \"#ecebeb\",\n },\n \"&.MuiTextField-root .MuiOutlinedInput-root\": {\n borderRadius: \"10px\",\n padding: \"4px 10px\",\n },\n \"&.MuiTextField-root .MuiOutlinedInput-root .MuiInputAdornment-positionStart\":\n {\n marginRight: \"30px\",\n },\n },\n dropDownInputStyle: {\n padding: \"2px 5px\",\n marginLeft: \"10px\",\n },\n\n submitButton: {\n marginBottom: theme.spacing(0),\n maxHeight: \"35px\",\n padding: \"10px\",\n },\n dateAndLevelStyle: {\n display: \"flex\",\n columnGap: 18,\n justifyContent: \"start\",\n },\n labelStyle: {\n width: \"60px\",\n color: \"#777272\",\n marginTop: \"8px\",\n },\n typographyLabelStyle: {\n fontWeight: 500,\n },\n}));\n","import { Box, Button, Grid, Typography } from \"@material-ui/core\";\nimport { GoldenRatioishPage } from \"../common/GoldenRatioishPage/GoldenRatioishPage\";\nimport { Link } from \"react-router-dom\";\nimport { createUseClasses } from \"../common/Theme/createUseClasses\";\n\nexport function NotFound() {\n const classes = useClasses();\n\n return (\n \n \n \n \n \n 404\n \n \n Sorry!\n \n \n The page you are looking for does not seem to exist.\n \n \n \n Return home\n \n \n \n \n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n h1: {\n lineHeight: 1.3,\n fontWeight: 500,\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: \"4.5rem\",\n },\n },\n btn: {\n textTransform: \"initial\",\n },\n link: {\n textDecoration: \"none\",\n },\n textMuted: {\n color: \"rgba(128,128,128,0.75)\",\n },\n}));\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { useUserContext } from \"../common/UserContext/UserContext\";\nimport { IPasswordResetRequiredParams, StaticRoutePath } from \"../AppRoutes\";\nimport { Link as RouterLink, useParams } from \"react-router-dom\";\nimport { Button, Grid, TextField, Typography, Link } from \"@material-ui/core\";\nimport { Title } from \"../common/Title/Title\";\nimport { AuthWrapper } from \"../common/AuthWrapper/AuthWrapper\";\nimport StyledLabel from \"../common/StyledLabel/StyledLabel\";\n\nexport function PasswordResetRequired() {\n const { getPasswordRecoveryCode, recoverPassword } = useUserContext();\n const { email } = useParams();\n const [codeRequested, setCodeRequested] = useState(true);\n const [code, setCode] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [passwordRecovered, setPasswordRecovered] = useState(false);\n const [submitError, setSubmitError] = useState();\n\n async function getRecoveryCode() {\n try {\n if (!email) {\n return setSubmitError(\"No email found\");\n }\n const success = await getPasswordRecoveryCode(email);\n if (success) {\n setCodeRequested(true);\n }\n } catch (error) {\n setSubmitError((error as { message?: string }).message);\n }\n }\n\n async function recover() {\n try {\n if (!email) {\n return setSubmitError(\"No email found\");\n }\n const success = await recoverPassword(email, code, newPassword);\n if (success) {\n setPasswordRecovered(true);\n }\n } catch (error) {\n setSubmitError((error as { message?: string }).message);\n }\n }\n\n return (\n \n \n \n Please reset your account password\n
\n \n We’ve made some updates to the dashboard and require our users to\n reset their password to have those changes take effect. An email\n with the verification code should soon arrive to your email inbox.\n In case you need assistance please contact us at\n support@upsyshopping.com.\n \n
\n {passwordRecovered ? (\n <>\n \n \n Your password was succesfully reset!\n \n \n \n \n Login from here\n \n \n \n ) : codeRequested ? (\n <>\n \n \n The email address linked to your user account is {email}\n \n \n \n Code\n setCode(e.target.value)}\n />\n \n \n New Password\n setNewPassword(e.target.value)}\n />\n \n \n \n Set new password\n \n \n {submitError && (\n \n

{submitError}

\n
\n )}\n \n ) : (\n <>\n \n Email\n \n \n \n \n Recover password\n \n \n {submitError && (\n \n

{submitError}

\n
\n )}\n \n \n Login from here\n \n \n \n )}\n
\n
\n );\n}\n","import {\n Theme,\n Tooltip,\n TooltipProps,\n withStyles,\n Zoom,\n} from \"@material-ui/core\";\n\nconst HtmlTooltip = withStyles((theme: Theme) => ({\n arrow: {\n \"&:before\": {\n backgroundColor: \"#00008B\",\n },\n },\n tooltip: {\n border: \"1px solid #00008B\",\n background: \"#00008B\",\n color: \"#fff\",\n maxWidth: \"320px\",\n fontSize: theme.typography.pxToRem(12),\n fontWeight: theme.typography.fontWeightRegular,\n padding: theme.spacing(1.4),\n boxShadow: \"3px 4px 15px -3px rgba(11, 11, 11, 0.75)\",\n },\n tooltipPlacementTop: {\n top: theme.spacing(1.95),\n },\n tooltipPlacementBottom: {\n bottom: theme.spacing(0.7),\n },\n}))(Tooltip);\n\nfunction CustomHtmlTooltip(props: TooltipProps) {\n return (\n \n );\n}\nexport { HtmlTooltip, CustomHtmlTooltip };\n","import React from \"react\";\nimport TextField from \"@material-ui/core/TextField\";\nimport { ReactElementPropsType } from \"../ElementProps\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\nimport { Grid } from \"@material-ui/core\";\n\nexport default function CustomTextField(\n props: ReactElementPropsType & {\n labelText?: string;\n labelFor?: string;\n labelClassName?: string;\n }\n) {\n const classes = useClasses(props);\n const { labelText, labelFor, labelClassName } = props;\n return (\n \n {labelText && (\n \n \n \n )}\n \n \n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n label: (props: { required?: boolean }) => {\n return {\n fontSize: \"16px\",\n fontWeight: 500,\n lineHeight: \"19px\",\n color: \"#202F4E\",\n display: \"block\",\n width: \"100%\",\n margin: \"10px 0px\",\n \"&:after\": {\n content: props.required ? \"'*'\" : \"''\",\n },\n };\n },\n inputRoot: {\n \"& .MuiInputBase-root\": {\n \"&:is(.Mui-disabled)\": {\n backgroundColor: \"rgba(0,0,0,0.1)\",\n color: \"rgba(0,0,0,0.3)\",\n \"&:not(:hover) fieldset\": {\n border: \"1px solid rgba(0,0,0,0.2)\",\n },\n },\n \"& textarea\": {\n resize: (props: { multiline?: boolean }) =>\n props?.multiline ? \"vertical\" : null,\n flex: (props: { multiline?: boolean }) => (props?.multiline ? 1 : null),\n },\n background: \"#ffffff\",\n marginBottom: \"16px\",\n boxShadow: \"0px 4px 8px rgba(44, 39, 56, 0.04)\",\n borderRadius: \"6px\",\n \"& fieldset\": {\n borderColor: \"#E1EAFF\",\n },\n \"& input\": {\n fontWeight: 400,\n fontSize: \"16px\",\n lineHeight: \"19px\",\n paddingBlock: \"16px\",\n paddingLeft: \"16px\",\n color: \"#636364\",\n },\n \"&:hover fieldset\": {\n borderColor: \"#E1EAFF\",\n borderWidth: \"2px\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: \"#6793FF\",\n },\n },\n \"& .MuiFormHelperText-root.Mui-error\": {\n marginTop: \"-8px\",\n color: \"#C60101\",\n fontSize: \"14px\",\n fontStyle: \"italic\",\n },\n },\n}));\n","import React from \"react\";\n\ninterface IDropDownIconProps {\n height?: number;\n width?: number;\n}\nexport default function DropDownIcon({\n height: h = 30,\n width: w = 30,\n}: IDropDownIconProps) {\n return (\n \n \n \n );\n}\n","import React from \"react\";\nimport { ReactElementPropsType } from \"../ElementProps\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\nimport { Grid, Select } from \"@material-ui/core\";\nimport DropDownIcon from \"./DropDownIcon\";\n\ninterface useClassesPropsType {\n dropDownIconColor?: string;\n dropDownIconHeight?: number;\n dropDownIconWidth?: number;\n dropDownIconGapFromRight?: number;\n}\n\nexport default function CustomSelectField(\n props: ReactElementPropsType & {\n labelText?: string;\n labelFor?: string;\n labelClassName?: string;\n } & useClassesPropsType\n) {\n const {\n labelText,\n labelFor,\n labelClassName,\n dropDownIconColor,\n dropDownIconHeight,\n dropDownIconWidth,\n dropDownIconGapFromRight,\n ...rest\n } = props;\n const useClassesProps: useClassesPropsType = {\n dropDownIconColor,\n dropDownIconHeight,\n dropDownIconWidth,\n dropDownIconGapFromRight,\n };\n\n const classes = useClasses(useClassesProps);\n\n return (\n \n {labelText && (\n \n \n \n )}\n \n \n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n label: (props: { required?: boolean }) => {\n return {\n fontSize: \"16px\",\n fontWeight: 500,\n lineHeight: \"19px\",\n color: \"#202F4E\",\n display: \"block\",\n width: \"100%\",\n margin: \"10px 0px\",\n \"&:after\": {\n content: props.required ? \"'*'\" : \"''\",\n },\n };\n },\n selectRoot: {\n \"&.MuiInputBase-root\": {\n \"&:is(.Mui-disabled)\": {\n backgroundColor: \"rgba(0,0,0,0.1)\",\n color: \"rgba(0,0,0,0.3)\",\n \"&:not(:hover) fieldset\": {\n border: \"1px solid rgba(0,0,0,0.2)\",\n },\n },\n background: \"#ffffff\",\n marginBottom: \"16px\",\n boxShadow: \"0px 4px 8px rgba(44, 39, 56, 0.04)\",\n borderRadius: \"6px\",\n \"& fieldset\": {\n borderColor: \"#E1EAFF\",\n },\n \"& input, & .MuiSelect-root\": {\n fontWeight: 400,\n fontSize: \"16px\",\n lineHeight: \"19px\",\n color: \"#636364\",\n paddingBlock: \"16px\",\n paddingLeft: \"16px\",\n },\n \"&:hover fieldset\": {\n borderColor: \"#E1EAFF\",\n borderWidth: \"2px\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: \"#6793FF\",\n },\n \"& svg\": {\n top: \"calc(50% - 4px)\",\n right: (props: useClassesPropsType) =>\n props?.dropDownIconGapFromRight == 0 ||\n props?.dropDownIconGapFromRight\n ? props.dropDownIconGapFromRight\n : 24,\n height: (props: useClassesPropsType) =>\n props?.dropDownIconHeight ? props?.dropDownIconHeight : \"30px\",\n width: (props: useClassesPropsType) =>\n props?.dropDownIconWidth ? props?.dropDownIconWidth : \"30px\",\n fill: (props: useClassesPropsType) =>\n props?.dropDownIconColor ? props?.dropDownIconColor : \"#6793FF\",\n },\n },\n },\n}));\n","import {\n AuthorizationStrategy,\n getWooCommerceVersion,\n IConfigurationWooCommerceSpecific,\n IWooCommerceConfiguration,\n Language,\n WooCommerceApiVersion,\n} from \"../../common/ConfigurationsContext/Configuration\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport { FormControl, Grid, MenuItem, Typography } from \"@material-ui/core\";\nimport {\n IntegrationWizardPageProps,\n IntegrationWizardPageType,\n} from \"./IntegrationWizardPage\";\nimport { CustomHtmlTooltip } from \"../../common/Tooltip/Tooltip\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport CustomTextField from \"../../common/CustomUiComponent/TextField\";\nimport CustomSelectField from \"../../common/CustomUiComponent/Select\";\n\nexport function WooCommerceSpecificConfiguration({\n id,\n setPageType,\n}: IntegrationWizardPageProps & {\n setPageType: (pageType: IntegrationWizardPageType) => void;\n}) {\n const classes = useWooCommerceSpecificConfigurationClasses();\n const { configuration, setWooCommerceSpecificConfiguration } =\n useConfiguration(id);\n const { apiVersion, key, secret, woocommerceLanguage } =\n getPartialWooCommerceSpecificConfiguration(\n configuration as IWooCommerceConfiguration\n );\n\n return (\n <>\n WooCommerce Information\n \n {\n \"Provide a REST API consumer key for your WooCommerce installation (WooCommerce > Settings > Advanced > REST API).\"\n }\n \n \n \n \n \n \n setWooCommerceSpecificConfiguration({\n apiVersion: event.target.value as WooCommerceApiVersion,\n })\n }\n >\n \n {getWooCommerceVersion(WooCommerceApiVersion.v3)}\n \n \n {getWooCommerceVersion(WooCommerceApiVersion.v2)}\n \n \n {getWooCommerceVersion(WooCommerceApiVersion.v1)}\n \n \n \n \n \n \n \n \n \n setWooCommerceSpecificConfiguration({\n woocommerceLanguage: event.target.value as Language,\n })\n }\n defaultValue={\"\"}\n displayEmpty\n dropDownIconGapFromRight={0}\n >\n All products are in one language\n \n Filter for Finnish products\n \n \n Filter for English products\n \n \n Filter for Swedish products\n \n \n Filter for German products\n \n \n Filter for Netherland products\n \n \n \n \n \n \n Settings > Advanced > REST API).\">\n \n setWooCommerceSpecificConfiguration({ key: event.target.value })\n }\n />\n \n \n \n Settings > Advanced > REST API).\">\n \n setWooCommerceSpecificConfiguration({\n secret: event.target.value,\n })\n }\n />\n \n \n \n {/* \n \n \n Query authorization type\n \n setWooCommerceSpecificConfiguration({\n authStrategy: event.target.value as AuthorizationStrategy,\n })\n }\n >\n \n {AuthorizationStrategy.basic}\n \n \n {AuthorizationStrategy.query}\n \n \n \n \n */}\n \n );\n}\n\nfunction getPartialWooCommerceSpecificConfiguration(\n configuration?: IWooCommerceConfiguration\n): IConfigurationWooCommerceSpecific {\n return {\n key: configuration?.key ?? \"\",\n secret: configuration?.secret ?? \"\",\n apiVersion: configuration?.apiVersion ?? WooCommerceApiVersion.v3,\n authStrategy: configuration?.authStrategy ?? AuthorizationStrategy.basic,\n woocommerceLanguage: configuration?.woocommerceLanguage ?? \"\",\n };\n}\n\nconst useWooCommerceSpecificConfigurationClasses = createUseClasses(\n (theme) => ({\n title: {\n fontSize: \"20px\",\n fontWeight: 500,\n lineHeight: \"24px\",\n margin: \"30px 0 10px 0\",\n },\n subTitle: {\n fontSize: \"16px\",\n fontWeight: 500,\n lineHeight: \"19px\",\n color: \"#636364\",\n margin: \"10px 0 24px 0\",\n },\n })\n);\n","import {\n defaultPlatform,\n IConfiguration,\n IConfigurationCommonBackend,\n newConfigurationId,\n Platform,\n} from \"../../common/ConfigurationsContext/Configuration\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport {\n Divider,\n FormControl,\n Grid,\n MenuItem,\n Typography,\n} from \"@material-ui/core\";\nimport {\n IntegrationWizardPageProps,\n IntegrationWizardPageType,\n} from \"./IntegrationWizardPage\";\n\nimport { CustomHtmlTooltip } from \"./../../common/Tooltip/Tooltip\";\nimport { WooCommerceSpecificConfiguration } from \"./WooCommerceSpecificConfiguration\";\nimport CustomTextField from \"../../common/CustomUiComponent/TextField\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport CustomSelectField from \"../../common/CustomUiComponent/Select\";\n\nexport function CommonBackendConfiguration({\n id,\n setPageType,\n isWooCommerceSpecificConfiguration,\n}: IntegrationWizardPageProps & {\n setPageType: (pageType: IntegrationWizardPageType) => void;\n isWooCommerceSpecificConfiguration: boolean;\n}) {\n const classes = useCommonBackendConfigurationClasses();\n const { configuration, setCommonBackendConfiguration } = useConfiguration(id);\n const { platform, storeName, storeNameFormatted, storeUrl } =\n getPartialCommonBackendConfiguration(configuration);\n return (\n <>\n \n Store Platform Information\n \n \n The integration process is to connect the UPSY widget to your website.\n This setup only needs to be done once. After this integration, UPSY will\n be ready to work.\n \n \n \n \n \n setCommonBackendConfiguration({\n storeName: event.target.value.replace(/ /g, \"_\"),\n })\n }\n />\n \n \n \n \n \n setCommonBackendConfiguration({ storeUrl: event.target.value })\n }\n />\n \n \n \n \n \n \n setCommonBackendConfiguration({\n platform: event.target.value as Platform,\n })\n }\n >\n {[Platform.WooCommerce].map((platform) => {\n return {platform};\n })}\n \n \n \n \n \n \n
\n {isWooCommerceSpecificConfiguration && (\n \n )}\n
\n \n );\n}\n\nfunction getPartialCommonBackendConfiguration(\n configuration?: IConfiguration\n): IConfigurationCommonBackend {\n console.log(configuration);\n return {\n id: configuration?.id ?? newConfigurationId,\n platform: configuration?.platform ?? defaultPlatform,\n storeName: configuration?.storeName ?? \"\",\n storeNameFormatted: configuration?.storeNameFormatted ?? \"\",\n storeUrl: configuration?.storeUrl ?? \"\",\n };\n}\n\nconst useCommonBackendConfigurationClasses = createUseClasses((theme) => ({\n title: {\n fontSize: \"20px\",\n fontWeight: 700,\n lineHeight: \"24px\",\n margin: \"10px 0px\",\n },\n subTitle: {\n fontSize: \"16px\",\n fontWeight: 500,\n lineHeight: \"22px\",\n color: \"#636364\",\n },\n divider: {\n margin: \"36px 0\",\n },\n platformSpecificConfigurationWrapper: {\n display: \"block\",\n width: \"100%\",\n height: \"auto\",\n minHeight: \"150px\",\n },\n}));\n","import { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport {\n defaultAvatar,\n defaultButtonColor,\n getWooCommerceVersion,\n IConfigurationCommonFrontend,\n IWooCommerceConfiguration,\n Platform,\n} from \"../../common/ConfigurationsContext/Configuration\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Box,\n Collapse,\n Divider,\n Grid,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Typography,\n} from \"@material-ui/core\";\nimport { ReactNode, useEffect, useState } from \"react\";\nimport { IntegrationWizardPageProps } from \"./IntegrationWizardPage\";\nimport { Title, TitleVariant } from \"../../common/Title/Title\";\nimport { LoadingButton } from \"../../common/LoadingButton/LoadingButton\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport { ExpandMore, ArrowRight } from \"@material-ui/icons\";\n\nexport function ConfigurationSummary({ id }: IntegrationWizardPageProps) {\n const { configuration } = useConfiguration(id);\n const {\n platform,\n storeName,\n storeNameFormatted,\n storeUrl,\n apiVersion,\n key,\n secret,\n operationMode,\n language,\n avatar,\n buttonColor,\n flows,\n customQnA,\n } = configuration as IWooCommerceConfiguration;\n\n const classes = useClasses();\n\n return (\n <>\n Summary\n \n \n \n \n {platform === Platform.WooCommerce && (\n <>\n \n \n \n \n )}\n \n \n \n \n );\n}\n\nfunction SummaryRow({ label, value }: { label: ReactNode; value: ReactNode }) {\n return (\n {value}}\n />\n );\n}\n\nfunction SummaryLabelAndValue({\n label,\n value,\n classes,\n}: {\n label: ReactNode;\n value: ReactNode;\n classes?: string;\n}) {\n return (\n <>\n \n {label}:{\" \"}\n \n \n {value}\n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n summaryRow: {\n marginTop: \"2em\",\n },\n}));\n","import { Platform } from \"../../common/ConfigurationsContext/Configuration\";\n\nexport interface IntegrationWizardPageProps {\n id: string;\n}\n\nexport enum IntegrationWizardCommonPageType {\n CommonBackend = \"CommonBackend\",\n StoreSpecificBackend = \"StoreSpecificBackend\",\n Summary = \"Summary\",\n Success = \"Success\",\n CommonFrontendFAQs = \"CommonFrontendFAQs\",\n}\n\nexport type IntegrationWizardPageType =\n | IntegrationWizardCommonPageType\n | Platform;\n\nexport const fullIntegrationWizardPages: IntegrationWizardPageType[] = [\n IntegrationWizardCommonPageType.CommonBackend,\n IntegrationWizardCommonPageType.StoreSpecificBackend,\n IntegrationWizardCommonPageType.Summary,\n IntegrationWizardCommonPageType.Success,\n];\n\nexport const BasicIntegrationWizardPages: IntegrationWizardPageType[] = [\n IntegrationWizardCommonPageType.CommonBackend,\n IntegrationWizardCommonPageType.Summary,\n IntegrationWizardCommonPageType.Success,\n];\n\nexport const IntegrationWizardPagesByType = {\n [Platform.WooCommerce]: fullIntegrationWizardPages,\n [Platform.Liana]: BasicIntegrationWizardPages,\n [Platform.Magento]: BasicIntegrationWizardPages,\n [Platform.MyCashFlow]: BasicIntegrationWizardPages,\n [Platform.GoogleShoppingXML]: BasicIntegrationWizardPages,\n [Platform.Refox]: BasicIntegrationWizardPages,\n [Platform.Sotka]: BasicIntegrationWizardPages,\n [Platform.Shopify]: BasicIntegrationWizardPages,\n};\n","import { Button, CircularProgress } from \"@material-ui/core\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\nimport { ButtonProps } from \"@material-ui/core/Button/Button\";\n\nexport const LoadingButton = ({\n loading,\n loadingText = \"Loading\",\n buttonText,\n progress,\n ...buttonProps\n}: {\n loading: boolean;\n loadingText?: string;\n buttonText: string;\n progress?: number;\n} & Omit) => {\n const classes = useClasses();\n\n return (\n \n {loading ? loadingText : buttonText}\n {loading && (\n \n )}\n \n );\n};\n\nconst useClasses = createUseClasses(() => ({\n spinner: {\n marginLeft: 10,\n },\n}));\n","import * as React from \"react\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport {\n IConfiguration,\n newConfigurationId,\n} from \"../../common/ConfigurationsContext/Configuration\";\nimport { Grid, Typography } from \"@material-ui/core\";\nimport { IntegrationWizardPageProps } from \"./IntegrationWizardPage\";\nimport { DynamicRoutePath, StaticRoutePath } from \"../../AppRoutes\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useEffect } from \"react\";\n\nexport function ConfigurationSuccess({ id }: IntegrationWizardPageProps) {\n const { configuration } = useConfiguration(id);\n const navigate = useNavigate();\n const redirectTimeInMilliseconds = 1000;\n const { storeName, storeNameFormatted } = configuration as IConfiguration;\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n const navigateURL =\n id == newConfigurationId\n ? StaticRoutePath.Stores\n : DynamicRoutePath.StoreSettings(id);\n const navigationState = {\n message:\n id != newConfigurationId\n ? \"\"\n : \"Create new store configurations successfully!\",\n };\n navigate(navigateURL, { state: navigationState });\n }, redirectTimeInMilliseconds);\n return () => {\n clearInterval(timeout);\n };\n }, []);\n\n return (\n <>\n Success\n \n \n \n Store configuration {storeNameFormatted || storeName}{\" \"}\n {id == newConfigurationId ? \"created\" : \"updated\"} successfully!\n \n {id != newConfigurationId ? (\n \n Go to stores list or{\" \"}\n \n {storeNameFormatted || storeName} dashboard\n \n \n ) : null}\n \n \n \n );\n}\n","import {\n Step,\n StepLabel,\n Stepper,\n useMediaQuery,\n useTheme,\n} from \"@material-ui/core\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\n\nexport type ConfigurationStepperProps = {\n steps: string[];\n activeStep: number;\n breakpointDirection?: \"up\" | \"down\";\n breakpoint?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n hideStepperProgressBar?: boolean;\n stepLabelContainerAlignment?: string;\n};\n\nconst colorActive = \"#A4BEFF\";\nconst mutedColor = \"#CACDD5\";\nconst whiteColor = \"#ffffff\";\nconst stepperTextColor = \"#202F4E\";\n\nconst useConfigurationStepperClasses = createUseClasses(() => ({\n root: {\n backgroundColor: whiteColor,\n \"&.MuiStepper-horizontal.MuiStepper-alternativeLabel\": {\n paddingBlock: 0,\n paddingInline: 0,\n },\n \"& .MuiStepLabel-iconContainer, & .MuiStepConnector-root\": {\n display: (props: { hideStepperProgressBar: boolean }) =>\n props.hideStepperProgressBar && \"none\",\n },\n \"& .MuiStep-root.MuiStep-horizontal.MuiStep-alternativeLabel\": {\n padding: 0,\n minWidth: \"80px\",\n },\n \"&.MuiStepper-alternativeLabel\": {\n alignItems: \"stretch\",\n },\n \"& .MuiStepConnector-vertical\": {\n padding: 0,\n marginLeft: 18,\n },\n \"& .MuiStepConnector-root.MuiStepConnector-completed, & .MuiStepConnector-root.MuiStepConnector-active\":\n {\n \"& .MuiStepConnector-line\": {\n borderWidth: 2.6,\n borderColor: colorActive,\n },\n },\n \"& .MuiStepConnector-line\": {\n borderColor: mutedColor,\n borderWidth: \"2px\",\n },\n\n \"& .MuiStepLabel-root.Mui-disabled\": {\n \"& .MuiSvgIcon-root.MuiStepIcon-root\": {\n border: `2px solid ${mutedColor}`,\n fill: whiteColor,\n borderRadius: \"50%\",\n \"& .MuiStepIcon-text\": {\n fill: mutedColor,\n },\n },\n },\n\n \"&.MuiStepper-root .MuiStepLabel-vertical .MuiStepLabel-iconContainer\": {\n marginLeft: \"8px\",\n },\n \"&.MuiStepper-root .MuiStepLabel-iconContainer .MuiStepIcon-root.MuiStepIcon-active\":\n {\n color: colorActive,\n },\n \"&.MuiStepper-root .MuiStepLabel-iconContainer .MuiStepIcon-root.MuiStepIcon-completed\":\n {\n color: colorActive,\n },\n \"&.MuiStepper-root .MuiStepLabel-root.MuiStepLabel-horizontal.MuiStepLabel-alternativeLabel\":\n {\n flexDirection: \"column-reverse\",\n gap: \"36px\",\n alignItems: \"center\",\n height: \"100%\",\n },\n \"& .MuiStepLabel-horizontal .MuiStepLabel-labelContainer\": {\n display: \"flex\",\n justifyContent: (props: { stepLabelContainerAlignment: string }) =>\n props.stepLabelContainerAlignment,\n },\n \"& .MuiStepLabel-labelContainer .MuiStepLabel-label.MuiStepLabel-alternativeLabel\":\n {\n color: stepperTextColor,\n display: \"inline-block\",\n fontSize: \"16px\",\n lineHeight: \"22.4px\",\n fontWeight: 600,\n opacity: 0.7,\n textAlign: \"center\",\n position: \"relative\",\n \"&.MuiStepLabel-active\": {\n opacity: 1,\n \"&::before\": {\n position: \"absolute\",\n content: '\"\"',\n display: \"block\",\n bottom: \"-16px\",\n width: \"100%\",\n height: \"5px\",\n borderRadius: \"4px\",\n left: 0,\n background: \"#acaef3\",\n },\n },\n },\n \"& .MuiStepConnector-root.MuiStepConnector-alternativeLabel\": {\n top: \"unset\",\n bottom: \"12px\",\n left: \"calc(-50% + 12px)\",\n right: \"calc(50% + 12px)\",\n },\n \"&.MuiStepper-root .MuiStepLabel-root .MuiStepLabel-label.MuiStepLabel-completed\":\n {\n opacity: 1,\n },\n },\n}));\n\nexport function CustomStepper(props: ConfigurationStepperProps) {\n const {\n steps,\n activeStep,\n breakpointDirection = \"down\",\n breakpoint = \"sm\",\n hideStepperProgressBar = false,\n stepLabelContainerAlignment = \"center\",\n } = props;\n const theme = useTheme();\n const matches = useMediaQuery(\n theme.breakpoints[breakpointDirection](breakpoint)\n );\n const classes = useConfigurationStepperClasses({\n ...props,\n hideStepperProgressBar,\n stepLabelContainerAlignment,\n });\n\n return (\n <>\n {matches ? (\n \n {steps.map((label) => (\n \n {label}\n \n ))}\n \n ) : (\n \n {steps.map((label) => {\n const stepProps: { completed?: boolean } = {};\n const labelProps: { optional?: React.ReactNode } = {};\n return (\n \n {label}\n \n );\n })}\n \n )}\n \n );\n}\n","import { useEffect, useState } from \"react\";\nimport {\n Button,\n Checkbox,\n FormControlLabel,\n Grid,\n MobileStepper,\n} from \"@material-ui/core\";\nimport Alert from \"@material-ui/lab/Alert\";\n\nimport { IConfiguration } from \"../../common/ConfigurationsContext/Configuration\";\nimport {\n useCommonBackendConfigurationValidator,\n useConfiguration,\n useConfigurations,\n useConfigurationTester,\n} from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport { CommonBackendConfiguration } from \"./CommonBackendConfiguration\";\nimport { ConfigurationSummary } from \"./ConfigurationSummary\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport {\n BasicIntegrationWizardPages,\n IntegrationWizardCommonPageType,\n IntegrationWizardPageProps,\n IntegrationWizardPagesByType,\n IntegrationWizardPageType,\n} from \"./IntegrationWizardPage\";\nimport { LoadingButton } from \"../../common/LoadingButton/LoadingButton\";\nimport { ConfigurationSuccess } from \"./ConfigurationSuccess\";\nimport { CustomStepper } from \"../../common/CustomeStepper\";\nimport { TopContainer } from \"../../common/Page/TopContainer\";\nimport { MainContainer } from \"../../common/Page/MainContainer\";\nimport { useNavigate } from \"react-router-dom\";\nimport { DynamicRoutePath } from \"../../AppRoutes\";\n\nfunction getStepperLabelsFromPageTypes(\n configurationsPages: IntegrationWizardPageType[]\n) {\n return configurationsPages\n .map((pageType) => {\n switch (pageType) {\n case IntegrationWizardCommonPageType.CommonBackend:\n return \"Integration\";\n case IntegrationWizardCommonPageType.StoreSpecificBackend:\n return \"\";\n case IntegrationWizardCommonPageType.Success:\n return \"\";\n default:\n return \"\";\n }\n })\n .filter((item) => item);\n}\n\nexport function IntegrationWizard({ id }: { id: string }) {\n const { configuration } = useConfiguration(id);\n const platform = configuration?.platform;\n const IntegrationWizardPages = platform\n ? IntegrationWizardPagesByType[platform]\n : BasicIntegrationWizardPages;\n const [pageType, setPageType] = useState(\n IntegrationWizardPages[0]\n );\n const [steps, setSteps] = useState([]);\n\n useEffect(() => {\n setSteps((prev) => [\n ...getStepperLabelsFromPageTypes(IntegrationWizardPages),\n ]);\n }, []);\n\n const [activeStep, setActiveStep] = useState(0);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction IntegrationWizardPage({\n id,\n pageType,\n setPageType,\n}: IntegrationWizardPageProps & {\n pageType: IntegrationWizardPageType;\n setPageType: (pageType: IntegrationWizardPageType) => void;\n}) {\n switch (pageType) {\n case IntegrationWizardCommonPageType.CommonBackend:\n return (\n \n );\n case IntegrationWizardCommonPageType.StoreSpecificBackend:\n return (\n \n );\n case IntegrationWizardCommonPageType.Summary:\n return ;\n case IntegrationWizardCommonPageType.Success:\n return ;\n default:\n return null;\n }\n}\n\nconst isIgnoreErrorBoxEnabled: boolean =\n process.env.REACT_APP_ENABLE_IGNORE_TEST_ERROR_BOX === \"true\";\n\nfunction IntegrationWizardNavigation({\n id,\n pageType,\n setPageType,\n setActiveStep,\n IntegrationWizardPages,\n}: IntegrationWizardPageProps & {\n setActiveStep: React.Dispatch>;\n pageType: IntegrationWizardPageType;\n setPageType: (pageType: IntegrationWizardPageType) => void;\n IntegrationWizardPages: IntegrationWizardPageType[];\n}) {\n const { configuration, configurationError } = useConfiguration(id);\n const { testingConfiguration, testingError, testBackendShopConfiguration } =\n useConfigurationTester(configuration);\n\n const {\n commonBackendConfigurationValidationError,\n validateCommonBackendConfiguration,\n } = useCommonBackendConfigurationValidator(configuration);\n\n const classes = useNavigationButtonsClasses();\n const [ignoreError, setIgnoreError] = useState(false);\n const [pageIndex, setPageIndex] = useState(0);\n const minIndex = 0;\n const isCommonBackendConfigPage =\n pageType === IntegrationWizardCommonPageType.CommonBackend;\n const isShopConfigTestPage =\n pageType === IntegrationWizardCommonPageType.StoreSpecificBackend;\n const isSummaryPage = pageType === IntegrationWizardCommonPageType.Summary;\n const isSuccessPage = pageType === IntegrationWizardCommonPageType.Success;\n\n useEffect(() => {\n setActiveStep(pageIndex);\n }, [pageIndex, setActiveStep]);\n\n const moveToPage = (pageIndex: number) => {\n setPageIndex(pageIndex);\n const pageType = IntegrationWizardPages[pageIndex];\n if (pageType === IntegrationWizardCommonPageType.StoreSpecificBackend) {\n console.log(\"Landed on store specific config page\");\n setPageType(pageType);\n } else {\n setPageType(pageType);\n }\n };\n\n function previous() {\n if (minIndex < pageIndex) {\n moveToPage(pageIndex - 1);\n }\n }\n\n return (\n \n {!isSuccessPage && (\n \n \n Previous\n \n }\n nextButton={\n \n }\n steps={IntegrationWizardPages.length - 1}\n activeStep={pageIndex}\n position=\"static\"\n />\n \n )}\n {isShopConfigTestPage && testingError && (\n \n \n {testingError}\n \n {isIgnoreErrorBoxEnabled && (\n setIgnoreError(event.target.checked)}\n />\n }\n label=\"Ignore Error\"\n />\n )}\n \n )}\n {isCommonBackendConfigPage && commonBackendConfigurationValidationError && (\n \n \n {commonBackendConfigurationValidationError}\n \n \n )}\n {isSummaryPage && configurationError && (\n \n \n {configurationError}\n \n \n )}\n \n );\n}\n\nfunction ProceedButton({\n id,\n pageType,\n pageIndex,\n moveToPage,\n testingConfiguration,\n ignoreError,\n testBackendShopConfiguration,\n validateCommonBackendConfiguration,\n IntegrationWizardPages,\n}: IntegrationWizardPageProps & {\n pageType: IntegrationWizardPageType;\n pageIndex: number;\n moveToPage: (index: number) => void;\n testingConfiguration: boolean;\n ignoreError: boolean;\n testBackendShopConfiguration: (successCallback: () => void) => void;\n validateCommonBackendConfiguration: (successCallback: () => void) => void;\n IntegrationWizardPages: IntegrationWizardPageType[];\n}) {\n const maxIndex = IntegrationWizardPages.length - 1;\n const isCommonBackendPage =\n pageType === IntegrationWizardCommonPageType.CommonBackend;\n const isShopConfigTestPage =\n pageType === IntegrationWizardCommonPageType.StoreSpecificBackend;\n const isSummaryPage = pageType === IntegrationWizardCommonPageType.Summary;\n const isSuccessPage = pageType === IntegrationWizardCommonPageType.Success;\n const { configuration, saveConfiguration, clearTempConfiguration } =\n useConfiguration(id);\n const { loading } = useConfigurations();\n const navigate = useNavigate();\n function next() {\n if (pageIndex < maxIndex) {\n moveToPage(pageIndex + 1);\n }\n }\n\n function handleCancelButton() {\n navigate(\"/stores\");\n }\n\n const classes = useProceedButtonClasses();\n\n return (\n \n \n {isCommonBackendPage ? (\n validateCommonBackendConfiguration(next)}\n >\n {\"Save & Next\"}\n \n ) : isShopConfigTestPage ? (\n testBackendShopConfiguration(next)\n }\n />\n ) : isSummaryPage ? (\n {\n try {\n await saveConfiguration(configuration as IConfiguration);\n clearTempConfiguration();\n next();\n // navigate(DynamicRoutePath.StoreSettings(id));\n } catch (err) {}\n }}\n />\n ) : isSuccessPage ? null : (\n \n {\"Save & Next\"}\n \n )}\n \n );\n}\n\nconst useNavigationButtonsClasses = createUseClasses((theme) => ({\n alert: {\n whiteSpace: \"pre-wrap\",\n },\n buttonsContainer: {\n padding: `${theme.spacing(2)}px 0`,\n alignItems: \"flex-end\",\n },\n mobileStepper: {\n \"& .MuiMobileStepper-dots\": {\n display: \"none\",\n width: 0,\n opacity: 0,\n },\n },\n}));\n\nconst useProceedButtonClasses = createUseClasses((theme) => ({\n root: {\n borderRadius: \"8px\",\n border: \"1px solid #6793FF\",\n },\n}));\n","import { Navigate, useParams } from \"react-router-dom\";\nimport { IStoreRouteParams, StaticRoutePath } from \"../../AppRoutes\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport { IntegrationWizard } from \"./IntegrationWizard\";\nimport { Store } from \"../Store\";\nimport { newConfigurationId } from \"../../common/ConfigurationsContext/Configuration\";\nimport { isAdmin, useUserContext } from \"../../common/UserContext/UserContext\";\nimport { UserRole } from \"../../common/UserContext/User\";\n\nexport function StoreIntegration() {\n const { id = \"\" } = useParams();\n const { user } = useUserContext();\n const { configuration } = useConfiguration(id);\n\n if (id == newConfigurationId && !isAdmin(user)) {\n return ;\n }\n\n if (!configuration) {\n return ;\n }\n return (\n \n \n \n );\n}\n","import { IConfigurationCommonFrontendDynamoDB } from \"../../../common/Client/BackendResponse\";\n\nexport enum activeWidgetScreenEnum {\n WIDGETEXPANDED = \"WIDGETEXPANDED\",\n WIDGETMINIFIED = \"WIDGETMINIFIED\",\n GREETINGLG = \"GREETINGLG\",\n GREETINGSM = \"GREETINGSM\",\n FEEDBACK = \"FEEDBACK\",\n THANKYOU = \"THANKYOU\",\n ANYQUESTION = \"ANYQUESTION\",\n}\n\nexport type ActiveWidgetScreenType = `${activeWidgetScreenEnum}`;\n\nexport enum UpsyContextEnum {\n UP_SELL = \"UP_SELL\",\n CROSS_SELL = \"CROSS_SELL\",\n RELATED_SELL = \"RELATED_SELL\",\n CATEGORY = \"CATEGORY\",\n NEW_ARRIVAL = \"NEW_ARRIVAL\",\n DAILY_DEALS = \"DAILY_DEALS\",\n FAQ = \"faq\",\n}\n\nexport type UpsyContextType = `${UpsyContextEnum}`;\n\nexport interface IWidget {\n updateConfig: (config: Partial) => void;\n getWidgetScreen: () => ActiveWidgetScreenType;\n getWidgetContext: () => UpsyContextType;\n setWidgetScreen: (screen: ActiveWidgetScreenType) => void;\n setWidgetContext: (context: UpsyContextType) => void;\n subscribeScreen: (\n callback: (screen: ActiveWidgetScreenType) => void\n ) => Function;\n subscribeContext: (callback: (screen: UpsyContextType) => void) => Function;\n}\n","import { Button } from \"@material-ui/core\";\nimport React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport ScriptTag from \"react-script-tag\";\nimport { IConfigurationCommonFrontendDynamoDB } from \"../../common/Client/BackendResponse\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport {\n activeWidgetScreenEnum,\n ActiveWidgetScreenType,\n IWidget,\n UpsyContextType,\n} from \"./types/widgetPreview\";\n\nconst widgetJsUrl = process.env.REACT_APP_WIDGET_JS_URL;\nconst widgetBranch = process.env.REACT_APP_WIDGET_BRANCH;\n\nexport function UpsyPreview({\n config,\n widgetScreen,\n widgetContext,\n}: {\n config: IConfigurationCommonFrontendDynamoDB;\n widgetScreen?: ActiveWidgetScreenType;\n widgetContext?: UpsyContextType;\n}) {\n const parentRef = useRef(null);\n const [scriptLoaded, setScriptLoaded] = useState(false);\n const [widgetClicked, setWidgetClicked] = useState(false);\n const onScriptLoaded = () => {\n setScriptLoaded(true);\n };\n const upsyWidget = useRef(null);\n const initialWidgetContext = useRef(null);\n const initialWidgetScreen = useRef(null);\n const initialHeight = 120;\n const [height, setHeight] = useState(initialHeight);\n const widgetScriptSrc =\n !process.env.NODE_ENV || process.env.NODE_ENV === \"development\"\n ? \"http://localhost:8000/static/upsy.js\"\n : widgetJsUrl\n ? widgetJsUrl\n : \"https://upsy-widget.upsyshopping.com/static/upsy.js\";\n\n const widgetPreviewEnvironment =\n !process.env.NODE_ENV || process.env.NODE_ENV === \"development\"\n ? \"local\"\n : widgetBranch\n ? widgetBranch\n : \"production\";\n\n useEffect(() => {\n (async () => {\n if (scriptLoaded && config && parentRef.current) {\n setWidgetClicked(false);\n try {\n upsyWidget.current = (await (window as any).upsy_sdk.preview(\n config,\n parentRef.current,\n widgetPreviewEnvironment\n )) as IWidget;\n\n initialWidgetScreen.current = upsyWidget.current.getWidgetScreen();\n initialWidgetContext.current = upsyWidget.current.getWidgetContext();\n widgetScreen && upsyWidget.current.setWidgetScreen(widgetScreen);\n widgetContext && upsyWidget.current.setWidgetContext(widgetContext);\n\n upsyWidget.current.subscribeScreen((screen) => {\n if (\n [\n activeWidgetScreenEnum.WIDGETMINIFIED,\n activeWidgetScreenEnum.FEEDBACK,\n ].includes(screen as activeWidgetScreenEnum)\n ) {\n setHeight(300);\n } else if (screen === activeWidgetScreenEnum.WIDGETEXPANDED) {\n setHeight(698);\n } else {\n setHeight(initialHeight);\n }\n });\n } catch (e) {\n console.error(e);\n }\n }\n })();\n }, [scriptLoaded, parentRef.current]);\n\n useEffect(() => {\n if (upsyWidget.current) {\n widgetScreen && upsyWidget.current.setWidgetScreen(widgetScreen);\n widgetContext && upsyWidget.current.setWidgetContext(widgetContext);\n }\n }, [widgetContext, widgetScreen]);\n\n useEffect(() => {\n if (upsyWidget.current) {\n upsyWidget.current.updateConfig({ ...config });\n }\n }, [config]);\n\n const reset = () => {\n if (!upsyWidget.current) {\n return;\n }\n setWidgetClicked(false);\n initialWidgetContext.current &&\n upsyWidget.current.setWidgetContext(initialWidgetContext.current);\n initialWidgetScreen.current &&\n upsyWidget.current.setWidgetScreen(initialWidgetScreen.current);\n widgetScreen && upsyWidget.current.setWidgetScreen(widgetScreen);\n widgetContext && upsyWidget.current.setWidgetContext(widgetContext);\n };\n\n return (\n <>\n \n {widgetClicked ? (\n \n Reset\n \n ) : (\n <>\n )}\n setWidgetClicked(true)}\n >\n \n );\n}\n\n// Wrapper container for upsy preview section\nexport function UpsyPreviewContainer({\n children,\n minHeight = 250,\n}: {\n children: React.ReactNode;\n minHeight?: number;\n}) {\n const classes = usePreviewContainerClasses();\n return (\n
\n {children}\n
\n );\n}\n\nconst usePreviewContainerClasses = createUseClasses((theme) => ({\n root: {\n width: \"100%\",\n margin: \"20px 0 5px 0\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-end\",\n alignItems: \"baseline\",\n background: \"rgb(252, 238, 230)\",\n boxShadow: \"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\",\n padding: \"0.7rem\",\n borderRadius: \"0.5rem\",\n },\n}));\n","import { backendImageUploadClient } from \"../../common/Client/backendClient\";\nimport { getAwsTokenFromLocalStorage } from \"../../common/utils/token\";\n\nexport default function ImageUpload() {\n const uploadImage = async (\n img: File | null,\n storeName = \"\"\n ): Promise => {\n try {\n if (storeName === \"\" || !img) {\n return false;\n }\n\n let data = new FormData();\n data.append(\"file\", img);\n const response = await backendImageUploadClient.post(\n `/upload/image/${storeName}`,\n data,\n {\n headers: {\n Authorization: getAwsTokenFromLocalStorage(),\n },\n }\n );\n return response && response.data;\n } catch (err) {\n throw new Error(\"Failed to upload image\");\n }\n };\n\n return {\n uploadImage,\n };\n}\n","import {\n Grid,\n Typography,\n Box,\n Button,\n makeStyles,\n IconButton,\n} from \"@material-ui/core\";\nimport { SetStateAction, useState } from \"react\";\nimport { FileUploader } from \"react-drag-drop-files\";\nimport { Link } from \"react-router-dom\";\nimport ImageUpload from \"../../Stores/StoreSettings/ImageUpload\";\nimport { useConfiguration } from \"../ConfigurationsContext/ConfigurationsContext\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nexport interface imageUploadWidgetInterface {\n id: string;\n setImageURLFunction: React.Dispatch>;\n buttonLabelName: string;\n}\n\nconst fileTypes = [\"JPG\", \"PNG\", \"GIF\", \"JPEG\"];\n\nconst defaultAvatarName = \"cloud.png\";\n\nconst getPublicFile = (path: string) => `${process.env.PUBLIC_URL}${path}`;\n\nexport function ImageUploadWidget({\n id,\n setImageURLFunction,\n buttonLabelName,\n}: imageUploadWidgetInterface) {\n const classes = useClasses();\n const { configuration } = useConfiguration(id);\n const [file, setFile] = useState(getPublicFile(\"cloud.png\"));\n const [fileToUpload, setFileToUpload] = useState(null);\n const [trackFileUpload, setTrackFileUpload] = useState(false);\n const { uploadImage } = ImageUpload();\n const handleFileChange = (file: SetStateAction) => {\n if (file instanceof Blob) {\n setFileToUpload(file);\n setFile(URL.createObjectURL(file));\n }\n };\n const handleImageUpload = async () => {\n try {\n setTrackFileUpload(false);\n if (file === defaultAvatarName) {\n alert(\"Please Select a file to upload\");\n return false;\n }\n const data = await uploadImage(fileToUpload, configuration?.storeName);\n setImageURLFunction(data.result);\n setTrackFileUpload(true);\n setFile(getPublicFile(\"cloud.png\"));\n } catch (error) {}\n };\n\n const handleClose = (\n event: React.SyntheticEvent | React.MouseEvent,\n reason?: string\n ) => {\n if (reason === \"clickaway\") {\n return;\n }\n setTrackFileUpload(false);\n };\n\n return (\n <>\n \n \n Upload your logo\n \n \n PNG,JPEG,GIF,JPG files are allowed. Max file size 512px x 512px.\n \n \n\n \n \n \n \n {file === defaultAvatarName && (\n \n Drag & Drop or{\" \"}\n \n browse\n \n from your pc.\n \n )}\n \n \n \n {buttonLabelName}\n \n \n \n \n \n \n \n }\n />\n \n );\n}\n\nconst useClasses = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n display: \"block\",\n background: \"rgb(252, 238, 230)\",\n boxShadow: \"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\",\n padding: \"0.7rem\",\n borderRadius: \"0.5rem\",\n },\n avatarContainer: {\n marginLeft: \"5px\",\n marginBottom: \"10px\",\n },\n typographyForLogoUploadTitle: {\n fontWeight: 700,\n fontSize: \"20px\",\n letterSpacing: \"0.04em\",\n color: \"#202F4E\",\n },\n typographyForLogoUploadRules: {\n fontFamily: \"Inter\",\n fontWeight: 500,\n fontSize: \"20px\",\n letterSpacing: \"0.02em\",\n color: \"#636364\",\n },\n gridItemRoot: {\n \"&.MuiGrid-item\": {\n padding: \"4px\",\n },\n },\n\n buttonColorBox: {\n height: \"15px\",\n width: \"15px\",\n marginTop: \"105px\",\n marginLeft: \"5px\",\n },\n imageContainer: {\n paddingTop: \"36px\",\n paddingBottom: \"28px\",\n width: \"450px\",\n height: \"159px\",\n backgroundColor: \"#FCEEE6\",\n borderStyle: \"dashed\",\n textAlign: \"center\",\n border: \"1px dashed #6D6D6D\",\n borderRadius: \"5px\",\n },\n imageTypo: {\n fontWeight: 500,\n fontSize: \"16px\",\n lineHeight: \"19.5px\",\n color: \"#636364\",\n },\n imageLink: {\n fontWeight: 500,\n fontSize: \"16px\",\n lineHeight: \"19.5px\",\n color: \"#0093B4\",\n marginRight: \"5px\",\n textDecoration: \"underline\",\n },\n button: {\n height: \"35px\",\n fontSize: \"16px\",\n fontWeight: 700,\n textTransform: \"capitalize\",\n borderRadius: \"10px\",\n },\n imageUploaderButton: {\n minWidth: \"160px\",\n },\n imageBoxContainer: {\n [theme.breakpoints.up(\"lg\")]: {\n gap: \"10px\",\n },\n gap: \"30px\",\n justifyContent: \"space-between\",\n alignItems: \"flex-end\",\n marginBottom: \"68px\",\n },\n}));\n","import {\n defaultAvatar,\n defaultButtonColor,\n defaultLanguage,\n defaultOperationMode,\n DisplayLanguage,\n IConfiguration,\n IConfigurationCommonFrontend,\n Language,\n OperationMode,\n defaultAccentColorLight,\n} from \"../../common/ConfigurationsContext/Configuration\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport {\n Box,\n Button,\n FormControl,\n FormControlLabel,\n Grid,\n InputLabel,\n Link,\n MenuItem,\n Radio,\n RadioGroup,\n Typography,\n} from \"@material-ui/core\";\nimport { UpsyPreview, UpsyPreviewContainer } from \"./UpsyPreview\";\nimport { SettingsWizardPageProps } from \"./SettingsWizardPage\";\n\nimport { CompactPicker } from \"react-color\";\nimport { CustomHtmlTooltip } from \"../../common/Tooltip/Tooltip\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport { transformCommonProperties } from \"../../common/ConfigurationsContext/dashboardToBackendTransformer\";\nimport CustomTextField from \"../../common/CustomUiComponent/TextField\";\nimport CustomSelectField from \"../../common/CustomUiComponent/Select\";\nimport { useEffect, useState } from \"react\";\nimport { ImageUploadWidget } from \"../../common/ImageUploader/ImageUpload\";\n\nexport function CommonFrontendConfiguration({ id }: SettingsWizardPageProps) {\n const { configuration, setCommonFrontendConfiguration } =\n useConfiguration(id);\n const {\n operationMode,\n language,\n avatar,\n buttonColor,\n widgetToLeft,\n minimizedMode,\n accentColorLight,\n } = getPartialCommonFrontendConfiguration(configuration);\n const classes = useClasses();\n const handleChange = (event: React.ChangeEvent) => {\n setCommonFrontendConfiguration({\n widgetToLeft: event.target.value === \"true\" ? true : false,\n });\n };\n const handleModeChange = (event: React.ChangeEvent) => {\n setCommonFrontendConfiguration({\n minimizedMode: event.target.value === \"true\" ? true : false,\n });\n };\n\n const [imageURL, setImageURL] = useState(avatar);\n\n const config = configuration\n ? transformCommonProperties(configuration).frontendConfiguration\n : null;\n\n useEffect(() => {\n setCommonFrontendConfiguration({\n avatar: imageURL,\n });\n }, [imageURL]);\n\n return (\n <>\n \n \n \n \n Select Operation Mode\n \n \n You can always change the setting.\n \n \n\n \n \n \n \n setCommonFrontendConfiguration({\n operationMode: event.target.value as OperationMode,\n })\n }\n >\n \n {OperationMode.Test}\n \n \n {OperationMode.Production}\n \n \n \n \n \n {/* \n \n \n \n setCommonFrontendConfiguration({\n language: event.target.value as Language,\n })\n }\n >\n \n {DisplayLanguage.fi}\n \n \n {DisplayLanguage.en}\n \n \n {DisplayLanguage.se}\n \n \n \n \n */}\n {/* Upsy widget mode */}\n \n \n Select widget mode\n \n \n You can always change this setting.\n \n \n \n \n }\n label=\"Normal\"\n />\n }\n label=\"Minimized\"\n />\n \n \n {/* Widget direction */}\n \n \n Select widget direction\n \n \n You can always change this setting.\n \n \n \n \n }\n label=\"Right aligned\"\n />\n }\n label=\"Left aligned\"\n />\n \n \n\n \n \n Select widget color\n \n \n Select one color for the widget style. One of the brand colors works\n the best.\n \n \n \n \n
\n Button color\n \n setCommonFrontendConfiguration({\n buttonColor: color.hex,\n })\n }\n />\n
\n
\n
\n \n \n Your primary selected color:\n \n \n \n\n \n \n Select Secondary widget color\n \n \n Select one color for the Secondary widget style.\n \n \n \n \n
\n Secondary color\n \n setCommonFrontendConfiguration({\n accentColorLight: color.hex,\n })\n }\n />\n
\n
\n
\n \n \n Your secondary selected color:\n \n \n \n \n Widget preview\n \n \n {config && (\n //eslint-disable-next-line react/jsx-no-undef\n \n \n \n \n \n )}\n \n );\n}\n\nfunction getPartialCommonFrontendConfiguration(\n configuration?: IConfiguration\n): Omit<\n IConfigurationCommonFrontend,\n \"flows\" | \"customQnA\" | \"customerCategories\" | \"greetings\"\n> {\n return {\n operationMode: configuration?.operationMode ?? defaultOperationMode,\n language: configuration?.language ?? defaultLanguage,\n widgetToLeft: (configuration?.widgetToLeft ?? false) as boolean,\n minimizedMode: (configuration?.minimizedMode ?? false) as boolean,\n avatar:\n configuration?.avatar && configuration?.avatar !== \"\"\n ? configuration?.avatar\n : defaultAvatar,\n buttonColor:\n configuration?.buttonColor && configuration?.buttonColor !== \"\"\n ? configuration?.buttonColor\n : defaultButtonColor,\n accentColorLight:\n configuration?.accentColorLight && configuration?.accentColorLight !== \"\"\n ? configuration?.accentColorLight\n : defaultAccentColorLight,\n };\n}\n\nconst useClasses = createUseClasses((theme) => ({\n root: {\n width: \"100%\",\n display: \"block\",\n background: \"rgb(252, 238, 230)\",\n boxShadow: \"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\",\n padding: \"0.7rem\",\n borderRadius: \"0.5rem\",\n },\n avatarContainer: {\n marginLeft: \"5px\",\n marginBottom: \"10px\",\n },\n typographyForLogoUploadTitle: {\n fontWeight: 700,\n fontSize: \"20px\",\n letterSpacing: \"0.04em\",\n color: \"#202F4E\",\n },\n typographyForLogoUploadRules: {\n fontFamily: \"Inter\",\n fontWeight: 500,\n fontSize: \"20px\",\n letterSpacing: \"0.02em\",\n color: \"#636364\",\n },\n gridItemRoot: {\n \"&.MuiGrid-item\": {\n padding: \"4px\",\n },\n },\n radioGroupRootStyle: {\n \"&.MuiFormGroup-root\": {\n flexDirection: \"row\",\n },\n },\n buttonColorBox: {\n height: \"15px\",\n width: \"15px\",\n marginTop: \"105px\",\n marginLeft: \"5px\",\n },\n gridItemBreak: {\n marginBottom: \"68px\",\n },\n imageContainer: {\n paddingTop: \"36px\",\n paddingBottom: \"28px\",\n width: \"450px\",\n height: \"159px\",\n backgroundColor: \"#FCEEE6\",\n borderStyle: \"dashed\",\n textAlign: \"center\",\n border: \"1px dashed #6D6D6D\",\n borderRadius: \"5px\",\n },\n imageTypo: {\n fontWeight: 500,\n fontSize: \"16px\",\n lineHeight: \"19.5px\",\n color: \"#636364\",\n },\n imageLink: {\n fontWeight: 500,\n fontSize: \"16px\",\n lineHeight: \"19.5px\",\n color: \"#0093B4\",\n marginRight: \"5px\",\n textDecoration: \"underline\",\n },\n button: {\n height: \"35px\",\n fontSize: \"16px\",\n fontWeight: 700,\n textTransform: \"capitalize\",\n borderRadius: \"10px\",\n },\n imageUploaderButton: {\n minWidth: \"160px\",\n },\n imageBoxContainer: {\n [theme.breakpoints.up(\"lg\")]: {\n gap: \"10px\",\n },\n gap: \"30px\",\n justifyContent: \"space-between\",\n alignItems: \"flex-end\",\n marginBottom: \"68px\",\n },\n dropDownLabelStyle: {\n padding: \"18.5px 16px\",\n },\n}));\n","import React from \"react\";\nimport {\n activeWidgetScreenEnum,\n ActiveWidgetScreenType,\n UpsyContextEnum,\n UpsyContextType,\n} from \"./types/widgetPreview\";\n\nexport interface IWidgetHookReturn {\n context: UpsyContextType;\n screen: ActiveWidgetScreenType;\n}\n\nconst widgetContextAndScreenEntries: [\n UpsyContextType | null,\n ActiveWidgetScreenType\n][] = [\n [null, activeWidgetScreenEnum.GREETINGLG],\n [UpsyContextEnum.CATEGORY, activeWidgetScreenEnum.WIDGETMINIFIED],\n [UpsyContextEnum.NEW_ARRIVAL, activeWidgetScreenEnum.WIDGETMINIFIED],\n [UpsyContextEnum.DAILY_DEALS, activeWidgetScreenEnum.WIDGETEXPANDED],\n [UpsyContextEnum.UP_SELL, activeWidgetScreenEnum.WIDGETMINIFIED],\n [UpsyContextEnum.CROSS_SELL, activeWidgetScreenEnum.WIDGETMINIFIED],\n [UpsyContextEnum.FAQ, activeWidgetScreenEnum.WIDGETEXPANDED],\n [null, activeWidgetScreenEnum.FEEDBACK],\n];\n\nexport function useWidgetContextAndScreenByTabIndex(\n index: number\n): IWidgetHookReturn {\n const [context, setContext] = React.useState(\n UpsyContextEnum.CATEGORY\n );\n const [screen, setScreen] = React.useState(\n activeWidgetScreenEnum.GREETINGLG\n );\n\n React.useEffect(() => {\n const context = widgetContextAndScreenEntries[index][0];\n const screen = widgetContextAndScreenEntries[index][1];\n context && setContext(context);\n screen && setScreen(screen);\n }, [index]);\n\n return { context, screen };\n}\n","import { Language } from \"../common/ConfigurationsContext/Configuration\";\n// export const allowedLanguage = {\n// english: \"en\" as const,\n// finish: \"fi\" as const,\n// swedish: \"sv\" as const,\n// german: \"de\" as const,\n// dutch: \"nl\" as const,\n// };\nexport const allowedLanguage = Language;\n\nexport type ALLOWED_LANGUAGE_KEY = keyof typeof allowedLanguage;\nexport type ALLOWED_LANGUAGE = typeof allowedLanguage[ALLOWED_LANGUAGE_KEY];\n","import React, { useState } from \"react\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport {\n FormControl,\n Grid,\n MenuItem,\n Tab,\n Tabs,\n Typography,\n} from \"@material-ui/core\";\nimport { SettingsWizardPageProps } from \"./SettingsWizardPage\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport { UpsyPreview, UpsyPreviewContainer } from \"./UpsyPreview\";\nimport { transformCommonProperties } from \"../../common/ConfigurationsContext/dashboardToBackendTransformer\";\nimport { useWidgetContextAndScreenByTabIndex } from \"./useWidgetContextAndScreenByTabIndex\";\nimport { ALLOWED_LANGUAGE, allowedLanguage } from \"../../Configs/language\";\nimport CustomSelectField from \"../../common/CustomUiComponent/Select\";\nimport { Language } from \"../../common/ConfigurationsContext/Configuration\";\n\nfunction a11yProps(index: number) {\n return {\n id: `vertical-tab-${index}`,\n \"aria-controls\": `vertical-tabpanel-${index}`,\n };\n}\nexport function SettingsSummary({ id }: SettingsWizardPageProps) {\n const { configuration } = useConfiguration(id);\n const [value, setValue] = React.useState(0);\n const { screen, context } = useWidgetContextAndScreenByTabIndex(value);\n const [selectedLang, setSelectedLang] = useState<\n ALLOWED_LANGUAGE | \"default\"\n >(\"default\");\n\n const handleLangChange = (\n e: React.ChangeEvent<{ name?: string; value: unknown }>\n ) => {\n setSelectedLang(e.target.value as ALLOWED_LANGUAGE);\n };\n\n const classes = useClasses();\n\n const handleChange = (event: React.ChangeEvent<{}>, newValue: number) => {\n setValue(newValue);\n };\n\n return (\n <>\n \n Summary\n \n \n You can see the summary of the latest version of the UPSY widget and\n publish the widget after you approve the changes.\n \n \n \n \n \n Default language\n {Object.entries(allowedLanguage).map((entry) => (\n \n {entry[0]}\n \n ))}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {configuration ? (\n \n \n Preview\n \n \n \n \n \n ) : (\n <>\n )}\n \n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n previewText: {\n marginBottom: \"-10px\",\n [theme.breakpoints.down(\"md\")]: {\n marginTop: \"10px\",\n },\n },\n tabsRootStyle: {\n marginTop: 42,\n marginRight: 24,\n [theme.breakpoints.down(\"md\")]: {\n marginTop: 6,\n marginRight: 0,\n \"& .MuiTabs-flexContainerVertical\": {\n flexDirection: \"row\",\n gap: \"6px\",\n },\n },\n \"& span\": {\n backgroundColor: \"unset\",\n },\n \"& button\": {\n backgroundColor: \"#F5F5F5\",\n marginBottom: \"3px\",\n fontWeight: 600,\n fontSize: \"18px\",\n lineHeight: \"140%\",\n color: \"#9E9E9E\",\n textTransform: \"capitalize\",\n },\n \"& .Mui-selected\": {\n backgroundColor: \"#ffffff\",\n color: \"#6793FF\",\n border: \"1px solid #6793FF\",\n },\n },\n}));\n","import { Platform } from \"../../common/ConfigurationsContext/Configuration\";\n\nexport interface SettingsWizardPageProps {\n id: string;\n}\n\nexport interface GreetingHelperPayloadType {\n id: string;\n textInBubble?: string;\n upperText?: string;\n message?: string;\n positiveFeedback?: string;\n negativeFeedback?: string;\n thankYouText?: string;\n}\nexport interface ErrorMessagePageProps {\n characterLength: string;\n}\n\nexport interface ButtonGroupPageProps {\n defaultHandler: () => void;\n submithandler: () => void;\n}\n\nexport enum SettingsWizardCommonPageType {\n CommonFrontend = \"Styling\",\n Summary = \"Summary\",\n Greetings = \"Greetings\",\n CommonFrontendFAQs = \"FAQs\",\n Promotions = \"Promotions\",\n Categories = \"Categories\",\n Success = \"Success\",\n}\n\nexport type SettingsWizardPageType = SettingsWizardCommonPageType | Platform;\n\nexport const fullSettingsWizardPages: SettingsWizardPageType[] = [\n SettingsWizardCommonPageType.CommonFrontend,\n SettingsWizardCommonPageType.CommonFrontendFAQs,\n SettingsWizardCommonPageType.Categories,\n SettingsWizardCommonPageType.Promotions,\n SettingsWizardCommonPageType.Greetings,\n SettingsWizardCommonPageType.Summary,\n];\n\nexport const SettingsWizardPagesByType = {\n [Platform.WooCommerce]: fullSettingsWizardPages,\n [Platform.Liana]: fullSettingsWizardPages,\n [Platform.Magento]: fullSettingsWizardPages,\n [Platform.MyCashFlow]: fullSettingsWizardPages,\n [Platform.GoogleShoppingXML]: fullSettingsWizardPages,\n [Platform.Refox]: fullSettingsWizardPages,\n [Platform.Sotka]: fullSettingsWizardPages,\n [Platform.Shopify]: fullSettingsWizardPages,\n};\n","import { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport {\n IConfiguration,\n newConfigurationId,\n} from \"../../common/ConfigurationsContext/Configuration\";\nimport { Grid, Typography } from \"@material-ui/core\";\nimport { SettingsWizardPageProps } from \"./SettingsWizardPage\";\nimport { DynamicRoutePath, StaticRoutePath } from \"../../AppRoutes\";\nimport { Link } from \"react-router-dom\";\nimport * as React from \"react\";\n\nexport function SettingsSuccess({ id }: SettingsWizardPageProps) {\n const { configuration } = useConfiguration(id);\n const { storeName, storeNameFormatted } = configuration as IConfiguration;\n\n return (\n <>\n Success\n \n \n \n Store configuration {storeNameFormatted || storeName}{\" \"}\n {id === newConfigurationId ? \"created\" : \"updated\"} successfully!\n \n \n Go to stores list or{\" \"}\n \n {storeNameFormatted || storeName} dashboard\n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport Button, { ButtonProps } from \"@material-ui/core/Button\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\n\nexport const CustomButton = React.forwardRef<\n HTMLButtonElement,\n ButtonProps & {\n component?: React.ElementType;\n htmlFor?: string;\n }\n>(({ children, className, ...props }, ref) => {\n const classes = useClasses();\n return (\n \n );\n});\n\nconst useClasses = createUseClasses(() => ({\n button: {\n borderRadius: \"8px\",\n \"&.MuiButton-outlined\": {\n borderColor: \"#6793FF\",\n \"& .MuiButton-label\": {\n color: \"#364F83\",\n \"& .MuiButton-startIcon\": {\n color: \"#6793FF\",\n },\n },\n },\n \"&.MuiButton-contained\": {\n background: \"#364F83\",\n boxShadow: \"none\",\n \"& .MuiButton-label\": {\n color: \"#FFFFFF\",\n },\n },\n },\n}));\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.2717 0.814733C8.45408 0.620977 8.71291 0.5 9 0.5C9.00016 0.5 9.00033 0.5 9.00049 0.5C9.25647 0.499959 9.51245 0.59759 9.70776 0.792893L13.8744 4.95956C14.2649 5.35008 14.2649 5.98325 13.8744 6.37377C13.4839 6.7643 12.8507 6.7643 12.4602 6.37377L10 3.91356V11.5C10 12.0523 9.55229 12.5 9 12.5C8.44772 12.5 8 12.0523 8 11.5V3.91486L5.54109 6.37377C5.15057 6.7643 4.5174 6.7643 4.12688 6.37377C3.73635 5.98325 3.73635 5.35008 4.12688 4.95956L8.2717 0.814733ZM1.5 10.5C2.05228 10.5 2.5 10.9477 2.5 11.5V14.8333C2.5 15.0101 2.57024 15.1797 2.69526 15.3047C2.82029 15.4298 2.98986 15.5 3.16667 15.5H14.8333C15.0101 15.5 15.1797 15.4298 15.3047 15.3047C15.4298 15.1797 15.5 15.0101 15.5 14.8333V11.5C15.5 10.9477 15.9477 10.5 16.5 10.5C17.0523 10.5 17.5 10.9477 17.5 11.5V14.8333C17.5 15.5406 17.219 16.2189 16.719 16.719C16.2189 17.219 15.5406 17.5 14.8333 17.5H3.16667C2.45942 17.5 1.78115 17.219 1.28105 16.719C0.780952 16.2189 0.5 15.5406 0.5 14.8333V11.5C0.5 10.9477 0.947715 10.5 1.5 10.5Z\",\n fill: \"#6793FF\"\n});\n\nfunction SvgUploadIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUploadIcon);\nexport default __webpack_public_path__ + \"static/media/uploadIcon.b35c5fdb.svg\";\nexport { ForwardRef as ReactComponent };","import CloudUploadIcon from \"@material-ui/icons/CloudUpload\";\nimport { CustomButton } from \"../CustomUiComponent/CustomButton\";\nimport { createUseClasses } from \"../Theme/createUseClasses\";\nimport { ReactComponent as UploadIcon } from \"./../../common/SVG/uploadIcon.svg\";\n\nconst useClassesFileUploadWidget = createUseClasses((theme) => ({\n uploadIcon: {\n \"& path\": {\n fill: \"currentColor\",\n },\n },\n}));\nexport type OnFileChangeEventType = (\n e: React.ChangeEvent\n) => void;\n\nexport interface fileUploadWidgetInterface {\n id: string;\n fieldName: string;\n text: React.ReactElement | string;\n multiple?: boolean;\n className?: string;\n accept?: string;\n onChange: OnFileChangeEventType;\n}\n\nexport default function FileUploadWidget({\n onChange,\n id,\n fieldName,\n text,\n multiple = false,\n accept,\n className,\n}: fileUploadWidgetInterface) {\n const classes = useClassesFileUploadWidget();\n return (\n }\n component=\"label\"\n variant=\"contained\"\n htmlFor={id}\n fullWidth\n >\n {text}\n \n \n );\n}\n","// Read file as string/text uploaded from html input[type=\"file\"]\nexport function readFileAsText(file: File): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as string);\n };\n reader.onerror = reject;\n reader.readAsText(file);\n });\n}\n\n//Covert csv array to javascript array of objects\nexport function csvStringToObjectArray(str: string, delimiter = \",\") {\n let arr = csvToArray(str);\n arr = arr.filter((item) => item.length && item[0]);\n if (arr.length < 2) return [];\n const headers = arr[0].map((el) => el.trim());\n const rows = arr.slice(1);\n const objArr: { [key: string]: string }[] = [];\n\n for (let row of rows) {\n if (row && row.length && row[0]) {\n const el = headers.reduce(function (parseObject, header, index) {\n parseObject[header] = row[index] ? row[index].trim() : \"\";\n return parseObject;\n }, {} as { [key: string]: string });\n objArr.push(el);\n }\n }\n\n return objArr;\n}\n\n//Covert csv string to array\nexport function csvToArray(text: string) {\n let p = \"\",\n row = [\"\"],\n ret = [row],\n i = 0,\n r = 0,\n s = !0,\n l;\n for (l of text) {\n if ('\"' === l) {\n if (s && l === p) row[i] += l;\n s = !s;\n } else if (\",\" === l && s) l = row[++i] = \"\";\n else if (\"\\n\" === l && s) {\n if (\"\\r\" === p) row[i] = row[i].slice(0, -1);\n row = ret[++r] = [(l = \"\")];\n i = 0;\n } else row[i] += l;\n p = l;\n }\n return ret;\n}\n","import React, { useState } from \"react\";\n\nfunction usePagination(data: any[], itemsPerPage = 20) {\n const [currentPage, setCurrentPage] = useState(1);\n const maxPage = Math.ceil(data.length / itemsPerPage);\n const startIndex = (currentPage - 1) * itemsPerPage;\n const endIndex = startIndex + itemsPerPage;\n\n //Get the paginated data\n function getPaginatedData() {\n return data.slice(startIndex, endIndex);\n }\n\n function nextPage() {\n setCurrentPage((currentPage) => Math.min(currentPage + 1, maxPage));\n }\n\n function prevPage() {\n setCurrentPage((currentPage) => Math.max(currentPage - 1, 1));\n }\n\n //Jump to a specific page\n function jumpToPage(page: number) {\n const pageNumber = Math.max(1, page);\n setCurrentPage((currentPage) => Math.min(pageNumber, maxPage));\n }\n\n return {\n nextPage,\n prevPage,\n jumpToPage,\n getPaginatedData,\n maxPage,\n itemsPerPage,\n currentPage,\n startIndex,\n endIndex,\n };\n}\n\nexport default usePagination;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 4H4C3.46957 4 2.96086 4.21071 2.58579 4.58579C2.21071 4.96086 2 5.46957 2 6V20C2 20.5304 2.21071 21.0391 2.58579 21.4142C2.96086 21.7893 3.46957 22 4 22H18C18.5304 22 19.0391 21.7893 19.4142 21.4142C19.7893 21.0391 20 20.5304 20 20V13\",\n stroke: \"#364F83\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5 2.50023C18.8978 2.1024 19.4374 1.87891 20 1.87891C20.5626 1.87891 21.1022 2.1024 21.5 2.50023C21.8978 2.89805 22.1213 3.43762 22.1213 4.00023C22.1213 4.56284 21.8978 5.1024 21.5 5.50023L12 15.0002L8 16.0002L9 12.0002L18.5 2.50023Z\",\n stroke: \"#364F83\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgEditIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEditIcon);\nexport default __webpack_public_path__ + \"static/media/editIcon.91ccafad.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 6H5H21\",\n stroke: \"#C60101\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M19 6V20C19 20.5304 18.7893 21.0391 18.4142 21.4142C18.0391 21.7893 17.5304 22 17 22H7C6.46957 22 5.96086 21.7893 5.58579 21.4142C5.21071 21.0391 5 20.5304 5 20V6H19Z\",\n stroke: \"#C60101\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 11V17\",\n stroke: \"#C60101\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 11V17\",\n stroke: \"#C60101\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgTrashIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrashIcon);\nexport default __webpack_public_path__ + \"static/media/trashIcon.8ee6c3c2.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 17h2v5l-2 2v-7zm4.462-6.412c.246.625.437 1.39.506 2.412h-7.936c.297-4.36 2.757-4.163 2.757-7.65 0-1.605-.522-2.35-1.272-3.35h4.512c.518-.807 1.207-1.489 2.019-2h-9.048c0 3.656 1.789 2.979 1.789 5.351 0 1.073-.364 1.59-.915 2.373-1.782 2.532-1.874 4.148-1.874 7.276h12c0-1.27-.021-2.287-.159-3.222-.88-.232-1.688-.64-2.379-1.19zm8.538-5.088c0 2.485-2.018 4.5-4.5 4.5-2.484 0-4.5-2.015-4.5-4.5s2.016-4.5 4.5-4.5c2.482 0 4.5 2.015 4.5 4.5zm-2-.5h-2v-2h-1v2h-2v1h2v2h1v-2h2v-1z\"\n});\n\nfunction SvgPinIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"#6793FF\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPinIcon);\nexport default __webpack_public_path__ + \"static/media/pinIcon.f76abf04.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 17h2v5l-2 2v-7zm4.462-6.412c.246.625.437 1.39.506 2.412h-7.936c.297-4.36 2.757-4.163 2.757-7.65 0-1.605-.522-2.35-1.272-3.35h4.512c.518-.807 1.207-1.489 2.019-2h-9.048c0 3.656 1.789 2.979 1.789 5.351 0 1.073-.364 1.59-.915 2.373-1.782 2.532-1.874 4.148-1.874 7.276h12c0-1.27-.021-2.287-.159-3.222-.88-.232-1.688-.64-2.379-1.19zm8.538-5.088c0 2.485-2.018 4.5-4.5 4.5-2.484 0-4.5-2.015-4.5-4.5s2.016-4.5 4.5-4.5c2.482 0 4.5 2.015 4.5 4.5zm-2-.5h-5v1h5v-1z\"\n});\n\nfunction SvgUnPinIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n fill: \"#6793FF\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUnPinIcon);\nexport default __webpack_public_path__ + \"static/media/unPinIcon.fbe3cfaf.svg\";\nexport { ForwardRef as ReactComponent };","import { SettingsWizardPageProps } from \"./SettingsWizardPage\";\nimport {\n Avatar,\n Box,\n Divider,\n FormControl,\n Grid,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n MenuItem,\n Snackbar,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Typography,\n} from \"@material-ui/core\";\nimport React, {\n Dispatch,\n createContext,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport {\n removeFAQ,\n FAQsAction,\n init,\n addBulkFAQ,\n AddFAQWithPayload,\n UpdateFAQWithPayload,\n setFaqPined,\n} from \"./FAQsReducer\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport { FAQType, IFAQ } from \"./FAQs\";\nimport FileUploadWidget, {\n OnFileChangeEventType,\n} from \"../../common/FileUploadWidget/FileUploadWidget\";\nimport {\n csvStringToObjectArray,\n readFileAsText,\n} from \"../../common/utils/file\";\nimport { createDefaultFAQ } from \"./FAQs\";\nimport AttachFileIcon from \"@material-ui/icons/AttachFile\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { Alert, Pagination } from \"@material-ui/lab\";\nimport usePagination from \"../../common/Hooks/usePagination\";\nimport { CustomButton } from \"../../common/CustomUiComponent/CustomButton\";\nimport CustomTextField from \"../../common/CustomUiComponent/TextField\";\nimport CustomSelectField from \"../../common/CustomUiComponent/Select\";\n\nimport { ReactComponent as EditIcon } from \"./../../common/SVG/editIcon.svg\";\nimport { ReactComponent as TrashIcon } from \"./../../common/SVG/trashIcon.svg\";\nimport { ReactComponent as UploadIcon } from \"./../../common/SVG/uploadIcon.svg\";\nimport { ReactComponent as PinIcon } from \"./../../common/SVG/pinIcon.svg\";\nimport { ReactComponent as UnPinIcon } from \"./../../common/SVG/unPinIcon.svg\";\nimport DoneOutlinedIcon from \"@material-ui/icons/DoneOutlined\";\nimport CloseOutlinedIcon from \"@material-ui/icons/CloseOutlined\";\nimport ReplayOutlinedIcon from \"@material-ui/icons/ReplayOutlined\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport { ALLOWED_LANGUAGE, allowedLanguage } from \"../../Configs/language\";\n\nconst allowedLanguageKeySwapWithValue = Object.fromEntries(\n Object.entries(allowedLanguage).map(([key, value]) => [value, key])\n);\nexport interface IFAQUploadMsgType {\n success: string | React.ReactElement;\n fail: string | React.ReactElement;\n}\n\n// Faq language context\ntype IFaqLanguageContext = {\n lang: ALLOWED_LANGUAGE | \"default\";\n updateLang: (lang: IFaqLanguageContext[\"lang\"]) => void;\n};\nconst FaqLanguageContext = createContext(null);\n\nconst FaqLanguageProvider = ({ children }: { children?: React.ReactNode }) => {\n const [selectedLang, setSelectedLang] =\n useState(\"default\");\n return (\n {\n setSelectedLang(lang);\n },\n }}\n >\n {children}\n \n );\n};\n\nconst useFaqLang = () => {\n const context = useContext(FaqLanguageContext);\n if (!context)\n throw new Error(\"useFaqLang must be used within the FaqLanguageProvider.\");\n return context;\n};\n\nconst useFaqChange = (faq: IFAQ, index: number = 0) => {\n const [faqState, setFaqState] = useState({ ...faq });\n const [newIndex, setNewIndex] = useState(index);\n\n const { lang: selectedLang, updateLang: setSelectedLang } = useFaqLang();\n\n const handleLangChange = (\n e: React.ChangeEvent<{ name?: string; value: unknown }>\n ) => {\n setSelectedLang(e.target.value as ALLOWED_LANGUAGE);\n };\n\n const handleFaqChange = (\n e: React.ChangeEvent<{\n name?: string;\n value: unknown;\n }>\n ) => {\n const { name, value } = e.target;\n\n if (name) {\n setFaqState((prev) => {\n if (selectedLang !== \"default\") {\n // Update the locale property when a language is selected\n return {\n ...prev,\n locale: {\n ...prev.locale,\n [selectedLang]: {\n ...prev.locale?.[selectedLang],\n [name]: value,\n },\n },\n };\n } else {\n // Update faqState directly when default language is selected\n return {\n ...prev,\n [name]: value,\n };\n }\n });\n }\n };\n const handleUndo = (e: React.MouseEvent) => {\n setFaqState({\n ...faq,\n locale: {\n ...faq.locale,\n },\n });\n setNewIndex(index);\n // setSelectedLang(\"default\");\n };\n const question =\n selectedLang !== \"default\"\n ? faqState?.locale?.[selectedLang]?.question ?? \"\"\n : faqState.question ?? \"\";\n\n const answer =\n selectedLang !== \"default\"\n ? faqState?.locale?.[selectedLang]?.answer ?? \"\"\n : faqState.answer ?? \"\";\n return {\n faqState,\n setFaqState,\n selectedLang,\n handleLangChange,\n handleFaqChange,\n handleUndo,\n question,\n answer,\n newIndex,\n setNewIndex,\n setSelectedLang,\n };\n};\n//Only csv file type are allowed\nconst allowedUploadFileTypes = [\"text/csv\", \"application/vnd.ms-excel\"];\n\n//Convert any csv parse object array to faq object array\nfunction csvToFaqs(csvArr: { [key: string]: string }[]): IFAQ[] {\n if (!csvArr.length) {\n return [];\n }\n\n const faqs: IFAQ[] = [];\n const defaultFAQ = createDefaultFAQ();\n const faqKeys = Object.keys(defaultFAQ);\n\n for (const csvObject of csvArr) {\n const hasAllFaqProps = faqKeys.every((key) =>\n Object.prototype.hasOwnProperty.call(csvObject, key)\n );\n if (hasAllFaqProps) {\n const faq = faqKeys.reduce(function (parseObject, key) {\n key = key.trim();\n if (key === \"type\") {\n if (\n csvObject[key].toLowerCase() === FAQType.Text.toLowerCase() ||\n csvObject[key].toLowerCase() === FAQType.Url.toLowerCase()\n ) {\n parseObject[key] = csvObject[key]\n .trim()\n .replace(/\\b\\w/g, function (faqType) {\n return faqType.toUpperCase();\n });\n } else {\n parseObject[key] = FAQType.Text;\n }\n } else {\n parseObject[key] = csvObject[key] ? csvObject[key].trim() : \"\";\n }\n return parseObject;\n }, {} as { [key: string]: string });\n\n faqs.push(faq as unknown as IFAQ);\n }\n }\n\n return faqs;\n}\n\nexport enum EnumFaqUploadTyped {\n BY_CSV_UPLOAD = \"BY_CSV_UPLOAD\",\n BY_FILLING_FORM = \"BY_FILLING_FORM\",\n}\n\nexport type IFaqUploadType = `${EnumFaqUploadTyped}`;\n\nconst useFAQAddFormClasses = createUseClasses((theme) => ({\n root: {\n background: \"#E1EAFF\",\n paddingInline: 30,\n paddingBlock: 48,\n boxShadow:\n \"0px 12px 24px rgba(44, 39, 56, 0.02), 0px 32px 64px rgba(44, 39, 56, 0.04)\",\n borderRadius: 24,\n },\n cancelBtn: {\n background: \"#FFFFFF\",\n marginLeft: \"auto\",\n marginRight: 24,\n border: \"none\",\n },\n}));\n\nconst useFaqListClasses = createUseClasses((theme) => ({\n tableRoot: {\n minWidth: theme.breakpoints.values.sm,\n maxWidth: theme.breakpoints.values.md,\n marginTop: 48,\n \"& .MuiTableCell-root\": {\n borderBottom: \"none\",\n paddingBlock: 24,\n verticalAlign: \"top\",\n maxWidth: 480,\n \"&:not(.MuiTableCell-head)\": {\n color: theme.palette.text.secondary,\n fontWeight: 500,\n lineHeight: \"18px\",\n },\n },\n \"& .MuiTableCell-head\": {\n fontWeight: 700,\n lineHeight: \"18px\",\n },\n },\n}));\n\nconst useFaqsClasses = createUseClasses((theme) => ({\n uploadIcon: {\n \"& path\": {\n fill: \"currentColor\",\n },\n },\n}));\n\nconst useEditableFaqItemClasses = createUseClasses((theme) => ({\n faqIconContainer: {\n marginTop: 16,\n gap: 3,\n },\n root: {\n background: \"rgba(228, 255, 228, 0.7)\",\n },\n label: {\n marginTop: -6,\n marginBottom: 8,\n },\n labelLessInput: {\n marginTop: \"28px\",\n },\n}));\n\nfunction EditableFaqItem({\n allFaqs,\n actualIndex,\n faq,\n onUpdate,\n onCancel,\n}: {\n allFaqs: IFAQ[];\n actualIndex: number;\n faq: IFAQ;\n onUpdate: (\n updateContext: { oldIndex: number; newIndex: number; faq: IFAQ },\n e: React.MouseEvent\n ) => void;\n onCancel: (e: React.MouseEvent) => void;\n}) {\n const classes = useEditableFaqItemClasses();\n const {\n faqState,\n selectedLang,\n handleFaqChange,\n handleUndo,\n question,\n answer,\n newIndex,\n setNewIndex,\n } = useFaqChange(faq, actualIndex);\n\n return (\n \n \n {\n setNewIndex(Number(e.target.value));\n }}\n >\n {allFaqs.map((_, indexValue) => {\n return (\n \n {indexValue + 1}\n \n );\n })}\n \n \n \n \n {allowedLanguageKeySwapWithValue[selectedLang]}\n \n {/* \n Default language\n {Object.entries(allowedLanguage).map((entry) => (\n \n {entry[0]}\n \n ))}\n */}\n \n \n \n {FAQType.Url}\n {FAQType.Text}\n \n \n \n <>\n \n Question\n \n \n \n Answer\n \n \n \n \n \n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst useFaqItemsClasses = createUseClasses((theme) => ({\n pined: {\n background: \"#F7F6FE\",\n },\n faqLabel: {\n fontWeight: 600,\n fontSize: \"14px\",\n lineHeight: \"18px\",\n },\n faqContent: {\n background: \"#FFFFFF\",\n border: \"1px solid #DBE2EA\",\n boxShadow: \"0px 4px 8px rgba(44, 39, 56, 0.04)\",\n borderRadius: \"6px\",\n padding: 16,\n marginBlock: 10,\n wordBreak: \"break-word\",\n },\n faqIconContainer: {\n marginTop: 16,\n gap: 4,\n },\n}));\n\nfunction FAQItem({\n currentListIndex,\n onEdit,\n onPin,\n onDelete,\n faq,\n pined,\n}: {\n currentListIndex: number;\n onEdit: (e: React.MouseEvent) => void;\n onDelete: (e: React.MouseEvent) => void;\n onPin: (e: React.MouseEvent) => void;\n faq: IFAQ;\n pined?: boolean;\n}) {\n const classes = useFaqItemsClasses();\n const { selectedLang, question, answer } = useFaqChange(faq);\n return (\n \n {\"#\" + (currentListIndex + 1)}\n \n {allowedLanguageKeySwapWithValue[selectedLang]}\n {/* \n Default language\n {Object.entries(allowedLanguage).map((entry) => (\n \n {entry[0]}\n \n ))}\n */}\n \n {faq.type}\n \n <>\n \n Question\n {question}\n \n \n Answer\n {answer}\n \n \n \n \n \n <>\n \n {faq.isPinded ? : }\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\ninterface IFAQExtended extends IFAQ {\n actualIndex: number;\n}\nfunction FAQList({\n currentFaqs,\n dispatch,\n allFaqs,\n currentPage,\n maxPage,\n itemPerPage,\n onPaginationChange,\n}: {\n currentFaqs: IFAQ[];\n allFaqs: IFAQ[];\n currentPage: number;\n maxPage: number;\n itemPerPage: number;\n onPaginationChange: (event: object, page: number) => void;\n dispatch: FAQProps[\"dispatch\"];\n}) {\n const classes = useFaqListClasses();\n const MAX_PINABLE_FAQ = 3;\n const [pinedFaqs, setPinedFaqs] = useState([]);\n const [editablePinedFaqIndex, setEditablePinedFaqIndex] = useState(-1);\n const [editableFaqIndex, setEditableFaqIndex] = useState(-1);\n const [pinedSnackbarOpen, setPinedSnackbarOpen] = useState(false);\n useEffect(() => {\n setPinedFaqs((prev) =>\n allFaqs\n .map((faq, index) => ({ ...faq, actualIndex: index }))\n .filter((item) => item.isPinded)\n );\n }, [allFaqs]);\n\n const handlePin = ({\n index,\n isPined,\n }: {\n index: number;\n isPined: boolean;\n }) => {\n if (isPined === false) {\n dispatch(setFaqPined(index, isPined));\n } else if (isPined === true && pinedFaqs.length < MAX_PINABLE_FAQ) {\n dispatch(setFaqPined(index, isPined));\n } else if (isPined === true && pinedFaqs.length >= MAX_PINABLE_FAQ) {\n setPinedSnackbarOpen(true);\n }\n };\n\n const handlePinedPin = (index: number) => {\n dispatch(setFaqPined(index, false));\n };\n\n const handleDelete = (index: number) => {\n dispatch(removeFAQ(index));\n };\n\n const handlePinedItemCancelUpdate = (e: React.MouseEvent) => {\n setEditablePinedFaqIndex(-1);\n };\n const handleCancelUpdate = (e: React.MouseEvent) => {\n setEditableFaqIndex(-1);\n };\n const handleUpdate = (\n {\n oldIndex,\n newIndex,\n faq,\n }: { oldIndex: number; newIndex: number; faq: IFAQ },\n e: React.MouseEvent\n ) => {\n setEditableFaqIndex(-1);\n dispatch(UpdateFAQWithPayload(oldIndex, newIndex, faq));\n };\n const handlePinedItemUpdate = (\n {\n oldIndex,\n newIndex,\n faq,\n }: { oldIndex: number; newIndex: number; faq: IFAQ },\n e: React.MouseEvent\n ) => {\n setEditablePinedFaqIndex(-1);\n dispatch(UpdateFAQWithPayload(oldIndex, newIndex, faq));\n };\n\n const isEditableRow = (index: number) => {\n return index === editableFaqIndex;\n };\n\n const isEditablePinedRow = (index: number) => {\n return index === editablePinedFaqIndex;\n };\n\n return (\n <>\n {allFaqs.length ? (\n <>\n \n \n \n FAQs List\n \n \n \n \n You can pin (lock) 3 FAQs, which will always be shown on the\n first three lines. The rest of the questions will be selected by\n AI after learning the most popular FAQs\n \n \n \n \n The first three (3) FAQs will be shown by default in the FAQ\n search view. The rest will still be searchable by the user.\n \n \n \n \n \n \n \n Order\n Language\n FAQ Type\n FAQ\n Action\n \n \n \n {pinedFaqs.map((faq, currentListIndex) => {\n const actualIndex = faq.actualIndex;\n const FaqItem = isEditablePinedRow(currentListIndex) ? (\n \n ) : (\n {\n setEditablePinedFaqIndex(currentListIndex);\n }}\n onDelete={handleDelete.bind(null, actualIndex)}\n onPin={handlePinedPin.bind(null, actualIndex)}\n key={faq.question + currentListIndex}\n currentListIndex={currentListIndex}\n faq={faq}\n />\n );\n return FaqItem;\n })}\n\n {currentFaqs.map((faq, currentListIndex) => {\n const actualIndex =\n itemPerPage * (currentPage - 1) + currentListIndex;\n const FaqItem = isEditableRow(currentListIndex) ? (\n \n ) : (\n {\n setEditableFaqIndex(currentListIndex);\n }}\n key={faq.question + currentListIndex}\n currentListIndex={actualIndex}\n faq={faq}\n />\n );\n\n return FaqItem;\n })}\n\n {allFaqs.length && (\n \n  \n  \n  \n \n \n \n \n \n \n \n  \n \n )}\n \n
\n
\n setPinedSnackbarOpen(false)}\n message={`Unpin a pined item first. You can pin maximum ${MAX_PINABLE_FAQ} faq.`}\n action={\n \n setPinedSnackbarOpen(false)}\n >\n \n \n \n }\n />\n \n ) : null}\n \n );\n}\n\nfunction FAQAddForm({\n id,\n faqLength,\n dispatch,\n}: {\n id?: string;\n faqLength: number;\n dispatch: FAQProps[\"dispatch\"];\n}) {\n const classes = useFAQAddFormClasses();\n const oldIndex = faqLength;\n\n const defaultFaq: IFAQ = {\n type: FAQType.Text,\n question: \"\",\n answer: \"\",\n originalIndex: oldIndex,\n };\n\n const {\n question,\n answer,\n setNewIndex,\n faqState: faq,\n setSelectedLang,\n handleFaqChange,\n setFaqState: setFaq,\n handleUndo: handleCancelFaqSave,\n newIndex,\n } = useFaqChange(defaultFaq, oldIndex);\n\n const handleFaqSave = (e: React.MouseEvent) => {\n dispatch(AddFAQWithPayload(oldIndex, newIndex, faq));\n setFaq(() => ({ ...defaultFaq }));\n setNewIndex(oldIndex);\n setSelectedLang(\"default\");\n };\n\n return (\n \n \n Add new question and answer\n \n \n {/* \n \n \n \n Default language\n {Object.entries(allowedLanguage).map((entry) => (\n \n {entry[0]}\n \n ))}\n \n \n \n */}\n \n \n \n {[FAQType.Text, FAQType.Url].map((type) => {\n return (\n \n {type}\n \n );\n })}\n \n \n \n \n \n {\n setNewIndex(Number(e.target.value));\n }}\n labelFor=\"order\"\n labelText=\"Order\"\n placeholder=\"Order\"\n fullWidth\n variant=\"outlined\"\n >\n {Array(oldIndex + 1)\n .fill(1)\n .map((type, order) => {\n return (\n \n {order + 1}\n \n );\n })}\n \n \n \n \n \n \n \n \n \n \n \n cancel\n \n \n save\n \n \n \n \n );\n}\n\nconst LanguageSelector = () => {\n const { lang: selectedLang, updateLang } = useFaqLang();\n return (\n \n {\n updateLang(e.target.value as ALLOWED_LANGUAGE);\n }}\n >\n Default language\n {Object.entries(allowedLanguage).map((entry) => (\n \n {entry[0]}\n \n ))}\n \n \n );\n};\nexport function CommonFrontendFAQs({ id }: SettingsWizardPageProps) {\n const { dispatchFAQsAction, customQnA } = useFAQs(id);\n const [faqUploadType, setFaqUploadType] = useState();\n const classes = useFaqsClasses();\n const itemsPerPage = 10;\n const {\n jumpToPage,\n prevPage,\n getPaginatedData,\n maxPage,\n startIndex,\n currentPage,\n } = usePagination(customQnA, itemsPerPage);\n\n const currentFaqs = getPaginatedData();\n const onPaginationChange = (event: object, page: number) => {\n jumpToPage(page);\n };\n function handleUploadTypeCsv() {\n setFaqUploadType(EnumFaqUploadTyped.BY_CSV_UPLOAD);\n }\n function handleUploadTypeForm() {\n setFaqUploadType(EnumFaqUploadTyped.BY_FILLING_FORM);\n }\n\n return (\n \n \n \n \n \n \n \n Select your frequently asked questions (FAQs) and answers\n \n \n You can skip this step and complete it later. UPSY widget will work\n without FAQs.\n \n \n \n }\n variant={\n faqUploadType === EnumFaqUploadTyped.BY_CSV_UPLOAD\n ? \"contained\"\n : \"outlined\"\n }\n fullWidth\n >\n Upload FAQs from CSV File\n \n \n \n \n or\n \n \n \n \n }\n variant={\n faqUploadType === EnumFaqUploadTyped.BY_FILLING_FORM\n ? \"contained\"\n : \"outlined\"\n }\n fullWidth\n >\n Add FAQ manually\n \n \n \n \n {faqUploadType && (\n <>\n \n {faqUploadType === EnumFaqUploadTyped.BY_CSV_UPLOAD ? (\n \n \n \n ) : faqUploadType === EnumFaqUploadTyped.BY_FILLING_FORM ? (\n \n \n \n ) : null}\n \n \n \n )}\n\n \n \n \n \n \n \n );\n}\n\ntype FAQProps = {\n index: number;\n dispatch: Dispatch;\n faqs?: IFAQ[];\n} & IFAQ;\n\nfunction CsvFAQUpload({ id }: SettingsWizardPageProps) {\n const { dispatchFAQsAction } = useFAQs(id);\n const [file, setFile] = useState(null);\n const [isCsvLoading, setIsCsvLoading] = useState(false);\n const [uploadMsg, setUploadMsg] = useState({\n success: \"\",\n fail: \"\",\n });\n const maxFaqUploadLimit = 50;\n const classes = useCsvFaqUploadClasses();\n\n const loadCsvData = (e: React.MouseEvent) => {\n setIsCsvLoading(true);\n readFileAsText(file as File)\n .then((readAsText) => {\n const csvObjArr = csvStringToObjectArray(readAsText);\n let faqs = csvToFaqs(csvObjArr);\n if (faqs.length) {\n if (faqs.length > maxFaqUploadLimit) {\n faqs = faqs.slice(0, maxFaqUploadLimit);\n }\n dispatchFAQsAction(addBulkFAQ(faqs));\n setFile(null);\n setUploadMsg({\n success:\n \"The CSV file was processed successfully and you should find the given FAQ items at the bottom of the list.\",\n fail: \"\",\n });\n } else {\n setFile(null);\n setUploadMsg({\n success: \"\",\n fail: (\n \n Sorry! you haven't provided a valid FAQ data in the CSV file.\n Please look into the sample FAQ CSV file to know about the\n format. CSV TEMPLATE LINK\n \n ),\n });\n }\n\n setIsCsvLoading(false);\n })\n .catch((e) => {\n setFile(null);\n setUploadMsg({\n success: \"\",\n fail: (\n \n Sorry! Something went wrong. The processing of the CSV file was\n failed. Please try again or look into the sample CSV file to know\n about the valid format.{\" \"}\n CSV TEMPLATE LINK\n \n ),\n });\n setIsCsvLoading(false);\n });\n };\n\n const handleFileChange: OnFileChangeEventType = (e) => {\n if (!file) {\n const target = e.target;\n const uploadFile = target && target.files && target.files[0];\n const type = uploadFile && uploadFile.type;\n\n //Only csv file type are acceptable\n if (type && allowedUploadFileTypes.includes(type)) {\n setFile(uploadFile);\n setUploadMsg({\n success: \"The CSV file was uploaded successfully.\",\n fail: \"\",\n });\n } else {\n setUploadMsg({\n success: \"\",\n fail: \"Sorry! Please upload a CSV file with right format.\",\n });\n setFile(null);\n }\n } else {\n setUploadMsg({\n success: \"\",\n fail: \"Please remove the uploaded CSV file first or load the FAQ from uploaded CSV file.\",\n });\n }\n\n e.target.value = \"\";\n };\n\n const handleFileClose = (e: React.MouseEvent) => {\n e.preventDefault();\n setFile(null);\n };\n\n const handleAlertClose = (\n event: React.SyntheticEvent | Event,\n reason?: string\n ) => {\n if (reason === \"clickaway\") {\n return;\n }\n setUploadMsg({\n success: \"\",\n fail: \"\",\n });\n };\n\n return (\n <>\n \n \n Please download the csv template below and fill in the following\n information in lower case letters:\n \n
    \n
  • \n FAQ type (accepted values are text or URL if using\n hyperlinks)\n
  • \n
  • Question
  • \n
  • Answer
  • \n
\n \n Maximum FAQ upload limit is {maxFaqUploadLimit} FAQ's at once.\n \n \n {(uploadMsg.success || uploadMsg.fail) && (\n \n \n {uploadMsg.success || uploadMsg.fail}\n \n \n )}\n {file && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n {file && (\n \n \n {isCsvLoading ? \"Saving FAQ ...\" : \"Save FAQ\"}\n \n \n )}\n \n\n \n \n }\n component=\"a\"\n href=\"/csv-faq-example.csv\"\n variant=\"outlined\"\n fullWidth\n >\n Download csv template\n \n \n \n \n or\n \n \n \n \n \n
\n \n \n );\n}\n\nfunction useFAQs(id: string) {\n const { configuration, dispatchFAQsAction } = useConfiguration(id);\n useEffect(() => {\n dispatchFAQsAction(init());\n // eslint-disable-next-line\n }, []);\n\n const FAQsWithOriginalIndex = configuration?.customQnA?.map((faq, i) => ({\n ...faq,\n originalIndex: i,\n }));\n\n return {\n customQnA: FAQsWithOriginalIndex || [],\n dispatchFAQsAction,\n };\n}\n\nconst useCsvFaqUploadClasses = createUseClasses((theme) => ({\n listItem: {\n backgroundColor: theme.palette.background.paper,\n },\n ul: {\n listStyleType: \"none\",\n paddingLeft: 0,\n margin: 0,\n marginTop: 20,\n marginBottom: 8,\n color: theme.palette.text.secondary,\n \"& li\": {\n \"&:before\": {\n content: \"'-'\",\n paddingRight: 4,\n },\n },\n },\n fileListItem: {\n borderRadius: \"4px\",\n marginBottom: \"5px\",\n background: theme.palette.background.paper,\n },\n alertIcon: {\n alignItems: \"center\",\n },\n}));\n","import {\n Grid,\n Typography,\n Box,\n FormControl,\n MenuItem,\n Button,\n} from \"@material-ui/core\";\nimport { useEffect, useState } from \"react\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport CustomSelectField from \"../../common/CustomUiComponent/Select\";\nimport CustomTextField from \"../../common/CustomUiComponent/TextField\";\nimport { ImageUploadWidget } from \"../../common/ImageUploader/ImageUpload\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport { CustomHtmlTooltip } from \"../../common/Tooltip/Tooltip\";\nimport { SettingsWizardPageProps } from \"./SettingsWizardPage\";\nimport { CATEGORY } from \"./FAQs\";\nimport { useCategory } from \"./CommonFrontendCategories\";\n\nconst orderIncrementBy = 2;\n\nexport function CategoryForm({ id }: SettingsWizardPageProps) {\n const [categoryAvatarURL, setCategoryAvatarURL] = useState(\"\");\n const { setCommonFrontendConfiguration, configuration } =\n useConfiguration(id);\n\n const categoryLength =\n (configuration && configuration.customerCategories?.length) || 0;\n const defaultOrder = categoryLength + 1;\n const [order, setOrder] = useState(defaultOrder);\n\n useEffect(() => {\n const categoryLength =\n (configuration && configuration.customerCategories?.length) || 0;\n const defaultOrder = categoryLength + 1;\n setOrder(defaultOrder);\n }, [categoryLength]);\n\n const defaultCategory: CATEGORY = {\n categoryName: \"\",\n categoryAvatarURL: \"\",\n categoryURL: \"\",\n order,\n };\n const {\n resetLang,\n handleCategoryChange,\n categoryName,\n categoryURL,\n categoryState,\n resetCategory,\n } = useCategory({\n category: defaultCategory,\n });\n\n const handleCategorySubmit = (\n e: React.MouseEvent\n ) => {\n e.preventDefault();\n const oldCategory = configuration?.customerCategories ?? [];\n\n if (order < oldCategory.length + 1) {\n const categoryReplaced = [\n ...oldCategory.slice(0, order - 1),\n {\n categoryName: categoryState.categoryName,\n categoryURL: categoryState.categoryURL,\n categoryAvatarURL,\n order: Date.now(),\n isPinned: false,\n locale: {\n ...categoryState.locale,\n },\n },\n ...oldCategory.slice(order - 1, oldCategory.length),\n ];\n\n setCommonFrontendConfiguration({\n customerCategories: categoryReplaced,\n });\n } else {\n setCommonFrontendConfiguration({\n customerCategories: [\n ...oldCategory,\n {\n categoryName: categoryState.categoryName,\n categoryURL: categoryState.categoryURL,\n categoryAvatarURL,\n order: Date.now(),\n isPinned: false,\n locale: {\n ...categoryState.locale,\n },\n },\n ],\n });\n }\n resetInputFields();\n };\n\n const resetInputFields = () => {\n setOrder(defaultOrder);\n resetCategory();\n resetLang();\n };\n\n const classes = useClasses();\n return (\n <>\n \n \n \n \n \n \n \n \n {\n setOrder(e.target.value as number);\n }}\n >\n 1\n {configuration?.customerCategories?.map((_, index) => (\n \n {index + orderIncrementBy}\n \n ))}\n \n \n \n \n\n \n \n \n \n \n \n \n Category URL\n \n \n Add the URL of the selected category page from your website.We need to\n link UPSY and your website's category page.\n \n \n {\" \"}\n For example:{\" \"}\n \n \n {\" \"}\n \n {\" \"}\n Category:{\" \"}\n \n \n Dronet\n {\" \"}\n \n \n {\" \"}\n \n {\" \"}\n Link:{\" \"}\n \n \n https://www.fotonordic.fi/category/1054/dronet{\" \"}\n \n \n \n \n \n \n \n \n \n \n Cancel\n \n ) =>\n handleCategorySubmit(e)\n }\n >\n Add\n \n \n \n );\n}\n\nconst useClasses = createUseClasses(() => ({\n avatarContainer: {\n marginLeft: \"5px\",\n marginBottom: \"10px\",\n },\n typographyForLogoUploadTitle: {\n fontWeight: 700,\n fontSize: \"20px\",\n letterSpacing: \"0.04em\",\n color: \"#202F4E\",\n },\n gridItemRoot: {\n \"&.MuiGrid-item\": {\n padding: \"4px\",\n },\n },\n categoryTitleStyle: {\n color: \"rgb(32, 47, 78)\",\n width: \"100%\",\n margin: \"8px 0px\",\n display: \"block\",\n fontSize: \"16px\",\n fontWeight: 500,\n lineHeight: \"19px\",\n },\n gridContainerRootStyle: {\n backgroundColor: \"#E1EAFF\",\n borderRadius: \"15px\",\n padding: \"10px\",\n },\n categorySubTitleStyle: {\n fontWeight: 400,\n fontSize: \"16px\",\n lineHeight: \"22.4px\",\n letter: \"2%\",\n color: \"#636364\",\n marginBottom: \"20px\",\n },\n categoryInstructionStyle: {\n fontStyle: \"italic\",\n fontWeight: 600,\n fontSize: \"14px\",\n lineHeight: \"140%\",\n letterSpacing: \"0.04em\",\n color: \"#364F83\",\n },\n categoryInstructionExampleStyle: {\n fontStyle: \"italic\",\n fontSize: \"14px\",\n lineHeight: \"140%\",\n letterSpacing: \"0.04em\",\n color: \"#364F83\",\n marginLeft: \"2px\",\n },\n cancelButtonStyle: {\n marginRight: \"20px\",\n backgroundColor: \"white\",\n color: \"#364F83\",\n fontWeight: 600,\n textTransform: \"capitalize\",\n },\n buttonContainerStyle: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"80px\",\n },\n}));\n","import { Grid, Typography, Box, makeStyles } from \"@material-ui/core\";\nimport { SetStateAction, useState } from \"react\";\nimport { FileUploader } from \"react-drag-drop-files\";\nimport ImageUpload from \"../../Stores/StoreSettings/ImageUpload\";\n\nexport interface inlineImageUploadWidgetInterface {\n setImageURLFunction: React.Dispatch>;\n storeName: string | undefined;\n}\n\nconst fileTypes = [\"JPG\", \"PNG\", \"GIF\", \"JPEG\"];\n\nexport function InlineImageUploadWidget({\n setImageURLFunction,\n storeName,\n}: inlineImageUploadWidgetInterface) {\n const classes = useClasses();\n const [file, setFile] = useState(null);\n const { uploadImage } = ImageUpload();\n const handleFileChange = async (file: SetStateAction) => {\n if (file instanceof Blob) {\n handleImageUpload(file);\n }\n };\n const handleImageUpload = async (file: File) => {\n try {\n const data = await uploadImage(file, storeName);\n setImageURLFunction(data.result);\n setFile(\"Image Uploaded Successfully.\");\n } catch (error) {\n console.log(error);\n }\n };\n return (\n \n \n \n \n {file ? file : \"Upload Image.\"}\n \n \n \n \n );\n}\n\nconst useClasses = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n display: \"block\",\n background: \"rgb(252, 238, 230)\",\n boxShadow: \"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;\",\n padding: \"0.7rem\",\n borderRadius: \"0.5rem\",\n },\n avatarContainer: {\n marginLeft: \"1px\",\n marginBottom: \"1px\",\n },\n typographyForLogoUploadTitle: {\n fontWeight: 700,\n fontSize: \"20px\",\n letterSpacing: \"0.04em\",\n color: \"#202F4E\",\n },\n typographyForLogoUploadRules: {\n fontFamily: \"Inter\",\n fontWeight: 500,\n fontSize: \"20px\",\n letterSpacing: \"0.02em\",\n color: \"#636364\",\n },\n gridItemRoot: {\n \"&.MuiGrid-item\": {\n padding: \"4px\",\n },\n },\n\n buttonColorBox: {\n height: \"15px\",\n width: \"15px\",\n marginTop: \"105px\",\n marginLeft: \"5px\",\n },\n imageContainer: {\n paddingTop: \"15px\",\n paddingBottom: \"30px\",\n width: \"250px\",\n height: \"18px\",\n backgroundColor: \"#FCEEE6\",\n borderStyle: \"dashed\",\n textAlign: \"center\",\n border: \"1px dashed #6D6D6D\",\n borderRadius: \"5px\",\n },\n imageTypo: {\n fontWeight: 500,\n fontSize: \"16px\",\n lineHeight: \"19.5px\",\n color: \"#636364\",\n },\n imageLink: {\n fontWeight: 500,\n fontSize: \"16px\",\n lineHeight: \"19.5px\",\n color: \"#0093B4\",\n marginRight: \"5px\",\n textDecoration: \"underline\",\n },\n button: {\n height: \"35px\",\n fontSize: \"16px\",\n fontWeight: 700,\n textTransform: \"capitalize\",\n borderRadius: \"10px\",\n },\n imageUploaderButton: {\n minWidth: \"160px\",\n },\n imageBoxContainer: {\n [theme.breakpoints.up(\"lg\")]: {\n gap: \"10px\",\n },\n gap: \"30px\",\n justifyContent: \"space-between\",\n alignItems: \"flex-end\",\n },\n}));\n","import React, { useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport { SettingsWizardPageProps } from \"./SettingsWizardPage\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport { Box, Grid, IconButton, MenuItem, Typography } from \"@material-ui/core\";\nimport CustomTextField from \"../../common/CustomUiComponent/TextField\";\nimport { ReactComponent as EditIcon } from \"./../../common/SVG/editIcon.svg\";\nimport { ReactComponent as TrashIcon } from \"./../../common/SVG/trashIcon.svg\";\nimport { ReactComponent as PinIcon } from \"./../../common/SVG/pinIcon.svg\";\nimport { ReactComponent as UnPinIcon } from \"./../../common/SVG/unPinIcon.svg\";\nimport DoneOutlinedIcon from \"@material-ui/icons/DoneOutlined\";\nimport CloseOutlinedIcon from \"@material-ui/icons/CloseOutlined\";\nimport ReplayOutlinedIcon from \"@material-ui/icons/ReplayOutlined\";\nimport { InlineImageUploadWidget } from \"../../common/ImageUploader/InlineImageUpload\";\nimport CustomSelectField from \"../../common/CustomUiComponent/Select\";\nimport { CATEGORY } from \"./FAQs\";\nimport { useCategory } from \"./CommonFrontendCategories\";\nimport { allowedLanguage } from \"../../Configs/language\";\nconst allowedLanguageKeySwapWithValue = Object.fromEntries(\n Object.entries(allowedLanguage).map(([key, value]) => [value, key])\n);\ninterface ICategory {\n category: CATEGORY;\n index: number;\n id: string;\n onEdit: (e: React.MouseEvent) => void;\n}\n\nconst useStyles = makeStyles({\n table: {\n minWidth: 650,\n },\n title: {\n flex: \"1 1 100%\",\n marginBottom: \"40px\",\n fontWeight: \"bold\",\n },\n cellHeadStyle: {\n \"&.MuiTableCell-head\": {\n fontWeight: \"bold\",\n },\n borderBottom: \"0px\",\n },\n tableRowRoot: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: \"#F7F6FE\",\n },\n \"&:nth-of-type(even)\": {\n backgroundColor: \"#FFFFFF\",\n },\n height: \"122px\",\n },\n categoryImage: {\n width: \"64px\",\n height: \"64px\",\n border: \"1px solid #DBE2EA\",\n padding: \"5px\",\n borderRadius: \"5px\",\n },\n iconContainer: {\n marginTop: \"-15px\",\n gap: 3,\n },\n tableCellStyle: {\n borderBottom: \"0px\",\n },\n});\n\nexport default function Categories({ id }: SettingsWizardPageProps) {\n const classes = useStyles();\n const { configuration } = useConfiguration(id);\n const [categoryIdForEdit, setCategoryIdForEdit] = useState(-1);\n\n const isCurrentItemSelected = (id: number) => id === categoryIdForEdit;\n\n return (\n <>\n \n Category List\n \n \n \n \n \n \n \n Order\n \n \n Language\n \n \n Category Name\n \n \n Category Image\n \n \n Category URL\n \n \n Action\n \n \n \n \n {configuration?.customerCategories?.map((category, index) => {\n const categories = !isCurrentItemSelected(category.order) ? (\n {\n setCategoryIdForEdit(category.order);\n }}\n />\n ) : (\n \n );\n return categories;\n })}\n \n \n \n \n );\n}\n\nfunction EditCategoryItem({\n category,\n onFinished,\n id,\n}: {\n category: CATEGORY;\n onFinished: (index: number) => void;\n id: string;\n}) {\n const classes = useStyles();\n const { setCommonFrontendConfiguration, configuration } =\n useConfiguration(id);\n const [categoryAvatarURL, setCategoryAvatarURL] = useState(\n category.categoryAvatarURL\n );\n\n const {\n categoryState,\n categoryName,\n handleCategoryChange,\n selectedLang,\n categoryURL,\n resetCategory,\n } = useCategory({ category });\n const totalCategoriesLength = configuration?.customerCategories || [];\n\n const categoryIndex =\n configuration?.customerCategories?.findIndex(\n (item) => item.order === category.order\n ) || 0;\n\n const [newIndex, setNewIndex] = useState(categoryIndex);\n\n const storeName = configuration?.storeName;\n\n const onResetField = () => {\n setCategoryAvatarURL(category.categoryAvatarURL);\n resetCategory();\n setNewIndex(categoryIndex);\n };\n\n const handleUpdateCategory = () => {\n const oldCategories = configuration?.customerCategories || [];\n const updatedCategory: CATEGORY = {\n categoryName: categoryState.categoryName,\n categoryAvatarURL,\n categoryURL: categoryState.categoryURL,\n order: category.order,\n isPinned: category?.isPinned,\n locale: {\n ...categoryState.locale,\n },\n };\n const categoryRemoved = [\n ...oldCategories.slice(0, categoryIndex),\n ...oldCategories.slice(categoryIndex + 1, oldCategories.length),\n ];\n const categoryReplaced = [\n ...categoryRemoved.slice(0, newIndex),\n updatedCategory,\n ...categoryRemoved.slice(newIndex, categoryRemoved.length),\n ];\n\n setCommonFrontendConfiguration({\n customerCategories: categoryReplaced,\n });\n\n onFinished(oldCategories.length * 5);\n };\n\n const onCanceled = () => {\n onResetField();\n onFinished(totalCategoriesLength.length * 5);\n };\n\n return (\n \n \n \n {\n setNewIndex(Number(e.target.value));\n }}\n >\n {configuration?.customerCategories?.map((_, indexValue) => {\n return (\n \n {indexValue + 1}\n \n );\n })}\n \n \n \n {allowedLanguageKeySwapWithValue[selectedLang]}\n {/* \n Default language\n {Object.entries(allowedLanguage).map((entry) => (\n \n {entry[0]}\n \n ))}\n */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction CategoryList({ category, index, id, onEdit }: ICategory) {\n const classes = useStyles();\n const { selectedLang, categoryName, categoryURL } = useCategory({ category });\n const { configuration, setCommonFrontendConfiguration } =\n useConfiguration(id);\n let categoryPinnedStatus = false;\n const onDelete = (id: number) => {\n const oldCategories = configuration?.customerCategories || [];\n const newCategories = oldCategories.filter(\n (category) => category.order !== id\n );\n setCommonFrontendConfiguration({\n customerCategories: newCategories,\n });\n };\n\n if (category?.isPinned) {\n categoryPinnedStatus = false;\n } else {\n categoryPinnedStatus = true;\n }\n\n const onPinChange = (isPinned: boolean) => {\n const categories = configuration?.customerCategories;\n const categoryIndex =\n categories?.findIndex((item) => item.order === category.order) || 0;\n\n categories![categoryIndex].isPinned = isPinned;\n\n setCommonFrontendConfiguration({\n customerCategories: categories,\n });\n };\n\n return (\n \n \n {`#${\n index + 1\n }`}\n \n {/* \n Default language\n {Object.entries(allowedLanguage).map((entry) => (\n \n {entry[0]}\n \n ))}\n */}\n {allowedLanguageKeySwapWithValue[selectedLang]}\n \n \n {categoryName}\n \n \n \n \n \n \n \n \n \n \n \n <>\n onPinChange(categoryPinnedStatus)}\n >\n {category?.isPinned ? : }\n \n \n \n \n \n onDelete(category.order)} />\n \n \n \n \n \n );\n}\n","import { FormControl, Grid, MenuItem, Typography } from \"@material-ui/core\";\nimport { SettingsWizardPageProps } from \"./SettingsWizardPage\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport { CategoryForm } from \"./CategoryForm\";\nimport { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport Categories from \"./Categories\";\nimport { CATEGORY } from \"./FAQs\";\nimport { useState, createContext, useContext } from \"react\";\nimport { ALLOWED_LANGUAGE, allowedLanguage } from \"../../Configs/language\";\nimport CustomSelectField from \"../../common/CustomUiComponent/Select\";\n\ntype ICategoryLanguageContext = {\n lang: ALLOWED_LANGUAGE | \"default\";\n updateLang: (lang: ICategoryLanguageContext[\"lang\"]) => void;\n};\nconst CategoryLanguageContext = createContext(\n null\n);\n\nconst CategoryLanguageProvider = ({\n children,\n}: {\n children?: React.ReactNode;\n}) => {\n const [selectedLang, setSelectedLang] =\n useState(\"default\");\n return (\n {\n setSelectedLang(lang);\n },\n }}\n >\n {children}\n \n );\n};\n\nconst useCategoryLang = () => {\n const context = useContext(CategoryLanguageContext);\n if (!context)\n throw new Error(\n \"useCategoryLang must be used within the CategoryLanguageProvider.\"\n );\n return context;\n};\n\nexport const useCategory = ({ category }: { category: CATEGORY }) => {\n const [categoryState, setCategoryState] = useState({ ...category });\n const { lang: selectedLang, updateLang: setSelectedLang } = useCategoryLang();\n\n const handleLangChange = (\n e: React.ChangeEvent<{ name?: string; value: unknown }>\n ) => {\n setSelectedLang(e.target.value as ALLOWED_LANGUAGE);\n };\n\n const handleCategoryChange = (\n e: React.ChangeEvent<{\n name?: string;\n value: unknown;\n }>\n ) => {\n const { name, value } = e.target;\n\n if (!name) return;\n if (selectedLang === \"default\") {\n setCategoryState((prev) => ({ ...prev, [name]: value }));\n return;\n }\n setCategoryState((prev) => {\n return {\n ...prev,\n locale: {\n ...prev.locale,\n [selectedLang]: {\n ...prev.locale?.[selectedLang],\n [name]: value,\n },\n },\n };\n });\n };\n const resetLang = () => {\n setSelectedLang(\"default\");\n };\n const resetCategory = () => {\n setCategoryState({ ...category });\n };\n const categoryName =\n selectedLang !== \"default\"\n ? categoryState?.locale?.[selectedLang]?.categoryName ?? \"\"\n : categoryState.categoryName ?? \"\";\n\n const categoryURL =\n selectedLang !== \"default\"\n ? categoryState?.locale?.[selectedLang]?.categoryURL ?? \"\"\n : categoryState.categoryURL ?? \"\";\n return {\n selectedLang,\n handleLangChange,\n resetLang,\n handleCategoryChange,\n resetCategory,\n categoryName,\n categoryURL,\n categoryState,\n };\n};\n// Language select component for category\nconst LanguageSelector = () => {\n const { lang: selectedLang, updateLang } = useCategoryLang();\n return (\n \n {\n updateLang(e.target.value as ALLOWED_LANGUAGE);\n }}\n >\n Default language\n {Object.entries(allowedLanguage).map((entry) => (\n \n {entry[0]}\n \n ))}\n \n \n );\n};\n\nexport function CommonFrontendCategories({ id }: SettingsWizardPageProps) {\n const classes = useClasses();\n const { configuration } = useConfiguration(id);\n return (\n \n \n \n \n \n \n \n \n \n Add New Category\n \n \n \n \n \n {configuration!.customerCategories!.length > 0 && (\n \n )}\n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n avatarContainer: {\n marginLeft: \"5px\",\n marginBottom: \"10px\",\n },\n typographyForAvatarTitle: {\n fontWeight: 700,\n fontSize: \"20px\",\n letterSpacing: \"0.04em\",\n color: \"#202F4E\",\n },\n gridItemRoot: {\n \"&.MuiGrid-item\": {\n padding: \"4px\",\n },\n },\n gridContainerRootStyle: {\n backgroundColor: \"#E1EAFF\",\n borderRadius: \"15px\",\n padding: \"10px\",\n },\n}));\n","import { useConfiguration } from \"../../common/ConfigurationsContext/ConfigurationsContext\";\nimport {\n ActivePromotion,\n IConfiguration,\n IConfigurationCommonFrontend,\n} from \"../../common/ConfigurationsContext/Configuration\";\nimport {\n Box,\n Checkbox,\n Divider,\n FormControl,\n FormControlLabel,\n Grid,\n Radio,\n RadioGroup,\n Typography,\n} from \"@material-ui/core\";\nimport Tabs from \"@material-ui/core/Tabs\";\nimport Tab from \"@material-ui/core/Tab\";\nimport { SettingsWizardPageProps } from \"./SettingsWizardPage\";\nimport * as React from \"react\";\nimport { createUseClasses } from \"../../common/Theme/createUseClasses\";\nimport {\n useCurrentPageIndex,\n useNextButtonDisableIndex,\n} from \"../PageIndexProvider\";\nimport { Alert } from \"@material-ui/lab\";\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: any;\n value: any;\n}\n\nfunction TabPanel(props: TabPanelProps) {\n const { children, value, index, ...other } = props;\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n

no data

\n \n \n \n \n
\n \n );\n}\n//Utility function to get running experiment\nfunction getActiveExperiment(\n activeExperimentId?: string | null,\n experiments: IExperiment[] = []\n) {\n if (!activeExperimentId) {\n return null;\n }\n return experiments.find(\n (experiment) => experiment.experimentId === activeExperimentId\n );\n}\nfunction MerchantAction({\n user,\n storeId,\n activeExperiment,\n}: {\n user: User;\n storeId: string;\n activeExperiment?: IExperiment | null;\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState(\"\");\n const [isSuccess, setIsSuccess] = useState(false);\n\n function updateError(error: string) {\n setError(error);\n }\n function updateSuccess(isSuccess: boolean) {\n setIsSuccess(isSuccess);\n }\n\n async function requestForStartAbTest() {\n if (activeExperiment) {\n return;\n }\n setIsLoading(true);\n updateSuccess(false);\n updateError(\"\");\n try {\n await requestStartAbTest(user, storeId);\n updateSuccess(true);\n } catch (e) {\n updateError((e instanceof Error ? e.message : e) as string);\n } finally {\n setIsLoading(false);\n }\n }\n\n const classes = useAbTestConfigurationClasses();\n return (\n <>\n \n {\n updateSuccess(false);\n }}\n >\n \n \n }\n >\n Your request has been successfully submitted! The Upsy team will be in\n touch with you shortly.\n \n \n \n {\n updateError(\"\");\n }}\n >\n \n \n }\n >\n {error}\n \n \n \n To start an A/B test with Upsy, just send a request. Our\n team will swiftly set up the test, delivering tailored insights for\n seamless optimization. Let's optimize together!\n \n }\n buttonText=\"Send Request\"\n />\n \n \n {activeExperiment ? (\n \n There's an ongoing A/B test labeled \"\n {activeExperiment.experimentName}\" initiated in{\" \"}\n {new Date(activeExperiment.startTs).toDateString()}. Upon its\n completion, you'll gain access to the results and can then request\n a new A/B test.\n \n ) : null}\n \n \n \n );\n}\n\nfunction AdminAction({\n user,\n storeId,\n activeExperiment,\n}: {\n user: User;\n storeId: string;\n activeExperiment?: IExperiment | null;\n}) {\n const [dialogOpen, setDialogOpen] = useState(false);\n const [error, setError] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const classes = useAbTestConfigurationClasses();\n const refreshConfigurations = useRefreshConfigurations();\n\n function handleDialogOpen() {\n setDialogOpen(true);\n }\n\n function handleDialogClose() {\n setDialogOpen(false);\n setError(\"\");\n }\n\n async function handleExperiment() {\n try {\n setLoading(true);\n if (activeExperiment) {\n await endAbTest(user, storeId, activeExperiment!.experimentId);\n } else {\n //Perform a/b test start functionality\n await startAbTest(user, storeId);\n }\n await refreshConfigurations();\n handleDialogClose();\n } catch (e) {\n if (e instanceof Error) {\n setError(e.message);\n } else {\n setError(\"Sorry! something went wrong!\");\n }\n } finally {\n setLoading(false);\n }\n }\n return (\n <>\n \n \n {activeExperiment ? (\n \n End \"{activeExperiment.experimentName}\" A/B Test?\n \n ) : (\n \n Start a New A/B Test Experiment?\n \n )}\n \n \n \n {/* TODO: Have to update this text */}\n {activeExperiment ? (\n \n Are you sure you want to end the \"\n {activeExperiment.experimentName}\" A/B test? Ending this\n test will finalize the comparison between the versions where the\n Upsy is shown and where it is hidden on this store.\n \n ) : (\n \n Launch a new A/B test to compare on this store with the\n Upsy shown or hidden variant. Discover which variant leads to\n more purchases and optimize your store accordingly.\n \n )}\n \n {error ? {error} : null}\n \n \n \n \n \n \n \n Please use this switch to start or end the A/B test.\n \n \n \n }\n label=\"Start\"\n />\n

\n End\n

\n
\n {activeExperiment ? (\n \n \n \n \"{activeExperiment.experimentName}\" is currently running,\n started on {new Date(activeExperiment.startTs).toDateString()}.\n \n \n \n ) : null}\n \n );\n}\n\n// Define Date range State Type\ninterface DateRangeState {\n startDate: string;\n endDate: string;\n startDateValidationError: string;\n endDateValidationError: string;\n}\n\n// Define Date range Action Type\ntype DateRangeAction =\n | {\n type: \"startDate\";\n payload: {\n date: string;\n minDate: string;\n maxDate: string;\n };\n }\n | {\n type: \"endDate\";\n payload: {\n date: string;\n minDate: string;\n maxDate: string;\n };\n }\n | {\n type: \"resetValidation\";\n };\n\n// Create Date range Reducer Function\nfunction dateRangeReducer(\n state: DateRangeState,\n action: DateRangeAction\n): DateRangeState {\n switch (action.type) {\n case \"resetValidation\": {\n return {\n ...state,\n startDateValidationError: \"\",\n endDateValidationError: \"\",\n };\n }\n case \"startDate\": {\n const { maxDate, minDate, date } = action.payload;\n if (!isValidDate(date, minDate, maxDate)) {\n return {\n ...state,\n startDateValidationError: `Start date must be between ${minDate} and ${maxDate}`,\n };\n }\n\n return {\n ...state,\n startDate: date,\n startDateValidationError: \"\",\n };\n }\n case \"endDate\": {\n const { maxDate, minDate, date } = action.payload;\n if (!isValidDate(date, minDate, maxDate)) {\n return {\n ...state,\n endDateValidationError: `End date must be between ${minDate} and ${maxDate}`,\n };\n }\n\n return {\n ...state,\n endDate: date,\n endDateValidationError: \"\",\n };\n }\n default:\n return state;\n }\n}\n//Validate date range\nfunction isValidDate(date: string, minDate: string, maxDate: string) {\n // Early return for non-string inputs\n if (\n [typeof date, typeof minDate, typeof maxDate].every(\n (item) => item !== \"string\"\n )\n ) {\n return false;\n }\n const dateTs = new Date(formatDate(new Date(date).getTime())).getTime();\n const minDateTs = new Date(minDate).getTime();\n const maxDateTs = new Date(maxDate).getTime();\n const isValid = dateTs >= minDateTs && dateTs <= maxDateTs && !isNaN(dateTs);\n return isValid;\n}\nfunction formatDate(timestamp: number) {\n // Create a new Date object from the timestamp\n const date = new Date(timestamp);\n // Extract the year, month, and day from the Date object\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\"); // Months are zero-indexed, so add 1\n const day = String(date.getDate()).padStart(2, \"0\");\n // Format the date as YYYY-MM-DD\n return `${year}-${month}-${day}`;\n}\n\nfunction useDateRange(experiment: IExperiment | null | undefined) {\n const { id = \"\" } = useParams();\n const minDate = experiment?.startTs\n ? formatDate(experiment.startTs)\n : formatDate(Date.now());\n const maxDate = experiment?.endTs\n ? formatDate(experiment.endTs)\n : formatDate(Date.now());\n\n function updateStartDate(date: string) {\n dispatch({\n type: \"startDate\",\n payload: {\n date: date,\n minDate,\n maxDate,\n },\n });\n }\n function updateEndDate(date: string) {\n dispatch({\n type: \"endDate\",\n payload: {\n date: date,\n minDate,\n maxDate,\n },\n });\n }\n function updateStartAndEndDate(startDate: string, endDate: string) {\n updateStartDate(startDate);\n updateEndDate(endDate);\n }\n\n function resetValidation() {\n dispatch({ type: \"resetValidation\" });\n }\n useEffect(() => {\n updateStartAndEndDate(minDate, maxDate);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [minDate, maxDate]);\n\n const initialDateRange: DateRangeState = {\n startDate: minDate,\n endDate: maxDate,\n startDateValidationError: \"\",\n endDateValidationError: \"\",\n };\n\n const [\n { startDate, endDate, startDateValidationError, endDateValidationError },\n dispatch,\n ] = useReducer(dateRangeReducer, initialDateRange);\n return {\n startDate,\n endDate,\n dateValidationError: startDateValidationError || endDateValidationError,\n updateEndDate,\n updateStartAndEndDate,\n updateStartDate,\n resetValidation,\n minDate,\n maxDate,\n };\n}\n// Hook for embeding quicksight dashboard\nfunction useEmbed(\n parameters: QuicksightEmbedDateParameters & { experimentId?: string }\n) {\n const { id = \"\" } = useParams();\n const quicksightParameters: Partial = useMemo(\n () => ({\n ...parameters,\n customer: id,\n }),\n [parameters, id]\n );\n const iframeRef = useRef(null);\n const [loaded, setLoaded] = useState(false);\n\n const { user } = useUserContext();\n const [url, setUrl] = useState(\"\");\n const [dashboard, setDashboard] = useState();\n\n useEffect(() => {\n getAbTestQuickSightEmbedUrl(user, id)\n .then((res) => {\n setUrl(res.embedUrl);\n })\n .catch((_) => setLoaded(true));\n }, [user, id]);\n\n useEffect(() => {\n if (iframeRef.current && url) {\n setDashboard(\n embedQuicksight(\n iframeRef.current,\n url,\n quicksightParameters as QuicksightEmbedParameters,\n setLoaded\n )\n );\n }\n // eslint-disable-next-line\n }, [url]);\n\n const dependencyParameterString = JSON.stringify(quicksightParameters);\n useEffect(() => {\n if (dashboard && loaded) {\n setQuicksightParameters(\n dashboard as any,\n quicksightParameters as QuicksightEmbedParameters\n );\n }\n }, [dashboard, dependencyParameterString, loaded]);\n\n return {\n iframeRef,\n loaded,\n };\n}\n\nconst useAbTestConfigurationClasses = createUseClasses((theme) => ({\n metricsContainer: {\n height: \"80vh\",\n position: \"relative\",\n marginTop: 15,\n background: \"rgba(239, 239, 240,1)\",\n },\n title: {\n fontSize: \"20px\",\n fontWeight: 700,\n lineHeight: \"24px\",\n margin: \"10px 0px\",\n },\n loaderContainer: {\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n opacity: 1,\n transition: \"opacity 0.5s\",\n },\n loaded: {\n opacity: 0,\n pointerEvents: \"none\",\n },\n subTitle: {\n fontSize: \"16px\",\n fontWeight: 500,\n lineHeight: \"22px\",\n color: \"#636364\",\n },\n divider: {\n margin: \"30px 0\",\n },\n dividerSmall: {\n margin: \"16px 0\",\n },\n}));\n","import { useState, useEffect } from \"react\";\n\nexport type ValidationErrors = {\n [K in keyof T]?: string;\n};\n\nexport type DirtyFields = {\n [K in keyof T]?: boolean;\n};\n\nconst useStateWithValidation = (\n initialState: T,\n validate: (state: T) => ValidationErrors\n) => {\n const [state, setState] = useState(initialState);\n const [errors, setErrors] = useState>({});\n const [isDirty, setIsDirty] = useState>({});\n const [isValid, setIsValid] = useState(false);\n\n useEffect(() => {\n const validationErrors = validate(state);\n setErrors(validationErrors);\n const isFormValid =\n Object.keys(validationErrors).length === 0 &&\n Object.values(isDirty).every((dirty) => dirty);\n setIsValid(isFormValid);\n }, [state, validate, isDirty]);\n\n const update = (name: K, value: T[K], isDirty = true) => {\n setState((prevState) => ({\n ...prevState,\n [name]: value,\n }));\n setIsDirty((prevState) => ({\n ...prevState,\n [name]: isDirty,\n }));\n };\n\n return {\n state,\n errors,\n isValid,\n update,\n isDirty,\n };\n};\n\nexport default useStateWithValidation;\n","import {\n addAuthParameters,\n llmClient,\n} from \"../../../common/Client/backendClient\";\nimport { User } from \"../../../common/UserContext/User\";\n//[post]v1/stores/{storeId}/ab-test-experiments\nexport const llmProductDescriptionGenerate = async <\n T,\n K extends Record\n>(\n user: User,\n storeId: string,\n payload: K\n): Promise => {\n try {\n const response = await llmClient.post(\n `stores/${storeId}/llm/content-generator?${addAuthParameters(user)}`,\n JSON.stringify({ ...payload, promptType: \"product-description\" })\n );\n return response.data;\n } catch (e) {\n throw e;\n }\n};\n","import { useParams } from \"react-router-dom\";\nimport { useUserContext } from \"../../../common/UserContext/UserContext\";\nimport { IStoreRouteParams } from \"../../../AppRoutes\";\nimport { useState } from \"react\";\nimport { useLocalStorage } from \"react-use\";\nimport {\n DescriptionGenerateApiPayLoad,\n ILLMChat,\n} from \"../Types/ProductDescription\";\nimport { llmProductDescriptionGenerate } from \"../ProductDescription/product-description-generator.service\";\nimport axios from \"axios\";\n\nexport function useProductDescriptionChat() {\n const { user } = useUserContext();\n const { id = \"\" } = useParams();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const localStorageKey = `${id}:openai:response:product-description`;\n const [_, setChats] = useLocalStorage(localStorageKey, []);\n const chats = _ || [];\n const clearError = () => {\n setError(null);\n };\n const generate = async ({\n title,\n attributes,\n withUpsy,\n language,\n apiKey,\n }: Omit &\n Pick) => {\n try {\n setError(null);\n setLoading(true);\n const { chat, chatId } = await llmProductDescriptionGenerate<\n { chat: string; chatId: string },\n DescriptionGenerateApiPayLoad\n >(user, id, {\n apiKey,\n language,\n prompt: generateProductDescriptionPrompt(title, language, attributes),\n });\n\n setChats((prev) => [\n ...(prev || []),\n {\n id: chatId,\n title,\n description: chat,\n attributes,\n withUpsy,\n },\n ]);\n setLoading(false);\n return { chat, chatId };\n } catch (e) {\n setLoading(false);\n setError(formatProductDescriptionGenerateNetworkError(e));\n }\n };\n\n return { chats, error, loading, generate, clearError };\n}\n\nfunction generateProductDescriptionPrompt(\n title: string,\n language: string,\n attributes = \"\"\n): string {\n return `Generate a compelling product description for this product title - ${title} ${\n attributes ? `and product attributes - ${attributes}` : \"\"\n }. Make sure the description highlights the key features, benefits, and unique selling points of the product. Write the description in ${language}`;\n}\n\nfunction formatProductDescriptionGenerateNetworkError(e: unknown) {\n let error = \"\";\n if (axios.isAxiosError(e)) {\n console.log(e.response?.data?.response?.errors);\n const errors = (e.response?.data?.response?.errors || []) as {\n errorCode?: string;\n errorTitle?: string;\n errorDebugDescription?: string;\n }[];\n const firstError = errors[0] || {};\n error =\n firstError.errorDebugDescription ||\n firstError.errorTitle ||\n \"Something went wrong, please try again.\";\n } else if (e instanceof Error) {\n error = e.message;\n } else if (typeof e === \"string\" && e) {\n error = e;\n } else {\n error = \"Something went wrong, please try again.\";\n }\n return error;\n}\n","import { createSvgIcon } from \"@material-ui/core\";\n\nexport const CopyIcon = createSvgIcon(\n \n \n ,\n \"Copy\"\n);\n","import { useEffect, useRef, useState } from \"react\";\nimport { ILLMChat } from \"../../Types/ProductDescription\";\nimport { useCopyToClipboard } from \"react-use\";\nimport { Button, Grid, Typography } from \"@material-ui/core\";\nimport DoneIcon from \"@material-ui/icons/Done\";\nimport { Skeleton } from \"@material-ui/lab\";\nimport { CopyIcon } from \"../../../../common/Icons/CopyIcon\";\n\ntype TimeoutType = ReturnType;\nexport function ChatCard({\n chat: { id, title, description = \"\", attributes = \"\" },\n}: {\n chat: ILLMChat;\n}) {\n const copyTimeoutHandlerRef = useRef(null);\n const [_, copyToClipboard] = useCopyToClipboard();\n const [isCopied, setIsCopied] = useState(false);\n\n useEffect(() => {\n return () => {\n if (copyTimeoutHandlerRef.current)\n clearTimeout(copyTimeoutHandlerRef.current);\n };\n }, []);\n\n const handleCopy = (text: string) => {\n if (copyTimeoutHandlerRef.current)\n clearTimeout(copyTimeoutHandlerRef.current);\n try {\n copyToClipboard(text);\n setIsCopied(true);\n copyTimeoutHandlerRef.current = setTimeout(() => {\n setIsCopied(false);\n }, 2500);\n } catch (error) {\n setIsCopied(false);\n }\n };\n\n return (\n \n Product title\n {title}\n {attributes ? (\n <>\n \n Product attributes/tags\n \n {attributes}\n \n ) : null}\n {description ? (\n \n \n \n Product description\n \n \n \n {description}\n \n ) : null}\n \n );\n}\n\nexport function ChatCardSkeleton() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { createContext, useContext, useState } from \"react\";\nimport { ChildComponentsProps } from \"../Types/ProductDescription\";\nimport { useProductDescriptionGeneratorChildComponent } from \"../Hooks/useProductDescriptionGeneratorChildComponent\";\n\ntype ProductDescriptionContenxt = {\n componentProps: ChildComponentsProps;\n componentType: ChildComponentsProps[\"type\"];\n updateComponentType: React.Dispatch<\n React.SetStateAction\n >;\n isWithUpsy: boolean;\n updateIsWithUpsy: React.Dispatch>;\n};\nconst ProductDescriptionContext = createContext<\n ProductDescriptionContenxt | undefined\n>(undefined);\n\nexport const ProductDescriptionProvider: React.FC = ({ children }) => {\n const { componentProps, componentType, updateComponentType } =\n useProductDescriptionGeneratorChildComponent();\n const [isWithUpsy, updateIsWithUpsy] = useState(false);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useProductDescriptionContext = () => {\n const context = useContext(ProductDescriptionContext);\n if (!context) {\n throw new Error(\n \"useProductDescriptionContext must be used within a ProductDescriptionProvider\"\n );\n }\n return context;\n};\n","import { useState } from \"react\";\nimport { ChildComponentsProps } from \"../Types/ProductDescription\";\n\nexport function useProductDescriptionGeneratorChildComponent(\n type?: ChildComponentsProps[\"type\"]\n) {\n const [componentType, updateComponentType] = useState<\n ChildComponentsProps[\"type\"]\n >(type ? type : \"ConsentAndInfoScreen\");\n const componentProps: ChildComponentsProps = (() => {\n switch (componentType) {\n case \"ConsentAndInfoScreen\":\n return { type: \"ConsentAndInfoScreen\", props: {} } as const;\n case \"DescriptionGenerator\":\n return { type: \"DescriptionGenerator\", props: {} } as const;\n case \"DescriptionHistory\":\n return { type: \"DescriptionHistory\", props: {} } as const;\n default:\n return { type: \"ConsentAndInfoScreen\", props: {} } as const;\n }\n })();\n return { componentType, componentProps, updateComponentType };\n}\n","import { createUseClasses } from \"../../../../common/Theme/createUseClasses\";\n\nexport type DividerWithContentProps = {\n thickness?: number | string;\n contentColor?: string;\n dividerColor?: string;\n children: React.ReactNode;\n};\n\nexport type DividerWithContentClassesProps = Omit<\n DividerWithContentProps,\n \"children\"\n>;\nexport function DividerWithContent({\n thickness,\n dividerColor,\n contentColor,\n children,\n}: DividerWithContentProps) {\n const classes = useClasses({ dividerColor, contentColor, thickness });\n return (\n
\n
{children}
\n
\n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n dividerWithContent: (props: DividerWithContentClassesProps) => {\n return {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n flexWrap: \"nowrap\",\n \"& .content\": {\n marginInline: \"10px\",\n color: props.contentColor ? props.contentColor : \"rgba(0, 0, 0, 0.6)\",\n fontWeight: \"bold\",\n },\n \" &::before, &::after\": {\n width: \"100%\",\n backgroundColor: props.dividerColor\n ? props.dividerColor\n : \"rgba(0, 0, 0, 0.12)\",\n height: props.thickness ? props.thickness : \"1px\",\n content: '\"\"',\n },\n };\n },\n}));\n","import {\n Button,\n Grid,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Typography,\n} from \"@material-ui/core\";\nimport { CustomHtmlTooltip } from \"../../../common/Tooltip/Tooltip\";\nimport CustomTextField from \"../../../common/CustomUiComponent/TextField\";\nimport { DividerWithContent } from \"./Components/DividerWithContent\";\nimport useStateWithValidation, {\n ValidationErrors,\n} from \"../../../common/Hooks/useStateWithValidation\";\nimport { IStoreRouteParams } from \"../../../AppRoutes\";\nimport { useParams } from \"react-router-dom\";\nimport { useLocalStorage } from \"react-use\";\nimport { useProductDescriptionContext } from \"../Context/productDescriptionGenerate\";\nimport { Star } from \"@material-ui/icons\";\n\nfunction apiKeyValidationRules(state: { apiKey: string | undefined }) {\n const errors: ValidationErrors<{ apiKey: string }> = {};\n const { apiKey } = state;\n const trimedApiKey = apiKey?.trim();\n if (!trimedApiKey) {\n errors.apiKey = \"API key is required\";\n } else if (trimedApiKey.length < 10) {\n errors.apiKey = \"API key must be at least 10 characters long\";\n } else if (trimedApiKey.length > 100) {\n errors.apiKey = \"API key must be at most 100 characters long\";\n }\n return errors;\n}\nexport type ConsentAndInfoScreenProps = {\n children?: React.ReactNode;\n};\nexport function useApiKey() {\n const { id = \"\" } = useParams();\n const localStorageKey = `${id}:openai:apiKey`;\n const [apiKey, updateApiKey] = useLocalStorage(localStorageKey, \"\");\n return { apiKey, updateApiKey };\n}\n\nexport function ConsentAndInfoScreen(props: ConsentAndInfoScreenProps) {\n const { apiKey, updateApiKey } = useApiKey();\n const { updateComponentType, updateIsWithUpsy } =\n useProductDescriptionContext();\n const initialApiKeyState = {\n apiKey,\n };\n\n const {\n state: apiKeyState,\n errors,\n isDirty,\n update,\n isValid,\n } = useStateWithValidation(initialApiKeyState, apiKeyValidationRules);\n return (\n \n \n \n Our AI-powered tool creates the best product descriptions tailored to\n your needs. Simply enter the product name and attributes/tags, and let\n our AI do the rest. Whether you need descriptions for a new launch or\n to refresh existing listings, our generator ensures high-quality,\n unique content every time.\n \n \n How It Works\n \n
    \n
  1. \n Enter product name and attributes: Provide essential\n information about your product, such as name and features.\n
  2. \n
  3. \n Generate Descriptions: Use your OpenAI API Key to generate\n unlimited product descriptions. No API key? No problem! Try our AI\n feature for free and create up to 10 product descriptions.\n
  4. \n
  5. \n Review and Publish: Review the generated descriptions, make\n any necessary tweaks, and publish them to your store.\n
  6. \n
\n \n \n {\n updateApiKey(e.target.value);\n update(\"apiKey\", e.target.value);\n }}\n value={apiKeyState.apiKey}\n error={errors.apiKey && isDirty.apiKey ? true : false}\n helperText={errors.apiKey && isDirty.apiKey ? errors.apiKey : \"\"}\n />\n \n \n \n {\n updateComponentType(\"DescriptionGenerator\");\n updateIsWithUpsy(false);\n //TODO::\n }}\n disabled={!isValid}\n variant=\"contained\"\n color=\"primary\"\n size=\"medium\"\n >\n Next\n \n
\n
\n \n OR\n \n \n \n Try the AI feature for free\n \n \n \n \n \n \n \n \n \n {\n updateComponentType(\"DescriptionGenerator\");\n updateIsWithUpsy(true);\n //TODO::\n }}\n >\n Try AI magic\n \n \n \n );\n}\n","import {\n Button,\n FormControl,\n FormHelperText,\n Grid,\n MenuItem,\n Typography,\n} from \"@material-ui/core\";\nimport useStateWithValidation, {\n ValidationErrors,\n} from \"../../../common/Hooks/useStateWithValidation\";\nimport { Alert } from \"@material-ui/lab\";\nimport CustomSelectField from \"../../../common/CustomUiComponent/Select\";\nimport CustomTextField from \"../../../common/CustomUiComponent/TextField\";\nimport { useProductDescriptionChat } from \"../Hooks/useProductDescriptionChat\";\nimport { ArrowBack, ArrowForward } from \"@material-ui/icons\";\nimport { ChatCard, ChatCardSkeleton } from \"./Components/ChatCard\";\nimport { useProductDescriptionContext } from \"../Context/productDescriptionGenerate\";\nimport { useApiKey } from \"./ConstentAndInfoScreen\";\n\nexport type DescriptionGeneratorProps = {\n children?: React.ReactNode;\n};\n\nexport type DescriptionGeneratorState = {\n title: string;\n language: string;\n attributes?: string;\n};\n\nconst descriptionGenerateFormvalidationRules = (\n state: DescriptionGeneratorState\n): ValidationErrors => {\n const errors: ValidationErrors = {};\n\n const { title = \"\", language = \"\", attributes = \"\" } = state;\n\n const trimmedTitle = title.trim();\n const trimmedLanguage = language.trim();\n const trimmedAttributes = attributes.trim();\n\n const validateField = (\n field: string,\n fieldName: keyof ValidationErrors,\n minLength: number,\n maxLength: number,\n requiredMessage: string,\n lengthMessage: string\n ) => {\n if (!field) {\n errors[fieldName] = requiredMessage;\n } else if (field.length < minLength || field.length > maxLength) {\n errors[fieldName] = lengthMessage;\n }\n };\n\n validateField(\n trimmedTitle,\n \"title\",\n 3,\n 100,\n \"Product title is required\",\n \"Product title must be between 3 and 100 characters\"\n );\n validateField(\n trimmedLanguage,\n \"language\",\n 3,\n 15,\n \"Language is required\",\n \"Language must be between 3 and 15 characters\"\n );\n if (trimmedAttributes) {\n validateField(\n trimmedAttributes,\n \"attributes\",\n 3,\n 100,\n \"\",\n \"Product attributes must be between 3 and 100 characters\"\n );\n }\n\n return errors;\n};\n\nconst languages = [\n { language: \"english\" },\n { language: \"finnish\" },\n { language: \"dutch\" },\n { language: \"german\" },\n { language: \"swedish\" },\n];\n\nexport default function DescriptionGenerator(props: DescriptionGeneratorProps) {\n const initialState = {\n title: \"\",\n language: \"finnish\",\n attributes: \"\",\n };\n const { chats, loading, error, generate, clearError } =\n useProductDescriptionChat();\n\n const lastChat = [...chats].pop();\n\n const { updateComponentType, isWithUpsy } = useProductDescriptionContext();\n\n const { apiKey } = useApiKey();\n\n const {\n state: { title, language, attributes },\n errors,\n isValid,\n update,\n isDirty,\n } = useStateWithValidation(\n initialState,\n descriptionGenerateFormvalidationRules\n );\n\n function handleChatGenerate() {\n if (!isValid) return;\n (async function () {\n await generate({\n title: title,\n language: language,\n apiKey: !isWithUpsy ? apiKey : undefined,\n attributes,\n withUpsy: isWithUpsy,\n });\n update(\"title\", \"\", false);\n update(\"attributes\", \"\", false);\n })();\n }\n\n return (\n \n \n {\n updateComponentType(\"ConsentAndInfoScreen\");\n }}\n >\n Back\n \n {\n updateComponentType(\"DescriptionHistory\");\n }}\n >\n Local History\n \n \n \n \n {!isWithUpsy ? (\n \n \n *You are using your personal api key: {apiKey}*\n \n \n ) : null}\n {error ? (\n {\n clearError();\n }}\n >\n {error}\n \n ) : null}\n \n \n update(\"language\", e.target.value as string)}\n style={{ width: \"50%\" }}\n variant=\"outlined\"\n labelText=\"Select response language\"\n labelFor=\"language\"\n id=\"language\"\n >\n {languages.map((language) => (\n \n {language.language}\n \n ))}\n \n {isDirty.language && errors.language ? (\n {errors.language}\n ) : null}\n \n \n \n \n update(\"title\", e.target.value as string)}\n labelText=\"Product Title\"\n labelFor=\"Product Title\"\n variant=\"outlined\"\n placeholder=\"Enter product Title\"\n autoComplete=\"off\"\n fullWidth\n />\n \n \n \n \n update(\"attributes\", e.target.value as string)}\n labelText=\"Product Atrributes/Tags\"\n labelFor=\"Product Atrributes/Tags\"\n variant=\"outlined\"\n placeholder=\"Enter products attributes/tags\"\n autoComplete=\"off\"\n fullWidth\n />\n \n \n \n \n {\" \"}\n {loading ? \"Loading...\" : \"Generate\"}{\" \"}\n \n \n \n \n {loading ? (\n \n ) : lastChat ? (\n \n ) : null}\n \n \n );\n}\n","import { useMemo, useState } from \"react\";\nimport { Button, Grid, MenuItem } from \"@material-ui/core\";\nimport { ChatCard } from \"./Components/ChatCard\";\nimport { useProductDescriptionChat } from \"../Hooks/useProductDescriptionChat\";\nimport { useProductDescriptionContext } from \"../Context/productDescriptionGenerate\";\nimport { ArrowBack } from \"@material-ui/icons\";\nimport CustomSelectField from \"../../../common/CustomUiComponent/Select\";\n\nexport type DescriptionHistoryProps = {\n children?: React.ReactNode;\n};\n\nconst filters = [\n { label: \"All\", value: \"all\" },\n { label: \"With Upsy\", value: \"upsy\" },\n { label: \"With API key\", value: \"api-key\" },\n];\nexport function DescriptionHistory(props: DescriptionHistoryProps) {\n const { updateComponentType } = useProductDescriptionContext();\n const { chats } = useProductDescriptionChat();\n const [filter, setFilter] = useState(filters[0].value);\n const filteredChats = useMemo(() => {\n const reverseChat = [...chats].reverse();\n if (!filter || filter === \"all\") return reverseChat;\n else if (filter === \"upsy\") {\n return reverseChat.filter((item) => item.withUpsy);\n } else if (filter === \"api-key\") {\n return reverseChat.filter((item) => !item.withUpsy);\n }\n return reverseChat;\n }, [filter, chats]);\n\n return (\n \n \n {\n updateComponentType(\"DescriptionGenerator\");\n }}\n >\n Back\n \n \n \n \n {\n setFilter(e.target.value as string);\n }}\n variant=\"outlined\"\n labelText=\"Select filter\"\n labelFor=\"Filter\"\n id=\"filter\"\n >\n {filters.map((filter) => (\n \n {filter.label}\n \n ))}\n \n \n \n {filteredChats.length ? (\n filteredChats.map((chat) => {\n return ;\n })\n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

No history

\n \n
\n )}\n \n );\n}\n","import Grid from \"@material-ui/core/Grid/Grid\";\nimport { CustomStepper } from \"../../../common/CustomeStepper\";\nimport { TopContainer } from \"../../../common/Page/TopContainer\";\nimport { Store } from \"../../Store\";\nimport { MainContainer } from \"../../../common/Page/MainContainer\";\nimport Typography from \"@material-ui/core/Typography/Typography\";\nimport Divider from \"@material-ui/core/Divider/Divider\";\nimport { createUseClasses } from \"../../../common/Theme/createUseClasses\";\nimport DescriptionGenerator, {\n DescriptionGeneratorProps,\n} from \"./DescriptionGenerator\";\nimport {\n ConsentAndInfoScreen,\n ConsentAndInfoScreenProps,\n} from \"./ConstentAndInfoScreen\";\nimport {\n DescriptionHistory,\n DescriptionHistoryProps,\n} from \"./DescriptionHistory\";\nimport {\n ProductDescriptionProvider,\n useProductDescriptionContext,\n} from \"../Context/productDescriptionGenerate\";\n\nconst steps = [\"AI Content generation\"];\n\n// type ParentComponentProps = {\n// component: ChildComponentsProps;\n// children?: React.ReactNode,\n// };\nconst childComponentsMap = {\n ConsentAndInfoScreen: (props: ConsentAndInfoScreenProps) => (\n \n ),\n DescriptionGenerator: (props: DescriptionGeneratorProps) => (\n \n ),\n DescriptionHistory: (props: DescriptionHistoryProps) => (\n \n ),\n};\nfunction ParentComponent() {\n const { componentProps, componentType } = useProductDescriptionContext();\n const ComponentToRender = childComponentsMap[\n componentType\n ] as React.ComponentType;\n if (!ComponentToRender) return null;\n return ;\n}\n\nexport function LLMProductDescritionGenerate() {\n const classes = useClasses();\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n Product description generator\n \n \n {\n //TODO: This text have to be change by actual content\n }\n Create product descriptions using ChatGPT\n \n \n \n \n Lets generate AI base best product description\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst useClasses = createUseClasses((theme) => ({\n title: {\n fontSize: \"20px\",\n fontWeight: 700,\n lineHeight: \"24px\",\n margin: \"10px 0px\",\n },\n subTitle: {\n fontSize: \"16px\",\n fontWeight: 500,\n lineHeight: \"22px\",\n color: \"#636364\",\n },\n divider: {\n margin: \"30px 0\",\n },\n dividerSmall: {\n margin: \"16px 0\",\n },\n}));\n","import * as React from \"react\";\nimport { Navigate, Route, Routes } from \"react-router-dom\";\nimport { Dashboard } from \"./Stores/Dashboard/Dashboard\";\nimport { Lobby } from \"./Lobby/Lobby\";\nimport { useUserContext } from \"./common/UserContext/UserContext\";\nimport { Loader } from \"./common/Loader/Loader\";\nimport { Login } from \"./Login/Login\";\nimport { Register } from \"./Register/Register\";\nimport { ConfirmEmail } from \"./Register/ConfirmEmail\";\nimport { ForgotPassword } from \"./ForgotPassword/ForgotPassword\";\nimport { Account } from \"./Account/Account\";\nimport { Stores } from \"./Stores/Stores\";\nimport { Metrics } from \"./Stores/Metrics/Metrics\";\nimport { NotFound } from \"./404/NotFound\";\nimport { PasswordResetRequired } from \"./PasswordResetRequired/PasswordResetRequired\";\nimport { StoreIntegration } from \"./Stores/StoreIntegration/StoreIntegration\";\nimport { StoreSettings } from \"./Stores/StoreSettings/StoreSettings\";\nimport { ABTest } from \"./Stores/AbTest\";\nimport { LLMProductDescritionGenerate } from \"./Stores/AI/ProductDescription\";\n\nexport enum StaticRoutePath {\n Root = \"/\",\n Login = \"/login\",\n Register = \"/register\",\n ConfirmEmail = \"/confirm-email\",\n ForgotPassword = \"/forgot-password\",\n PasswordResetRequired = \"/password-reset-required\",\n abTest = \"/ab-test\",\n generateAiProductDescription = \"/ai-tools\",\n Stores = \"/stores\",\n Account = \"/account\",\n NotFound = \"*\",\n}\n\nexport const DynamicRoutePath = {\n Store: (id: string) => `${StaticRoutePath.Stores}/${id}`,\n StoreIntegration: (id: string) =>\n `${StaticRoutePath.Stores}/${id}/integration`,\n StoreSettings: (id: string) => `${StaticRoutePath.Stores}/${id}/settings`,\n StoreDashboard: (id: string) => `${StaticRoutePath.Stores}/${id}/dashboard`,\n StoreMetrics: (id: string) => `${StaticRoutePath.Stores}/${id}/metrics`,\n StoreWithAccount: (id: string) => `${StaticRoutePath.Stores}/${id}/account`,\n PasswordResetRequired: (email: string) =>\n `${StaticRoutePath.PasswordResetRequired}/${email}`,\n abTest: (id: string) => `${StaticRoutePath.abTest}/${id}`,\n generateAiProductDescription: (id: string) =>\n `${StaticRoutePath.generateAiProductDescription}/${id}`,\n};\n\nexport interface IStoreRouteParams extends Record {\n id?: string;\n}\nexport interface IPasswordResetRequiredParams\n extends Record {\n email?: string;\n}\nexport function AppRoutes() {\n return (\n \n }>\n }>\n }>\n }\n >\n }\n >\n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n \n \n }\n >\n \n );\n}\n\nfunction PrivateRoute({ children }: any) {\n const { loading, user } = useUserContext();\n return loading ? (\n \n ) : user && user.verified ? (\n <>{children}\n ) : (\n \n );\n}\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport { ThemeProvider, createMuiTheme } from \"@material-ui/core\";\nimport { Overrides } from \"@material-ui/core/styles/overrides\";\nimport { PaletteOptions } from \"@material-ui/core/styles/createPalette\";\nimport { TypographyOptions } from \"@material-ui/core/styles/createTypography\";\n\nexport function Theme({ children }: { children: ReactNode }) {\n return (\n <>\n \n \n {children}\n \n \n );\n}\n\nconst overrides: Overrides = {\n MuiButton: {\n root: {\n textTransform: \"inherit\",\n },\n },\n MuiFormControl: {\n root: {\n width: \"100%\",\n },\n },\n MuiLink: {\n root: {\n color: \"#364F83\",\n fontSize: \"12px\",\n lineHeight: \"14px\",\n fontWeight: 500,\n },\n },\n MuiTextField: {\n root: {\n \"& .MuiOutlinedInput-root\": {\n background: \"#ffffff\",\n borderRadius: \"6px\",\n \"& fieldset\": {\n borderColor: \"#6793FF\",\n },\n \"& input\": {\n fontWeight: 500,\n fontSize: \"16px\",\n lineHeight: \"19px\",\n color: \"#808081\",\n },\n \"&:hover fieldset\": {\n borderColor: \"#6793FF\",\n borderWidth: \"2px\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: \"#6793FF\",\n },\n },\n },\n },\n MuiPaper: {\n elevation1: {\n boxShadow: \"0px 4px 12px 0px rgba(149, 157, 165, 0.18)\",\n },\n },\n};\n\nconst palette: PaletteOptions = {\n primary: {\n main: \"#364F83\",\n },\n secondary: {\n main: \"#E26179\",\n },\n text: {\n primary: \"#202F4E\",\n secondary: \"#636364\",\n },\n background: {\n default: \"#FFF\",\n paper: \"#F7F9FF\",\n },\n};\n\nconst typography: TypographyOptions = {\n fontFamily: '\"Inter\",\"Montserrat\", sans-serif',\n h4: {\n // Main heading\n fontFamily: '\"Inter\",\"Montserrat\", sans-serif',\n },\n};\n\nconst theme = createMuiTheme({\n overrides,\n palette,\n typography,\n});\n","import React from \"react\";\nimport { UserContextProvider } from \"./common/UserContext/UserContext\";\nimport { HashRouter } from \"react-router-dom\";\nimport { AppRoutes } from \"./AppRoutes\";\nimport { Theme } from \"./common/Theme/Theme\";\nimport { ConfigurationsContextProvider } from \"./common/ConfigurationsContext/ConfigurationsContext\";\nimport \"@fontsource/inter/400.css\";\nimport \"@fontsource/inter/500.css\";\nimport \"@fontsource/inter/600.css\";\nimport \"@fontsource/inter/700.css\";\nimport \"@fontsource/inter/800.css\";\nimport \"@fontsource/inter/900.css\";\n\nfunction App() {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import { ReportHandler } from \"web-vitals\";\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import(\"web-vitals\").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}