{"version":3,"sources":["utils/axios.js","utils/settings.js","utils/analytics.js","components/Page.js","theme/typography.js","actions/accountActions.js","utils/omnicommerce/omnicommerce-rest-api-naquelize.js","utils/omnicommerce/omnicommerce-rest-api.js","utils/omnicommerce/omc-ready-to-use.js","components/OnlineIndicator.js","components/Logo.js","actions/chatActions.js","views/auth/Logout/index.js","mixins/chartjs.js","serviceWorker.js","constants/index.js","context/SettingsContext.js","reducers/accountReducer.js","actions/notificationsActions.js","reducers/notificationsReducer.js","utils/objFromArray.js","reducers/chatReducer.js","reducers/mailReducer.js","actions/mailActions.js","reducers/kanbanReducer.js","actions/kanbanActions.js","reducers/index.js","store/index.js","components/SplashScreen.js","components/Auth.js","components/CookiesNotification.js","hooks/useSettings.js","components/SettingsNotification.js","components/GoogleAnalytics.js","components/ScrollReset.js","theme/shadows.js","theme/index.js","layouts/DashboardLayout/NavBar/NavItem.js","layouts/DashboardLayout/NavBar/index.js","layouts/DashboardLayout/TopBar/Account.js","layouts/DashboardLayout/TopBar/Contacts.js","components/Confetti.js","hooks/useWindowSize.js","layouts/DashboardLayout/TopBar/Notifications.js","layouts/DashboardLayout/TopBar/Settings.js","layouts/DashboardLayout/TopBar/index.js","layouts/DashboardLayout/index.js","layouts/DocsLayout/NavBar/NavItem.js","layouts/DocsLayout/NavBar/index.js","layouts/DocsLayout/TopBar.js","layouts/DocsLayout/mdx/Heading.js","layouts/DocsLayout/mdx/Paragraph.js","layouts/DocsLayout/mdx/List.js","layouts/DocsLayout/mdx/ListItem.js","layouts/DocsLayout/mdx/Blockquote.js","layouts/DocsLayout/mdx/Code.js","layouts/DocsLayout/mdx/InlineCode.js","layouts/DocsLayout/mdx/index.js","layouts/DocsLayout/index.js","layouts/MainLayout/TopBar.js","config/index.js","layouts/MainLayout/index.js","views/pages/HomeView/Hero.js","views/pages/HomeView/Features.js","views/pages/HomeView/Testimonials.js","views/pages/HomeView/CTA.js","views/pages/HomeView/FAQS.js","views/pages/HomeView/index.js","components/LoadingScreen.js","components/AuthGuard.js","components/GuestGuard.js","components/AdminGuard.js","Routes.js","App.js","index.js","services/authService.js"],"names":["instance","axios","create","restoreSettings","settings","storedData","localStorage","getItem","JSON","parse","err","storeSettings","setItem","stringify","track","window","gtag","arguments","pageview","props","process","REACT_APP_GA_MEASUREMENT_ID","event","type","Page","forwardRef","_ref","ref","title","children","rest","location","useLocation","sendPageViewEvent","useCallback","page_path","pathname","useEffect","React","createElement","Object","assign","Helmet","h1","fontWeight","fontSize","letterSpacing","h2","h3","h4","h5","h6","overline","LOGIN_REQUEST","LOGIN_SUCCESS","LOGIN_FAILURE","SILENT_LOGIN","LOGOUT","UPDATE_PROFILE","login","email","password","async","dispatch","user","authService","loginWithEmailAndPassword","payload","error","setUserData","logout","Naquelize","omc","defaults","mapping","Cliente","uri","Producto","ProductoVariante","ProductoCategoria","Atributo","AtributoValor","ProductoAtributo","ProductoImagen","ProductoPrecio","ProductoStock","Pedido","Conexion","ConexionParametro","Match","parseWhere","w","pw","c","hasOwnProperty","push","field","condition","value","parseOrder","o","length","undefined","po","forEach","item","i","Array","isArray","toUpperCase","findOne","m","opts","promise","Promise","resolve","reject","findAll","then","r","catch","e","noRecall","attributes","findAllLimit","limit","get","concat","where","justIds","include","fields","order","sort","followPages","Math","ceil","body","data","_links","dataCount","dataPromises","id","all","r2","map","x","result","noRecallTry","e2","findOrCreate","returnElement","post","update","d","patched","patch","destroy","deleted","delete","Entity","n","require","http","rateLimit","maxRequests","perMilliseconds","options","_options$endpoint","_this","this","endpoint","replace","accessToken","logger","refreshTokenS","autoRefreshToken","reqId","init","log","level","message","s","t","operadoresCondicionales","parseCondiciones","cond","condiciones","toLowerCase","indexOf","status","code","request","dataIn","method","url","slice","headers","match","tenantKey","params","key","encodeURIComponent","me","u","statusText","response","connectionTest","checkConnection","rct","rrr","ect","refreshToken","rrt","ert","errno","syscall","console","clave","token","redir","URL","href","searchParams","paramsProcess","paramsProcessed","join","originalPage","page","isNaN","results","nextPage","req","maxPage","total","reqs","fromPage","toPage","put","idRemoto","conexion","modelo","plataformaId","conexionId","modeloId","getByIdRemoto","set","matchBy","conexiones","setParametros","parametros","parametrosWork","p","valor","tipo","nombre","findParam","param","paramRecord","filter","useStyles","makeStyles","theme","root","display","borderRadius","flexGrow","flexShrink","small","height","spacing","width","medium","large","offline","backgroundColor","colors","grey","away","orange","busy","red","online","green","OnlineIndicator","className","size","classes","rootClassName","clsx","defaultProps","Logo","alt","src","GET_CONTACTS","GET_THREADS","GET_THREAD","MARK_THREAD_AS_SEEN","ADD_MESSAGE","OPEN_SIDEBAR","CLOSE_SIDEBAR","getContacts","getThreads","getThread","threadKey","thread","markThreadAsSeen","addMessage","userId","attachments","openSidebar","closeSidebar","Logout","useDispatch","URLSearchParams","search","Redirect","to","Chart","helpers","extend","elements","Rectangle","prototype","draw","ctx","_chart","vm","_view","left","right","top","bottom","signX","signY","borderSkipped","radius","borderWidth","cornerRadius","config","horizontal","base","y","barSize","min","abs","halfStroke","borderLeft","borderRight","borderTop","borderBottom","beginPath","fillStyle","strokeStyle","borderColor","lineWidth","corners","startCorner","cornerAt","index","corner","moveTo","nextCornerId","floor","xTl","xTr","yTl","yTr","xBl","xBr","yBl","yBr","lineTo","quadraticCurveTo","fill","stroke","Boolean","hostname","THEMES","LIGHT","DARK","SettingsContext","createContext","defaultSettings","direction","responsiveFontSizes","SettingsProvider","currentSettings","setCurrentSettings","useState","document","dir","Provider","saveSettings","updatedSettings","mergedSettings","_","merge","Consumer","initialState","accountReducer","state","action","produce","draft","getNotifications","dataParsed","b","dateArray","fechaHora","split","hourArray","fechaHoraFriendly","fechaHoraCompleteFriendly","cantidad","ultimaFechaHora","moment","add","format","fechaHoraLastNotsoFriendly","fechaHoraLastFriendly","fromNow","metadata","metadataFriendly","notifications","warn","ARCHIVE_NOTIFICATION","archiveNotification","idNotification","archivada","MARCAR_NOTIFICATION","marcarNotification","valorNuevoVista","vista","toString","notificationsReducer","idNotificationArchivar","notification","idNotificationMarcar","objFromArray","arr","reduce","accumulator","current","contacts","byId","allIds","threads","byKey","allKeys","sidebarOpen","chatReducer","keys","includes","unreadCount","otherUserId","messages","participantIds","mails","labels","newMessageOpen","mailReducer","mail","isLoaded","lists","cards","members","kanbanReducer","board","list","listId","cardIds","omit","pull","card","cardId","position","sourceListId","splice","comment","comments","checklist","checklists","_checklist","checklistId","checkItem","checkItems","checkItemId","_checkItem","rootReducer","combineReducers","account","chat","kanban","form","formReducer","createLogger","alignItems","palette","background","default","flexDirection","justifyContent","padding","zIndex","logo","maxWidth","SlashScreen","Box","mb","CircularProgress","Auth","isLoading","setLoading","setAxiosInterceptors","onLogout","handleAuthentication","isAuthenticated","loginInWithToken","initAuth","SplashScreen","common","black","color","white","margin","outline","CookiesNotification","open","setOpen","Cookies","Portal","Typography","variant","Link","component","underline","target","mt","Button","onClick","handleClose","useSettings","useContext","SettingsNotification","isOpen","Paper","elevation","gutterBottom","handleSwitch","GA_MEASUREMENT_ID","GoogleAnalytics","ScrollReset","scrollTo","softShadows","strongShadows","baseConfig","typography","overrides","MuiLinearProgress","overflow","MuiListItemIcon","minWidth","MuiChip","themeConfigs","name","MuiInputBase","input","opacity","blueGrey","active","dark","paper","primary","main","secondary","text","shadows","hover","selected","disabled","disabledBackground","focus","OMNICOMMERCE","lightBlue","UNICORN","createTheme","themeConfig","find","Error","createMuiTheme","paddingTop","paddingBottom","itemLeaf","button","textTransform","buttonLeaf","fontWeightRegular","fontWeightMedium","icon","marginRight","NavItem","depth","Icon","openProp","info","Info","newScreen","handleToggle","prevOpen","paddingLeft","style","ListItem","disableGutters","ExpandLessIcon","ExpandMoreIcon","Collapse","in","activeClassName","RouterLink","exact","navConfig","subheader","items","PieChartIcon","ArchiveIcon","UsersIcon","role","ShoppingCartIcon","FolderIcon","ShareIcon","Fragment","Chip","label","marginLeft","backgroundImage","MessageCircleIcon","renderNavItems","List","disablePadding","acc","_ref2","matchPath","path","reduceChildRoutes","mobileDrawer","desktopDrawer","avatar","NavBar","_ref3","openMobile","onMobileClose","useSelector","content","PerfectScrollbar","suppressScrollX","Hidden","lgUp","Avatar","textAlign","apellido","Divider","rol","ListSubheader","disableSticky","bgcolor","rel","Drawer","anchor","onClose","mdDown","popover","Account","history","useHistory","useRef","enqueueSnackbar","useSnackbar","ButtonBase","handleOpen","smDown","Menu","anchorOrigin","vertical","keepMounted","PaperProps","getContentAnchorEl","anchorEl","MenuItem","listItemText","lastActivity","whiteSpace","Contacts","Confetti","activar","windowSize","setWindowSize","handleResize","innerWidth","innerHeight","addEventListener","removeEventListener","useWindowSize","numberOfPieces","setNumberOfPieces","setTimeout","ConfettiRaw","gravity","initialVelocityY","max","initialVelocityX","confettiSource","h","preventDefault","stopPropagation","nativeEvent","stopImmediatePropagation","iconsMap","class","BellIcon","default_info","default_success","CheckCircleIcon","default_warning","AlertTriangleIcon","default_error","AlertCircleIcon","default_critical","PauseCircleIcon","ShuffleIcon","FilterIcon","TrashFullIcon","PackageIcon","CloudRainIcon","CloudOffIcon","CloudLightningIcon","new_message","MessageIcon","item_shipped","TruckIcon","badge","marginTop","contrastText","hide","notify_critical","notify_error","notify_warning","notify_success","notify_info","mostrarPrimeraNotificacion","Notifications","_openNotification$met","_openNotification$met2","isSubscribed","setSubscribed","openNotification","setOpenNotification","activarConfeti","setActivarConfeti","handleClickOpenNotification","notificationObject","confetti","handleCloseNotification","OneSignal","isPushNotificationsEnabled","setInterval","_n$metadata","autoOpen","Tooltip","Badge","badgeContent","IconButton","SvgIcon","Popover","registerForPushNotifications","endIcon","a","Number","pin","_notification$metadat","_notification$metadat2","_notification$metadat3","_notification$metadat4","_notification$metadat5","codigo","topBar","divider","ListItemAvatar","ListItemText","titulo","handleVistaNotification","EyeOffIcon","EyeIcon","handleArchiveNotification","XIcon","texto","substring","Dialog","BackdropProps","scroll","aria-labelledby","aria-describedby","DialogTitle","DialogContent","dividers","isHtml","dangerouslySetInnerHTML","__html","detalles","DialogContentText","tabIndex","DialogActions","Settings","values","setValues","handleChange","SettingsIcon","px","FormControlLabel","control","Switch","checked","edge","onChange","TextField","fullWidth","select","SelectProps","native","capitalCase","handleSave","drawer","boxShadow","ONE_DARK","ARGENTINA_FLAG","backgroundSize","toolbar","minHeight","TopBar","onMobileNavOpen","AppBar","cursor","textDecoration","Toolbar","menuButton","MenuIcon","ml","wrapper","flex","breakpoints","up","contentContainer","DashboardLayout","isMobileNavOpen","setMobileNavOpen","navItems","link","marginBottom","Heading","Paragraph","Component","Blockquote","paddingRight","fontFamily","CodeInline","components","ul","ol","hr","li","blockquote","inlineCode","InlineCode","DocsLayout","Container","MDXProvider","MainLayout","down","image","perspectiveOrigin","transformStyle","perspective","transform","backfaceVisibility","shape","Hero","Grid","container","xs","md","Features","align","Testimonials","browseButton","CTA","FAQS","my","HomeView","LoadingScreen","NProgress","start","done","LinearProgress","AuthGuard","GuestGuard","rt","AdminGuard","routesConfig","lazy","guard","layout","routes","renderRoutes","Suspense","fallback","route","Guard","Layout","Route","render","Routes","createBrowserHistory","jss","plugins","jssPreset","rtl","createStyles","boxSizing","html","oneSignalEvents","listener","callback","initialize","allowLocalhostAsSecureOrigin","persistNotification","autoResubscribe","notifyButton","enable","showCredit","App","isTagged","setTagged","isOneSignalActive","setOneSignalActive","sendTags","usuario","useOneSignalSetup","ThemeProvider","StylesProvider","MuiPickersUtilsProvider","utils","MomentUtils","SnackbarProvider","maxSnack","Router","enableES5","store","preloadedState","middlewares","thunkMiddleware","middlewareEnhancer","composeWithDevTools","applyMiddleware","enhancers","composedEnhancers","compose","createStore","configureStore","ReactDOM","getElementById","constructor","interceptors","use","setSession","responseConfig","setSessionConfig","finally","newHref","decodeURIComponent","renewToken","getRefreshToken","removeItem","getConfig","getAccessToken","isValidToken","decoded","jwtDecode","currentTime","Date","now","exp"],"mappings":"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","file":"static/js/main.7c5f8c3d.chunk.js","sourcesContent":["import axios from 'axios';\r\n\r\nconst instance = axios.create();\r\n\r\nexport default instance;\r\n","export function restoreSettings() {\r\n let settings = null;\r\n\r\n try {\r\n const storedData = localStorage.getItem('settings');\r\n\r\n if (storedData) {\r\n settings = JSON.parse(storedData);\r\n }\r\n } catch (err) {\r\n // If stored data is not a strigified JSON this might fail,\r\n // that's why we catch the error\r\n }\r\n\r\n return settings;\r\n}\r\n\r\nexport function storeSettings(settings) {\r\n localStorage.setItem('settings', JSON.stringify(settings));\r\n}\r\n","function track(...args) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n return;\r\n }\r\n\r\n if (!window.gtag) {\r\n return;\r\n }\r\n\r\n window.gtag(...args);\r\n}\r\n\r\nfunction pageview(props) {\r\n track('config', process.env.REACT_APP_GA_MEASUREMENT_ID, props);\r\n}\r\n\r\nfunction event(type, props) {\r\n track('event', type, props);\r\n}\r\n\r\nexport default {\r\n pageview,\r\n event\r\n};\r\n","import React, {\r\n forwardRef,\r\n useEffect, useCallback\r\n} from 'react';\r\nimport { Helmet } from 'react-helmet';\r\nimport { useLocation } from 'react-router';\r\nimport PropTypes from 'prop-types';\r\nimport track from 'src/utils/analytics';\r\n\r\nconst Page = forwardRef(({\r\n title,\r\n children,\r\n ...rest\r\n}, ref) => {\r\n const location = useLocation();\r\n\r\n const sendPageViewEvent = useCallback(() => {\r\n track.pageview({\r\n page_path: location.pathname\r\n });\r\n }, [location]);\r\n\r\n useEffect(() => {\r\n sendPageViewEvent();\r\n }, [sendPageViewEvent]);\r\n\r\n return (\r\n \r\n \r\n {title}\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nPage.propTypes = {\r\n children: PropTypes.node,\r\n title: PropTypes.string\r\n};\r\n\r\nexport default Page;\r\n","export default {\r\n h1: {\r\n fontWeight: 500,\r\n fontSize: 35,\r\n letterSpacing: '-0.24px'\r\n },\r\n h2: {\r\n fontWeight: 500,\r\n fontSize: 29,\r\n letterSpacing: '-0.24px'\r\n },\r\n h3: {\r\n fontWeight: 500,\r\n fontSize: 24,\r\n letterSpacing: '-0.06px'\r\n },\r\n h4: {\r\n fontWeight: 500,\r\n fontSize: 20,\r\n letterSpacing: '-0.06px'\r\n },\r\n h5: {\r\n fontWeight: 500,\r\n fontSize: 16,\r\n letterSpacing: '-0.05px'\r\n },\r\n h6: {\r\n fontWeight: 500,\r\n fontSize: 14,\r\n letterSpacing: '-0.05px'\r\n },\r\n overline: {\r\n fontWeight: 500\r\n }\r\n};\r\n","/* eslint-disable linebreak-style */\n// import axios from 'src/utils/axios';\nimport authService from 'src/services/authService';\nimport omc from 'src/utils/omnicommerce/omc-ready-to-use';\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 UPDATE_PASSWORD = '@account/update-password';\n\n\nexport function login(email, password) {\n return async (dispatch) => {\n try {\n dispatch({ type: LOGIN_REQUEST });\n\n const user = await authService.loginWithEmailAndPassword(email, password);\n\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 setUserData(user) {\n return (dispatch) => dispatch({\n type: SILENT_LOGIN,\n payload: {\n user\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() {\n return true;\n}\n\nexport function updateProfile(update) {\n console.log(\"update.data: \", update.data);\n const request = omc.patch('/usuarios/' + update.id, update.data)\n .then(() => {\n return omc.get('/usuarios/' + update.id)\n })\n\n return (dispatch) => {\n request\n .then((response) => {\n console.log({response});\n dispatch({\n type: UPDATE_PROFILE,\n payload: {\n user: response.body.data,\n id: update.id\n }\n })\n });\n };\n}\n\nexport function updatePassword(update) {\n const request = omc.post(`/usuarios/${update.id}/cambiar-clave`, {\n claveNueva: update.data.password,\n claveNuevaConfirmacion: update.data.passwordConfirm\n });\n\n return (dispatch) => {\n request\n .then((response) => {\n\n if (!response.body.status) {\n /*\n dispatch({\n type: UPDATE_PASSWORD_FAILED,\n payload: {\n result: false,\n message: response.body.message\n }\n })\n */\n }\n\n console.log(response);\n\n dispatch({\n type: UPDATE_PASSWORD,\n payload: {\n result: true,\n id: update.id\n }\n })\n })\n .catch((error) => {\n /*\n dispatch({\n type: UPDATE_PASSWORD_FAILED,\n payload: {\n result: false,\n message: response.body.message\n }\n })\n */\n });\n }\n};","'use strict'\r\n\r\nconst Naquelize = function (omc){\r\n\r\n let defaults = {\r\n findAllLimit : 1000,\r\n findAllApiLimit : 200,\r\n };\r\n\r\n let mapping = {\r\n Cliente : {\r\n uri : '/clientes'\r\n },\r\n Producto : {\r\n uri : '/catalogo/productos'\r\n },\r\n ProductoVariante : {\r\n uri : '/catalogo/producto_variantes'\r\n },\r\n ProductoCategoria : {\r\n uri : '/catalogo/productos/categorias'\r\n },\r\n Atributo : {\r\n uri : '/catalogo/atributos'\r\n },\r\n AtributoValor : {\r\n uri : '/catalogo/atributo_valores'\r\n },\r\n ProductoAtributo : {\r\n uri : '/catalogo/producto_atributos'\r\n },\r\n ProductoImagen : {\r\n uri : '/catalogo/producto_imagenes'\r\n },\r\n ProductoPrecio : {\r\n uri : '/catalogo/producto_precios'\r\n },\r\n ProductoStock : {\r\n uri : '/catalogo/producto_stocks'\r\n },\r\n Pedido : {\r\n uri : '/pedidos'\r\n },\r\n Conexion : {\r\n uri : '/conexiones'\r\n },\r\n ConexionParametro : {\r\n uri : '/conexion_parametros'\r\n },\r\n Match : {\r\n uri : '/matches'\r\n }\r\n };\r\n\r\n let parseWhere = (w) => {\r\n let pw = [];\r\n for (var c in w) {\r\n if (w.hasOwnProperty(c)) {\r\n pw.push({ field : c, condition : '=', value : w[c] })\r\n }\r\n }\r\n return pw;\r\n };\r\n\r\n let parseOrder = (o = []) => {\r\n let po = [];\r\n o.forEach((item, i) => {\r\n if(!Array.isArray(item)){\r\n throw('options.order: Debe ser un Array')\r\n }\r\n else{\r\n if(item.length === 2 && item[1].toUpperCase() === 'DESC'){\r\n po.push('-' + item[0]);\r\n }\r\n else{\r\n po.push(item[0]);\r\n }\r\n }\r\n });\r\n return po;\r\n };\r\n\r\n let findOne = async (m,o, opts = {}) => {\r\n var naq = this;\r\n let promise = new Promise(function(resolve, reject) {\r\n findAll(m,o, opts)\r\n .then(r => resolve(r.length ? r[0] : null))\r\n .catch(e => reject(e));\r\n });\r\n return promise;\r\n };\r\n\r\n let findAll = async (m,o, opts = {}) => {\r\n var naq = this;\r\n\r\n // Options:\r\n\r\n // noRecall es una opción interna (o forzable) para no hacer el segundo llamado y obtener atributos faltantes en el método listar.\r\n // Por defect está activada, si el request falla con result 'invalidAttributes' se reintentará con esta opción = false.\r\n var noRecall = (typeof opts.noRecall !== 'undefined') ? opts.noRecall : (o.attributes ? true : false);\r\n\r\n // opts.justIds se utiliza para sólo obtener ids, útil en queries internas before update y findOrCreate.\r\n\r\n\r\n // Se utiliza la opción global de límite o la indicada en el objeto query.\r\n var findAllLimit = o.limit || defaults.findAllLimit;\r\n\r\n\r\n let promise = new Promise(function(resolve, reject) {\r\n omc.get(`${mapping[m].uri}`, Object.assign({},\r\n {\r\n where : parseWhere(o.where),\r\n },\r\n (!noRecall || opts.justIds ? { include :[null] } : (o.include ? {include : o.include } : null)),\r\n (!noRecall || opts.justIds ? { fields :['id'] } : (o.attributes ? { fields : o.attributes } : null)),\r\n (o.order ? { sort : parseOrder(o.order) } : null),\r\n { limit : defaults.findAllApiLimit, followPages : Math.ceil(findAllLimit/defaults.findAllApiLimit) },\r\n ), opts)\r\n .then(r => {\r\n if(noRecall){\r\n delete r.body.data._links;\r\n resolve(r.body.data);\r\n }\r\n else if(r.body.dataCount){\r\n let data = [];\r\n let dataPromises = [];\r\n r.body.data.forEach((item, i) => {\r\n dataPromises.push(omc.get(`${mapping[m].uri}/${item.id}`,\r\n Object.assign({},\r\n { include : o.include || [null] },\r\n (o.attributes ? { fields : o.attributes } : null),\r\n ), opts\r\n )\r\n )\r\n });\r\n\r\n Promise.all(dataPromises)\r\n .then(r2 => {\r\n r2.forEach((item, i) => {\r\n data.push(item.body.data);\r\n });\r\n resolve(data.map(x => {\r\n delete x._links;\r\n return x;\r\n }))\r\n })\r\n .catch(e => reject(e))\r\n }\r\n else{\r\n resolve([])\r\n }\r\n })\r\n .catch(e => {\r\n // console.log(e)\r\n if(e.body && (e.body.result === 'invalid-attributes' || e.body.result === 'invalid-includes') && !opts.noRecallTry){\r\n findAll(m, o, Object.assign({}, opts, { noRecall : false, noRecallTry : true }))\r\n .then(r2 => resolve(r2))\r\n .catch(e2 => reject(e2));\r\n }\r\n else{\r\n reject(e)\r\n }\r\n // reject(e)\r\n })\r\n });\r\n return promise;\r\n };\r\n\r\n let findOrCreate = async (m, o, opts = {}) => {\r\n var naq = this;\r\n\r\n // Options\r\n var returnElement = opts.returnElement || true;\r\n\r\n let promise = new Promise(function(resolve, reject) {\r\n if(!o.where){\r\n reject('Necesitas indicar al menos una condicion!');\r\n return;\r\n }\r\n if(returnElement){\r\n findOne(m, { where : o.where }, opts)\r\n .then(r => {\r\n if(r){\r\n resolve([r, false]);\r\n }\r\n else{\r\n create(m, Object.assign({}, o.where, o.defaults), opts)\r\n .then(r2 => resolve([r2, true]))\r\n .catch(e => reject(e));\r\n }\r\n })\r\n .catch(e => reject(e));\r\n }\r\n else{\r\n findOne(m, { where : o.where }, opts)\r\n .then(r => {\r\n if(r){\r\n resolve([true, false]);\r\n }\r\n else{\r\n create(m, Object.assign({}, o.where, o.defaults), opts)\r\n .then(r2 => resolve([true, true]))\r\n .catch(e => reject(e));\r\n }\r\n })\r\n .catch(e => reject(e));\r\n }\r\n });\r\n return promise;\r\n };\r\n\r\n let create = async (m, o, opts = {}) => {\r\n var naq = this;\r\n\r\n // Options\r\n var returnElement = opts.returnElement || true;\r\n\r\n let promise = new Promise(function(resolve, reject) {\r\n omc.post(mapping[m].uri, o, {}, opts)\r\n .then(r => {\r\n if(returnElement){\r\n omc.get(`${mapping[m].uri}/${r.body.id}`, { include : [null]}, opts)\r\n .then(r2 => {\r\n delete r2.body.data._links;\r\n resolve(r2.body.data)\r\n })\r\n .catch(e => reject(e))\r\n }\r\n else{\r\n resolve(true);\r\n }\r\n })\r\n .catch(e => reject(e))\r\n });\r\n return promise;\r\n };\r\n\r\n let update = async (m, d, o, opts = {}) => {\r\n var naq = this;\r\n let promise = new Promise(function(resolve, reject) {\r\n findAll(m, o, Object.assign({}, opts, { justIds : true }))\r\n .then(r => {\r\n let patched = [];\r\n r.forEach((item, i) => {\r\n patched.push(omc.patch(`${mapping[m].uri}/${item.id}`, d, {}, opts));\r\n });\r\n Promise.all(patched)\r\n .then(r2 => resolve([r2.length]))\r\n .catch(e => reject(e));\r\n })\r\n .catch(e => reject(e));\r\n });\r\n return promise;\r\n };\r\n\r\n let destroy = async (m, o, opts) => {\r\n var naq = this;\r\n let promise = new Promise(function(resolve, reject) {\r\n findAll(m, o, Object.assign({}, opts, { justIds : true }))\r\n .then(r => {\r\n let deleted = [];\r\n r.forEach((item, i) => {\r\n deleted.push(omc.delete(`${mapping[m].uri}/${item.id}`, opts));\r\n });\r\n Promise.all(deleted)\r\n .then(r2 => resolve(r2.length))\r\n .catch(e => reject(e));\r\n })\r\n .catch(e => reject(e));\r\n });\r\n return promise;\r\n }\r\n\r\n\r\n let Entity = {};\r\n\r\n for (var m in mapping) {\r\n if (mapping.hasOwnProperty(m)) {\r\n let n = m;\r\n Entity[n] = {\r\n findOne : async (o, opts) => findOne(n, o, opts),\r\n findAll : async (o, opts) => findAll(n, o, opts),\r\n findOrCreate : async (o, opts) => findOrCreate(n, o, opts),\r\n create : async (o, opts) => create(n, o, opts),\r\n update : async (d, o, opts) => update(n, d, o, opts),\r\n destroy : async (o, opts) => destroy(n, o, opts)\r\n }\r\n }\r\n }\r\n\r\n return Entity;\r\n\r\n};\r\n\r\nexport default Naquelize;\r\n","/* eslint-disable linebreak-style */\r\n'use strict'\r\nimport Naquelize from './omnicommerce-rest-api-naquelize';\r\n\r\nconst axios = require('axios');\r\nconst rateLimit = require('axios-rate-limit');\r\n\r\nconst http = rateLimit(axios.create(), { maxRequests: 1, perMilliseconds: 50 })\r\n\r\nconst OMC = function (options) {\r\n this.endpoint = options.endpoint?.replace(/\\/$/,'') || 'https://api.omnicommerce.app/v1';\r\n this.accessToken = options.accessToken || null;\r\n this.logger = options.logger || null;\r\n this.refreshTokenS = options.refreshTokenS || null;\r\n this.autoRefreshToken = options.autoRefreshToken || true;\r\n\r\n this.reqId = 0;\r\n\r\n this.init = () => {\r\n this.Entity = new Naquelize(this);\r\n };\r\n\r\n this.log = (level, message, data = null) => {\r\n const defaults = {\r\n m: 'OMC',\r\n s: 'API',\r\n t: null,\r\n };\r\n if (this.logger) {\r\n this.logger(\r\n Object.assign(\r\n { level, message },\r\n defaults,\r\n data\r\n )\r\n );\r\n }\r\n };\r\n\r\n this.operadoresCondicionales = ['gt','gte','lt','lte','like','notlike'];\r\n\r\n this.parseCondiciones = (cond) => {\r\n const condiciones = {};\r\n cond.forEach((item, i) => {\r\n switch(item.condition.toLowerCase()){\r\n case '>':\r\n condiciones[`${item.field}[gt]`] = item.value;\r\n break;\r\n case '>=':\r\n condiciones[`${item.field}[gte]`] = item.value;\r\n break;\r\n case '<':\r\n condiciones[`${item.field}[lt]`] = item.value;\r\n break;\r\n case '<=':\r\n condiciones[`${item.field}[lte]`] = item.value;\r\n break;\r\n case 'like':\r\n condiciones[`${item.field}[like]`] = item.value;\r\n break;\r\n case 'notlike':\r\n condiciones[`${item.field}[notlike]`] = item.value;\r\n break;\r\n case '!=':\r\n condiciones[`${item.field}[ne]`] = item.value;\r\n break;\r\n case '=':\r\n condiciones[`${item.field}`] = item.value;\r\n break;\r\n default:\r\n if(this.operadoresCondicionales.indexOf(item.condition) >= 0){\r\n condiciones[`${item.field}[${item.condition}]`] = item.value;\r\n }\r\n else{\r\n throw({ status : false, code : null, message : `No se entiende el operador condicional \"${item.condition}\"` });\r\n }\r\n }\r\n });\r\n return condiciones;\r\n };\r\n\r\n this.request = (dataIn) => {\r\n const omc = this;\r\n const reqId = ++this.reqId;\r\n const data = { ...dataIn };\r\n const promise = new Promise((resolve, reject) => {\r\n data.method = data.method || 'get';\r\n //console.log({data})\r\n data.url = omc.endpoint + (data.url.slice(0,1) !== '/' ? `/${data.url}` : data.url);\r\n\r\n data.headers = Object.assign({},\r\n (omc.accessToken && !data.url.match(/usuarios\\/login/) ? { 'x-access-token' : omc.accessToken } : null),\r\n (data.headers ? data.headers : null),\r\n (data.opts && data.opts.tenantKey ? { 'x-tenant-key' : data.opts.tenantKey } : null));\r\n // console.log(data.headers)\r\n if(data.params){\r\n\r\n for (var key in data.params) {\r\n if (data.params.hasOwnProperty(key)) {\r\n data.url += (data.url.indexOf('?') > 0) ? `&${key}=${encodeURIComponent(data.params[key])}` : `?${key}=${encodeURIComponent(data.params[key])}`;\r\n }\r\n }\r\n delete data.params;\r\n }\r\n if(omc.logger){\r\n omc.log(`silly`, `Solicitud #${reqId} iniciando`, { me : data.method, u : data.url.replace(omc.endpoint,''), t : (data.opts && data.opts.tenantKey ? data.opts.tenantKey : null)});\r\n }\r\n http(data)\r\n .then(r => {\r\n if(omc.logger){\r\n omc.log(`silly`, `Solicitud #${reqId} finalizada (${(r.data.dataCount) ? r.data.dataCount + ' resultados' : 'exito'}).`, { t : (data.opts && data.opts.tenantKey ? data.opts.tenantKey : null) });\r\n }\r\n resolve({\r\n status : true,\r\n code : r.status,\r\n message : r.statusText,\r\n body : r.data\r\n });\r\n })\r\n .catch(e => {\r\n if(e.response){\r\n if(omc.autoRefreshToken && e.response.status == 401 && omc.refreshTokenS && (!dataIn.params || !dataIn.params.connectionTest)){\r\n if(omc.logger){\r\n omc.log(`debug`, `Solicitud #${reqId} - Chequeando conexión token...`)\r\n }\r\n omc.checkConnection()\r\n .then(rct => {\r\n omc.request(dataIn)\r\n .then(rrr => resolve(rrr))\r\n .catch(err => reject(err));\r\n })\r\n .catch(ect => {\r\n if(ect.code == 401){\r\n if(omc.logger){\r\n omc.log(`debug`, `Solicitud #${reqId} - Intentando renovar un token...`)\r\n }\r\n omc.refreshToken()\r\n .then(rrt => {\r\n if(omc.logger){\r\n omc.log(`verbose`, `Solicitud #${reqId} - Token renovado. Reintendo solicitud.`)\r\n }\r\n omc.request(dataIn)\r\n .then(rrr => resolve(rrr))\r\n .catch(err => reject(err));\r\n })\r\n .catch(ert => {\r\n if(omc.logger){\r\n omc.log(`warn`, `Req: #${reqId} - Error renovando token.`)\r\n }\r\n reject({ status : false, code : 401, message : 'Unathorized', body : (e.response.data || {}) });\r\n });\r\n }\r\n else{\r\n omc.log(`warn`, `Req: #${reqId} - Error chequeando conexión.`)\r\n reject({ status : false, code : ect.response.status, message : ect.response.statusText, body : (ect.response.data || {}) });\r\n }\r\n })\r\n }\r\n else{\r\n reject({ \r\n status : false,\r\n code : e.response.status,\r\n message : e.response.statusText,\r\n body : (e.response.data || {}),\r\n request : { id : reqId, method : (data.method || 'get'), uri : data.url, headers : data.headers }\r\n });\r\n }\r\n }\r\n else if(e.errno == 'ENOTFOUND' && e.syscall == 'getaddrinfo'){\r\n reject({ status : false, code : null, message : `Cannot connect endpoint ${omc.endpoint}`, body : {}});\r\n if(omc.logger){\r\n omc.log(`error`, `Request #${reqId} falló: Falló la conexión con el endpoint: ${omc.endpoint}`);\r\n }\r\n }\r\n else if(e.code == 'ERR_TLS_CERT_ALTNAME_INVALID'){\r\n reject({ status : false, code: null, message : `SSL error endpoint ${omc.endpoint}`, body : {}});\r\n if(omc.logger){\r\n omc.log(`error`, `Request #${reqId} falló: El nombre en el certificado no concuerda con el endpoint: ${omc.endpoint}`);\r\n }\r\n }\r\n else if(e.code == 'EHOSTDOWN'){\r\n reject({ status : false, code: null, message : `No se pudo establecer la conexión \"${e.code}\"`, body : {}});\r\n if(omc.logger){\r\n omc.log(`error`, `Request #${reqId} falló: No se pudo establecer la conexión`);\r\n }\r\n }\r\n else if(e.code == 'ECONNREFUSED'){\r\n reject({ status : false, code: null, message : `No se pudo establecer la conexión \"${e.code}\"`, body : {}});\r\n if(omc.logger){\r\n omc.log(`error`, `Request #${reqId} falló: No se pudo establecer la conexión`);\r\n }\r\n }\r\n else{\r\n reject({ status : false, code: null, message : `Error no manejado`, body : {}});\r\n console.log(e)\r\n if(omc.logger){\r\n omc.log(`error`, `Request #${reqId} falló: Ha ocurrido un error`);\r\n }\r\n }\r\n console.log(\"request error\", e)\r\n });\r\n });\r\n return promise;\r\n };\r\n\r\n this.checkConnection = () => {\r\n let omc = this;\r\n let promise = new Promise(function(resolve, reject) {\r\n omc.request({ url : '/usuarios/me', params : { connectionTest : 1 } })\r\n .then(r => resolve(r))\r\n .catch(e => reject(e));\r\n });\r\n return promise;\r\n };\r\n\r\n this.login = (email, clave, refreshToken) => {\r\n let omc = this;\r\n let promise = new Promise(function(resolve, reject) {\r\n omc.request({\r\n method : 'post',\r\n url : '/usuarios/login',\r\n data : (refreshToken ? { refreshToken : refreshToken } : { email : email, clave : clave })\r\n })\r\n .then(r => {\r\n omc.accessToken = r.body.token;\r\n omc.refreshTokenS = r.body.refreshToken;\r\n const redir = new URL(window.location.href).searchParams.get('redir')\r\n resolve({...r, redir});\r\n })\r\n .catch(e => reject(e));\r\n });\r\n return promise;\r\n };\r\n\r\n this.refreshToken = (refreshToken) => {\r\n refreshToken = refreshToken || this.refreshTokenS;\r\n return this.login(null, null, refreshToken)\r\n };\r\n\r\n this.paramsProcess = (params) => {\r\n if(!params){\r\n return {}\r\n }\r\n let paramsProcessed = { ...params};\r\n if(params.where){\r\n Object.assign(paramsProcessed, this.parseCondiciones(params.where))\r\n delete paramsProcessed.where;\r\n }\r\n if(params.include){\r\n paramsProcessed.include = params.include.join(',');\r\n }\r\n if(params.fields){\r\n paramsProcessed.fields = params.fields.join(',');\r\n }\r\n if(params.sort){\r\n paramsProcessed.sort = params.sort.join(',');\r\n }\r\n return paramsProcessed;\r\n };\r\n\r\n this.get = (endpoint, params, opts = {}) => {\r\n params = this.paramsProcess(params);\r\n var omc = this;\r\n let promise = new Promise(function(resolve, reject) {\r\n let followPages = 1;\r\n let originalPage = params.page || 1;\r\n if(typeof params.followPages !== 'undefined'){\r\n followPages = (!isNaN(params.followPages) && (params.followPages !== true)) ? params.followPages : 50;\r\n delete params.followPages;\r\n }\r\n omc.request({\r\n url : endpoint,\r\n params : params,\r\n opts : opts,\r\n })\r\n .then(r => {\r\n var results = r;\r\n if(followPages > 1 && Array.isArray(r.body.data) && !r.body._links){\r\n reject({ status: false, message: 'El endpoint no permite paginado automático.'})\r\n if(omc.logger){\r\n omc.log(`warn`, `El endpoint no permite paginado automático`);\r\n }\r\n }\r\n else if(followPages > 1 && r.body._links && r.body._links.nextPage){\r\n let req = [];\r\n delete results.body._links;\r\n delete results.body.page;\r\n\r\n let maxPage = Math.ceil(r.body.total / r.body.dataCount) + 1;\r\n maxPage = (maxPage < (originalPage + followPages)) ? maxPage : originalPage + followPages;\r\n\r\n for(var page = (originalPage + 1); page < maxPage; page++){\r\n req.push(omc.request({\r\n url : endpoint,\r\n params : Object.assign({}, params, { page : page}),\r\n opts : opts,\r\n }))\r\n }\r\n Promise.all(req)\r\n .then(reqs => {\r\n reqs.forEach((r, i) => {\r\n results.body.dataCount += r.body.dataCount;\r\n results.body.data = results.body.data.concat(r.body.data);\r\n });\r\n results.body.fromPage = originalPage;\r\n results.body.toPage = (page - 1);\r\n resolve(results);\r\n })\r\n .catch(e => {\r\n reject(e);\r\n })\r\n }\r\n else{\r\n resolve(results)\r\n }\r\n })\r\n .catch(e => reject(e));\r\n });\r\n return promise;\r\n };\r\n\r\n this.post = (endpoint, data, params, opts = {}) => {\r\n return this.request({\r\n url : endpoint,\r\n method : 'post',\r\n data : data,\r\n params : params,\r\n opts : opts,\r\n })\r\n };\r\n\r\n this.patch = (endpoint, data, params, opts = {}) => {\r\n return this.request({\r\n url : endpoint,\r\n method : 'patch',\r\n data : data,\r\n params : params,\r\n opts : opts,\r\n })\r\n };\r\n\r\n this.put = (endpoint, data, params, opts = {}) => {\r\n return this.request({\r\n url : endpoint,\r\n method : 'put',\r\n data : data,\r\n params : params,\r\n opts : opts,\r\n })\r\n };\r\n\r\n this.delete = (endpoint, params, opts = {}) => {\r\n return this.request({\r\n url : endpoint,\r\n method : 'delete',\r\n params : params,\r\n opts : opts,\r\n })\r\n };\r\n\r\n\r\n this.Entity = {}\r\n\r\n\r\n this.init();\r\n\r\n return this;\r\n\r\n};\r\n\r\nexport default OMC;\r\n","'use strict'\r\nimport OmnicommerceRestApi from './omnicommerce-rest-api';\r\n\r\nlet OmcConfig = Object.assign(\r\n { endpoint : process.env.REACT_APP_API_URL },\r\n (localStorage.getItem('accessToken') ? { accessToken : localStorage.getItem('accessToken') } : null),\r\n (localStorage.getItem('refreshToken') ? { refreshTokenS : localStorage.getItem('refreshToken') } : null)\r\n);\r\n\r\nlet omc = new OmnicommerceRestApi(OmcConfig);\r\n\r\nconst idRemoto = {\r\n\r\n get : function(conexion, modelo, id = null){\r\n let promise = new Promise(function(resolve, reject) {\r\n omc.Entity.Match.findOne({ where : {\r\n tenantKey : conexion.tenantKey,\r\n plataformaId : conexion.plataformaId,\r\n conexionId : conexion.id,\r\n modelo : modelo,\r\n modeloId : id\r\n }}, { tenantKey : conexion.tenantKey })\r\n .then(r => {\r\n resolve((r) ? r.idRemoto : null);\r\n })\r\n .catch(e => reject(e));\r\n });\r\n return promise;\r\n },\r\n\r\n getByIdRemoto : function(conexion, modelo, idRemoto){\r\n let promise = new Promise(function(resolve, reject) {\r\n omc.Entity.Match.findOne({ where : {\r\n tenantKey : conexion.tenantKey,\r\n plataformaId : conexion.plataformaId,\r\n conexionId : conexion.id,\r\n modelo : modelo,\r\n idRemoto : idRemoto\r\n }}, { tenantKey : conexion.tenantKey })\r\n .then(r => {\r\n resolve((r) ? r.id : null);\r\n })\r\n .catch(e => reject(e));\r\n });\r\n return promise;\r\n },\r\n\r\n set : (conexion, modelo, id = null, idRemoto, matchBy = null) => {\r\n let promise = new Promise(function(resolve, reject) {\r\n omc.Entity.Match.findOrCreate({ where : {\r\n tenantKey : conexion.tenantKey,\r\n plataformaId : conexion.plataformaId,\r\n conexionId : conexion.id,\r\n modelo : modelo,\r\n modeloId : id\r\n }, defaults : { idRemoto : idRemoto, matchBy : matchBy }}, { tenantKey : conexion.tenantKey })\r\n .then(r => {\r\n if(!r[1]){\r\n omc.Entity.Match.update({ idRemoto : idRemoto, matchBy : matchBy }, { where : { id : r.id }}, { tenantKey : conexion.tenantKey })\r\n .catch(e => reject(e));\r\n }\r\n resolve(idRemoto);\r\n })\r\n .catch(e => reject(e));\r\n });\r\n return promise;\r\n }\r\n}\r\n\r\nlet conexiones = {\r\n\r\n setParametros : async (conexion, parametros) => {\r\n let promise = new Promise(function(resolve, reject) {\r\n let parametrosWork = [];\r\n for (var p in parametros) {\r\n if (parametros.hasOwnProperty(p)) {\r\n let valor = parametros[p];\r\n if(typeof parametros[p] === 'object' && parametros[p] !== null){\r\n valor = JSON.stringify(parametros[p]);\r\n }\r\n switch(valor){\r\n case true:\r\n valor = 'true';\r\n break;\r\n case false:\r\n valor = 'false';\r\n break;\r\n default:\r\n break;\r\n }\r\n parametrosWork.push(omc.Entity.ConexionParametro.findOrCreate({\r\n where : {\r\n tipo : 'tenant',\r\n plataformaId : conexion.plataformaId,\r\n conexionId : conexion.id,\r\n nombre : p\r\n },\r\n defaults : { nombre : p, valor : valor }}, { tenantKey : conexion.tenantKey }));\r\n }\r\n }\r\n Promise.all(parametrosWork)\r\n .then(r => resolve(true))\r\n .catch(e => {\r\n console.log(e);\r\n reject(false);\r\n })\r\n });\r\n return promise;\r\n },\r\n\r\n findParam : async (conexion, param) => {\r\n let paramRecord = conexion.parametros.filter(x => x.nombre == param);\r\n if(paramRecord[0]){\r\n return paramRecord[0].valor;\r\n }\r\n else{\r\n return null;\r\n }\r\n },\r\n}\r\n\r\nomc.idRemoto = idRemoto;\r\nomc.conexiones = conexiones;\r\n\r\nexport default omc;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport { colors, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'inline-block',\r\n borderRadius: '50%',\r\n flexGrow: 0,\r\n flexShrink: 0\r\n },\r\n small: {\r\n height: theme.spacing(1),\r\n width: theme.spacing(1)\r\n },\r\n medium: {\r\n height: theme.spacing(2),\r\n width: theme.spacing(2)\r\n },\r\n large: {\r\n height: theme.spacing(3),\r\n width: theme.spacing(3)\r\n },\r\n offline: {\r\n backgroundColor: colors.grey[50]\r\n },\r\n away: {\r\n backgroundColor: colors.orange[600]\r\n },\r\n busy: {\r\n backgroundColor: colors.red[600]\r\n },\r\n online: {\r\n backgroundColor: colors.green[600]\r\n }\r\n}));\r\n\r\nfunction OnlineIndicator({\r\n className,\r\n size,\r\n status,\r\n ...rest\r\n}) {\r\n const classes = useStyles();\r\n const rootClassName = clsx(\r\n {\r\n [classes.root]: true,\r\n [classes[size]]: size,\r\n [classes[status]]: status\r\n },\r\n className\r\n );\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nOnlineIndicator.propTypes = {\r\n className: PropTypes.string,\r\n size: PropTypes.oneOf(['small', 'medium', 'large']),\r\n status: PropTypes.oneOf(['online', 'offline', 'away', 'busy'])\r\n};\r\n\r\nOnlineIndicator.defaultProps = {\r\n size: 'medium',\r\n status: 'offline'\r\n};\r\n\r\nexport default OnlineIndicator;\r\n","import React from 'react';\r\n\r\nfunction Logo(props) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default Logo;\r\n","import axios from 'src/utils/axios';\r\n\r\nexport const GET_CONTACTS = '@chat/get-contacts';\r\nexport const GET_THREADS = '@chat/get-threads';\r\nexport const GET_THREAD = '@chat/get-thread';\r\nexport const MARK_THREAD_AS_SEEN = '@chat/mark-thread-as-seen';\r\nexport const ADD_MESSAGE = '@chat/add-message';\r\nexport const OPEN_SIDEBAR = '@chat/open-sidebar';\r\nexport const CLOSE_SIDEBAR = '@chat/close-sidebar';\r\n\r\nexport function getContacts() {\r\n const request = axios.get('/api/chat/contacts');\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: GET_CONTACTS,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function getThreads() {\r\n const request = axios.get('/api/chat/threads');\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: GET_THREADS,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function getThread(threadKey) {\r\n const request = axios.get('/api/chat/thread', {\r\n params: {\r\n threadKey\r\n }\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => {\r\n if (response.data.thread) {\r\n dispatch({\r\n type: GET_THREAD,\r\n payload: response.data\r\n });\r\n }\r\n });\r\n };\r\n}\r\n\r\nexport function markThreadAsSeen(threadKey) {\r\n const request = axios.get('/api/chat/thread/mark-as-seen', {\r\n params: {\r\n threadKey\r\n }\r\n });\r\n\r\n return (dispatch) => {\r\n request.then(() => dispatch({\r\n type: MARK_THREAD_AS_SEEN,\r\n payload: {\r\n threadKey\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function addMessage({\r\n userId,\r\n threadKey,\r\n body,\r\n attachments\r\n}) {\r\n const request = axios.post('/api/chat/messages/new', {\r\n userId,\r\n threadKey,\r\n body,\r\n attachments\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: ADD_MESSAGE,\r\n payload: {\r\n userId,\r\n ...response.data\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function openSidebar() {\r\n return {\r\n type: OPEN_SIDEBAR\r\n };\r\n}\r\n\r\nexport function closeSidebar() {\r\n return {\r\n type: CLOSE_SIDEBAR\r\n };\r\n}\r\n","import React from 'react';\nimport { logout } from 'src/actions/accountActions';\nimport { useDispatch } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\n\n\nfunction Logout() {\n const dispatch = useDispatch();\n dispatch(logout());\n const queryParameters = new URLSearchParams(window.location.search);\n const redir = queryParameters.get('redir');\n if (redir) {\n window.location.href = `${redir}?logout=true`;\n } else {\n return ;\n }\n}\n\nexport default Logout;","/* eslint-disable */\r\nimport { Chart } from 'react-chartjs-2';\r\n\r\n// ChartJS extension rounded bar chart\r\n// https://codepen.io/jedtrow/full/ygRYgo\r\nfunction draw() {\r\n const { ctx } = this._chart;\r\n const vm = this._view;\r\n let { borderWidth } = vm;\r\n\r\n let left;\r\n let right;\r\n let top;\r\n let bottom;\r\n let signX;\r\n let signY;\r\n let borderSkipped;\r\n let radius;\r\n\r\n // If radius is less than 0 or is large enough to cause drawing errors a max\r\n // radius is imposed. If cornerRadius is not defined set it to 0.\r\n let { cornerRadius } = this._chart.config.options;\r\n if (cornerRadius < 0) {\r\n cornerRadius = 0;\r\n }\r\n\r\n if (typeof cornerRadius === 'undefined') {\r\n cornerRadius = 0;\r\n }\r\n\r\n if (!vm.horizontal) {\r\n // bar\r\n left = vm.x - vm.width / 2;\r\n right = vm.x + vm.width / 2;\r\n top = vm.y;\r\n bottom = vm.base;\r\n signX = 1;\r\n signY = bottom > top ? 1 : -1;\r\n borderSkipped = vm.borderSkipped || 'bottom';\r\n } else {\r\n // horizontal bar\r\n left = vm.base;\r\n right = vm.x;\r\n top = vm.y - vm.height / 2;\r\n bottom = vm.y + vm.height / 2;\r\n signX = right > left ? 1 : -1;\r\n signY = 1;\r\n borderSkipped = vm.borderSkipped || 'left';\r\n }\r\n\r\n // Canvas doesn't allow us to stroke inside the width so we can\r\n // adjust the sizes to fit if we're setting a stroke on the line\r\n if (borderWidth) {\r\n // borderWidth shold be less than bar width and bar height.\r\n const barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\r\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\r\n const halfStroke = borderWidth / 2;\r\n // Adjust borderWidth when bar top position is near vm.base(zero).\r\n const borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\r\n const borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\r\n const borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\r\n const borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\r\n // not become a vertical line?\r\n if (borderLeft !== borderRight) {\r\n top = borderTop;\r\n bottom = borderBottom;\r\n }\r\n // not become a horizontal line?\r\n if (borderTop !== borderBottom) {\r\n left = borderLeft;\r\n right = borderRight;\r\n }\r\n }\r\n\r\n ctx.beginPath();\r\n ctx.fillStyle = vm.backgroundColor;\r\n ctx.strokeStyle = vm.borderColor;\r\n ctx.lineWidth = borderWidth;\r\n\r\n // Corner points, from bottom-left to bottom-right clockwise\r\n // | 1 2 |\r\n // | 0 3 |\r\n const corners = [[left, bottom], [left, top], [right, top], [right, bottom]];\r\n\r\n // Find first (starting) corner with fallback to 'bottom'\r\n const borders = ['bottom', 'left', 'top', 'right'];\r\n let startCorner = borders.indexOf(borderSkipped, 0);\r\n if (startCorner === -1) {\r\n startCorner = 0;\r\n }\r\n\r\n function cornerAt(index) {\r\n return corners[(startCorner + index) % 4];\r\n }\r\n\r\n // Draw rectangle from 'startCorner'\r\n let corner = cornerAt(0);\r\n ctx.moveTo(corner[0], corner[1]);\r\n\r\n for (let i = 1; i < 4; i += 1) {\r\n corner = cornerAt(i);\r\n let nextCornerId = i + 1;\r\n if (nextCornerId === 4) {\r\n nextCornerId = 0;\r\n }\r\n\r\n const width = corners[2][0] - corners[1][0];\r\n const height = corners[0][1] - corners[1][1];\r\n const x = corners[1][0];\r\n const y = corners[1][1];\r\n\r\n radius = cornerRadius;\r\n // Fix radius being too large\r\n if (radius > Math.abs(height) / 2) {\r\n radius = Math.floor(Math.abs(height) / 2);\r\n }\r\n if (radius > Math.abs(width) / 2) {\r\n radius = Math.floor(Math.abs(width) / 2);\r\n }\r\n\r\n if (height < 0) {\r\n // Negative values in a standard bar chart\r\n const xTl = x;\r\n const xTr = x + width;\r\n const yTl = y + height;\r\n const yTr = y + height;\r\n\r\n const xBl = x;\r\n const xBr = x + width;\r\n const yBl = y;\r\n const yBr = y;\r\n\r\n // Draw\r\n ctx.moveTo(xBl + radius, yBl);\r\n ctx.lineTo(xBr - radius, yBr);\r\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\r\n ctx.lineTo(xTr, yTr + radius);\r\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\r\n ctx.lineTo(xTl + radius, yTl);\r\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\r\n ctx.lineTo(xBl, yBl - radius);\r\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\r\n } else if (width < 0) {\r\n // Negative values in a horizontal bar chart\r\n const xTl = x + width;\r\n const xTr = x;\r\n const yTl = y;\r\n const yTr = y;\r\n\r\n const xBl = x + width;\r\n const xBr = x;\r\n const yBl = y + height;\r\n const yBr = y + height;\r\n\r\n // Draw\r\n ctx.moveTo(xBl + radius, yBl);\r\n ctx.lineTo(xBr - radius, yBr);\r\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\r\n ctx.lineTo(xTr, yTr + radius);\r\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\r\n ctx.lineTo(xTl + radius, yTl);\r\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\r\n ctx.lineTo(xBl, yBl - radius);\r\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\r\n } else {\r\n // Positive Value\r\n ctx.moveTo(x + radius, y);\r\n ctx.lineTo(x + width - radius, y);\r\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n ctx.lineTo(x + width, y + height - radius);\r\n ctx.quadraticCurveTo(\r\n x + width,\r\n y + height,\r\n x + width - radius,\r\n y + height\r\n );\r\n ctx.lineTo(x + radius, y + height);\r\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n ctx.lineTo(x, y + radius);\r\n ctx.quadraticCurveTo(x, y, x + radius, y);\r\n }\r\n }\r\n\r\n ctx.fill();\r\n if (borderWidth) {\r\n ctx.stroke();\r\n }\r\n}\r\n\r\nChart.helpers.extend(Chart.elements.Rectangle.prototype, {\r\n draw\r\n});\r\n","/* eslint-disable */\r\n// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in projection, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read http://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'projection' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker-0.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","/* eslint-disable import/prefer-default-export */\r\nexport const THEMES = {\r\n LIGHT: 'LIGHT',\r\n DARK: 'DARK',\r\n // UNICORN: 'UNICORN',\r\n // OMNICOMMERCE: 'OMNICOMMERCE',\r\n};\r\n","import React, {\r\n createContext,\r\n useState,\r\n useEffect\r\n} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'lodash';\r\nimport { THEMES } from 'src/constants';\r\nimport { storeSettings } from 'src/utils/settings';\r\n\r\nconst SettingsContext = createContext();\r\n\r\nconst defaultSettings = {\r\n direction: 'ltr',\r\n responsiveFontSizes: true,\r\n theme: THEMES.LIGHT\r\n};\r\n\r\nexport function SettingsProvider({ settings, children }) {\r\n const [currentSettings, setCurrentSettings] = useState(settings || defaultSettings);\r\n\r\n const handleSaveSettings = (updatedSettings = {}) => {\r\n const mergedSettings = _.merge({}, currentSettings, updatedSettings);\r\n\r\n setCurrentSettings(mergedSettings);\r\n storeSettings(mergedSettings);\r\n };\r\n\r\n useEffect(() => {\r\n document.dir = currentSettings.direction;\r\n }, [currentSettings]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nSettingsProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n settings: PropTypes.object\r\n};\r\n\r\nexport const SettingsConsumer = SettingsContext.Consumer;\r\n\r\nexport default SettingsContext;\r\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_PASSWORD\n} from 'src/actions/accountActions';\n\nconst initialState = {\n user: 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 });\n }\n\n case LOGIN_SUCCESS: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\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 });\n }\n\n case SILENT_LOGIN: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\n });\n }\n\n case UPDATE_PROFILE: {\n const { user, id } = action.payload;\n return produce(state, (draft) => {\n if(id === draft.user.id){\n draft.user = user;\n }\n \n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default accountReducer;\n","/* eslint-disable linebreak-style */\r\nimport axios from 'src/utils/axios';\r\nimport moment from 'moment';\r\nimport omc from 'src/utils/omnicommerce/omc-ready-to-use';\r\n\r\nexport const GET_NOTIFICATIONS = '@notifications/get-notifications';\r\n\r\nexport function getNotifications() {\r\n const request = omc.get('/usuarios/me/notificaciones?archivada=false');\r\n\r\n return (dispatch) => {\r\n request\r\n .then((response) => {\r\n const dataParsed = response.body.data.map((x) => {\r\n const b = x\r\n const dateArray = b.fechaHora.split('T')[0].split('-');\r\n const hourArray = x.fechaHora.split('T')[1].split('.')[0].split(':');\r\n b.fechaHoraFriendly = `${dateArray[2]}/${dateArray[1]} ${hourArray[0]}:${hourArray[1]}`;\r\n b.fechaHoraCompleteFriendly = `${dateArray[2]}/${dateArray[1]} ${hourArray[0]}:${hourArray[1]}`;\r\n if (b.cantidad) {\r\n b.ultimaFechaHora = b.ultimaFechaHora\r\n ? moment(b.ultimaFechaHora).add(3, 'hours').format()\r\n : moment(b.fechaHora).add(3, 'hours').format();\r\n // let dateArray2 = b.ultimaFechaHora.split('T')[0].split('-');\r\n // let hourArray2 = b.ultimaFechaHora.split('T')[1].split('.')[0].split(':');\r\n // b.fechaHoraLastFriendly =\r\n // `${dateArray2[2]}/${dateArray2[1]} ${hourArray2[0]}:${hourArray2[1]}`;\r\n b.fechaHoraLastNotsoFriendly = moment(b.ultimaFechaHora).format('D MMMM YYYY, h:mm:ss a')\r\n b.fechaHoraLastFriendly = moment(b.ultimaFechaHora || b.fechaHora).fromNow();\r\n }\r\n if (b.metadata) {\r\n try {\r\n b.metadata = JSON.parse(b.metadata);\r\n b.metadataFriendly = '';\r\n for (const d in b.metadata) {\r\n if (b.metadata.hasOwnProperty(d)) {\r\n b.metadataFriendly += `\\n - ${d}: ${b.metadata[d]}`;\r\n }\r\n }\r\n } catch (e) {\r\n // Silence\r\n }\r\n }\r\n return b;\r\n });\r\n dispatch({\r\n type: GET_NOTIFICATIONS,\r\n payload: { notifications: dataParsed }\r\n });\r\n })\r\n .catch((e) => {\r\n console.warn('Error obteniendo las notificaciones', e)\r\n });\r\n };\r\n}\r\n\r\nexport const ARCHIVE_NOTIFICATION = '@notifications/archive-notifications';\r\n\r\nexport function archiveNotification(idNotification) {\r\n const request = omc.patch(`/usuarios/me/notificaciones/${idNotification}`, { archivada: \"true\" });\r\n return (dispatch) => {\r\n dispatch({\r\n type: ARCHIVE_NOTIFICATION,\r\n payload: { idNotification, archivada: true}\r\n });\r\n request\r\n .catch((e) => {\r\n dispatch({\r\n type: ARCHIVE_NOTIFICATION,\r\n payload: { idNotification, archivada: false}\r\n });\r\n console.warn('Error obteniendo las notificaciones', e)\r\n });\r\n };\r\n}\r\n\r\nexport const MARCAR_NOTIFICATION = '@notifications/marcar-notifications';\r\n\r\nexport function marcarNotification(idNotification, valorNuevoVista) {\r\n const request = omc.patch(`/usuarios/me/notificaciones/${idNotification}`, { vista: (valorNuevoVista).toString() });\r\n\r\n return (dispatch) => {\r\n dispatch({\r\n type: MARCAR_NOTIFICATION,\r\n payload: { idNotification, vista: valorNuevoVista}\r\n });\r\n request\r\n .catch((e) => {\r\n //TODO handle error mostrar mensaje de error\r\n dispatch({\r\n type: MARCAR_NOTIFICATION,\r\n payload: { idNotification, vista: !valorNuevoVista}\r\n });\r\n console.warn('Error obteniendo las notificaciones', e)\r\n });\r\n };\r\n}\r\n","/* eslint-disable linebreak-style */\r\n/* eslint-disable no-param-reassign */\r\n\r\nimport produce from 'immer';\r\nimport { GET_NOTIFICATIONS, ARCHIVE_NOTIFICATION, MARCAR_NOTIFICATION } from 'src/actions/notificationsActions';\r\n\r\nconst initialState = {\r\n notifications: []\r\n};\r\n\r\nconst notificationsReducer = (state = initialState, action) => {\r\n if (action.type === GET_NOTIFICATIONS) {\r\n const { notifications } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.notifications = notifications;\r\n });\r\n }\r\n if (action.type === ARCHIVE_NOTIFICATION) {\r\n const { idNotification: idNotificationArchivar, archivada } = action.payload;\r\n return produce(state, (draft) => {\r\n draft.notifications = draft.notifications.map((notification) => {\r\n if (notification.id === idNotificationArchivar) {\r\n notification.archivada = archivada;\r\n }\r\n return notification;\r\n });\r\n });\r\n }\r\n if (action.type === MARCAR_NOTIFICATION) {\r\n const { idNotification: idNotificationMarcar, vista } = action.payload;\r\n return produce(state, (draft) => {\r\n draft.notifications = draft.notifications.map((notification) => {\r\n if (notification.id === idNotificationMarcar) {\r\n notification.vista = vista;\r\n }\r\n return notification;\r\n });\r\n });\r\n }\r\n return state;\r\n};\r\n\r\nexport default notificationsReducer;\r\n","const objFromArray = (arr, key = 'id') => arr.reduce((accumulator, current) => {\r\n accumulator[current[key]] = current;\r\n return accumulator;\r\n}, {});\r\n\r\nexport default objFromArray;\r\n","/* eslint-disable no-param-reassign */\r\nimport produce from 'immer';\r\nimport {\r\n GET_CONTACTS,\r\n GET_THREADS,\r\n GET_THREAD,\r\n MARK_THREAD_AS_SEEN,\r\n ADD_MESSAGE,\r\n OPEN_SIDEBAR,\r\n CLOSE_SIDEBAR\r\n} from 'src/actions/chatActions';\r\nimport objFromArray from 'src/utils/objFromArray';\r\n\r\nconst initialState = {\r\n contacts: {\r\n byId: {},\r\n allIds: []\r\n },\r\n threads: {\r\n byKey: {},\r\n allKeys: []\r\n },\r\n sidebarOpen: false\r\n};\r\n\r\nconst chatReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case GET_CONTACTS: {\r\n const { contacts } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.contacts.byId = objFromArray(contacts);\r\n draft.contacts.allIds = Object.keys(draft.contacts.byId);\r\n });\r\n }\r\n\r\n case GET_THREADS: {\r\n const { threads } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.threads.byKey = objFromArray(threads, 'key');\r\n draft.threads.allKeys = Object.keys(draft.threads.byKey);\r\n });\r\n }\r\n\r\n case GET_THREAD: {\r\n const { thread } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.threads.byKey[thread.key] = thread;\r\n\r\n if (!draft.threads.allKeys.includes(thread.key)) {\r\n draft.threads.allKeys.push(thread.key);\r\n }\r\n });\r\n }\r\n\r\n case MARK_THREAD_AS_SEEN: {\r\n const { threadKey } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n const thread = draft.threads.byKey[threadKey];\r\n\r\n if (thread) {\r\n thread.unreadCount = 0;\r\n }\r\n });\r\n }\r\n\r\n case ADD_MESSAGE: {\r\n const {\r\n threadKey,\r\n message,\r\n userId,\r\n otherUserId\r\n } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n let thread = draft.threads.byKey[threadKey];\r\n\r\n if (!thread) {\r\n thread = {\r\n key: threadKey,\r\n messages: [message],\r\n participantIds: [otherUserId, userId],\r\n unreadCount: 0\r\n };\r\n\r\n draft.threads.byKey[threadKey] = thread;\r\n draft.threads.allKeys.push(threadKey);\r\n } else {\r\n thread.messages.push(message);\r\n }\r\n });\r\n }\r\n\r\n case OPEN_SIDEBAR: {\r\n return produce(state, (draft) => {\r\n draft.sidebarOpen = true;\r\n });\r\n }\r\n\r\n case CLOSE_SIDEBAR: {\r\n return produce(state, (draft) => {\r\n draft.sidebarOpen = false;\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\nexport default chatReducer;\r\n","/* eslint-disable no-param-reassign */\r\nimport produce from 'immer';\r\nimport {\r\n GET_LABELS,\r\n GET_MAILS,\r\n GET_MAIL,\r\n OPEN_SIDEBAR,\r\n CLOSE_SIDEBAR,\r\n OPEN_NEW_MESSAGE,\r\n CLOSE_NEW_MESSAGE\r\n} from 'src/actions/mailActions';\r\nimport objFromArray from 'src/utils/objFromArray';\r\n\r\nconst initialState = {\r\n mails: {\r\n byId: {},\r\n allIds: []\r\n },\r\n labels: [],\r\n sidebarOpen: false,\r\n newMessageOpen: false\r\n};\r\n\r\nconst mailReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case GET_LABELS: {\r\n const { labels } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.labels = labels;\r\n });\r\n }\r\n\r\n case GET_MAILS: {\r\n const { mails } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.mails.byId = objFromArray(mails);\r\n draft.mails.allIds = Object.keys(draft.mails.byId);\r\n });\r\n }\r\n\r\n case GET_MAIL: {\r\n const { mail } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.mails.byId[mail.id] = mail;\r\n\r\n if (!draft.mails.allIds.includes(mail.id)) {\r\n draft.mails.allIds.push(mail.id);\r\n }\r\n });\r\n }\r\n\r\n case OPEN_SIDEBAR: {\r\n return produce(state, (draft) => {\r\n draft.sidebarOpen = true;\r\n });\r\n }\r\n\r\n case CLOSE_SIDEBAR: {\r\n return produce(state, (draft) => {\r\n draft.sidebarOpen = false;\r\n });\r\n }\r\n\r\n case OPEN_NEW_MESSAGE: {\r\n return produce(state, (draft) => {\r\n draft.newMessageOpen = true;\r\n });\r\n }\r\n\r\n case CLOSE_NEW_MESSAGE: {\r\n return produce(state, (draft) => {\r\n draft.newMessageOpen = false;\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\nexport default mailReducer;\r\n","import axios from 'src/utils/axios';\r\n\r\nexport const GET_LABELS = '@mail/get-labels';\r\nexport const GET_MAILS = '@mail/get-mails';\r\nexport const GET_MAIL = '@mail/get-mail';\r\nexport const OPEN_SIDEBAR = '@mail/open-sidebar';\r\nexport const CLOSE_SIDEBAR = '@mail/close-sidebar';\r\nexport const OPEN_NEW_MESSAGE = '@mail/open-new-message';\r\nexport const CLOSE_NEW_MESSAGE = '@mail/close-new-message';\r\n\r\nexport function getLabels() {\r\n const request = axios.get('/api/mail/labels');\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: GET_LABELS,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function getMails(params) {\r\n const request = axios.get('/api/mail/mails', {\r\n params\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: GET_MAILS,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function getMail(mailId) {\r\n const request = axios.get('/api/mail/mail', {\r\n params: {\r\n mailId\r\n }\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: GET_MAIL,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function openSidebar() {\r\n return {\r\n type: OPEN_SIDEBAR\r\n };\r\n}\r\n\r\nexport function closeSidebar() {\r\n return {\r\n type: CLOSE_SIDEBAR\r\n };\r\n}\r\n\r\nexport function openNewMessage() {\r\n return {\r\n type: OPEN_NEW_MESSAGE\r\n };\r\n}\r\n\r\nexport function closeNewMessage() {\r\n return {\r\n type: CLOSE_NEW_MESSAGE\r\n };\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport produce from 'immer';\r\nimport _ from 'lodash';\r\nimport {\r\n GET_BOARD,\r\n CREATE_LIST,\r\n UPDATE_LIST,\r\n CLEAR_LIST,\r\n DELETE_LIST,\r\n CREATE_CARD,\r\n UPDATE_CARD,\r\n MOVE_CARD,\r\n DELETE_CARD,\r\n ADD_COMMENT,\r\n ADD_CHECKLIST,\r\n UPDATE_CHECKLIST,\r\n DELETE_CHECKLIST,\r\n ADD_CHECK_ITEM,\r\n UPDATE_CHECK_ITEM,\r\n DELETE_CHECK_ITEM\r\n} from 'src/actions/kanbanActions';\r\nimport objFromArray from 'src/utils/objFromArray';\r\n\r\nconst initialState = {\r\n isLoaded: false,\r\n lists: {\r\n byId: {},\r\n allIds: []\r\n },\r\n cards: {\r\n byId: {},\r\n allIds: []\r\n },\r\n members: {\r\n byId: {},\r\n allIds: []\r\n }\r\n};\r\n\r\nconst kanbanReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case GET_BOARD: {\r\n const { board } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.lists.byId = objFromArray(board.lists);\r\n draft.lists.allIds = Object.keys(draft.lists.byId);\r\n draft.cards.byId = objFromArray(board.cards);\r\n draft.cards.allIds = Object.keys(draft.cards.byId);\r\n draft.members.byId = objFromArray(board.members);\r\n draft.members.allIds = Object.keys(draft.members.byId);\r\n draft.isLoaded = true;\r\n });\r\n }\r\n\r\n case CREATE_LIST: {\r\n const { list } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.lists.byId[list.id] = list;\r\n draft.lists.allIds.push(list.id);\r\n });\r\n }\r\n\r\n case UPDATE_LIST: {\r\n const { list } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n _.merge(draft.lists.byId[list.id], list);\r\n });\r\n }\r\n\r\n case CLEAR_LIST: {\r\n const { listId } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n const { cardIds } = draft.lists.byId[listId];\r\n\r\n draft.lists.byId[listId].cardIds = [];\r\n draft.cards.byId = _.omit(draft.cards.byId, cardIds);\r\n _.pull(draft.cards.allIds, ...cardIds);\r\n });\r\n }\r\n\r\n case DELETE_LIST: {\r\n const { listId } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.lists.byId = _.omit(draft.lists.byId, listId);\r\n _.pull(draft.lists.allIds, listId);\r\n });\r\n }\r\n\r\n case CREATE_CARD: {\r\n const { card } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.cards.byId[card.id] = card;\r\n draft.cards.allIds.push(card.id);\r\n draft.lists.byId[card.listId].cardIds.push(card.id);\r\n });\r\n }\r\n\r\n case UPDATE_CARD: {\r\n const { card } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n _.merge(draft.cards.byId[card.id], card);\r\n });\r\n }\r\n\r\n case MOVE_CARD: {\r\n const { cardId, position, listId } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n const { listId: sourceListId } = draft.cards.byId[cardId];\r\n\r\n // Remove card from source list\r\n _.pull(draft.lists.byId[sourceListId].cardIds, cardId);\r\n\r\n // If listId arg exists, it means that\r\n // we have to add the card to the new list\r\n if (listId) {\r\n draft.cards.byId[cardId].listId = listId;\r\n draft.lists.byId[listId].cardIds.splice(position, 0, cardId);\r\n } else {\r\n draft.lists.byId[sourceListId].cardIds.splice(position, 0, cardId);\r\n }\r\n });\r\n }\r\n\r\n case DELETE_CARD: {\r\n const { cardId } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n const { listId } = draft.cards.byId[cardId];\r\n\r\n draft.cards.byId = _.omit(draft.cards.byId, cardId);\r\n _.pull(draft.cards.allIds, cardId);\r\n _.pull(draft.lists.byId[listId].cardIds, cardId);\r\n });\r\n }\r\n\r\n case ADD_COMMENT: {\r\n const { comment } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.cards.byId[comment.cardId].comments.push(comment);\r\n });\r\n }\r\n\r\n case ADD_CHECKLIST: {\r\n const { cardId, checklist } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n draft.cards.byId[cardId].checklists.push(checklist);\r\n });\r\n }\r\n\r\n case UPDATE_CHECKLIST: {\r\n const { cardId, checklist } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n const card = draft.cards.byId[cardId];\r\n\r\n card.checklists = _.map(card.checklists, (_checklist) => {\r\n if (_checklist.id === checklist.id) {\r\n return checklist;\r\n }\r\n\r\n return _checklist;\r\n });\r\n });\r\n }\r\n\r\n case DELETE_CHECKLIST: {\r\n const { cardId, checklistId } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n const card = draft.cards.byId[cardId];\r\n\r\n card.checklists = _.reject(card.checklists, { id: checklistId });\r\n });\r\n }\r\n\r\n case ADD_CHECK_ITEM: {\r\n const { cardId, checklistId, checkItem } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n const card = draft.cards.byId[cardId];\r\n\r\n _.assign(card, {\r\n checklists: _.map(card.checklists, (checklist) => {\r\n if (checklist.id === checklistId) {\r\n _.assign(checklist, {\r\n checkItems: [...checklist.checkItems, checkItem]\r\n });\r\n }\r\n\r\n return checklist;\r\n })\r\n });\r\n });\r\n }\r\n\r\n case UPDATE_CHECK_ITEM: {\r\n const {\r\n cardId,\r\n checklistId,\r\n checkItemId,\r\n checkItem\r\n } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n const card = draft.cards.byId[cardId];\r\n\r\n card.checklists = _.map(card.checklists, (checklist) => {\r\n if (checklist.id === checklistId) {\r\n _.assign(checklist, {\r\n checkItems: _.map(checklist.checkItems, (_checkItem) => {\r\n if (_checkItem.id === checkItemId) {\r\n return checkItem;\r\n }\r\n\r\n return _checkItem;\r\n })\r\n });\r\n }\r\n\r\n return checklist;\r\n });\r\n });\r\n }\r\n\r\n case DELETE_CHECK_ITEM: {\r\n const { cardId, checklistId, checkItemId } = action.payload;\r\n\r\n return produce(state, (draft) => {\r\n const card = draft.cards.byId[cardId];\r\n\r\n card.checklists = _.map(card.checklists, (checklist) => {\r\n if (checklist.id === checklistId) {\r\n _.assign(checklist, {\r\n checkItems: _.reject(checklist.checkItems, { id: checkItemId })\r\n });\r\n }\r\n\r\n return checklist;\r\n });\r\n });\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\nexport default kanbanReducer;\r\n","import axios from 'src/utils/axios';\r\n\r\nexport const GET_BOARD = '@kanban/get-board';\r\nexport const CREATE_LIST = '@kanban/create-list';\r\nexport const UPDATE_LIST = '@kanban/update-list';\r\nexport const CLEAR_LIST = '@kanban/clear-list';\r\nexport const DELETE_LIST = '@kanban/delete-list';\r\nexport const CREATE_CARD = '@kanban/create-card';\r\nexport const UPDATE_CARD = '@kanban/update-card';\r\nexport const MOVE_CARD = '@kanban/move-card';\r\nexport const DELETE_CARD = '@kanban/delete-card';\r\nexport const ADD_COMMENT = '@kanban/add-comment';\r\nexport const ADD_CHECKLIST = '@kanban/add-checklist';\r\nexport const UPDATE_CHECKLIST = '@kanban/update-checklist';\r\nexport const DELETE_CHECKLIST = '@kanban/delete-checklist';\r\nexport const ADD_CHECK_ITEM = '@kanban/add-check-item';\r\nexport const UPDATE_CHECK_ITEM = '@kanban/update-check-item';\r\nexport const DELETE_CHECK_ITEM = '@kanban/delete-check-item';\r\n\r\nexport function getBoard() {\r\n const request = axios.get('/api/kanban/board');\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: GET_BOARD,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function createList(name) {\r\n const request = axios.post('/api/kanban/board/lists/new', {\r\n name\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: CREATE_LIST,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function updateList(listId, update) {\r\n const request = axios.post('/api/kanban/board/list/update', {\r\n listId,\r\n update\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: UPDATE_LIST,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function clearList(listId) {\r\n const request = axios.post('/api/kanban/board/lists/clear', {\r\n listId\r\n });\r\n\r\n return (dispatch) => {\r\n request.then(() => dispatch({\r\n type: CLEAR_LIST,\r\n payload: {\r\n listId\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function deleteList(listId) {\r\n const request = axios.post('/api/kanban/board/lists/remove', {\r\n listId\r\n });\r\n\r\n return (dispatch) => {\r\n request.then(() => dispatch({\r\n type: DELETE_LIST,\r\n payload: {\r\n listId\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function createCard(listId, name) {\r\n const request = axios.post('/api/kanban/board/cards/new', {\r\n listId,\r\n name\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: CREATE_CARD,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function updateCard(cardId, update) {\r\n const request = axios.post('/api/kanban/board/cards/update', {\r\n cardId,\r\n update\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: UPDATE_CARD,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function moveCard(cardId, position, listId) {\r\n const request = axios.post('/api/kanban/board/cards/move', {\r\n cardId,\r\n position,\r\n listId\r\n });\r\n\r\n return (dispatch) => {\r\n request.then(() => dispatch({\r\n type: MOVE_CARD,\r\n payload: {\r\n cardId,\r\n position,\r\n listId\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function deleteCard(cardId) {\r\n const request = axios.post('/api/kanban/board/cards/remove', {\r\n cardId\r\n });\r\n\r\n return (dispatch) => {\r\n request.then(() => dispatch({\r\n type: DELETE_CARD,\r\n payload: {\r\n cardId\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function addComment(userId, cardId, message) {\r\n const request = axios.post('/api/kanban/board/cards/comments', {\r\n userId,\r\n cardId,\r\n message\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: ADD_COMMENT,\r\n payload: response.data\r\n }));\r\n };\r\n}\r\n\r\nexport function addChecklist(cardId, name) {\r\n const request = axios.post('/api/kanban/board/checklists/new', {\r\n cardId,\r\n name\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: ADD_CHECKLIST,\r\n payload: {\r\n cardId,\r\n ...response.data\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function updateChecklist(cardId, checklistId, update) {\r\n const request = axios.post('/api/kanban/board/checklists/update', {\r\n cardId,\r\n checklistId,\r\n update\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: UPDATE_CHECKLIST,\r\n payload: {\r\n cardId,\r\n checklistId,\r\n ...response.data\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function deleteChecklist(cardId, checklistId) {\r\n const request = axios.post('/api/kanban/board/checklists/remove', {\r\n cardId,\r\n checklistId\r\n });\r\n\r\n return (dispatch) => {\r\n request.then(() => dispatch({\r\n type: DELETE_CHECKLIST,\r\n payload: {\r\n cardId,\r\n checklistId\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function addCheckItem(cardId, checklistId, name) {\r\n const request = axios.post('/api/kanban/board/checkitems/new', {\r\n cardId,\r\n checklistId,\r\n name\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: ADD_CHECK_ITEM,\r\n payload: {\r\n cardId,\r\n checklistId,\r\n ...response.data\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function updateCheckItem(cardId, checklistId, checkItemId, update) {\r\n const request = axios.post('/api/kanban/board/checkitems/update', {\r\n cardId,\r\n checklistId,\r\n checkItemId,\r\n update\r\n });\r\n\r\n return (dispatch) => {\r\n request.then((response) => dispatch({\r\n type: UPDATE_CHECK_ITEM,\r\n payload: {\r\n cardId,\r\n checklistId,\r\n checkItemId,\r\n ...response.data\r\n }\r\n }));\r\n };\r\n}\r\n\r\nexport function deleteCheckItem(cardId, checklistId, checkItemId) {\r\n const request = axios.post('/api/kanban/board/checkitems/remove', {\r\n cardId,\r\n checklistId,\r\n checkItemId\r\n });\r\n\r\n return (dispatch) => {\r\n request.then(() => dispatch({\r\n type: DELETE_CHECK_ITEM,\r\n payload: {\r\n cardId,\r\n checklistId,\r\n checkItemId\r\n }\r\n }));\r\n };\r\n}\r\n","import { combineReducers } from 'redux';\r\nimport { reducer as formReducer } from 'redux-form';\r\nimport accountReducer from './accountReducer';\r\nimport notificationsReducer from './notificationsReducer';\r\nimport chatReducer from './chatReducer';\r\nimport mailReducer from './mailReducer';\r\nimport kanbanReducer from './kanbanReducer';\r\n\r\nconst rootReducer = combineReducers({\r\n account: accountReducer,\r\n notifications: notificationsReducer,\r\n chat: chatReducer,\r\n mail: mailReducer,\r\n kanban: kanbanReducer,\r\n form: formReducer\r\n});\r\n\r\nexport default rootReducer;\r\n","/* eslint-disable import/prefer-default-export */\r\nimport { applyMiddleware, createStore, compose } from 'redux';\r\nimport thunkMiddleware from 'redux-thunk';\r\nimport { composeWithDevTools } from 'redux-devtools-extension';\r\nimport { createLogger } from 'redux-logger';\r\nimport rootReducer from 'src/reducers';\r\nimport { ENABLE_REDUX_LOGGER } from 'src/config';\r\n\r\nconst loggerMiddleware = createLogger();\r\n\r\nexport function configureStore(preloadedState = {}) {\r\n const middlewares = [thunkMiddleware];\r\n\r\n if (ENABLE_REDUX_LOGGER) {\r\n middlewares.push(loggerMiddleware);\r\n }\r\n\r\n const middlewareEnhancer = composeWithDevTools(\r\n applyMiddleware(...middlewares)\r\n );\r\n\r\n const enhancers = [middlewareEnhancer];\r\n const composedEnhancers = compose(...enhancers);\r\n\r\n const store = createStore(rootReducer, preloadedState, composedEnhancers);\r\n\r\n return store;\r\n}\r\n","import React from 'react';\r\nimport {\r\n Box,\r\n CircularProgress,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport Logo from 'src/components/Logo';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n alignItems: 'center',\r\n backgroundColor: theme.palette.background.default,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n justifyContent: 'center',\r\n left: 0,\r\n padding: theme.spacing(3),\r\n position: 'fixed',\r\n top: 0,\r\n width: '100%',\r\n zIndex: 2000,\r\n // background: '#f4f6f8 url(https://omnicommerce.ar/wp-content/uploads/2021/04/Omnicommerce_logo_web_dark.png)',\r\n // transform: 'rotate(30deg)',\r\n // left: '-100%',\r\n // width: '1000%',\r\n // height: '1000%',\r\n },\r\n logo: {\r\n width: 200,\r\n maxWidth: '100%'\r\n }\r\n}));\r\n\r\nfunction SlashScreen() {\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default SlashScreen;\r\n","import React, {\r\n useEffect,\r\n useState\r\n} from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport SplashScreen from 'src/components/SplashScreen';\r\nimport { setUserData, logout } from 'src/actions/accountActions';\r\nimport authService from 'src/services/authService';\r\n\r\nfunction Auth({ children }) {\r\n const dispatch = useDispatch();\r\n const [isLoading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n const initAuth = async () => {\r\n authService.setAxiosInterceptors({\r\n onLogout: () => dispatch(logout())\r\n });\r\n\r\n authService.handleAuthentication();\r\n\r\n if (authService.isAuthenticated()) {\r\n const user = await authService.loginInWithToken();\r\n\r\n await dispatch(setUserData(user));\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n initAuth();\r\n }, [dispatch]);\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n return children;\r\n}\r\n\r\nAuth.propTypes = {\r\n children: PropTypes.any\r\n};\r\n\r\nexport default Auth;\r\n","import React, {\r\n useState,\r\n useEffect\r\n} from 'react';\r\nimport Cookies from 'js-cookie';\r\nimport {\r\n Box,\r\n Button,\r\n Link,\r\n Portal,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.common.black,\r\n color: theme.palette.common.white,\r\n maxWidth: 600,\r\n position: 'fixed',\r\n bottom: 0,\r\n left: 0,\r\n margin: theme.spacing(3),\r\n padding: theme.spacing(3),\r\n outline: 'none',\r\n zIndex: 2000\r\n },\r\n action: {\r\n backgroundColor: theme.palette.common.white,\r\n color: theme.palette.common.black,\r\n }\r\n}));\r\n\r\nfunction CookiesNotification() {\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleClose = () => {\r\n Cookies.set('consent', 'true');\r\n setOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n const consent = Cookies.get('consent');\r\n\r\n if (!consent) {\r\n // We dont want CookieNotice right now\r\n // setOpen(true);\r\n }\r\n }, []);\r\n\r\n if (!open) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n We use Cookies to ensure that we give you the best experience on our\r\n website. Read our\r\n {' '}\r\n \r\n Privacy Policy\r\n \r\n .\r\n \r\n \r\n \r\n I Agree\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default CookiesNotification;\r\n","import { useContext } from 'react';\r\nimport SettingsContext from 'src/context/SettingsContext';\r\n\r\nexport default function useSettings() {\r\n const context = useContext(SettingsContext);\r\n\r\n return context;\r\n}\r\n","import React, {\r\n useState,\r\n useEffect\r\n} from 'react';\r\nimport Cookies from 'js-cookie';\r\nimport {\r\n Box,\r\n Button,\r\n Paper,\r\n Portal,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport useSettings from 'src/hooks/useSettings';\r\nimport { THEMES } from 'src/constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n maxWidth: 420,\r\n position: 'fixed',\r\n top: 0,\r\n right: 0,\r\n margin: theme.spacing(3),\r\n outline: 'none',\r\n zIndex: 2000,\r\n padding: theme.spacing(2)\r\n }\r\n}));\r\n\r\nfunction SettingsNotification() {\r\n const classes = useStyles();\r\n const [isOpen, setOpen] = useState(false);\r\n const { saveSettings } = useSettings();\r\n\r\n const handleSwitch = () => {\r\n saveSettings({ theme: THEMES.LIGHT });\r\n Cookies.set('settingsUpdated', 'true');\r\n setOpen(false);\r\n };\r\n\r\n const handleClose = () => {\r\n Cookies.set('settingsUpdated', 'true');\r\n setOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n const settingsUpdated = Cookies.get('settingsUpdated');\r\n\r\n if (!settingsUpdated) {\r\n // setOpen(true);\r\n }\r\n }, []);\r\n\r\n if (!isOpen) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Settings Updated\r\n \r\n \r\n We automatically updated your settings.\r\n You change the settings any time from your dashboard settings.\r\n \r\n \r\n \r\n \r\n Switch\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SettingsNotification;\r\n","import React from 'react';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nconst GA_MEASUREMENT_ID = process.env.REACT_APP_GA_MEASUREMENT_ID;\r\n\r\nfunction GoogleAnalytics() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default GoogleAnalytics;\r\n","import { useEffect } from 'react';\r\nimport { useLocation } from 'react-router';\r\n\r\nfunction ScrollReset() {\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [location.pathname]);\r\n\r\n return null;\r\n}\r\n\r\nexport default ScrollReset;\r\n","export const softShadows = [\r\n 'none',\r\n '0 0 0 1px rgba(63,63,68,0.05), 0 1px 2px 0 rgba(63,63,68,0.15)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 2px 2px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 8px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 5px 8px -2px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 12px -4px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 12px -4px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 16px -4px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 16px -4px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 8px 18px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 9px 18px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 10px 20px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 11px 20px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 12px 22px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 13px 22px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 14px 24px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 16px 28px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 18px 30px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 20px 32px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 22px 34px -8px rgba(0,0,0,0.25)',\r\n '0 0 1px 0 rgba(0,0,0,0.31), 0 24px 36px -8px rgba(0,0,0,0.25)'\r\n];\r\n\r\nexport const strongShadows = [\r\n 'none',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 2px 2px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 8px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 5px 8px -2px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 12px -4px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 12px -4px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 16px -4px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 16px -4px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 8px 18px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 9px 18px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 10px 20px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 11px 20px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 12px 22px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 13px 22px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 14px 24px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 16px 28px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 18px 30px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 20px 32px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 22px 34px -8px rgba(0,0,0,0.50)',\r\n '0 0 1px 0 rgba(0,0,0,0.70), 0 24px 36px -8px rgba(0,0,0,0.50)'\r\n];\r\n","/* eslint-disable no-console */\r\n/* eslint-disable import/prefer-default-export */\r\nimport _ from 'lodash';\r\nimport { colors, createMuiTheme, responsiveFontSizes } from '@material-ui/core';\r\nimport typography from './typography';\r\nimport { softShadows, strongShadows } from './shadows';\r\nimport { THEMES } from '../constants';\r\n\r\nconst baseConfig = {\r\n direction: 'ltr',\r\n typography,\r\n overrides: {\r\n MuiLinearProgress: {\r\n root: {\r\n borderRadius: 3,\r\n overflow: 'hidden'\r\n }\r\n },\r\n MuiListItemIcon: {\r\n root: {\r\n minWidth: 32\r\n }\r\n },\r\n MuiChip: {\r\n root: {\r\n backgroundColor: 'rgba(0,0,0,0.075)'\r\n }\r\n }\r\n }\r\n};\r\n\r\nconst themeConfigs = [\r\n {\r\n name: THEMES.LIGHT,\r\n overrides: {\r\n MuiInputBase: {\r\n input: {\r\n '&::placeholder': {\r\n opacity: 1,\r\n color: colors.blueGrey[600]\r\n }\r\n }\r\n }\r\n },\r\n palette: {\r\n type: 'light',\r\n action: {\r\n active: colors.blueGrey[600]\r\n },\r\n // background: {\r\n // default: colors.common.white,\r\n // dark: '#f4f6f8',\r\n // paper: colors.common.white\r\n // },\r\n background: {\r\n default: colors.blueGrey[700],\r\n dark: colors.grey[50],\r\n paper: colors.common.white\r\n },\r\n primary: {\r\n // main: colors.indigo[600]\r\n main: colors.blueGrey[900],\r\n },\r\n secondary: {\r\n main: '#5850EC',\r\n main: colors.blueGrey[700],\r\n main: '#006699',\r\n },\r\n text: {\r\n primary: colors.blueGrey[900],\r\n secondary: colors.blueGrey[600]\r\n }\r\n },\r\n shadows: softShadows\r\n },\r\n {\r\n name: THEMES.DARK,\r\n palette: {\r\n type: 'dark',\r\n action: {\r\n active: 'rgba(255, 255, 255, 0.54)',\r\n hover: 'rgba(255, 255, 255, 0.04)',\r\n selected: 'rgba(255, 255, 255, 0.08)',\r\n disabled: 'rgba(255, 255, 255, 0.26)',\r\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\r\n focus: 'rgba(255, 255, 255, 0.12)'\r\n },\r\n background: {\r\n default: '#282C34',\r\n dark: '#1c2025',\r\n paper: '#282C34'\r\n },\r\n primary: {\r\n // main: '#2a85ff'\r\n main : colors.blueGrey[900]\r\n },\r\n secondary: {\r\n main: '#8a85ff'\r\n },\r\n text: {\r\n primary: '#e6e5e8',\r\n secondary: '#adb0bb'\r\n }\r\n },\r\n shadows: strongShadows\r\n },\r\n {\r\n name: THEMES.OMNICOMMERCE,\r\n palette: {\r\n type: 'light',\r\n action: {\r\n active: 'rgba(255, 255, 255, 0.54)',\r\n hover: 'rgba(255, 255, 255, 0.04)',\r\n selected: 'rgba(255, 255, 255, 0.08)',\r\n disabled: 'rgba(255, 255, 255, 0.26)',\r\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\r\n focus: 'rgba(255, 255, 255, 0.12)'\r\n },\r\n background: {\r\n default: colors.blueGrey[700],\r\n dark: colors.grey[50],\r\n paper: colors.common.white\r\n },\r\n primary: {\r\n main: colors.lightBlue[700],\r\n main: colors.blueGrey[900]\r\n },\r\n secondary: {\r\n main: '#5850EC'\r\n },\r\n text: {\r\n primary: colors.blueGrey[900],\r\n secondary: colors.blueGrey[600]\r\n }\r\n },\r\n shadows: softShadows\r\n },\r\n {\r\n name: THEMES.UNICORN,\r\n palette: {\r\n type: 'dark',\r\n action: {\r\n active: 'rgba(255, 255, 255, 0.54)',\r\n hover: 'rgba(255, 255, 255, 0.04)',\r\n selected: 'rgba(255, 255, 255, 0.08)',\r\n disabled: 'rgba(255, 255, 255, 0.26)',\r\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\r\n focus: 'rgba(255, 255, 255, 0.12)'\r\n },\r\n background: {\r\n default: '#2a2d3d',\r\n dark: '#222431',\r\n paper: '#2a2d3d'\r\n },\r\n primary: {\r\n main: '#a67dff'\r\n },\r\n secondary: {\r\n main: '#a67dff'\r\n },\r\n text: {\r\n primary: '#f6f5f8',\r\n secondary: '#9699a4'\r\n }\r\n },\r\n shadows: strongShadows\r\n }\r\n];\r\n\r\nexport function createTheme(settings = {}) {\r\n let themeConfig = themeConfigs.find((theme) => theme.name === settings.theme);\r\n\r\n if (!themeConfig) {\r\n console.warn(new Error(`The theme ${settings.theme} is not valid`));\r\n [themeConfig] = themeConfigs;\r\n }\r\n\r\n let theme = createMuiTheme(\r\n _.merge(\r\n {},\r\n baseConfig,\r\n themeConfig,\r\n { direction: settings.direction }\r\n )\r\n );\r\n\r\n if (settings.responsiveFontSizes) {\r\n theme = responsiveFontSizes(theme);\r\n }\r\n\r\n return theme;\r\n}\r\n","import React, { useState } from 'react';\r\nimport { NavLink as RouterLink } from 'react-router-dom';\r\nimport clsx from 'clsx';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Button,\r\n Collapse,\r\n ListItem,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n item: {\r\n display: 'block',\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n itemLeaf: {\r\n display: 'flex',\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n button: {\r\n color: theme.palette.text.secondary,\r\n padding: '10px 8px',\r\n justifyContent: 'flex-start',\r\n textTransform: 'none',\r\n letterSpacing: 0,\r\n width: '100%'\r\n },\r\n buttonLeaf: {\r\n color: theme.palette.text.secondary,\r\n padding: '10px 8px',\r\n justifyContent: 'flex-start',\r\n textTransform: 'none',\r\n letterSpacing: 0,\r\n width: '100%',\r\n fontWeight: theme.typography.fontWeightRegular,\r\n '&.depth-0': {\r\n '& $title': {\r\n fontWeight: theme.typography.fontWeightMedium\r\n }\r\n }\r\n },\r\n icon: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginRight: theme.spacing(1)\r\n },\r\n title: {\r\n marginRight: 'auto'\r\n },\r\n active: {\r\n color: theme.palette.secondary.main,\r\n '& $title': {\r\n fontWeight: theme.typography.fontWeightMedium\r\n },\r\n '& $icon': {\r\n color: theme.palette.secondary.main\r\n }\r\n }\r\n}));\r\n\r\nfunction NavItem({\r\n title,\r\n href,\r\n depth,\r\n children,\r\n icon: Icon,\r\n className,\r\n open: openProp,\r\n info: Info,\r\n newScreen,\r\n ...rest\r\n}) {\r\n const classes = useStyles();\r\n const [open, setOpen] = useState(openProp);\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n let paddingLeft = 8;\r\n\r\n if (depth > 0) {\r\n paddingLeft = 32 + 8 * depth;\r\n }\r\n\r\n const style = { paddingLeft };\r\n\r\n if (children) {\r\n return (\r\n \r\n \r\n {Icon && (\r\n \r\n )}\r\n \r\n {title}\r\n \r\n {open ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {Icon && (\r\n \r\n )}\r\n \r\n {title}\r\n \r\n {Info && }\r\n \r\n \r\n );\r\n}\r\n\r\nNavItem.propTypes = {\r\n children: PropTypes.node,\r\n className: PropTypes.string,\r\n depth: PropTypes.number.isRequired,\r\n href: PropTypes.string,\r\n icon: PropTypes.any,\r\n info: PropTypes.any,\r\n open: PropTypes.bool,\r\n title: PropTypes.string.isRequired\r\n};\r\n\r\nNavItem.defaultProps = {\r\n open: false\r\n};\r\n\r\nexport default NavItem;\r\n","/* eslint-disable no-use-before-define */\n/* eslint-disable react/prop-types */\nimport React, { useEffect } from 'react';\nimport { useLocation, matchPath } from 'react-router';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport PropTypes from 'prop-types';\nimport {\n Avatar,\n Box,\n Chip,\n Divider,\n Drawer,\n Hidden,\n Link,\n List,\n ListSubheader,\n Typography,\n makeStyles\n} from '@material-ui/core';\n// import ReceiptIcon from '@material-ui/icons/ReceiptOutlined';\nimport {\n // Briefcase as BriefcaseIcon,\n // Calendar as CalendarIcon,\n ShoppingCart as ShoppingCartIcon,\n Folder as FolderIcon,\n BarChart as BarChartIcon,\n // Lock as LockIcon,\n // UserPlus as UserPlusIcon,\n // Shield as ShieldIcon,\n // AlertCircle as AlertCircleIcon,\n // Trello as TrelloIcon,\n // User as UserIcon,\n // Layout as LayoutIcon,\n // Edit as EditIcon,\n // DollarSign as DollarSignIcon,\n // Mail as MailIcon,\n // MessageCircle as MessageCircleIcon,\n PieChart as PieChartIcon,\n Archive as ArchiveIcon,\n Share2 as ShareIcon,\n Users as UsersIcon,\n MessageCircle as MessageCircleIcon,\n} from 'react-feather';\nimport Logo from 'src/components/Logo';\nimport NavItem from './NavItem';\n\nconst navConfig = [\n {\n subheader: 'Reportes',\n items: [\n {\n title: 'Dashboard',\n icon: PieChartIcon,\n href: '/app/dashboard'\n },\n {\n title: 'Archivos',\n icon: ArchiveIcon,\n href: '/app/archivos'\n },\n // {\n // title: 'Dashboard Alternative',\n // icon: BarChartIcon,\n // href: '/app/reports/dashboard-alternative'\n // }\n ]\n },\n {\n subheader: 'Management',\n items: [\n {\n title: 'Usuarios',\n icon: UsersIcon,\n role: 'Administrador',\n href: '/app/usuarios',\n items: [\n {\n title: 'Listar Usuarios',\n href: '/app/usuarios'\n },\n // {\n // title: 'View Customer',\n // href: '/app/management/customers/1'\n // },\n // {\n // title: 'Edit Customer',\n // href: '/app/management/customers/1/edit'\n // }\n ]\n },\n {\n title: 'Clientes',\n icon: UsersIcon,\n href: '/app/clientes',\n items: [\n {\n title: 'Listar Clientes',\n href: '/app/clientes'\n },\n // {\n // title: 'View Customer',\n // href: '/app/management/customers/1'\n // },\n // {\n // title: 'Edit Customer',\n // href: '/app/management/customers/1/edit'\n // }\n ]\n },\n {\n title: 'Productos',\n icon: ShoppingCartIcon,\n href: '/app/catalogo/productos',\n items: [\n {\n title: 'Listar Productos',\n href: '/app/catalogo/productos'\n },\n // {\n // title: 'Create Product',\n // href: '/app/management/products/create'\n // }\n ]\n },\n {\n title: 'Pedidos',\n icon: FolderIcon,\n href: '/app/pedidos',\n items: [\n {\n title: 'Listar Pedidos',\n href: '/app/pedidos'\n },\n {\n title: 'Crear Pedido',\n href: '/app/pedidos/create'\n },\n // {\n // title: 'View Order',\n // href: '/app/management/orders/1'\n // }\n ]\n },\n // {\n // title: 'Invoices',\n // icon: ReceiptIcon,\n // href: '/app/management/invoices',\n // items: [\n // {\n // title: 'List Invoices',\n // href: '/app/management/invoices'\n // },\n // {\n // title: 'View Invoice',\n // href: '/app/management/invoices/1'\n // }\n // ]\n // }\n ]\n },\n {\n subheader: 'Conectividad',\n items: [\n {\n title: 'Conexiones',\n href: '/app/conexiones',\n icon: ShareIcon,\n items: [\n {\n title: 'Listar Conexiones',\n href: '/app/conexiones'\n },\n // {\n // title: 'Feed',\n // href: '/app/social/feed'\n // }\n ]\n },\n // {\n // title: <>\n // Chat\n // \n // ,\n // //chat icon\n // icon: MessageCircleIcon,\n // href: '/chat/',\n // newScreen: true\n // },\n /*{\n title: 'Kanban',\n href: '/app/kanban',\n icon: TrelloIcon\n },\n {\n title: 'Mail',\n href: '/app/mail',\n icon: MailIcon,\n info: () => (\n \n )\n },*/\n {\n title: <>\n Chat\n \n ,\n //chat icon\n icon: MessageCircleIcon,\n href: '/app/chat',\n // newScreen: true\n }\n // {\n // title: 'Chat',\n // href: '/app/chat',\n // icon: MessageCircleIcon,\n // info: () => (\n // \n // )\n // },\n /*\n {\n title: 'Calendar',\n href: '/app/calendar',\n icon: CalendarIcon\n },*/\n ]\n },\n /*{\n subheader: 'Auth',\n items: [\n {\n title: 'Login',\n href: '/login-unprotected',\n icon: LockIcon\n },\n {\n title: 'Register',\n href: '/register-unprotected',\n icon: UserPlusIcon\n },\n {\n title: 'Login: Guest Protected',\n href: '/login',\n icon: ShieldIcon\n },\n {\n title: 'Register: Guest Protected',\n href: '/register',\n icon: ShieldIcon\n }\n ]\n },\n {\n subheader: 'Pages',\n href: '/app/pages',\n items: [\n {\n title: 'Account',\n href: '/app/account',\n icon: UserIcon\n },\n {\n title: 'Error',\n href: '/404',\n icon: AlertCircleIcon\n },\n {\n title: 'Pricing',\n href: '/pricing',\n icon: DollarSignIcon\n }\n ]\n },\n {\n subheader: 'Extra',\n items: [\n {\n title: 'Charts',\n href: '/app/extra/charts',\n icon: BarChartIcon,\n items: [\n {\n title: 'Apex Charts',\n href: '/app/extra/charts/apex'\n }\n ]\n },\n {\n title: 'Forms',\n href: '/app/extra/forms',\n icon: EditIcon,\n items: [\n {\n title: 'Formik',\n href: '/app/extra/forms/formik'\n },\n {\n title: 'Redux Forms',\n href: '/app/extra/forms/redux'\n },\n ]\n },\n {\n title: 'Editors',\n href: '/app/extra/editors',\n icon: LayoutIcon,\n items: [\n {\n title: 'DraftJS Editor',\n href: '/app/extra/editors/draft-js'\n },\n {\n title: 'Quill Editor',\n href: '/app/extra/editors/quill'\n }\n ]\n }\n ]\n }*/\n];\n\nfunction renderNavItems({ items, ...rest }) {\n return (\n \n {items.reduce(\n (acc, item) => reduceChildRoutes({ acc, item, ...rest }),\n []\n )}\n \n );\n}\n\nfunction reduceChildRoutes({\n acc,\n pathname,\n item,\n depth = 0\n}) {\n const key = item.title + depth;\n\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\n return acc;\n}\n\nconst useStyles = makeStyles(() => ({\n mobileDrawer: {\n width: 256\n },\n desktopDrawer: {\n width: 256,\n top: 64,\n height: 'calc(100% - 64px)'\n },\n avatar: {\n // cursor: 'pointer',\n width: 64,\n height: 64\n }\n}));\n\nfunction NavBar({ openMobile, onMobileClose, }) {\n const classes = useStyles();\n const location = useLocation();\n const { user } = useSelector((state) => state.account);\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line\n }, [location.pathname]);\n\n const content = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {`${user.nombre} ${user.apellido || ''}`}\n \n \n {user.email}\n \n \n \n \n \n {navConfig.map((config) => {\n /*\n const filtrarItems = (items) => {\n return items.map((item) => {\n if (item.role && !user.rol.nombre === item.role) {\n return null;\n }\n if (item.items) {\n item.items = filtrarItems(item.items);\n }\n return items;\n }).filter(Boolean);\n }\n */\n\n const filtrarItems = (items) => {\n return items.filter((item) => !item.role || user.rol.nombre === item.role)\n }\n\n config.items = filtrarItems(config.items);\n \n return \n {config.subheader}\n \n )}\n >\n {renderNavItems({ items: config.items, pathname: location.pathname })}\n \n })}\n \n \n \n \n \n En qué podemos ayudarte?\n \n \n Asistencia rápida\n
\n \n Enviar sugerencias\n \n
\n \n
\n \n );\n\n return (\n <>\n \n \n {content}\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;","import React, {\n useRef,\n useState\n} 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(1)\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 {`${account.user.nombre} ${account.user.apellido}`}\n \n \n \n \n \n Cuenta\n \n \n Salir\n \n \n \n );\n}\n\nexport default Account;\n","import React, {\r\n useRef,\r\n useState,\r\n useEffect\r\n} from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport moment from 'moment';\r\nimport {\r\n useDispatch,\r\n useSelector\r\n} from 'react-redux';\r\nimport {\r\n Avatar,\r\n Box,\r\n IconButton,\r\n Link,\r\n List,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemText,\r\n Popover,\r\n SvgIcon,\r\n Tooltip,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport { Users as UsersIcon } from 'react-feather';\r\nimport OnlineIndicator from 'src/components/OnlineIndicator';\r\nimport { getContacts } from 'src/actions/chatActions';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n popover: {\r\n width: 320,\r\n padding: theme.spacing(2)\r\n },\r\n list: {\r\n padding: theme.spacing(1, 3)\r\n },\r\n listItemText: {\r\n marginRight: theme.spacing(1)\r\n },\r\n lastActivity: {\r\n whiteSpace: 'nowrap'\r\n }\r\n}));\r\n\r\nfunction Contacts() {\r\n const classes = useStyles();\r\n const ref = useRef(null);\r\n const dispatch = useDispatch();\r\n const { contacts } = useSelector((state) => state.chat);\r\n const [isOpen, setOpen] = useState(false);\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n dispatch(getContacts());\r\n }, [dispatch]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Contacts\r\n \r\n \r\n \r\n {contacts.allIds.map((contactId) => {\r\n const contact = contacts.byId[contactId];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {contact.name}\r\n \r\n )}\r\n />\r\n {contact.isActive ? (\r\n \r\n ) : (\r\n \r\n {moment(contact.lastActivity).fromNow()}\r\n \r\n )}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Contacts;\r\n","/* eslint-disable linebreak-style */\r\nimport React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ConfettiRaw from 'react-confetti';\r\nimport useWindowSize from 'src/hooks/useWindowSize';\r\n\r\nconst MAX_CONFETTI = 180 * 4;\r\nconst TOTAL_TIME = 5000;\r\n\r\nfunction Confetti({ activar }) {\r\n\r\n const { width, height } = useWindowSize();\r\n\r\n const [numberOfPieces, setNumberOfPieces] = React.useState(0);\r\n\r\n useEffect(() => {\r\n if (activar) {\r\n setTimeout(() => {\r\n setNumberOfPieces(MAX_CONFETTI);\r\n }, 50);\r\n setTimeout(() => {\r\n setNumberOfPieces(0);\r\n }, TOTAL_TIME);\r\n } else {\r\n setNumberOfPieces(0);\r\n }\r\n }, [activar]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nConfetti.propTypes = {\r\n activar: PropTypes.any\r\n};\r\n\r\nexport default Confetti;\r\n","/* eslint-disable linebreak-style */\r\nimport { useEffect, useState } from \"react\";\r\n\r\n\r\nexport default function useWindowSize() {\r\n // Initialize state with undefined width/height so server and client renders match\r\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\r\n const [windowSize, setWindowSize] = useState({\r\n width: undefined,\r\n height: undefined,\r\n });\r\n useEffect(() => {\r\n // Handler to call on window resize\r\n function handleResize() {\r\n // Set window width/height to state\r\n setWindowSize({\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n });\r\n }\r\n // Add event listener\r\n window.addEventListener('resize', handleResize);\r\n // Call handler right away so state gets updated with initial window size\r\n handleResize();\r\n // Remove event listener on cleanup\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []); // Empty array ensures that effect is only run on mount\r\n return windowSize;\r\n}\r\n","/* eslint-disable prefer-object-spread */\r\n/* eslint-disable linebreak-style */\r\nimport React, {\r\n useRef,\r\n useState,\r\n useEffect\r\n} from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport {\r\n useDispatch,\r\n useSelector\r\n} from 'react-redux';\r\nimport {\r\n Avatar,\r\n Badge,\r\n Box,\r\n Button,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemAvatar,\r\n ListItemText,\r\n Popover,\r\n SvgIcon,\r\n Tooltip,\r\n Typography,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n Chip,\r\n makeStyles,\r\n styled\r\n} from '@material-ui/core';\r\nimport {\r\n AlertCircle as AlertCircleIcon,\r\n AlertTriangle as AlertTriangleIcon,\r\n PauseCircle as PauseCircleIcon,\r\n X as XIcon,\r\n Eye as EyeIcon,\r\n EyeOff as EyeOffIcon,\r\n CloudOff as CloudOffIcon,\r\n CloudLightning as CloudLightningIcon,\r\n CloudRain as CloudRainIcon,\r\n Bell as BellIcon,\r\n Filter as FilterIcon,\r\n Package as PackageIcon,\r\n MessageCircle as MessageIcon,\r\n ShoppingCart as ShoppingCartIcon,\r\n Truck as TruckIcon,\r\n Shuffle as ShuffleIcon,\r\n X as CloseIcon,\r\n CheckCircle as CheckCircleIcon,\r\n Trash2 as TrashFullIcon\r\n} from 'react-feather';\r\nimport {\r\n archiveNotification,\r\n getNotifications,\r\n marcarNotification\r\n} from 'src/actions/notificationsActions';\r\nimport OneSignal from 'react-onesignal';\r\nimport Confetti from 'src/components/Confetti';\r\n\r\nconst preventDefault = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.nativeEvent.stopImmediatePropagation();\r\n};\r\n\r\nconst iconsMap = {\r\n default: { class: 'notify_info', icon: BellIcon },\r\n default_info: { class: 'notify_info', icon: BellIcon },\r\n default_success: { class: 'notify_success', icon: CheckCircleIcon },\r\n default_warning: { class: 'notify_warning', icon: AlertTriangleIcon },\r\n default_error: { class: 'notify_error', icon: AlertCircleIcon },\r\n default_critical: { class: 'notify_critical', icon: AlertCircleIcon },\r\n 'productos.syncro.in.exito': { class: 'notifyInfo', icon: CheckCircleIcon },\r\n 'producto.syncro.in.fallo': { class: 'notifyWarning', icon: AlertCircleIcon },\r\n\r\n 'producto.syncro.in.aviso.not-found': { class: 'notifyWarning', icon: PauseCircleIcon },\r\n 'producto.syncro.in.aviso.variant-not-found': { class: 'notifyWarning', icon: PauseCircleIcon },\r\n 'producto.syncro.in.aviso.multiple-sku-product': { class: 'notifyWarning', icon: ShuffleIcon },\r\n\r\n 'pedido.syncro.in.info.customer-email-error': { class: 'notifyWarning', icon: AlertTriangleIcon },\r\n 'pedido.syncro.in.info.cuit-erroneo': { class: 'notifyWarning', icon: AlertTriangleIcon },\r\n\r\n 'pedido.syncro.in.fallo.sku-missing': { class: 'notifyInfo', icon: FilterIcon },\r\n 'pedido.syncro.in.fallo.sku-mismatch': { class: 'notifyWarning', icon: TrashFullIcon },\r\n 'pedido.syncro.in.fallo.sku-mismatch-retry': { class: 'notifyWarning', icon: AlertCircleIcon },\r\n 'pedido.syncro.in.fallo.fecha-corte-threshold-exceeded': { class: 'notifyWarning', icon: TrashFullIcon },\r\n 'pedido.syncro.out.fallo': { class: 'notifyWarning', icon: AlertTriangleIcon },\r\n 'pedido.syncro.out.fallo.negative-stock': { class: 'notifyWarning', icon: PackageIcon },\r\n 'pedido.syncro.out.fallo.no-retry': { class: 'notifyProblem', icon: AlertCircleIcon },\r\n\r\n 'stock.syncro.in.exito': { class: 'notifyInfo', icon: CheckCircleIcon },\r\n 'stock.syncro.in.fallo': { class: 'notifyWarning', icon: AlertCircleIcon },\r\n 'stock.syncro.in.fallo.no-warehouse': { class: 'notifyProblem', icon: AlertCircleIcon },\r\n 'stock.syncro.in.fallo.no-prices-list': { class: 'notifyProblem', icon: AlertCircleIcon },\r\n 'stock.syncro.in.fallo.connection-failed': { class: 'notifyWarning', icon: CloudRainIcon },\r\n\r\n 'conexion.desactivada': { class: 'notifyProblem', icon: CloudOffIcon },\r\n 'conexion.reactivada': { class: 'notifySuccess', icon: CloudLightningIcon },\r\n\r\n 'customer-server.connection-failed': { class: 'notifyWarning', icon: CloudOffIcon },\r\n 'customer-server.self-hosted-api.error': { class: 'notifyProblem', icon: CloudLightningIcon },\r\n\r\n 'pedido.creado': { class: 'notifyInfo', icon: ShoppingCartIcon },\r\n new_message: { class: 'notifyInfo', icon: MessageIcon },\r\n item_shipped: { class: 'notifyInfo', icon: TruckIcon },\r\n};\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n badge: {\r\n marginTop: 10,\r\n marginRight: 5,\r\n backgroundColor: '#ee0000',\r\n },\r\n popover: {\r\n width: 420\r\n },\r\n icon: {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.secondary.contrastText\r\n },\r\n hide: {\r\n display: 'none',\r\n },\r\n /*notifyProblem: {\r\n color: '#ce6060',\r\n backgroundColor: 'transparent',\r\n },\r\n notifyWarning: {\r\n color: '#ff800d',\r\n backgroundColor: 'transparent',\r\n },\r\n notifySuccess: {\r\n color: '#00be90',\r\n backgroundColor: 'transparent',\r\n },\r\n notifyInfo: {\r\n color: '#ccc',\r\n backgroundColor: 'transparent',\r\n },*/\r\n notify_critical: {\r\n color: '#ce6060',\r\n backgroundColor: 'transparent',\r\n },\r\n notify_error: {\r\n color: '#ce6060',\r\n backgroundColor: 'transparent',\r\n },\r\n notify_warning: {\r\n color: '#ff800d',\r\n backgroundColor: 'transparent',\r\n },\r\n notify_success: {\r\n color: '#00be90',\r\n backgroundColor: 'transparent',\r\n },\r\n notify_info: {\r\n color: '#ccc',\r\n backgroundColor: 'transparent',\r\n }\r\n}));\r\n\r\nlet mostrarPrimeraNotificacion = false;\r\nfunction Notifications() {\r\n const classes = useStyles();\r\n //El [...state.notifications.notifications] es necesario para poder hacer el sort de pin \r\n const notifications = useSelector((state) => [...state.notifications.notifications]);\r\n\r\n const ref = useRef(null);\r\n const dispatch = useDispatch();\r\n const [isOpen, setOpen] = useState(false);\r\n const [isSubscribed, setSubscribed] = useState(null);\r\n\r\n const manejarDetalles = (detalles) => {\r\n //Si contiene HTML\r\n if (detalles.includes('<') && detalles.includes('>')) {\r\n return
;\r\n }\r\n return `\\n\\nMás info: \\n${detalles}`\r\n }\r\n\r\n const account = useSelector((state) => state.account);\r\n\r\n const [openNotification, setOpenNotification] = React.useState(false);\r\n\r\n const [activarConfeti, setActivarConfeti] = useState(0);\r\n\r\n const handleClickOpenNotification = (notificationObject) => {\r\n if (notificationObject.metadata.confetti) {\r\n setActivarConfeti(activarConfeti + 1);\r\n }\r\n setOpenNotification(notificationObject);\r\n dispatch(marcarNotification(notificationObject.id, 1));\r\n };\r\n\r\n const handleCloseNotification = () => {\r\n setOpenNotification(false);\r\n setActivarConfeti(0);\r\n };\r\n const handleArchiveNotification = (e, notificationObject) => {\r\n\r\n preventDefault(e)\r\n\r\n dispatch(archiveNotification(notificationObject.id));\r\n };\r\n const handleVistaNotification = (e, notificationObject) => {\r\n preventDefault(e)\r\n dispatch(marcarNotification(notificationObject.id, !notificationObject.vista));\r\n };\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n OneSignal.isPushNotificationsEnabled()\r\n .then(r => {\r\n setSubscribed(r)\r\n })\r\n .catch(e => console.warn('Error al obtener el estado de las notificaciones push'))\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const registerForPushNotifications = () => {\r\n OneSignal.registerForPushNotifications()\r\n .then(r => {\r\n OneSignal.isPushNotificationsEnabled()\r\n .then(r => {\r\n setSubscribed(r)\r\n })\r\n .catch(e => console.warn('Error al obtener el estado de las notificaciones push'))\r\n })\r\n .catch(e => {\r\n console.log(e)\r\n })\r\n }\r\n\r\n setTimeout(() => {\r\n OneSignal.isPushNotificationsEnabled()\r\n .then(r => {\r\n setSubscribed(r)\r\n })\r\n .catch(e => console.warn('Error al obtener el estado de las notificaciones push'))\r\n }, 10000);\r\n\r\n useEffect(() => {\r\n setInterval(() => {\r\n if (account.user) {\r\n dispatch(getNotifications());\r\n }\r\n }, 60000);\r\n dispatch(getNotifications());\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n if (!mostrarPrimeraNotificacion && notifications.length) {\r\n \r\n mostrarPrimeraNotificacion = true;\r\n const notification = notifications.find((n) => n.metadata?.autoOpen && !n.vista);\r\n \r\n if (notification) {\r\n handleClickOpenNotification(notification);\r\n }\r\n }\r\n }, [notifications]);\r\n\r\n return (\r\n <>\r\n \r\n\r\n !notification.vista).length + (isSubscribed === false ? 1 : 0))}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Notificaciones\r\n \r\n \r\n \r\n { registerForPushNotifications() }}\r\n size=\"small\"\r\n color=\"secondary\"\r\n variant=\"contained\"\r\n endIcon={}\r\n >\r\n Activar las notificaciones\r\n \r\n \r\n {notifications.length === 0 ? (\r\n \r\n \r\n No hay notificaciones\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n {notifications.sort((a, b) => Number(b.pin) - Number(a.pin)).filter((notification) => !notification.archivada).map((notification) => {\r\n const Icon = (iconsMap[notification.codigo] && iconsMap[notification.codigo].icon) || iconsMap[`default_${notification.tipo}`].icon;\r\n\r\n if (notification.metadata?.topBar) {\r\n return null\r\n }\r\n\r\n return (\r\n handleClickOpenNotification(notification)}\r\n style={\r\n\r\n (notification.metadata.class?.includes('omnicommerce')\r\n ? {\r\n background: (notification.vista ? 'linear-gradient(45deg, #0856CB, #ffa4d8)' : 'transparent')\r\n }\r\n : {\r\n filter: (notification.vista ? 'opacity(0.65)' : ''),\r\n backgroundColor: (notification.vista ? '#f8f8f8' : 'transparent')\r\n }\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {`${notification.titulo} `}\r\n {notification.vista\r\n ? (\r\n \r\n )\r\n : ''\r\n }\r\n \r\n \r\n handleVistaNotification(e, notification)}\r\n >\r\n \r\n {\r\n notification.vista ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n handleArchiveNotification(e, notification)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n style={{ whiteSpace: 'pre-line' }}\r\n secondary={(\r\n\r\n \r\n {notification.texto}\r\n\r\n
\r\n \r\n \r\n {`${notification.fechaHoraLastFriendly[0].toUpperCase()}${notification.fechaHoraLastFriendly.substring(1)}`}\r\n \r\n \r\n \r\n {(notification.cantidad > 1 ? ` - Esto ha ocurrido ${notification.cantidad} veces` : '')}\r\n \r\n\r\n \r\n )}\r\n />\r\n\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n Marcar como leídas\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {openNotification.fechaHoraFriendly} - {openNotification.titulo}\r\n \r\n \r\n {\r\n (openNotification.metadata?.isHtml)\r\n ? (\r\n
\r\n )\r\n : (\r\n <>\r\n {openNotification.titulo}\r\n \r\n {'\\n'}\r\n {openNotification.texto}\r\n {(openNotification.detalles ? manejarDetalles(openNotification.detalles) : '')}\r\n {(openNotification.cantidad > 1 ? `\\n\\n Esto ha ocurrido ${openNotification.cantidad} veces.\\nLa primera vez fue ${openNotification.fechaHoraCompleteFriendly}.` : '')}\r\n {(typeof openNotification.metadata === 'object' ? `\\n\\nDatos adicionales: ${openNotification.metadataFriendly}` : '')}\r\n {('\\n')}\r\n {openNotification.url && (\r\n Link\r\n )}\r\n \r\n \r\n )\r\n }\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Notifications;\r\n","import React, { useState, useRef } from 'react';\r\nimport { capitalCase } from 'change-case';\r\nimport {\r\n Box,\r\n Button,\r\n FormControlLabel,\r\n IconButton,\r\n Popover,\r\n SvgIcon,\r\n Switch,\r\n TextField,\r\n Tooltip,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport { Settings as SettingsIcon } from 'react-feather';\r\nimport useSettings from 'src/hooks/useSettings';\r\nimport { THEMES } from 'src/constants';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n popover: {\r\n width: 320,\r\n padding: theme.spacing(2)\r\n }\r\n}));\r\n\r\nfunction Settings() {\r\n const classes = useStyles();\r\n const ref = useRef(null);\r\n const { settings, saveSettings } = useSettings();\r\n const [isOpen, setOpen] = useState(false);\r\n const [values, setValues] = useState({\r\n direction: settings.direction,\r\n responsiveFontSizes: settings.responsiveFontSizes,\r\n theme: settings.theme\r\n });\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleChange = (field, value) => {\r\n setValues({\r\n ...values,\r\n [field]: value\r\n });\r\n };\r\n\r\n const handleSave = () => {\r\n saveSettings(values);\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Preferencias\r\n \r\n \r\n handleChange('responsiveFontSizes', event.target.checked)}\r\n />\r\n )}\r\n label=\"Tamaño de fuentes responsive\"\r\n />\r\n \r\n \r\n handleChange('theme', event.target.value)}\r\n select\r\n SelectProps={{ native: true }}\r\n value={values.theme}\r\n variant=\"outlined\"\r\n >\r\n {Object.keys(THEMES).map((theme) => (\r\n \r\n {capitalCase(theme)}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n Guardar\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Settings;\r\n","/* eslint-disable linebreak-style */\r\nimport React, { useEffect } from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport {\r\n AppBar,\r\n Box,\r\n Hidden,\r\n IconButton,\r\n Toolbar,\r\n makeStyles,\r\n SvgIcon,\r\n Typography,\r\n Button\r\n} from '@material-ui/core';\r\nimport { Menu as MenuIcon } from 'react-feather';\r\nimport Logo from 'src/components/Logo';\r\nimport { THEMES } from 'src/constants';\r\nimport Account from './Account';\r\nimport Contacts from './Contacts';\r\nimport Notifications from './Notifications';\r\n// import Search from './Search';\r\nimport Settings from './Settings';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n archiveNotification\r\n} from 'src/actions/notificationsActions';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n zIndex: theme.zIndex.drawer + 100,\r\n ...theme.name === THEMES.LIGHT ? {\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.primary.main\r\n } : {},\r\n ...theme.name === THEMES.ONE_DARK ? {\r\n backgroundColor: theme.palette.background.default\r\n } : {},\r\n ...(process.env.ARGENTINA_FLAG ? {\r\n color: '#05c',\r\n backgroundColor: '#263238',\r\n background: 'url(https://t4.ftcdn.net/jpg/04/95/88/49/360_F_495884938_T7BeVBdGT1OC2nKUCp4iixLnaHKu3sBc.jpg) center no-repeat',\r\n backgroundSize: 'cover',\r\n } : {})\r\n },\r\n toolbar: {\r\n minHeight: 64\r\n }\r\n}));\r\n\r\nfunction TopBar({\r\n className,\r\n onMobileNavOpen,\r\n ...rest\r\n}) {\r\n const classes = useStyles();\r\n const notifications = useSelector((state) => [...state.notifications.notifications]);\r\n\r\n useEffect(() => {\r\n }, [notifications])\r\n\r\n //Saber si estoy en la pag de chat\r\n const location = window.location.pathname;\r\n const isChat = location.includes('chat');\r\n\r\n\r\n const dispatch = useDispatch();\r\n return (<>\r\n\r\n \r\n {\r\n notifications.length > 0 ? notifications.map((notification) => {\r\n if (!notification.metadata?.topBar || notification.archivada) return\r\n\r\n return (\r\n
\r\n\r\n \r\n {notification.titulo} \r\n {' - '}\r\n {(notification.metadata?.isHtml)\r\n ? (\r\n
\r\n )\r\n : {notification.texto} }\r\n\r\n\r\n \r\n {\r\n dispatch(archiveNotification(notification.id))\r\n }}\r\n >\r\n Descartar\r\n \r\n
)\r\n }) : (\r\n <>\r\n )\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n process.env.NODE_ENV !== 'production' ? (\r\n \r\n {/* postion in the middle*/}\r\n \r\n \r\n \r\n \r\n ) : <>\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nTopBar.propTypes = {\r\n className: PropTypes.string,\r\n onMobileNavOpen: PropTypes.func\r\n};\r\n\r\nexport default TopBar;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport NavBar from './NavBar';\r\nimport TopBar from './TopBar';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.dark,\r\n display: 'flex',\r\n height: '100%',\r\n overflow: 'hidden',\r\n width: '100%'\r\n },\r\n wrapper: {\r\n display: 'flex',\r\n flex: '1 1 auto',\r\n overflow: 'hidden',\r\n paddingTop: 64,\r\n [theme.breakpoints.up('lg')]: {\r\n paddingLeft: 256\r\n }\r\n },\r\n contentContainer: {\r\n display: 'flex',\r\n flex: '1 1 auto',\r\n overflow: 'hidden'\r\n },\r\n content: {\r\n flex: '1 1 auto',\r\n height: '100%',\r\n overflow: 'auto'\r\n }\r\n}));\r\n\r\nfunction DashboardLayout({ children }) {\r\n const classes = useStyles();\r\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\r\n\r\n return (\r\n
\r\n setMobileNavOpen(true)} />\r\n setMobileNavOpen(false)}\r\n openMobile={isMobileNavOpen}\r\n />\r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nDashboardLayout.propTypes = {\r\n children: PropTypes.any\r\n};\r\n\r\nexport default DashboardLayout;\r\n","import React from 'react';\r\nimport { NavLink as RouterLink } from 'react-router-dom';\r\nimport clsx from 'clsx';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Button,\r\n ListItem,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n item: {\r\n display: 'block',\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n itemLeaf: {\r\n display: 'flex',\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n button: {\r\n padding: '10px 8px',\r\n justifyContent: 'flex-start',\r\n textTransform: 'none',\r\n letterSpacing: 0,\r\n width: '100%'\r\n },\r\n buttonLeaf: {\r\n padding: '10px 8px',\r\n justifyContent: 'flex-start',\r\n textTransform: 'none',\r\n letterSpacing: 0,\r\n width: '100%',\r\n fontWeight: theme.typography.fontWeightRegular,\r\n '&.depth-0': {\r\n fontWeight: theme.typography.fontWeightMedium\r\n }\r\n },\r\n active: {\r\n color: theme.palette.secondary.main,\r\n fontWeight: theme.typography.fontWeightMedium,\r\n }\r\n}));\r\n\r\nfunction NavItem({\r\n title,\r\n href,\r\n depth,\r\n children,\r\n className,\r\n ...rest\r\n}) {\r\n const classes = useStyles();\r\n let paddingLeft = 8;\r\n\r\n if (depth > 0) {\r\n paddingLeft = 32 + 8 * depth;\r\n }\r\n\r\n const style = { paddingLeft };\r\n\r\n if (children) {\r\n return (\r\n \r\n \r\n {title}\r\n \r\n {children}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n );\r\n}\r\n\r\nNavItem.propTypes = {\r\n children: PropTypes.node,\r\n className: PropTypes.string,\r\n depth: PropTypes.number.isRequired,\r\n href: PropTypes.string,\r\n title: PropTypes.string.isRequired\r\n};\r\n\r\nexport default NavItem;\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable react/prop-types */\r\nimport React, { useEffect } from 'react';\r\nimport { useLocation } from 'react-router';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Box,\r\n Drawer,\r\n Hidden,\r\n List,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport Logo from 'src/components/Logo';\r\nimport NavItem from './NavItem';\r\n\r\nconst navItems = [\r\n {\r\n title: 'Welcome',\r\n href: '/docs/welcome'\r\n },\r\n {\r\n title: 'Getting Started',\r\n href: '/docs/getting-started'\r\n },\r\n {\r\n title: 'Environment Variables',\r\n href: '/docs/environment-variables'\r\n },\r\n {\r\n title: 'Deployment',\r\n href: '/docs/deployment'\r\n },\r\n {\r\n title: 'Analytics',\r\n href: '/docs/analytics'\r\n },\r\n {\r\n title: 'Api Calls',\r\n href: '/docs/api-calls'\r\n },\r\n {\r\n title: 'Authentication',\r\n href: '/docs/authentication'\r\n },\r\n {\r\n title: 'Routing',\r\n href: '/docs/routing'\r\n },\r\n {\r\n title: 'Settings',\r\n href: '/docs/settings'\r\n },\r\n {\r\n title: 'State Management',\r\n href: '/docs/state-management'\r\n },\r\n {\r\n title: 'Theming',\r\n href: '/docs/theming'\r\n },\r\n {\r\n title: 'Support',\r\n href: '/docs/support'\r\n },\r\n {\r\n title: 'Changelog',\r\n href: '/docs/changelog'\r\n }\r\n];\r\n\r\nfunction renderNavItems({ items, ...rest }) {\r\n return (\r\n \r\n {items.reduce(\r\n (acc, item) => reduceChildRoutes({ acc, item, ...rest }),\r\n []\r\n )}\r\n \r\n );\r\n}\r\n\r\nfunction reduceChildRoutes({\r\n acc,\r\n item,\r\n depth = 0\r\n}) {\r\n if (item.items) {\r\n acc.push(\r\n \r\n {renderNavItems({\r\n depth: depth + 1,\r\n items: item.items\r\n })}\r\n \r\n );\r\n } else {\r\n acc.push(\r\n \r\n );\r\n }\r\n\r\n return acc;\r\n}\r\n\r\nconst useStyles = makeStyles(() => ({\r\n mobileDrawer: {\r\n width: 256\r\n },\r\n desktopDrawer: {\r\n width: 256,\r\n top: 64,\r\n height: 'calc(100% - 64px)'\r\n }\r\n}));\r\n\r\nfunction NavBar({ openMobile, onMobileClose }) {\r\n const classes = useStyles();\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (openMobile && onMobileClose) {\r\n onMobileClose();\r\n }\r\n // eslint-disable-next-line\r\n }, [location.pathname]);\r\n\r\n const content = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderNavItems({ items: navItems })}\r\n \r\n \r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n {content}\r\n \r\n \r\n \r\n \r\n {content}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nNavBar.propTypes = {\r\n onMobileClose: PropTypes.func,\r\n openMobile: PropTypes.bool\r\n};\r\n\r\nexport default NavBar;\r\n","import React from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n AppBar,\r\n Box,\r\n Toolbar,\r\n Hidden,\r\n IconButton,\r\n Link,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport { Menu as MenuIcon } from 'react-feather';\r\nimport Logo from 'src/components/Logo';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n color: theme.palette.text.primary,\r\n boxShadow: 'none',\r\n borderBottom: `1px solid ${theme.palette.divider}`,\r\n zIndex: theme.zIndex.drawer + 100\r\n },\r\n toolbar: {\r\n height: 64\r\n },\r\n link: {\r\n fontWeight: theme.typography.fontWeightMedium\r\n }\r\n}));\r\n\r\nfunction TopBar({ onMobileNavOpen }) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Dashboard\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nTopBar.propTypes = {\r\n onMobileNavOpen: PropTypes.func\r\n};\r\n\r\nexport default TopBar;\r\n","\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Typography, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n h1: {\r\n marginTop: theme.spacing(6),\r\n marginBottom: theme.spacing(2)\r\n },\r\n h2: {\r\n marginTop: theme.spacing(6),\r\n marginBottom: theme.spacing(2)\r\n },\r\n h3: {\r\n marginTop: theme.spacing(6),\r\n marginBottom: theme.spacing(2)\r\n },\r\n h4: {\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(2)\r\n },\r\n h5: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n },\r\n h6: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nfunction Heading({\r\n children,\r\n variant,\r\n ...rest\r\n}) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {children}\r\n
\r\n );\r\n}\r\n\r\nHeading.propTypes = {\r\n children: PropTypes.any,\r\n variant: PropTypes.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])\r\n};\r\n\r\n\r\nexport default Heading;\r\n","import React from 'react';\r\nimport { Typography, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n marginBottom: theme.spacing(2),\r\n '& > a': {\r\n color: theme.palette.secondary.main\r\n }\r\n }\r\n}));\r\n\r\nfunction Paragraph(props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default Paragraph;\r\n","\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n marginLeft: theme.spacing(4),\r\n marginBottom: theme.spacing(2)\r\n }\r\n}));\r\n\r\nfunction List({\r\n variant: Component,\r\n children,\r\n ...rest\r\n}) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nList.propTypes = {\r\n children: PropTypes.any,\r\n variant: PropTypes.oneOf(['ul', 'ol'])\r\n};\r\n\r\nexport default List;\r\n","import React from 'react';\r\nimport { Typography, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {}\r\n}));\r\n\r\nfunction Paragraph(props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default Paragraph;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n paddingLeft: theme.spacing(2),\r\n paddingBottom: theme.spacing(1),\r\n paddingTop: theme.spacing(1),\r\n marginBottom: theme.spacing(2),\r\n borderLeft: `4px solid ${theme.palette.text.secondary}`,\r\n '& > p': {\r\n color: theme.palette.text.secondary,\r\n marginBottom: 0\r\n }\r\n }\r\n}));\r\n\r\nfunction Blockquote(props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default Blockquote;\r\n","import React from 'react';\r\nimport clsx from 'clsx';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {}\r\n}));\r\n\r\nexport default function Code({ className, ...rest }) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nCode.propTypes = {\r\n className: PropTypes.string.isRequired\r\n};\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {\r\n paddingLeft: 2,\r\n paddingRight: 2,\r\n color: '#1a1a1a',\r\n fontFamily: \"Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace\",\r\n fontSize: 14,\r\n backgroundColor: 'rgb(255,229,100)'\r\n }\r\n}));\r\n\r\nfunction CodeInline(props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default CodeInline;\r\n","import React from 'react';\r\nimport { Divider } from '@material-ui/core';\r\nimport Heading from './Heading';\r\nimport Paragraph from './Paragraph';\r\nimport List from './List';\r\nimport ListItem from './ListItem';\r\nimport Blockquote from './Blockquote';\r\nimport Code from './Code';\r\nimport InlineCode from './InlineCode';\r\n\r\nconst components = {\r\n h1: (props) => ,\r\n h2: (props) => ,\r\n h3: (props) => ,\r\n h4: (props) => ,\r\n h5: (props) => ,\r\n h6: (props) => ,\r\n ul: (props) => ,\r\n ol: (props) => ,\r\n hr: Divider,\r\n li: ListItem,\r\n p: Paragraph,\r\n blockquote: Blockquote,\r\n code: Code,\r\n inlineCode: InlineCode\r\n};\r\n\r\nexport default components;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { MDXProvider } from '@mdx-js/react';\r\nimport { Container, makeStyles } from '@material-ui/core';\r\nimport NavBar from './NavBar';\r\nimport TopBar from './TopBar';\r\nimport components from './mdx';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n wrapper: {\r\n backgroundColor: theme.palette.background.default,\r\n display: 'flex',\r\n height: '100%',\r\n overflow: 'hidden',\r\n paddingTop: 64,\r\n [theme.breakpoints.up('lg')]: {\r\n paddingLeft: 256\r\n }\r\n },\r\n contentContainer: {\r\n flex: '1 1 auto',\r\n overflow: 'auto'\r\n },\r\n content: {\r\n paddingBottom: 120\r\n }\r\n}));\r\n\r\nfunction DocsLayout({ children }) {\r\n const classes = useStyles();\r\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\r\n\r\n return (\r\n <>\r\n setMobileNavOpen(true)} />\r\n setMobileNavOpen(false)}\r\n openMobile={isMobileNavOpen}\r\n />\r\n
\r\n
\r\n \r\n \r\n {children}\r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nDocsLayout.propTypes = {\r\n children: PropTypes.any\r\n};\r\n\r\nexport default DocsLayout;\r\n","import React from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport clsx from 'clsx';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n AppBar,\r\n Box,\r\n Button,\r\n Divider,\r\n Toolbar,\r\n Hidden,\r\n Typography,\r\n Link,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport { APP_VERSION } from 'src/config';\r\nimport Logo from 'src/components/Logo';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default\r\n },\r\n toolbar: {\r\n height: 64\r\n },\r\n logo: {\r\n marginRight: theme.spacing(2)\r\n },\r\n link: {\r\n fontWeight: theme.typography.fontWeightMedium,\r\n '& + &': {\r\n marginLeft: theme.spacing(2)\r\n }\r\n },\r\n divider: {\r\n width: 1,\r\n height: 32,\r\n marginLeft: theme.spacing(2),\r\n marginRight: theme.spacing(2)\r\n }\r\n}));\r\n\r\nfunction TopBar({ className, ...rest }) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Version\r\n {' '}\r\n {APP_VERSION}\r\n \r\n \r\n \r\n \r\n Dashboard\r\n \r\n \r\n Documentation\r\n \r\n \r\n \r\n Get the kit\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nTopBar.propTypes = {\r\n className: PropTypes.string\r\n};\r\n\r\nexport default TopBar;\r\n","// or get from process.env.REACT_APP_{var} to handle PROD and DEV environments\r\nexport const APP_VERSION = '1.0.0';\r\nexport const API_BASE_URL = '/v1';\r\nexport const ENABLE_REDUX_LOGGER = false;\r\n\r\nexport default {};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport TopBar from './TopBar';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n display: 'flex',\r\n height: '100%',\r\n overflow: 'hidden',\r\n width: '100%'\r\n },\r\n wrapper: {\r\n display: 'flex',\r\n flex: '1 1 auto',\r\n overflow: 'hidden',\r\n paddingTop: 64\r\n },\r\n contentContainer: {\r\n display: 'flex',\r\n flex: '1 1 auto',\r\n overflow: 'hidden'\r\n },\r\n content: {\r\n flex: '1 1 auto',\r\n height: '100%',\r\n overflow: 'auto'\r\n }\r\n}));\r\n\r\nfunction MainLayout({ children }) {\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nMainLayout.propTypes = {\r\n children: PropTypes.any\r\n};\r\n\r\nexport default MainLayout;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport {\r\n Box,\r\n Container,\r\n Grid,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.dark,\r\n paddingTop: 200,\r\n paddingBottom: 200,\r\n [theme.breakpoints.down('md')]: {\r\n paddingTop: 60,\r\n paddingBottom: 60\r\n }\r\n },\r\n image: {\r\n perspectiveOrigin: 'left center',\r\n transformStyle: 'preserve-3d',\r\n perspective: 1500,\r\n '& > img': {\r\n maxWidth: '90%',\r\n height: 'auto',\r\n transform: 'rotateY(-35deg) rotateX(15deg)',\r\n backfaceVisibility: 'hidden',\r\n boxShadow: theme.shadows[16]\r\n }\r\n },\r\n shape: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n '& > img': {\r\n maxWidth: '90%',\r\n height: 'auto'\r\n }\r\n }\r\n}));\r\n\r\nfunction Hero({ className, ...rest }) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Introducing\r\n \r\n \r\n Omnicommerce\r\n \r\n \r\n \r\n A professional kit that comes with ready-to-use Material-UI© components\r\n developed with one common goal in mind, help you build faster & beautiful\r\n applications. Each component is fully customizable,\r\n responsive and easy to integrate.\r\n \r\n \r\n \r\n \r\n \r\n \r\n 30+\r\n \r\n \r\n Demo Pages\r\n \r\n \r\n \r\n \r\n UX\r\n \r\n \r\n Complete Flows\r\n \r\n \r\n \r\n \r\n 300+\r\n \r\n \r\n Components\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nHero.propTypes = {\r\n className: PropTypes.string\r\n};\r\n\r\nexport default Hero;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport {\r\n Avatar,\r\n Button,\r\n Box,\r\n Container,\r\n Grid,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n paddingTop: 128,\r\n paddingBottom: 128\r\n },\r\n avatar: {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.secondary.contrastText\r\n }\r\n}));\r\n\r\nfunction Features({ className, ...rest }) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n Explore Omnicommerce\r\n \r\n \r\n Not just a pretty face\r\n \r\n \r\n \r\n \r\n \r\n \r\n 01\r\n \r\n \r\n \r\n Complete User Flows\r\n \r\n \r\n Not just a set of tools, the package includes the most common use cases of\r\n user flows like User Management, Second Level Layout.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 02\r\n \r\n \r\n \r\n Support for Plugins\r\n \r\n \r\n The kit provides support for multiple third-party plugins right out of the box\r\n like Chart.js, Dropzone.js, Kanban Plugin and many more.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 03\r\n \r\n \r\n \r\n Designers, we got you\r\n \r\n \r\n We've included the source Sketch & Figma files to Plus &\r\n Extended licenses so you can get creative! Build layouts with confidence.\r\n \r\n \r\n Preview Design\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nFeatures.propTypes = {\r\n className: PropTypes.string\r\n};\r\n\r\nexport default Features;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport {\r\n Avatar,\r\n Box,\r\n Container,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.dark,\r\n paddingTop: 128,\r\n paddingBottom: 128\r\n },\r\n title: {\r\n fontWeight: theme.typography.fontWeightRegular\r\n }\r\n}));\r\n\r\nfunction Testimonials({ className, ...rest }) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n "Omnicommerce builds some of the best templates you can find for React.\r\n
\r\n They will save you time."\r\n \r\n \r\n \r\n \r\n \r\n Olivier Tassinari\r\n \r\n , co-creator of @MaterialUI\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nTestimonials.propTypes = {\r\n className: PropTypes.string\r\n};\r\n\r\nexport default Testimonials;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport {\r\n Box,\r\n Button,\r\n Container,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.default,\r\n paddingTop: 128,\r\n paddingBottom: 128\r\n },\r\n browseButton: {\r\n marginLeft: theme.spacing(2)\r\n }\r\n}));\r\n\r\nfunction CTA({ className, ...rest }) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n Ready to start building?\r\n \r\n \r\n Download today.\r\n \r\n \r\n \r\n Get the kit\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nCTA.propTypes = {\r\n className: PropTypes.string\r\n};\r\n\r\nexport default CTA;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport clsx from 'clsx';\r\nimport {\r\n Box,\r\n Container,\r\n Divider,\r\n Grid,\r\n Typography,\r\n makeStyles\r\n} from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.dark,\r\n paddingTop: theme.spacing(6),\r\n paddingBottom: theme.spacing(6),\r\n '& dt': {\r\n marginTop: theme.spacing(2)\r\n }\r\n }\r\n}));\r\n\r\nfunction FAQS({ className, ...rest }) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n Frequently asked questions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Technical & Licensing\r\n \r\n \r\n
\r\n \r\n What do we use for styling our components?\r\n \r\n
\r\n
\r\n \r\n We use Material-ui's hooks api as we think it’s\r\n the best way of avoiding clutter.\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n Are you providing support for setting up my project?\r\n \r\n
\r\n
\r\n \r\n Yes, we offer email support for all our customers &\r\n even skype meetings for our extended license customers.\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Design\r\n \r\n \r\n
\r\n \r\n Are the design files (sketch, figma) included in the Standard Package?\r\n \r\n
\r\n
\r\n \r\n No, we offer the design source file only to Standard Plus Sketch\r\n & Figma and Extended Package.\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nFAQS.propTypes = {\r\n className: PropTypes.string\r\n};\r\n\r\nexport default FAQS;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport Page from 'src/components/Page';\r\nimport Hero from './Hero';\r\nimport Features from './Features';\r\nimport Testimonials from './Testimonials';\r\nimport CTA from './CTA';\r\nimport FAQS from './FAQS';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {}\r\n}));\r\n\r\nfunction HomeView() {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default HomeView;\r\n","import React, { useEffect } from 'react';\r\nimport NProgress from 'nprogress';\r\nimport { Box, LinearProgress, makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n alignItems: 'center',\r\n backgroundColor: theme.palette.background.default,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n justifyContent: 'center',\r\n minHeight: '100%',\r\n padding: theme.spacing(3)\r\n }\r\n}));\r\n\r\nfunction LoadingScreen() {\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n NProgress.start();\r\n\r\n return () => {\r\n NProgress.done();\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default LoadingScreen;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\n\r\nfunction AuthGuard({ children }) {\r\n const account = useSelector((state) => state.account);\r\n\r\n if (!account.user) {\r\n return ;\r\n }\r\n\r\n return children;\r\n}\r\n\r\nAuthGuard.propTypes = {\r\n children: PropTypes.any\r\n};\r\n\r\nexport default AuthGuard;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Redirect } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\n\r\nfunction GuestGuard({ children }) {\r\n const account = useSelector((state) => state.account);\r\n if (account.user) {\r\n const queryParameters = new URLSearchParams(window.location.search)\r\n const redir = queryParameters.get(\"redir\")\r\n if (redir) {\r\n const rt = localStorage.getItem('refreshToken')\r\n window.location.href = `${redir.replace('[RT]',rt)}`;\r\n }\r\n else{\r\n return ;\r\n }\r\n }\r\n\r\n return children;\r\n}\r\n\r\nGuestGuard.propTypes = {\r\n children: PropTypes.any\r\n};\r\n\r\nexport default GuestGuard;\r\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nfunction AdminGuard({ children }) {\n const account = useSelector((state) => state.account);\n\n if (!account.user.rol.nombre === \"Administrador\") {\n return ;\n }\n\n return children;\n}\n\nAdminGuard.propTypes = {\n children: PropTypes.any\n};\n\nexport default AdminGuard;\n","/* eslint-disable linebreak-style */\n/* eslint-disable react/no-array-index-key */\nimport React, {\n lazy,\n Suspense,\n Fragment\n} from 'react';\nimport {\n Switch,\n Redirect,\n Route\n} from 'react-router-dom';\nimport DashboardLayout from 'src/layouts/DashboardLayout';\nimport DocsLayout from 'src/layouts/DocsLayout';\nimport MainLayout from 'src/layouts/MainLayout';\nimport HomeView from 'src/views/pages/HomeView';\nimport LoadingScreen from 'src/components/LoadingScreen';\nimport AuthGuard from 'src/components/AuthGuard';\nimport GuestGuard from 'src/components/GuestGuard';\nimport Logout from './views/auth/Logout';\nimport AdminGuard from './components/AdminGuard';\n\n\nconst routesConfig = [\n {\n exact: true,\n path: '/',\n component: () => \n },\n {\n exact: true,\n path: '/404',\n component: lazy(() => import('src/views/pages/Error404View'))\n },\n {\n exact: true,\n guard: GuestGuard,\n path: '/login',\n component: lazy(() => import('src/views/auth/LoginView'))\n },\n {\n path: '/logout',\n guard: GuestGuard,\n component: lazy(() => import('src/views/auth/Logout'))\n },\n {\n exact: true,\n path: '/login-unprotected',\n component: lazy(() => import('src/views/auth/LoginView'))\n },\n // {\n // exact: true,\n // guard: GuestGuard,\n // path: '/register',\n // component: lazy(() => import('src/views/auth/RegisterView'))\n // },\n // {\n // exact: true,\n // path: '/register-unprotected',\n // component: lazy(() => import('src/views/auth/RegisterView'))\n // },\n {\n path: '/app',\n guard: AuthGuard,\n layout: DashboardLayout,\n routes: [\n {\n exact: true,\n path: '/app',\n component: () => \n },\n {\n exact: true,\n path: '/app/account',\n component: lazy(() => import('src/views/pages/AccountView'))\n },\n {\n exact: true,\n path: '/app/dashboard',\n component: lazy(() => import('src/views/reports/DashboardView'))\n },\n {\n exact: true,\n path: '/app/dashboard-alternative',\n component: lazy(() => import('src/views/reports/DashboardAlternativeView'))\n },\n {\n exact: true,\n path: '/app/reports',\n component: () => \n },\n {\n exact: true,\n path: '/app/clientes',\n component: lazy(() => import('src/views/management/CustomerListView'))\n },\n {\n exact: true,\n path: '/app/clientes/:clienteId',\n component: lazy(() => import('src/views/management/CustomerDetailsView'))\n },\n {\n exact: true,\n path: '/app/clientes/:clienteId/editar',\n component: lazy(() => import('src/views/management/CustomerEditView'))\n },\n {\n exact: true,\n path: '/app/usuarios',\n guard: AdminGuard,\n component: lazy(() => import('src/views/management/UserListView'))\n },\n {\n exact: true,\n path: '/app/usuarios/:usuarioId',\n guard: AdminGuard,\n component: lazy(() => import('src/views/management/UserEditView'))\n },\n {\n exact: true,\n path: '/app/catalogo/productos',\n component: lazy(() => import('src/views/management/ProductListView'))\n },\n {\n exact: true,\n path: '/app/catalogo/productos/:productoId',\n component: lazy(() => import('src/views/management/ProductDetailsView'))\n },\n {\n exact: true,\n path: '/app/catalogo/productos/crear',\n component: lazy(() => import('src/views/management/ProductCreateView'))\n },\n {\n exact: true,\n path: '/app/pedidos',\n component: lazy(() => import('src/views/management/OrderListView'))\n },\n {\n exact: true,\n path: '/app/pedidos/create',\n component: lazy(() => import('src/views/management/OrderCreateView'))\n },\n {\n exact: true,\n path: '/app/pedidos/:pedidoId',\n component: lazy(() => import('src/views/management/OrderDetailsView'))\n },\n {\n exact: true,\n path: '/app/conexiones',\n component: lazy(() => import('src/views/management/ConnectionListView'))\n },\n {\n exact: true,\n path: '/app/conexiones/agregar',\n component: lazy(() => import('src/views/management/ConnectionAddView'))\n },\n {\n exact: true,\n path: '/app/conexiones/:conexionId',\n component: lazy(() => import('src/views/management/ConnectionEditView'))\n },\n {\n exact: true,\n path: '/app/archivos/:subDirectorios',\n component: lazy(() => import('src/views/management/ArchiveListView'))\n },\n {\n exact: false,\n path: '/app/archivos/',\n component: lazy(() => import('src/views/management/ArchiveListView'))\n },\n {\n exact: false,\n path: '/app/chat/',\n component: lazy(() => import('src/views/management/ChatListView'))\n },\n {\n exact: false,\n path: '/app/chatPlantilla/',\n component: lazy(() => import('src/views/chat/ChatView'))\n },\n \n // {\n // exact: true,\n // path: '/app/conexiones/:conexionId',\n // component: lazy(() => import('src/views/management/ConnectionDetailsView'))\n // },\n // {\n // exact: true,\n // path: '/app/management/invoices',\n // component: lazy(() => import('src/views/management/InvoiceListView'))\n // },\n // {\n // exact: true,\n // path: '/app/management/invoices/:invoiceId',\n // component: lazy(() => import('src/views/management/InvoiceDetailsView'))\n // },\n // {\n // exact: true,\n // path: '/app/management',\n // component: () => \n // },\n // {\n // exact: true,\n // path: '/app/calendar',\n // component: lazy(() => import('src/views/calendar/CalendarView'))\n // },\n // {\n // exact: true,\n // path: '/app/kanban',\n // component: lazy(() => import('src/views/kanban/KanbanView'))\n // },\n // {\n // exact: true,\n // path: [\n // '/app/chat/new',\n // '/app/chat/:threadKey'\n // ],\n // component: lazy(() => import('src/views/chat/ChatView'))\n // },\n // {\n // exact: true,\n // path: '/app/chat',\n // component: () => \n // },\n // {\n // exact: true,\n // path: [\n // '/app/mail/label/:customLabel/:mailId?',\n // '/app/mail/:systemLabel/:mailId?'\n // ],\n // component: lazy(() => import('src/views/mail/MailView'))\n // },\n // {\n // exact: true,\n // path: '/app/mail',\n // component: () => \n // },\n // {\n // exact: true,\n // path: '/app/projects/overview',\n // component: lazy(() => import('src/views/projects/OverviewView'))\n // },\n // {\n // exact: true,\n // path: '/app/projects/browse',\n // component: lazy(() => import('src/views/projects/ProjectBrowseView'))\n // },\n // {\n // exact: true,\n // path: '/app/projects/create',\n // component: lazy(() => import('src/views/projects/ProjectCreateView'))\n // },\n // {\n // exact: true,\n // path: '/app/projects/:id',\n // component: lazy(() => import('src/views/projects/ProjectDetailsView'))\n // },\n // {\n // exact: true,\n // path: '/app/projects',\n // component: () => \n // },\n // {\n // exact: true,\n // path: '/app/social/feed',\n // component: lazy(() => import('src/views/social/FeedView'))\n // },\n // {\n // exact: true,\n // path: '/app/social/profile',\n // component: lazy(() => import('src/views/social/ProfileView'))\n // },\n // {\n // exact: true,\n // path: '/app/social',\n // component: () => \n // },\n // {\n // exact: true,\n // path: '/app/extra/charts/apex',\n // component: lazy(() => import('src/views/extra/charts/ApexChartsView'))\n // },\n // {\n // exact: true,\n // path: '/app/extra/forms/formik',\n // component: lazy(() => import('src/views/extra/forms/FormikView'))\n // },\n // {\n // exact: true,\n // path: '/app/extra/forms/redux',\n // component: lazy(() => import('src/views/extra/forms/ReduxFormView'))\n // },\n // {\n // exact: true,\n // path: '/app/extra/editors/draft-js',\n // component: lazy(() => import('src/views/extra/editors/DraftEditorView'))\n // },\n // {\n // exact: true,\n // path: '/app/extra/editors/quill',\n // component: lazy(() => import('src/views/extra/editors/QuillEditorView'))\n // },\n {\n component: () => \n }\n ]\n },\n \n {\n path: '/docs',\n layout: DocsLayout,\n routes: [\n {\n exact: true,\n path: '/docs',\n component: () => \n },\n {\n exact: true,\n path: '/docs/welcome',\n component: lazy(() => import('src/views/docs/WelcomeView'))\n },\n {\n exact: true,\n path: '/docs/getting-started',\n component: lazy(() => import('src/views/docs/GettingStartedView'))\n },\n {\n exact: true,\n path: '/docs/environment-variables',\n component: lazy(() => import('src/views/docs/EnvironmentVariablesView'))\n },\n {\n exact: true,\n path: '/docs/deployment',\n component: lazy(() => import('src/views/docs/DeploymentView'))\n },\n {\n exact: true,\n path: '/docs/api-calls',\n component: lazy(() => import('src/views/docs/ApiCallsView'))\n },\n {\n exact: true,\n path: '/docs/analytics',\n component: lazy(() => import('src/views/docs/AnalyticsView'))\n },\n {\n exact: true,\n path: '/docs/authentication',\n component: lazy(() => import('src/views/docs/AuthenticationView'))\n },\n {\n exact: true,\n path: '/docs/routing',\n component: lazy(() => import('src/views/docs/RoutingView'))\n },\n {\n exact: true,\n path: '/docs/settings',\n component: lazy(() => import('src/views/docs/SettingsView'))\n },\n {\n exact: true,\n path: '/docs/state-management',\n component: lazy(() => import('src/views/docs/StateManagementView'))\n },\n {\n exact: true,\n path: '/docs/theming',\n component: lazy(() => import('src/views/docs/ThemingView'))\n },\n {\n exact: true,\n path: '/docs/support',\n component: lazy(() => import('src/views/docs/SupportView'))\n },\n {\n exact: true,\n path: '/docs/changelog',\n component: lazy(() => import('src/views/docs/ChangelogView'))\n },\n {\n component: () => \n }\n ]\n },\n {\n path: '*',\n layout: MainLayout,\n routes: [\n {\n exact: true,\n path: '/home',\n component: HomeView\n },\n {\n exact: true,\n path: '/pricing',\n component: lazy(() => import('src/views/pages/PricingView'))\n },\n {\n component: () => \n }\n ]\n }\n];\n\nconst renderRoutes = (routes) => (routes ? (\n }>\n \n {routes.map((route, i) => {\n const Guard = route.guard || Fragment;\n const Layout = route.layout || Fragment;\n const Component = route.component;\n\n return (\n (\n \n \n {route.routes\n ? renderRoutes(route.routes)\n : }\n \n \n )}\n />\n );\n })}\n \n \n) : null);\n\nfunction Routes() {\n return renderRoutes(routesConfig);\n}\n\nexport default Routes;\n","import React from 'react';\r\nimport {\r\n useDispatch,\r\n useSelector\r\n} from 'react-redux';\r\nimport { Router } from 'react-router-dom';\r\nimport { createBrowserHistory } from 'history';\r\nimport { create } from 'jss';\r\nimport rtl from 'jss-rtl';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { SnackbarProvider } from 'notistack';\r\nimport {\r\n createStyles,\r\n jssPreset,\r\n makeStyles,\r\n StylesProvider,\r\n ThemeProvider\r\n} from '@material-ui/core';\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport Auth from 'src/components/Auth';\r\nimport CookiesNotification from 'src/components/CookiesNotification';\r\nimport SettingsNotification from 'src/components/SettingsNotification';\r\nimport GoogleAnalytics from 'src/components/GoogleAnalytics';\r\nimport ScrollReset from 'src/components/ScrollReset';\r\nimport useSettings from 'src/hooks/useSettings';\r\nimport { createTheme } from 'src/theme';\r\nimport Routes from 'src/Routes';\r\nimport OneSignal, { useOneSignalSetup } from 'react-onesignal';\r\n\r\nconst history = createBrowserHistory();\r\nconst jss = create({ plugins: [...jssPreset().plugins, rtl()] });\r\n\r\nconst useStyles = makeStyles(() => createStyles({\r\n '@global': {\r\n '*': {\r\n boxSizing: 'border-box',\r\n margin: 0,\r\n padding: 0,\r\n },\r\n html: {\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n height: '100%',\r\n width: '100%'\r\n },\r\n body: {\r\n height: '100%',\r\n width: '100%'\r\n },\r\n '#root': {\r\n height: '100%',\r\n width: '100%'\r\n }\r\n }\r\n}));\r\n\r\nconst oneSignalEvents = [\r\n {\r\n listener: 'once',\r\n event: 'subscriptionChange',\r\n callback: (isSubscribed) => {\r\n if(isSubscribed){\r\n console.log('Usuario suscrito a OS push service')\r\n }\r\n },\r\n },\r\n];\r\n\r\nOneSignal.initialize('3401494b-d2c5-403d-af71-9b91bdd692b8', {\r\n allowLocalhostAsSecureOrigin : true,\r\n persistNotification : true,\r\n autoResubscribe : true,\r\n notifyButton: {\r\n enable: false,\r\n showCredit: false,\r\n }\r\n}, oneSignalEvents)\r\n\r\nfunction App() {\r\n useStyles();\r\n\r\n const { settings } = useSettings();\r\n const account = useSelector((state) => state.account);\r\n const [isTagged, setTagged] = React.useState(false);\r\n const [isOneSignalActive, setOneSignalActive] = React.useState(false);\r\n\r\n if(account.user && !isTagged && isOneSignalActive){\r\n console.log('Tagged user in Push Service')\r\n OneSignal.sendTags({ tenantKey : account.user.tenantKey, usuario : account.user.usuario })\r\n // OneSignal.deleteTag('plataforma')\r\n setTagged(true);\r\n }\r\n\r\n useOneSignalSetup(() => {\r\n setOneSignalActive(true);\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport 'react-perfect-scrollbar/dist/css/styles.css';\r\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\r\nimport 'react-quill/dist/quill.snow.css';\r\nimport 'nprogress/nprogress.css';\r\nimport 'src/assets/css/prism.css';\r\nimport 'src/mixins/chartjs';\r\nimport 'src/mixins/prismjs';\r\nimport 'src/mock';\r\nimport { enableES5 } from 'immer';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport * as serviceWorker from 'src/serviceWorker';\r\nimport { SettingsProvider } from 'src/context/SettingsContext';\r\nimport { configureStore } from 'src/store';\r\nimport { restoreSettings } from 'src/utils/settings';\r\nimport App from 'src/App';\r\n\r\nenableES5();\r\n\r\nconst store = configureStore();\r\nconst settings = restoreSettings();\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\nserviceWorker.register();\r\n","/* eslint-disable linebreak-style */\nimport jwtDecode from 'jwt-decode';\nimport axios from 'src/utils/axios';\nimport omc from 'src/utils/omnicommerce/omc-ready-to-use';\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 /*\n loginWithEmailAndPassword = (email, clave, refreshToken) => new Promise((resolve, reject) => {\n axios.post(process.env.REACT_APP_API_URL + '/usuarios/login', { email, clave })\n .then((response) => {\n if (response.data.status) {\n this.setSession(response.data.token, response.data.refreshToken);\n resolve(response.data.usuario);\n } else {\n reject(response.data.message);\n }\n })\n .catch((error) => {\n reject(error);\n });\n })\n renewToken = (refreshToken) => new Promise((resolve, reject) => {\n if(!refreshToken && this.getRefreshToken()){\n refreshToken = this.getRefreshToken()\n }\n if(refreshToken){\n axios.post(process.env.REACT_APP_API_URL + '/usuarios/login', { refreshToken : refreshToken })\n .then((response) => {\n if (response.data.status) {\n this.setSession(response.data.token, response.data.refreshToken);\n resolve(response.data.usuario);\n } else {\n reject(response.data.message);\n }\n })\n .catch((error) => {\n reject(error);\n });\n }\n else{\n reject({ status : false, message : 'Necesitas un refresthToken para loguearte vía Token'})\n }\n })\n\n loginInWithToken = () => new Promise((resolve, reject) => {\n axios.get(process.env.REACT_APP_API_URL + '/usuarios/me')\n .then((response) => {\n if (response.data.status) {\n resolve(response.data.data);\n } else {\n reject(response.data.message);\n }\n })\n .catch((error) => {\n reject(error);\n });\n })\n */\n\n loginWithEmailAndPassword = (email, clave, refreshToken) => new Promise((resolve, reject) => {\n omc.login(email, clave)\n .then((response) => {\n if (response.body.status) {\n this.setSession(response.body.token, response.body.refreshToken);\n omc.get('/usuarios/me/configs')\n .then((responseConfig) => {\n if (responseConfig.body.status) {\n this.setSessionConfig(responseConfig.body.data);\n } else {\n //reject(responseConfig.body.message);\n }\n })\n .catch((error) => {\n //reject(error.body);\n console.log(error);\n })\n .finally(() => {\n if(response.redir){\n const newHref = decodeURIComponent(response.redir.replace('[RT]',response.body.refreshToken));\n document.location.href = `${newHref}${newHref.includes('?') ? '&' : '?'}login=true`;\n }\n else{\n resolve(response.body.usuario);\n }\n });\n\n } else {\n reject(response.body);\n }\n })\n .catch((error) => {\n reject(error.body);\n });\n })\n\n renewToken = (refreshToken) => new Promise((resolve, reject) => {\n if(!refreshToken && this.getRefreshToken()){\n refreshToken = this.getRefreshToken()\n }\n if(refreshToken){\n omc.login(null, null, refreshToken)\n .then((response) => {\n if (response.body.status) {\n this.setSession(response.body.token, response.body.refreshToken);\n resolve(response.body.usuario);\n } else {\n reject(response.body);\n }\n })\n .catch((error) => {\n reject(error.body);\n });\n }\n else{\n reject({ status : false, message : 'Necesitas un refresth token para loguearte vía Token'})\n }\n })\n\n loginInWithToken = () => new Promise((resolve, reject) => {\n omc.get('/usuarios/me')\n .then((response) => {\n if (response.body.status) {\n resolve(response.body.data);\n } else {\n reject(response.body.message);\n }\n })\n .catch((error) => {\n reject(error);\n });\n })\n\n logout = () => {\n this.setSession(null);\n }\n\n setSession = (accessToken, refreshToken) => {\n if (accessToken) {\n localStorage.setItem('accessToken', accessToken);\n if(refreshToken){\n localStorage.setItem('refreshToken', refreshToken);\n }\n axios.defaults.headers.common['x-access-token'] = `${accessToken}`;\n } else {\n localStorage.removeItem('accessToken');\n localStorage.removeItem('refreshToken');\n delete axios.defaults.headers.common['x-access-token'];\n }\n }\n\n setSessionConfig = (config) => {\n if (config) {\n localStorage.setItem('config', config);\n } else {\n localStorage.removeItem('config');\n }\n }\n\n getConfig = () => localStorage.getItem('config');\n\n getAccessToken = () => localStorage.getItem('accessToken');\n\n getRefreshToken = () => localStorage.getItem('refreshToken');\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":""}