{"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","_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/request.js","_platform/src/utils/simpleSlugify.js","_platform/src/theme/globalStyles.js","theme/globalStylesApp.js","_platform/src/components/MessageBox/MessageBox.js","_platform/src/utils/checkPermissions.js","_platform/src/utils/checkRoles.js","_platform/src/utils/PrivateComponent.js","_platform/src/utils/core/reducerInjectors.js","_platform/src/utils/injectReducer.js","containers/WebApp/actions.js","_platform/src/components/Loading/LoadingAnimation.js","components/CustomComponents/CustomFooter/images/Footer-Logo@2x.png","_platform/src/containers/App/actions.js","containers/WebApp/selectors.js","_platform/src/components/Loading/Loading.js","_platform/src/utils/LoadAsync.js","_platform/src/utils/history.js","_platform/src/containers/App/selectors.js","_platform/src/utils/utilities.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","containers/WebApp/constants.js","_platform/src/utils/tokenUtils.js","containers/WebApp/reducer.js","components/CustomComponents/CustomFooter/Footer.js","_platform/src/components/LoriFooter/LoriFooter.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_src4027493836_src_Patties_Extravaganza_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","requestPatties","rootSaga","response","error","_codebuild_output_src4027493836_src_Patties_Extravaganza_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_src4027493836_src_Patties_Extravaganza_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_src4027493836_src_Patties_Extravaganza_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","_response5","_error5","_context8","pattiesStatementSuccess","pattiesStatementError","_marked8","_context9","takeLatest","CART_REQUEST","CUSTOMER_REPS_REQUEST","MENU_REQUEST","SETTINGS_REQUEST","WISHLIST_REQUEST","WISHLIST_ADDREMOVE_REQUEST","PATTIES_STATEMENT_REQUEST","_marked9","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","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","simpleSlugify","text","toString","trim","globalStyles","css","_templateObject","thd","GlobalStylesApp","createGlobalStyle","globalStylesApp_templateObject","loriGlobalStyles","StylesApp","Fragment","smooth_ui_core_sc_es","StyledAlert","styled","Alert","Title","div","_templateObject2","Multiline","_templateObject3","MessageBox","children","_ref$title","_ref$variant","variant","react__WEBPACK_IMPORTED_MODULE_1___default","checkPermissions","requiredPermissions","Array","isArray","permissions","some","propTypes","PropTypes","object","isRequired","array","checkPermissionsMemoized","memoizeOne","checkRoles","requiredRoles","roles","checkRolesMemoized","PrivateComponent","deniedPermissions","deniedRoles","displayError","errorMessage","publicOnly","redirectOnError","UnauthorisedComponent","RedirectOnErrorComponent","userId","injectReducerFactory","reducer","replaceReducer","injectReducer","ReducerInjector","r","cartRequest","customerRepsRequest","settingsRequest","wishlistAddRemoveRequest","pattiesStatementRequest","_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","PATTIES_STATEMENT_SUCCESS","PATTIES_STATEMENT_ERROR","SpinLoader","span","thickness","sColor","pColor","height","width","LoadingAnimation","className","style","_ref$theme","loadingSpinnerPrimary","loadingSpinnerSecondary","module","exports","countriesRequest","countriesSuccess","countriesError","setUser","userProfileRequest","userProfileSuccess","userProfileError","userTokenRequest","userTokenSuccess","userTokenError","selectState","selectCart","selectCustomerReps","selectMenu","selectRoutes","selectSettings","selectSettingsNextClaimingPeriod","selectSettingsPointsUOM","selectSettingsProgram","selectSettingsSalesUOMs","selectWishlist","selectPatties","reselect__WEBPACK_IMPORTED_MODULE_0__","_reducer__WEBPACK_IMPORTED_MODULE_1__","webApp","createSelector","cart","customerReps","menu","settings","find","pointsMeasure","filter","wishlist","patties","Loading","code","timedOut","onClick","retry","pastDelay","loadFn","opts","Loadable","loader","loading","timeout","history__WEBPACK_IMPORTED_MODULE_0__","createBrowserHistory","selectCountries","selectIsFetchingToken","selectStatus","selectUserOptions","selectUserProfile","selectGlobalState","isUrlAbsolute","RegExp","test","removeProperty","obj","property","reduce","acc","_codebuild_output_src4027493836_src_Patties_Extravaganza_LORI_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__","_codebuild_output_src4027493836_src_Patties_Extravaganza_LORI_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__","arr","childrenProp","untrailingSlashIt","str","trailingSlashIt","lowercaseFirstLetter","string","charAt","slice","./AboutPage/AboutAwardsNight","./AboutPage/AboutAwardsNight.js","./AboutPage/AboutPage","./AboutPage/AboutPage.js","./AboutPage/images/about@2x.png","./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.svg","./HomePage/images/Icon2.svg","./HomePage/images/Icon3.svg","./HomePage/images/Ribbon.svg","./HomePage/images/Ribbon@2x.png","./HomePage/images/calendar.svg","./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/Background-v2.jpg","./LoginPage/images/Background-v2@2x.jpg","./LoginPage/images/Patties-Extravaganza@2x.png","./LoginPage/images/Patties@2x.png","./LoginPage/images/Text.png","./LoginPage/images/Text@2x.png","./LoginPage/images/image-login_page-background-@1x.jpg","./LoginPage/images/image-login_page-background-@2x.jpg","./LoginPage/images/leader_ribbon_col@2x.png","./LoginPage/images/welcome-bottom@1x.png","./LoginPage/images/welcome-bottom@2x.png","./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/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","id","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","cartDisabled","quickviewDisabled","wishlistDisabled","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","customSubMenuBackground","customMobileMenuOverlayBackground","loadingBarColor","welcomeBackground","welcomeColor","welcomeHighlight","breadcrumbsColor","breadcrumbsContainerWidth","breadcrumbsLinkColor","breadcrumbsLinkHoverColor","breadcrumbsCurrentLinkColor","breadcrumbsFontSize","cartBadgeBackground","cartBadgeColor","cartPointsBalanceBackground","transparentize","cartRemainingNegativeColor","rewardCategoriesListContainerWidth","rewardCategoriesFilterContainerWidth","rewardListContainerWidth","rewardDetailContainerWidth","rewardDescription1ContainerWidth","rewardDescription2ContainerWidth","wishlistBadgeBackground","wishlistBadgeColor","wishlistContainerWidth","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","storeToken","App","tokenRefresh","listen","force","tokenData","tokenLifeTime","tokenExpiry","generatedLocal","refreshPeriod","triggerFetchTime","setMinutes","getMinutes","_this2","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_src4027493836_src_Patties_Extravaganza_LORI_FED_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__","Provider","withSettings","Consumer","timestamp","getTime","timeDiff","generated","decodedToken","base64","split","atob","decodeToken","generatedServer","expiryServer","expiry","timeDifference","nameid","disableClaiming","DisableClaiming","sessionStorage","auth","webAppReducer","isLoading","FooterWrapper","footer","FooterContainer","up","_templateObject4","LogoContainers","_templateObject5","Footer","src","Logo","alt","react_router_dom","StyledLoriFooter","LoriFooter_templateObject","LoriFooter","href","target","rel","ScrollToTop","prevProps","hash","scrollTo","Header","HeaderNav","Welcome","AppWrapper","WebApp_templateObject","PageWrapper","WebApp_templateObject2","ToastifyTransition","cssTransition","enter","exit","duration","onMenuRequest","onSettingsRequest","onCartRequest","onWishlistRequest","onPattiesStatementRequest","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","components_LoriFooter_LoriFooter","globalStylesApp","withReducer","composeEnhancers","sagaMiddleware","createSagaMiddleware","middlewares","enhancers","applyMiddleware","apply","createStore","run","configureStore"],"mappings":"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AAC,GAAG,OAAIA,EAAIpY,QAAQ,MAAO,KAO9CqY,EAAkB,SAAAD,GAAG,SAAAha,OAAO+Z,EAAkBC,GAAzB,MAQrBE,EAAuB,SAAAC,GAAM,OACxCA,EAAOC,OAAO,GAAGtS,cAAgBqS,EAAOE,MAAM,yBCxFhD,IAAAvW,EAAA,CACAwW,+BAAA,CACA,IACA,EACA,IAEAC,kCAAA,CACA,IACA,EACA,IAEAC,wBAAA,CACA,IACA,EACA,IAEAC,2BAAA,CACA,IACA,EACA,IAEAC,kCAAA,CACA,IACA,EACA,KAEAC,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,8BAAA,CACA,IACA,EACA,KAEAC,8BAAA,CACA,IACA,EACA,KAEAC,8BAAA,CACA,IACA,EACA,KAEAC,+BAAA,CACA,IACA,EACA,KAEAC,kCAAA,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,GACA,IAEAC,+BAAA,CACA,IACA,EACA,EACA,EACA,EACA,GACA,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,uCAAA,CACA,IACA,EACA,KAEAC,0CAAA,CACA,IACA,EACA,KAEAC,iDAAA,CACA,IACA,EACA,KAEAC,oCAAA,CACA,IACA,EACA,KAEAC,8BAAA,CACA,IACA,EACA,KAEAC,iCAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,yDAAA,CACA,IACA,EACA,KAEAC,8CAAA,CACA,IACA,EACA,KAEAC,2CAAA,CACA,IACA,EACA,KAEAC,2CAAA,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,EACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,EACA,EACA,IAEAC,sCAAA,CACA,IACA,EACA,IAEAC,yCAAA,CACA,IACA,EACA,IAEAC,4BAAA,CACA,IACA,EACA,EACA,EACA,EACA,IAEAC,+BAAA,CACA,IACA,EACA,EACA,EACA,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,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,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,wBAAA,CACA,IACA,EACA,IAEAC,2BAAA,CACA,IACA,EACA,IAEAC,8BAAA,CACA,IACA,EACA,IAEAC,iCAAA,CACA,IACA,EACA,IAEAC,kBAAA,CACA,IACA,GAEAC,qBAAA,CACA,IACA,GAEAC,2BAAA,CACA,GACA,GAEAC,8BAAA,CA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","file":"static/js/main.44c9dd09.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 PATTIES_STATEMENT_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 pattiesStatementSuccess,\n pattiesStatementError,\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 * Request Patties\n */\nexport function* requestPatties() {\n try {\n yield put(showLoading());\n\n const response = yield call(() =>\n api.get('/Statement/v1/Patties/Extravaganza', {\n description: 'Patties',\n })\n );\n\n yield put(\n pattiesStatementSuccess(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(pattiesStatementError(error));\n }\n } finally {\n yield put(hideLoading());\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 yield takeLatest(PATTIES_STATEMENT_REQUEST, requestPatties);\n}\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 * 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","/**\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","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 { createGlobalStyle, Normalize, thd } from '@smooth-ui/core-sc';\nimport loriGlobalStyles from '_platform/src/theme/globalStyles';\n\nexport const GlobalStylesApp = createGlobalStyle`\n ${loriGlobalStyles}\n\n @import url('https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;700&display=swap');\n @import url(\"https://use.typekit.net/mjr2znr.css\");\n\n body {\n font-family: montserrat, sans-serif;\n line-height: 1.6;\n }\n\n /* Custom CSS here */\n h1 {\n color: #11305B;\n font-size: 48px;\n font-family: gelica, sans-serif;\n font-weight: normal;\n font-style: italic;\n letter-spacing: 0px;\n }\n\n h2 {\n color: #11305B;\n font-family: gelica, sans-serif;\n font-size: 40px;\n font-weight: normal;\n font-style: italic;\n letter-spacing: 0px;\n }\n\n h3 {\n color: #11305B;\n font-family: gelica, sans-serif;\n font-size: 30px;\n font-weight: normal;\n font-style: italic;\n letter-spacing: 0px;\n }\n\n h4 {\n color: #11305B;\n font-family: gelica, sans-serif;\n font-size: 24px;\n font-weight: normal;\n font-style: italic;\n letter-spacing: 0px;\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 .text-tightline {\n line-height: 1.2;\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 button {\n border-radius: 5px !important;\n }\n`;\n\nconst StylesApp = () => (\n \n \n \n \n);\n\nexport default StylesApp;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Alert, styled } from '@smooth-ui/core-sc';\n\nconst StyledAlert = styled(Alert)`\n margin-top: 1rem;\n`;\n\nexport const Title = styled.div`\n font-weight: bold;\n`;\n\nexport const Multiline = styled.div`\n white-space: pre-line;\n`;\n\nconst MessageBox = ({ children, title = undefined, variant = 'primary' }) => {\n return (\n \n {title ? {title} : null}\n {children}\n \n );\n};\n\nMessageBox.propTypes = {\n children: PropTypes.node.isRequired,\n title: PropTypes.string,\n variant: PropTypes.string,\n};\n\nMessageBox.defaultProps = {\n title: undefined,\n variant: 'primary',\n};\n\nexport default MessageBox;\n","/**\n * Check Permissions - Check if the user has ANY of the required permissions\n *\n * @param {object} currentUser The user object containing the permissions property\n * @param {array} requiredPermissions The array of required permissions\n *\n */\n\nimport memoizeOne from 'memoize-one';\nimport PropTypes from 'prop-types';\n\nconst checkPermissions = (currentUser, requiredPermissions) => {\n if (\n !requiredPermissions ||\n !Array.isArray(requiredPermissions) ||\n !currentUser ||\n !currentUser.permissions ||\n !Array.isArray(currentUser.permissions)\n )\n return false;\n\n return currentUser.permissions.some(\n item => requiredPermissions.indexOf(item) >= 0\n );\n};\n\ncheckPermissions.propTypes = {\n currentUser: PropTypes.object.isRequired,\n requiredPermissions: PropTypes.array.isRequired,\n};\n\nconst checkPermissionsMemoized = memoizeOne(checkPermissions);\n\nexport default checkPermissionsMemoized;\n","/**\n * Check Roles - Check if the user has ANY of the required roles\n *\n * @param {object} currentUser The user object containing the roles property\n * @param {array} requiredRoles The array of required roles\n *\n */\n\nimport memoizeOne from 'memoize-one';\nimport PropTypes from 'prop-types';\n\nconst checkRoles = (currentUser, requiredRoles) => {\n if (\n !requiredRoles ||\n !Array.isArray(requiredRoles) ||\n !currentUser ||\n !currentUser.roles ||\n !Array.isArray(currentUser.roles)\n )\n return false;\n\n return currentUser.roles.some(item => requiredRoles.indexOf(item) >= 0);\n};\n\ncheckRoles.propTypes = {\n currentUser: PropTypes.object.isRequired,\n requiredRoles: PropTypes.array.isRequired,\n};\n\nconst checkRolesMemoized = memoizeOne(checkRoles);\n\nexport default checkRolesMemoized;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\nimport { Redirect } from 'react-router-dom';\nimport {\n selectCurrentUser,\n selectCurrentUserTemp,\n} from '../containers/App/selectors'; // _platform\nimport checkPermissions from '../utils/checkPermissions'; // _platform\nimport checkRoles from '../utils/checkRoles'; // _platform\nimport MessageBox from '../components/MessageBox/MessageBox'; // _platform\n\n/**\n * Private Component - HoC to determine whether a component should be displayed\n * based on authentication, permissions and/or roles\n *\n * TODO: Extend with prop to supply function to determine permission `verifyFn` similar to LoadAsync\n *\n * The `user` prop can be either currentUser or currentUserTemp, depending on what the parent component determines is applicable.\n * If the `user` prop is not supplied, then this component will retrieve the user data via the App selectors.\n * The `tempAuthAllowed` prop determines whether currentUserTemp can be used\n *\n * `publicOnly` prop inverts the check so that the child component is only displayed to unauthenticated users (use `PublicComponent`)\n *\n * `deniedPermissions` and `deniedRoles` props take precedence over `requiredPermissions` and `requiredRoles`.\n * For example, if the props are `requiredRoles={['Administrator']} deniedRoles={['Administrator']}`,\n * users with the `Administrator` role will be denied access to the child component.\n *\n * If the checks determine that the access should be denied to the child component:\n * - By default the child component is skipped silently\n * - If the `redirectOnError` prop is supplied, the user will be redirected to the supplied local path\n * - Otherwise, if the `displayError` prop is supplied, the user will be shown an error\n * which can be customised via the `errorMessage` prop\n */\n\nclass PrivateComponent extends Component {\n render() {\n const {\n deniedPermissions,\n deniedRoles,\n displayError,\n errorMessage,\n publicOnly,\n redirectOnError,\n requiredPermissions,\n requiredRoles,\n tempAuthAllowed,\n user,\n } = this.props;\n const { currentUser, currentUserTemp } = this.props;\n\n const UnauthorisedComponent = displayError ? (\n \n {errorMessage || 'Unauthorised'}\n \n ) : null;\n\n const RedirectOnErrorComponent = redirectOnError ? (\n \n ) : null;\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 && user.userId) {\n userObject = user;\n } else if (tempAuthAllowed && currentUserTemp && currentUserTemp.token) {\n userObject = currentUserTemp;\n } else {\n userObject = currentUser;\n }\n\n // Invert the check if the publicOnly prop is supplied - used in PublicComponent\n if (publicOnly) {\n return !userObject.token\n ? this.props.children\n : RedirectOnErrorComponent || UnauthorisedComponent;\n }\n\n // Check granular permissions if supplied\n if (\n !!userObject.token &&\n ((deniedPermissions && checkPermissions(userObject, deniedPermissions)) ||\n (requiredPermissions &&\n !checkPermissions(userObject, requiredPermissions)))\n ) {\n return RedirectOnErrorComponent || UnauthorisedComponent;\n }\n\n // Check granular roles if supplied\n if (\n !!userObject.token &&\n ((deniedRoles && checkRoles(userObject, deniedRoles)) ||\n (requiredRoles && !checkRoles(userObject, requiredRoles)))\n ) {\n return RedirectOnErrorComponent || UnauthorisedComponent;\n }\n\n return !!userObject.token\n ? this.props.children\n : RedirectOnErrorComponent || UnauthorisedComponent;\n }\n}\n\nPrivateComponent.propTypes = {\n children: PropTypes.node.isRequired,\n currentUser: PropTypes.object.isRequired,\n currentUserTemp: PropTypes.object.isRequired,\n deniedPermissions: PropTypes.array,\n deniedRoles: PropTypes.array,\n displayError: PropTypes.bool,\n errorMessage: PropTypes.string,\n publicOnly: PropTypes.bool, // Inverts PrivateComponent - displays component to unauthenticated users only. Used by PublicComponent wrapper\n redirectOnError: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n requiredPermissions: PropTypes.array,\n requiredRoles: PropTypes.array,\n tempAuthAllowed: PropTypes.bool,\n user: PropTypes.object,\n};\n\nPrivateComponent.defaultProps = {\n deniedPermissions: undefined,\n deniedRoles: undefined,\n displayError: false,\n errorMessage: undefined,\n publicOnly: false,\n redirectOnError: undefined,\n requiredPermissions: undefined,\n requiredRoles: undefined,\n tempAuthAllowed: false,\n user: {},\n};\n\nconst mapStateToProps = createStructuredSelector({\n currentUser: selectCurrentUser(),\n currentUserTemp: selectCurrentUserTemp(),\n});\n\nexport default connect(\n mapStateToProps,\n null\n)(PrivateComponent);\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","/**\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 PATTIES_STATEMENT_REQUEST,\n PATTIES_STATEMENT_SUCCESS,\n PATTIES_STATEMENT_ERROR,\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\n/**\n * PattiesStatement request - start the request saga\n * The reason this is here is because it needs to be called from PattiesStatementProvider\n * as well as RewardsProvider saga (after adding item to pattiesStatement)\n *\n * @returns {object} An action object with a type of PATTIES_STATEMENT_REQUEST\n */\nexport function pattiesStatementRequest(refresh) {\n return {\n type: PATTIES_STATEMENT_REQUEST,\n refresh,\n };\n}\n\n/**\n * Dispatched when pattiesStatementRequest 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 PATTIES_STATEMENT_SUCCESS and the response\n */\nexport function pattiesStatementSuccess(response, lastUpdated) {\n return {\n type: PATTIES_STATEMENT_SUCCESS,\n response,\n lastUpdated,\n };\n}\n\n/**\n * Dispatched when pattiesStatementRequest fails\n *\n * @param {object} error The error as received from the API\n * @returns {object} An action object with a type of PATTIES_STATEMENT_ERROR and the error\n */\nexport function pattiesStatementError(error) {\n return {\n type: PATTIES_STATEMENT_ERROR,\n error,\n };\n}\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","module.exports = \"data:image/png;base64,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\"","/**\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","/**\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 = () => createSelector(selectState, state => state.cart);\n\n/**\n * CustomerReps\n */\nconst selectCustomerReps = () =>\n createSelector(selectState, state => state.customerReps);\n\n/**\n * Menu definitions\n */\nconst selectMenu = () => createSelector(selectState, state => state.menu);\n\nconst selectRoutes = () => createSelector(selectState, state => state.routes);\n\n/**\n * Site settings\n */\nconst selectSettings = () =>\n createSelector(selectState, state => state.settings);\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(selectSettings(), state => state && state.program);\n\n/**\n * Wishlist\n */\nconst selectWishlist = () =>\n createSelector(selectState, state => state.wishlist);\n\n/**\n * Patties Statement\n */\nconst selectPatties = () => createSelector(selectState, state => state.patties);\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 selectPatties,\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 * 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","/**\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","var map = {\n\t\"./AboutPage/AboutAwardsNight\": [\n\t\t349,\n\t\t9,\n\t\t64\n\t],\n\t\"./AboutPage/AboutAwardsNight.js\": [\n\t\t349,\n\t\t9,\n\t\t64\n\t],\n\t\"./AboutPage/AboutPage\": [\n\t\t350,\n\t\t9,\n\t\t36\n\t],\n\t\"./AboutPage/AboutPage.js\": [\n\t\t350,\n\t\t9,\n\t\t36\n\t],\n\t\"./AboutPage/images/about@2x.png\": [\n\t\t657,\n\t\t7,\n\t\t172\n\t],\n\t\"./AboutPage/images/banner-about-@1x.jpg\": [\n\t\t678,\n\t\t7,\n\t\t173\n\t],\n\t\"./AboutPage/images/banner-about-@2x.jpg\": [\n\t\t679,\n\t\t7,\n\t\t174\n\t],\n\t\"./AboutPage/images/banner-about-man_using_keyboard-@2x.jpg\": [\n\t\t680,\n\t\t7,\n\t\t175\n\t],\n\t\"./AboutPage/images/banner-about-mobile-@1x.jpg\": [\n\t\t681,\n\t\t7,\n\t\t176\n\t],\n\t\"./AboutPage/images/banner-about-mobile-@2x.jpg\": [\n\t\t682,\n\t\t7,\n\t\t177\n\t],\n\t\"./AboutPage/images/banner-about-tablet-@1x.jpg\": [\n\t\t683,\n\t\t7,\n\t\t178\n\t],\n\t\"./AboutPage/images/banner-about-tablet-@2x.jpg\": [\n\t\t684,\n\t\t7,\n\t\t179\n\t],\n\t\"./AboutPage/images/bg-about-awards_night_banner-@2x.jpg\": [\n\t\t656,\n\t\t7,\n\t\t180\n\t],\n\t\"./AboutPage/images/icon-handgraph.svg\": [\n\t\t685,\n\t\t7,\n\t\t160\n\t],\n\t\"./AboutPage/images/icon-lightbulb.svg\": [\n\t\t686,\n\t\t7,\n\t\t161\n\t],\n\t\"./AboutPage/images/icon-shield.svg\": [\n\t\t687,\n\t\t7,\n\t\t162\n\t],\n\t\"./AboutPage/images/icon-stopwatch.svg\": [\n\t\t688,\n\t\t7,\n\t\t163\n\t],\n\t\"./AboutPage/images/image-about-1-@2x.jpg\": [\n\t\t689,\n\t\t7,\n\t\t181\n\t],\n\t\"./AboutPage/images/image-about-2-@2x.jpg\": [\n\t\t690,\n\t\t7,\n\t\t182\n\t],\n\t\"./AboutPage/images/image-about-digital_giftcards-@2x.jpg\": [\n\t\t691,\n\t\t7,\n\t\t183\n\t],\n\t\"./AboutPage/images/image-about-rewards_collage-@2x.jpg\": [\n\t\t692,\n\t\t7,\n\t\t184\n\t],\n\t\"./AboutPage/images/image-about-travel_collage-@2x.jpg\": [\n\t\t693,\n\t\t7,\n\t\t185\n\t],\n\t\"./BehaviourProvider/BehaviourProvider\": [\n\t\t333,\n\t\t9,\n\t\t6\n\t],\n\t\"./BehaviourProvider/BehaviourProvider.js\": [\n\t\t333,\n\t\t9,\n\t\t6\n\t],\n\t\"./BehaviourProvider/actions\": [\n\t\t286,\n\t\t9,\n\t\t65\n\t],\n\t\"./BehaviourProvider/actions.js\": [\n\t\t286,\n\t\t9,\n\t\t65\n\t],\n\t\"./BehaviourProvider/constants\": [\n\t\t275,\n\t\t9,\n\t\t84\n\t],\n\t\"./BehaviourProvider/constants.js\": [\n\t\t275,\n\t\t9,\n\t\t84\n\t],\n\t\"./BehaviourProvider/reducer\": [\n\t\t287,\n\t\t9,\n\t\t66\n\t],\n\t\"./BehaviourProvider/reducer.js\": [\n\t\t287,\n\t\t9,\n\t\t66\n\t],\n\t\"./BehaviourProvider/saga\": [\n\t\t304,\n\t\t9,\n\t\t46\n\t],\n\t\"./BehaviourProvider/saga.js\": [\n\t\t304,\n\t\t9,\n\t\t46\n\t],\n\t\"./BehaviourProvider/selectors\": [\n\t\t305,\n\t\t9,\n\t\t47\n\t],\n\t\"./BehaviourProvider/selectors.js\": [\n\t\t305,\n\t\t9,\n\t\t47\n\t],\n\t\"./CartPage/CartPage\": [\n\t\t351,\n\t\t9,\n\t\t85\n\t],\n\t\"./CartPage/CartPage.js\": [\n\t\t351,\n\t\t9,\n\t\t85\n\t],\n\t\"./CartProvider/CartProvider\": [\n\t\t306,\n\t\t9,\n\t\t7\n\t],\n\t\"./CartProvider/CartProvider.js\": [\n\t\t306,\n\t\t9,\n\t\t7\n\t],\n\t\"./CartProvider/actions\": [\n\t\t288,\n\t\t9,\n\t\t67\n\t],\n\t\"./CartProvider/actions.js\": [\n\t\t288,\n\t\t9,\n\t\t67\n\t],\n\t\"./CartProvider/constants\": [\n\t\t276,\n\t\t9,\n\t\t86\n\t],\n\t\"./CartProvider/constants.js\": [\n\t\t276,\n\t\t9,\n\t\t86\n\t],\n\t\"./CartProvider/reducer\": [\n\t\t289,\n\t\t9,\n\t\t68\n\t],\n\t\"./CartProvider/reducer.js\": [\n\t\t289,\n\t\t9,\n\t\t68\n\t],\n\t\"./CartProvider/saga\": [\n\t\t307,\n\t\t9,\n\t\t48\n\t],\n\t\"./CartProvider/saga.js\": [\n\t\t307,\n\t\t9,\n\t\t48\n\t],\n\t\"./CartProvider/selectors\": [\n\t\t308,\n\t\t9,\n\t\t49\n\t],\n\t\"./CartProvider/selectors.js\": [\n\t\t308,\n\t\t9,\n\t\t49\n\t],\n\t\"./ClaimHistoryPage/ClaimHistoryPage\": [\n\t\t369,\n\t\t9,\n\t\t32\n\t],\n\t\"./ClaimHistoryPage/ClaimHistoryPage.js\": [\n\t\t369,\n\t\t9,\n\t\t32\n\t],\n\t\"./ClaimHistoryProvider/ClaimHistoryProvider\": [\n\t\t352,\n\t\t9,\n\t\t8\n\t],\n\t\"./ClaimHistoryProvider/ClaimHistoryProvider.js\": [\n\t\t352,\n\t\t9,\n\t\t8\n\t],\n\t\"./ClaimHistoryProvider/actions\": [\n\t\t290,\n\t\t9,\n\t\t69\n\t],\n\t\"./ClaimHistoryProvider/actions.js\": [\n\t\t290,\n\t\t9,\n\t\t69\n\t],\n\t\"./ClaimHistoryProvider/constants\": [\n\t\t277,\n\t\t9,\n\t\t87\n\t],\n\t\"./ClaimHistoryProvider/constants.js\": [\n\t\t277,\n\t\t9,\n\t\t87\n\t],\n\t\"./ClaimHistoryProvider/reducer\": [\n\t\t291,\n\t\t9,\n\t\t70\n\t],\n\t\"./ClaimHistoryProvider/reducer.js\": [\n\t\t291,\n\t\t9,\n\t\t70\n\t],\n\t\"./ClaimHistoryProvider/saga\": [\n\t\t310,\n\t\t9,\n\t\t50\n\t],\n\t\"./ClaimHistoryProvider/saga.js\": [\n\t\t310,\n\t\t9,\n\t\t50\n\t],\n\t\"./ClaimHistoryProvider/selectors\": [\n\t\t311,\n\t\t9,\n\t\t51\n\t],\n\t\"./ClaimHistoryProvider/selectors.js\": [\n\t\t311,\n\t\t9,\n\t\t51\n\t],\n\t\"./CodesProvider/CodesList\": [\n\t\t312,\n\t\t9,\n\t\t38\n\t],\n\t\"./CodesProvider/CodesList.js\": [\n\t\t312,\n\t\t9,\n\t\t38\n\t],\n\t\"./CodesProvider/CodesProvider\": [\n\t\t334,\n\t\t9,\n\t\t9\n\t],\n\t\"./CodesProvider/CodesProvider.js\": [\n\t\t334,\n\t\t9,\n\t\t9\n\t],\n\t\"./CodesProvider/CodesRedeemForm\": [\n\t\t315,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t31\n\t],\n\t\"./CodesProvider/CodesRedeemForm.js\": [\n\t\t315,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t31\n\t],\n\t\"./CodesProvider/actions\": [\n\t\t292,\n\t\t9,\n\t\t71\n\t],\n\t\"./CodesProvider/actions.js\": [\n\t\t292,\n\t\t9,\n\t\t71\n\t],\n\t\"./CodesProvider/constants\": [\n\t\t278,\n\t\t9,\n\t\t88\n\t],\n\t\"./CodesProvider/constants.js\": [\n\t\t278,\n\t\t9,\n\t\t88\n\t],\n\t\"./CodesProvider/reducer\": [\n\t\t293,\n\t\t9,\n\t\t72\n\t],\n\t\"./CodesProvider/reducer.js\": [\n\t\t293,\n\t\t9,\n\t\t72\n\t],\n\t\"./CodesProvider/saga\": [\n\t\t313,\n\t\t9,\n\t\t52\n\t],\n\t\"./CodesProvider/saga.js\": [\n\t\t313,\n\t\t9,\n\t\t52\n\t],\n\t\"./CodesProvider/selectors\": [\n\t\t314,\n\t\t9,\n\t\t53\n\t],\n\t\"./CodesProvider/selectors.js\": [\n\t\t314,\n\t\t9,\n\t\t53\n\t],\n\t\"./ContactPage/ContactPage\": [\n\t\t353,\n\t\t9,\n\t\t41\n\t],\n\t\"./ContactPage/ContactPage.js\": [\n\t\t353,\n\t\t9,\n\t\t41\n\t],\n\t\"./ContactPage/images/banner-contact-@1x.jpg\": [\n\t\t694,\n\t\t7,\n\t\t186\n\t],\n\t\"./ContactPage/images/banner-contact-@2x.jpg\": [\n\t\t695,\n\t\t7,\n\t\t187\n\t],\n\t\"./ContactPage/images/banner-contact-mobile-@1x.jpg\": [\n\t\t696,\n\t\t7,\n\t\t188\n\t],\n\t\"./ContactPage/images/banner-contact-mobile-@2x.jpg\": [\n\t\t697,\n\t\t7,\n\t\t189\n\t],\n\t\"./ContactPage/images/banner-contact-tablet-@1x.jpg\": [\n\t\t698,\n\t\t7,\n\t\t190\n\t],\n\t\"./ContactPage/images/banner-contact-tablet-@2x.jpg\": [\n\t\t699,\n\t\t7,\n\t\t191\n\t],\n\t\"./FaqsPage/FaqsPage\": [\n\t\t370,\n\t\t9,\n\t\t0,\n\t\t30\n\t],\n\t\"./FaqsPage/FaqsPage.js\": [\n\t\t370,\n\t\t9,\n\t\t0,\n\t\t30\n\t],\n\t\"./FaqsPage/actions\": [\n\t\t295,\n\t\t9,\n\t\t73\n\t],\n\t\"./FaqsPage/actions.js\": [\n\t\t295,\n\t\t9,\n\t\t73\n\t],\n\t\"./FaqsPage/constants\": [\n\t\t279,\n\t\t9,\n\t\t89\n\t],\n\t\"./FaqsPage/constants.js\": [\n\t\t279,\n\t\t9,\n\t\t89\n\t],\n\t\"./FaqsPage/images/FAQs-Banner.jpg\": [\n\t\t700,\n\t\t7,\n\t\t192\n\t],\n\t\"./FaqsPage/images/FAQs-Banner@2x.jpg\": [\n\t\t701,\n\t\t7,\n\t\t193\n\t],\n\t\"./FaqsPage/images/Minus.svg\": [\n\t\t665,\n\t\t7,\n\t\t164\n\t],\n\t\"./FaqsPage/images/Plus.svg\": [\n\t\t664,\n\t\t7,\n\t\t165\n\t],\n\t\"./FaqsPage/reducer\": [\n\t\t294,\n\t\t9,\n\t\t74\n\t],\n\t\"./FaqsPage/reducer.js\": [\n\t\t294,\n\t\t9,\n\t\t74\n\t],\n\t\"./FaqsPage/saga\": [\n\t\t316,\n\t\t9,\n\t\t54\n\t],\n\t\"./FaqsPage/saga.js\": [\n\t\t316,\n\t\t9,\n\t\t54\n\t],\n\t\"./FaqsPage/selectors\": [\n\t\t317,\n\t\t9,\n\t\t55\n\t],\n\t\"./FaqsPage/selectors.js\": [\n\t\t317,\n\t\t9,\n\t\t55\n\t],\n\t\"./HomePage/HomePage\": [\n\t\t345,\n\t\t9,\n\t\t10\n\t],\n\t\"./HomePage/HomePage.js\": [\n\t\t345,\n\t\t9,\n\t\t10\n\t],\n\t\"./HomePage/images/Icon1.svg\": [\n\t\t644,\n\t\t7,\n\t\t166\n\t],\n\t\"./HomePage/images/Icon2.svg\": [\n\t\t645,\n\t\t7,\n\t\t167\n\t],\n\t\"./HomePage/images/Icon3.svg\": [\n\t\t646,\n\t\t7,\n\t\t168\n\t],\n\t\"./HomePage/images/Ribbon.svg\": [\n\t\t702,\n\t\t7,\n\t\t169\n\t],\n\t\"./HomePage/images/Ribbon@2x.png\": [\n\t\t643,\n\t\t7,\n\t\t194\n\t],\n\t\"./HomePage/images/calendar.svg\": [\n\t\t647,\n\t\t7,\n\t\t170\n\t],\n\t\"./HomePage/images/home-hero.jpg\": [\n\t\t703,\n\t\t7,\n\t\t195\n\t],\n\t\"./HomePage/images/image-about-laptop-2-@2x.jpg\": [\n\t\t704,\n\t\t7,\n\t\t196\n\t],\n\t\"./HomePage/images/image-about-people-@2x.jpg\": [\n\t\t705,\n\t\t7,\n\t\t197\n\t],\n\t\"./HomePage/images/image-about-products-@2x.jpg\": [\n\t\t706,\n\t\t7,\n\t\t198\n\t],\n\t\"./HomePage/images/image-home-reward-chromecast-@2x.jpg\": [\n\t\t707,\n\t\t7,\n\t\t199\n\t],\n\t\"./HomePage/images/image-home-reward-dewalt-@2x.jpg\": [\n\t\t708,\n\t\t7,\n\t\t200\n\t],\n\t\"./HomePage/images/image-home-reward-nintendo-@2x.jpg\": [\n\t\t709,\n\t\t7,\n\t\t201\n\t],\n\t\"./HomePage/images/image-home-reward-phillips-@2x.jpg\": [\n\t\t710,\n\t\t7,\n\t\t202\n\t],\n\t\"./InvoicePage/InvoiceForm\": [\n\t\t328,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t2,\n\t\t24,\n\t\t11\n\t],\n\t\"./InvoicePage/InvoiceForm.js\": [\n\t\t328,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t2,\n\t\t24,\n\t\t11\n\t],\n\t\"./InvoicePage/InvoiceList\": [\n\t\t335,\n\t\t9,\n\t\t3,\n\t\t4,\n\t\t12\n\t],\n\t\"./InvoicePage/InvoiceList.js\": [\n\t\t335,\n\t\t9,\n\t\t3,\n\t\t4,\n\t\t12\n\t],\n\t\"./InvoicePage/InvoicePage\": [\n\t\t354,\n\t\t9,\n\t\t90\n\t],\n\t\"./InvoicePage/InvoicePage.js\": [\n\t\t354,\n\t\t9,\n\t\t90\n\t],\n\t\"./InvoiceProvider/InvoiceProvider\": [\n\t\t318,\n\t\t9,\n\t\t3,\n\t\t13\n\t],\n\t\"./InvoiceProvider/InvoiceProvider.js\": [\n\t\t318,\n\t\t9,\n\t\t3,\n\t\t13\n\t],\n\t\"./InvoiceProvider/actions\": [\n\t\t296,\n\t\t9,\n\t\t75\n\t],\n\t\"./InvoiceProvider/actions.js\": [\n\t\t296,\n\t\t9,\n\t\t75\n\t],\n\t\"./InvoiceProvider/constants\": [\n\t\t280,\n\t\t9,\n\t\t91\n\t],\n\t\"./InvoiceProvider/constants.js\": [\n\t\t280,\n\t\t9,\n\t\t91\n\t],\n\t\"./InvoiceProvider/reducer\": [\n\t\t297,\n\t\t9,\n\t\t76\n\t],\n\t\"./InvoiceProvider/reducer.js\": [\n\t\t297,\n\t\t9,\n\t\t76\n\t],\n\t\"./InvoiceProvider/saga\": [\n\t\t319,\n\t\t9,\n\t\t3,\n\t\t40\n\t],\n\t\"./InvoiceProvider/saga.js\": [\n\t\t319,\n\t\t9,\n\t\t3,\n\t\t40\n\t],\n\t\"./InvoiceProvider/selectors\": [\n\t\t320,\n\t\t9,\n\t\t56\n\t],\n\t\"./InvoiceProvider/selectors.js\": [\n\t\t320,\n\t\t9,\n\t\t56\n\t],\n\t\"./LeaderboardPage/LeaderboardPage\": [\n\t\t355,\n\t\t9,\n\t\t33\n\t],\n\t\"./LeaderboardPage/LeaderboardPage.js\": [\n\t\t355,\n\t\t9,\n\t\t33\n\t],\n\t\"./LeaderboardProvider/LeaderboardProvider\": [\n\t\t321,\n\t\t9,\n\t\t35\n\t],\n\t\"./LeaderboardProvider/LeaderboardProvider.js\": [\n\t\t321,\n\t\t9,\n\t\t35\n\t],\n\t\"./LeaderboardProvider/actions\": [\n\t\t283,\n\t\t9,\n\t\t77\n\t],\n\t\"./LeaderboardProvider/actions.js\": [\n\t\t283,\n\t\t9,\n\t\t77\n\t],\n\t\"./LeaderboardProvider/constants\": [\n\t\t274,\n\t\t9,\n\t\t92\n\t],\n\t\"./LeaderboardProvider/constants.js\": [\n\t\t274,\n\t\t9,\n\t\t92\n\t],\n\t\"./LeaderboardProvider/reducer\": [\n\t\t284,\n\t\t9,\n\t\t78\n\t],\n\t\"./LeaderboardProvider/reducer.js\": [\n\t\t284,\n\t\t9,\n\t\t78\n\t],\n\t\"./LeaderboardProvider/saga\": [\n\t\t302,\n\t\t9,\n\t\t57\n\t],\n\t\"./LeaderboardProvider/saga.js\": [\n\t\t302,\n\t\t9,\n\t\t57\n\t],\n\t\"./LeaderboardProvider/selectors\": [\n\t\t303,\n\t\t9,\n\t\t58\n\t],\n\t\"./LeaderboardProvider/selectors.js\": [\n\t\t303,\n\t\t9,\n\t\t58\n\t],\n\t\"./LoginPage/LoginPage\": [\n\t\t368,\n\t\t9,\n\t\t14\n\t],\n\t\"./LoginPage/LoginPage.js\": [\n\t\t368,\n\t\t9,\n\t\t14\n\t],\n\t\"./LoginPage/images/Background-v2.jpg\": [\n\t\t648,\n\t\t7,\n\t\t203\n\t],\n\t\"./LoginPage/images/Background-v2@2x.jpg\": [\n\t\t649,\n\t\t7,\n\t\t204\n\t],\n\t\"./LoginPage/images/Patties-Extravaganza@2x.png\": [\n\t\t650,\n\t\t7,\n\t\t205\n\t],\n\t\"./LoginPage/images/Patties@2x.png\": [\n\t\t653,\n\t\t7,\n\t\t206\n\t],\n\t\"./LoginPage/images/Text.png\": [\n\t\t711,\n\t\t7,\n\t\t207\n\t],\n\t\"./LoginPage/images/Text@2x.png\": [\n\t\t651,\n\t\t7,\n\t\t208\n\t],\n\t\"./LoginPage/images/image-login_page-background-@1x.jpg\": [\n\t\t712,\n\t\t7,\n\t\t209\n\t],\n\t\"./LoginPage/images/image-login_page-background-@2x.jpg\": [\n\t\t713,\n\t\t7,\n\t\t210\n\t],\n\t\"./LoginPage/images/leader_ribbon_col@2x.png\": [\n\t\t654,\n\t\t7,\n\t\t211\n\t],\n\t\"./LoginPage/images/welcome-bottom@1x.png\": [\n\t\t652,\n\t\t7,\n\t\t212\n\t],\n\t\"./LoginPage/images/welcome-bottom@2x.png\": [\n\t\t714,\n\t\t7,\n\t\t213\n\t],\n\t\"./LogoutPage/LogoutPage\": [\n\t\t347,\n\t\t9,\n\t\t15\n\t],\n\t\"./LogoutPage/LogoutPage.js\": [\n\t\t347,\n\t\t9,\n\t\t15\n\t],\n\t\"./MobileAppSSOPage/MobileAppSSOPage\": [\n\t\t348,\n\t\t9,\n\t\t16\n\t],\n\t\"./MobileAppSSOPage/MobileAppSSOPage.js\": [\n\t\t348,\n\t\t9,\n\t\t16\n\t],\n\t\"./NotFoundPage/NotFoundPage\": [\n\t\t332,\n\t\t9,\n\t\t17\n\t],\n\t\"./NotFoundPage/NotFoundPage.js\": [\n\t\t332,\n\t\t9,\n\t\t17\n\t],\n\t\"./NotFoundPage/images/404-error-icons.svg\": [\n\t\t655,\n\t\t7,\n\t\t171\n\t],\n\t\"./PasswordResetPage/PasswordResetPage\": [\n\t\t346,\n\t\t9,\n\t\t18\n\t],\n\t\"./PasswordResetPage/PasswordResetPage.js\": [\n\t\t346,\n\t\t9,\n\t\t18\n\t],\n\t\"./PrivacyPage/PrivacyPage\": [\n\t\t356,\n\t\t9,\n\t\t42\n\t],\n\t\"./PrivacyPage/PrivacyPage.js\": [\n\t\t356,\n\t\t9,\n\t\t42\n\t],\n\t\"./ProductsPage/ProductsPage\": [\n\t\t357,\n\t\t9,\n\t\t43\n\t],\n\t\"./ProductsPage/ProductsPage.js\": [\n\t\t357,\n\t\t9,\n\t\t43\n\t],\n\t\"./ProfilePage/ProfilePage\": [\n\t\t358,\n\t\t9,\n\t\t39\n\t],\n\t\"./ProfilePage/ProfilePage.js\": [\n\t\t358,\n\t\t9,\n\t\t39\n\t],\n\t\"./ProfilePage/images/banner-profile-@1x.jpg\": [\n\t\t715,\n\t\t7,\n\t\t214\n\t],\n\t\"./ProfilePage/images/banner-profile-@2x.jpg\": [\n\t\t716,\n\t\t7,\n\t\t215\n\t],\n\t\"./ProfilePage/images/banner-profile-mobile-@1x.jpg\": [\n\t\t717,\n\t\t7,\n\t\t216\n\t],\n\t\"./ProfilePage/images/banner-profile-mobile-@2x.jpg\": [\n\t\t718,\n\t\t7,\n\t\t217\n\t],\n\t\"./ProfilePage/images/banner-profile-tablet-@1x.jpg\": [\n\t\t719,\n\t\t7,\n\t\t218\n\t],\n\t\"./ProfilePage/images/banner-profile-tablet-@2x.jpg\": [\n\t\t720,\n\t\t7,\n\t\t219\n\t],\n\t\"./RedeemCode/RedeemCode\": [\n\t\t359,\n\t\t9,\n\t\t93\n\t],\n\t\"./RedeemCode/RedeemCode.js\": [\n\t\t359,\n\t\t9,\n\t\t93\n\t],\n\t\"./RedirectToFirstAvailableSubMenu/RedirectToFirstAvailableSubMenu\": [\n\t\t360,\n\t\t9,\n\t\t94\n\t],\n\t\"./RedirectToFirstAvailableSubMenu/RedirectToFirstAvailableSubMenu.js\": [\n\t\t360,\n\t\t9,\n\t\t94\n\t],\n\t\"./RegisterPage/RegisterPage\": [\n\t\t361,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t28\n\t],\n\t\"./RegisterPage/RegisterPage.js\": [\n\t\t361,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t28\n\t],\n\t\"./RewardsPage/RewardsConciergeBlock\": [\n\t\t329,\n\t\t9,\n\t\t79\n\t],\n\t\"./RewardsPage/RewardsConciergeBlock.js\": [\n\t\t329,\n\t\t9,\n\t\t79\n\t],\n\t\"./RewardsPage/RewardsPage\": [\n\t\t362,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t2,\n\t\t26\n\t],\n\t\"./RewardsPage/RewardsPage.js\": [\n\t\t362,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t2,\n\t\t26\n\t],\n\t\"./RewardsPage/images/banner-rewards-@1x.jpg\": [\n\t\t670,\n\t\t7,\n\t\t220\n\t],\n\t\"./RewardsPage/images/banner-rewards-@2x.jpg\": [\n\t\t671,\n\t\t7,\n\t\t221\n\t],\n\t\"./RewardsPage/images/banner-rewards-mobile-@1x.jpg\": [\n\t\t666,\n\t\t7,\n\t\t222\n\t],\n\t\"./RewardsPage/images/banner-rewards-mobile-@2x.jpg\": [\n\t\t667,\n\t\t7,\n\t\t223\n\t],\n\t\"./RewardsPage/images/banner-rewards-tablet-@1x.jpg\": [\n\t\t668,\n\t\t7,\n\t\t224\n\t],\n\t\"./RewardsPage/images/banner-rewards-tablet-@2x.jpg\": [\n\t\t669,\n\t\t7,\n\t\t225\n\t],\n\t\"./RewardsPage/images/bg-rewards-concierge-@2x.jpg\": [\n\t\t642,\n\t\t7,\n\t\t226\n\t],\n\t\"./RewardsProvider/RewardsProvider\": [\n\t\t336,\n\t\t9,\n\t\t19,\n\t\t45\n\t],\n\t\"./RewardsProvider/RewardsProvider.js\": [\n\t\t336,\n\t\t9,\n\t\t19,\n\t\t45\n\t],\n\t\"./RewardsProvider/actions\": [\n\t\t298,\n\t\t9,\n\t\t80\n\t],\n\t\"./RewardsProvider/actions.js\": [\n\t\t298,\n\t\t9,\n\t\t80\n\t],\n\t\"./RewardsProvider/constants\": [\n\t\t281,\n\t\t9,\n\t\t95\n\t],\n\t\"./RewardsProvider/constants.js\": [\n\t\t281,\n\t\t9,\n\t\t95\n\t],\n\t\"./RewardsProvider/reducer\": [\n\t\t299,\n\t\t9,\n\t\t81\n\t],\n\t\"./RewardsProvider/reducer.js\": [\n\t\t299,\n\t\t9,\n\t\t81\n\t],\n\t\"./RewardsProvider/rewardsUtils\": [\n\t\t285,\n\t\t9,\n\t\t96\n\t],\n\t\"./RewardsProvider/rewardsUtils.js\": [\n\t\t285,\n\t\t9,\n\t\t96\n\t],\n\t\"./RewardsProvider/saga\": [\n\t\t322,\n\t\t9,\n\t\t59\n\t],\n\t\"./RewardsProvider/saga.js\": [\n\t\t322,\n\t\t9,\n\t\t59\n\t],\n\t\"./RewardsProvider/selectors\": [\n\t\t323,\n\t\t9,\n\t\t60\n\t],\n\t\"./RewardsProvider/selectors.js\": [\n\t\t323,\n\t\t9,\n\t\t60\n\t],\n\t\"./SitemapPage/SitemapPage\": [\n\t\t371,\n\t\t9,\n\t\t37\n\t],\n\t\"./SitemapPage/SitemapPage.js\": [\n\t\t371,\n\t\t9,\n\t\t37\n\t],\n\t\"./StatementIncentivePage/StatementIncentivePage\": [\n\t\t363,\n\t\t9,\n\t\t34\n\t],\n\t\"./StatementIncentivePage/StatementIncentivePage.js\": [\n\t\t363,\n\t\t9,\n\t\t34\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-@1x.jpg\": [\n\t\t676,\n\t\t7,\n\t\t227\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-@2x.jpg\": [\n\t\t677,\n\t\t7,\n\t\t228\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-mobile-@1x.jpg\": [\n\t\t672,\n\t\t7,\n\t\t229\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-mobile-@2x.jpg\": [\n\t\t673,\n\t\t7,\n\t\t230\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-tablet-@1x.jpg\": [\n\t\t674,\n\t\t7,\n\t\t231\n\t],\n\t\"./StatementIncentivePage/images/banner-statement-tablet-@2x.jpg\": [\n\t\t675,\n\t\t7,\n\t\t232\n\t],\n\t\"./StatementPage/StatementPage\": [\n\t\t364,\n\t\t9,\n\t\t44\n\t],\n\t\"./StatementPage/StatementPage.js\": [\n\t\t364,\n\t\t9,\n\t\t44\n\t],\n\t\"./StatementPage/StatementTabs\": [\n\t\t309,\n\t\t9,\n\t\t63\n\t],\n\t\"./StatementPage/StatementTabs.js\": [\n\t\t309,\n\t\t9,\n\t\t63\n\t],\n\t\"./StatementPage/images/banner-statement-@1x.jpg\": [\n\t\t662,\n\t\t7,\n\t\t233\n\t],\n\t\"./StatementPage/images/banner-statement-@2x.jpg\": [\n\t\t663,\n\t\t7,\n\t\t234\n\t],\n\t\"./StatementPage/images/banner-statement-mobile-@1x.jpg\": [\n\t\t658,\n\t\t7,\n\t\t235\n\t],\n\t\"./StatementPage/images/banner-statement-mobile-@2x.jpg\": [\n\t\t659,\n\t\t7,\n\t\t236\n\t],\n\t\"./StatementPage/images/banner-statement-tablet-@1x.jpg\": [\n\t\t660,\n\t\t7,\n\t\t237\n\t],\n\t\"./StatementPage/images/banner-statement-tablet-@2x.jpg\": [\n\t\t661,\n\t\t7,\n\t\t238\n\t],\n\t\"./StatementProvider/StatementProvider\": [\n\t\t324,\n\t\t9,\n\t\t20\n\t],\n\t\"./StatementProvider/StatementProvider.js\": [\n\t\t324,\n\t\t9,\n\t\t20\n\t],\n\t\"./StatementProvider/actions\": [\n\t\t300,\n\t\t9,\n\t\t82\n\t],\n\t\"./StatementProvider/actions.js\": [\n\t\t300,\n\t\t9,\n\t\t82\n\t],\n\t\"./StatementProvider/constants\": [\n\t\t282,\n\t\t9,\n\t\t97\n\t],\n\t\"./StatementProvider/constants.js\": [\n\t\t282,\n\t\t9,\n\t\t97\n\t],\n\t\"./StatementProvider/reducer\": [\n\t\t301,\n\t\t9,\n\t\t83\n\t],\n\t\"./StatementProvider/reducer.js\": [\n\t\t301,\n\t\t9,\n\t\t83\n\t],\n\t\"./StatementProvider/saga\": [\n\t\t325,\n\t\t9,\n\t\t61\n\t],\n\t\"./StatementProvider/saga.js\": [\n\t\t325,\n\t\t9,\n\t\t61\n\t],\n\t\"./StatementProvider/selectors\": [\n\t\t326,\n\t\t9,\n\t\t62\n\t],\n\t\"./StatementProvider/selectors.js\": [\n\t\t326,\n\t\t9,\n\t\t62\n\t],\n\t\"./TermsPage/TermsPage\": [\n\t\t365,\n\t\t9,\n\t\t98\n\t],\n\t\"./TermsPage/TermsPage.js\": [\n\t\t365,\n\t\t9,\n\t\t98\n\t],\n\t\"./TrainingPage/TrainingPage\": [\n\t\t366,\n\t\t9,\n\t\t99\n\t],\n\t\"./TrainingPage/TrainingPage.js\": [\n\t\t366,\n\t\t9,\n\t\t99\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\t77,\n\t\t9\n\t],\n\t\"./WebApp/SettingsContext.js\": [\n\t\t77,\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\t19,\n\t\t9\n\t],\n\t\"./WebApp/actions.js\": [\n\t\t19,\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\t131,\n\t\t9\n\t],\n\t\"./WebApp/saga.js\": [\n\t\t131,\n\t\t9\n\t],\n\t\"./WebApp/selectors\": [\n\t\t45,\n\t\t9\n\t],\n\t\"./WebApp/selectors.js\": [\n\t\t45,\n\t\t9\n\t],\n\t\"./Welcome/Welcome\": [\n\t\t344,\n\t\t9,\n\t\t21\n\t],\n\t\"./Welcome/Welcome.js\": [\n\t\t344,\n\t\t9,\n\t\t21\n\t],\n\t\"./WishlistPage/WishlistPage\": [\n\t\t367,\n\t\t9,\n\t\t100\n\t],\n\t\"./WishlistPage/WishlistPage.js\": [\n\t\t367,\n\t\t9,\n\t\t100\n\t],\n\t\"./WishlistProvider/WishlistProvider\": [\n\t\t327,\n\t\t9,\n\t\t22\n\t],\n\t\"./WishlistProvider/WishlistProvider.js\": [\n\t\t327,\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 = 640;\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: 'Patties EXTRAVAGANZA ',\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 = '#1C355E';\nconst secondary = '#F4BD19';\nconst grey = '#54707C';\nconst bluegrey = '#87B1C3';\nconst green = '#A3CF62';\nconst text = '#131D28';\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: '#151d29',\n customHeaderColor: '#f8fbfe',\n customMenuBackground: '#151d29',\n customMenuColor: '#fff',\n customMenuHighlight: '#151d29',\n customMenuHighlightColor: '#80C3C8',\n customMenuFocus: '#fff',\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: '#2A4572',\n welcomeColor: '#fff',\n welcomeHighlight: '#fff',\n\n // Breadcrumbs\n // breadcrumbsBackground: thd('gray200', '#fff'),\n breadcrumbsColor: thd('gray600', '#555'),\n breadcrumbsContainerWidth: thd('containerWidth', '100%'),\n breadcrumbsLinkColor: thd('gray600', '#555'),\n breadcrumbsLinkHoverColor: thd('gray800', '#333'),\n breadcrumbsCurrentLinkColor: thd('gray800', '#333'),\n breadcrumbsFontSize: '0.75rem',\n\n // Cart\n // miniCartBackground: '#fff',\n cartBadgeBackground: '#f4be00',\n cartBadgeColor: '#fff',\n cartPointsBalanceBackground: transparentize(0.75, '#369'),\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: '#fff',\n wishlistBadgeBackground: '#f4be00',\n wishlistBadgeColor: '#fff',\n wishlistContainerWidth: '500px',\n // wishlistIconActive: '#f4bd19',\n // wishlistIconInactive: theme.gray500,\n\n // Rewards - Highlight (featured/related rewards)\n rewardsHighlightBackground: '#fff',\n rewardsHighlightContainerWidth: thd('containerWidth', '100%'),\n\n // Statement\n statementHighlightColor: '#f4bd19',\n statementStatus: {\n achieved: '#1e967a',\n onTrack: '#1e967a',\n close: '#ea7c22',\n behind: '#dc402a',\n inProgress: '#ea7c22',\n timeElapsed: '#32343b',\n },\n statementDoughnutBorder: '#eaeaeb',\n statementDoughnutRemainingTrack: '#fff',\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 * 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';\nexport const PATTIES_STATEMENT_REQUEST =\n 'local/WebApp/PATTIES_STATEMENT_REQUEST';\nexport const PATTIES_STATEMENT_SUCCESS =\n 'local/WebApp/PATTIES_STATEMENT_SUCCESS';\nexport const PATTIES_STATEMENT_ERROR = 'local/WebApp/PATTIES_STATEMENT_ERROR';\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 PATTIES_STATEMENT_REQUEST,\n PATTIES_STATEMENT_SUCCESS,\n PATTIES_STATEMENT_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 case PATTIES_STATEMENT_REQUEST:\n if (state.patties) {\n return state; // Perf\n }\n\n return {\n ...state,\n patties: [],\n };\n case PATTIES_STATEMENT_SUCCESS:\n return {\n ...state,\n patties: action.response,\n };\n case PATTIES_STATEMENT_ERROR:\n return {\n ...state,\n patties: initialState.patties,\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';\nimport PrivateComponent from '_platform/src/utils/PrivateComponent';\nimport { withSettings } from 'containers/WebApp/SettingsContext';\nimport { trailingSlashIt } from '_platform/src/utils/utilities';\nimport Logo from './images/Footer-Logo@2x.png';\n\nconst FooterWrapper = styled.footer`\n background-color: #1c355e;\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.94rem 0;\n justify-content: center;\n align-items: center;\n p {\n color: ${thd('primary', '#003E7E')};\n font-size: 16px;\n }\n .footer__logo {\n vertical-align: middle;\n height: 90px;\n }\n ul {\n padding-left: 0;\n list-style: none;\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0.8rem 0 0;\n ${up(\n 'md',\n css`\n flex-direction: row;\n `\n )};\n }\n li {\n font-size: 16px;\n color: #fff;\n text-align: center;\n padding: 5px 0;\n ${up(\n 'md',\n css`\n border-right: 1px solid #fff;\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: bold;\n text-decoration: none;\n padding: 0.1rem 1rem;\n font-size: 14px;\n &:hover,\n &:focus {\n text-decoration: underline;\n }\n }\n }\n`;\n\nconst LogoContainers = styled.div`\n height: 100px;\n`;\n\nconst Footer = ({ siteName, location }) => (\n \n \n \n \"Patties\n \n {trailingSlashIt(location.pathname) !== '/login/' && (\n
\n
    \n
  • \n Terms & Conditions\n
  • \n
  • \n Privacy Policy\n
  • \n \n
  • \n FAQs\n
  • \n
    \n
  • \n Sitemap\n
  • \n
\n
\n )}\n
\n
\n);\n\nFooter.propTypes = {\n siteName: PropTypes.string,\n location: PropTypes.object.isRequired,\n};\n\nFooter.defaultProps = {\n siteName: 'Lori Program Default',\n};\n\nexport default withSettings(Footer);\n","/**\n * Lori Footer\n */\n\nimport React from 'react';\nimport { styled } from '@smooth-ui/core-sc';\n\nconst StyledLoriFooter = styled.div`\n background-color: #141f2d;\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: #f4bd19;\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 Incremental\n \n \n);\n\nexport default LoriFooter;\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 pattiesStatementRequest,\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 selectPatties,\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 '_platform/src/components/LoriFooter/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 if (\n this.props.patties === undefined ||\n this.props.patties.lastUpdated === undefined\n ) {\n this.props.onPattiesStatementRequest();\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 \n \n \n \n \n \n
\n );\n }\n}\n\nWebApp.propTypes = {\n cart: PropTypes.object,\n currentUser: PropTypes.object.isRequired,\n location: PropTypes.object.isRequired,\n menu: PropTypes.array,\n onCartRequest: PropTypes.func.isRequired,\n onMenuRequest: PropTypes.func.isRequired,\n onLogout: PropTypes.func, // eslint-disable-line react/require-default-props\n // Using the disable line above as react sometimes doesn't pass through the prop pre-first render\n onSettingsRequest: PropTypes.func.isRequired,\n onWishlistRequest: PropTypes.func.isRequired,\n routes: PropTypes.array,\n settings: PropTypes.object,\n settingsNextClaimingPeriod: PropTypes.object,\n settingsPointsUOM: PropTypes.object,\n settingsProgram: PropTypes.object,\n settingsSalesUOMs: PropTypes.array,\n theme: PropTypes.object,\n wishlist: PropTypes.array,\n patties: PropTypes.object,\n onPattiesStatementRequest: PropTypes.func.isRequired,\n};\n\nWebApp.defaultProps = {\n cart: undefined,\n menu: undefined,\n routes: undefined,\n theme: { settingsApp: {} },\n settings: {},\n settingsNextClaimingPeriod: undefined,\n settingsPointsUOM: undefined,\n settingsProgram: undefined,\n settingsSalesUOMs: undefined,\n wishlist: undefined,\n patties: undefined,\n};\n\nconst mapStateToProps = createStructuredSelector({\n cart: selectCart(),\n menu: selectMenu(),\n routes: selectRoutes(),\n settings: selectSettings(),\n settingsNextClaimingPeriod: selectSettingsNextClaimingPeriod(),\n settingsPointsUOM: selectSettingsPointsUOM(),\n settingsSalesUOMs: selectSettingsSalesUOMs(),\n settingsProgram: selectSettingsProgram(),\n wishlist: selectWishlist(),\n patties: selectPatties(),\n});\n\nfunction mapDispatchToProps(dispatch) {\n return {\n dispatch,\n onCartRequest: () => dispatch(cartRequest()),\n onMenuRequest: refresh => dispatch(menuRequest(refresh)),\n onSettingsRequest: refresh => dispatch(settingsRequest(refresh)),\n onWishlistRequest: () => dispatch(wishlistRequest()),\n onPattiesStatementRequest: refresh =>\n dispatch(pattiesStatementRequest(refresh)),\n };\n}\n\nconst withConnect = connect(mapStateToProps, mapDispatchToProps);\nconst withReducer = injectReducer({ key: 'webApp', reducer });\nconst withSaga = injectSaga({ key: 'webApp', saga });\n\nexport default compose(withTheme, withReducer, withSaga, withConnect)(WebApp);\n","import configureStore from './core/configureStore'; // _platform\nimport history from './history'; // _platform\n\nconst initialState = {};\nconst store = configureStore(initialState, history);\n// Note: Store is exported in order to be used in utils/request\n\nexport default store;\n","import { createStore, compose, applyMiddleware } from 'redux';\nimport createSagaMiddleware from 'redux-saga';\n\nimport createReducer from './reducers';\n\nexport default function configureStore(initialState = {}, history) {\n let composeEnhancers = compose;\n let reduxSagaMonitorOptions = {};\n\n // If Redux DevTools and Saga Dev Tools Extensions are installed, enable them. Otherwise use Redux compose\n /* eslint-disable no-underscore-dangle */\n if (process.env.NODE_ENV !== 'production' && typeof window === 'object') {\n // Redux DevTools\n if (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {\n composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n // shouldHotReload: false,\n });\n }\n\n // Saga Dev Tools - enable once it supports redux-saga 1.x.x\n if (window.window.__SAGA_MONITOR_EXTENSION__) {\n reduxSagaMonitorOptions = {\n sagaMonitor: window.__SAGA_MONITOR_EXTENSION__,\n };\n }\n }\n /* eslint-enable */\n\n // Create the middlewares\n // 1. sagaMiddleware - redux-saga\n // 2. logger - redux-logger\n const sagaMiddleware = createSagaMiddleware(reduxSagaMonitorOptions);\n const middlewares = [sagaMiddleware];\n\n if (process.env.NODE_ENV === 'development') {\n // Add redux-logger in dev environment as it was added as a devDependency\n const { createLogger } = require('redux-logger');\n\n const logger = createLogger({\n collapsed: true,\n duration: true,\n });\n\n middlewares.push(logger);\n }\n\n const enhancers = [applyMiddleware(...middlewares)];\n\n // Create the store\n const store = createStore(\n createReducer(),\n initialState,\n composeEnhancers(...enhancers)\n );\n\n // Extensions\n store.runSaga = sagaMiddleware.run;\n store.injectedReducers = {}; // Register reducers\n store.injectedSagas = {}; // Register saga\n\n // Make reducers hot reloadable\n // https://github.com/wesbos/Learn-Redux/blob/master/client/store.js\n if (module.hot) {\n module.hot.accept('./reducers', () => {\n store.replaceReducer(createReducer(store.injectedReducers));\n });\n }\n\n return store;\n}\n"],"sourceRoot":""}