{"version":3,"sources":["_platform/src/utils/core/constants.js","_platform/src/utils/core/sagaInjectors.js","_platform/src/utils/injectSaga.js","_platform/src/containers/App/constants.js","_platform/src/utils/getLoginPath.js","containers/WebApp/saga.js","containers/WebApp/LoriFooter.js","_platform/src/utils/PrivateRoute.js","containers/WebApp/Routes.js","_platform/src/utils/core/reducers.js","_platform/src/containers/App/reducer.js","_platform/src/utils/toast.js","_platform/src/utils/simpleSlugify.js","_platform/src/utils/request.js","_platform/src/theme/globalStyles.js","theme/globalStylesApp.js","_platform/src/utils/core/reducerInjectors.js","_platform/src/utils/injectReducer.js","_platform/src/components/Loading/LoadingAnimation.js","containers/WebApp/actions.js","components/CustomComponents/CustomFooter/images/Logo-Footer@2x.png","_platform/src/containers/App/actions.js","_platform/src/components/Loading/Loading.js","_platform/src/utils/LoadAsync.js","_platform/src/utils/history.js","containers/WebApp/selectors.js","_platform/src/containers/App/selectors.js","containers lazy /^/.//.*$/ groupOptions: {} namespace object","_platform/src/theme/settingsDefault.js","theme/settingsApp.js","theme/themeApp.js","_platform/src/containers/App/saga.js","_platform/src/containers/App/App.js","serviceWorker.js","index.js","_platform/src/utils/core/checkStore.js","containers/WebApp/SettingsContext.js","_platform/src/utils/utilities.js","containers/WebApp/constants.js","_platform/src/utils/tokenUtils.js","containers/WebApp/reducer.js","components/CustomComponents/CustomFooter/Footer.js","_platform/src/components/ScrollToTop/ScrollToTop.js","containers/WebApp/WebApp.js","_platform/src/utils/store.js","_platform/src/utils/core/configureStore.js"],"names":["DAEMON","ONCE_TILL_UNMOUNT","allowedModes","checkKey","key","invariant","isString","isEmpty","checkDescriptor","descriptor","shape","saga","isFunction","mode","includes","conformsTo","injectSagaFactory","store","isValid","arguments","length","undefined","args","checkStore","newDescriptor","Object","objectSpread","hasSaga","Reflect","has","injectedSagas","task","runSaga","ejectSagaFactory","cancel","getInjectors","injectSaga","ejectSaga","__webpack_exports__","_ref","WrappedComponent","InjectSaga","_React$Component","props","context","_this","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","injectors","inherits","createClass","value","react_default","a","createElement","React","Component","contextType","ReactReduxContext","displayName","concat","name","hoistNonReactStatics","__webpack_require__","d","COUNTRIES_REQUEST","COUNTRIES_SUCCESS","COUNTRIES_ERROR","SET_USER","USER_LOGOUT_REQUEST","USER_PROFILE_REQUEST","USER_PROFILE_SUCCESS","USER_PROFILE_ERROR","USER_TOKEN_REQUEST","USER_TOKEN_SUCCESS","USER_TOKEN_ERROR","getLoginPath","settingsApp","_history$location","history","location","pathname","search","loginPagePath","logoutPagePath","queryString","qs","parse","replace","ignoreQueryPrefix","returnUrl","stringify","keys","returnQueryString","queryStringUpdated","_codebuild_output_src2820148810_src_Epson_Premium_Partner_Rewards_Lori_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__","requestCart","requestCustomerReps","requestMenu","requestSettings","requestWishlist","requestWishlistAddRemove","userLogoutListener","rootSaga","response","error","_codebuild_output_src2820148810_src_Epson_Premium_Partner_Rewards_Lori_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default","wrap","_context","prev","next","put","showLoading","api","get","description","sent","cartSuccess","data","cartRewards","_codebuild_output_src2820148810_src_Epson_Premium_Partner_Rewards_Lori_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_2__","map","reward","slug","slugify","rewardCode","rewardId","t0","apiErrorHandler","status","cartError","hideLoading","finish","stop","_marked","_response","_error","_context2","customerRepsSuccess","Math","floor","Date","now","customerRepsError","_marked2","_response2","routes","_error2","_context3","menuSuccess","flattenDeepArrayOfObjects","menuUpdateRoutes","localStorage","setItem","JSON","removeItem","menuError","_marked3","_ref2","claimingPeriods","program","unitsOfMeasure","_error3","_context4","all","_codebuild_output_src2820148810_src_Epson_Premium_Partner_Rewards_Lori_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__","settingsSuccess","item","dateStartsUser","dateStartsUtc","dateEndsUser","dateEndsUtc","settingsError","toast","_marked4","_response3","_error4","_context5","wishlistSuccess","wishlistError","_marked5","values","payload","action","_context6","toLowerCase","post","delete","wishlistId","wishlistRequest","t1","process","_marked6","_context7","delay","userLogoutClearUserData","menuRequest","_marked7","_context8","takeLatest","CART_REQUEST","CUSTOMER_REPS_REQUEST","MENU_REQUEST","SETTINGS_REQUEST","WISHLIST_REQUEST","WISHLIST_ADDREMOVE_REQUEST","_marked8","StyledLoriFooter","styled","div","_templateObject","LoriFooter","react__WEBPACK_IMPORTED_MODULE_1___default","className","id","href","target","rel","PrivateRoute","_this$props","component","user","tempAuthAllowed","rest","objectWithoutProperties","_this$props2","currentUser","currentUserTemp","userObject","token","react_router","assign","render","menuId","push","to","theme","defaultProps","mapStateToProps","createStructuredSelector","selectCurrentUser","selectCurrentUserTemp","withConnect","connect","compose","withTheme","Routes","exact","path","LoadAsync","e","then","bind","passwordResetEnabled","passwordResetPagePath","utils_PrivateRoute","mobileAppSSOEnabled","mobileAppSSOPagePath","route","routeExact","createReducer","injectedReducers","combineReducers","loadingBar","loadingBarReducer","global","globalReducer","initialState","countries","retrieveToken","isFetchingToken","profileDetails","statusDetails","userOptions","appReducer","state","type","lastUpdated","options","isProfileValid","forcePasswordChange","details","message","toastType","toastOptions","autoClose","toastify","simpleSlugify","text","toString","trim","apiSetAuthorizationToken","axios__WEBPACK_IMPORTED_MODULE_0__","axios__WEBPACK_IMPORTED_MODULE_0___default","n","_store__WEBPACK_IMPORTED_MODULE_1__","_containers_App_actions__WEBPACK_IMPORTED_MODULE_2__","axios","defaults","headers","create","baseURL","title","config","statusText","messageDetails","request","interceptors","use","requestData","url","indexOf","dispatch","userLogoutRequest","skipRemote","Promise","reject","globalStyles","css","thd","GlobalStylesApp","createGlobalStyle","globalStylesApp_templateObject","loriGlobalStyles","down","_templateObject2","StylesApp","Fragment","smooth_ui_core_sc_es","injectReducerFactory","reducer","replaceReducer","injectReducer","ReducerInjector","SpinLoader","span","thickness","sColor","pColor","height","width","LoadingAnimation","style","_ref$theme","loadingSpinnerPrimary","loadingSpinnerSecondary","r","cartRequest","customerRepsRequest","settingsRequest","wishlistAddRemoveRequest","_constants__WEBPACK_IMPORTED_MODULE_0__","refresh","CART_SUCCESS","CART_ERROR","CUSTOMER_REPS_SUCCESS","CUSTOMER_REPS_ERROR","MENU_SUCCESS","MENU_ERROR","MENU_UPDATE_ROUTES","SETTINGS_SUCCESS","SETTINGS_ERROR","USER_LOGOUT_REQUEST_CLEANUP","WISHLIST_SUCCESS","WISHLIST_ERROR","module","exports","p","countriesRequest","countriesSuccess","countriesError","setUser","userProfileRequest","userProfileSuccess","userProfileError","userTokenRequest","userTokenSuccess","userTokenError","Loading","code","timedOut","onClick","retry","pastDelay","loadFn","opts","Loadable","loader","loading","timeout","history__WEBPACK_IMPORTED_MODULE_0__","createBrowserHistory","selectState","selectCart","selectCustomerReps","selectMenu","selectRoutes","selectSettings","selectSettingsNextClaimingPeriod","selectSettingsPointsUOM","selectSettingsProgram","selectSettingsSalesUOMs","selectWishlist","reselect__WEBPACK_IMPORTED_MODULE_0__","_reducer__WEBPACK_IMPORTED_MODULE_1__","webApp","createSelector","cart","customerReps","menu","settings","find","pointsMeasure","filter","wishlist","selectCountries","selectIsFetchingToken","selectStatus","selectUserOptions","selectUserProfile","selectGlobalState","./AboutPage/AboutAwardsNight","./AboutPage/AboutAwardsNight.js","./AboutPage/AboutPage","./AboutPage/AboutPage.js","./AboutPage/images/banner-about-@1x.jpg","./AboutPage/images/banner-about-@2x.jpg","./AboutPage/images/banner-about-man_using_keyboard-@2x.jpg","./AboutPage/images/banner-about-mobile-@1x.jpg","./AboutPage/images/banner-about-mobile-@2x.jpg","./AboutPage/images/banner-about-tablet-@1x.jpg","./AboutPage/images/banner-about-tablet-@2x.jpg","./AboutPage/images/bg-about-awards_night_banner-@2x.jpg","./AboutPage/images/icon-handgraph.svg","./AboutPage/images/icon-lightbulb.svg","./AboutPage/images/icon-shield.svg","./AboutPage/images/icon-stopwatch.svg","./AboutPage/images/image-about-1-@2x.jpg","./AboutPage/images/image-about-2-@2x.jpg","./AboutPage/images/image-about-digital_giftcards-@2x.jpg","./AboutPage/images/image-about-rewards_collage-@2x.jpg","./AboutPage/images/image-about-travel_collage-@2x.jpg","./BehaviourProvider/BehaviourProvider","./BehaviourProvider/BehaviourProvider.js","./BehaviourProvider/actions","./BehaviourProvider/actions.js","./BehaviourProvider/constants","./BehaviourProvider/constants.js","./BehaviourProvider/reducer","./BehaviourProvider/reducer.js","./BehaviourProvider/saga","./BehaviourProvider/saga.js","./BehaviourProvider/selectors","./BehaviourProvider/selectors.js","./CartPage/CartPage","./CartPage/CartPage.js","./CartProvider/CartProvider","./CartProvider/CartProvider.js","./CartProvider/actions","./CartProvider/actions.js","./CartProvider/constants","./CartProvider/constants.js","./CartProvider/reducer","./CartProvider/reducer.js","./CartProvider/saga","./CartProvider/saga.js","./CartProvider/selectors","./CartProvider/selectors.js","./ClaimHistoryPage/ClaimHistoryPage","./ClaimHistoryPage/ClaimHistoryPage.js","./ClaimHistoryProvider/ClaimHistoryProvider","./ClaimHistoryProvider/ClaimHistoryProvider.js","./ClaimHistoryProvider/actions","./ClaimHistoryProvider/actions.js","./ClaimHistoryProvider/constants","./ClaimHistoryProvider/constants.js","./ClaimHistoryProvider/reducer","./ClaimHistoryProvider/reducer.js","./ClaimHistoryProvider/saga","./ClaimHistoryProvider/saga.js","./ClaimHistoryProvider/selectors","./ClaimHistoryProvider/selectors.js","./CodesProvider/CodesList","./CodesProvider/CodesList.js","./CodesProvider/CodesProvider","./CodesProvider/CodesProvider.js","./CodesProvider/CodesRedeemForm","./CodesProvider/CodesRedeemForm.js","./CodesProvider/actions","./CodesProvider/actions.js","./CodesProvider/constants","./CodesProvider/constants.js","./CodesProvider/reducer","./CodesProvider/reducer.js","./CodesProvider/saga","./CodesProvider/saga.js","./CodesProvider/selectors","./CodesProvider/selectors.js","./ContactPage/ContactPage","./ContactPage/ContactPage.js","./ContactPage/images/banner-contact-@1x.jpg","./ContactPage/images/banner-contact-@2x.jpg","./ContactPage/images/banner-contact-mobile-@1x.jpg","./ContactPage/images/banner-contact-mobile-@2x.jpg","./ContactPage/images/banner-contact-tablet-@1x.jpg","./ContactPage/images/banner-contact-tablet-@2x.jpg","./FaqsPage/FaqsPage","./FaqsPage/FaqsPage.js","./FaqsPage/actions","./FaqsPage/actions.js","./FaqsPage/constants","./FaqsPage/constants.js","./FaqsPage/images/FAQs-Banner.jpg","./FaqsPage/images/FAQs-Banner@2x.jpg","./FaqsPage/images/Minus.svg","./FaqsPage/images/Plus.svg","./FaqsPage/reducer","./FaqsPage/reducer.js","./FaqsPage/saga","./FaqsPage/saga.js","./FaqsPage/selectors","./FaqsPage/selectors.js","./HomePage/HomePage","./HomePage/HomePage.js","./HomePage/images/Icon1@2x.png","./HomePage/images/Icon2@2x.png","./HomePage/images/Icon3@2x.png","./HomePage/images/Icon4@2x.png","./HomePage/images/Icon5@2x.png","./HomePage/images/home-hero.jpg","./HomePage/images/image-about-laptop-2-@2x.jpg","./HomePage/images/image-about-people-@2x.jpg","./HomePage/images/image-about-products-@2x.jpg","./HomePage/images/image-home-reward-chromecast-@2x.jpg","./HomePage/images/image-home-reward-dewalt-@2x.jpg","./HomePage/images/image-home-reward-nintendo-@2x.jpg","./HomePage/images/image-home-reward-phillips-@2x.jpg","./InvoicePage/InvoiceForm","./InvoicePage/InvoiceForm.js","./InvoicePage/InvoiceList","./InvoicePage/InvoiceList.js","./InvoicePage/InvoicePage","./InvoicePage/InvoicePage.js","./InvoiceProvider/InvoiceProvider","./InvoiceProvider/InvoiceProvider.js","./InvoiceProvider/actions","./InvoiceProvider/actions.js","./InvoiceProvider/constants","./InvoiceProvider/constants.js","./InvoiceProvider/reducer","./InvoiceProvider/reducer.js","./InvoiceProvider/saga","./InvoiceProvider/saga.js","./InvoiceProvider/selectors","./InvoiceProvider/selectors.js","./LeaderboardPage/LeaderboardPage","./LeaderboardPage/LeaderboardPage.js","./LeaderboardProvider/LeaderboardProvider","./LeaderboardProvider/LeaderboardProvider.js","./LeaderboardProvider/actions","./LeaderboardProvider/actions.js","./LeaderboardProvider/constants","./LeaderboardProvider/constants.js","./LeaderboardProvider/reducer","./LeaderboardProvider/reducer.js","./LeaderboardProvider/saga","./LeaderboardProvider/saga.js","./LeaderboardProvider/selectors","./LeaderboardProvider/selectors.js","./LoginPage/LoginPage","./LoginPage/LoginPage.js","./LoginPage/images/Login-BG-Mobile@2x.jpg","./LoginPage/images/Login-BG-Tablet@1x.jpg","./LoginPage/images/Login-BG-Tablet@2x.jpg","./LoginPage/images/Login-BG-mobile@1x.jpg","./LoginPage/images/Login-BG@1x.jpg","./LoginPage/images/Login-BG@2x.jpg","./LoginPage/images/image-login_page-background-@1x.jpg","./LoginPage/images/image-login_page-background-@2x.jpg","./LogoutPage/LogoutPage","./LogoutPage/LogoutPage.js","./MobileAppSSOPage/MobileAppSSOPage","./MobileAppSSOPage/MobileAppSSOPage.js","./NotFoundPage/NotFoundPage","./NotFoundPage/NotFoundPage.js","./NotFoundPage/images/404-error-icons.svg","./PasswordResetPage/PasswordResetPage","./PasswordResetPage/PasswordResetPage.js","./PrivacyPage/PrivacyPage","./PrivacyPage/PrivacyPage.js","./ProductsPage/ProductsPage","./ProductsPage/ProductsPage.js","./ProfilePage/ProfilePage","./ProfilePage/ProfilePage.js","./ProfilePage/images/banner-profile-@1x.jpg","./ProfilePage/images/banner-profile-@2x.jpg","./ProfilePage/images/banner-profile-mobile-@1x.jpg","./ProfilePage/images/banner-profile-mobile-@2x.jpg","./ProfilePage/images/banner-profile-tablet-@1x.jpg","./ProfilePage/images/banner-profile-tablet-@2x.jpg","./RedeemCode/RedeemCode","./RedeemCode/RedeemCode.js","./RedirectToFirstAvailableSubMenu/RedirectToFirstAvailableSubMenu","./RedirectToFirstAvailableSubMenu/RedirectToFirstAvailableSubMenu.js","./RegisterPage/RegisterPage","./RegisterPage/RegisterPage.js","./RewardsPage/RewardsConciergeBlock","./RewardsPage/RewardsConciergeBlock.js","./RewardsPage/RewardsPage","./RewardsPage/RewardsPage.js","./RewardsPage/images/banner-rewards-@1x.jpg","./RewardsPage/images/banner-rewards-@2x.jpg","./RewardsPage/images/banner-rewards-mobile-@1x.jpg","./RewardsPage/images/banner-rewards-mobile-@2x.jpg","./RewardsPage/images/banner-rewards-tablet-@1x.jpg","./RewardsPage/images/banner-rewards-tablet-@2x.jpg","./RewardsPage/images/bg-rewards-concierge-@2x.jpg","./RewardsProvider/RewardsProvider","./RewardsProvider/RewardsProvider.js","./RewardsProvider/actions","./RewardsProvider/actions.js","./RewardsProvider/constants","./RewardsProvider/constants.js","./RewardsProvider/reducer","./RewardsProvider/reducer.js","./RewardsProvider/rewardsUtils","./RewardsProvider/rewardsUtils.js","./RewardsProvider/saga","./RewardsProvider/saga.js","./RewardsProvider/selectors","./RewardsProvider/selectors.js","./SitemapPage/SitemapPage","./SitemapPage/SitemapPage.js","./StatementIncentivePage/StatementIncentivePage","./StatementIncentivePage/StatementIncentivePage.js","./StatementIncentivePage/images/banner-statement-@1x.jpg","./StatementIncentivePage/images/banner-statement-@2x.jpg","./StatementIncentivePage/images/banner-statement-mobile-@1x.jpg","./StatementIncentivePage/images/banner-statement-mobile-@2x.jpg","./StatementIncentivePage/images/banner-statement-tablet-@1x.jpg","./StatementIncentivePage/images/banner-statement-tablet-@2x.jpg","./StatementPage/StatementPage","./StatementPage/StatementPage.js","./StatementPage/StatementTabs","./StatementPage/StatementTabs.js","./StatementPage/images/banner-statement-@1x.jpg","./StatementPage/images/banner-statement-@2x.jpg","./StatementPage/images/banner-statement-mobile-@1x.jpg","./StatementPage/images/banner-statement-mobile-@2x.jpg","./StatementPage/images/banner-statement-tablet-@1x.jpg","./StatementPage/images/banner-statement-tablet-@2x.jpg","./StatementProvider/StatementProvider","./StatementProvider/StatementProvider.js","./StatementProvider/actions","./StatementProvider/actions.js","./StatementProvider/constants","./StatementProvider/constants.js","./StatementProvider/reducer","./StatementProvider/reducer.js","./StatementProvider/saga","./StatementProvider/saga.js","./StatementProvider/selectors","./StatementProvider/selectors.js","./TermsPage/TermsPage","./TermsPage/TermsPage.js","./TrainingPage/TrainingPage","./TrainingPage/TrainingPage.js","./WebApp/LoriFooter","./WebApp/LoriFooter.js","./WebApp/Routes","./WebApp/Routes.js","./WebApp/SettingsContext","./WebApp/SettingsContext.js","./WebApp/WebApp","./WebApp/WebApp.js","./WebApp/actions","./WebApp/actions.js","./WebApp/constants","./WebApp/constants.js","./WebApp/reducer","./WebApp/reducer.js","./WebApp/saga","./WebApp/saga.js","./WebApp/selectors","./WebApp/selectors.js","./Welcome/Welcome","./Welcome/Welcome.js","./WishlistPage/WishlistPage","./WishlistPage/WishlistPage.js","./WishlistProvider/WishlistProvider","./WishlistProvider/WishlistProvider.js","webpackAsyncContext","req","o","resolve","Error","ids","slice","t","settingsDefault","authTokenRefreshBeforeExpiry","dateFormat","dateLongFormat","dateTimeFormat","dateTimeLongFormat","formPreferOptionalIndicator","formIndicatorOptionalText","formIndicatorRequiredText","loginRememberMeEnabled","loginUseSessionStorage","redirectOnIncompleteProfile","loginPasswordResetLabel","loginPasswordResetShow","profilePagePath","rewardsCategorySkip","minimumPasswordLength","passwordRequirementMessage","defaultPageSize","dataCacheTime","dataCacheTimeLong","orderStatusLabels","Received","Ordered","Packing","Dispatched","BackOrder","siteName","cloudinaryCloudName","cartPage","privacyPage","rewardsPage","deliveryMethodClientLabel","themeApp","borderRadius","gridMaxWidths","sm","md","lg","xl","primary","secondary","grey","bluegrey","green","borderColor","containerWidth","defaultFontColor","gray800","inputBtnMinWidth","customInputHintColor","gray600","customInputHintFontSize","customInlineInputInvalidColor","red","customCheckboxDisabledBackground","customHeaderBackground","customHeaderColor","customMenuBackground","customMenuColor","customMenuHighlight","customMenuHighlightColor","customMenuFocus","transparentize","customSubMenuBackground","customMobileMenuOverlayBackground","loadingBarColor","welcomeBackground","welcomeColor","welcomeHighlight","breadcrumbsBackground","breadcrumbsColor","breadcrumbsContainerWidth","breadcrumbsLinkColor","breadcrumbsLinkHoverColor","breadcrumbsCurrentLinkColor","breadcrumbsFontSize","cartBadgeBackground","cartBadgeColor","cartPointsBalanceBackground","cartRemainingNegativeColor","rewardCategoriesListContainerWidth","rewardCategoriesFilterContainerWidth","rewardListContainerWidth","rewardDetailContainerWidth","rewardDescription1ContainerWidth","rewardDescription2ContainerWidth","wishlistBadgeBackground","wishlistBadgeColor","wishlistContainerWidth","wishlistIconActive","wishlistIconInactive","rewardsHighlightBackground","rewardsHighlightContainerWidth","statementHighlightColor","statementStatus","achieved","onTrack","close","behind","inProgress","timeElapsed","statementDoughnutBorder","statementDoughnutRemainingTrack","tooltipBackground","tooltipBorderColor","tooltipColor","pagerActiveBackground","pagerActiveColor","pagerBackgroundHover","requestCountries","requestUserLogout","requestUserToken","requestUserProfile","appSaga","regenerator_default","loginPath","removeToken","userData","pageQueryString","cleanQueryString","trimmedQueryString","redirectQS","formatToken","removeProperty","storeToken","App","tokenRefresh","listen","force","tokenData","tokenLifeTime","tokenExpiry","generatedLocal","refreshPeriod","triggerFetchTime","setMinutes","getMinutes","_this2","children","Children","childElement","cloneElement","onLogout","withSaga","withRouter","Boolean","window","hostname","match","rootElement","document","getElementById","hasChildNodes","hydrate","es","styled_components_browser_esm","containers_App_App","WebApp","navigator","serviceWorker","ready","registration","unregister","lodash_conformsTo__WEBPACK_IMPORTED_MODULE_0__","lodash_conformsTo__WEBPACK_IMPORTED_MODULE_0___default","lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__","lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default","lodash_isObject__WEBPACK_IMPORTED_MODULE_2__","lodash_isObject__WEBPACK_IMPORTED_MODULE_2___default","invariant__WEBPACK_IMPORTED_MODULE_3__","invariant__WEBPACK_IMPORTED_MODULE_3___default","subscribe","getState","isObject","SettingsContext","createContext","SettingsProvider","_codebuild_output_src2820148810_src_Epson_Premium_Partner_Rewards_Lori_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__","Provider","withSettings","Consumer","isUrlAbsolute","RegExp","test","obj","property","reduce","acc","_codebuild_output_src2820148810_src_Epson_Premium_Partner_Rewards_Lori_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__","_codebuild_output_src2820148810_src_Epson_Premium_Partner_Rewards_Lori_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__","arr","childrenProp","Array","isArray","untrailingSlashIt","str","trailingSlashIt","lowercaseFirstLetter","string","charAt","timestamp","getTime","timeDiff","generated","decodedToken","base64","split","atob","decodeToken","permissions","generatedServer","expiryServer","expiry","timeDifference","roles","userId","nameid","disableClaiming","DisableClaiming","sessionStorage","auth","webAppReducer","isLoading","FooterWrapper","footer","FooterContainer","up","_templateObject3","_templateObject4","_templateObject5","_templateObject6","Footer","react_router_dom","getFullYear","src","Logo","alt","ScrollToTop","prevProps","hash","scrollTo","Header","HeaderNav","Welcome","AppWrapper","WebApp_templateObject","PageWrapper","WebApp_templateObject2","ToastifyTransition","cssTransition","enter","exit","duration","onMenuRequest","onSettingsRequest","onCartRequest","wishlistDisabled","onWishlistRequest","build_default","left","backgroundColor","position","updateTime","Helmet_default","titleTemplate","defaultTitle","react_toastify","newestOnTop","transition","nextClaimingPeriod","settingsNextClaimingPeriod","pointsUOM","settingsPointsUOM","settingsProgram","salesUOMs","settingsSalesUOMs","lib","cloudName","display","flex","minHeight","components_ScrollToTop_ScrollToTop","showLoginInMenu","showLogoutInMenu","CustomFooter_Footer","globalStylesApp","withReducer","composeEnhancers","sagaMiddleware","createSagaMiddleware","middlewares","enhancers","applyMiddleware","apply","createStore","run","configureStore"],"mappings":"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6L,EAAwB,kBAC5BV,YACEc,EACA,SAAAjJ,GAAK,OAAIA,EAAML,mBAGboJ,EAAoB,kBACxBZ,YACEc,EACA,SAAAjJ,GAAK,OAAIA,EAAMF,eAMbkJ,EAAoB,kBACxBb,YACEc,EACA,SAAAjJ,GAAK,OAAIA,EAAMJ,uCCjEnB,IAAAtJ,EAAA,CACA4S,+BAAA,CACA,IACA,EACA,IAEAC,kCAAA,CACA,IACA,EACA,IAEAC,wBAAA,CACA,IACA,EACA,IAEAC,2BAAA,CACA,IACA,EACA,IAEAC,0CAAA,CACA,IACA,EACA,KAEAC,0CAAA,CACA,IACA,EACA,KAEAC,6DAAA,CACA,IACA,EACA,KAEAC,iDAAA,CACA,IACA,EACA,KAEAC,iDAAA,CACA,IACA,EACA,KAEAC,iDAAA,CACA,IACA,EACA,KAEAC,iDAAA,CACA,IACA,EACA,KAEAC,0DAAA,CACA,IACA,EACA,KAEAC,wCAAA,CACA,IACA,EACA,KAEAC,wCAAA,CACA,IACA,EACA,KAEAC,qCAAA,CACA,IACA,EACA,KAEAC,wCAAA,CACA,IACA,EACA,KAEAC,2CAAA,CACA,IACA,EACA,KAEAC,2CAAA,CACA,IACA,EACA,KAEAC,2DAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,wDAAA,CACA,IACA,EACA,KAEAC,wCAAA,CACA,IACA,EACA,GAEAC,2CAAA,CACA,IACA,EACA,GAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,gCAAA,CACA,IACA,EACA,IAEAC,mCAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,2BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,gCAAA,CACA,IACA,EACA,IAEAC,mCAAA,CACA,IACA,EACA,IAEAC,sBAAA,CACA,IACA,EACA,IAEAC,yBAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,GAEAC,iCAAA,CACA,IACA,EACA,GAEAC,yBAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,2BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,yBAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,sBAAA,CACA,IACA,EACA,IAEAC,yBAAA,CACA,IACA,EACA,IAEAC,2BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,sCAAA,CACA,IACA,EACA,IAEAC,yCAAA,CACA,IACA,EACA,IAEAC,8CAAA,CACA,IACA,EACA,GAEAC,iDAAA,CACA,IACA,EACA,GAEAC,iCAAA,CACA,IACA,EACA,IAEAC,oCAAA,CACA,IACA,EACA,IAEAC,mCAAA,CACA,IACA,EACA,IAEAC,sCAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,oCAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,mCAAA,CACA,IACA,EACA,IAEAC,sCAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,gCAAA,CACA,IACA,EACA,GAEAC,mCAAA,CACA,IACA,EACA,GAEAC,kCAAA,CACA,IACA,EACA,EACA,EACA,IAEAC,qCAAA,CACA,IACA,EACA,EACA,EACA,IAEAC,0BAAA,CACA,IACA,EACA,IAEAC,6BAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,0BAAA,CACA,IACA,EACA,IAEAC,6BAAA,CACA,IACA,EACA,IAEAC,uBAAA,CACA,IACA,EACA,IAEAC,0BAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,8CAAA,CACA,IACA,EACA,KAEAC,8CAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,sBAAA,CACA,IACA,EACA,EACA,IAEAC,yBAAA,CACA,IACA,EACA,EACA,IAEAC,qBAAA,CACA,IACA,EACA,IAEAC,wBAAA,CACA,IACA,EACA,IAEAC,uBAAA,CACA,IACA,EACA,IAEAC,0BAAA,CACA,IACA,EACA,IAEAC,oCAAA,CACA,IACA,EACA,KAEAC,uCAAA,CACA,IACA,EACA,KAEAC,8BAAA,CACA,IACA,EACA,KAEAC,6BAAA,CACA,IACA,EACA,KAEAC,qBAAA,CACA,IACA,EACA,IAEAC,wBAAA,CACA,IACA,EACA,IAEAC,kBAAA,CACA,IACA,EACA,IAEAC,qBAAA,CACA,IACA,EACA,IAEAC,uBAAA,CACA,IACA,EACA,IAEAC,0BAAA,CACA,IACA,EACA,IAEAC,sBAAA,CACA,IACA,EACA,IAEAC,yBAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,KAEAC,iCAAA,CACA,IACA,EACA,KAEAC,iCAAA,CACA,IACA,EACA,KAEAC,iCAAA,CACA,IACA,EACA,KAEAC,iCAAA,CACA,IACA,EACA,KAEAC,kCAAA,CACA,IACA,EACA,KAEAC,iDAAA,CACA,IACA,EACA,KAEAC,+CAAA,CACA,IACA,EACA,KAEAC,iDAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,uDAAA,CACA,IACA,EACA,KAEAC,uDAAA,CACA,IACA,EACA,KAEAC,4BAAA,CACA,IACA,EACA,EACA,EACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,EACA,EACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,EACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,EACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,oCAAA,CACA,IACA,EACA,EACA,IAEAC,uCAAA,CACA,IACA,EACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,yBAAA,CACA,IACA,EACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,oCAAA,CACA,IACA,EACA,IAEAC,uCAAA,CACA,IACA,EACA,IAEAC,4CAAA,CACA,IACA,EACA,IAEAC,+CAAA,CACA,IACA,EACA,IAEAC,gCAAA,CACA,IACA,EACA,IAEAC,mCAAA,CACA,IACA,EACA,IAEAC,kCAAA,CACA,IACA,EACA,IAEAC,qCAAA,CACA,IACA,EACA,IAEAC,gCAAA,CACA,IACA,EACA,IAEAC,mCAAA,CACA,IACA,EACA,IAEAC,6BAAA,CACA,IACA,EACA,IAEAC,gCAAA,CACA,IACA,EACA,IAEAC,kCAAA,CACA,IACA,EACA,IAEAC,qCAAA,CACA,IACA,EACA,IAEAC,wBAAA,CACA,IACA,EACA,IAEAC,2BAAA,CACA,IACA,EACA,IAEAC,4CAAA,CACA,IACA,EACA,KAEAC,4CAAA,CACA,IACA,EACA,KAEAC,4CAAA,CACA,IACA,EACA,KAEAC,4CAAA,CACA,IACA,EACA,KAEAC,qCAAA,CACA,IACA,EACA,KAEAC,qCAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,0BAAA,CACA,IACA,EACA,IAEAC,6BAAA,CACA,IACA,EACA,IAEAC,sCAAA,CACA,IACA,EACA,IAEAC,yCAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,4CAAA,CACA,IACA,EACA,KAEAC,wCAAA,CACA,IACA,EACA,IAEAC,2CAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,8CAAA,CACA,IACA,EACA,KAEAC,8CAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,0BAAA,CACA,IACA,EACA,IAEAC,6BAAA,CACA,IACA,EACA,IAEAC,oEAAA,CACA,IACA,EACA,IAEAC,uEAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,sCAAA,CACA,IACA,EACA,IAEAC,yCAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,EACA,EACA,EACA,GACA,IAEAC,+BAAA,CACA,IACA,EACA,EACA,EACA,EACA,GACA,IAEAC,8CAAA,CACA,IACA,EACA,KAEAC,8CAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,qDAAA,CACA,IACA,EACA,KAEAC,oDAAA,CACA,IACA,EACA,KAEAC,oCAAA,CACA,IACA,EACA,GACA,IAEAC,uCAAA,CACA,IACA,EACA,GACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,oCAAA,CACA,IACA,EACA,IAEAC,yBAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,IAEAC,kDAAA,CACA,IACA,EACA,IAEAC,qDAAA,CACA,IACA,EACA,IAEAC,2DAAA,CACA,IACA,EACA,KAEAC,2DAAA,CACA,IACA,EACA,KAEAC,kEAAA,CACA,IACA,EACA,KAEAC,kEAAA,CACA,IACA,EACA,KAEAC,kEAAA,CACA,IACA,EACA,KAEAC,kEAAA,CACA,IACA,EACA,KAEAC,gCAAA,CACA,IACA,EACA,IAEAC,mCAAA,CACA,IACA,EACA,IAEAC,gCAAA,CACA,IACA,EACA,IAEAC,mCAAA,CACA,IACA,EACA,IAEAC,kDAAA,CACA,IACA,EACA,KAEAC,kDAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,wCAAA,CACA,IACA,EACA,IAEAC,2CAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,gCAAA,CACA,IACA,EACA,KAEAC,mCAAA,CACA,IACA,EACA,KAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,2BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,gCAAA,CACA,IACA,EACA,IAEAC,mCAAA,CACA,IACA,EACA,IAEAC,wBAAA,CACA,IACA,EACA,IAEAC,2BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,sBAAA,CACA,IACA,GAEAC,yBAAA,CACA,IACA,GAEAC,kBAAA,CACA,IACA,GAEAC,qBAAA,CACA,IACA,GAEAC,2BAAA,CACA,GACA,GAEAC,8BAAA,CACA,GACA,GAEAC,kBAAA,CACA,GACA,GAEAC,qBAAA,CACA,GACA,GAEAC,mBAAA,CACA,GACA,GAEAC,sBAAA,CACA,GACA,GA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","file":"static/js/main.a06ae67d.chunk.js","sourcesContent":["/**\n * Saga mode constants\n *\n * DAEMON (default)- stats a saga on component mount and never cancels it or starts again\n * RESTART_ON_REMOUNT - stats a saga when a component is being mounted and cancels with `task.cancel()` on component un-mount for improved performance.\n * ONCE_TILL_UNMOUNT - behaves like `RESTART_ON_REMOUNT` but never runs the saga again.\n *\n * Usage in a container:\n * import { DAEMON } from '../../utils/core/constants'; // Saga mode definition // _platform\n * import injectSaga from '../../utils/injectSaga'; // _platform\n * import saga from './saga';\n *\n * const withSaga = injectSaga({ key: 'app', saga, mode: DAEMON }); // mode is the optional argument\n *\n * export default compose(withSaga)(ContainerName);\n */\n\nexport const DAEMON = '@@saga-injector/daemon';\nexport const RESTART_ON_REMOUNT = '@@saga-injector/restart-on-remount';\nexport const ONCE_TILL_UNMOUNT = '@@saga-injector/once-till-unmount';\n","/**\n * As there is no global routes definition file and the routes are component-based\n * We need a way to cancel/eject sagas to maintain application performance\n * Inevitably users will navigate away from a page (component) before the response was received\n */\n\nimport isEmpty from 'lodash/isEmpty';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport invariant from 'invariant';\nimport conformsTo from 'lodash/conformsTo';\n\nimport checkStore from './checkStore';\nimport { DAEMON, ONCE_TILL_UNMOUNT, RESTART_ON_REMOUNT } from './constants';\n\n// Define allowed modes for sagas\nconst allowedModes = [DAEMON, ONCE_TILL_UNMOUNT, RESTART_ON_REMOUNT];\n\nconst checkKey = key =>\n invariant(\n isString(key) && !isEmpty(key),\n '(platform/utils...) injectSaga: Expected `key` to be a non empty string'\n );\n\nconst checkDescriptor = descriptor => {\n const shape = {\n saga: isFunction,\n mode: mode => isString(mode) && allowedModes.includes(mode),\n };\n invariant(\n conformsTo(descriptor, shape),\n '(platform/utils...) injectSaga: Expected a valid saga descriptor'\n );\n};\n\nexport function injectSagaFactory(store, isValid) {\n return function injectSaga(key, descriptor = {}, args) {\n if (!isValid) checkStore(store);\n\n const newDescriptor = {\n ...descriptor,\n mode: descriptor.mode || DAEMON,\n };\n const { saga, mode } = newDescriptor;\n\n checkKey(key);\n checkDescriptor(newDescriptor);\n\n let hasSaga = Reflect.has(store.injectedSagas, key);\n\n if (process.env.NODE_ENV !== 'production') {\n const oldDescriptor = store.injectedSagas[key];\n // enable hot reloading of daemon and once-till-unmount sagas\n if (hasSaga && oldDescriptor.saga !== saga) {\n oldDescriptor.task.cancel();\n hasSaga = false;\n }\n }\n\n if (\n !hasSaga ||\n (hasSaga && mode !== DAEMON && mode !== ONCE_TILL_UNMOUNT)\n ) {\n store.injectedSagas[key] = {\n ...newDescriptor,\n task: store.runSaga(saga, args),\n }; // eslint-disable-line no-param-reassign\n }\n };\n}\n\nexport function ejectSagaFactory(store, isValid) {\n return function ejectSaga(key) {\n if (!isValid) checkStore(store);\n\n checkKey(key);\n\n if (Reflect.has(store.injectedSagas, key)) {\n const descriptor = store.injectedSagas[key];\n if (descriptor.mode && descriptor.mode !== DAEMON) {\n descriptor.task.cancel();\n // Clean up in production; in development we need `descriptor.saga` for hot reloading\n if (process.env.NODE_ENV === 'production') {\n // Need some value to be able to detect `ONCE_TILL_UNMOUNT` sagas in `injectSaga`\n store.injectedSagas[key] = 'done'; // eslint-disable-line no-param-reassign\n }\n }\n }\n };\n}\n\nexport default function getInjectors(store) {\n checkStore(store);\n\n return {\n injectSaga: injectSagaFactory(store, true),\n ejectSaga: ejectSagaFactory(store, true),\n };\n}\n","import React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { ReactReduxContext } from 'react-redux';\n\nimport getInjectors from './core/sagaInjectors';\n\n/**\n * Dynamically injects a saga, passes component's props as saga arguments\n *\n * @param {string} key A key of the saga\n * @param {function} saga A root saga that will be injected\n * @param {string} [mode] an option below:\n * - constants.DAEMON (default) — starts the saga on component mount and never cancels it or starts again,\n * - constants.RESTART_ON_REMOUNT - starts a saga when a component is being mounted and cancels\n * with `task.cancel()` on component unmount for improved performance,\n * - constants.ONCE_TILL_UNMOUNT — behaves like 'RESTART_ON_REMOUNT' but never runs the saga again.\n *\n */\nexport default ({ key, saga, mode }) => WrappedComponent => {\n class InjectSaga extends React.Component {\n static WrappedComponent = WrappedComponent;\n static contextType = ReactReduxContext;\n static displayName = `withSaga(${WrappedComponent.displayName ||\n WrappedComponent.name ||\n 'Component'})`;\n\n constructor(props, context) {\n super(props, context);\n\n this.injectors = getInjectors(context.store);\n this.injectors.injectSaga(key, { saga, mode }, this.props);\n }\n\n componentWillUnmount() {\n this.injectors.ejectSaga(key);\n }\n\n render() {\n return ;\n }\n }\n\n return hoistNonReactStatics(InjectSaga, WrappedComponent);\n};\n\nconst useInjectSaga = ({ key, saga, mode }) => {\n const context = React.useContext(ReactReduxContext);\n React.useEffect(() => {\n const injectors = getInjectors(context.store);\n injectors.injectSaga(key, { saga, mode });\n\n return () => {\n injectors.ejectSaga(key);\n };\n }, [context.store, key, mode, saga]);\n};\n\nexport { useInjectSaga };\n","/**\n * Redux action types\n *\n * Prefix with the Boilerplate/Project and component names to avoid collisions.\n * Eg:\n * export const COUNTRIES_REQUEST = 'platform/App/COUNTRIES_REQUEST';\n */\n\nexport const COUNTRIES_REQUEST = 'platform/App/COUNTRIES_REQUEST';\nexport const COUNTRIES_SUCCESS = 'platform/App/COUNTRIES_SUCCESS';\nexport const COUNTRIES_ERROR = 'platform/App/COUNTRIES_ERROR';\nexport const SET_USER = 'platform/App/SET_USER';\nexport const USER_LOGOUT_REQUEST = 'platform/App/USER_LOGOUT_REQUEST';\nexport const USER_PROFILE_REQUEST = 'platform/App/USER_PROFILE_REQUEST';\nexport const USER_PROFILE_SUCCESS = 'platform/App/USER_PROFILE_SUCCESS';\nexport const USER_PROFILE_ERROR = 'platform/App/USER_PROFILE_ERROR';\nexport const USER_TOKEN_REQUEST = 'platform/App/USER_TOKEN_REQUEST';\nexport const USER_TOKEN_SUCCESS = 'platform/App/USER_TOKEN_SUCCESS';\nexport const USER_TOKEN_ERROR = 'platform/App/USER_TOKEN_ERROR';\n","import qs from 'qs';\nimport history from './history'; // _platform\n\n/**\n * getLoginPath\n *\n * Generate the path and query string (returnUrl) for the login page, in order\n * to return the user to the page from which they came.\n *\n * Important: Always return an object, as quick re-renders cause string-based\n * history.push calls to have the entire path stored in history.location.pathname\n * which leaves history.location.search blank.\n *\n * @returns object (https://reacttraining.com/react-router/web/api/Redirect/to-object)\n */\nexport default function getLoginPath(settingsApp) {\n const { pathname, search } = history.location;\n const { loginPagePath, logoutPagePath } = settingsApp;\n\n const queryString = qs.parse(search.replace(/returnUrl/gi, 'returnUrl'), {\n ignoreQueryPrefix: true,\n });\n\n // If settingsApp values are unavailable and the returnUrl value already exists, keep it\n if (!loginPagePath && !logoutPagePath && queryString.returnUrl) {\n return undefined;\n }\n\n if (\n pathname === '/' ||\n pathname === loginPagePath ||\n pathname === logoutPagePath ||\n pathname === `${logoutPagePath}/`\n ) {\n // Check if qs exists, pass it along.\n const returnQueryString =\n search !== '' ? `?${qs.stringify(queryString)}` : '';\n\n return { pathname: loginPagePath, search: returnQueryString };\n }\n\n if (\n search === '' ||\n (queryString.returnUrl &&\n queryString.returnUrl !== pathname &&\n Object.keys(queryString).length === 1)\n ) {\n // No query string or the path is not loginPagePath\n const returnQueryString = qs.stringify({ returnUrl: pathname });\n\n return { pathname: loginPagePath, search: `?${returnQueryString}` };\n }\n\n // search is not empty, update it with the returnUrl\n const queryStringUpdated = qs.stringify({\n ...queryString,\n returnUrl: pathname,\n });\n\n return {\n pathname: loginPagePath,\n search: `?${queryStringUpdated}`,\n };\n}\n","/**\n * WebApp saga\n */\n\nimport { all, call, delay, put, takeLatest } from 'redux-saga/effects';\nimport { showLoading, hideLoading } from 'react-redux-loading-bar';\nimport slugify from '_platform/src/utils/simpleSlugify';\nimport toast from '_platform/src/utils/toast';\nimport { api, apiErrorHandler } from '_platform/src/utils/request';\nimport { flattenDeepArrayOfObjects } from '_platform/src/utils/utilities';\nimport { USER_LOGOUT_REQUEST } from '_platform/src/containers/App/constants';\nimport {\n CART_REQUEST,\n CUSTOMER_REPS_REQUEST,\n MENU_REQUEST,\n SETTINGS_REQUEST,\n WISHLIST_REQUEST,\n WISHLIST_ADDREMOVE_REQUEST,\n} from './constants';\nimport {\n cartSuccess,\n cartError,\n customerRepsSuccess,\n customerRepsError,\n menuSuccess,\n menuError,\n menuUpdateRoutes,\n menuRequest,\n settingsSuccess,\n settingsError,\n userLogoutClearUserData,\n wishlistRequest,\n wishlistSuccess,\n wishlistError,\n} from './actions';\n\n/**\n * Request Cart\n */\nexport function* requestCart() {\n try {\n yield put(showLoading());\n\n const response = yield call(() =>\n api.get('/Cart/v1', {\n description: 'Cart',\n })\n );\n\n yield put(\n cartSuccess(\n (response.data &&\n response.data.cartRewards &&\n response.data.cartRewards.length > 0 && {\n ...response.data,\n cartRewards: response.data.cartRewards.map(reward => ({\n ...reward,\n // Must match RewardsProvider `requestRewards` saga\n slug: slugify(`${reward.rewardCode}-${reward.rewardId}`),\n })),\n }) ||\n response.data\n )\n );\n } catch (err) {\n const error = apiErrorHandler(err);\n\n if (error.status === 401) {\n yield put(cartError(error));\n }\n } finally {\n yield put(hideLoading());\n }\n}\n\n/**\n * Request Customer Reps\n */\nexport function* requestCustomerReps() {\n try {\n yield put(showLoading());\n\n const response = yield call(() =>\n api.get('/Customer/v1/Representatives', {\n description: 'Customer Representatives',\n })\n );\n\n yield put(\n customerRepsSuccess(response.data, Math.floor(Date.now() / 1000))\n );\n } catch (err) {\n const error = apiErrorHandler(err);\n\n if (error.status === 401) {\n yield put(customerRepsError(error));\n }\n } finally {\n yield put(hideLoading());\n }\n}\n\n/**\n * Request Menu\n */\nexport function* requestMenu() {\n try {\n yield put(showLoading());\n\n const response = yield call(() =>\n api.get('/Menu/v1', {\n description: 'Menu',\n })\n );\n\n yield put(menuSuccess(response.data));\n\n // Routes\n const routes =\n response.data && response.data.length > 0\n ? flattenDeepArrayOfObjects(response.data, 'children')\n : null;\n\n yield put(menuUpdateRoutes(routes));\n\n if (routes) {\n localStorage.setItem('routes', JSON.stringify(routes));\n } else {\n localStorage.removeItem('routes');\n }\n } catch (err) {\n const error = apiErrorHandler(err);\n\n if (error.status === 401) {\n yield put(menuError(error));\n }\n } finally {\n yield put(hideLoading());\n }\n}\n\n/**\n * Request Settings\n */\nexport function* requestSettings() {\n try {\n yield put(showLoading());\n\n const [claimingPeriods, program, unitsOfMeasure] = yield all([\n call(() =>\n api.get('/ClaimingPeriod/v1', {\n description: 'Claiming Period',\n })\n ),\n call(() =>\n api.get('/Program/v1', {\n description: 'Program Settings',\n })\n ),\n call(() =>\n api.get('/UnitOfMeasure/v1', {\n description: 'Units of measure',\n })\n ),\n ]);\n\n yield put(\n settingsSuccess(\n {\n claimingPeriods: claimingPeriods.data.map(item => ({\n ...item,\n dateStartsUser: new Date(item.dateStartsUtc),\n dateEndsUser: new Date(item.dateEndsUtc),\n })),\n program: program.data,\n unitsOfMeasure: unitsOfMeasure.data,\n },\n Math.floor(Date.now() / 1000)\n )\n );\n } catch (err) {\n const error = apiErrorHandler(err);\n\n if (error.status === 401) {\n yield put(settingsError(error));\n } else {\n yield call(\n toast,\n 'error',\n 'There was a problem retrieving site settings'\n );\n }\n } finally {\n yield put(hideLoading());\n }\n}\n\n/**\n * Request Wishlist\n */\nexport function* requestWishlist() {\n try {\n yield put(showLoading());\n\n const response = yield call(() =>\n api.get('/Wishlist/v1', {\n description: 'Wishlist',\n })\n );\n\n yield put(\n wishlistSuccess(\n response.data && response.data.length > 0\n ? response.data.map(reward => ({\n ...reward,\n // Must match RewardsProvider `requestRewards` saga\n slug: slugify(`${reward.rewardCode}-${reward.rewardId}`),\n }))\n : response.data\n )\n );\n } catch (err) {\n const error = apiErrorHandler(err);\n\n if (error.status === 401) {\n yield put(wishlistError(error));\n }\n } finally {\n yield put(hideLoading());\n }\n}\n\n/**\n * Request wishlist add/remove\n *\n * @param {object} values The action (add/remove) and reward properties\n */\nexport function* requestWishlistAddRemove(values) {\n const payload = values.values;\n\n try {\n yield put(showLoading());\n\n // eslint-disable-next-line no-unused-vars\n const response =\n values.action.toLowerCase() === 'add'\n ? yield call(() =>\n api.post('/Wishlist/v1/Add', payload, {\n description: 'Add reward to wishlist',\n })\n )\n : yield call(() =>\n api.delete(\n `/Wishlist/v1/Remove/${values.values.wishlistId}`,\n undefined,\n { description: 'Remove reward from wishlist' }\n )\n );\n\n // Refresh the wishlist\n yield put(wishlistRequest());\n } catch (err) {\n const action =\n values.action.toLowerCase() === 'add' ? 'Adding' : 'Removing';\n\n yield call(\n toast,\n 'error',\n `There was a problem ${action.toLowerCase()} the reward ${\n action === 'Adding' ? 'to' : 'from'\n } wishlist`\n );\n\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n `Dev: ${action} reward to wishlist '${apiErrorHandler(err).message}'`\n );\n }\n } finally {\n yield put(hideLoading());\n }\n}\n\n/**\n * User Logout Listener\n */\nexport function* userLogoutListener() {\n try {\n yield localStorage.removeItem('routes');\n\n yield delay(200);\n yield put(userLogoutClearUserData());\n yield put(menuRequest(true));\n } catch (err) {\n // console.warn('Error:', err);\n }\n}\n\n/**\n * Default saga managers the watcher lifecycle\n */\nexport default function* rootSaga() {\n // Specify the constant to watch and the saga generator function to call when one is triggered\n // It returns a task descriptor (just like a fork) so we can continue execution, and will be\n // automatically cancelled on unmount (unless the mode is set to DAEMON)\n // Specify as many yields (watchers) here as necessary\n yield takeLatest(CART_REQUEST, requestCart);\n yield takeLatest(CUSTOMER_REPS_REQUEST, requestCustomerReps);\n yield takeLatest(MENU_REQUEST, requestMenu);\n yield takeLatest(SETTINGS_REQUEST, requestSettings);\n yield takeLatest(WISHLIST_REQUEST, requestWishlist);\n yield takeLatest(WISHLIST_ADDREMOVE_REQUEST, requestWishlistAddRemove);\n yield takeLatest(USER_LOGOUT_REQUEST, userLogoutListener);\n}\n","/**\n * Lori Footer\n */\n\nimport React from 'react';\nimport { styled } from '@smooth-ui/core-sc';\n\nconst StyledLoriFooter = styled.div`\n background: linear-gradient(152deg, #d2232a 60%, #a5181c 100%);\n color: #fff;\n flex-shrink: 0;\n font-size: 14px;\n padding: 0.5em;\n text-align: center;\n width: 100%;\n\n a {\n color: #fff;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n`;\n\nconst LoriFooter = () => (\n \n Powered by LoRI from{' '}\n \n 212f Labs\n \n \n);\n\nexport default LoriFooter;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Route, Redirect } from 'react-router-dom';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\n\n// Style, SEO and settings\nimport { withTheme } from '@smooth-ui/core-sc';\n\nimport getLoginPath from './getLoginPath'; // _platform\nimport {\n selectCurrentUser,\n selectCurrentUserTemp,\n} from '../containers/App/selectors'; // _platform\n\n/**\n * Private Route - HoC for react-router Route component\n *\n * TODO: Extend this component to handle granular permissions\n * TODO: Extend with prop to supply function to determine permission `verifyFn` similar to LoadAsync\n *\n * @param {object} { component, user, tempAuthAllowed, ...rest }\n * user prop can be either currentUser or currentUserTemp, depending on what the parent component determines is applicable\n */\nclass PrivateRoute extends Component {\n render() {\n // Spread the rest this.props in order to avoid passing both `component` and `render` to Route component\n const { component: Component, user, tempAuthAllowed, ...rest } = this.props;\n const { currentUser, currentUserTemp } = this.props;\n\n // Determine which user object to use\n // 1. Use `user` prop if supplied\n // 2. If `tempAuthAllowed` prop:\n // 1. Is true: use `currentUserTemp` if available, if not use currentUser\n // 3. Is false: use currentUser\n //\n // Check for user.token and currentUserTemp.token to ensure they're not the\n // default empty objects. Cleaner than using Object.keys\n let userObject = {};\n if (user && user.token) {\n userObject = user;\n } else if (tempAuthAllowed && currentUserTemp && currentUserTemp.token) {\n userObject = currentUserTemp;\n } else {\n userObject = currentUser;\n }\n\n return (\n \n !!userObject.token ? (\n \n ) : (\n \n )\n }\n />\n );\n }\n}\n\nPrivateRoute.propTypes = {\n component: PropTypes.func.isRequired,\n currentUser: PropTypes.object.isRequired,\n currentUserTemp: PropTypes.object.isRequired,\n tempAuthAllowed: PropTypes.bool,\n theme: PropTypes.object,\n user: PropTypes.object,\n};\n\nPrivateRoute.defaultProps = {\n user: {},\n tempAuthAllowed: false,\n theme: { settingsApp: {} },\n};\n\nconst mapStateToProps = createStructuredSelector({\n currentUser: selectCurrentUser(),\n currentUserTemp: selectCurrentUserTemp(),\n});\n\nconst withConnect = connect(\n mapStateToProps,\n null\n);\n\nexport default compose(\n withTheme,\n withConnect\n)(PrivateRoute);\n","/**\n * WebApp - Routes\n */\n\n// Core imports\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Switch, Redirect, Route } from 'react-router-dom';\n\n// Routes\nimport LoadAsync from '_platform/src/utils/LoadAsync';\nimport PrivateRoute from '_platform/src/utils/PrivateRoute';\n\nconst Routes = ({ routes, theme }) => {\n return (\n \n \n import(\n /* webpackChunkName: \"homepage\" */ 'containers/HomePage/HomePage'\n )\n )}\n />\n \n import(\n /* webpackChunkName: \"loginPage\" */ 'containers/LoginPage/LoginPage'\n )\n )}\n />\n {theme.settingsApp.passwordResetEnabled && (\n \n import(\n /* webpackChunkName: \"passwordResetPage\" */ 'containers/PasswordResetPage/PasswordResetPage'\n )\n )}\n />\n )}\n \n import(\n /* webpackChunkName: \"logout\" */ 'containers/LogoutPage/LogoutPage'\n )\n )}\n />\n {theme.settingsApp.mobileAppSSOEnabled ? (\n \n import(\n /* webpackChunkName: \"mobileAppSSOPage\" */ 'containers/MobileAppSSOPage/MobileAppSSOPage'\n )\n )}\n />\n ) : (\n \n \n \n )}\n {routes &&\n routes.map(\n route =>\n // Map the route if it has a component\n // The user has access to any routes specified, so no need to use\n // PrivateRoute as that would restrict access to anonymous routes.\n // Protect content within the container with PrivateComponent\n // On logout, we request the menu/routes to be updated.\n !!route.component && (\n \n import(`containers/${route.component}`)\n )}\n />\n )\n )}\n \n import(\n /* webpackChunkName: \"notNound\" */ 'containers/NotFoundPage/NotFoundPage'\n )\n )}\n />\n \n );\n};\n\nRoutes.propTypes = {\n routes: PropTypes.array,\n theme: PropTypes.object,\n};\n\nRoutes.defaultProps = {\n routes: undefined,\n theme: { settingsApp: {} },\n};\n\nexport default Routes;\n","/**\n * Combine all reducers and export the combined reducers\n */\n\nimport { combineReducers } from 'redux';\nimport { loadingBarReducer } from 'react-redux-loading-bar';\nimport globalReducer from '../../containers/App/reducer'; // _platform\n\nexport default function createReducer(injectedReducers) {\n return combineReducers({\n // router: routeReducer,\n loadingBar: loadingBarReducer,\n global: globalReducer,\n ...injectedReducers,\n });\n}\n","/**\n * AppReducer\n *\n * This is the global app reducer\n */\n\nimport {\n COUNTRIES_REQUEST,\n COUNTRIES_SUCCESS,\n COUNTRIES_ERROR,\n SET_USER,\n USER_LOGOUT_REQUEST,\n USER_PROFILE_REQUEST,\n USER_PROFILE_SUCCESS,\n USER_PROFILE_ERROR,\n USER_TOKEN_REQUEST,\n USER_TOKEN_SUCCESS,\n USER_TOKEN_ERROR,\n} from './constants';\n\nimport { retrieveToken } from '../../utils/tokenUtils'; // _platform\n\nexport const initialState = {\n countries: undefined,\n currentUser: retrieveToken() || {},\n currentUserTemp: {}, // Used for incomplete profiles\n isFetchingToken: false,\n profileDetails: undefined,\n status: undefined,\n statusDetails: {},\n userOptions: {},\n};\n\nfunction appReducer(state = initialState, action) {\n switch (action.type) {\n case COUNTRIES_REQUEST:\n return {\n ...state,\n countries: {},\n status: 'loading',\n statusDetails: {},\n };\n case COUNTRIES_SUCCESS:\n return {\n ...state,\n countries: {\n data: action.response,\n lastUpdated: action.lastUpdated,\n },\n status: null,\n };\n case COUNTRIES_ERROR:\n case USER_PROFILE_ERROR:\n return {\n ...state,\n status: 'error',\n statusDetails: action.error,\n };\n case SET_USER: {\n if (\n !action.options ||\n (action.options.isProfileValid === true &&\n action.options.forcePasswordChange === false)\n ) {\n return {\n ...state,\n currentUser: action.details,\n currentUserTemp: initialState.currentUserTemp, // Return the temp value to initial state\n status: null,\n statusDetails: {},\n userOptions: {},\n };\n }\n\n // For incomplete profiles: set the temporary currentUser value to ensure we don't\n // accidentally give full access to the user. Only certain modules should be checking\n // this value - eg, Login and Profile - to display forms/submit profile update info\n return {\n ...state,\n currentUserTemp: action.details,\n status: null,\n statusDetails: {},\n userOptions: action.options || {},\n };\n }\n case USER_LOGOUT_REQUEST:\n // Clear all state, reuturn to initialState and make sure the currentUser is reset\n return {\n ...initialState,\n currentUser: {},\n };\n case USER_PROFILE_REQUEST:\n if (state.profileDetails) {\n // If we already have profile details, refresh. Do not destructure to save a re-render\n return state;\n }\n\n return {\n ...state,\n profileDetails: {},\n status: 'loading',\n statusDetails: {},\n };\n case USER_PROFILE_SUCCESS:\n return {\n ...state,\n profileDetails: {\n data: action.response,\n lastUpdated: action.lastUpdated,\n },\n status: null,\n };\n case USER_TOKEN_REQUEST: {\n return {\n ...state,\n isFetchingToken: true,\n userOptions: {},\n };\n }\n case USER_TOKEN_SUCCESS:\n case USER_TOKEN_ERROR:\n return {\n ...state,\n isFetchingToken: false,\n };\n default:\n return state;\n }\n}\n\nexport default appReducer;\n","/**\n * Wrapper for react-toastify\n */\nimport { toast as toastify } from 'react-toastify';\n\nconst toast = (type, message, options = {}) => {\n if (!message) return false;\n const toastType = !type || type === '' ? 'default' : type;\n const toastOptions = {\n ...options,\n type: toastType,\n autoClose: type === 'error' ? 6000 : options.autoClose,\n };\n\n return toastify(message, toastOptions);\n};\n\nexport default toast;\n","/**\n * Simple Slugify\n *\n * Replacing `@sindresorhus/slugify` with this method as we only need a simple slug solution (we control the slug input)\n * Reason to move away from slugify is that it requires `String#normalize` which is no longer included in `core-js`\n * and the alternative `unorm` is 34KB gzipped\n * https://github.com/zloirock/core-js/blob/16dc3b2adac4e6419d7d69bf6e5020808ec94864/README.md#missing-polyfills\n *\n * Inspiration: https://gist.github.com/mathewbyrne/1280286\n *\n * @param {string} text The string to be slugified\n * @returns {string} Slugified text\n */\nexport default function simpleSlugify(text) {\n return text\n .toString()\n .toLowerCase()\n .trim()\n .replace(/&/g, '-and-') // Replace & with 'and'\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(/[^\\w\\s-]/g, '') // remove non-word [a-z0-9_], non-whitespace, non-hyphen characters\n .replace(/[\\s_-]+/g, '-') // swap any length of whitespace, underscore, hyphen characters with a single -\n .replace(/^-+/, '') // Trim - from start of text\n .replace(/-+$/, ''); // Trim - from end of text\n}\n","/**\n * API Requests\n */\nimport axios from 'axios';\nimport store from './store'; // _platform\n\nimport { userLogoutRequest } from '../containers/App/actions'; // _platform\n\n// Take the API Host value from environment variables\nconst apiHost = process.env.REACT_APP_API_HOST || '';\n\n// Set axios defaults\naxios.defaults.headers.post['Content-Type'] = 'application/json';\n\n// Create a custom axios instance\nexport const api = axios.create({\n baseURL: `${apiHost}/api`,\n // timeout: 2000,\n});\n\n/**\n * Interceptors\n *\n * If the server returns 401, it's too late - cannot refresh the token.\n * Log the user out, and remove the token from storage.\n */\n\n// Response interceptor\napi.interceptors.response.use(\n response => response,\n error => {\n if (error.response && error.response.status === 401) {\n // userLogoutRequest - skip remote API call to /Logout as the authentication has already failed (status 401)\n const requestData =\n error.response.config.url.indexOf('RefreshToken') !== -1\n ? JSON.parse(error.response.config.data)\n : {};\n\n store.dispatch(\n userLogoutRequest({\n skipRemote: true,\n settingsApp: requestData.settingsApp,\n })\n );\n }\n return Promise.reject(error);\n }\n);\n\n/**\n * Set Authorization Token on the axios instance to be used on every call\n * if the user is logged in.\n *\n * Note: do not use api.defaults.headers.common... as that will impact all instances.\n *\n * @param {string} token User's token\n */\nexport function apiSetAuthorizationToken(token) {\n if (token) {\n api.defaults.headers['Authorization'] = `Bearer ${token}`;\n } else {\n delete api.defaults.headers['Authorization'];\n }\n}\n\n/**\n * apiErrorHandler - Format errors to be stored in state\n *\n * @param {Error} error\n * @returns {object}\n */\nexport function apiErrorHandler(error) {\n if (error.response) {\n // Server responded with a status code not in 2xx range\n return {\n title: error.config.description,\n message:\n (error.response.data && error.response.data.message) ||\n (error.response.data && error.response.data.title) ||\n error.response.statusText ||\n (typeof error.response.data === 'string' && error.response.data) || // If data is blank, it returns a falsy value\n (error.response.data === '' &&\n `Could not access ${error.config.description}`),\n messageDetails: error.message,\n status: error.response.status,\n // apiHeaders: error.response.headers,\n };\n }\n\n if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest\n return {\n title: error.config.description,\n message: 'There was a problem retrieving data',\n messageDetails: error.message,\n };\n }\n\n // All other errors\n return {\n title: error.title || (error.config && error.config.description) || null,\n message: error.message,\n };\n}\n","import { css, thd } from '@smooth-ui/core-sc';\n\nconst globalStyles = css`\n * {\n box-sizing: border-box;\n }\n\n html {\n height: 100%;\n overflow-x: hidden;\n }\n\n body {\n color: ${thd('defaultFontColor', '#333')};\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto',\n 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',\n 'Helvetica Neue', sans-serif;\n height: 100%;\n line-height: 1.25;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n #root {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n min-width: 100%;\n overflow-x: hidden;\n }\n\n code {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n }\n\n img {\n max-width: 100%;\n }\n\n hr {\n border: 0;\n border-top: 1px solid ${thd('gray300', '#dee2e6')};\n margin-bottom: 1.5rem;\n margin-top: 1.5rem;\n }\n\n [disabled] {\n background-color: #ededed;\n }\n\n ::-webkit-input-placeholder {\n color: inherit;\n opacity: 0.54;\n }\n\n :focus {\n outline: none;\n box-shadow: 0 0 0 0.2rem rgba(51, 102, 153, 0.25) inset; /* #369 */\n }\n\n /* react-day-picker resets */\n .DayPickerInput.DayPickerInput {\n display: block;\n }\n\n /* video embeds */\n .embed-responsive {\n display: block;\n overflow: hidden;\n padding-top: 56.25%;\n position: relative;\n width: 100%;\n\n > iframe {\n border: 0;\n bottom: 0;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n }\n }\n`;\n\nexport default globalStyles;\n","/**\n * Global Styles - App\n *\n * Any global styles overrides or additional styles can be included in this file\n */\nimport React from 'react';\nimport {\n createGlobalStyle,\n Normalize,\n thd,\n down,\n css,\n} from '@smooth-ui/core-sc';\nimport loriGlobalStyles from '_platform/src/theme/globalStyles';\n\nexport const GlobalStylesApp = createGlobalStyle`\n ${loriGlobalStyles}\n\n body {\n font-family: Arial, Helvetica Neue, Helvetica, sans-serif;\n line-height: 1.6;\n color: #fff;\n background-color: #000;\n }\n\n /* Custom CSS here */\n h1 {\n font-size: 80px;\n font-weight: bold;\n\n ${down(\n 'lg',\n css`\n font-size: 66px;\n `\n )};\n }\n\n h2 {\n font-size: 60px;\n font-weight: bold;\n }\n\n h3 {\n font-size: 40px;\n font-weight: bold;\n }\n\n h4 {\n font-size: 30px;\n font-weight: bold;\n }\n\n /* Don't wrap emails, phones or other non-wrapping strings */\n .nowrap,\n .date,\n .email,\n .phone {\n white-space: nowrap;\n }\n\n /* Color text */\n .text--red {\n color: ${thd('danger', '#dc3545')};\n }\n\n .text--white {\n color: #fff;\n }\n\n .text--primary {\n color: ${thd('primary', '#867455')};\n }\n\n /* Align text */\n .text-center,\n .text-centre,\n .text--center,\n .text--centre {\n text-align: center;\n }\n .text-right,\n .text--right {\n text-align: right;\n }\n .text-left,\n .text--left {\n text-align: left;\n }\n\n .text-small,\n .text--small {\n font-size: 80%;\n }\n\n .text-large,\n .text--large {\n font-size: 120%;\n }\n\n .text-larger,\n .text--larger {\n font-size: 200%;\n }\n\n .text-normal,\n .text--normal {\n font-weight: normal;\n }\n .text-uppercase,\n .text--uppercase {\n text-transform: uppercase;\n }\n\n .text--tight {\n margin-bottom: 0;\n margin-top: 0;\n padding-bottom: 0;\n padding-top: 0;\n }\n\n /* Handy spacing classes */\n :root {\n --spacer: 2rem;\n }\n\n .spacer {\n padding-bottom: 40px;\n padding-top: 40px;\n padding-bottom: var(--spacer);\n padding-top: var(--spacer);\n }\n .spacer--small {\n padding-bottom: 20px;\n padding-top: 20px;\n padding-bottom: calc(var(--spacer) / 2);\n padding-top: calc(var(--spacer) / 2);\n }\n .spacer--large {\n padding-bottom: 80px;\n padding-top: 80px;\n padding-bottom: calc(var(--spacer) * 2);\n padding-top: calc(var(--spacer) * 2);\n }\n .spacer--around {\n padding: 40px;\n padding: var(--spacer);\n }\n .spacer--around--small {\n padding: 20px;\n padding: calc(var(--spacer) / 2);\n }\n .spacer--around--large {\n padding: 80px;\n padding: calc(var(--spacer) * 2);\n }\n .spacer--top {\n padding-top: 40px;\n padding-top: var(--spacer);\n }\n .spacer--bottom {\n padding-bottom: 40px;\n padding-bottom: var(--spacer);\n }\n .spacer--top--small,\n .spacer--small--top {\n padding-top: 20px;\n padding-top: calc(var(--spacer) / 2);\n }\n .spacer--bottom--small,\n .spacer--small--bottom {\n padding-bottom: 20px;\n padding-bottom: calc(var(--spacer) / 2);\n }\n .spacer--top--large,\n .spacer--large--top {\n padding-top: 80px;\n padding-top: calc(var(--spacer) * 2);\n }\n .spacer--bottom--large,\n .spacer--large--bottom {\n padding-bottom: 80px;\n padding-bottom: calc(var(--spacer) * 2);\n }\n\n .Toastify .Toastify__toast--success {\n background: #07bc0c;\n }\n\n hr {\n border: 0;\n border-top: 1px solid ${thd('primary', '#dee2e6')};\n margin-bottom: 1.5rem;\n margin-top: 1.5rem;\n }\n\n a {\n color: #fff;\n &:hover {\n color: ${thd('primary', '#dee2e6')};\n }\n }\n\n button {\n text-transform: uppercase;\n font-weight: bold;\n }\n`;\n\nconst StylesApp = () => (\n \n \n \n \n);\n\nexport default StylesApp;\n","import invariant from 'invariant';\nimport isEmpty from 'lodash/isEmpty';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\n\nimport checkStore from './checkStore';\nimport createReducer from './reducers';\n\nexport function injectReducerFactory(store, isValid) {\n return function injectReducer(key, reducer) {\n if (!isValid) checkStore(store);\n\n invariant(\n isString(key) && !isEmpty(key) && isFunction(reducer),\n '(platform/utils...) injectReducer: Expected `reducer` to be a reducer function'\n );\n\n // Check `store.injectedReducers[key] === reducer` for hot reloading when a key is the same but a reducer is different\n if (\n Reflect.has(store.injectedReducers, key) &&\n store.injectedReducers[key] === reducer\n )\n return;\n\n store.injectedReducers[key] = reducer; // eslint-disable-line no-param-reassign\n store.replaceReducer(createReducer(store.injectedReducers));\n };\n}\n\nexport default function getInjectors(store) {\n checkStore(store);\n\n return {\n injectReducer: injectReducerFactory(store, true),\n };\n}\n","import React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { ReactReduxContext } from 'react-redux';\n\nimport getInjectors from './core/reducerInjectors';\n\n/**\n * Dynamically injects a reducer\n *\n * @param {string} key A key of the reducer\n * @param {function} reducer A reducer that will be injected\n *\n */\nexport default ({ key, reducer }) => WrappedComponent => {\n class ReducerInjector extends React.Component {\n static WrappedComponent = WrappedComponent;\n static contextType = ReactReduxContext;\n static displayName = `withReducer(${WrappedComponent.displayName ||\n WrappedComponent.name ||\n 'Component'})`;\n\n constructor(props, context) {\n super(props, context);\n\n getInjectors(context.store).injectReducer(key, reducer);\n }\n\n render() {\n return ;\n }\n }\n\n return hoistNonReactStatics(ReducerInjector, WrappedComponent);\n};\n\nconst useInjectReducer = ({ key, reducer }) => {\n const context = React.useContext(ReactReduxContext);\n React.useEffect(() => {\n getInjectors(context.store).injectReducer(key, reducer);\n }, [context.store, key, reducer]);\n};\n\nexport { useInjectReducer };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled, withTheme } from '@smooth-ui/core-sc';\n\nconst SpinLoader = styled.span`\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n\n display: flex;\n border-radius: 50%;\n border: ${props => `${props.thickness}px solid ${props.sColor}`};\n border-top: ${props => `${props.thickness}px solid ${props.pColor}`};\n height: ${props => (props.height ? `${props.height}px` : '50px')};\n width: ${props => (props.width ? `${props.width}px` : '50px')};\n animation: spin 1s linear infinite;\n`;\n\nconst LoadingAnimation = ({ className, style, theme = {} }) => (\n \n);\n\nLoadingAnimation.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n theme: PropTypes.object,\n};\n\nLoadingAnimation.defaultProps = {\n className: undefined,\n style: undefined,\n theme: {},\n};\n\nexport const LoadingAnimationCentered = props => (\n \n);\n\n// export default LoadingAnimation;\nexport default withTheme(LoadingAnimation);\n","/**\n * Web App actions\n */\n\nimport {\n CART_REQUEST,\n CART_SUCCESS,\n CART_ERROR,\n CUSTOMER_REPS_REQUEST,\n CUSTOMER_REPS_SUCCESS,\n CUSTOMER_REPS_ERROR,\n MENU_REQUEST,\n MENU_SUCCESS,\n MENU_ERROR,\n MENU_UPDATE_ROUTES,\n SETTINGS_REQUEST,\n SETTINGS_SUCCESS,\n SETTINGS_ERROR,\n USER_LOGOUT_REQUEST_CLEANUP,\n WISHLIST_REQUEST,\n WISHLIST_SUCCESS,\n WISHLIST_ERROR,\n WISHLIST_ADDREMOVE_REQUEST,\n} from './constants';\n\n/**\n * Cart request - start the request saga\n * The reason this is here is because it needs to be called from CartProvider\n * as well as RewardsProvider saga (after adding item to cart)\n *\n * @returns {object} An action object with a type of CART_REQUEST\n */\nexport function cartRequest(refresh) {\n return {\n type: CART_REQUEST,\n refresh,\n };\n}\n\n/**\n * Dispatched when cartRequest succeeds by the request saga\n *\n * @param {object} response The response data\n * @param {number} lastUpdated Unix timestamp\n * @returns {object} An action object with a type of CART_SUCCESS and the response\n */\nexport function cartSuccess(response, lastUpdated) {\n return {\n type: CART_SUCCESS,\n response,\n lastUpdated,\n };\n}\n\n/**\n * Dispatched when cartRequest fails\n *\n * @param {object} error The error as received from the API\n * @returns {object} An action object with a type of CART_ERROR and the error\n */\nexport function cartError(error) {\n return {\n type: CART_ERROR,\n error,\n };\n}\n\n/**\n * CustomerReps request - start the request saga\n *\n * @returns {object} An action object with a type of CUSTOMER_REPS_REQUEST\n */\nexport function customerRepsRequest() {\n return {\n type: CUSTOMER_REPS_REQUEST,\n };\n}\n\n/**\n * Dispatched when customerRepsRequest succeeds by the request saga\n *\n * @param {object} response The response data\n * @param {number} lastUpdated Unix timestamp\n * @returns {object} An action object with a type of CUSTOMER_REPS_SUCCESS and the response\n */\nexport function customerRepsSuccess(response, lastUpdated) {\n return {\n type: CUSTOMER_REPS_SUCCESS,\n response,\n lastUpdated,\n };\n}\n\n/**\n * Dispatched when customerRepsRequest fails\n *\n * @param {object} error The error as received from the API\n * @returns {object} An action object with a type of CUSTOMER_REPS_ERROR and the error\n */\nexport function customerRepsError(error) {\n return {\n type: CUSTOMER_REPS_ERROR,\n error,\n };\n}\n\n/**\n * Menu request - start the request saga\n *\n * @returns {object} An action object with a type of MENU_REQUEST\n */\nexport function menuRequest(refresh) {\n return {\n type: MENU_REQUEST,\n refresh,\n };\n}\n\n/**\n * Dispatched when menuRequest succeeds by the request saga\n *\n * @param {object} response The response data\n * @returns {object} An action object with a type of MENU_SUCCESS and the response\n */\nexport function menuSuccess(response) {\n return {\n type: MENU_SUCCESS,\n response,\n };\n}\n\n/**\n * Dispatched when menuRequest fails\n *\n * @param {object} error The error as received from the API\n * @returns {object} An action object with a type of MENU_ERROR and the error\n */\nexport function menuError(error) {\n return {\n type: MENU_ERROR,\n error,\n };\n}\n\n/**\n * Dispatched in combination with menuSuccess in order to set up routes\n *\n * @param {object} response The response data\n * @returns {object} An action object with a type of MENU_UPDATE_ROUTES and the response\n */\nexport function menuUpdateRoutes(response) {\n return {\n type: MENU_UPDATE_ROUTES,\n response,\n };\n}\n\n/**\n * Settings request - start the request saga\n *\n * @returns {object} An action object with a type of SETTINGS_REQUEST\n */\nexport function settingsRequest(refresh) {\n return {\n type: SETTINGS_REQUEST,\n refresh,\n };\n}\n\n/**\n * Dispatched when settingsRequest succeeds by the request saga\n *\n * @param {object} response The response data\n * @param {number} lastUpdated Unix timestamp\n * @returns {object} An action object with a type of SETTINGS_SUCCESS and the response\n */\nexport function settingsSuccess(response, lastUpdated) {\n return {\n type: SETTINGS_SUCCESS,\n response,\n lastUpdated,\n };\n}\n\n/**\n * Dispatched when settingsRequest fails\n *\n * @param {object} error The error as received from the API\n * @returns {object} An action object with a type of SETTINGS_ERROR and the error\n */\nexport function settingsError(error) {\n return {\n type: SETTINGS_ERROR,\n error,\n };\n}\n\n/**\n * Dispatched from the userLogoutListener saga\n * Not hooking directly into `USER_LOGOUT_REQUEST` because it would refresh all\n * the values before the user is logged out\n *\n * @returns {object} An action object with a type of USER_LOGOUT_REQUEST_CLEANUP\n */\nexport function userLogoutClearUserData() {\n return { type: USER_LOGOUT_REQUEST_CLEANUP };\n}\n\n/**\n * Wishlist request - start the request saga\n * The reason this is here is because it needs to be called from WishlistProvider\n * as well as RewardsProvider saga (after adding item to wishlist)\n *\n * @returns {object} An action object with a type of WISHLIST_REQUEST\n */\nexport function wishlistRequest(refresh) {\n return {\n type: WISHLIST_REQUEST,\n refresh,\n };\n}\n\n/**\n * Dispatched when wishlistRequest succeeds by the request saga\n *\n * @param {object} response The response data\n * @param {number} lastUpdated Unix timestamp\n * @returns {object} An action object with a type of WISHLIST_SUCCESS and the response\n */\nexport function wishlistSuccess(response, lastUpdated) {\n return {\n type: WISHLIST_SUCCESS,\n response,\n lastUpdated,\n };\n}\n\n/**\n * Dispatched when wishlistRequest fails\n *\n * @param {object} error The error as received from the API\n * @returns {object} An action object with a type of WISHLIST_ERROR and the error\n */\nexport function wishlistError(error) {\n return {\n type: WISHLIST_ERROR,\n error,\n };\n}\n\n/**\n * Wishlist add/remove request - start the request saga\n *\n * @param {string} action Either 'add' or 'remove' - Remove being the default\n * @param {object} values Reward properties\n * @returns {object} An action object with a type of WISHLIST_ADDREMOVE_REQUEST\n */\nexport function wishlistAddRemoveRequest(action, values) {\n return {\n type: WISHLIST_ADDREMOVE_REQUEST,\n action,\n values,\n };\n}\n","module.exports = __webpack_public_path__ + \"static/media/Logo-Footer@2x.44cb9c0e.png\";","/**\n * App Actions\n */\n\nimport {\n COUNTRIES_REQUEST,\n COUNTRIES_SUCCESS,\n COUNTRIES_ERROR,\n SET_USER,\n USER_LOGOUT_REQUEST,\n USER_TOKEN_REQUEST,\n USER_TOKEN_SUCCESS,\n USER_TOKEN_ERROR,\n USER_PROFILE_REQUEST,\n USER_PROFILE_SUCCESS,\n USER_PROFILE_ERROR,\n} from './constants';\n\n/**\n * Countries request - start the request saga\n *\n * @returns {object} An action object with a type of COUNTRIES_REQUEST\n */\nexport function countriesRequest() {\n return {\n type: COUNTRIES_REQUEST,\n };\n}\n\n/**\n * Dispatched when countriesRequest succeeds by the request saga\n *\n * @param {object} response The response\n * @param {number} lastUpdated Unix timestamp\n * @returns {object} An action object with a type of COUNTRIES_SUCCESS and the response\n */\nexport function countriesSuccess(response, lastUpdated) {\n return {\n type: COUNTRIES_SUCCESS,\n response,\n lastUpdated,\n };\n}\n\n/**\n * Dispatched when countriesRequests fails\n *\n * @param {object} error The error as received from the API\n * @returns {object} An action object with a type of COUNTRIES_ERROR and the error\n */\nexport function countriesError(error) {\n return {\n type: COUNTRIES_ERROR,\n error,\n };\n}\n\n/**\n * Dispatched upon successful user authentication and ensuring they have a valid profile\n *\n * @param {object} details User authentication details\n * @param {string} optons Object containing additional options such as isProfileValid and/or forcePasswordChange\n * @return {object} An action object with a type of SET_USER and the user's auth details\n */\nexport function setUser(details, options) {\n return {\n type: SET_USER,\n details,\n options,\n };\n}\n\n/**\n * User logout request - start the request saga\n *\n * @param {object} options Modifier options such as skipRemote (bool) to avoid sending an API request\n * @returns {object} An action object with a type of USER_LOGOUT_REQUEST\n */\nexport function userLogoutRequest(options) {\n return {\n type: USER_LOGOUT_REQUEST,\n options,\n };\n}\n\n/**\n * User profile request - start the request saga\n *\n * @returns {object} An action object with a type of USER_PROFILE_REQUEST\n */\nexport function userProfileRequest() {\n return {\n type: USER_PROFILE_REQUEST,\n };\n}\n\n/**\n * User Profile Success - Dispatched when requestProfile succeeds by the request saga\n *\n * @param {object} response Data from the response\n * @param {number} lastUpdated Unix timestamp\n * @returns {object} An action object with the type of PROFILE_DETAILS and the response data\n */\nexport function userProfileSuccess(response, lastUpdated) {\n return {\n type: USER_PROFILE_SUCCESS,\n response,\n lastUpdated,\n };\n}\n\n/**\n * Dispatched when userProfileRequest fails\n *\n * @param {object} error The error as received from the API\n * @returns {object} An action object with a type of USER_PROFILE_ERROR and the error\n */\nexport function userProfileError(error) {\n return {\n type: USER_PROFILE_ERROR,\n error,\n };\n}\n\n/**\n * User token request - start the request saga\n *\n * @returns {object} An action object with a type of USER_TOKEN_REQUEST\n */\nexport function userTokenRequest(settingsApp) {\n return {\n type: USER_TOKEN_REQUEST,\n settingsApp,\n };\n}\n\n/**\n * Dispatched when userTokenRequest succeeds by the request saga\n *\n * @param {object} response The response\n * @returns {object} An action object with a type of USER_TOKEN_SUCCESS and the response\n */\nexport function userTokenSuccess(response) {\n return {\n type: USER_TOKEN_SUCCESS,\n response,\n };\n}\n\n/**\n * Dispatched when userTokenRequest fails\n *\n * @param {object} error The error as received from the API\n * @returns {object} An action object with a type of USER_TOKEN_ERROR and the error\n */\nexport function userTokenError(error) {\n return {\n type: USER_TOKEN_ERROR,\n error,\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LoadingAnimation from './LoadingAnimation';\n\nconst Loading = props => {\n if (props.error) {\n if (process.env.NODE_ENV === 'development' && props.error.message) {\n console.warn(props.error.message);\n }\n return (\n
\n

\n Error\n {props.error.code === 'MODULE_NOT_FOUND' && (\n Module not found!\n )}\n

\n\n {process.env.NODE_ENV === 'development' && (\n
\n \n
\n )}\n
\n );\n }\n if (props.timedOut) {\n return (\n
\n Taking too long to load... \n
\n );\n }\n if (props.pastDelay) {\n return ;\n }\n return null;\n};\n\nLoading.propTypes = {\n error: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n timedOut: PropTypes.bool,\n pastDelay: PropTypes.bool,\n retry: PropTypes.func,\n};\n\nLoading.defaultProps = {\n error: false,\n timedOut: false,\n pastDelay: false,\n retry: null,\n};\n\nexport default Loading;\n","/**\n * Helper for Loadable to dynamically load components and split into webpack chunks\n */\n\nimport Loadable from 'react-loadable';\nimport Loading from '../components/Loading/Loading'; // _platform\n\nconst LoadAsync = (loadFn, opts) =>\n Loadable({\n loader: loadFn,\n loading: Loading,\n delay: opts && opts.delay ? opts.delay : 200, // Delay displaying the loader in milliseconds\n timeout: opts && opts.timeout ? opts.timeout : null, // Show timeout message in milliseconds\n });\n\nexport default LoadAsync;\n","/**\n * Custom History object to be used as a singleton throughout\n * the project to navigate between pages\n */\nimport { createBrowserHistory } from 'history';\n\nconst history = createBrowserHistory();\nexport default history;\n","/**\n * WebApp selectors\n */\nimport { createSelector } from 'reselect';\nimport { initialState } from './reducer';\n\n/**\n * Container state\n */\nconst selectState = state => state.webApp || initialState;\n\n/**\n * Cart\n */\nconst selectCart = () =>\n createSelector(\n selectState,\n state => state.cart\n );\n\n/**\n * CustomerReps\n */\nconst selectCustomerReps = () =>\n createSelector(\n selectState,\n state => state.customerReps\n );\n\n/**\n * Menu definitions\n */\nconst selectMenu = () =>\n createSelector(\n selectState,\n state => state.menu\n );\n\nconst selectRoutes = () =>\n createSelector(\n selectState,\n state => state.routes\n );\n\n/**\n * Site settings\n */\nconst selectSettings = () =>\n createSelector(\n selectState,\n state => state.settings\n );\n\n// Next Claiming Period (single)\nconst selectSettingsNextClaimingPeriod = () =>\n createSelector(\n selectSettings(),\n state =>\n state &&\n state.claimingPeriods &&\n state.claimingPeriods.find(item => item.dateEndsUser > new Date())\n );\n\n// Points UOM\nconst selectSettingsPointsUOM = () =>\n createSelector(\n selectSettings(),\n state =>\n state &&\n state.unitsOfMeasure &&\n state.unitsOfMeasure.find(item => !!item.pointsMeasure)\n );\n\n// Sales UOMs\nconst selectSettingsSalesUOMs = () =>\n createSelector(\n selectSettings(),\n state =>\n state &&\n state.unitsOfMeasure &&\n state.unitsOfMeasure.filter(item => !item.pointsMeasure)\n );\n\n// Program Settings\nconst selectSettingsProgram = () =>\n createSelector(\n selectSettings(),\n state => state && state.program\n );\n\n/**\n * Wishlist\n */\nconst selectWishlist = () =>\n createSelector(\n selectState,\n state => state.wishlist\n );\n\nexport {\n selectState,\n selectCart,\n selectCustomerReps,\n selectMenu,\n selectRoutes,\n selectSettings,\n selectSettingsNextClaimingPeriod,\n selectSettingsPointsUOM,\n selectSettingsProgram,\n selectSettingsSalesUOMs,\n selectWishlist,\n};\n","/**\n * App selectors\n */\nimport { createSelector } from 'reselect';\nimport { initialState } from './reducer';\n\n/**\n * Container state\n */\nconst selectGlobalState = state => state.global || initialState;\n\n/**\n * Fetch state\n */\nconst selectStatus = () =>\n createSelector(\n selectGlobalState,\n state => ({\n status: state.status,\n statusDetails: state.statusDetails,\n })\n );\n\n/**\n * Countries\n */\nconst selectCountries = () =>\n createSelector(\n selectGlobalState,\n state => state.countries\n );\n\n/**\n * Current user\n */\nconst selectCurrentUser = () =>\n createSelector(\n selectGlobalState,\n state => state.currentUser\n );\n\nconst selectCurrentUserTemp = () =>\n createSelector(\n selectGlobalState,\n state => state.currentUserTemp\n );\n\nconst selectIsFetchingToken = () =>\n createSelector(\n selectGlobalState,\n state => state.isFetchingToken\n );\n\nconst selectUserOptions = () =>\n createSelector(\n selectGlobalState,\n state => state.userOptions\n );\n\n/**\n * Profile details\n */\nconst selectUserProfile = () =>\n createSelector(\n selectGlobalState,\n state => state.profileDetails\n );\n\nexport {\n selectGlobalState,\n selectCountries,\n selectCurrentUser,\n selectCurrentUserTemp,\n selectIsFetchingToken,\n selectStatus,\n selectUserOptions,\n selectUserProfile,\n};\n","var map = {\n\t\"./AboutPage/AboutAwardsNight\": [\n\t\t344,\n\t\t9,\n\t\t71\n\t],\n\t\"./AboutPage/AboutAwardsNight.js\": [\n\t\t344,\n\t\t9,\n\t\t71\n\t],\n\t\"./AboutPage/AboutPage\": [\n\t\t367,\n\t\t9,\n\t\t30\n\t],\n\t\"./AboutPage/AboutPage.js\": [\n\t\t367,\n\t\t9,\n\t\t30\n\t],\n\t\"./AboutPage/images/banner-about-@1x.jpg\": [\n\t\t665,\n\t\t7,\n\t\t160\n\t],\n\t\"./AboutPage/images/banner-about-@2x.jpg\": [\n\t\t640,\n\t\t7,\n\t\t161\n\t],\n\t\"./AboutPage/images/banner-about-man_using_keyboard-@2x.jpg\": [\n\t\t666,\n\t\t7,\n\t\t162\n\t],\n\t\"./AboutPage/images/banner-about-mobile-@1x.jpg\": [\n\t\t667,\n\t\t7,\n\t\t163\n\t],\n\t\"./AboutPage/images/banner-about-mobile-@2x.jpg\": [\n\t\t668,\n\t\t7,\n\t\t164\n\t],\n\t\"./AboutPage/images/banner-about-tablet-@1x.jpg\": [\n\t\t669,\n\t\t7,\n\t\t165\n\t],\n\t\"./AboutPage/images/banner-about-tablet-@2x.jpg\": [\n\t\t670,\n\t\t7,\n\t\t166\n\t],\n\t\"./AboutPage/images/bg-about-awards_night_banner-@2x.jpg\": [\n\t\t649,\n\t\t7,\n\t\t167\n\t],\n\t\"./AboutPage/images/icon-handgraph.svg\": [\n\t\t653,\n\t\t7,\n\t\t153\n\t],\n\t\"./AboutPage/images/icon-lightbulb.svg\": [\n\t\t650,\n\t\t7,\n\t\t154\n\t],\n\t\"./AboutPage/images/icon-shield.svg\": [\n\t\t652,\n\t\t7,\n\t\t155\n\t],\n\t\"./AboutPage/images/icon-stopwatch.svg\": [\n\t\t651,\n\t\t7,\n\t\t156\n\t],\n\t\"./AboutPage/images/image-about-1-@2x.jpg\": [\n\t\t654,\n\t\t7,\n\t\t168\n\t],\n\t\"./AboutPage/images/image-about-2-@2x.jpg\": [\n\t\t655,\n\t\t7,\n\t\t169\n\t],\n\t\"./AboutPage/images/image-about-digital_giftcards-@2x.jpg\": [\n\t\t671,\n\t\t7,\n\t\t170\n\t],\n\t\"./AboutPage/images/image-about-rewards_collage-@2x.jpg\": [\n\t\t672,\n\t\t7,\n\t\t171\n\t],\n\t\"./AboutPage/images/image-about-travel_collage-@2x.jpg\": [\n\t\t673,\n\t\t7,\n\t\t172\n\t],\n\t\"./BehaviourProvider/BehaviourProvider\": [\n\t\t328,\n\t\t9,\n\t\t6\n\t],\n\t\"./BehaviourProvider/BehaviourProvider.js\": [\n\t\t328,\n\t\t9,\n\t\t6\n\t],\n\t\"./BehaviourProvider/actions\": [\n\t\t284,\n\t\t9,\n\t\t72\n\t],\n\t\"./BehaviourProvider/actions.js\": [\n\t\t284,\n\t\t9,\n\t\t72\n\t],\n\t\"./BehaviourProvider/constants\": [\n\t\t273,\n\t\t9,\n\t\t91\n\t],\n\t\"./BehaviourProvider/constants.js\": [\n\t\t273,\n\t\t9,\n\t\t91\n\t],\n\t\"./BehaviourProvider/reducer\": [\n\t\t285,\n\t\t9,\n\t\t73\n\t],\n\t\"./BehaviourProvider/reducer.js\": [\n\t\t285,\n\t\t9,\n\t\t73\n\t],\n\t\"./BehaviourProvider/saga\": [\n\t\t302,\n\t\t9,\n\t\t53\n\t],\n\t\"./BehaviourProvider/saga.js\": [\n\t\t302,\n\t\t9,\n\t\t53\n\t],\n\t\"./BehaviourProvider/selectors\": [\n\t\t303,\n\t\t9,\n\t\t54\n\t],\n\t\"./BehaviourProvider/selectors.js\": [\n\t\t303,\n\t\t9,\n\t\t54\n\t],\n\t\"./CartPage/CartPage\": [\n\t\t345,\n\t\t9,\n\t\t32\n\t],\n\t\"./CartPage/CartPage.js\": [\n\t\t345,\n\t\t9,\n\t\t32\n\t],\n\t\"./CartProvider/CartProvider\": [\n\t\t304,\n\t\t9,\n\t\t7\n\t],\n\t\"./CartProvider/CartProvider.js\": [\n\t\t304,\n\t\t9,\n\t\t7\n\t],\n\t\"./CartProvider/actions\": [\n\t\t286,\n\t\t9,\n\t\t74\n\t],\n\t\"./CartProvider/actions.js\": [\n\t\t286,\n\t\t9,\n\t\t74\n\t],\n\t\"./CartProvider/constants\": [\n\t\t274,\n\t\t9,\n\t\t92\n\t],\n\t\"./CartProvider/constants.js\": [\n\t\t274,\n\t\t9,\n\t\t92\n\t],\n\t\"./CartProvider/reducer\": [\n\t\t287,\n\t\t9,\n\t\t75\n\t],\n\t\"./CartProvider/reducer.js\": [\n\t\t287,\n\t\t9,\n\t\t75\n\t],\n\t\"./CartProvider/saga\": [\n\t\t305,\n\t\t9,\n\t\t55\n\t],\n\t\"./CartProvider/saga.js\": [\n\t\t305,\n\t\t9,\n\t\t55\n\t],\n\t\"./CartProvider/selectors\": [\n\t\t306,\n\t\t9,\n\t\t56\n\t],\n\t\"./CartProvider/selectors.js\": [\n\t\t306,\n\t\t9,\n\t\t56\n\t],\n\t\"./ClaimHistoryPage/ClaimHistoryPage\": [\n\t\t368,\n\t\t9,\n\t\t31\n\t],\n\t\"./ClaimHistoryPage/ClaimHistoryPage.js\": [\n\t\t368,\n\t\t9,\n\t\t31\n\t],\n\t\"./ClaimHistoryProvider/ClaimHistoryProvider\": [\n\t\t346,\n\t\t9,\n\t\t8\n\t],\n\t\"./ClaimHistoryProvider/ClaimHistoryProvider.js\": [\n\t\t346,\n\t\t9,\n\t\t8\n\t],\n\t\"./ClaimHistoryProvider/actions\": [\n\t\t288,\n\t\t9,\n\t\t76\n\t],\n\t\"./ClaimHistoryProvider/actions.js\": [\n\t\t288,\n\t\t9,\n\t\t76\n\t],\n\t\"./ClaimHistoryProvider/constants\": [\n\t\t275,\n\t\t9,\n\t\t93\n\t],\n\t\"./ClaimHistoryProvider/constants.js\": [\n\t\t275,\n\t\t9,\n\t\t93\n\t],\n\t\"./ClaimHistoryProvider/reducer\": [\n\t\t289,\n\t\t9,\n\t\t77\n\t],\n\t\"./ClaimHistoryProvider/reducer.js\": [\n\t\t289,\n\t\t9,\n\t\t77\n\t],\n\t\"./ClaimHistoryProvider/saga\": [\n\t\t308,\n\t\t9,\n\t\t57\n\t],\n\t\"./ClaimHistoryProvider/saga.js\": [\n\t\t308,\n\t\t9,\n\t\t57\n\t],\n\t\"./ClaimHistoryProvider/selectors\": [\n\t\t309,\n\t\t9,\n\t\t58\n\t],\n\t\"./ClaimHistoryProvider/selectors.js\": [\n\t\t309,\n\t\t9,\n\t\t58\n\t],\n\t\"./CodesProvider/CodesList\": [\n\t\t310,\n\t\t9,\n\t\t44\n\t],\n\t\"./CodesProvider/CodesList.js\": [\n\t\t310,\n\t\t9,\n\t\t44\n\t],\n\t\"./CodesProvider/CodesProvider\": [\n\t\t329,\n\t\t9,\n\t\t9\n\t],\n\t\"./CodesProvider/CodesProvider.js\": [\n\t\t329,\n\t\t9,\n\t\t9\n\t],\n\t\"./CodesProvider/CodesRedeemForm\": [\n\t\t313,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t28\n\t],\n\t\"./CodesProvider/CodesRedeemForm.js\": [\n\t\t313,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t28\n\t],\n\t\"./CodesProvider/actions\": [\n\t\t290,\n\t\t9,\n\t\t78\n\t],\n\t\"./CodesProvider/actions.js\": [\n\t\t290,\n\t\t9,\n\t\t78\n\t],\n\t\"./CodesProvider/constants\": [\n\t\t276,\n\t\t9,\n\t\t94\n\t],\n\t\"./CodesProvider/constants.js\": [\n\t\t276,\n\t\t9,\n\t\t94\n\t],\n\t\"./CodesProvider/reducer\": [\n\t\t291,\n\t\t9,\n\t\t79\n\t],\n\t\"./CodesProvider/reducer.js\": [\n\t\t291,\n\t\t9,\n\t\t79\n\t],\n\t\"./CodesProvider/saga\": [\n\t\t311,\n\t\t9,\n\t\t59\n\t],\n\t\"./CodesProvider/saga.js\": [\n\t\t311,\n\t\t9,\n\t\t59\n\t],\n\t\"./CodesProvider/selectors\": [\n\t\t312,\n\t\t9,\n\t\t60\n\t],\n\t\"./CodesProvider/selectors.js\": [\n\t\t312,\n\t\t9,\n\t\t60\n\t],\n\t\"./ContactPage/ContactPage\": [\n\t\t347,\n\t\t9,\n\t\t38\n\t],\n\t\"./ContactPage/ContactPage.js\": [\n\t\t347,\n\t\t9,\n\t\t38\n\t],\n\t\"./ContactPage/images/banner-contact-@1x.jpg\": [\n\t\t674,\n\t\t7,\n\t\t173\n\t],\n\t\"./ContactPage/images/banner-contact-@2x.jpg\": [\n\t\t675,\n\t\t7,\n\t\t174\n\t],\n\t\"./ContactPage/images/banner-contact-mobile-@1x.jpg\": [\n\t\t676,\n\t\t7,\n\t\t175\n\t],\n\t\"./ContactPage/images/banner-contact-mobile-@2x.jpg\": [\n\t\t677,\n\t\t7,\n\t\t176\n\t],\n\t\"./ContactPage/images/banner-contact-tablet-@1x.jpg\": [\n\t\t678,\n\t\t7,\n\t\t177\n\t],\n\t\"./ContactPage/images/banner-contact-tablet-@2x.jpg\": [\n\t\t679,\n\t\t7,\n\t\t178\n\t],\n\t\"./FaqsPage/FaqsPage\": [\n\t\t348,\n\t\t9,\n\t\t0,\n\t\t26\n\t],\n\t\"./FaqsPage/FaqsPage.js\": [\n\t\t348,\n\t\t9,\n\t\t0,\n\t\t26\n\t],\n\t\"./FaqsPage/actions\": [\n\t\t293,\n\t\t9,\n\t\t80\n\t],\n\t\"./FaqsPage/actions.js\": [\n\t\t293,\n\t\t9,\n\t\t80\n\t],\n\t\"./FaqsPage/constants\": [\n\t\t277,\n\t\t9,\n\t\t95\n\t],\n\t\"./FaqsPage/constants.js\": [\n\t\t277,\n\t\t9,\n\t\t95\n\t],\n\t\"./FaqsPage/images/FAQs-Banner.jpg\": [\n\t\t680,\n\t\t7,\n\t\t179\n\t],\n\t\"./FaqsPage/images/FAQs-Banner@2x.jpg\": [\n\t\t681,\n\t\t7,\n\t\t180\n\t],\n\t\"./FaqsPage/images/Minus.svg\": [\n\t\t663,\n\t\t7,\n\t\t157\n\t],\n\t\"./FaqsPage/images/Plus.svg\": [\n\t\t662,\n\t\t7,\n\t\t158\n\t],\n\t\"./FaqsPage/reducer\": [\n\t\t292,\n\t\t9,\n\t\t81\n\t],\n\t\"./FaqsPage/reducer.js\": [\n\t\t292,\n\t\t9,\n\t\t81\n\t],\n\t\"./FaqsPage/saga\": [\n\t\t314,\n\t\t9,\n\t\t61\n\t],\n\t\"./FaqsPage/saga.js\": [\n\t\t314,\n\t\t9,\n\t\t61\n\t],\n\t\"./FaqsPage/selectors\": [\n\t\t315,\n\t\t9,\n\t\t62\n\t],\n\t\"./FaqsPage/selectors.js\": [\n\t\t315,\n\t\t9,\n\t\t62\n\t],\n\t\"./HomePage/HomePage\": [\n\t\t365,\n\t\t9,\n\t\t10\n\t],\n\t\"./HomePage/HomePage.js\": [\n\t\t365,\n\t\t9,\n\t\t10\n\t],\n\t\"./HomePage/images/Icon1@2x.png\": [\n\t\t641,\n\t\t7,\n\t\t181\n\t],\n\t\"./HomePage/images/Icon2@2x.png\": [\n\t\t642,\n\t\t7,\n\t\t182\n\t],\n\t\"./HomePage/images/Icon3@2x.png\": [\n\t\t643,\n\t\t7,\n\t\t183\n\t],\n\t\"./HomePage/images/Icon4@2x.png\": [\n\t\t644,\n\t\t7,\n\t\t184\n\t],\n\t\"./HomePage/images/Icon5@2x.png\": [\n\t\t645,\n\t\t7,\n\t\t185\n\t],\n\t\"./HomePage/images/home-hero.jpg\": [\n\t\t682,\n\t\t7,\n\t\t186\n\t],\n\t\"./HomePage/images/image-about-laptop-2-@2x.jpg\": [\n\t\t683,\n\t\t7,\n\t\t187\n\t],\n\t\"./HomePage/images/image-about-people-@2x.jpg\": [\n\t\t684,\n\t\t7,\n\t\t188\n\t],\n\t\"./HomePage/images/image-about-products-@2x.jpg\": [\n\t\t685,\n\t\t7,\n\t\t189\n\t],\n\t\"./HomePage/images/image-home-reward-chromecast-@2x.jpg\": [\n\t\t686,\n\t\t7,\n\t\t190\n\t],\n\t\"./HomePage/images/image-home-reward-dewalt-@2x.jpg\": [\n\t\t687,\n\t\t7,\n\t\t191\n\t],\n\t\"./HomePage/images/image-home-reward-nintendo-@2x.jpg\": [\n\t\t688,\n\t\t7,\n\t\t192\n\t],\n\t\"./HomePage/images/image-home-reward-phillips-@2x.jpg\": [\n\t\t689,\n\t\t7,\n\t\t193\n\t],\n\t\"./InvoicePage/InvoiceForm\": [\n\t\t349,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t27\n\t],\n\t\"./InvoicePage/InvoiceForm.js\": [\n\t\t349,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t27\n\t],\n\t\"./InvoicePage/InvoiceList\": [\n\t\t330,\n\t\t9,\n\t\t2,\n\t\t4,\n\t\t11\n\t],\n\t\"./InvoicePage/InvoiceList.js\": [\n\t\t330,\n\t\t9,\n\t\t2,\n\t\t4,\n\t\t11\n\t],\n\t\"./InvoicePage/InvoicePage\": [\n\t\t350,\n\t\t9,\n\t\t39\n\t],\n\t\"./InvoicePage/InvoicePage.js\": [\n\t\t350,\n\t\t9,\n\t\t39\n\t],\n\t\"./InvoiceProvider/InvoiceProvider\": [\n\t\t331,\n\t\t9,\n\t\t2,\n\t\t12\n\t],\n\t\"./InvoiceProvider/InvoiceProvider.js\": [\n\t\t331,\n\t\t9,\n\t\t2,\n\t\t12\n\t],\n\t\"./InvoiceProvider/actions\": [\n\t\t294,\n\t\t9,\n\t\t82\n\t],\n\t\"./InvoiceProvider/actions.js\": [\n\t\t294,\n\t\t9,\n\t\t82\n\t],\n\t\"./InvoiceProvider/constants\": [\n\t\t278,\n\t\t9,\n\t\t96\n\t],\n\t\"./InvoiceProvider/constants.js\": [\n\t\t278,\n\t\t9,\n\t\t96\n\t],\n\t\"./InvoiceProvider/reducer\": [\n\t\t295,\n\t\t9,\n\t\t83\n\t],\n\t\"./InvoiceProvider/reducer.js\": [\n\t\t295,\n\t\t9,\n\t\t83\n\t],\n\t\"./InvoiceProvider/saga\": [\n\t\t316,\n\t\t9,\n\t\t2,\n\t\t47\n\t],\n\t\"./InvoiceProvider/saga.js\": [\n\t\t316,\n\t\t9,\n\t\t2,\n\t\t47\n\t],\n\t\"./InvoiceProvider/selectors\": [\n\t\t317,\n\t\t9,\n\t\t63\n\t],\n\t\"./InvoiceProvider/selectors.js\": [\n\t\t317,\n\t\t9,\n\t\t63\n\t],\n\t\"./LeaderboardPage/LeaderboardPage\": [\n\t\t351,\n\t\t9,\n\t\t37\n\t],\n\t\"./LeaderboardPage/LeaderboardPage.js\": [\n\t\t351,\n\t\t9,\n\t\t37\n\t],\n\t\"./LeaderboardProvider/LeaderboardProvider\": [\n\t\t318,\n\t\t9,\n\t\t43\n\t],\n\t\"./LeaderboardProvider/LeaderboardProvider.js\": [\n\t\t318,\n\t\t9,\n\t\t43\n\t],\n\t\"./LeaderboardProvider/actions\": [\n\t\t281,\n\t\t9,\n\t\t84\n\t],\n\t\"./LeaderboardProvider/actions.js\": [\n\t\t281,\n\t\t9,\n\t\t84\n\t],\n\t\"./LeaderboardProvider/constants\": [\n\t\t272,\n\t\t9,\n\t\t97\n\t],\n\t\"./LeaderboardProvider/constants.js\": [\n\t\t272,\n\t\t9,\n\t\t97\n\t],\n\t\"./LeaderboardProvider/reducer\": [\n\t\t282,\n\t\t9,\n\t\t85\n\t],\n\t\"./LeaderboardProvider/reducer.js\": [\n\t\t282,\n\t\t9,\n\t\t85\n\t],\n\t\"./LeaderboardProvider/saga\": [\n\t\t300,\n\t\t9,\n\t\t64\n\t],\n\t\"./LeaderboardProvider/saga.js\": [\n\t\t300,\n\t\t9,\n\t\t64\n\t],\n\t\"./LeaderboardProvider/selectors\": [\n\t\t301,\n\t\t9,\n\t\t65\n\t],\n\t\"./LeaderboardProvider/selectors.js\": [\n\t\t301,\n\t\t9,\n\t\t65\n\t],\n\t\"./LoginPage/LoginPage\": [\n\t\t366,\n\t\t9,\n\t\t13\n\t],\n\t\"./LoginPage/LoginPage.js\": [\n\t\t366,\n\t\t9,\n\t\t13\n\t],\n\t\"./LoginPage/images/Login-BG-Mobile@2x.jpg\": [\n\t\t690,\n\t\t7,\n\t\t194\n\t],\n\t\"./LoginPage/images/Login-BG-Tablet@1x.jpg\": [\n\t\t691,\n\t\t7,\n\t\t195\n\t],\n\t\"./LoginPage/images/Login-BG-Tablet@2x.jpg\": [\n\t\t692,\n\t\t7,\n\t\t196\n\t],\n\t\"./LoginPage/images/Login-BG-mobile@1x.jpg\": [\n\t\t693,\n\t\t7,\n\t\t197\n\t],\n\t\"./LoginPage/images/Login-BG@1x.jpg\": [\n\t\t646,\n\t\t7,\n\t\t198\n\t],\n\t\"./LoginPage/images/Login-BG@2x.jpg\": [\n\t\t647,\n\t\t7,\n\t\t199\n\t],\n\t\"./LoginPage/images/image-login_page-background-@1x.jpg\": [\n\t\t694,\n\t\t7,\n\t\t200\n\t],\n\t\"./LoginPage/images/image-login_page-background-@2x.jpg\": [\n\t\t695,\n\t\t7,\n\t\t201\n\t],\n\t\"./LogoutPage/LogoutPage\": [\n\t\t342,\n\t\t9,\n\t\t14\n\t],\n\t\"./LogoutPage/LogoutPage.js\": [\n\t\t342,\n\t\t9,\n\t\t14\n\t],\n\t\"./MobileAppSSOPage/MobileAppSSOPage\": [\n\t\t343,\n\t\t9,\n\t\t15\n\t],\n\t\"./MobileAppSSOPage/MobileAppSSOPage.js\": [\n\t\t343,\n\t\t9,\n\t\t15\n\t],\n\t\"./NotFoundPage/NotFoundPage\": [\n\t\t327,\n\t\t9,\n\t\t16\n\t],\n\t\"./NotFoundPage/NotFoundPage.js\": [\n\t\t327,\n\t\t9,\n\t\t16\n\t],\n\t\"./NotFoundPage/images/404-error-icons.svg\": [\n\t\t648,\n\t\t7,\n\t\t159\n\t],\n\t\"./PasswordResetPage/PasswordResetPage\": [\n\t\t341,\n\t\t9,\n\t\t17\n\t],\n\t\"./PasswordResetPage/PasswordResetPage.js\": [\n\t\t341,\n\t\t9,\n\t\t17\n\t],\n\t\"./PrivacyPage/PrivacyPage\": [\n\t\t352,\n\t\t9,\n\t\t40\n\t],\n\t\"./PrivacyPage/PrivacyPage.js\": [\n\t\t352,\n\t\t9,\n\t\t40\n\t],\n\t\"./ProductsPage/ProductsPage\": [\n\t\t353,\n\t\t9,\n\t\t41\n\t],\n\t\"./ProductsPage/ProductsPage.js\": [\n\t\t353,\n\t\t9,\n\t\t41\n\t],\n\t\"./ProfilePage/ProfilePage\": [\n\t\t354,\n\t\t9,\n\t\t33\n\t],\n\t\"./ProfilePage/ProfilePage.js\": [\n\t\t354,\n\t\t9,\n\t\t33\n\t],\n\t\"./ProfilePage/images/banner-profile-@1x.jpg\": [\n\t\t696,\n\t\t7,\n\t\t202\n\t],\n\t\"./ProfilePage/images/banner-profile-@2x.jpg\": [\n\t\t697,\n\t\t7,\n\t\t203\n\t],\n\t\"./ProfilePage/images/banner-profile-mobile-@1x.jpg\": [\n\t\t698,\n\t\t7,\n\t\t204\n\t],\n\t\"./ProfilePage/images/banner-profile-mobile-@2x.jpg\": [\n\t\t699,\n\t\t7,\n\t\t205\n\t],\n\t\"./ProfilePage/images/banner-profile-tablet-@1x.jpg\": [\n\t\t700,\n\t\t7,\n\t\t206\n\t],\n\t\"./ProfilePage/images/banner-profile-tablet-@2x.jpg\": [\n\t\t701,\n\t\t7,\n\t\t207\n\t],\n\t\"./RedeemCode/RedeemCode\": [\n\t\t355,\n\t\t9,\n\t\t49\n\t],\n\t\"./RedeemCode/RedeemCode.js\": [\n\t\t355,\n\t\t9,\n\t\t49\n\t],\n\t\"./RedirectToFirstAvailableSubMenu/RedirectToFirstAvailableSubMenu\": [\n\t\t356,\n\t\t9,\n\t\t98\n\t],\n\t\"./RedirectToFirstAvailableSubMenu/RedirectToFirstAvailableSubMenu.js\": [\n\t\t356,\n\t\t9,\n\t\t98\n\t],\n\t\"./RegisterPage/RegisterPage\": [\n\t\t357,\n\t\t9,\n\t\t46\n\t],\n\t\"./RegisterPage/RegisterPage.js\": [\n\t\t357,\n\t\t9,\n\t\t46\n\t],\n\t\"./RewardsPage/RewardsConciergeBlock\": [\n\t\t358,\n\t\t9,\n\t\t52\n\t],\n\t\"./RewardsPage/RewardsConciergeBlock.js\": [\n\t\t358,\n\t\t9,\n\t\t52\n\t],\n\t\"./RewardsPage/RewardsPage\": [\n\t\t359,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t18,\n\t\t29\n\t],\n\t\"./RewardsPage/RewardsPage.js\": [\n\t\t359,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t18,\n\t\t29\n\t],\n\t\"./RewardsPage/images/banner-rewards-@1x.jpg\": [\n\t\t702,\n\t\t7,\n\t\t208\n\t],\n\t\"./RewardsPage/images/banner-rewards-@2x.jpg\": [\n\t\t703,\n\t\t7,\n\t\t209\n\t],\n\t\"./RewardsPage/images/banner-rewards-mobile-@1x.jpg\": [\n\t\t704,\n\t\t7,\n\t\t210\n\t],\n\t\"./RewardsPage/images/banner-rewards-mobile-@2x.jpg\": [\n\t\t705,\n\t\t7,\n\t\t211\n\t],\n\t\"./RewardsPage/images/banner-rewards-tablet-@1x.jpg\": [\n\t\t706,\n\t\t7,\n\t\t212\n\t],\n\t\"./RewardsPage/images/banner-rewards-tablet-@2x.jpg\": [\n\t\t707,\n\t\t7,\n\t\t213\n\t],\n\t\"./RewardsPage/images/bg-rewards-concierge-@2x.jpg\": [\n\t\t664,\n\t\t7,\n\t\t214\n\t],\n\t\"./RewardsProvider/RewardsProvider\": [\n\t\t332,\n\t\t9,\n\t\t19,\n\t\t45\n\t],\n\t\"./RewardsProvider/RewardsProvider.js\": [\n\t\t332,\n\t\t9,\n\t\t19,\n\t\t45\n\t],\n\t\"./RewardsProvider/actions\": [\n\t\t296,\n\t\t9,\n\t\t86\n\t],\n\t\"./RewardsProvider/actions.js\": [\n\t\t296,\n\t\t9,\n\t\t86\n\t],\n\t\"./RewardsProvider/constants\": [\n\t\t279,\n\t\t9,\n\t\t99\n\t],\n\t\"./RewardsProvider/constants.js\": [\n\t\t279,\n\t\t9,\n\t\t99\n\t],\n\t\"./RewardsProvider/reducer\": [\n\t\t297,\n\t\t9,\n\t\t87\n\t],\n\t\"./RewardsProvider/reducer.js\": [\n\t\t297,\n\t\t9,\n\t\t87\n\t],\n\t\"./RewardsProvider/rewardsUtils\": [\n\t\t283,\n\t\t9,\n\t\t88\n\t],\n\t\"./RewardsProvider/rewardsUtils.js\": [\n\t\t283,\n\t\t9,\n\t\t88\n\t],\n\t\"./RewardsProvider/saga\": [\n\t\t319,\n\t\t9,\n\t\t66\n\t],\n\t\"./RewardsProvider/saga.js\": [\n\t\t319,\n\t\t9,\n\t\t66\n\t],\n\t\"./RewardsProvider/selectors\": [\n\t\t320,\n\t\t9,\n\t\t67\n\t],\n\t\"./RewardsProvider/selectors.js\": [\n\t\t320,\n\t\t9,\n\t\t67\n\t],\n\t\"./SitemapPage/SitemapPage\": [\n\t\t369,\n\t\t9,\n\t\t36\n\t],\n\t\"./SitemapPage/SitemapPage.js\": [\n\t\t369,\n\t\t9,\n\t\t36\n\t],\n\t\"./StatementIncentivePage/StatementIncentivePage\": [\n\t\t360,\n\t\t9,\n\t\t34\n\t],\n\t\"./StatementIncentivePage/StatementIncentivePage.js\": [\n\t\t360,\n\t\t9,\n\t\t34\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-@1x.jpg\": [\n\t\t708,\n\t\t7,\n\t\t215\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-@2x.jpg\": [\n\t\t709,\n\t\t7,\n\t\t216\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-mobile-@1x.jpg\": [\n\t\t710,\n\t\t7,\n\t\t217\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-mobile-@2x.jpg\": [\n\t\t711,\n\t\t7,\n\t\t218\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-tablet-@1x.jpg\": [\n\t\t712,\n\t\t7,\n\t\t219\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-tablet-@2x.jpg\": [\n\t\t713,\n\t\t7,\n\t\t220\n\t],\n\t\"./StatementPage/StatementPage\": [\n\t\t361,\n\t\t9,\n\t\t35\n\t],\n\t\"./StatementPage/StatementPage.js\": [\n\t\t361,\n\t\t9,\n\t\t35\n\t],\n\t\"./StatementPage/StatementTabs\": [\n\t\t307,\n\t\t9,\n\t\t70\n\t],\n\t\"./StatementPage/StatementTabs.js\": [\n\t\t307,\n\t\t9,\n\t\t70\n\t],\n\t\"./StatementPage/images/banner-statement-@1x.jpg\": [\n\t\t660,\n\t\t7,\n\t\t221\n\t],\n\t\"./StatementPage/images/banner-statement-@2x.jpg\": [\n\t\t661,\n\t\t7,\n\t\t222\n\t],\n\t\"./StatementPage/images/banner-statement-mobile-@1x.jpg\": [\n\t\t656,\n\t\t7,\n\t\t223\n\t],\n\t\"./StatementPage/images/banner-statement-mobile-@2x.jpg\": [\n\t\t657,\n\t\t7,\n\t\t224\n\t],\n\t\"./StatementPage/images/banner-statement-tablet-@1x.jpg\": [\n\t\t658,\n\t\t7,\n\t\t225\n\t],\n\t\"./StatementPage/images/banner-statement-tablet-@2x.jpg\": [\n\t\t659,\n\t\t7,\n\t\t226\n\t],\n\t\"./StatementProvider/StatementProvider\": [\n\t\t321,\n\t\t9,\n\t\t20\n\t],\n\t\"./StatementProvider/StatementProvider.js\": [\n\t\t321,\n\t\t9,\n\t\t20\n\t],\n\t\"./StatementProvider/actions\": [\n\t\t298,\n\t\t9,\n\t\t89\n\t],\n\t\"./StatementProvider/actions.js\": [\n\t\t298,\n\t\t9,\n\t\t89\n\t],\n\t\"./StatementProvider/constants\": [\n\t\t280,\n\t\t9,\n\t\t100\n\t],\n\t\"./StatementProvider/constants.js\": [\n\t\t280,\n\t\t9,\n\t\t100\n\t],\n\t\"./StatementProvider/reducer\": [\n\t\t299,\n\t\t9,\n\t\t90\n\t],\n\t\"./StatementProvider/reducer.js\": [\n\t\t299,\n\t\t9,\n\t\t90\n\t],\n\t\"./StatementProvider/saga\": [\n\t\t322,\n\t\t9,\n\t\t68\n\t],\n\t\"./StatementProvider/saga.js\": [\n\t\t322,\n\t\t9,\n\t\t68\n\t],\n\t\"./StatementProvider/selectors\": [\n\t\t323,\n\t\t9,\n\t\t69\n\t],\n\t\"./StatementProvider/selectors.js\": [\n\t\t323,\n\t\t9,\n\t\t69\n\t],\n\t\"./TermsPage/TermsPage\": [\n\t\t362,\n\t\t9,\n\t\t42\n\t],\n\t\"./TermsPage/TermsPage.js\": [\n\t\t362,\n\t\t9,\n\t\t42\n\t],\n\t\"./TrainingPage/TrainingPage\": [\n\t\t363,\n\t\t9,\n\t\t50\n\t],\n\t\"./TrainingPage/TrainingPage.js\": [\n\t\t363,\n\t\t9,\n\t\t50\n\t],\n\t\"./WebApp/LoriFooter\": [\n\t\t131,\n\t\t9\n\t],\n\t\"./WebApp/LoriFooter.js\": [\n\t\t131,\n\t\t9\n\t],\n\t\"./WebApp/Routes\": [\n\t\t132,\n\t\t9\n\t],\n\t\"./WebApp/Routes.js\": [\n\t\t132,\n\t\t9\n\t],\n\t\"./WebApp/SettingsContext\": [\n\t\t76,\n\t\t9\n\t],\n\t\"./WebApp/SettingsContext.js\": [\n\t\t76,\n\t\t9\n\t],\n\t\"./WebApp/WebApp\": [\n\t\t97,\n\t\t9\n\t],\n\t\"./WebApp/WebApp.js\": [\n\t\t97,\n\t\t9\n\t],\n\t\"./WebApp/actions\": [\n\t\t20,\n\t\t9\n\t],\n\t\"./WebApp/actions.js\": [\n\t\t20,\n\t\t9\n\t],\n\t\"./WebApp/constants\": [\n\t\t8,\n\t\t9\n\t],\n\t\"./WebApp/constants.js\": [\n\t\t8,\n\t\t9\n\t],\n\t\"./WebApp/reducer\": [\n\t\t84,\n\t\t9\n\t],\n\t\"./WebApp/reducer.js\": [\n\t\t84,\n\t\t9\n\t],\n\t\"./WebApp/saga\": [\n\t\t130,\n\t\t9\n\t],\n\t\"./WebApp/saga.js\": [\n\t\t130,\n\t\t9\n\t],\n\t\"./WebApp/selectors\": [\n\t\t51,\n\t\t9\n\t],\n\t\"./WebApp/selectors.js\": [\n\t\t51,\n\t\t9\n\t],\n\t\"./Welcome/Welcome\": [\n\t\t340,\n\t\t9,\n\t\t21\n\t],\n\t\"./Welcome/Welcome.js\": [\n\t\t340,\n\t\t9,\n\t\t21\n\t],\n\t\"./WishlistPage/WishlistPage\": [\n\t\t364,\n\t\t9,\n\t\t51\n\t],\n\t\"./WishlistPage/WishlistPage.js\": [\n\t\t364,\n\t\t9,\n\t\t51\n\t],\n\t\"./WishlistProvider/WishlistProvider\": [\n\t\t324,\n\t\t9,\n\t\t22\n\t],\n\t\"./WishlistProvider/WishlistProvider.js\": [\n\t\t324,\n\t\t9,\n\t\t22\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(2).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, ids[1])\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 638;\nmodule.exports = webpackAsyncContext;","/**\n *\n * Settings defaults - do not edit this file in individual projects, as it provides fallbacks.\n *\n * You can override specific values in the project src/theme/settingsApp.js file.\n *\n */\n\nconst settingsDefault = {\n // How long before the token expiry should the token be refreshed (in minutes)\n authTokenRefreshBeforeExpiry: 10,\n\n // Input date format\n dateFormat: 'dd/MM/yyyy',\n dateLongFormat: 'LLL dd, yyyy',\n dateTimeFormat: 'dd/MM/yyyy HH:mm',\n dateTimeLongFormat: 'E, LLL dd, yyyy HH:mm',\n\n // Form prefer optional indicator over required\n formPreferOptionalIndicator: false,\n formIndicatorOptionalText: '(optional)',\n formIndicatorRequiredText: ' *',\n\n // Path to the login page.\n loginPagePath: '/login/',\n\n // Toggle Remember Me option for login\n loginRememberMeEnabled: true,\n\n // Setting this option to true stores the token information in SessionStorage,\n // meaning it's only available to the current tab, and only until the tab is closed.\n // Setting this to true will disable Remember Me.\n loginUseSessionStorage: false,\n\n // Redirect users with incomplete profiles after signing in.\n // If the path is not specified (or false), the user will stay on the same\n // page where the login form is.\n // The user will be added to currentUserTemp, and any profile update module\n // will need to be supplied that object in order for display content and update\n // the back-end.\n // Important!: If the user is being redirected, ensure that the PrivateRoute\n // component has the `tempAuthAllowed` prop set, otherwise the user will not\n // be able to see/update their profile\n // Relative path with the leading slash. Eg: '/profile/'. Default: false\n redirectOnIncompleteProfile: false,\n\n // Password reset / Forgot password\n loginPasswordResetLabel: 'Reset Password',\n loginPasswordResetShow: true,\n passwordResetEnabled: true,\n passwordResetPagePath: '/password-reset/',\n\n // Path to the logout page - without trailing slash as it's not an exact path\n logoutPagePath: '/logout',\n\n // Path to the profile page\n profilePagePath: '/profile/',\n\n // Mobile App SSO\n mobileAppSSOEnabled: false,\n mobileAppSSOPagePath: '/sso/',\n\n // Rewards page - disable category listing and display rewards on the main page\n rewardsCategorySkip: false,\n\n // Minimum password character length\n minimumPasswordLength: 7,\n passwordRequirementMessage:\n 'Passwords must be at least 7 characters long and must contain at least 1 digit and 1 lowercase letter.',\n\n // Default page size for lists\n defaultPageSize: 100,\n\n // Maximum state data cache time (seconds) - used by shouldFetchData utility\n // Default 5 minutes for regular data, or 10 minutes for infrequent data (eg, contact form definitions)\n dataCacheTime: 300,\n dataCacheTimeLong: 600,\n\n // Order status labels\n orderStatusLabels: {\n Received: 'Claim Received',\n Ordered: 'Reward Ordered',\n Packing: 'Reward being Packed',\n Dispatched: 'Reward Dispatched',\n BackOrder: 'Reward has been placed on Back Order',\n },\n};\n\nexport default settingsDefault;\n","/**\n *\n * Project settings - override any values from platform settingsDefaults here\n *\n */\n\nimport settingsDefault from '_platform/src/theme/settingsDefault';\n\nconst settings = {\n // -- Base Settings --\n siteName: 'Premium Partners Rewards ',\n\n // -- Cloudinary Settings --\n // Cloudinary cloud name\n cloudinaryCloudName: 'incremental',\n\n // -- Rewards --\n // Hide reward category images (main rewards page)\n // rewardsCategoryHideImage: true,\n\n // Pages - must have trailing slash\n cartPage: '/cart/',\n privacyPage: '/privacy/',\n rewardsPage: '/rewards/',\n\n // Delivery method \"Client\" label (usually Branch or Rep)\n deliveryMethodClientLabel: 'Rep',\n\n // Master override settings\n // cartDisabled: true,\n // quickviewDisabled: true,\n // wishlistDisabled: true,\n\n // -- Default Overrides --\n\n // Important!: If the user is being redirected, ensure that the PrivateRoute\n // component has the `tempAuthAllowed` prop set, otherwise the user will not\n // be able to see/update their profile.\n // For futher documentation, see _platform/src/theme/settingsDefault.js\n // redirectOnIncompleteProfile: '/profile/',\n\n // Rewards page - disable category listing and display rewards on the main page\n // rewardsCategorySkip: true,\n};\n\n// Note: If you are altering the breakpoints, make sure you loop over the\n// values and create the media prop. See settingsDefault.js for implementation.\n\n// Deep merge with default values\nconst settingsApp = { ...settingsDefault, ...settings };\n\nexport default settingsApp;\n","/**\n * Application theme\n *\n * Override and extend smooth-ui theme values\n * https://github.com/smooth-code/smooth-ui/blob/master/packages/shared/core/theme.js\n * https://smooth-ui.smooth-code.com/\n */\n\nimport { transparentize } from 'polished';\nimport { thd, theme } from '@smooth-ui/core-sc';\nimport settingsApp from 'theme/settingsApp';\n\n/*\nIf overwriting the default Smooth-UI theme properties, and you're planning on\nre-using them throughout the default export below, make sure to define them in\nthe outer scope, otherwise components attempting to use the value with throw errors\n*/\nconst primary = '#034EA2';\nconst secondary = '#000';\nconst grey = '#E6E6E6';\nconst bluegrey = '#034EA2';\nconst green = '#034EA2';\nconst text = '#FFF';\n\nexport default {\n // Mandatory\n ...theme,\n settingsApp, // Bring in the merged app settings\n\n // Resets\n borderRadius: 0,\n error: thd('danger', '#dc3545'),\n gridMaxWidths: { sm: '100%', md: '100%', lg: '100%', xl: '1200px' },\n primary: primary,\n secondary: secondary,\n text: text,\n grey: grey,\n bluegrey: bluegrey,\n green: green,\n\n // Layout\n borderColor: thd('gray300', '#ddd'),\n containerWidth: '1200px',\n\n // Colours\n defaultFontColor: theme.gray800,\n // pointsValueColor: '#f90',\n\n // Input + Buttons\n inputBtnMinWidth: '200px',\n customInputHintColor: theme.gray600,\n customInputHintFontSize: '.875em',\n customInlineInputInvalidColor: theme.red,\n customCheckboxDisabledBackground: '#ced4da',\n\n // Header + Menu\n customHeaderBackground: primary,\n customHeaderColor: '#f8fbfe',\n customMenuBackground: primary,\n customMenuColor: '#fff',\n customMenuHighlight: primary,\n customMenuHighlightColor: '#000',\n customMenuFocus: transparentize(0.75, '#f4bd19'),\n customSubMenuBackground: '#151d29',\n customMobileMenuOverlayBackground: 'rgba(0, 0, 0, 0.5)',\n\n // Loading animations\n loadingBarColor: primary || '#f4bd19',\n loadingSpinnerPrimary: '#555',\n loadingSpinnerSecondary: '#eee',\n\n // Welcome component\n welcomeBackground: grey,\n welcomeColor: '#000',\n welcomeHighlight: '#000',\n\n // Breadcrumbs\n breadcrumbsBackground: '#000',\n breadcrumbsColor: '#fff',\n breadcrumbsContainerWidth: thd('containerWidth', '100%'),\n breadcrumbsLinkColor: '#fff',\n breadcrumbsLinkHoverColor: '#fff',\n breadcrumbsCurrentLinkColor: '#fff',\n breadcrumbsFontSize: '0.85rem',\n\n // Cart\n // miniCartBackground: '#fff',\n cartBadgeBackground: '#000',\n cartBadgeColor: '#fff',\n cartPointsBalanceBackground: primary,\n cartRemainingNegativeColor: thd('danger', '#dc3545'),\n\n // Rewards\n rewardCategoriesListContainerWidth: thd('containerWidth', '100%'),\n rewardCategoriesFilterContainerWidth: thd('containerWidth', '100%'),\n rewardListContainerWidth: thd('containerWidth', '100%'),\n rewardDetailContainerWidth: thd('containerWidth', '100%'),\n rewardDescription1ContainerWidth: thd('containerWidth', '100%'),\n rewardDescription2ContainerWidth: thd('containerWidth', '100%'),\n\n // Rewards - Quickview\n // quickviewBackground: '#333',\n // quickviewColor: '#fff',\n\n // Rewards - Wishlist\n //miniWishlistBackground: '#000',\n wishlistBadgeBackground: '#000',\n wishlistBadgeColor: '#fff',\n wishlistContainerWidth: '500px',\n wishlistIconActive: primary,\n wishlistIconInactive: '#fff',\n\n // Rewards - Highlight (featured/related rewards)\n rewardsHighlightBackground: '#fff',\n rewardsHighlightContainerWidth: thd('containerWidth', '100%'),\n\n // Statement\n statementHighlightColor: primary,\n statementStatus: {\n achieved: '#034EA2',\n onTrack: '#034EA2',\n close: '#ea7c22',\n behind: '#dc402a',\n inProgress: '#ea7c22',\n timeElapsed: '#C00D0D',\n },\n statementDoughnutBorder: '#A9A9A9',\n statementDoughnutRemainingTrack: '#A9A9A9',\n\n // Tooltips\n tooltipBackground: '#fff',\n tooltipBorderColor: '#fff',\n tooltipColor: thd('defaultFontColor', theme.gray800),\n\n // Pagination\n pagerActiveBackground: 'rgba(0,0,0,0.125)',\n pagerActiveColor: '#fff',\n // pagerColor: thd('gray800', 'inherit'),\n pagerBackgroundHover: 'rgba(0,0,0,0.125)',\n};\n","/**\n * Gets the app and user configuration\n */\n\nimport { call, put, takeLatest } from 'redux-saga/effects';\nimport { showLoading, hideLoading } from 'react-redux-loading-bar';\nimport qs from 'qs';\nimport history from '../../utils/history'; // _platform\nimport {\n api,\n apiErrorHandler,\n apiSetAuthorizationToken,\n} from '../../utils/request'; // _platform\nimport { formatToken, storeToken, removeToken } from '../../utils/tokenUtils'; // _platform\nimport { removeProperty } from '../../utils/utilities'; // _platform\nimport getLoginPath from '../../utils/getLoginPath'; // _platform\n\nimport {\n COUNTRIES_REQUEST,\n USER_LOGOUT_REQUEST,\n USER_PROFILE_REQUEST,\n USER_TOKEN_REQUEST,\n} from './constants';\nimport {\n countriesSuccess,\n countriesError,\n setUser,\n userLogoutRequest,\n userProfileSuccess,\n userProfileError,\n userTokenSuccess,\n userTokenError,\n} from './actions';\n\n/**\n * Request App Settings\n */\nexport function* requestCountries() {\n try {\n yield put(showLoading());\n const response = yield call(() =>\n api.get('/Country/v1/true', {\n description: 'Countries', // Description is used as title for any errors (optional)\n })\n );\n yield put(countriesSuccess(response.data, Math.floor(Date.now() / 1000)));\n } catch (err) {\n yield put(countriesError(apiErrorHandler(err)));\n } finally {\n yield put(hideLoading());\n }\n}\n\n/**\n * Request User Logout\n *\n * 1. Remove currentUser from state (done in reducer)\n * 2. Send logout API request, unless options.options.skipRemote is true\n * 3. Remove token from localStorage and sessionStorage\n * 4. Redirect user to login page (with querystring)\n */\nexport function* requestUserLogout(options) {\n try {\n if (!options.options || options.options.skipRemote !== true) {\n yield call(() =>\n api.post('/Authentication/v1/Logout', {\n description: 'User logout',\n })\n );\n }\n\n removeToken();\n apiSetAuthorizationToken(null);\n } catch (err) {\n // errors\n } finally {\n // redirect with Querystring if necessary\n const loginPath = getLoginPath(\n (options.options && options.options.settingsApp) || {} // Blank object if coming from request.js\n );\n\n if (loginPath) {\n yield call(history.push, loginPath);\n }\n }\n}\n\n/**\n * Request User Token (refresh)\n */\nexport function* requestUserToken(options) {\n try {\n yield put(showLoading());\n\n // On logout page, don't try to refresh the token - return error in order to log the user out\n if (history.location.pathname === options.settingsApp.logoutPagePath) {\n yield put(userTokenError());\n } else {\n const response = yield call(() =>\n api.post('/Authentication/v1/RefreshToken', {\n settingsApp: {\n loginPagePath:\n options &&\n options.settingsApp &&\n options.settingsApp.loginPagePath,\n },\n })\n );\n\n // Format user's token data\n const userData = formatToken(response.data);\n\n // Get the query string\n // Use lowercaseKeys to make the object keys predictable\n const pageQueryString = qs.parse(\n history.location.search.replace(/returnUrl/gi, 'returnUrl'),\n {\n ignoreQueryPrefix: true,\n }\n );\n\n // Original queryString but sanitised\n const cleanQueryString = qs.stringify(pageQueryString);\n\n // Remove returnUrl from querystring and keep the remainder\n const trimmedQueryString = qs.stringify(\n removeProperty(pageQueryString, 'returnUrl')\n );\n\n // Set API Authorization token to be used on subsequent calls\n apiSetAuthorizationToken(userData.token);\n\n // Check if the user has a valid profile\n if (\n response.data.isProfileValid === true &&\n response.data.forcePasswordChange === false\n ) {\n // Store the authentication info\n storeToken(userData, options.settingsApp.loginUseSessionStorage);\n\n // Put authentication info into App state\n yield put(setUser(userData));\n yield put(userTokenSuccess()); // After setUser() in order to avoid infinite loops\n } else {\n // Put authentication info into App state as currentUserTemp until the profile is complete\n // yield put(setUser(userData, 'incompleteProfile'));\n yield put(\n setUser(userData, {\n forcePasswordChange: response.data.forcePasswordChange,\n isProfileValid: response.data.isProfileValid,\n })\n );\n yield put(userTokenSuccess()); // After setUser() in order to avoid infinite loops\n\n const { redirectOnIncompleteProfile } = options.settingsApp;\n\n // Check if we should redirect to another page if the profile is incomplete\n // Include any query strings that may be present\n if (\n redirectOnIncompleteProfile &&\n response.data.forcePasswordChange === false\n ) {\n // Remove returnUrl if it matches redirectOnIncompleteProfile path\n const redirectQS =\n pageQueryString.returnUrl === redirectOnIncompleteProfile\n ? trimmedQueryString\n : cleanQueryString;\n\n yield call(history.push, {\n pathname: redirectOnIncompleteProfile,\n search: redirectQS && `?${redirectQS}`,\n });\n }\n }\n }\n } catch (err) {\n yield put(userTokenError(apiErrorHandler(err)));\n\n yield put(\n userLogoutRequest({\n skipRemote: true,\n })\n );\n } finally {\n yield put(hideLoading());\n }\n}\n\n/**\n * Request profile\n */\nexport function* requestUserProfile() {\n try {\n yield put(showLoading());\n const response = yield call(() =>\n api.get('/User/v1/Profile', {\n description: 'Profile details',\n })\n );\n\n yield put(userProfileSuccess(response.data, Math.floor(Date.now() / 1000)));\n } catch (err) {\n yield put(userProfileError(apiErrorHandler(err)));\n } finally {\n yield put(hideLoading());\n }\n}\n\n/**\n * Default saga managers the watcher lifecycle\n */\nexport default function* appSaga() {\n // Specify the constant to watch and the saga generator function to call when one is triggered\n // It returns a task descriptor (just like a fork) so we can continue execution, and will be\n // automatically cancelled on unmount (unless the mode is set to DAEMON)\n // Specify as many yields (watchers) here as necessary\n yield takeLatest(COUNTRIES_REQUEST, requestCountries);\n yield takeLatest(USER_LOGOUT_REQUEST, requestUserLogout);\n yield takeLatest(USER_PROFILE_REQUEST, requestUserProfile);\n yield takeLatest(USER_TOKEN_REQUEST, requestUserToken);\n}\n","/**\n * App\n *\n * This is the main container that gets loaded and is a wrapper around all other components.\n * It should contain containers/components and state available to all other pages.\n *\n * See below for order of import statements\n */\n\n// Core imports\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\n\n// Style, SEO and settings\nimport { withTheme } from '@smooth-ui/core-sc';\n\n// Component features\nimport { apiSetAuthorizationToken } from '../../utils/request'; // _platform\nimport injectSaga from '../../utils/injectSaga'; // _platform\nimport { userLogoutRequest, userTokenRequest } from './actions';\nimport {\n selectCurrentUser,\n selectIsFetchingToken,\n selectStatus,\n} from './selectors';\nimport saga from './saga';\n\nclass App extends Component {\n componentDidMount() {\n // Set API Authorization token if one is stored\n apiSetAuthorizationToken(this.props.currentUser.token);\n\n // Refresh user's token if necessary\n this.tokenRefresh(true); // Action this even if the user has a token, even if it's not close to expiry. To ensure that the token is still valid after a refresh\n\n // Set up a page change listener\n this.props.history.listen(location => {\n // If the current page is not /login/, refresh the token if necessary\n if (location.pathname !== this.props.theme.settingsApp.loginPagePath)\n this.tokenRefresh();\n });\n }\n\n /**\n * refreshToken\n *\n * Determine if the user's authentication token needs to be refreshed\n * in order to keep them logged in safely for as long as possible\n *\n * @param {force} bool If token is present refresh it, bypassing token expiry check\n */\n tokenRefresh(force) {\n const { currentUser, isFetchingToken } = this.props;\n\n if (currentUser.token && currentUser.tokenData && !isFetchingToken) {\n const { authTokenRefreshBeforeExpiry } = this.props.theme.settingsApp;\n\n // Determine the lifespan of a token\n const tokenLifeTime =\n (currentUser.tokenData.tokenExpiry -\n currentUser.tokenData.generatedLocal) /\n 60;\n\n // Check if the authTokenRefreshBeforeExpiry is longer than the max life of token\n // If so, refresh token after 5 mins of token generation\n const refreshPeriod =\n authTokenRefreshBeforeExpiry < tokenLifeTime\n ? authTokenRefreshBeforeExpiry // If the setting is less than token max life\n : tokenLifeTime - 5; // After 5 minutes\n\n const triggerFetchTime = new Date(\n currentUser.tokenData.tokenExpiry * 1000\n );\n triggerFetchTime.setMinutes(\n triggerFetchTime.getMinutes() - refreshPeriod\n );\n\n if (force || new Date() > triggerFetchTime) {\n // Check token expiry time? If so, and the token has expired, it may leave\n // the user feeling as though they are logged in when they are not.\n // If we don't check, then the fetch will run, return a 401 and push to logout.\n this.props.dispatch(userTokenRequest(this.props.theme.settingsApp));\n }\n }\n }\n\n render() {\n if (this.props.children) {\n return React.Children.map(this.props.children, childElement =>\n React.cloneElement(childElement, this.props)\n );\n }\n\n return null;\n }\n}\n\nApp.propTypes = {\n children: PropTypes.node.isRequired,\n currentUser: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired,\n isFetchingToken: PropTypes.bool.isRequired,\n onLogout: PropTypes.func.isRequired,\n status: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n dispatch: PropTypes.func.isRequired,\n};\n\nfunction mapDispatchToProps(dispatch, props) {\n const settingsApp = (props.theme && props.theme.settingsApp) || {};\n\n return {\n onLogout: () => dispatch(userLogoutRequest({ settingsApp })),\n dispatch,\n };\n}\n\nconst mapStateToProps = createStructuredSelector({\n currentUser: selectCurrentUser(),\n isFetchingToken: selectIsFetchingToken(),\n status: selectStatus(),\n});\n\nconst withConnect = connect(\n mapStateToProps,\n mapDispatchToProps\n);\n\nconst withSaga = injectSaga({ key: 'app', saga });\n\nexport default compose(\n withTheme,\n withSaga,\n withRouter,\n withConnect\n)(App);\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n\n // Execute callback\n if (config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","// Polyfills required for IE\nimport 'react-app-polyfill/ie11'; // CRA package for IE 11 support\n// https://github.com/facebook/create-react-app/tree/master/packages/react-app-polyfill\nimport 'core-js/features/array/includes';\nimport 'core-js/features/reflect/apply';\nimport 'core-js/features/reflect/construct';\nimport 'core-js/features/reflect/has';\n// Required by us\nimport 'core-js/features/array/find';\nimport 'core-js/features/array/virtual/find-index'; // styled-components\nimport 'core-js/features/number';\nimport 'core-js/features/object/values'; // Statements/chartjs\n// End Polyfills\n\nimport React from 'react';\nimport { hydrate, render } from 'react-dom';\nimport { Router } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport history from '_platform/src/utils/history';\nimport store from '_platform/src/utils/store';\nimport 'theme/globalStylesApp';\nimport { ThemeProvider } from '@smooth-ui/core-sc';\nimport themeApp from 'theme/themeApp'; // Settings and Theme\nimport App from '_platform/src/containers/App/App';\nimport WebApp from 'containers/WebApp/WebApp';\nimport * as serviceWorker from './serviceWorker';\n\nconst rootElement =\n document.getElementById('root') || document.createElement('div');\n\nif (rootElement.hasChildNodes()) {\n hydrate(\n \n \n \n \n \n \n \n \n ,\n rootElement\n );\n} else {\n render(\n \n \n \n \n \n \n \n \n ,\n rootElement\n );\n}\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","/**\n * Check the shape of the redux store\n */\n\nimport conformsTo from 'lodash/conformsTo';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport invariant from 'invariant';\n\nexport default function checkStore(store) {\n const shape = {\n dispatch: isFunction,\n subscribe: isFunction,\n getState: isFunction,\n replaceReducer: isFunction,\n runSaga: isFunction,\n injectedReducers: isObject,\n injectedSagas: isObject,\n };\n\n invariant(\n conformsTo(store, shape),\n '(src/utils...) injectors: Expected a valid redux store'\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SettingsContext = React.createContext();\n\nexport const SettingsProvider = ({ settings, ...props }) => (\n \n {props.children}\n \n);\n\nSettingsProvider.propTypes = {\n children: PropTypes.node.isRequired,\n settings: PropTypes.object.isRequired,\n};\n\nexport function withSettings(Component) {\n return function contextComponent(props) {\n return (\n \n {context => }\n \n );\n };\n}\n\nexport default withSettings;\n","/**\n * Check if the URL is absolute or relative\n *\n * @param {string} url URL path\n */\nexport function isUrlAbsolute(url) {\n const r = new RegExp('^(?:[a-z]+:)?//', 'i');\n return r.test(url);\n}\n\n/**\n * removeProperty - Immutably removes a property from an object\n * Use as an immutable replacement to the `delete` keyword\n *\n * @param {object} obj Object from which the property should be removed\n * @param {string} property Name of the property\n */\nexport const removeProperty = (obj, property) =>\n Object.keys(obj).reduce((acc, key) => {\n return key !== property ? { ...acc, [key]: obj[key] } : acc;\n }, {});\n\n/**\n * flattenDeepArrayOfObjects - Flatten a deep array of objects\n *\n * Example:\n * const routesOriginal = [\n * {\n * route: '/users',\n * component: 'UsersPage/UsersPage',\n * subRoutes: [\n * { route: '/users/:id/profile', component: 'UsersProfile/UsersProfile' },\n * ],\n * }\n * ]\n * const routes = flattenDeepArrayOfObjects(routesOriginal, 'subRoutes');\n *\n * Result:\n * [\n * {\n * route: '/users',\n * component: 'UsersPage/UsersPage',\n * },\n * {\n * route: '/users/:id/profile',\n * component: 'UsersProfile/UsersProfile',\n * },\n * ]\n *\n * @param {array} arr The array of objects\n * @param {string} childrenProp The property that contains the children\n */\nexport const flattenDeepArrayOfObjects = function(\n arr,\n childrenProp = 'children'\n) {\n const array = Array.isArray(arr) ? arr : [arr];\n return array.reduce(function(acc, item) {\n acc.push(item);\n if (item[childrenProp]) {\n acc = acc.concat(flattenDeepArrayOfObjects(item[childrenProp]));\n // delete item[childrenProp];\n }\n return acc;\n }, []);\n};\n\n/**\n * untrailingSlashIt - Remove trailing slash from a path if there is one\n *\n * @param {string} str The URL or path\n */\nexport const untrailingSlashIt = str => str.replace(/\\/$/, '');\n\n/**\n * trailingSlashIt - Add a trailing slash to a path if it doesn't have one\n *\n * @param {string} str The URL or path\n */\nexport const trailingSlashIt = str => `${untrailingSlashIt(str)}/`;\n\n/**\n * lowercaseFirstLetter - Convert the first character in a string to lower case\n * Used in normalising endpoint response data objects\n *\n * @param {string} string The string\n */\nexport const lowercaseFirstLetter = string =>\n string.charAt(0).toLowerCase() + string.slice(1);\n","/**\n * WebApp constants\n */\n\nexport const CART_REQUEST = 'local/WebApp/CART_REQUEST';\nexport const CART_SUCCESS = 'local/WebApp/CART_SUCCESS';\nexport const CART_ERROR = 'local/WebApp/CART_ERROR';\nexport const CUSTOMER_REPS_REQUEST = 'local/WebApp/CUSTOMER_REPS_REQUEST';\nexport const CUSTOMER_REPS_SUCCESS = 'local/WebApp/CUSTOMER_REPS_SUCCESS';\nexport const CUSTOMER_REPS_ERROR = 'local/WebApp/CUSTOMER_REPS_ERROR';\nexport const MENU_REQUEST = 'local/WebApp/MENU_REQUEST';\nexport const MENU_SUCCESS = 'local/WebApp/MENU_SUCCESS';\nexport const MENU_ERROR = 'local/WebApp/MENU_ERROR';\nexport const MENU_UPDATE_ROUTES = 'local/WebApp/MENU_UPDATE_ROUTES';\nexport const SETTINGS_REQUEST = 'local/WebApp/SETTINGS_REQUEST';\nexport const SETTINGS_SUCCESS = 'local/WebApp/SETTINGS_SUCCESS';\nexport const SETTINGS_ERROR = 'local/WebApp/SETTINGS_ERROR';\nexport const USER_LOGOUT_REQUEST_CLEANUP =\n 'local/WebApp/USER_LOGOUT_REQUEST_CLEANUP';\nexport const WISHLIST_REQUEST = 'local/WebApp/WISHLIST_REQUEST';\nexport const WISHLIST_SUCCESS = 'local/WebApp/WISHLIST_SUCCESS';\nexport const WISHLIST_ERROR = 'local/WebApp/WISHLIST_ERROR';\nexport const WISHLIST_ADDREMOVE_REQUEST =\n 'local/WebApp/WISHLIST_ADDREMOVE_REQUEST';\n","/**\n * Format the token for storage in state\n *\n * @param {object} data Response data from the login and refresh token endpoints\n * @returns currentUser object\n */\nexport function formatToken(data) {\n const timestamp = Math.floor(new Date().getTime() / 1000);\n const timeDiff = timestamp - data.generated;\n const decodedToken = decodeToken(data.token);\n const permissions = decodedToken\n ? decodedToken['INCREMENTAL.LORI/PERMISSION']\n : null;\n\n return {\n token: data.token,\n tokenData: {\n generatedServer: data.generated,\n expiryServer: data.expiry,\n generatedLocal: timestamp,\n timeDifference: timeDiff,\n tokenExpiry: data.expiry + timeDiff,\n },\n permissions,\n roles: data.roles,\n userId: decodedToken.nameid,\n disableClaiming: !(\n !decodedToken.DisableClaiming || decodedToken.DisableClaiming === 'False'\n ),\n };\n}\n\n/**\n * Store authentication token\n *\n * @param {object} userData User data object as outputted by utils/formatToken\n * @param {boolean} [useSessionStorage=false] Use session or local storage\n */\nexport function storeToken(userData, useSessionStorage = false) {\n if (!!useSessionStorage) {\n sessionStorage.setItem(\n 'auth',\n JSON.stringify({ token: userData.token, tokenData: userData.tokenData })\n );\n localStorage.removeItem('auth');\n } else {\n localStorage.setItem(\n 'auth',\n JSON.stringify({ token: userData.token, tokenData: userData.tokenData })\n );\n sessionStorage.removeItem('auth');\n }\n}\n\n/**\n * Retrieve authentication token\n *\n * @returns {object OR null} Parsed value from session or local storage, or null\n */\nexport function retrieveToken() {\n return (\n (sessionStorage.auth && JSON.parse(sessionStorage.auth)) ||\n (localStorage.auth && JSON.parse(localStorage.auth)) ||\n null\n );\n}\n\n/**\n * Remove authentication token\n */\nexport function removeToken() {\n localStorage.removeItem('auth');\n sessionStorage.removeItem('auth');\n}\n\n/**\n * Decode token\n */\nexport function decodeToken(token) {\n if (!token) return false;\n\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n return JSON.parse(window.atob(base64));\n}\n","/**\n * WebApp reducer\n */\n\nimport {\n CART_REQUEST,\n CART_SUCCESS,\n CART_ERROR,\n CUSTOMER_REPS_REQUEST,\n CUSTOMER_REPS_SUCCESS,\n CUSTOMER_REPS_ERROR,\n MENU_REQUEST,\n MENU_SUCCESS,\n MENU_ERROR,\n MENU_UPDATE_ROUTES,\n SETTINGS_REQUEST,\n SETTINGS_SUCCESS,\n SETTINGS_ERROR,\n USER_LOGOUT_REQUEST_CLEANUP,\n WISHLIST_REQUEST,\n WISHLIST_SUCCESS,\n WISHLIST_ERROR,\n} from './constants';\n\nexport const initialState = {\n cart: undefined,\n customerReps: undefined,\n menu: null,\n routes: (localStorage.routes && JSON.parse(localStorage.routes)) || undefined,\n settings: {},\n wishlist: undefined,\n};\n\nfunction webAppReducer(state = initialState, action) {\n switch (action.type) {\n case CART_REQUEST:\n if (action.refresh) {\n return state;\n }\n\n return {\n ...state,\n cart: { ...state.cart, isLoading: true } || { isLoading: true },\n };\n case CART_SUCCESS:\n return {\n ...state,\n cart: action.response,\n };\n case CART_ERROR:\n return {\n ...state,\n cart: initialState.cart,\n };\n case CUSTOMER_REPS_REQUEST:\n return {\n ...state,\n customerReps: state.customerReps || {},\n };\n case CUSTOMER_REPS_SUCCESS:\n return {\n ...state,\n customerReps: {\n data: action.response,\n lastUpdated: action.lastUpdated,\n },\n };\n case CUSTOMER_REPS_ERROR:\n return {\n ...state,\n customerReps: initialState.customerReps,\n };\n case MENU_ERROR:\n return {\n ...state,\n menu: initialState.menu,\n };\n case MENU_REQUEST:\n if (action.refresh) {\n return state;\n }\n\n return {\n ...state,\n menu: [],\n };\n case MENU_SUCCESS:\n return {\n ...state,\n menu: action.response,\n };\n case MENU_UPDATE_ROUTES:\n return {\n ...state,\n routes: action.response,\n };\n case SETTINGS_ERROR:\n return {\n ...state,\n settings: initialState.settings,\n };\n case SETTINGS_REQUEST:\n if (action.refresh) {\n return state;\n }\n\n return {\n ...state,\n settings: {\n lastUpdated: null,\n },\n };\n case SETTINGS_SUCCESS:\n return {\n ...state,\n settings: {\n ...state.settings,\n ...action.response,\n lastUpdated: action.lastUpdated,\n },\n };\n case USER_LOGOUT_REQUEST_CLEANUP:\n return {\n ...state,\n cart: initialState.cart,\n customerReps: initialState.customerReps,\n wishlist: initialState.wishlist,\n };\n case WISHLIST_REQUEST:\n if (state.wishlist) {\n return state; // Perf\n }\n\n return {\n ...state,\n wishlist: [],\n };\n case WISHLIST_SUCCESS:\n return {\n ...state,\n wishlist: action.response,\n };\n case WISHLIST_ERROR:\n return {\n ...state,\n wishlist: initialState.wishlist,\n };\n default:\n return state;\n }\n}\n\nexport default webAppReducer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// Style and SEO\nimport { css, up, styled, thd } from '@smooth-ui/core-sc';\nimport { Link } from 'react-router-dom';\n\nimport { withSettings } from 'containers/WebApp/SettingsContext';\nimport Logo from './images/Logo-Footer@2x.png';\n\nconst FooterWrapper = styled.footer`\n background-color: ${thd('primary', 'primary')};\n border-top: 8px solid #fff;\n text-transform: uppercase;\n color: #fff;\n`;\n\nconst FooterContainer = styled.div`\n display: flex;\n flex-direction: column;\n max-width: 1200px;\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n padding: 0.3rem 0 0.2rem 0;\n ${up(\n 'md',\n css`\n flex-direction: row;\n justify-content: space-between;\n `\n )};\n div {\n font-size: 13px;\n padding: 5px 0;\n text-align: center;\n ${up(\n 'md',\n css`\n padding-left: 1rem;\n text-align: left;\n `\n )};\n }\n ul {\n padding-left: 0;\n list-style: none;\n display: flex;\n flex-direction: column;\n justify-content: center;\n ${up(\n 'md',\n css`\n flex-direction: row;\n padding-top: 1rem;\n `\n )};\n }\n li {\n font-size: 12px;\n color: #fff;\n text-align: center;\n padding: 5px 0;\n ${up(\n 'md',\n css`\n padding: inherit;\n text-align: left;\n &:nth-last-child(1) {\n border-right: none;\n }\n `\n )};\n a {\n color: #fff;\n font-weight: normal;\n text-decoration: none;\n padding: 0.1rem 1rem;\n &:hover {\n text-decoration: underline;\n }\n }\n }\n`;\n\nconst Footer = ({ siteName }) => (\n \n \n
\n
    \n
  • \n Terms & Conditions\n
  • \n
  • \n Privacy Policy\n
  • \n
  • \n FAQs\n
  • \n
  • \n Sitemap\n
  • \n
\n
© EPSON PREMIUM PARTNER REWARDS {new Date().getFullYear()}
\n
\n

\n \"Epson\n

\n
\n
\n);\n\nFooter.propTypes = {\n siteName: PropTypes.string,\n};\n\nFooter.defaultProps = {\n siteName: 'Lori Program Default',\n};\n\nexport default withSettings(Footer);\n","/**\n * Scroll to top on route change\n *\n * Based on: https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/guides/scroll-restoration.md\n *\n * Modified to exclude routes with hashes, as those should scroll to the anchor,\n * even though those are most likely to come from external links.\n */\n\nimport { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nclass ScrollToTop extends Component {\n componentDidUpdate(prevProps) {\n if (\n this.props.location !== prevProps.location &&\n this.props.location.hash === ''\n ) {\n window.scrollTo(0, 0);\n }\n }\n\n render() {\n return this.props.children;\n }\n}\n\nScrollToTop.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object.isRequired,\n};\n\nScrollToTop.defaultProps = {\n children: undefined,\n};\n\nexport default withRouter(ScrollToTop);\n","/**\n * WebApp\n *\n * This is the main container for the project.\n */\n\n// Core imports\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\nimport LoadingBar from 'react-redux-loading-bar';\nimport { cssTransition, ToastContainer } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.min.css';\nimport { CloudinaryContext } from 'cloudinary-react';\n\n// Style, SEO and settings\nimport Helmet from 'react-helmet';\nimport { styled, withTheme } from '@smooth-ui/core-sc';\nimport GlobalStylesApp from 'theme/globalStylesApp';\n\n// Data\nimport injectReducer from '_platform/src/utils/injectReducer';\nimport injectSaga from '_platform/src/utils/injectSaga';\nimport {\n cartRequest,\n menuRequest,\n settingsRequest,\n wishlistRequest,\n} from './actions';\nimport reducer from './reducer';\nimport saga from './saga';\nimport {\n selectCart,\n selectMenu,\n selectRoutes,\n selectSettings,\n selectSettingsNextClaimingPeriod,\n selectSettingsPointsUOM,\n selectSettingsProgram,\n selectSettingsSalesUOMs,\n selectWishlist,\n} from './selectors';\nimport { SettingsProvider } from './SettingsContext';\n\n// Additional Components/Containers\nimport { trailingSlashIt } from '_platform/src/utils/utilities';\nimport LoadAsync from '_platform/src/utils/LoadAsync';\nimport Routes from './Routes';\nimport Footer from '../../components/CustomComponents/CustomFooter/Footer';\nimport LoriFooter from './LoriFooter';\nimport ScrollToTop from '_platform/src/components/ScrollToTop/ScrollToTop';\n\nconst Header = LoadAsync(() =>\n import(\n /* webpackChunkName: \"header\" */ 'components/CustomComponents/CustomHeader/Header'\n )\n);\nconst HeaderNav = LoadAsync(() =>\n import(\n /* webpackChunkName: \"headerNav\" */ 'components/CustomComponents/CustomHeaderNav/HeaderNav'\n )\n);\nconst Welcome = LoadAsync(() =>\n import(/* webpackChunkName: \"welcome\" */ 'containers/Welcome/Welcome')\n);\n\nconst AppWrapper = styled.div`\n /* for child elements */\n display: flex;\n flex-direction: column;\n\n /* sticky footer */\n flex: 1 0 auto;\n`;\n\nconst PageWrapper = styled.div`\n /* for child elements */\n display: flex;\n flex-direction: column;\n flex: 1 0 auto;\n`;\n\nconst ToastifyTransition = cssTransition({\n enter: 'Toastify__slide-enter--top-right',\n exit: 'Toastify__slide-exit--top-right',\n duration: [300, 600],\n});\n\nclass WebApp extends Component {\n componentDidMount() {\n // If the menu is not present, and the user does not have a stored token,\n // refresh the menu.\n // If the user has a token, the menu will be updated in cDU below via token refresh.\n // Prevents unnecessary initial request\n if (!this.props.menu && !this.props.currentUser.token) {\n this.props.onMenuRequest();\n }\n }\n\n componentDidUpdate(prevProps) {\n // On change of permissions, request the menu (login, token refresh)\n // Won't run if the user has just logged out (as the permissions prop is missing),\n // so we handle that in the logout saga\n if (\n (this.props.currentUser.permissions &&\n this.props.currentUser.permissions !==\n prevProps.currentUser.permissions) ||\n this.props.currentUser.userId !== prevProps.currentUser.userId\n ) {\n this.props.onMenuRequest(true);\n\n // Request the application settings\n // Need to be authenticated to access the endpoints\n // Should this change, need to copy to cDM as well, and remove the\n // undefined condition from this one.\n if (this.props.settings.lastUpdated === undefined) {\n this.props.onSettingsRequest();\n }\n\n // Fetch the Cart\n // Do not skip fetch using `settingsApp.cartDisabled` as the cart details\n // are used for the welcome module\n if (\n this.props.cart === undefined ||\n this.props.cart.lastUpdated === undefined\n ) {\n this.props.onCartRequest();\n }\n\n // Fetch the Wishlist\n // Can skip fetching via settingsApp.wishlistDisabled\n // We're not checking the settings from API as the request would take too long to fetch, causing needless re-renders.\n // The wishlist button / functionality will be disabled/hidden with either of the settings though.\n if (\n !this.props.theme.settingsApp.wishlistDisabled &&\n (this.props.wishlist === undefined ||\n this.props.wishlist.lastUpdated === undefined)\n ) {\n this.props.onWishlistRequest();\n }\n }\n }\n\n render() {\n const { theme } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n {trailingSlashIt(this.props.location.pathname) !==\n '/login/' && (\n
\n \n
\n )}\n {/*\n Prevent unnecessary re-renders of the Welcome container, and ensure the user is logged in\n Cart is fetched for every logged in user via componentDidUpdate above\n */}\n {this.props.cart && !this.props.cart.isLoading && (\n \n )}\n\n \n \n \n
\n