{"version":3,"sources":["config/index.js","actions/creditActions.js","components/Label.js","components/LoadingScreen.js","components/SubmitButton.js","components/Logo.js","actions/accountActions.js","constants/index.js","utils/axios.js","mixins/chartjs.js","serviceWorker.js","utils/settings.js","context/SettingsContext.js","reducers/accountReducer.js","reducers/creditReducer.js","reducers/index.js","store/index.js","components/SplashScreen.js","components/Auth.js","components/ScrollReset.js","theme/shadows.js","theme/index.js","theme/typography.js","components/LogoWhite.js","layouts/DashboardLayout/NavBar/NavItem.js","layouts/DashboardLayout/NavBar/index.js","layouts/DashboardLayout/TopBar/Account.js","layouts/DashboardLayout/TopBar/Credits.js","layouts/DashboardLayout/TopBar/Notifications.js","layouts/DashboardLayout/TopBar/index.js","layouts/DashboardLayout/index.js","components/AuthRoute.js","components/GuestRoute.js","components/VerifyRoute.js","RoutesAlternative.js","components/GoogleTagManager.js","App.js","hooks/useSettings.js","index.js","services/authService.js"],"names":["backendHost","razorpayKey","amplitudeApi","ENABLE_REDUX_LOGGER","hostname","window","location","test","API_ROOT","RAZORPAY_KEY","AMPLITUDE_API_KEY","GET_CREDITS","UPDATE_CREDITS","getCredits","request","axios","get","dispatch","then","response","type","payload","data","useStyles","makeStyles","theme","root","fontFamily","typography","alignItems","borderRadius","display","flexGrow","whiteSpace","cursor","flexShrink","fontSize","pxToRem","fontWeight","fontWeightMedium","height","justifyContent","letterSpacing","minWidth","padding","spacing","textTransform","transform","primary","color","palette","main","backgroundColor","fade","secondary","error","success","warning","processing","mustard","Label","className","children","rest","style","classes","clsx","defaultProps","background","default","flexDirection","minHeight","LoadingScreen","useEffect","NProgress","start","done","xsDown","width","mdUp","submitButton","marginTop","buttonProgress","colors","green","position","top","left","marginLeft","greenButton","redButton","red","SubmitButton","props","disabled","loading","fullWidth","onClick","size","variant","Logo","alt","src","LOGIN_REQUEST","LOGIN_SUCCESS","LOGIN_FAILURE","SILENT_LOGIN","LOGOUT","UPDATE_PROFILE","REFRESH_ACCOUNT","login","email","password","params","a","authService","loginWithEmailAndPassword","user","merchant","setUserData","logout","refreshAccount","THEMES","LIGHT","ONE_DARK","UNICORN","navConfig","subheader","items","title","icon","PieChart","href","permission","PhotoLibrary","AddBox","ListAlt","LibraryBooks","Assessment","StoreOutlined","BusinessCenter","Settings","GA_MEASUREMENT_ID","countryCodes","axiosApi","baseURL","transformResponse","humps","camelizeKeys","transformRequest","decamelizeThatDontBreaksFile","object","File","Array","map","item","FormData","formData","entries","key","value","append","decamelize","Object","keys","reduce","acc","next","errorResponse","message","errors","serverError","interceptors","use","status","Promise","reject","Chart","helpers","extend","elements","Rectangle","prototype","draw","right","bottom","signX","signY","borderSkipped","radius","ctx","this","_chart","vm","_view","borderWidth","cornerRadius","config","options","horizontal","base","x","y","barSize","Math","min","abs","halfStroke","borderLeft","borderRight","borderTop","borderBottom","beginPath","fillStyle","strokeStyle","borderColor","lineWidth","corners","startCorner","indexOf","cornerAt","index","corner","moveTo","i","nextCornerId","floor","xTl","xTr","yTl","yTr","xBl","xBr","yBl","yBr","lineTo","quadraticCurveTo","fill","stroke","Boolean","match","storeSettings","settings","localStorage","setItem","JSON","stringify","SettingsContext","createContext","defaultSettings","direction","responsiveFontSizes","SettingsProvider","useState","currentSettings","setCurrentSettings","document","dir","Provider","saveSettings","updatedSettings","mergedSettings","_","merge","Consumer","initialState","accountReducer","state","action","produce","draft","credits","creditReducer","rootReducer","combineReducers","account","credit","loggerMiddleware","createLogger","zIndex","logo","maxWidth","SlashScreen","Box","mb","CircularProgress","Auth","useDispatch","isLoading","setLoading","history","useHistory","enqueueSnackbar","useSnackbar","setAxiosInterceptors","onLogout","handleAuthentication","isAuthenticated","loginInWithToken","push","initAuth","SplashScreen","ScrollReset","useLocation","scrollTo","pathname","strongShadows","baseConfig","h1","h2","h3","h4","h5","h6","overline","body1","body2","subtitle1","overrides","MuiLinearProgress","overflow","MuiListItemIcon","MuiChip","MuiButton","label","containedSecondary","opacity","containedPrimary","MuiFormHelperText","MuiDrawer","paper","MuiDialog","scrollPaper","MuiTableCell","MuiInputLabel","outlined","blueGrey","MuiInputBase","input","MuiAutocomplete","option","tag","MuiPaper","elevation1","boxShadow","rounded","MuiTab","textColorSecondary","MuiTypography","MuiAvatar","colorDefault","MuiDialogActions","paddingRight","MuiBadge","colorPrimary","themeConfigs","name","active","common","white","dark","darker","text","shadows","hover","selected","disabledBackground","focus","createTheme","themeConfig","find","console","warn","Error","createMuiTheme","LogoWhite","paddingTop","paddingBottom","itemLeaf","button","buttonLeaf","fontWeightRegular","marginRight","lineHeight","NavItem","depth","Icon","openProp","open","Info","info","setOpen","paddingLeft","ListItem","disableGutters","Button","prevOpen","Collapse","in","activeClassName","component","RouterLink","exact","to","mobileDrawer","desktopDrawer","drawer","transition","transitions","create","easing","sharp","duration","standard","menuIcon","avatar","NavBar","permissionsArray","openMobile","onMobileClose","useSelector","permissions","accessTo","setHover","renderNavItems","List","disablePadding","showMenuItem","isPrimary","titlePermission","toLowerCase","replace","includes","matchPath","path","reduceChildRoutes","content","onMouseEnter","onMouseLeave","suppressScrollX","p","Fade","timeout","Divider","bgcolor","Typography","isBusinessAccount","mt","r","amplitude","getInstance","logEvent","catch","e","field","hasOwnProperty","errorMessageArray","anchorOrigin","Hidden","lgUp","Drawer","anchor","onClose","mdDown","popover","Account","ref","useRef","isOpen","handleClose","handleLogout","ButtonBase","Avatar","smDown","id","Menu","vertical","keepMounted","PaperProps","getContentAnchorEl","anchorEl","current","MenuItem","badge","Credits","Tooltip","startIcon","toFixed","IconButton","Refresh","Notifications","SvgIcon","toolbar","TopBar","onMobileNavOpen","AppBar","Toolbar","menuButton","ml","wrapper","flex","breakpoints","up","contentContainer","DashboardLayout","isMobileNavOpen","setMobileNavOpen","setUserId","AuthRoute","Component","render","emailVerifiedAt","GuestRoute","VerifyRoute","Routes","fallback","from","lazy","GoogleTagManager","Helmet","createBrowserHistory","jss","plugins","jssPreset","rtl","createStyles","boxSizing","margin","html","body","App","useContext","init","self","ThemeProvider","StylesProvider","utils","MomentUtils","maxSnack","autoHideDuration","enableES5","store","preloadedState","middlewares","thunkMiddleware","middlewareEnhancer","composeWithDevTools","applyMiddleware","enhancers","composedEnhancers","compose","createStore","configureStore","storedData","getItem","parse","err","restoreSettings","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister","setSession","resolve","post","accessToken","register","values","removeItem","defaults","headers","Authorization","getAccessToken","isValidToken","decoded","jwtDecode","currentTime","Date","now","exp"],"mappings":"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ASF,EAASG,a,gCC7G1B,6NAIaoG,EAAS,CAClBC,MAAO,QACPC,SAAU,WACVC,QAAS,WAGAC,EAAY,CACrB,CACIC,UAAW,QACXC,MAAO,CACH,CACIC,MAAO,YACPC,KAAMC,IACNC,KAAM,iBACNC,WAAY,MAEhB,CACIJ,MAAO,iBACPC,KAAMI,IACNF,KAAM,eACNC,WAAY,MAEhB,CACIJ,MAAO,YACPC,KAAMK,IACNH,KAAM,iBACNC,WAAY,oBAEhB,CACIJ,MAAO,gBACPC,KAAMM,IACNJ,KAAM,cACNC,WAAY,iBAEhB,CACIJ,MAAO,kBACPC,KAAMO,IACNL,KAAM,gBACNC,WAAY,mBAEhB,CACIJ,MAAO,qBACPC,KAAMQ,IACNN,KAAM,aACNC,WAAY,MAEhB,CACIJ,MAAO,mBACPC,KAAMI,IACNF,KAAM,eACNC,WAAY,MAEhB,CACIJ,MAAO,QACPC,KAAMS,IACNP,KAAM,aACNC,WAAY,SAEhB,CACIJ,MAAO,UACPC,KAAMU,IACNR,KAAM,eACNC,WAAY,WAEhB,CACIJ,MAAO,WACPC,KAAMW,IACNT,KAAM,gBACNC,WAAY,eAMfS,EAAoB,iBAEpBC,EAAe,CACxB,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,U,gHC9SEhI,EAAQiI,SAAgB,CAC5BC,QAASzI,IACT0I,kBAAkB,GAAD,mBACZF,WAAkBE,mBADN,CAEf,SAAA5H,GAAI,OAAI6H,IAAMC,aAAa9H,MAE7B+H,iBAAiB,CACf,SAAA/H,GAAI,OAAIgI,EAA6BhI,KADvB,mBAEX0H,WAAkBK,qBAInBC,EAA+B,SAA/BA,EAA+BC,GACnC,GAAIA,KAAYA,aAAkBC,MAAO,CACvC,GAAID,aAAkBE,MACpB,OAAOF,EAAOG,KAAI,SAAAC,GAAI,OAAIL,EAA6BK,MAEzD,GAAIJ,aAAkBK,SAAU,CAC9B,IAD8B,EAC1BC,EAAW,IAAID,SADW,cAEHL,EAAOO,WAFJ,IAE9B,2BAA6C,CAAC,IAAD,yBAAjCC,EAAiC,KAA5BC,EAA4B,KAC3CH,EAASI,OAAOd,IAAMe,WAAWH,GAAMC,IAHX,8BAK9B,OAAOH,EAET,GAAsB,kBAAXN,EACT,OAAOY,OAAOC,KAAKb,GAAQc,QACzB,SAACC,EAAKC,GAAN,mBAAC,eACID,GADL,kBAEGnB,IAAMe,WAAWK,GAAQjB,EAA6BC,EAAOgB,QA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","file":"static/js/main.1ed7bbb0.chunk.js","sourcesContent":["// or get from process.env.REACT_APP_{var} to handle PROD and DEV environments\nexport const APP_VERSION = '2.0.0'\nexport const API_BASE_URL = '/api'\nexport const ENABLE_REDUX_LOGGER = false\n\nlet backendHost\nlet razorpayKey, amplitudeApi\nconst hostname = window && window.location && window.location.hostname\n\nif (hostname === 'merchants.printrove.com') {\n backendHost = 'https://api.printrove.com'\n razorpayKey = 'rzp_live_4VNYd1qaZkbxzW'\n amplitudeApi = 'ddc2fdbdf5cf9fd6c21f89521fbf6130'\n} else if (/staging/.test(hostname) || /amplify/.test(hostname)) {\n backendHost = 'https://stagingapi.printrove.com'\n razorpayKey = 'rzp_test_FkrP9DUcOI8Cgf'\n amplitudeApi = '9e770135b0a5eb65a9938f7568e976c7'\n} else if (/live/.test(hostname)) {\n backendHost = 'https://stagingapi.printrove.com'\n razorpayKey = 'rzp_test_FkrP9DUcOI8Cgf'\n amplitudeApi = '9e770135b0a5eb65a9938f7568e976c7'\n} else {\n backendHost = 'http://ptapi.test'\n razorpayKey = 'rzp_test_f4gUVTDHZbunzS'\n amplitudeApi = 'e13f0fdcbb533b26a0043af1e2846ada'\n}\n\nexport const API_ROOT = `${backendHost}/api`\nexport const RAZORPAY_KEY = razorpayKey\nexport const AMPLITUDE_API_KEY = amplitudeApi\n\nexport default {}\n","import axios from 'src/utils/axios';\n\nexport const GET_CREDITS = '@credit/get';\nexport const UPDATE_CREDITS = '@credit/update';\n\nexport function getCredits() {\n const request = axios.get('/user');\n return dispatch => {\n request.then(response =>\n dispatch({\n type: GET_CREDITS,\n payload: response.data\n })\n );\n };\n}\n\nexport function updateCredits(credits) {\n return dispatch =>\n dispatch({\n type: UPDATE_CREDITS,\n payload: {\n credits\n }\n });\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { fade, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n fontFamily: theme.typography.fontFamily,\n alignItems: 'center',\n borderRadius: 2,\n display: 'inline-flex',\n flexGrow: 0,\n whiteSpace: 'nowrap',\n cursor: 'default',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(12),\n fontWeight: theme.typography.fontWeightMedium,\n height: 20,\n justifyContent: 'center',\n letterSpacing: 0.5,\n minWidth: 20,\n padding: theme.spacing(0.5, 1),\n textTransform: 'uppercase',\n transform: 'scale(0.9)'\n },\n primary: {\n color: theme.palette.primary.main,\n backgroundColor: fade(theme.palette.primary.main, 0.08)\n },\n secondary: {\n color: theme.palette.secondary.main,\n backgroundColor: fade(theme.palette.secondary.main, 0.08)\n },\n error: {\n color: theme.palette.error.main,\n backgroundColor: fade(theme.palette.error.main, 0.08)\n },\n success: {\n color: theme.palette.success.main,\n backgroundColor: fade(theme.palette.success.main, 0.08)\n },\n warning: {\n color: theme.palette.warning.main,\n backgroundColor: fade(theme.palette.warning.main, 0.08)\n },\n processing: {\n color: '#007af1',\n backgroundColor: fade('#007af1', 0.08)\n },\n mustard: {\n color: '#d7922f',\n backgroundColor: fade('#d7922f', 0.08)\n }\n}));\n\nfunction Label({ className, color, children, style, ...rest }) {\n const classes = useStyles();\n\n return (\n \n {children}\n \n );\n}\n\nLabel.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n color: PropTypes.oneOf([\n 'primary',\n 'secondary',\n 'error',\n 'warning',\n 'success',\n 'mustard',\n 'processing'\n ])\n};\n\nLabel.defaultProps = {\n className: '',\n color: 'secondary'\n};\n\nexport default Label;\n","import React, { useEffect } from 'react';\nimport NProgress from 'nprogress';\nimport { Box, Hidden, LinearProgress, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(3)\n }\n}));\n\nfunction LoadingScreen() {\n const classes = useStyles();\n\n useEffect(() => {\n NProgress.start();\n\n return () => {\n NProgress.done();\n };\n }, []);\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nexport default LoadingScreen;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Button, CircularProgress, colors } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles(theme => ({\n submitButton: {\n marginTop: theme.spacing(2),\n width: '100%'\n },\n buttonProgress: {\n color: colors.green[500],\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n },\n greenButton: {\n backgroundColor: colors.green[500]\n },\n redButton: {\n backgroundColor: colors.red[500]\n }\n}));\n\nconst SubmitButton = props => {\n const {\n disabled,\n loading,\n fullWidth,\n onClick,\n type,\n color,\n children,\n greenButton,\n redButton,\n className,\n ...rest\n } = props;\n const classes = useStyles();\n\n return (\n \n {loading && (\n \n )}\n {children}\n \n );\n};\n\nSubmitButton.propTypes = {\n // onClick: PropTypes.func.isRequired,\n fullWidth: PropTypes.bool,\n disabled: PropTypes.bool,\n loading: PropTypes.bool\n // color: PropTypes.string.isRequired\n};\n\nexport default SubmitButton;\n","import React from 'react';\n\nfunction Logo(props) {\n return \"Logo\";\n}\n\nexport default Logo;\n","import axios from 'src/utils/axios';\nimport authService from 'src/services/authService';\n\nexport const LOGIN_REQUEST = '@account/login-request';\nexport const LOGIN_SUCCESS = '@account/login-success';\nexport const LOGIN_FAILURE = '@account/login-failure';\nexport const SILENT_LOGIN = '@account/silent-login';\nexport const LOGOUT = '@account/logout';\nexport const REGISTER = '@account/register';\nexport const UPDATE_PROFILE = '@account/update-profile';\nexport const REFRESH_ACCOUNT = '@account/refresh-account';\nexport const UPDATE_CREDITS = '@account/update-credits';\n\nexport function login(email, password, params) {\n return async dispatch => {\n try {\n dispatch({ type: LOGIN_REQUEST });\n\n const response = await authService.loginWithEmailAndPassword(\n email,\n password,\n params\n );\n const user = response.user;\n const merchant = response.merchant;\n\n dispatch({\n type: LOGIN_SUCCESS,\n payload: {\n user,\n merchant\n }\n });\n } catch (error) {\n dispatch({ type: LOGIN_FAILURE });\n throw error;\n }\n };\n}\n\nexport function setUserData(user, merchant) {\n return dispatch =>\n dispatch({\n type: SILENT_LOGIN,\n payload: {\n user,\n merchant\n }\n });\n}\n\nexport function updateCredits(credits) {\n return dispatch =>\n dispatch({\n type: UPDATE_CREDITS,\n payload: {\n credits\n }\n });\n}\n\nexport function logout() {\n return async dispatch => {\n authService.logout();\n\n dispatch({\n type: LOGOUT\n });\n };\n}\n\nexport function register(values) {\n return async dispatch => {\n try {\n dispatch({ type: REGISTER });\n const user = await authService.register(values);\n dispatch({\n type: LOGIN_SUCCESS,\n payload: {\n user\n }\n });\n } catch (error) {\n dispatch({ type: LOGIN_FAILURE });\n throw error;\n }\n };\n}\n\nexport function updateProfile(update) {\n const request = axios.put('user', { update });\n\n return dispatch => {\n request.then(response =>\n dispatch({\n type: UPDATE_PROFILE,\n payload: response.data\n })\n );\n };\n}\n\nexport function refreshAccount() {\n const request = axios.get('user');\n\n return dispatch => {\n request.then(response =>\n dispatch({\n type: REFRESH_ACCOUNT,\n payload: response.data\n })\n );\n };\n}\n","/* eslint-disable import/prefer-default-export */\nimport ReceiptIcon from '@material-ui/icons/ReceiptOutlined'\nimport { LibraryBooks, PhotoLibrary, BusinessCenter, Settings, StoreOutlined, AddBox, ListAlt, PieChart, Assessment } from '@material-ui/icons'\n\nexport const THEMES = {\n LIGHT: 'LIGHT',\n ONE_DARK: 'ONE_DARK',\n UNICORN: 'UNICORN'\n}\n\nexport const navConfig = [\n {\n subheader: 'panel',\n items: [\n {\n title: 'Dashboard',\n icon: PieChart,\n href: '/app/dashboard',\n permission: null\n },\n {\n title: 'Design Library',\n icon: PhotoLibrary,\n href: '/app/designs',\n permission: null\n },\n {\n title: 'New Order',\n icon: AddBox,\n href: '/app/order/new',\n permission: 'new_manual_order'\n },\n {\n title: 'Manage Orders',\n icon: ListAlt,\n href: '/app/orders',\n permission: 'manage_orders'\n },\n {\n title: 'Product Library',\n icon: LibraryBooks,\n href: '/app/products',\n permission: 'product_library'\n },\n {\n title: 'Stock Availability',\n icon: Assessment,\n href: '/app/stock',\n permission: null\n },\n {\n title: 'Mockup Generator',\n icon: PhotoLibrary,\n href: '/app/mockups',\n permission: null\n },\n {\n title: 'Store',\n icon: StoreOutlined,\n href: '/app/store',\n permission: 'store'\n },\n {\n title: 'Billing',\n icon: BusinessCenter,\n href: '/app/billing',\n permission: 'billing'\n },\n {\n title: 'Settings',\n icon: Settings,\n href: '/app/settings',\n permission: 'settings'\n }\n ]\n }\n]\n\nexport const GA_MEASUREMENT_ID = 'UA-131122685-3'\n\nexport const countryCodes = [\n '+1',\n '+7',\n '+20',\n '+27',\n '+30',\n '+31',\n '+32',\n '+33',\n '+34',\n '+36',\n '+39',\n '+40',\n '+41',\n '+43',\n '+44',\n '+45',\n '+46',\n '+47',\n '+48',\n '+49',\n '+51',\n '+52',\n '+53',\n '+54',\n '+55',\n '+56',\n '+57',\n '+58',\n '+60',\n '+61',\n '+62',\n '+63',\n '+64',\n '+65',\n '+66',\n '+81',\n '+82',\n '+84',\n '+86',\n '+90',\n '+91',\n '+92',\n '+93',\n '+94',\n '+95',\n '+98',\n '+211',\n '+212',\n '+213',\n '+216',\n '+218',\n '+220',\n '+221',\n '+222',\n '+223',\n '+224',\n '+225',\n '+226',\n '+227',\n '+228',\n '+229',\n '+230',\n '+231',\n '+232',\n '+233',\n '+234',\n '+235',\n '+236',\n '+237',\n '+238',\n '+239',\n '+240',\n '+241',\n '+242',\n '+243',\n '+244',\n '+245',\n '+246',\n '+248',\n '+249',\n '+250',\n '+251',\n '+252',\n '+253',\n '+254',\n '+255',\n '+256',\n '+257',\n '+258',\n '+260',\n '+261',\n '+262',\n '+263',\n '+264',\n '+265',\n '+266',\n '+267',\n '+268',\n '+269',\n '+290',\n '+291',\n '+297',\n '+298',\n '+299',\n '+350',\n '+351',\n '+352',\n '+353',\n '+354',\n '+355',\n '+356',\n '+357',\n '+358',\n '+359',\n '+370',\n '+371',\n '+372',\n '+373',\n '+374',\n '+375',\n '+376',\n '+377',\n '+378',\n '+380',\n '+381',\n '+382',\n '+385',\n '+386',\n '+387',\n '+389',\n '+420',\n '+421',\n '+423',\n '+500',\n '+501',\n '+502',\n '+503',\n '+504',\n '+505',\n '+506',\n '+507',\n '+508',\n '+509',\n '+590',\n '+591',\n '+592',\n '+593',\n '+594',\n '+595',\n '+596',\n '+597',\n '+598',\n '+599',\n '+670',\n '+672',\n '+673',\n '+674',\n '+675',\n '+676',\n '+677',\n '+678',\n '+679',\n '+680',\n '+681',\n '+682',\n '+683',\n '+684',\n '+686',\n '+687',\n '+688',\n '+689',\n '+690',\n '+691',\n '+692',\n '+850',\n '+852',\n '+853',\n '+855',\n '+856',\n '+880',\n '+886',\n '+960',\n '+961',\n '+962',\n '+963',\n '+964',\n '+965',\n '+966',\n '+967',\n '+968',\n '+970',\n '+971',\n '+972',\n '+973',\n '+974',\n '+975',\n '+976',\n '+977',\n '+992',\n '+994',\n '+995',\n '+996',\n '+998',\n '+1242',\n '+1246',\n '+1264',\n '+1268',\n '+1284',\n '+1340',\n '+1345',\n '+1441',\n '+1473',\n '+1649',\n '+1664',\n '+1670',\n '+1671',\n '+1684',\n '+1758',\n '+1767',\n '+1784',\n '+1787',\n '+1809',\n '+1868',\n '+1869',\n '+1876',\n '+7370'\n]\n","import * as axiosApi from 'axios';\nimport { API_ROOT } from 'src/config';\nimport humps from 'humps';\n\nconst axios = axiosApi.create({\n baseURL: API_ROOT,\n transformResponse: [\n ...axiosApi.defaults.transformResponse,\n data => humps.camelizeKeys(data)\n ],\n transformRequest: [\n data => decamelizeThatDontBreaksFile(data),\n ...axiosApi.defaults.transformRequest\n ]\n});\n\nconst decamelizeThatDontBreaksFile = object => {\n if (object && !(object instanceof File)) {\n if (object instanceof Array) {\n return object.map(item => decamelizeThatDontBreaksFile(item));\n }\n if (object instanceof FormData) {\n let formData = new FormData();\n for (const [key, value] of object.entries()) {\n formData.append(humps.decamelize(key), value);\n }\n return formData;\n }\n if (typeof object === 'object') {\n return Object.keys(object).reduce(\n (acc, next) => ({\n ...acc,\n [humps.decamelize(next)]: decamelizeThatDontBreaksFile(object[next])\n }),\n {}\n );\n }\n }\n return object;\n};\n\nconst errorResponse = {\n response: {\n data: {\n message:\n 'There was an issue connecting to our backend. Please drop an email to support@printrove.com',\n errors: {\n serverError: true\n }\n }\n }\n};\n\naxios.interceptors.response.use(\n response => response,\n error => {\n error = !error.response\n ? errorResponse\n : error.response.status === 500 ||\n error.response.status === 429 ||\n error.response.status === 404\n ? error && error.response.data.message !== ''\n ? error\n : errorResponse\n : error;\n return Promise.reject(error);\n }\n);\n\nexport default axios;\n","/* eslint-disable */\nimport { Chart } from 'react-chartjs-2';\n\n// ChartJS extension rounded bar chart\n// https://codepen.io/jedtrow/full/ygRYgo\nfunction draw() {\n const { ctx } = this._chart;\n const vm = this._view;\n let { borderWidth } = vm;\n\n let left;\n let right;\n let top;\n let bottom;\n let signX;\n let signY;\n let borderSkipped;\n let radius;\n\n // If radius is less than 0 or is large enough to cause drawing errors a max\n // radius is imposed. If cornerRadius is not defined set it to 0.\n let { cornerRadius } = this._chart.config.options;\n if (cornerRadius < 0) {\n cornerRadius = 0;\n }\n\n if (typeof cornerRadius === 'undefined') {\n cornerRadius = 0;\n }\n\n if (!vm.horizontal) {\n // bar\n left = vm.x - vm.width / 2;\n right = vm.x + vm.width / 2;\n top = vm.y;\n bottom = vm.base;\n signX = 1;\n signY = bottom > top ? 1 : -1;\n borderSkipped = vm.borderSkipped || 'bottom';\n } else {\n // horizontal bar\n left = vm.base;\n right = vm.x;\n top = vm.y - vm.height / 2;\n bottom = vm.y + vm.height / 2;\n signX = right > left ? 1 : -1;\n signY = 1;\n borderSkipped = vm.borderSkipped || 'left';\n }\n\n // Canvas doesn't allow us to stroke inside the width so we can\n // adjust the sizes to fit if we're setting a stroke on the line\n if (borderWidth) {\n // borderWidth shold be less than bar width and bar height.\n const barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\n const halfStroke = borderWidth / 2;\n // Adjust borderWidth when bar top position is near vm.base(zero).\n const borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n const borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n const borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n const borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n // not become a vertical line?\n if (borderLeft !== borderRight) {\n top = borderTop;\n bottom = borderBottom;\n }\n // not become a horizontal line?\n if (borderTop !== borderBottom) {\n left = borderLeft;\n right = borderRight;\n }\n }\n\n ctx.beginPath();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = borderWidth;\n\n // Corner points, from bottom-left to bottom-right clockwise\n // | 1 2 |\n // | 0 3 |\n const corners = [[left, bottom], [left, top], [right, top], [right, bottom]];\n\n // Find first (starting) corner with fallback to 'bottom'\n const borders = ['bottom', 'left', 'top', 'right'];\n let startCorner = borders.indexOf(borderSkipped, 0);\n if (startCorner === -1) {\n startCorner = 0;\n }\n\n function cornerAt(index) {\n return corners[(startCorner + index) % 4];\n }\n\n // Draw rectangle from 'startCorner'\n let corner = cornerAt(0);\n ctx.moveTo(corner[0], corner[1]);\n\n for (let i = 1; i < 4; i += 1) {\n corner = cornerAt(i);\n let nextCornerId = i + 1;\n if (nextCornerId === 4) {\n nextCornerId = 0;\n }\n\n const width = corners[2][0] - corners[1][0];\n const height = corners[0][1] - corners[1][1];\n const x = corners[1][0];\n const y = corners[1][1];\n\n radius = cornerRadius;\n // Fix radius being too large\n if (radius > Math.abs(height) / 2) {\n radius = Math.floor(Math.abs(height) / 2);\n }\n if (radius > Math.abs(width) / 2) {\n radius = Math.floor(Math.abs(width) / 2);\n }\n\n if (height < 0) {\n // Negative values in a standard bar chart\n const xTl = x;\n const xTr = x + width;\n const yTl = y + height;\n const yTr = y + height;\n\n const xBl = x;\n const xBr = x + width;\n const yBl = y;\n const yBr = y;\n\n // Draw\n ctx.moveTo(xBl + radius, yBl);\n ctx.lineTo(xBr - radius, yBr);\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n ctx.lineTo(xTr, yTr + radius);\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n ctx.lineTo(xTl + radius, yTl);\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n ctx.lineTo(xBl, yBl - radius);\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n } else if (width < 0) {\n // Negative values in a horizontal bar chart\n const xTl = x + width;\n const xTr = x;\n const yTl = y;\n const yTr = y;\n\n const xBl = x + width;\n const xBr = x;\n const yBl = y + height;\n const yBr = y + height;\n\n // Draw\n ctx.moveTo(xBl + radius, yBl);\n ctx.lineTo(xBr - radius, yBr);\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n ctx.lineTo(xTr, yTr + radius);\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n ctx.lineTo(xTl + radius, yTl);\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n ctx.lineTo(xBl, yBl - radius);\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n } else {\n // Positive Value\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(\n x + width,\n y + height,\n x + width - radius,\n y + height\n );\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n }\n }\n\n ctx.fill();\n if (borderWidth) {\n ctx.stroke();\n }\n}\n\nChart.helpers.extend(Chart.elements.Rectangle.prototype, {\n draw\n});\n","/* eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in projection, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'projection' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","export function restoreSettings() {\n let settings = null;\n\n try {\n const storedData = localStorage.getItem('settings');\n\n if (storedData) {\n settings = JSON.parse(storedData);\n }\n } catch (err) {\n // If stored data is not a strigified JSON this might fail,\n // that's why we catch the error\n }\n\n return settings;\n}\n\nexport function storeSettings(settings) {\n localStorage.setItem('settings', JSON.stringify(settings));\n}\n","import React, { createContext, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { THEMES } from 'src/constants';\nimport { storeSettings } from 'src/utils/settings';\n\nconst SettingsContext = createContext();\n\nconst defaultSettings = {\n direction: 'ltr',\n responsiveFontSizes: true,\n theme: THEMES.LIGHT\n};\n\nexport function SettingsProvider({ settings, children }) {\n const [currentSettings, setCurrentSettings] = useState(\n settings || defaultSettings\n );\n\n const handleSaveSettings = (updatedSettings = {}) => {\n const mergedSettings = _.merge({}, currentSettings, updatedSettings);\n\n setCurrentSettings(mergedSettings);\n storeSettings(mergedSettings);\n };\n\n useEffect(() => {\n document.dir = currentSettings.direction;\n }, [currentSettings]);\n\n return (\n \n {children}\n \n );\n}\n\nSettingsProvider.propTypes = {\n children: PropTypes.node.isRequired,\n settings: PropTypes.object\n};\n\nexport const SettingsConsumer = SettingsContext.Consumer;\n\nexport default SettingsContext;\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport {\n LOGIN_REQUEST,\n LOGIN_SUCCESS,\n LOGIN_FAILURE,\n LOGOUT,\n SILENT_LOGIN,\n UPDATE_PROFILE,\n UPDATE_CREDITS,\n REFRESH_ACCOUNT\n} from 'src/actions/accountActions';\n\nconst initialState = {\n user: null,\n merchant: null\n};\n\nconst accountReducer = (state = initialState, action) => {\n switch (action.type) {\n case LOGIN_REQUEST: {\n return produce(state, draft => {\n // Ensure we clear current session\n draft.user = null;\n draft.merchant = null;\n });\n }\n\n case LOGIN_SUCCESS: {\n const { user, merchant } = action.payload;\n\n return produce(state, draft => {\n draft.user = user;\n draft.merchant = merchant;\n });\n }\n\n case LOGIN_FAILURE: {\n return produce(state, () => {\n // Maybe store error\n });\n }\n\n case LOGOUT: {\n return produce(state, draft => {\n draft.user = null;\n draft.merchant = null;\n });\n }\n\n case SILENT_LOGIN: {\n const { user, merchant } = action.payload;\n\n return produce(state, draft => {\n draft.user = user;\n draft.merchant = merchant;\n });\n }\n\n case UPDATE_PROFILE: {\n const { user, merchant } = action.payload;\n\n return produce(state, draft => {\n draft.user = user;\n draft.merchant = merchant;\n });\n }\n\n case REFRESH_ACCOUNT: {\n const { user, merchant } = action.payload;\n\n return produce(state, draft => {\n draft.user = user;\n draft.merchant = merchant;\n });\n }\n\n case UPDATE_CREDITS: {\n const { credits } = action.payload;\n\n return produce(state, draft => {\n draft.merchant.credits = credits;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default accountReducer;\n","/* eslint-disable no-param-reassign */\nimport { GET_CREDITS, UPDATE_CREDITS } from 'src/actions/creditActions';\n\nconst initialState = null;\n\nconst creditReducer = (state = initialState, action) => {\n switch (action.type) {\n case GET_CREDITS: {\n const { merchant } = action.payload;\n return merchant.credits;\n }\n case UPDATE_CREDITS: {\n const { credits } = action.payload;\n return credits;\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default creditReducer;\n","import { combineReducers } from 'redux';\nimport accountReducer from './accountReducer';\nimport creditReducer from './creditReducer';\n\nconst rootReducer = combineReducers({\n account: accountReducer,\n credit: creditReducer\n});\n\nexport default rootReducer;\n","/* eslint-disable import/prefer-default-export */\nimport { applyMiddleware, createStore, compose } from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport { createLogger } from 'redux-logger';\nimport rootReducer from 'src/reducers';\nimport { ENABLE_REDUX_LOGGER } from 'src/config';\n\nconst loggerMiddleware = createLogger();\n\nexport function configureStore(preloadedState = {}) {\n const middlewares = [thunkMiddleware];\n\n if (ENABLE_REDUX_LOGGER) {\n middlewares.push(loggerMiddleware);\n }\n\n const middlewareEnhancer = composeWithDevTools(\n applyMiddleware(...middlewares)\n );\n\n const enhancers = [middlewareEnhancer];\n const composedEnhancers = compose(...enhancers);\n\n const store = createStore(rootReducer, preloadedState, composedEnhancers);\n\n return store;\n}\n","import React from 'react';\nimport { Box, CircularProgress, makeStyles } from '@material-ui/core';\nimport Logo from 'src/components/Logo';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n left: 0,\n padding: theme.spacing(3),\n position: 'fixed',\n top: 0,\n width: '100%',\n zIndex: 2000\n },\n logo: {\n width: 200,\n maxWidth: '100%'\n }\n}));\n\nfunction SlashScreen() {\n const classes = useStyles();\n\n return (\n
\n \n \n \n \n
\n );\n}\n\nexport default SlashScreen;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport SplashScreen from 'src/components/SplashScreen';\nimport { setUserData, logout } from 'src/actions/accountActions';\nimport authService from 'src/services/authService';\nimport { useHistory } from 'react-router-dom';\nimport { useSnackbar } from 'notistack';\n\nfunction Auth({ children }) {\n const dispatch = useDispatch();\n const [isLoading, setLoading] = useState(true);\n const history = useHistory();\n\n const { enqueueSnackbar } = useSnackbar();\n\n useEffect(() => {\n const initAuth = async () => {\n authService.setAxiosInterceptors({\n onLogout: () => dispatch(logout())\n });\n\n authService.handleAuthentication();\n\n if (authService.isAuthenticated()) {\n let response;\n try {\n response = await authService.loginInWithToken();\n } catch (error) {\n enqueueSnackbar(\n 'There was an issue authenticating this request. Please login again.',\n {\n variant: 'error'\n }\n );\n setLoading(false);\n history.push('/login');\n return;\n }\n\n await dispatch(setUserData(response.user, response.merchant));\n }\n\n setLoading(false);\n };\n\n initAuth();\n }, [dispatch]);\n\n if (isLoading) {\n return ;\n }\n\n return children;\n}\n\nAuth.propTypes = {\n children: PropTypes.any\n};\n\nexport default Auth;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router';\n\nfunction ScrollReset() {\n const location = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [location.pathname]);\n\n return null;\n}\n\nexport default ScrollReset;\n","export const softShadows = [\n 'none',\n '0 0 0 1px rgba(63,63,68,0.05), 0 1px 2px 0 rgba(63,63,68,0.15)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 2px 2px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 5px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 8px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 9px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 10px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 11px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 12px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 13px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 14px 24px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 16px 28px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 18px 30px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 20px 32px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 22px 34px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 24px 36px -8px rgba(0,0,0,0.25)'\n];\n\nexport const strongShadows = [\n 'none',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 2px 2px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 8px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 5px 8px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 12px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 12px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 16px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 16px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 8px 18px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 9px 18px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 10px 20px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 11px 20px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 12px 22px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 13px 22px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 14px 24px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 16px 28px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 18px 30px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 20px 32px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 22px 34px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 24px 36px -8px rgba(0,0,0,0.50)'\n];\n","/* eslint-disable no-console */\n/* eslint-disable import/prefer-default-export */\nimport _ from 'lodash';\nimport { colors, createMuiTheme, responsiveFontSizes } from '@material-ui/core';\nimport typography from './typography';\nimport { softShadows, strongShadows } from './shadows';\nimport { THEMES } from '../constants';\n\nconst baseConfig = {\n direction: 'ltr',\n typography,\n overrides: {\n MuiLinearProgress: {\n root: {\n borderRadius: 3,\n overflow: 'hidden'\n }\n },\n MuiListItemIcon: {\n root: {\n minWidth: 32\n }\n },\n MuiChip: {\n root: {\n backgroundColor: 'rgba(0,0,0,0.075)'\n }\n },\n MuiButton: {\n label: {\n fontFamily: \"'Open Sans', sans-serif\",\n textTransform: 'initial',\n fontSize: '0.85rem'\n },\n containedSecondary: {\n color: 'white',\n '&:hover': {\n opacity: 0.9,\n backgroundColor: '#ff6653'\n }\n },\n containedPrimary: {\n color: 'white',\n '&:hover': {\n opacity: 0.9,\n backgroundColor: '#ff6653'\n }\n }\n },\n MuiFormHelperText: {\n root: {\n fontFamily: \"'Open Sans', sans-serif\"\n }\n },\n MuiDrawer: {\n paper: {\n zIndex: 1400\n }\n },\n MuiDialog: {\n root: {\n zIndex: 1400\n },\n scrollPaper: {\n alignItems: 'flex-start'\n }\n },\n MuiTableCell: {\n root: {\n fontSize: '0.8rem'\n }\n },\n MuiInputLabel: {\n outlined: {\n fontSize: '0.84rem',\n color: colors.blueGrey[900],\n '&$shrink': {\n transform: 'translate(15px, -6px) scale(0.9)'\n }\n }\n },\n MuiInputBase: {\n input: {\n fontSize: '0.8rem',\n height: '17px',\n color: colors.blueGrey[900]\n }\n },\n MuiAutocomplete: {\n option: {\n fontSize: '0.8rem'\n },\n tag: {\n fontSize: '0.8rem'\n }\n },\n MuiPaper: {\n elevation1: {\n boxShadow: '0 70px 200px 15px rgba(63,63,68,0.05)',\n borderRadius: '10px'\n },\n rounded: {\n borderRadius: '12px'\n }\n },\n MuiTab: {\n textColorSecondary: {\n color: colors.blueGrey[900]\n }\n },\n MuiTypography: {\n body1: {\n fontSize: '0.8rem'\n }\n },\n MuiAvatar: {\n colorDefault: {\n color: colors.blueGrey[900],\n backgroundColor: '#f2f5f8'\n }\n },\n MuiDialogActions: {\n root: { backgroundColor: '#f2f5f8', paddingRight: '16px' }\n },\n MuiBadge: {\n colorPrimary: {\n color: 'white'\n }\n }\n }\n};\n\nconst themeConfigs = [\n {\n name: THEMES.LIGHT,\n overrides: {\n MuiInputBase: {\n input: {\n '&::placeholder': {\n opacity: 1,\n color: colors.blueGrey[600]\n }\n }\n }\n },\n palette: {\n type: 'light',\n action: {\n active: colors.blueGrey[600]\n // disabledBackground: 'black'\n },\n background: {\n default: colors.common.white,\n dark: '#f2f5f8',\n darker: '#EAF0F6',\n paper: colors.common.white\n },\n primary: {\n // main: colors.indigo[600]\n main: '#ff6653'\n },\n secondary: {\n main: '#ff6653'\n // main: '#5850EC'\n },\n text: {\n primary: colors.blueGrey[900],\n secondary: colors.blueGrey[600]\n }\n },\n shadows: softShadows\n },\n {\n name: THEMES.ONE_DARK,\n palette: {\n type: 'dark',\n action: {\n active: 'rgba(255, 255, 255, 0.54)',\n hover: 'rgba(255, 255, 255, 0.04)',\n selected: 'rgba(255, 255, 255, 0.08)',\n disabled: 'rgba(255, 255, 255, 0.26)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n focus: 'rgba(255, 255, 255, 0.12)'\n },\n background: {\n default: '#282C34',\n dark: '#1c2025',\n paper: '#282C34'\n },\n primary: {\n main: '#8a85ff'\n },\n secondary: {\n main: '#8a85ff'\n },\n text: {\n primary: '#e6e5e8',\n secondary: '#adb0bb'\n }\n },\n shadows: strongShadows\n },\n {\n name: THEMES.UNICORN,\n palette: {\n type: 'dark',\n action: {\n active: 'rgba(255, 255, 255, 0.54)',\n hover: 'rgba(255, 255, 255, 0.04)',\n selected: 'rgba(255, 255, 255, 0.08)',\n disabled: 'rgba(255, 255, 255, 0.26)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n focus: 'rgba(255, 255, 255, 0.12)'\n },\n background: {\n default: '#2a2d3d',\n dark: '#222431',\n paper: '#2a2d3d'\n },\n primary: {\n main: '#a67dff'\n },\n secondary: {\n main: '#a67dff'\n },\n text: {\n primary: '#f6f5f8',\n secondary: '#9699a4'\n }\n },\n shadows: strongShadows\n }\n];\n\nexport function createTheme(settings = {}) {\n let themeConfig = themeConfigs.find(theme => theme.name === settings.theme);\n\n if (!themeConfig) {\n console.warn(new Error(`The theme ${settings.theme} is not valid`));\n [themeConfig] = themeConfigs;\n }\n\n let theme = createMuiTheme(\n _.merge({}, baseConfig, themeConfig, { direction: settings.direction })\n );\n\n if (settings.responsiveFontSizes) {\n theme = responsiveFontSizes(theme);\n }\n\n return theme;\n}\n","export default {\n h1: {\n fontSize: 35,\n letterSpacing: 0,\n fontFamily: \"'Lato', sans-serif\",\n textTransform: 'uppercase',\n fontWeight: 'bold'\n },\n h2: {\n fontSize: 29,\n letterSpacing: 0,\n fontFamily: \"'Lato', sans-serif\",\n textTransform: 'uppercase',\n fontWeight: '300'\n },\n h3: {\n fontSize: 24,\n letterSpacing: 0,\n fontFamily: \"'Lato', sans-serif\",\n textTransform: 'uppercase',\n fontWeight: 'bold'\n },\n h4: {\n fontWeight: 500,\n fontSize: 20,\n letterSpacing: '-0.06px',\n fontFamily: \"'Open Sans', sans-serif\"\n },\n h5: {\n fontWeight: 500,\n fontSize: 16,\n letterSpacing: '-0.05px',\n fontFamily: \"'Open Sans', sans-serif\"\n },\n h6: {\n fontWeight: 500,\n fontSize: 14,\n letterSpacing: '-0.05px',\n fontFamily: \"'Open Sans', sans-serif\"\n },\n overline: {\n fontWeight: 500,\n fontFamily: \"'Lato', sans-serif\"\n },\n body1: {\n fontFamily: \"'Open Sans', sans-serif\",\n fontWeight: 400\n },\n body2: {\n fontFamily: \"'Open Sans', sans-serif\",\n fontWeight: 400\n },\n subtitle1: {\n fontFamily: \"'Open Sans', sans-serif\",\n fontWeight: 400\n }\n};\n","import React from 'react';\n\nfunction LogoWhite(props) {\n return \"Logo\";\n}\n\nexport default LogoWhite;\n","import React, { useState } from 'react'\nimport { NavLink as RouterLink } from 'react-router-dom'\nimport clsx from 'clsx'\nimport PropTypes from 'prop-types'\nimport { Button, Collapse, ListItem, makeStyles } from '@material-ui/core'\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess'\n\nconst useStyles = makeStyles(theme => ({\n item: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0,\n justifyContent: 'flex-start',\n whiteSpace: 'no-wrap'\n },\n itemLeaf: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0,\n justifyContent: 'flex-start',\n whiteSpace: 'nowrap'\n },\n button: {\n color: '#CBD6E2',\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%'\n },\n buttonLeaf: {\n color: theme.palette.text.secondary,\n padding: '10px 16px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n color: '#fffdfd',\n fontWeight: theme.typography.fontWeightRegular,\n '&.depth-0': {\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n }\n },\n '&:hover': {\n opacity: 0.8\n }\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1),\n justifyContent: 'flex-start'\n },\n title: {\n marginRight: 'auto',\n fontFamily: \"'Open Sans','Lato', sans-serif\",\n fontSize: '15px',\n fontWeight: 400,\n lineHeight: '24px'\n },\n active: {\n backgroundColor: '#303030',\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.secondary.main\n }\n }\n}))\n\nfunction NavItem({ title, href, depth, children, icon: Icon, className, open: openProp, info: Info, ...rest }) {\n const classes = useStyles()\n const [open, setOpen] = useState(openProp)\n\n const handleToggle = () => {\n setOpen(prevOpen => !prevOpen)\n }\n\n let paddingLeft = 8\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth\n }\n\n const style = { paddingLeft }\n\n if (children) {\n return (\n \n \n {children}\n \n )\n }\n\n return (\n \n \n {Icon && }\n {title}\n {Info && }\n \n \n )\n}\n\nNavItem.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n href: PropTypes.string,\n icon: PropTypes.any,\n info: PropTypes.any,\n open: PropTypes.bool,\n title: PropTypes.string.isRequired\n}\n\nNavItem.defaultProps = {\n open: false\n}\n\nexport default NavItem\n","/* eslint-disable no-use-before-define */\n/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react'\nimport { useLocation, matchPath } from 'react-router'\nimport { Link as RouterLink } from 'react-router-dom'\nimport PerfectScrollbar from 'react-perfect-scrollbar'\nimport PropTypes from 'prop-types'\nimport { Box, Divider, Drawer, Hidden, List, makeStyles, Fade, Typography } from '@material-ui/core'\nimport LogoWhite from 'src/components/LogoWhite'\nimport NavItem from './NavItem'\nimport { THEMES, navConfig } from 'src/constants'\nimport clsx from 'clsx'\nimport { useDispatch, useSelector } from 'react-redux'\nimport SubmitButton from 'src/components/SubmitButton'\nimport Label from 'src/components/Label'\nimport axios from 'src/utils/axios'\nimport { useSnackbar } from 'notistack'\nimport { refreshAccount } from 'src/actions/accountActions'\nimport amplitude from 'amplitude-js'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n ...(theme.name === THEMES.LIGHT\n ? {\n boxShadow: 'none',\n backgroundColor: '#202020'\n }\n : {}),\n ...(theme.name === THEMES.ONE_DARK\n ? {\n backgroundColor: theme.palette.background.default\n }\n : {})\n },\n mobileDrawer: {\n width: 256\n },\n desktopDrawer: {\n width: 42,\n top: 0,\n height: '100%',\n zIndex: theme.zIndex.drawer + 100,\n whiteSpace: 'nowrap',\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.standard\n }),\n '&:hover': {\n width: 256,\n // transform: 'translateX(0)',\n boxShadow: '0 0 1px 0 rgba(0,0,0,0.70), 0 24px 36px -8px rgba(0,0,0,0.50)'\n }\n },\n menuIcon: {\n zIndex: 1400,\n position: 'absolute',\n top: '50px',\n left: '10px',\n borderRadius: '10px',\n backgroundColor: '#334A5B',\n width: '30px',\n height: '30px',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.standard\n })\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64\n },\n logo: {\n width: 140,\n maxWidth: '100%'\n }\n}))\n\nfunction NavBar({ openMobile, onMobileClose }) {\n const classes = useStyles()\n const location = useLocation()\n const { user, merchant } = useSelector(state => state.account)\n let permissionsArray\n if (user && user.permissions) {\n permissionsArray = user.permissions.map(permission => permission.accessTo)\n }\n\n const [hover, setHover] = useState(false)\n const { enqueueSnackbar } = useSnackbar()\n const dispatch = useDispatch()\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose()\n }\n // eslint-disable-next-line\n }, [location.pathname])\n\n const upgradePlan = () => {\n axios\n .get('user')\n .then(r => {\n const { merchant } = r.data\n if (merchant.isBusinessAccount) {\n enqueueSnackbar('It looks like you have already upgraded to the business plan. Please reload the page.', {\n variant: 'error'\n })\n dispatch(refreshAccount())\n return\n } else {\n amplitude.getInstance().logEvent('business plan upgrade started')\n var url = '/credits/add?type=upgrade'\n window.open(url, '_blank', 'toolbar=yes,top=50,left=300,width=800,height=800')\n }\n })\n .catch(e => {\n if (e.response.data.errors) {\n const errors = e.response.data.errors\n for (const field in errors) {\n if (errors.hasOwnProperty(field)) {\n const errorMessageArray = errors[field]\n enqueueSnackbar(errorMessageArray[0], {\n key: field,\n variant: 'error',\n anchorOrigin: ''\n })\n }\n }\n } else {\n enqueueSnackbar(e.response.data.message, {\n variant: 'error'\n })\n }\n })\n }\n\n function renderNavItems({ items, ...rest }) {\n return {items.reduce((acc, item) => reduceChildRoutes({ acc, item, ...rest }), [])}\n }\n\n function reduceChildRoutes({ acc, pathname, item, depth = 0 }) {\n const key = item.title + depth\n let showMenuItem = true\n if (item.permission && !user.isPrimary) {\n showMenuItem = false\n const titlePermission = item.permission.toLowerCase().replace(/ /g, '_')\n if (permissionsArray && permissionsArray.includes(titlePermission)) {\n showMenuItem = true\n }\n }\n if (showMenuItem) {\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false\n })\n\n acc.push(\n \n {renderNavItems({\n depth: depth + 1,\n pathname,\n items: item.items\n })}\n \n )\n } else {\n acc.push()\n }\n }\n\n return acc\n }\n\n const content = (\n {\n setHover(true)\n }}\n onMouseLeave={() => {\n setHover(false)\n }}\n >\n \n \n {hover && (\n \n \n \n \n \n )}\n \n \n {navConfig.map(config => (\n \n {renderNavItems({\n items: config.items,\n pathname: location.pathname\n })}\n \n ))}\n \n \n {hover && (\n \n \n \n \n Current plan\n \n {!merchant.isBusinessAccount ? (\n <>\n \n \n \n \n \n Upgrade\n \n \n \n ) : (\n \n \n \n )}\n \n \n \n )}\n \n \n )\n\n return (\n <>\n \n \n {content}\n \n \n\n \n {/* */}\n \n {content}\n \n \n \n )\n}\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool\n}\n\nexport default NavBar\n","import React, { useRef, useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useSnackbar } from 'notistack';\nimport {\n Avatar,\n Box,\n ButtonBase,\n Hidden,\n Menu,\n MenuItem,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { logout } from 'src/actions/accountActions';\n\nconst useStyles = makeStyles(theme => ({\n avatar: {\n height: 32,\n width: 32,\n marginRight: theme.spacing(0.5),\n color: theme.palette.primary.main,\n backgroundColor: 'unset'\n },\n popover: {\n width: 200\n }\n}));\n\nfunction Account() {\n const classes = useStyles();\n const history = useHistory();\n const ref = useRef(null);\n const dispatch = useDispatch();\n const account = useSelector(state => state.account);\n const { enqueueSnackbar } = useSnackbar();\n const [isOpen, setOpen] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleLogout = async () => {\n try {\n handleClose();\n await dispatch(logout());\n history.push('/');\n } catch (error) {\n enqueueSnackbar('Unable to logout', {\n variant: 'error'\n });\n }\n };\n\n return (\n <>\n \n \n \n \n {`ID: ${account.merchant.id}`}\n {/* {`${account.user.firstName} ${account.user.lastName}`} */}\n \n \n \n \n \n Settings\n \n Logout\n \n \n );\n}\n\nexport default Account;\n","import React from 'react';\nimport { Button, IconButton, Tooltip, Typography, makeStyles } from '@material-ui/core';\nimport { PlusCircle } from 'react-feather';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { Refresh } from '@material-ui/icons';\nimport { getCredits } from 'src/actions/creditActions';\n\nconst useStyles = makeStyles(theme => ({\n badge: {\n height: 10,\n width: 10,\n borderRadius: 5,\n marginTop: 10,\n marginRight: 5\n },\n popover: {\n width: 320,\n padding: theme.spacing(2)\n }\n}));\n\nfunction Credits() {\n const classes = useStyles();\n const account = useSelector(state => state.account);\n const credit = useSelector(state => state.credit);\n\n const dispatch = useDispatch();\n\n const refreshCredits = () => {\n dispatch(getCredits());\n };\n\n const openCreditsWindow = () => {\n var url = '/credits/add';\n window.open(url, '_blank', 'toolbar=yes,top=50,left=300,width=1000,height=800');\n };\n\n return (\n <>\n \n }\n >\n {`₹${\n credit ? credit.toFixed(2) : account.merchant.credits.toFixed(2)\n }`}\n \n \n \n \n \n \n \n \n );\n}\n\nexport default Credits;\n","import React from 'react';\nimport { IconButton, SvgIcon, Tooltip } from '@material-ui/core';\nimport { Bell as BellIcon } from 'react-feather';\nimport './Notifications.css';\n\nfunction Notifications() {\n return (\n \n \n \n \n \n );\n}\n\nexport default Notifications;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n AppBar,\n Box,\n Hidden,\n IconButton,\n Toolbar,\n makeStyles,\n SvgIcon\n} from '@material-ui/core';\nimport { Menu as MenuIcon } from 'react-feather';\nimport { THEMES } from 'src/constants';\nimport Account from './Account';\nimport Credits from './Credits';\nimport Notifications from './Notifications';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n zIndex: theme.zIndex.drawer + 100,\n ...(theme.name === THEMES.LIGHT\n ? {\n boxShadow: 'none',\n backgroundColor: theme.palette.background.default\n }\n : {}),\n ...(theme.name === THEMES.ONE_DARK\n ? {\n backgroundColor: theme.palette.background.default\n }\n : {})\n },\n toolbar: {\n minHeight: 64\n }\n}));\n\nfunction TopBar({ className, onMobileNavOpen, ...rest }) {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n \n \n {/* \n \n \n \n */}\n \n \n \n {/* \n \n */}\n \n \n \n \n \n );\n}\n\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func\n};\n\nexport default TopBar;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport NavBar from './NavBar';\nimport TopBar from './TopBar';\nimport { useSelector } from 'react-redux';\nimport amplitude from 'amplitude-js';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64,\n [theme.breakpoints.up('lg')]: {\n paddingLeft: 42\n }\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto',\n '& .MuiContainer-maxWidthLg': {\n maxWidth: '1100px'\n }\n }\n}));\n\nfunction DashboardLayout({ children }) {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n const account = useSelector(state => state.account);\n\n useEffect(() => {\n amplitude.getInstance().setUserId(account.merchant.id);\n }, []);\n\n return (\n
\n setMobileNavOpen(true)} />\n setMobileNavOpen(false)} openMobile={isMobileNavOpen} />\n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n}\n\nDashboardLayout.propTypes = {\n children: PropTypes.any\n};\n\nexport default DashboardLayout;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nfunction AuthRoute({ component: Component, render, ...rest }) {\n const account = useSelector(state => state.account);\n\n if (!account.user) {\n return ;\n }\n\n if (!account.user.emailVerifiedAt) {\n return ;\n }\n\n return render ? render({ ...rest }) : ;\n}\n\nAuthRoute.propTypes = {\n component: PropTypes.any,\n render: PropTypes.func\n};\n\nexport default AuthRoute;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nfunction GuestRoute({ component: Component, render, ...rest }) {\n const account = useSelector((state) => state.account);\n\n if (account.user) {\n return ;\n }\n\n return render ? render({ ...rest }) : ;\n}\n\nGuestRoute.propTypes = {\n component: PropTypes.any,\n render: PropTypes.func\n};\n\nexport default GuestRoute;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nfunction VerifyRoute({ component: Component, render, ...rest }) {\n const account = useSelector(state => state.account);\n\n if (!account.user) {\n return ;\n }\n\n return render ? render({ ...rest }) : ;\n}\n\nVerifyRoute.propTypes = {\n component: PropTypes.any,\n render: PropTypes.func\n};\n\nexport default VerifyRoute;\n","import React, { lazy, Suspense } from 'react'\nimport { Switch, Redirect, Route } from 'react-router-dom'\nimport DashboardLayout from 'src/layouts/DashboardLayout'\nimport LoadingScreen from 'src/components/LoadingScreen'\nimport AuthRoute from 'src/components/AuthRoute'\nimport GuestRoute from 'src/components/GuestRoute'\nimport VerifyRoute from './components/VerifyRoute'\nimport { useSelector } from 'react-redux'\n\nfunction Routes() {\n const { user } = useSelector(state => state.account)\n let permissionsArray\n if (user && user.permissions) {\n permissionsArray = user.permissions.map(permission => permission.accessTo)\n }\n\n return (\n }>\n \n \n import('src/views/pages/Error404View'))} />\n import('src/views/auth/LoginAndRegister'))} />\n import('src/views/auth/LoginAndRegister'))} />\n import('src/views/auth/ForgotPassword'))} />\n import('src/views/auth/ResetPassword'))} />\n import('src/views/auth/VerifyEmail'))} />\n import('src/views/auth/Onboarding'))} />\n import('src/views/pages/AddCredits'))} />\n import('src/views/auth/LoginAndRegister'))} />\n (\n \n }>\n \n \n import('src/views/panel/Dashboard'))} />\n import('src/views/panel/DesignLibrary'))} />\n import('src/views/panel/MockupGenerator'))} />\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('billing'))) && (\n import('src/views/panel/Billing'))} />\n )}\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('settings'))) && (\n import('src/views/panel/Settings'))} />\n )}\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('new_manual_order'))) && (\n import('src/views/panel/CreateOrUpdateOrder/CreateOrder'))}\n />\n )}\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('manage_orders'))) && (\n import('src/views/panel/ManageOrders'))} />\n )}\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('edit_order'))) && (\n import('src/views/panel/CreateOrUpdateOrder/UpdateOrder'))}\n />\n )}\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('returns'))) && (\n import('src/views/panel/CreateOrUpdateOrder/ReshipOrder'))}\n />\n )}\n\n import('src/views/panel/CreateOrUpdateOrder/RemovalOrder'))}\n />\n import('src/views/panel/ManageOrders/PlacedOrders/ViewOrder'))}\n />\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('reverse'))) && (\n import('src/views/panel/ManageOrders/ReverseOrders/ViewOrder'))}\n />\n )}\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('store'))) && (\n import('src/views/panel/Store'))} />\n )}\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('product_library'))) && (\n import('src/views/panel/ProductLibrary'))} />\n )}\n\n import('src/views/panel/ListProducts'))} />\n\n {(user.isPrimary || (permissionsArray && permissionsArray.includes('product_library'))) && (\n import('src/views/panel/ProductLibrary/ViewProduct'))}\n />\n )}\n\n \n \n \n \n \n )}\n />\n \n \n \n )\n}\n\nexport default Routes\n","import React from 'react';\nimport { Helmet } from 'react-helmet';\n\nfunction GoogleTagManager() {\n return (\n \n \n \n );\n}\n\nexport default GoogleTagManager;\n","import React from 'react'\nimport { Router } from 'react-router-dom'\nimport { createBrowserHistory } from 'history'\nimport { create } from 'jss'\nimport rtl from 'jss-rtl'\nimport MomentUtils from '@date-io/moment'\nimport { SnackbarProvider } from 'notistack'\nimport { createStyles, jssPreset, makeStyles, StylesProvider, ThemeProvider } from '@material-ui/core'\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\nimport Auth from 'src/components/Auth'\nimport GoogleAnalytics from 'src/components/GoogleAnalytics'\nimport ScrollReset from 'src/components/ScrollReset'\nimport useSettings from 'src/hooks/useSettings'\nimport { createTheme } from 'src/theme'\nimport Routes from 'src/RoutesAlternative'\nimport amplitude from 'amplitude-js'\nimport { AMPLITUDE_API_KEY } from './config'\nimport GoogleTagManager from './components/GoogleTagManager'\n\nconst history = createBrowserHistory()\nconst jss = create({ plugins: [...jssPreset().plugins, rtl()] })\n\nconst useStyles = makeStyles(() =>\n createStyles({\n '@global': {\n '*': {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0\n },\n html: {\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n height: '100%',\n width: '100%'\n },\n body: {\n height: '100%',\n width: '100%'\n },\n '#root': {\n height: '100%',\n width: '100%'\n }\n }\n })\n)\n\nfunction App() {\n useStyles()\n\n const { settings } = useSettings()\n amplitude.getInstance().init(AMPLITUDE_API_KEY)\n\n if (window.self !== window.top) {\n return null\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default App\n","import { useContext } from 'react';\nimport SettingsContext from 'src/context/SettingsContext';\n\nexport default function useSettings() {\n const context = useContext(SettingsContext);\n\n return context;\n}\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport 'react-perfect-scrollbar/dist/css/styles.css';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\nimport 'react-quill/dist/quill.snow.css';\nimport 'nprogress/nprogress.css';\nimport 'src/assets/css/prism.css';\nimport 'src/mixins/chartjs';\nimport 'src/mixins/prismjs';\n// import 'src/mock';\nimport { enableES5 } from 'immer';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport * as serviceWorker from 'src/serviceWorker';\nimport { SettingsProvider } from 'src/context/SettingsContext';\nimport { configureStore } from 'src/store';\nimport { restoreSettings } from 'src/utils/settings';\nimport App from 'src/App';\n\nenableES5();\n\nconst store = configureStore();\nconst settings = restoreSettings();\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n);\n\nserviceWorker.unregister();\n","import jwtDecode from 'jwt-decode'\nimport axios from 'src/utils/axios'\n\nclass AuthService {\n setAxiosInterceptors = ({ onLogout }) => {\n axios.interceptors.response.use(\n response => response,\n error => {\n if (error.response && error.response.status === 401) {\n this.setSession(null)\n\n if (onLogout) {\n onLogout()\n }\n }\n\n return Promise.reject(error)\n }\n )\n }\n\n handleAuthentication() {\n const accessToken = this.getAccessToken()\n\n if (!accessToken) {\n return\n }\n\n if (this.isValidToken(accessToken)) {\n this.setSession(accessToken)\n } else {\n this.setSession(null)\n }\n }\n\n loginWithEmailAndPassword = (email, password, params) =>\n new Promise((resolve, reject) => {\n axios\n .post('/login', { email, password, ...params })\n .then(response => {\n if (response.data.user) {\n this.setSession(response.data.accessToken)\n resolve(response.data)\n } else {\n reject(response.data.error)\n }\n })\n .catch(error => {\n reject(error)\n })\n })\n\n register = values =>\n new Promise((resolve, reject) => {\n axios\n .post('/register', values)\n .then(response => {\n if (response.data.user) {\n this.setSession(response.data.accessToken)\n resolve(response.data)\n } else {\n reject(response.data.error)\n }\n })\n .catch(error => {\n reject(error)\n })\n })\n\n loginInWithToken = () =>\n new Promise((resolve, reject) => {\n axios\n .get('/user')\n .then(response => {\n if (response.data.user) {\n resolve(response.data)\n } else {\n reject(response.data.error)\n }\n })\n .catch(error => {\n reject(error)\n })\n })\n\n logout = () => {\n this.setSession(null)\n localStorage.removeItem('order')\n }\n\n setSession = accessToken => {\n if (accessToken) {\n localStorage.setItem('accessToken', accessToken)\n axios.defaults.headers.common.Authorization = `Bearer ${accessToken}`\n } else {\n localStorage.removeItem('accessToken')\n delete axios.defaults.headers.common.Authorization\n }\n }\n\n getAccessToken = () => localStorage.getItem('accessToken')\n\n isValidToken = accessToken => {\n if (!accessToken) {\n return false\n }\n\n const decoded = jwtDecode(accessToken)\n const currentTime = Date.now() / 1000\n\n return decoded.exp > currentTime\n }\n\n isAuthenticated = () => !!this.getAccessToken()\n}\n\nconst authService = new AuthService()\n\nexport default authService\n"],"sourceRoot":""}