{"version":3,"sources":["redux/languageSwitcher/config.js","../public/favicon.png","shared/library/helpers/utility.js","shared/library/firebase/firebase.js","config/firebase.config.js","components/Notification.js","redux/siteDashboard/actions.js","components/ColorChooser.style.js","redux/languageSwitcher/actions.js","redux/themeSwitcher/actions.js","../public/images/posts/2.png","../public/images/posts/5.png","../public/images/posts/7.png","../public/images/posts/9.png","constants.js","config/site.config.js","shared/library/helpers/isIgnoredLoading.js","redux/auth/actions.js","redux/alert-events/actions.js","shared/library/helpers/history.js","route.constants.js","config/language.config.js","../public/images/flag/uk.svg","../public/images/flag/china.svg","../public/images/flag/spain.svg","../public/images/flag/france.svg","../public/images/flag/italy.svg","components/uielements/popover.js","../public/images/Plexus_Innovation_Logo.png","../public/images/profile-bg.jpg","../public/images/posts/1.png","../public/images/posts/3.png","shared/library/helpers/style_utils.js","../public/images/posts/4.png","../public/images/posts/6.png","../public/images/posts/8.png","../public/images/posts/10.png","../public/images/posts/11.png","shared/library/helpers/setAuthorizationToken.js","redux/themeSwitcher/config.js","../public/images/user1.png","shared/library/helpers/rtl.js","redux/app/actions.js","config/translation/entries/en-US.js","config/translation/entries/zh-Hans-CN.js","config/translation/entries/ar_SA.js","config/translation/entries/it_IT.js","config/translation/entries/es_ES.js","config/translation/index.js","config/translation/entries/fr_FR.js","AppProvider.js","shared/library/helpers/options.js","shared/library/helpers/isServer.js","redux/app/reducer.js","shared/library/helpers/url_sync.js","redux/articles/actions.js","redux/articles/reducers.js","redux/auth/reducer.js","redux/box/DemoBox.js","redux/box/actions.js","redux/box/reducer.js","redux/calendar/actions.js","redux/calendar/DemoEvents.js","redux/calendar/reducer.js","components/Feedback/Popconfirm.js","redux/card/config.js","redux/card/actions.js","redux/card/reducer.js","redux/chat/actions.js","redux/chat/reducers.js","redux/contacts/data.js","redux/contacts/actions.js","redux/contacts/reducer.js","redux/dashboard/reducer.js","redux/drawer/actions.js","redux/drawer/reducer.js","redux/dynamicEchart/reducer.js","redux/ecommerce/actions.js","redux/ecommerce/reducer.js","redux/githubSearch/actions.js","redux/githubSearch/reducers.js","redux/investors/actions.js","redux/investors/reducers.js","redux/invoice/config.js","redux/invoice/actions.js","redux/invoice/reducer.js","redux/languageSwitcher/reducer.js","redux/loading/actions.js","redux/loading/reducer.js","redux/mail/data.js","redux/mail/actions.js","redux/mail/reducer.js","redux/modal/actions.js","redux/modal/reducer.js","redux/notes/data.js","redux/notes/actions.js","redux/notes/reducer.js","redux/profile/actions.js","redux/profile/reducer.js","redux/scrumBoard/actions.js","redux/scrumBoard/reducer.js","redux/siteDashboard/reducer.js","redux/themeSwitcher/reducer.js","redux/todos/data.js","redux/todos/actions.js","redux/todos/reducer.js","redux/white-labling/actions.js","redux/white-labling/reducer.js","redux/youtubeSearch/actions.js","redux/youtubeSearch/reducers.js","redux/alert-events/reducer.js","redux/root-reducer.js","redux/auth/saga.js","redux/contacts/saga.js","redux/invoice/saga.js","redux/mail/saga.js","redux/notes/saga.js","redux/todos/saga.js","redux/ecommerce/fake.js","redux/ecommerce/config.js","redux/ecommerce/saga.js","redux/card/saga.js","shared/library/firebase/firebase.util.js","redux/chat/sagas.js","config/youtube_search.config.js","redux/youtubeSearch/sagas.js","redux/githubSearch/sagas.js","redux/articles/fakeData.js","redux/articles/sagas.js","redux/investors/fakeData.js","redux/investors/sagas.js","redux/scrumBoard/data.js","shared/library/helpers/localStorage.js","redux/scrumBoard/saga.js","redux/profile/profile.data.js","redux/profile/saga.js","redux/root-saga.js","redux/store.js","ErrorBoundary.js","router.js","shared/library/helpers/interceptors.js","shared/styles/globalStyle.js","app.js","serviceWorker.js","index.js","config/theme/default.js","config/theme/theme.config.js","config/theme/custom.js","components/uielements/styles/input.style.js","components/uielements/input.js","components/uielements/styles/button.style.js","components/uielements/button.js","redux/dashboard/actions.js"],"names":["config","defaultLanguage","language","options","languageId","locale","text","icon","englishLang","chineseLang","spanishLang","frenchLang","italianLang","getCurrentLanguage","lang","selecetedLanguage","forEach","module","exports","clearToken","localStorage","removeItem","getUserToken","currentCompanyId","userToken","JSON","parse","getItem","err","Map","handleSorter","a","b","localeCompare","IsStatusDisableCell","value","color","compareString","debouceTime","func","time","DebouceTime","debounce","toMoment","date","format","moment","firebaseApp","process","REACT_APP_PROD_API_KEY","REACT_APP_PROD_AUTH_DOMAIN","REACT_APP_PROD_DATABASE_URL","REACT_APP_PROD_PROJECT_ID","REACT_APP_PROD_STORAGE_BUCKET","REACT_APP_PROD_MESSAGING_SENDER_ID","REACT_APP_DEV_API_KEY","REACT_APP_DEV_AUTH_DOMAIN","REACT_APP_DEV_DATABASE_URL","REACT_APP_DEV_PROJECT_ID","REACT_APP_DEV_STORAGE_BUCKET","REACT_APP_DEV_MESSAGING_SENDER_ID","firebase","apps","length","app","initializeApp","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","auth","db","firestore","rsf","ReduxSagaFirebase","createNotification","type","message","description","baseUrl","actions","EXPORT_DATA","CLEAR_EXPORT_DATA","getSiteDashboardBasicInfo","siteId","axios","get","getSubSitesBySiteId","getNodes","getHubs","reading","dateRangeModel","post","readingMinMax","medicationFridgeReports","exportReading","model","exportReadingMinMax","checkPermission","dispatch","ColorChooserDropdown","styled","div","props","borderRadius","WithDirection","CHANGE_LANGUAGE","ACTIVATE_LANG_MODAL","switchActivation","changeLanguage","CHANGE_THEME","SWITCH_ACTIVATION","changeTheme","attribute","themeName","theme","getCurrentTheme","document","getElementsByClassName","style","backgroundColor","FormItemDecorator","validateTrigger","CheckboxFormItemDecorator","valuePropName","RangePickerFormItemDecorator","normalize","prevValue","allValues","RouteKeys","DASHBOARD","PLEXUS","MANAGEMENT","COMPANIES","AggregatorType","VALUE_MIN","VALUE_MAX","AVERAGE_MIN_MAX","AVERAGE_MIN","AVERAGE_MAX","VALUE_MIN_MAX","VALUE_MAX_MIN","PurseLogger","RAW_DATA","CONSUMPTINO_OVERTIME","CONSUMPTINO_PERID","ChartType","READING","MINMAX","PurseLoggerText","ConsumptionPeriod","FIFTEEN_MINUTES","HALF_HOUR","ONE_HOUR","QUARTER_DAY","HALF_DAY","ONE_DAY","PurseLoggerArray","ConsumptionPeriodArray","ManufactureOption","MessageStatus","PENDING","SENT","ERROR","RegExp","UPPERCASE","LOWERCASE","DIGITS","siteName","siteIcon","siteLogo","footerText","enableAnimatedRoute","apiUrl","google","analyticsKey","dashboard","isIgnoredLoading","bool","headers","CHECK_AUTHORIZATION","LOGIN_REQUEST","LOGOUT","MULTI_FACTOR_LOGIN_REQUEST","LOGIN_SUCCESS","LOGIN_ERROR","UPDATE_USERINFO","SWITCH_ACCESS_TOKEN","REFRESHING_TOKEN","DONE_REFRESHING_TOKEN","updateUserInfo","data","changePassword","forgotPassword","email","verifyToken","token","resetPassword","login","then","resp","requireMFV","setAuthorizationToken","accessToken","loggedTime","Date","toISOString","multiFactorVerify","resendOTP","switchCompany","companyId","getState","Promise","resolve","reject","switchAccessToken","Auth","userTokens","refreshToken","freshTokenPromise","catch","shadowCompany","shadowUser","userId","exitShadow","logout","appActions","clearMenu","alertEventActions","ALERT_EVENT_SEARCH","getNodeAlertData","id","getById","update","put","updateKeySearch","createBrowserHistory","forceRefresh","PUBLIC_ROUTE","LANDING","SIGN_IN","SIGN_UP","FORGET_PASSWORD","RESET_PASSWORD","PAGE_404","PAGE_500","PAGE_MAINTENANCE","AUTH0_CALLBACK","MULTI_FACTOR","EXPORTDATA","PRIVATE_ROUTE","REPORTS","SITEDASHBOARD","MAIL","SCRUM_BOARD","CALENDAR","GOOGLE_MAP","LEAFLET_MAP","TABLE","FORM","INPUT","EDITOR","FORM_WITH_STEPPERS","FORM_WITH_VALIDATION","PROGRESS","BUTTON","TAB","AUTOCOMPLETE","CHECKBOX","RADIOBOX","SELECT","TRANSFER","GRID_LAYOUT","NOTES","TODO","ARTICLES","INVESTORS","CONTACTS","ALERT","MODAL","MESSAGE","NOTIFICATION","POPCONFIRM","SPIN","SHUFFLE","AFFIX","BREADCRUMB","BACK_TO_TOP","DROPDOWN","OP_BADGE","OP_CARD","OP_CAROUSEL","OP_COLLAPSE","OP_TOOLTIP","RATING","TREE","OP_TAG","OP_TIMELINE","OP_POPOVER","GOOGLE_CHART","RECHARTS","MENU","REACT_CHART_2","PAGINATION","CARD","CART","CHECKOUT","SHOP","REACT_DATES","CODE_MIRROR","UPPY","DROPZONE","YOUTUBE_SEARCH","FRAPPE_CHART","INVOICE","CHAT","PROFILE","SWIPER_SLIDER","transition","timing","radius","boxShadow","shadow","defaults","common","customizedThemes","changeThemes","label","defaultTheme","themeConfig","buttonColor","textColor","topbarTheme","topbar","sidebarTheme","sidebar","undefined","layoutTheme","layout","selectedThemename","selecetedTheme","direction","window","getElementsByTagName","getAttribute","withDirection","Component","data-rtl","getView","width","newView","COLLPSE_CHANGE","COLLPSE_OPEN_DRAWER","CHANGE_OPEN_KEYS","TOGGLE_ALL","CHANGE_CURRENT","CLEAR_MENU","toggleCollapsed","toggleAll","height","view","collapsed","toggleOpenDrawer","changeOpenKeys","openKeys","changeCurrent","current","EnLang","messages","enMessages","antd","antdEn","appLocaleData","ZhLan","zhMessages","saLang","saMessages","antdSA","AppLocale","en","Enlang","zh","Zhlang","sa","Salang","it","Itlang","es","Eslang","fr","addLocaleData","AppProvider","children","useSelector","state","LanguageSwitcher","ThemeSwitcher","currentAppLocale","themes","key","leftIcon","withoutDashboard","isServer","preKeys","location","pathname","routes","split","lastRoute","parent","push","option","child","getParent","getDefaultPath","initState","innerWidth","innerHeight","openDrawer","LOAD_FROM_FIRESTORE","DOCUMENT","LOAD_FROM_FIRESTORE_SUCCESS","LOAD_FROM_FIRESTORE_ERROR","SAVE_INTO_FIRESTORE","SAVE_INTO_FIRESTORE_ERROR","RESET_FIRESTORE_DOCUMENTS","RESET_FIRESTORE_DOCUMENTS_ERROR","TOGGLE_FIRESTORE_HANDLE_MODAL","FIRESTORE_UPDATE","loadFromFireStore","loadFromFireStoreSuccess","payload","loadFromFireStoreError","error","saveIntoFireStore","actionName","toggleModal","saveIntoFireStoreError","resetFireStoreDocuments","resetFireStoreDocumentsError","isLoading","errorMessage","articles","modalActive","article","getTime","title","slug","excerpt","status","created_at","deleted_at","tokenType","expiresIn","role","isShadow","basicInfo","ReactComponenta3","allBox","uid","content","reactComponent","boxActions","DELETE_BOX","SAVE_BOX","deleteBox","saveBox","box","map","index","temp","lg","x","y","h","w","i","toString","md","sm","xs","xxs","size","reload","calendarActions","CALENDAR_VIEW","CALENDAR_EVENTS","changeView","changeEvents","events","allDay","start","end","datediff","diff","event","desc","add","toDate","splice","fakedata","number","name","notes","cardActions","CHANGE_CARDS","addCard","card","cards","Cards","editCard","oldCards","deleteCard","deletedCard","restoreCards","CHAT_INIT","CHAT_INIT_SAGA","CHAT_UPDATE_CHATROOM","CHAT_TOGGLE_COMPOSE","CHAT_SET_TOGGLE_VIEW_PROFILE","CHAT_SET_TOGGLE_COMPOSED_ID","CHAT_SEND_MESSAGE","CHAT_UPDATE_CHATROOM_SAGA","TOGGLE_MOBILE_LIST","TOGGLE_MOBILE_PROFILE","RESTORE_DEMO_DATA","RESTORE_DEMO_DATA_DONE","UPDATE_NEW_USER_PROPS","ADD_NEW_USER","ADD_NEW_USER_SAGA","NEW_MESSAGE_SUCCESFULL","chatInit","toggleCompose","toggleViewProfile","viewProfile","setComposedId","setSelectedChatroom","chatRoom","selected","sendMessage","toggleMobileList","mobileActiveList","toggleMobileProfile","mobileActiveProfile","restoreData","demoData","updateNewUsersProp","addNewUsersProp","addNewUser","user","users","chatRooms","selectedChatRoom","openCompose","composedId","loading","restoringData","sortTimeStamp","optionA","optionB","messageTime","sortChatRooms","lastMessageTime","contactList","ascendingSort","contact1","contact2","name1","toUpperCase","name2","contactActions","ADD_CONTACT","EDIT_CONTACT","DELETE__CONTACT","CHANGE_CONTACT","EDIT_VIEW","changeContact","addContact","newContact","firstName","avatar","contacts","LastName","mobile","home","company","work","note","Contacts","selectedId","editContact","newContacts","contact","sort","deleteContact","seectedId","viewChange","this","datas","dataModel","getObjectAt","slice","getAll","editView","nodes","drawerActions","SHOW_DRAWER","HIDE_DRAWER","closeDrawer","initialState","drawerVisibility","drawerType","drawerProps","count","fetchNewDate","axisData","toLocaleTimeString","replace","data0","series","data1","shift","Math","round","random","toFixed","xAxis","tooltip","trigger","Legend","toolbox","show","feature","dataView","readOnly","restore","saveAsImage","grid","top","left","right","bottom","dataZoom","visualMap","min","max","boundaryGap","now","res","len","unshift","yAxis","scale","xAxisIndex","yAxisIndex","itemStyle","normal","barBorderRadius","animationEasing","animationDelay","idx","animationDelayUpdate","INIT_DATA","INIT_DATA_SAGA","UPDATE_DATA","UPDATE_DATA_SAGA","CHANGE_VIEW","VIEW_TOPBAR_CART","initData","changeViewTopbarCart","viewTopbarCart","changeProductQuantity","productQuantity","products","Ecommerce","addToCart","product","objectID","quantity","loadingInitData","GIT_SEARCH","GIT_SUCCESS_RESULT","GIT_ERROR_RESULT","gitSearch","searcText","page","onPageChange","gitSearchSuccess","result","total_count","gitSearchError","investors","investor","company_name","job_title","investment_count","exists_count","orderStatus","orderDate","currency","billTo","billToAddress","billFrom","billFromAddress","invoiceList","itemName","costs","qty","price","subTotal","vatRate","vatPrice","totalCost","newInvoice","createDemoData","localData","invoices","e","GET_INVOICE","UPDATE_INVOICE","UPDATE_INVOICE_SAGA","SELECT_CURRENT_INVOICE","TOGGLE_VIEW","UPDATE_EDIT_INVOICE","deleteInvoice","Invoices","newInvoices","invoice","indexOf","updateInvoice","inv","selectCurrentInvoice","toggleView","editInvoice","initialInvoices","currentInvoice","editableInvoice","isNewInvoice","enableEditView","isActivated","INC","DEC","inc","dec","mailActions","FILTER_ATTRIBUTE","SELECTED_MAIL","COMPOSE_MAIL","REPLY_MAIL","SEARCH_STRING","filterAction","newFilterAttr","filterAttr","Mails","bucket","tag","selectMail","selectedMail","allMails","findIndex","mail","read","changeComposeMail","composeMail","changeReplyMail","replyMail","changeSearchString","searchString","modalActions","SHOW_MODAL","HIDE_MODAL","openModal","closeModal","modalVisibility","modalType","modalProps","notesAction","CHANGE_NOTE","ADD_NOTE","EDIT_NOTE","DELETE_NOTE","CHANGE_COLOR","changeNote","Notes","seectedColor","addNote","newNote","createTime","editNote","oldNotes","deleteNote","changeColor","colors","profileActions","FETCH_PROFILE_DATA_START","FETCH_PROFILE_DATA_SUCCESS","FETCH_PROFILE_DATA_FAILURE","SET_PROFILE_DATA","fetchProfileDataStart","fetchProfileDataSuccess","profile","fetchProfileDataFailure","INITIAL_DATA","scrumBoardActions","CREATE_OR_UPDATE_BOARD_WATCHER","CREATE_OR_UPDATE_BOARD","EDIT_BOARD","DELETE_BOARD_WATCHER","DELETE_BOARD","SELECT_BOARD","CREATE_OR_UPDATE_COLUMN_WATCHER","CREATE_OR_UPDATE_COLUMN","EDIT_COLUMN","CANCEL_EDIT_COLUMN","DELETE_COLUMN_WATCHER","DELETE_COLUMN","RESET_COLUMN","MOVE_COLUMN_WATCHER","SET_MOVED_COLUMN","DUBLICATE_COLUMN","CREATE_OR_UPDATE_TASK_WATCHER","CREATE_OR_UPDATE_TASK","EDIT_TASK","CANCEL_EDIT_TASK","DELETE_TASK_WATCHER","DELETE_TASK","RESET_TASK","MOVE_TASK_WATCHER","SET_MOVED_TASK","DUBLICATE_TASK","SET_SEARCH_TEXT","LOAD_BOARDS_DATA_SAGA","LOAD_CURRENT_BOARD_DATA_SAGA","SET_BOARDS_DATA","SET_CURRENT_BOARD_DATA","CREATE_OR_UPDATE_LABEL","EDIT_LABEL","DELETE_LABEL","boardsRenderWatcher","setBoardsData","boards","boardRenderWatcher","boardId","setBoardData","boardData","createOrUpdateTaskWatcher","createOrUpdateTask","editTask","cancelEditTask","deleteTaskWatcher","deleteTask","resetTask","setSearchText","moveTaskWatcher","setMovedTask","createOrUpdateColumnWatcher","createOrUpdateColumn","editColumn","cancelEditColumn","deleteColumnWatcher","deleteColumn","resetColumn","moveColumnWatcher","setMovedColumn","createOrUpdateBoardWatcher","board","createOrUpdateBoard","editBoard","deleteBoardWatcher","boardID","deleteBoard","createOrUpdateLabel","editLabel","deleteLabel","labelID","columns","tasks","searchText","labels","todoData","todoActions","CHANGE_TODO","ALL_COMPLETED","DELETE_COMPLETED","addTodo","todo","todos","completed","Todos","edittodo","editTodo","oldTodos","deleteTodo","allCompleted","deleteCompleted","colorLength","WHITE_LABELING","getWhiteLabeling","domain","faviconUrl","loginLogoUrl","siteLogoUrl","websiteTitle","YOUTUBE_SUCCESS_RESULT","YOUTUBE_ERROR_RESULT","youtubeSearch","pageToken","youtubeSearchSuccess","nextPageToken","prevPageToken","youtubeSearchError","keySearch","combineReducers","action","session","App","SiteDashboard","WhiteLabeling","Calendar","Box","tempAllBox","newtodos","Chat","chatroom","lastMessage","DynamicChartComponent","clone","YoutubeSearch","Articles","newRecord","Investors","scrumBoard","editing","task","LABELS","modal","drawer","githubSearch","Dashboard","DASHBOARD_SUCCESS","DASHBOARD_GET_NODES_REQUEST","DASHBOARD_GET_NODES_SUCCESS","DASHBOARD_ERROR","authActions","Loading","AlertEvent","loginRequest","loginSuccess","loginError","checkAuthorization","rootSaga","history","takeEvery","all","fork","getInvoice","updateInvoiceSaga","setItem","stringify","changedTodo","brand","categories","hierarchicalCategories","lvl0","lvl1","lvl2","price_range","image","free_shipping","rating","_snippetResult","matchLevel","_highlightResult","matchedWords","lvl3","productDatas","getInitData","cartProductQuantity","cartProducts","isNaN","parseInt","parseFloat","updateData","fakeData","fakeinitdata","fake","changedCard","convertCollectionsSnapshotToMap","snapshots","docs","reduce","accumulator","collection","addDocument","collectionName","documentData","docRef","getDocuments","querySnapshot","doc","getDocumentsByQuery","query","console","log","where","deleteDocuments","collectionRef","batch","delete","commit","chatroomsUserCollections","addCollectionAndDocuments","collectionKey","objectsToAdd","obj","newDocRef","set","initChat","updateChatrooms","updateChatroomSaga","getSelectedChatRoom","reverseString","str","reverse","join","sortChatrooms","sortMessages","chatroomCollectionRef","messagesCollectionRef","sendMessageBatch","revId","chatRoomModified","sender","chatRoomId","dob","gender","mobileNo","profileImageUrl","call","select","newUserId","newUser","newChatroom","otherUserId","otherUserInfo","newChatRoomId","chatRoomKeyRev","newChatroomRev","successActionCreator","docChanges","newIndex","syncCollection","searchRequest","youtubeSearchURL","onSearchReqeust","fetch","encodeURIComponent","json","searchResult","items","pageInfo","totalResults","gitSearchApi","createdAt","tableData","sortOption","sortKey","sortDir","valueA","valueB","sortVal","loadFromFirestore","storeIntoFirestore","fakeDataList","orderBy","getCollection","setDocument","omit","initialData","column_id","due_date","assignees","attachments","comments","updated_at","board_id","task_orders","column_orders","category","progress","thumb","open_to_members","open_to_company","estimated_time","loadState","serializedState","saveState","item","boardsRenderEffectSaga","boardRenderEffectSaga","createOrUpdateBoardEffectSaga","deleteBoardEffectSaga","createOrUpdateColumnEffectSaga","deleteColumnEffectSaga","moveColumnEffectSaga","createOrUpdateTaskEffectSaga","deleteTaskEffectSaga","moveTaskEffectSaga","scrumBoardSaga","getScrumBoards","hasOwnProperty","scrum_boards","DemoData","BOARDS","column","COLUMNS","filter","order","task_id","Object","keys","object","profileData","username","userpic","profile_bg","profilebg","thumb_url","post1","numberOflike","numberOfcomment","comment","post2","gallery","post11","post6","post9","video","numberOfView","post3","post4","post5","post7","post8","post10","followers","following","fetchProfileDataEffect","profileSaga","DemoProfileData","authSagas","contactSagas","mailSagas","notesSagas","todosSagas","ecommerceSaga","cardsSagas","invoicesSagas","chatSagas","youtubeSearchSagas","githubSagas","sagaMiddleware","createSagaMiddleware","middlewares","next","isExpired","thunk","encryptor","createEncryptor","secretKey","onError","persistConfig","storage","whitelist","transforms","middleware","persistedReducer","persistReducer","rootReducer","store","createStore","applyMiddleware","run","persistor","persistStore","ErrorBoundary","hasError","React","lazy","publicRoutes","path","exact","component","to","PrivateRoute","rest","useLocation","from","Routes","useHistory","whiteLabelingData","useEffect","favi","faviIcon","changeIconWeb","url","link","querySelector","createElement","rel","href","sizes","appendChild","fallback","route","interceptors","request","use","loadingAction","response","authorizationErrorTimes","Number","authAction","notification","GlobalStyles","createGlobalStyle","font","palette","baseURL","siteConfig","httpService","whiteLabelingActions","host","Boolean","hostname","match","ReactDOM","render","getElementById","navigator","serviceWorker","ready","registration","unregister","primary","secondary","warning","success","grayscale","border","calendar","pre","customTheme","ComponentName","Search","TextArea","Group","WDStyledInput","StyledInput","WDInputGroup","InputGroupWrapper","InputGroup","WDInputSearch","InputSearchWrapper","WDTextarea","TextAreaWrapper","Textarea","AntButton","isoButton","AntButtonGroup","ButtonsGroup","DASHBOARD_GET_ALERT_EVENTS_SUCCESS","getDashboardData","getDashboardDataById","getNodesBySiteId","getAlertEvents","params"],"mappings":"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AAO,mBACPyE,SAAU,0BAEZ,CACED,IAAK,UACLxE,MAAO,kBACPyE,SAAU,YAEZ,CACED,IAAK,SACLxE,MAAO,iBACPyE,SAAU,2BACVR,SAAU,CACR,CACEO,IAAK,cACLxE,MAAO,wBAET,CACEwE,IAAK,YACLxE,MAAO,oBAET,CACEwE,IAAK,cACLxE,MAAO,uBAET,CACEwE,IAAK,cACLxE,MAAO,yBAIb,CACEwE,IAAK,QACLxE,MAAO,gBACPyE,SAAU,mBACVR,SAAU,CACR,CACEO,IAAK,aACLxE,MAAO,iBAET,CACEwE,IAAK,SACLxE,MAAO,kBAET,CACEwE,IAAK,sBACLxE,MAAO,+BAET,CACEwE,IAAK,WACLxE,MAAO,oBAET,CACEwE,IAAK,SACLxE,MAAO,kBAET,CACEwE,IAAK,MACLxE,MAAO,eAET,CACEwE,IAAK,WACLxE,MAAO,oBAET,CACEwE,IAAK,WACLxE,MAAO,oBAET,CACEwE,IAAK,YACLxE,MAAO,qBAET,CACEwE,IAAK,WACLxE,MAAO,oBAET,CACEwE,IAAK,eACLxE,MAAO,0BASb,CACEwE,IAAK,aACLxE,MAAO,qBACPyE,SAAU,WACVR,SAAU,CACR,CACEO,IAAK,WACLxE,MAAO,iBAET,CACEwE,IAAK,UACLxE,MAAO,iBAET,CACEwE,IAAK,cACLxE,MAAO,mBAET,CACEwE,IAAK,cACLxE,MAAO,oBAET,CACEwE,IAAK,aACLxE,MAAO,mBAET,CACEwE,IAAK,aACLxE,MAAO,mBAET,CACEwE,IAAK,SACLxE,MAAO,eAET,CACEwE,IAAK,cACLxE,MAAO,oBAET,CACEwE,IAAK,WACLxE,MAAO,oBAET,CACEwE,IAAK,aACLxE,MAAO,sBAET,CACEwE,IAAK,SACLxE,MAAO,kBAET,CACEwE,IAAK,OACLxE,MAAO,gBAET,CACEwE,IAAK,eACLxE,MAAO,0BAIb,CACEwE,IAAK,qBACLxE,MAAO,2BACPyE,SAAU,YACVR,SAAU,CACR,CACEO,IAAK,aACLxE,MAAO,sBAET,CACEwE,IAAK,aACLxE,MAAO,sBAET,CACEwE,IAAK,OACLxE,MAAO,gBA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","file":"static/js/main.6a988804.chunk.js","sourcesContent":["import language from '../../config/language.config'\nimport englishLang from '../../../public/images/flag/uk.svg';\nimport chineseLang from '../../../public/images/flag/china.svg';\nimport spanishLang from '../../../public/images/flag/spain.svg';\nimport frenchLang from '../../../public/images/flag/france.svg';\nimport italianLang from '../../../public/images/flag/italy.svg';\n\nconst config = {\n defaultLanguage: language,\n options: [\n {\n languageId: 'english',\n locale: 'en',\n text: 'English',\n icon: englishLang,\n },\n {\n languageId: 'chinese',\n locale: 'zh',\n text: 'Chinese',\n icon: chineseLang,\n },\n {\n languageId: 'spanish',\n locale: 'es',\n text: 'Spanish',\n icon: spanishLang,\n },\n {\n languageId: 'french',\n locale: 'fr',\n text: 'French',\n icon: frenchLang,\n },\n {\n languageId: 'italian',\n locale: 'it',\n text: 'Italian',\n icon: italianLang,\n },\n ],\n};\n\nexport function getCurrentLanguage(lang) {\n let selecetedLanguage = config.options[0];\n config.options.forEach(language => {\n if (language.languageId === lang) {\n selecetedLanguage = language;\n }\n });\n return selecetedLanguage;\n}\nexport default config;\n","module.exports = __webpack_public_path__ + \"static/media/favicon.947df3b9.png\";","import { Map } from 'immutable';\nimport { debounce } from 'lodash';\nimport { DebouceTime } from 'src/constants';\nimport React from 'react';\nimport { Tag } from 'antd';\nimport moment from 'moment';\n\nexport function clearToken() {\n localStorage.removeItem('access_token');\n}\n\nexport function getUserToken(currentCompanyId) {\n try {\n const userToken = JSON.parse(localStorage.getItem('userToken'));\n return currentCompanyId ? userToken[currentCompanyId] : userToken;\n } catch (err) {\n clearToken();\n return new Map();\n }\n}\n\nexport function isAuthenticated() {\n let expiresIn = getUserToken().expiresIn * 1000 + new Date().getTime();\n return new Date().getTime() < expiresIn;\n}\n\nexport function getAccessToken(currentCompanyId) {\n return getUserToken(currentCompanyId)\n ? getUserToken(currentCompanyId).accessToken\n : null;\n}\n\nexport function arrayEqual(array1, array2) {\n return array1.sort().toString() == array2.sort().toString();\n}\n\nexport function timeDifference(givenTime) {\n givenTime = new Date(givenTime);\n const milliseconds = new Date().getTime() - givenTime.getTime();\n const numberEnding = number => {\n return number > 1 ? 's' : '';\n };\n const number = num => (num > 9 ? '' + num : '0' + num);\n const getTime = () => {\n let temp = Math.floor(milliseconds / 1000);\n const years = Math.floor(temp / 31536000);\n if (years) {\n const month = number(givenTime.getUTCMonth() + 1);\n const day = number(givenTime.getUTCDate());\n const year = givenTime.getUTCFullYear() % 100;\n return `${day}-${month}-${year}`;\n }\n const days = Math.floor((temp %= 31536000) / 86400);\n if (days) {\n if (days < 28) {\n return days + ' day' + numberEnding(days);\n } else {\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ];\n const month = months[givenTime.getUTCMonth()];\n const day = number(givenTime.getUTCDate());\n return `${day} ${month}`;\n }\n }\n const hours = Math.floor((temp %= 86400) / 3600);\n if (hours) {\n return `${hours} hour${numberEnding(hours)} ago`;\n }\n const minutes = Math.floor((temp %= 3600) / 60);\n if (minutes) {\n return `${minutes} minute${numberEnding(minutes)} ago`;\n }\n return 'a few seconds ago';\n };\n return getTime();\n}\n\nexport function stringToInt(value, defValue = 0) {\n if (!value) {\n return 0;\n } else if (!isNaN(value)) {\n return parseInt(value, 10);\n }\n return defValue;\n}\n\nexport function stringToPosetiveInt(value, defValue = 0) {\n const val = stringToInt(value, defValue);\n return val > -1 ? val : defValue;\n}\n\nexport function handleSorter(a, b) {\n if (typeof a === 'number' || typeof b === 'number') return a - b;\n a = a ? a : '';\n b = b ? b : '';\n\n return a.localeCompare(b);\n}\n\nexport function IsStatusDisableCell(value) {\n if (!value)\n return Enable;\n else\n return Disable;\n}\n\nexport function compareString(a, b) {\n a = a || '';\n b = b || '';\n\n return a.localeCompare(b);\n}\n\nexport function commonSelectFilterOption(input, option) {\n return option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n}\n\nexport function debouceTime(func, time = DebouceTime) {\n return debounce(func, time);\n}\n\nexport function toMoment(date, format) {\n return date ? moment(date, format) : null;\n}","import firebase from 'firebase/app';\nimport 'firebase/firestore';\nimport 'firebase/auth';\nimport ReduxSagaFirebase from 'redux-saga-firebase';\nimport isoConfig from '../../../config/firebase.config';\nconst prodConfig = {\n apiKey: process.env.REACT_APP_PROD_API_KEY,\n authDomain: process.env.REACT_APP_PROD_AUTH_DOMAIN,\n databaseURL: process.env.REACT_APP_PROD_DATABASE_URL,\n projectId: process.env.REACT_APP_PROD_PROJECT_ID,\n storageBucket: process.env.REACT_APP_PROD_STORAGE_BUCKET,\n messagingSenderId: process.env.REACT_APP_PROD_MESSAGING_SENDER_ID,\n};\nconst devConfig = {\n apiKey: process.env.REACT_APP_DEV_API_KEY,\n authDomain: process.env.REACT_APP_DEV_AUTH_DOMAIN,\n databaseURL: process.env.REACT_APP_DEV_DATABASE_URL,\n projectId: process.env.REACT_APP_DEV_PROJECT_ID,\n storageBucket: process.env.REACT_APP_DEV_STORAGE_BUCKET,\n messagingSenderId: process.env.REACT_APP_DEV_MESSAGING_SENDER_ID,\n};\nconst config = process.env.NODE_ENV === 'production' ? prodConfig : devConfig;\n// !firebase.apps.length ? firebase.initializeApp(isoConfig) : firebase.app();\n\nexport const firebaseApp = !firebase.apps.length\n ? firebase.initializeApp(isoConfig)\n : firebase.app();\nexport const auth = firebase.auth();\nexport const db = firebase.firestore();\nexport const rsf = new ReduxSagaFirebase(firebaseApp);\nexport default firebase;\n","export default {\n apiKey: 'your_firebase_api_key',\n authDomain: 'your_firebase_auth_domain',\n databaseURL: 'your_firebase_database_url',\n projectId: 'your_firebase_project_id',\n storageBucket: 'your_firebase_storage_bucket',\n messagingSenderId: 'your_firebase_messaging_sender_id',\n};\n","import { notification } from 'antd';\n\nconst createNotification = (type, message, description) => {\n notification[type]({\n message,\n description,\n });\n};\nexport default createNotification;\n","import axios from 'axios';\n\nconst baseUrl = '/api/site-dashboard';\n\nconst actions = {\n EXPORT_DATA: 'EXPORT_DATA',\n CLEAR_EXPORT_DATA: 'CLEAR_EXPORT_DATA',\n\n getSiteDashboardBasicInfo: siteId => () => {\n return axios.get(`${baseUrl}/${siteId}`);\n },\n\n getSubSitesBySiteId: siteId => () => {\n return axios.get(`${baseUrl}/sub-sites/${siteId}`);\n },\n\n getNodes: siteId => () => {\n return axios.get(`${baseUrl}/${siteId}/nodes`);\n },\n\n getHubs: siteId => () => {\n return axios.get(`${baseUrl}/${siteId}/hubs`);\n },\n\n reading: (siteId, dateRangeModel) => () => {\n return axios.post(`${baseUrl}/${siteId}/readings`, dateRangeModel);\n },\n\n readingMinMax: (siteId, dateRangeModel) => () => {\n return axios.post(`${baseUrl}/${siteId}/readings-minmax`, dateRangeModel);\n },\n\n medicationFridgeReports: siteId => () => {\n return axios.get(`${baseUrl}/${siteId}/medication-fridge-reports`);\n },\n\n exportReading: (siteId, model) => () => {\n return axios.post(`${baseUrl}/${siteId}/export/readings`, model);\n },\n\n exportReadingMinMax: (siteId, model) => () => {\n return axios.post(`${baseUrl}/${siteId}/export/readings-minmax`, model);\n },\n checkPermission : siteId => {\n return dispatch => {\n return axios.get(`${baseUrl}/check-permission/${siteId}`);\n };\n }\n};\n\nexport default actions;\n","import styled from 'styled-components';\nimport { borderRadius } from '../shared/library/helpers/style_utils';\nimport WithDirection from '../shared/library/helpers/rtl';\nconst ColorChooserDropdown = styled.div`\n display: flex;\n flex-flow: row wrap;\n max-width: 160px;\n\n .ant-btn {\n width: 20px;\n height: 20px;\n border: 0;\n outline: 0;\n padding: 0;\n margin: ${props =>\n props['data-rtl'] === 'rtl' ? '0 0 0 15px' : '0 15px 0 0'};\n ${borderRadius('3px')};\n\n &:last-child {\n margin: 0;\n }\n\n &:nth-child(n + 6) {\n margin-top: 15px;\n }\n\n &:nth-child(5n) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n`;\n\nexport default WithDirection(ColorChooserDropdown);\n","import { getCurrentLanguage } from './config';\nconst actions = {\n CHANGE_LANGUAGE: 'CHANGE_LANGUAGE',\n ACTIVATE_LANG_MODAL: 'ACTIVATE_LANG_MODAL',\n switchActivation: () => ({\n type: actions.ACTIVATE_LANG_MODAL,\n }),\n changeLanguage: language => {\n return {\n type: actions.CHANGE_LANGUAGE,\n language: getCurrentLanguage(language),\n };\n },\n};\nexport default actions;\n","import { getCurrentTheme } from './config';\nconst actions = {\n CHANGE_THEME: 'CHANGE_THEME',\n SWITCH_ACTIVATION: 'SWITCH_ACTIVATION',\n switchActivation: () => ({\n type: actions.SWITCH_ACTIVATION,\n }),\n changeTheme: (attribute, themeName) => {\n const theme = getCurrentTheme(attribute, themeName);\n if (attribute === 'layoutTheme') {\n document.getElementsByClassName(\n 'isomorphicContent'\n )[0].style.backgroundColor = theme.backgroundColor;\n }\n return {\n type: actions.CHANGE_THEME,\n attribute,\n theme,\n };\n },\n};\nexport default actions;\n","module.exports = __webpack_public_path__ + \"static/media/2.9e675418.png\";","module.exports = __webpack_public_path__ + \"static/media/5.ab2fcb95.png\";","module.exports = __webpack_public_path__ + \"static/media/7.352f351b.png\";","module.exports = __webpack_public_path__ + \"static/media/9.ac29f02d.png\";","export const FormItemDecorator = {\n validateTrigger: ['onChange', 'onBlur']\n};\n\nexport const CheckboxFormItemDecorator = {\n ...FormItemDecorator,\n valuePropName: 'checked'\n};\n\nexport const RangePickerFormItemDecorator = {\n ...FormItemDecorator,\n normalize: (value, prevValue, allValues) => {\n if (!value) {\n return prevValue;\n }\n\n if (typeof value === 'string') {\n return [];\n }\n\n return value;\n }\n};\n\nexport const DebouceTime = 250;\n\nexport const RouteKeys = {\n DASHBOARD: 'item_0',\n PLEXUS: 'plexus',\n MANAGEMENT: 'management',\n COMPANIES: 'companies'\n};\n\nexport const AggregatorType = {\n VALUE_MIN: 0,\n VALUE_MAX: 1,\n AVERAGE_MIN_MAX: 2,\n AVERAGE_MIN: 3,\n AVERAGE_MAX: 4,\n VALUE_MIN_MAX: 5,\n VALUE_MAX_MIN: 6\n};\n\nexport const PurseLogger = {\n RAW_DATA: 'RawData',\n CONSUMPTINO_OVERTIME: 'ConsumptionOverTime',\n CONSUMPTINO_PERID: 'ConsumptionPeriod'\n};\n\nexport const ChartType = {\n RAW_DATA: 'RawData',\n CONSUMPTINO_OVERTIME: 'ConsumptionOverTime',\n CONSUMPTINO_PERID: 'ConsumptionPeriod',\n READING: 'Reading',\n MINMAX: 'MinMax'\n};\n\nexport const PurseLoggerText = 'Pulse Logger';\n\nexport const ConsumptionPeriod = {\n FIFTEEN_MINUTES: '15minutes',\n HALF_HOUR: '30minutes',\n ONE_HOUR: '1hour',\n QUARTER_DAY: '6hours',\n HALF_DAY: '12hours',\n ONE_DAY: '24hours'\n};\n\nexport const PurseLoggerArray = [\n { value: ChartType.RAW_DATA, text: 'Raw Data' },\n { value: ChartType.CONSUMPTINO_OVERTIME, text: 'Consumption over time' },\n { value: ChartType.CONSUMPTINO_PERID, text: 'Consumption period' }\n];\n\nexport const ConsumptionPeriodArray = [\n { value: ConsumptionPeriod.FIFTEEN_MINUTES, text: '15 minutes' },\n { value: ConsumptionPeriod.HALF_HOUR, text: '30 minutes' },\n { value: ConsumptionPeriod.ONE_HOUR, text: '1 hour' },\n { value: ConsumptionPeriod.QUARTER_DAY, text: '6 hours' },\n { value: ConsumptionPeriod.HALF_DAY, text: '12 hours' },\n { value: ConsumptionPeriod.ONE_DAY, text: '24 hours' }\n];\n\nexport const ManufactureOption = ['UKE', 'Mackwell', 'EPS'];\n\nexport const MessageType = {\n EXCEPTION_SYSTEM: 'ExceptionSystem',\n ACCOUNT: 'Account',\n ALERT: 'Alert',\n REPORT: 'Report'\n}\nexport const MessageStatus = {\n PENDING : 'Pending',\n SENT : 'Sent',\n ERROR : 'Error',\n}\n\nexport const RegExp = {\n UPPERCASE: /(?=.*?[A-Z])/,\n LOWERCASE:/(?=.*?[a-z])/,\n DIGITS: /(?=.*?[0-9])/\n} \n","import siteIcon from '../../public/favicon.png';\nimport siteLogo from '../../public/images/Plexus_Innovation_Logo.png';\n\nexport default {\n siteName: 'PLEXUS',\n siteIcon: siteIcon,\n siteLogo: siteLogo,\n footerText: `Powered By Plexus Innovation Ltd`,\n enableAnimatedRoute: false,\n apiUrl: 'https://plexusdashboardnew-be.azurewebsites.net/',\n google: {\n analyticsKey: 'UA-xxxxxxxxx-1'\n },\n dashboard: '/dashboard'\n};\n","export default function isIgnoredLoading(bool) {\n return {\n headers: {\n isIgnoredLoading: bool,\n },\n };\n}\n","import axios from 'axios';\nimport setAuthorizationToken from '../../shared/library/helpers/setAuthorizationToken';\nimport appActions from '../../redux/app/actions';\n\nconst actions = {\n CHECK_AUTHORIZATION: 'CHECK_AUTHORIZATION',\n LOGIN_REQUEST: 'LOGIN_REQUEST',\n LOGOUT: 'LOGOUT',\n MULTI_FACTOR_LOGIN_REQUEST: 'MULTI_FACTOR_LOGIN_REQUEST',\n LOGIN_SUCCESS: 'LOGIN_SUCCESS',\n LOGIN_ERROR: 'LOGIN_ERROR',\n UPDATE_USERINFO: 'UPDATE_USERINFO',\n SWITCH_ACCESS_TOKEN: 'SWITCH_ACCESS_TOKEN',\n REFRESHING_TOKEN: 'REFRESHING_TOKEN',\n DONE_REFRESHING_TOKEN: 'DONE_REFRESHING_TOKEN',\n\n // checkAuthorization: () => ({ type: actions.CHECK_AUTHORIZATION }),\n\n updateUserInfo: data => {\n return { type: actions.UPDATE_USERINFO, data };\n },\n\n changePassword: model => () => {\n return axios.post('/api/change-password', model);\n },\n\n forgotPassword: email => () => {\n return axios.post('/api/forgot-password', email);\n },\n\n verifyToken: token => () => {\n return axios.post('/api/forgot-password/verify-token', { token });\n },\n\n resetPassword: model => () => {\n return axios.post('/api/reset-password', model);\n },\n\n login: model => {\n return dispatch => {\n return axios.post('/api/login', model).then(resp => {\n const data = resp.data || {};\n if (data.requireMFV) {\n dispatch({ type: actions.MULTI_FACTOR_LOGIN_REQUEST, data });\n } else {\n setAuthorizationToken(data.accessToken);\n data.loggedTime = new Date().toISOString();\n dispatch({ type: actions.LOGIN_SUCCESS, data });\n }\n });\n };\n },\n\n multiFactorVerify: model => {\n return dispatch => {\n return axios.post('/api/verify-opt', model).then(resp => {\n const data = resp.data || {};\n setAuthorizationToken(data.accessToken);\n data.loggedTime = new Date().toISOString();\n dispatch({ type: actions.LOGIN_SUCCESS, data });\n })\n }\n },\n\n resendOTP: model => () => { \n return axios.post('/api/resend-opt', model); \n },\n\n switchCompany: companyId => {\n return (dispatch, getState) => {\n return new Promise((resolve, reject) => {\n const switchAccessToken = (data, dispatch) => {\n setAuthorizationToken(data.accessToken);\n dispatch({ type: actions.SWITCH_ACCESS_TOKEN, data });\n resolve(true);\n };\n\n const userToken = (getState().Auth.userTokens || {})[companyId];\n if (userToken) {\n switchAccessToken(userToken, dispatch);\n } else {\n axios.post(`/api/switch-company`, { companyId }).then(resp => {\n resp.data.loggedTime = new Date().toISOString();\n switchAccessToken(resp.data, dispatch);\n });\n }\n });\n };\n },\n\n refreshToken: (dispatch, refreshToken, companyId) => {\n var freshTokenPromise = axios\n .post(`/api/refresh-token`, { refreshToken, companyId })\n .then(resp => {\n let data = resp.data;\n data.loggedTime = new Date().toISOString();\n\n setAuthorizationToken(data.accessToken);\n dispatch({ type: actions.SWITCH_ACCESS_TOKEN, data });\n\n dispatch({ type: actions.DONE_REFRESHING_TOKEN });\n\n return Promise.resolve(resp.data);\n })\n .catch(err => {\n dispatch({ type: actions.DONE_REFRESHING_TOKEN });\n return Promise.reject(err);\n });\n\n dispatch({ type: actions.REFRESHING_TOKEN, freshTokenPromise });\n\n return freshTokenPromise;\n },\n\n shadowCompany: companyId => {\n return dispatch => {\n return axios.post('/api/shadow-company', { companyId }).then(resp => {\n const data = resp.data || {};\n setAuthorizationToken(data.accessToken);\n data.loggedTime = new Date().toISOString();\n dispatch({ type: actions.LOGIN_SUCCESS, data });\n });\n };\n },\n\n shadowUser: userId => {\n return dispatch => {\n return axios.post('/api/shadow-user', { userId }).then(resp => {\n const data = resp.data || {};\n setAuthorizationToken(data.accessToken);\n data.loggedTime = new Date().toISOString();\n dispatch({ type: actions.LOGIN_SUCCESS, data });\n });\n };\n },\n\n exitShadow: () => {\n return dispatch => {\n return axios.post('/api/exit-shadow', {}).then(resp => {\n const data = resp.data || {};\n setAuthorizationToken(data.accessToken);\n data.loggedTime = new Date().toISOString();\n data.companyId = null;\n dispatch({ type: actions.LOGIN_SUCCESS, data });\n });\n };\n },\n\n logout: () => {\n return dispatch => {\n return axios.post('/api/logout', {}).then(() => {\n dispatch({ type: actions.LOGOUT });\n dispatch(appActions.clearMenu());\n });\n };\n },\n};\n\nexport default actions;\n","import axios from 'axios';\n\nconst baseUrl = '/api/alertevents';\n\nconst alertEventActions = {\n\n ALERT_EVENT_SEARCH: 'ALERT_EVENT_SEARCH',\n\n getNodeAlertData: id => dispatch => {\n return axios.get(`${baseUrl}/${id}`);\n },\n getById: id => dispatch => {\n return axios.get(`${baseUrl}/detail/${id}`);\n },\n update: (id, model) => dispatch => {\n return axios.put(`${baseUrl}/detail/${id}`, model);\n },\n\n updateKeySearch: (text) => ({\n type: alertEventActions.ALERT_EVENT_SEARCH,\n data: text,\n })\n};\n\nexport default alertEventActions;\n","import { createBrowserHistory } from 'history';\n\nexport default createBrowserHistory({\n forceRefresh: true,\n});\n","export const PUBLIC_ROUTE = {\n LANDING: '/',\n SIGN_IN: '/Identity/Account/Login',\n SIGN_UP: '/signup',\n FORGET_PASSWORD: '/forgotpassword',\n RESET_PASSWORD: '/resetpassword',\n PAGE_404: '/404',\n PAGE_500: '/500',\n PAGE_MAINTENANCE: '/maintenance',\n AUTH0_CALLBACK: '/auth0loginCallback',\n MULTI_FACTOR:'/Identity/Account/multi-factor-verify',\n\n // ----\n EXPORTDATA: '/site-dashboard-export/site',\n // ----\n};\n\nexport const PRIVATE_ROUTE = {\n DASHBOARD: '/',\n COMPANIES: '/companies',\n\n // --\n REPORTS: '/reports',\n SITEDASHBOARD: '/site-dashboard',\n // --\n\n MAIL: '/inbox',\n SCRUM_BOARD: '/scrum-board',\n CALENDAR: '/calendar',\n GOOGLE_MAP: '/googlemap',\n LEAFLET_MAP: '/leafletmap',\n TABLE: '/table_ant',\n FORM: '/allFormComponent',\n INPUT: '/InputField',\n EDITOR: '/editor',\n FORM_WITH_STEPPERS: '/stepperForms',\n FORM_WITH_VALIDATION: '/FormsWithValidation',\n PROGRESS: '/progress',\n BUTTON: '/button',\n TAB: '/tab',\n AUTOCOMPLETE: '/autocomplete',\n CHECKBOX: '/checkbox',\n RADIOBOX: '/radiobox',\n SELECT: '/selectbox',\n TRANSFER: '/transfer',\n GRID_LAYOUT: '/gridLayout',\n NOTES: '/notes',\n TODO: '/todo',\n ARTICLES: '/articles',\n INVESTORS: '/investors',\n CONTACTS: '/contacts',\n ALERT: '/alert',\n MODAL: '/modal',\n MESSAGE: '/message',\n NOTIFICATION: '/notification',\n POPCONFIRM: '/Popconfirm',\n SPIN: '/spin',\n SHUFFLE: '/shuffle',\n AFFIX: '/affix',\n BREADCRUMB: '/breadcrumb',\n BACK_TO_TOP: '/backToTop',\n DROPDOWN: '/dropdown',\n OP_BADGE: '/op_badge',\n OP_CARD: '/op_card',\n OP_CAROUSEL: '/op_carousel',\n OP_COLLAPSE: '/op_collapse',\n OP_TOOLTIP: '/op_tooltip',\n RATING: '/rating',\n TREE: '/tree',\n OP_TAG: '/op_tag',\n OP_TIMELINE: '/op_timeline',\n OP_POPOVER: '/op_popover',\n GOOGLE_CHART: '/googleChart',\n RECHARTS: '/recharts',\n MENU: '/menu',\n REACT_CHART_2: '/ReactChart2',\n PAGINATION: '/pagination',\n CARD: '/card',\n CART: '/cart',\n CHECKOUT: '/checkout',\n SHOP: '/shop',\n REACT_DATES: '/reactDates',\n CODE_MIRROR: '/codeMirror',\n UPPY: '/uppy',\n DROPZONE: '/dropzone',\n YOUTUBE_SEARCH: '/youtubeSearch',\n FRAPPE_CHART: '/frappeChart',\n INVOICE: '/invoice',\n CHAT: '/chat',\n PROFILE: '/my-profile',\n SWIPER_SLIDER: '/swiperslider',\n};\n","const language = 'english';\nexport const langDir = 'ltr';\n\nexport default language;\n","module.exports = __webpack_public_path__ + \"static/media/uk.b8a75c53.svg\";","module.exports = __webpack_public_path__ + \"static/media/china.84911517.svg\";","module.exports = __webpack_public_path__ + \"static/media/spain.d553cd69.svg\";","module.exports = __webpack_public_path__ + \"static/media/france.561d8c4f.svg\";","module.exports = __webpack_public_path__ + \"static/media/italy.ab7d14c7.svg\";","import { Popover } from 'antd';\n\nexport default Popover;\n","module.exports = __webpack_public_path__ + \"static/media/Plexus_Innovation_Logo.3e399c82.png\";","module.exports = __webpack_public_path__ + \"static/media/profile-bg.f57b6453.jpg\";","module.exports = __webpack_public_path__ + \"static/media/1.f812b733.png\";","module.exports = __webpack_public_path__ + \"static/media/3.e100e074.png\";","// Transition\nexport function transition(timing = 0.3) {\n return `\n -webkit-transition: all ${timing}s cubic-bezier(0.215, 0.61, 0.355, 1);\n -moz-transition: all ${timing}s cubic-bezier(0.215, 0.61, 0.355, 1);\n -ms-transition: all ${timing}s cubic-bezier(0.215, 0.61, 0.355, 1);\n -o-transition: all ${timing}s cubic-bezier(0.215, 0.61, 0.355, 1);\n transition: all ${timing}s cubic-bezier(0.215, 0.61, 0.355, 1);\n `;\n}\n\n// Border Radius\nexport function borderRadius(radius = 0) {\n return `\n -webkit-border-radius: ${radius};\n -moz-border-radius: ${radius};\n -ms-transition: ${radius};\n -o-border-radius: ${radius};\n border-radius: ${radius};\n `;\n}\n\n// Box Shadow\nexport function boxShadow(shadow = 'none') {\n return `\n -webkit-box-shadow: ${shadow};\n -moz-box-shadow: ${shadow};\n box-shadow: ${shadow};\n `;\n}\n","module.exports = __webpack_public_path__ + \"static/media/4.bd3f7c7c.png\";","module.exports = __webpack_public_path__ + \"static/media/6.e02c5ab6.png\";","module.exports = __webpack_public_path__ + \"static/media/8.ea1f3948.png\";","module.exports = __webpack_public_path__ + \"static/media/10.93f709cb.png\";","module.exports = __webpack_public_path__ + \"static/media/11.62742201.png\";","import axios from 'axios';\n\nexport default function setAuthorizationToken(token) {\n if (token) {\n axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;\n } else {\n delete axios.defaults.headers.common['Authorization'];\n }\n}\n","import { themeConfig } from '../../config/theme/theme.config';\nconst changeThemes = {\n id: 'changeThemes',\n label: 'themeSwitcher',\n defaultTheme: themeConfig.theme,\n options: [\n {\n themeName: 'defaultTheme',\n buttonColor: '#ffffff',\n textColor: '#323332',\n },\n {\n themeName: 'customTheme',\n buttonColor: '#ffffff',\n textColor: '#323332',\n },\n ],\n};\nconst topbarTheme = {\n id: 'topbarTheme',\n label: 'themeSwitcher.Topbar',\n defaultTheme: themeConfig.topbar,\n options: [\n {\n themeName: 'defaultTheme',\n buttonColor: '#ffffff',\n textColor: '#323332',\n },\n {\n themeName: 'theme1',\n buttonColor: '#e0364c',\n backgroundColor: '#e0364c',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme2',\n buttonColor: '#6534ff',\n backgroundColor: '#6534ff',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme3',\n buttonColor: '#4482FF',\n backgroundColor: '#4482FF',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme4',\n buttonColor: '#422e62',\n backgroundColor: '#422e62',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme5',\n buttonColor: '#22144c',\n backgroundColor: '#22144c',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme6',\n buttonColor: '#4670a2',\n backgroundColor: '#4670a2',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme7',\n buttonColor: '#494982',\n backgroundColor: '#494982',\n textColor: '#ffffff',\n },\n ],\n};\nconst sidebarTheme = {\n id: 'sidebarTheme',\n label: 'themeSwitcher.Sidebar',\n defaultTheme: themeConfig.sidebar,\n options: [\n {\n themeName: 'defaultTheme',\n buttonColor: '#323332',\n backgroundColor: undefined,\n textColor: '#788195',\n },\n {\n themeName: 'theme1',\n buttonColor: '#e0364c',\n backgroundColor: '#e0364c',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme2',\n buttonColor: '#6534ff',\n backgroundColor: '#6534ff',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme3',\n buttonColor: '#4482FF',\n backgroundColor: '#4482FF',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme4',\n buttonColor: '#422e62',\n backgroundColor: '#422e62',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme5',\n buttonColor: '#22144c',\n backgroundColor: '#22144c',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme6',\n buttonColor: '#4670a2',\n backgroundColor: '#4670a2',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme7',\n buttonColor: '#494982',\n backgroundColor: '#494982',\n textColor: '#ffffff',\n },\n ],\n};\nconst layoutTheme = {\n id: 'layoutTheme',\n label: 'themeSwitcher.Background',\n defaultTheme: themeConfig.layout,\n options: [\n {\n themeName: 'defaultTheme',\n buttonColor: '#ffffff',\n backgroundColor: '#F1F3F6',\n textColor: undefined,\n },\n {\n themeName: 'theme1',\n buttonColor: '#ffffff',\n backgroundColor: '#ffffff',\n textColor: '#323232',\n },\n {\n themeName: 'theme2',\n buttonColor: '#F9F9F9',\n backgroundColor: '#F9F9F9',\n textColor: '#ffffff',\n },\n {\n themeName: 'theme3',\n buttonColor: '#ebebeb',\n backgroundColor: '#ebebeb',\n textColor: '#ffffff',\n },\n ],\n};\nconst customizedThemes = {\n changeThemes,\n topbarTheme,\n sidebarTheme,\n layoutTheme,\n};\nexport function getCurrentTheme(attribute, selectedThemename) {\n let selecetedTheme = {};\n customizedThemes[attribute].options.forEach(theme => {\n if (theme.themeName === selectedThemename) {\n selecetedTheme = theme;\n }\n });\n return selecetedTheme;\n}\nexport default customizedThemes;\n","module.exports = __webpack_public_path__ + \"static/media/user1.56a1f25e.png\";","import React from 'react';\n\nlet direction = 'ltr';\nif (typeof window !== 'undefined') {\n direction = document.getElementsByTagName('html')[0].getAttribute('dir');\n}\nconst withDirection = Component => props => {\n return ;\n};\n\nexport default withDirection;\nexport { direction };\n","export function getView(width) {\n let newView = 'MobileView';\n if (width > 1220) {\n newView = 'DesktopView';\n } else if (width > 767) {\n newView = 'TabView';\n }\n return newView;\n}\nconst actions = {\n COLLPSE_CHANGE: 'COLLPSE_CHANGE',\n COLLPSE_OPEN_DRAWER: 'COLLPSE_OPEN_DRAWER',\n CHANGE_OPEN_KEYS: 'CHANGE_OPEN_KEYS',\n TOGGLE_ALL: 'TOGGLE_ALL',\n CHANGE_CURRENT: 'CHANGE_CURRENT',\n CLEAR_MENU: 'CLEAR_MENU',\n toggleCollapsed: () => ({\n type: actions.COLLPSE_CHANGE,\n }),\n toggleAll: (width, height) => {\n const view = getView(width);\n const collapsed = view !== 'DesktopView';\n return {\n type: actions.TOGGLE_ALL,\n collapsed,\n view,\n height,\n };\n },\n toggleOpenDrawer: () => ({\n type: actions.COLLPSE_OPEN_DRAWER,\n }),\n changeOpenKeys: openKeys => ({\n type: actions.CHANGE_OPEN_KEYS,\n openKeys,\n }),\n changeCurrent: current => ({\n type: actions.CHANGE_CURRENT,\n current,\n }),\n clearMenu: () => ({ type: actions.CLEAR_MENU }),\n};\nexport default actions;\n","import antdEn from 'antd/lib/locale-provider/en_US';\nimport appLocaleData from 'react-intl/locale-data/en';\nimport enMessages from '../locales/en_US.json';\n// import { getKeys, getValues } from '../conversion';\n// getValues(enMessages);\n\nconst EnLang = {\n messages: {\n ...enMessages,\n },\n antd: antdEn,\n locale: 'en-US',\n data: appLocaleData,\n};\nexport default EnLang;\n","import appLocaleData from 'react-intl/locale-data/zh';\nimport zhMessages from '../locales/zh-Hans.json';\n\nconst ZhLan = {\n messages: {\n ...zhMessages,\n },\n antd: null,\n locale: 'zh-Hans-CN',\n data: appLocaleData,\n};\nexport default ZhLan;\n","import antdSA from 'antd/lib/locale-provider/en_US';\nimport appLocaleData from 'react-intl/locale-data/ar';\nimport saMessages from '../locales/ar_SA.json';\n\nconst saLang = {\n messages: {\n ...saMessages,\n },\n antd: antdSA,\n locale: 'ar',\n data: appLocaleData,\n};\nexport default saLang;\n","import antdSA from 'antd/lib/locale-provider/it_IT';\nimport appLocaleData from 'react-intl/locale-data/it';\nimport saMessages from '../locales/it_IT.json';\n\nconst saLang = {\n messages: {\n ...saMessages,\n },\n antd: antdSA,\n locale: 'it-IT',\n data: appLocaleData,\n};\nexport default saLang;\n","import antdSA from 'antd/lib/locale-provider/ca_ES';\nimport appLocaleData from 'react-intl/locale-data/es';\nimport saMessages from '../locales/es_ES.json';\n\nconst saLang = {\n messages: {\n ...saMessages,\n },\n antd: antdSA,\n locale: 'es',\n data: appLocaleData,\n};\nexport default saLang;\n","import Enlang from './entries/en-US';\nimport Zhlang from './entries/zh-Hans-CN';\nimport Salang from './entries/ar_SA';\nimport Itlang from './entries/it_IT';\nimport Eslang from './entries/es_ES';\nimport Frlang from './entries/fr_FR';\nimport { addLocaleData } from 'react-intl';\n\nconst AppLocale = {\n en: Enlang,\n zh: Zhlang,\n sa: Salang,\n it: Itlang,\n es: Eslang,\n fr: Frlang,\n};\naddLocaleData(AppLocale.en.data);\naddLocaleData(AppLocale.zh.data);\naddLocaleData(AppLocale.sa.data);\naddLocaleData(AppLocale.it.data);\naddLocaleData(AppLocale.es.data);\naddLocaleData(AppLocale.fr.data);\n\nexport default AppLocale;\n","import antdSA from 'antd/lib/locale-provider/fr_FR';\nimport appLocaleData from 'react-intl/locale-data/fr';\nimport saMessages from '../locales/fr_FR.json';\n\nconst saLang = {\n messages: {\n ...saMessages,\n },\n antd: antdSA,\n locale: 'fr-FR',\n data: appLocaleData,\n};\nexport default saLang;\n","import React from 'react';\nimport { ConfigProvider } from 'antd';\nimport { IntlProvider } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { ThemeProvider } from 'styled-components';\nimport themes from './config/theme/theme.config';\nimport AppLocale from './config/translation';\n\nexport default function AppProvider({ children }) {\n const { locale } = useSelector(state => state.LanguageSwitcher.language);\n const { themeName } = useSelector(state => state.ThemeSwitcher.changeThemes);\n const currentAppLocale = AppLocale[locale];\n return (\n \n \n {children}\n \n \n );\n}\n","const options = [\n {\n key: 'mailbox',\n label: 'sidebar.email',\n leftIcon: 'ion-android-mail',\n },\n {\n key: 'companies',\n label: 'sidebar.companies',\n leftIcon: 'ion-chatbubbles',\n },\n {\n key: 'chat',\n label: 'sidebar.chat',\n leftIcon: 'ion-chatbubbles',\n },\n {\n key: 'ecommerce',\n label: 'sidebar.ecommerce',\n leftIcon: 'ion-bag',\n children: [\n {\n key: 'shop',\n label: 'sidebar.shop',\n },\n {\n key: 'cart',\n label: 'sidebar.cart',\n },\n {\n key: 'checkout',\n label: 'sidebar.checkout',\n },\n {\n key: 'card',\n label: 'sidebar.cards',\n },\n ],\n },\n {\n key: 'maps',\n label: 'sidebar.maps',\n leftIcon: 'ion-map',\n children: [\n {\n key: 'googlemap',\n label: 'sidebar.googleMap',\n },\n {\n key: 'leafletmap',\n label: 'sidebar.leafletMap',\n },\n ],\n },\n {\n key: 'my-profile',\n label: 'sidebar.profile',\n leftIcon: 'ion-person',\n },\n {\n key: 'scrum-board',\n label: 'sidebar.scrumboard',\n leftIcon: 'ion-android-checkbox-outline',\n },\n {\n key: 'invoice',\n label: 'sidebar.invoice',\n leftIcon: 'ion-clipboard',\n },\n {\n key: 'youtubeSearch',\n label: 'sidebar.youtubeSearch',\n leftIcon: 'ion-social-youtube',\n },\n {\n key: 'calendar',\n label: 'sidebar.calendar',\n leftIcon: 'ion-calendar',\n },\n {\n key: 'notes',\n label: 'sidebar.notes',\n leftIcon: 'ion-ios-paper',\n },\n {\n key: 'todo',\n label: 'sidebar.todos',\n leftIcon: 'ion-android-checkbox-outline',\n },\n {\n key: 'firestorecrud',\n label: 'sidebar.firestorecrud',\n leftIcon: 'ion-fireball',\n\n children: [\n {\n key: 'articles',\n label: 'sidebar.firestorecrudarticle',\n },\n {\n key: 'investors',\n label: 'sidebar.firestorecrudinvestor',\n },\n ],\n },\n {\n key: 'contacts',\n label: 'sidebar.contacts',\n leftIcon: 'ion-android-person-add',\n },\n {\n key: 'shuffle',\n label: 'sidebar.shuffle',\n leftIcon: 'ion-grid',\n },\n {\n key: 'charts',\n label: 'sidebar.charts',\n leftIcon: 'ion-arrow-graph-up-right',\n children: [\n {\n key: 'googleChart',\n label: 'sidebar.googleCharts',\n },\n {\n key: 'reecharts',\n label: 'sidebar.recharts',\n },\n {\n key: 'reactChart2',\n label: 'sidebar.reactChart2',\n },\n {\n key: 'frappeChart',\n label: 'sidebar.frappeChart',\n },\n ],\n },\n {\n key: 'Forms',\n label: 'sidebar.forms',\n leftIcon: 'ion-android-mail',\n children: [\n {\n key: 'InputField',\n label: 'sidebar.input',\n },\n {\n key: 'editor',\n label: 'sidebar.editor',\n },\n {\n key: 'FormsWithValidation',\n label: 'sidebar.formsWithValidation',\n },\n {\n key: 'progress',\n label: 'sidebar.progress',\n },\n {\n key: 'button',\n label: 'sidebar.button',\n },\n {\n key: 'tab',\n label: 'sidebar.tab',\n },\n {\n key: 'checkbox',\n label: 'sidebar.checkbox',\n },\n {\n key: 'radiobox',\n label: 'sidebar.radiobox',\n },\n {\n key: 'selectbox',\n label: 'sidebar.selectbox',\n },\n {\n key: 'transfer',\n label: 'sidebar.transfer',\n },\n {\n key: 'autocomplete',\n label: 'sidebar.autocomplete',\n },\n ],\n },\n // {\n // key: 'gridLayout',\n // label: 'sidebar.boxOptions',\n // leftIcon: 'ion-cube'\n // },\n {\n key: 'uielements',\n label: 'sidebar.uiElements',\n leftIcon: 'ion-leaf',\n children: [\n {\n key: 'op_badge',\n label: 'sidebar.badge',\n },\n {\n key: 'op_card',\n label: 'sidebar.card2',\n },\n {\n key: 'op_carousel',\n label: 'sidebar.corusel',\n },\n {\n key: 'op_collapse',\n label: 'sidebar.collapse',\n },\n {\n key: 'op_popover',\n label: 'sidebar.popover',\n },\n {\n key: 'op_tooltip',\n label: 'sidebar.tooltip',\n },\n {\n key: 'op_tag',\n label: 'sidebar.tag',\n },\n {\n key: 'op_timeline',\n label: 'sidebar.timeline',\n },\n {\n key: 'dropdown',\n label: 'sidebar.dropdown',\n },\n {\n key: 'pagination',\n label: 'sidebar.pagination',\n },\n {\n key: 'rating',\n label: 'sidebar.rating',\n },\n {\n key: 'tree',\n label: 'sidebar.tree',\n },\n {\n key: 'swiperslider',\n label: 'sidebar.swiperslider',\n },\n ],\n },\n {\n key: 'advancedUielements',\n label: 'sidebar.advancedElements',\n leftIcon: 'ion-flash',\n children: [\n {\n key: 'reactDates',\n label: 'sidebar.reactDates',\n },\n {\n key: 'codeMirror',\n label: 'sidebar.codeMirror',\n },\n {\n key: 'uppy',\n label: 'sidebar.uppy',\n },\n {\n key: 'dropzone',\n label: 'sidebar.dropzone',\n },\n ],\n },\n {\n key: 'feedback',\n label: 'sidebar.feedback',\n leftIcon: 'ion-thumbsup',\n children: [\n {\n key: 'alert',\n label: 'sidebar.alert',\n },\n {\n key: 'modal',\n label: 'sidebar.modal',\n },\n {\n key: 'message',\n label: 'sidebar.message',\n },\n {\n key: 'notification',\n label: 'sidebar.notification',\n },\n {\n key: 'popConfirm',\n label: 'sidebar.popConfirm',\n },\n {\n key: 'spin',\n label: 'sidebar.spin',\n },\n ],\n },\n {\n key: 'table',\n label: 'sidebar.tables',\n leftIcon: 'ion-android-menu',\n children: [\n {\n key: 'table_ant',\n label: 'sidebar.antTables',\n },\n ],\n },\n {\n key: 'pages',\n label: 'sidebar.pages',\n leftIcon: 'ion-document-text',\n children: [\n {\n key: '404',\n label: 'sidebar.404',\n withoutDashboard: true,\n },\n {\n key: '500',\n label: 'sidebar.500',\n withoutDashboard: true,\n },\n {\n key: 'signin',\n label: 'sidebar.signIn',\n withoutDashboard: true,\n },\n {\n key: 'signup',\n label: 'sidebar.signUp',\n withoutDashboard: true,\n },\n {\n key: 'forgotpassword',\n label: 'sidebar.forgotPw',\n withoutDashboard: true,\n },\n {\n key: 'resetpassword',\n label: 'sidebar.resetPw',\n withoutDashboard: true,\n },\n\n // {\n // key: 'comingSoon',\n // label: 'sidebar.comingSoon',\n // withoutDashboard: true\n // }\n ],\n },\n {\n key: 'githubSearch',\n label: 'sidebar.githubSearch',\n leftIcon: 'ion-social-github',\n },\n {\n key: 'blank_page',\n label: 'sidebar.blankPage',\n leftIcon: 'ion-document',\n },\n];\nexport default options;\n","export const isServer = typeof window === 'undefined';\n","import { getDefaultPath } from '../../shared/library/helpers/url_sync';\nimport actions, { getView } from './actions';\nimport { isServer } from '../../shared/library/helpers/isServer';\nconst preKeys = getDefaultPath();\nconst initState = {\n collapsed: !isServer && window.innerWidth > 1220 ? false : true,\n view: !isServer && getView(window.innerWidth),\n height: !isServer && window.innerHeight,\n openDrawer: false,\n openKeys: preKeys,\n current: preKeys,\n};\n\nexport default function appReducer(state = initState, action) {\n switch (action.type) {\n case actions.COLLPSE_CHANGE:\n return {\n ...state,\n collapsed: !state.collapsed,\n };\n case actions.COLLPSE_OPEN_DRAWER:\n return {\n ...state,\n openDrawer: !state.openDrawer,\n };\n case actions.TOGGLE_ALL:\n if (state.view !== action.view || action.height !== state.height) {\n const height = action.height ? action.height : state.height;\n return {\n ...state,\n collapsed: action.collapsed,\n view: action.view,\n height,\n };\n }\n break;\n case actions.CHANGE_OPEN_KEYS:\n return {\n ...state,\n openKeys: action.openKeys,\n };\n case actions.CHANGE_CURRENT:\n return {\n ...state,\n current: action.current,\n };\n case actions.CLEAR_MENU:\n return {\n ...state,\n openKeys: [],\n current: [],\n };\n default:\n return state;\n }\n return state;\n}\n","import qs from 'qs';\nimport options from './options';\nimport { isServer } from './isServer';\n\nexport function getInitData() {\n if (!isServer) {\n const initData = qs.parse(window.location.search.slice(1));\n if (initData.toggle)\n initData.toggle.free_shipping =\n initData.toggle.free_shipping === 'true' ? true : undefined;\n return initData;\n }\n return false;\n}\nexport function setUrl(searchState) {\n if (!isServer) {\n const search = searchState\n ? `${window.location.pathname}?${qs.stringify(searchState)}`\n : '';\n window.history.pushState(searchState, null, search);\n }\n return;\n}\n\nexport function getDefaultPath() {\n const getParent = lastRoute => {\n const parent = [];\n if (!lastRoute) return parent;\n parent.push(lastRoute);\n options.forEach(option => {\n if (option.children) {\n option.children.forEach(child => {\n if (child.key === lastRoute) {\n parent.push(option.key);\n }\n });\n }\n });\n return parent;\n };\n if (!isServer && window.location.pathname) {\n const routes = window.location.pathname.split('/');\n if (routes.length > 1) {\n const lastRoute = routes[routes.length - 1];\n return getParent(lastRoute);\n }\n }\n return [];\n}\n","const DOCUMENT = 'ARTICLE_';\n\nconst actions = {\n LOAD_FROM_FIRESTORE: DOCUMENT + 'LOAD_FROM_FIRESTORE',\n LOAD_FROM_FIRESTORE_SUCCESS: DOCUMENT + 'LOAD_FROM_FIRESTORE_SUCCESS',\n LOAD_FROM_FIRESTORE_ERROR: DOCUMENT + 'LOAD_FROM_FIRESTORE_ERROR',\n\n SAVE_INTO_FIRESTORE: DOCUMENT + 'SAVE_INTO_FIRESTORE',\n SAVE_INTO_FIRESTORE_ERROR: DOCUMENT + 'SAVE_INTO_FIRESTORE_ERROR',\n\n RESET_FIRESTORE_DOCUMENTS: DOCUMENT + 'RESET_FIRESTORE_DOCUMENTS',\n RESET_FIRESTORE_DOCUMENTS_ERROR: DOCUMENT + 'RESET_FIRESTORE_DOCUMENTS_ERROR',\n\n TOGGLE_FIRESTORE_HANDLE_MODAL: DOCUMENT + 'TOGGLE_FIRESTORE_HANDLE_MODAL',\n FIRESTORE_UPDATE: DOCUMENT + 'FIRESTORE_UPDATE',\n\n loadFromFireStore: () => {\n return { type: actions.LOAD_FROM_FIRESTORE };\n },\n\n loadFromFireStoreSuccess: data => ({\n type: actions.LOAD_FROM_FIRESTORE_SUCCESS,\n payload: { data },\n }),\n\n loadFromFireStoreError: error => ({\n type: actions.LOAD_FROM_FIRESTORE_ERROR,\n payload: { error },\n }),\n\n saveIntoFireStore: (data, actionName = 'insert') => ({\n type: actions.SAVE_INTO_FIRESTORE,\n payload: { data, actionName },\n }),\n\n toggleModal: (data = null) => ({\n type: actions.TOGGLE_FIRESTORE_HANDLE_MODAL,\n payload: { data },\n }),\n\n update: data => ({\n type: actions.FIRESTORE_UPDATE,\n payload: { data },\n }),\n\n saveIntoFireStoreError: error => ({\n type: actions.SAVE_INTO_FIRESTORE_ERROR,\n payload: { error },\n }),\n\n resetFireStoreDocuments: () => ({\n type: actions.RESET_FIRESTORE_DOCUMENTS,\n }),\n\n resetFireStoreDocumentsError: error => ({\n type: actions.RESET_FIRESTORE_DOCUMENTS_ERROR,\n payload: { error },\n }),\n};\nexport default actions;\n","import actions from './actions';\n\nconst initState = {\n isLoading: false,\n errorMessage: false,\n articles: {},\n modalActive: false,\n article: {\n key: null,\n id: new Date().getTime(),\n title: '',\n slug: '',\n excerpt: '',\n status: 'draft', // publish\n description: '',\n created_at: new Date().getTime(),\n deleted_at: null, // soft delete\n },\n};\n\nexport default function reducer(\n state = initState,\n { type, payload, newRecord }\n) {\n switch (type) {\n case actions.LOAD_FROM_FIRESTORE:\n return {\n ...state,\n isLoading: true,\n errorMessage: false,\n modalActive: false,\n };\n case actions.LOAD_FROM_FIRESTORE_SUCCESS:\n return {\n ...state,\n isLoading: false,\n articles: payload.data,\n errorMessage: false,\n };\n case actions.LOAD_FROM_FIRESTORE_ERROR:\n return {\n ...state,\n isLoading: false,\n errorMessage: 'There is a loading problem',\n };\n case actions.TOGGLE_FIRESTORE_HANDLE_MODAL:\n return {\n ...state,\n modalActive: !state.modalActive,\n article: payload.data == null ? initState.article : payload.data,\n };\n case actions.FIRESTORE_UPDATE:\n return {\n ...state,\n article: payload.data,\n };\n default:\n return state;\n }\n}\n","import actions from './actions';\n\nconst initState = {\n accessToken: null,\n tokenType: '',\n expiresIn: 0,\n role: null,\n companyId: null,\n loggedTime: null,\n refreshToken: null,\n isShadow: false,\n basicInfo: {},\n userTokens: {},\n multiFactorVerify: {}\n};\n\nexport default function authReducer(state = initState, action) {\n let userTokens = {};\n switch (action.type) {\n case actions.LOGIN_SUCCESS:\n let session = { ...action.data };\n delete session.refreshToken;\n delete session.basicInfo;\n delete session.isShadow;\n userTokens[session.companyId] = session;\n return {\n ...initState,\n ...action.data,\n userTokens,\n };\n case actions.MULTI_FACTOR_LOGIN_REQUEST:\n return {\n ...initState,\n multiFactorVerify: action.data,\n }\n case actions.SWITCH_ACCESS_TOKEN:\n userTokens = state.userTokens || {};\n userTokens[action.data.companyId] = action.data;\n return {\n ...state,\n ...action.data,\n userTokens,\n };\n case actions.UPDATE_USERINFO:\n return {\n ...state,\n basicInfo: {\n ...state.basicInfo,\n ...action.data,\n },\n };\n case actions.REFRESHING_TOKEN:\n return {\n ...state,\n freshTokenPromise: null,\n };\n case actions.DONE_REFRESHING_TOKEN:\n return {\n ...state,\n freshTokenPromise: action.freshTokenPromise,\n };\n\n case actions.LOGOUT:\n return {};\n default:\n return state;\n }\n}\n","import React from 'react';\n\nconst ReactComponenta1 = () =>

Hello

;\nconst ReactComponenta2 = () => ;\nconst ReactComponenta3 = () => ;\n\nconst allBox = [\n {\n uid: 'a1',\n title: 'Box-1',\n content:\n \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\",\n reactComponent: ReactComponenta1,\n },\n {\n uid: 'a2',\n title: 'Box-2',\n content:\n \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\",\n reactComponent: ReactComponenta2,\n },\n {\n uid: 'a3',\n title: 'Box-3',\n content:\n \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\",\n reactComponent: ReactComponenta3,\n },\n {\n uid: 'a4',\n title: 'Box-4',\n content:\n \"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\",\n reactComponent: ReactComponenta3,\n },\n];\n\nexport default allBox;\n","const boxActions = {\n DELETE_BOX: 'DELETE_BOX',\n SAVE_BOX: 'SAVE_BOX',\n deleteBox: uid => ({\n type: boxActions.DELETE_BOX,\n uid,\n }),\n saveBox: box => ({\n type: boxActions.SAVE_BOX,\n box,\n }),\n};\nexport default boxActions;\n","import allBox from './DemoBox';\nimport boxActions from './actions';\nconst generateLayout = () => {\n let y = -2;\n const h = 2;\n const w = 48;\n allBox.map((box, index) => {\n let temp = {};\n temp.lg = {\n x: index % 2 === 0 ? 0 : 48,\n y: y + h,\n h,\n w,\n i: box.uid.toString(),\n };\n temp.md = {\n x: index % 2 === 0 ? 0 : 48,\n y: y + h,\n h,\n w,\n i: box.uid.toString(),\n };\n temp.sm = {\n x: index % 2 === 0 ? 0 : 48,\n y: y + h,\n h,\n w,\n i: box.uid.toString(),\n };\n temp.xs = {\n x: index % 2 === 0 ? 0 : 48,\n y: y + h,\n h,\n w,\n i: box.uid.toString(),\n };\n temp.xxs = {\n x: index % 2 === 0 ? 0 : 48,\n y: y + h,\n h,\n w,\n i: box.uid.toString(),\n };\n allBox[index].size = temp;\n return null;\n });\n return allBox;\n};\n\nconst initState = {\n allBox: generateLayout(),\n reload: false,\n};\n\nexport default function boxReducer(state = initState, action) {\n const { allBox } = state;\n switch (action.type) {\n case boxActions.DELETE_BOX:\n let tempAllBox = [];\n allBox.map(box => {\n if (box.uid.toString() !== action.uid.toString()) {\n tempAllBox.push(box);\n }\n return null;\n });\n return {\n ...state,\n allBox: tempAllBox,\n reload: true,\n };\n case boxActions.SAVE_BOX:\n return {\n ...state,\n reload: false,\n allBox: action.box,\n };\n default:\n return state;\n }\n}\n","const calendarActions = {\n CALENDAR_VIEW: 'CALENDAR_VIEW',\n CALENDAR_EVENTS: 'CALENDAR_EVENTS',\n changeView: view => ({\n type: calendarActions.CALENDAR_VIEW,\n view,\n }),\n changeEvents: events => ({\n type: calendarActions.CALENDAR_EVENTS,\n events,\n }),\n};\nexport default calendarActions;\n","import moment from 'moment';\nconst events = [\n {\n allDay: false,\n start: '2017-06-13T12:41:31.046Z',\n end: '2017-06-13T12:41:31.046Z',\n },\n {\n allDay: true,\n start: '2017-06-06T18:22:42.716Z',\n end: '2017-06-06T18:22:42.716Z',\n },\n {\n allDay: false,\n start: '2017-06-14T18:53:31.353Z',\n end: '2017-06-14T18:53:31.353Z',\n },\n {\n allDay: true,\n start: '2017-06-06T10:50:35.587Z',\n end: '2017-06-06T10:50:35.587Z',\n },\n {\n allDay: true,\n start: '2017-06-01T07:26:27.020Z',\n end: '2017-06-01T07:26:27.020Z',\n },\n {\n allDay: false,\n start: '2017-06-01T04:19:19.302Z',\n end: '2017-06-01T04:19:19.302Z',\n },\n {\n allDay: true,\n start: '2017-06-05T08:21:30.519Z',\n end: '2017-06-05T08:21:30.519Z',\n },\n {\n allDay: true,\n start: '2017-06-06T12:33:34.094Z',\n end: '2017-06-06T12:33:34.094Z',\n },\n {\n allDay: false,\n start: '2017-06-06T19:08:51.789Z',\n end: '2017-06-06T19:08:51.789Z',\n },\n {\n allDay: false,\n start: '2017-06-04T12:53:06.477Z',\n end: '2017-06-04T12:53:06.477Z',\n },\n {\n allDay: true,\n start: '2017-05-31T08:13:58.232Z',\n end: '2017-05-31T08:13:58.232Z',\n },\n {\n allDay: true,\n start: '2017-05-31T20:49:56.502Z',\n end: '2017-05-31T20:49:56.502Z',\n },\n {\n allDay: false,\n start: '2017-05-25T16:37:46.342Z',\n end: '2017-05-25T16:37:46.342Z',\n },\n {\n allDay: true,\n start: '2017-05-22T20:55:43.440Z',\n end: '2017-05-22T20:55:43.440Z',\n },\n {\n allDay: true,\n start: '2017-06-08T01:26:44.401Z',\n end: '2017-06-08T01:26:44.401Z',\n },\n {\n allDay: false,\n start: '2017-06-13T15:13:00.444Z',\n end: '2017-06-13T15:13:00.444Z',\n },\n {\n allDay: true,\n start: '2017-06-15T15:07:34.588Z',\n end: '2017-06-15T15:07:34.588Z',\n },\n {\n allDay: true,\n start: '2017-06-17T05:51:03.042Z',\n end: '2017-06-17T05:51:03.042Z',\n },\n {\n allDay: false,\n start: '2017-06-04T05:44:43.848Z',\n end: '2017-06-04T05:44:43.848Z',\n },\n {\n allDay: true,\n start: '2017-05-27T18:52:12.327Z',\n end: '2017-05-27T18:52:12.327Z',\n },\n {\n allDay: false,\n start: '2017-06-03T10:56:32.981Z',\n end: '2017-06-03T10:56:32.981Z',\n },\n {\n allDay: true,\n start: '2017-06-04T23:39:50.313Z',\n end: '2017-06-04T23:39:50.313Z',\n },\n {\n allDay: false,\n start: '2017-06-13T01:47:36.119Z',\n end: '2017-06-13T01:47:36.119Z',\n },\n {\n allDay: true,\n start: '2017-06-09T10:53:59.669Z',\n end: '2017-06-09T10:53:59.669Z',\n },\n {\n allDay: false,\n start: '2017-06-06T23:37:30.150Z',\n end: '2017-06-06T23:37:30.150Z',\n },\n {\n allDay: false,\n start: '2017-05-24T15:47:41.647Z',\n end: '2017-05-24T15:47:41.647Z',\n },\n {\n allDay: false,\n start: '2017-05-20T09:37:22.294Z',\n end: '2017-05-20T09:37:22.294Z',\n },\n {\n allDay: true,\n start: '2017-05-22T04:18:23.139Z',\n end: '2017-05-22T04:18:23.139Z',\n },\n {\n allDay: true,\n start: '2017-05-21T12:52:59.331Z',\n end: '2017-05-21T12:52:59.331Z',\n },\n {\n allDay: false,\n start: '2017-06-05T19:12:46.218Z',\n end: '2017-06-05T19:12:46.218Z',\n },\n {\n allDay: false,\n start: '2017-06-18T05:42:32.376Z',\n end: '2017-06-18T05:42:32.376Z',\n },\n {\n allDay: false,\n start: '2017-06-13T08:25:55.959Z',\n end: '2017-06-13T08:25:55.959Z',\n },\n {\n allDay: true,\n start: '2017-06-13T06:24:45.567Z',\n end: '2017-06-13T06:24:45.567Z',\n },\n {\n allDay: false,\n start: '2017-06-10T16:02:57.478Z',\n end: '2017-06-10T16:02:57.478Z',\n },\n {\n allDay: false,\n start: '2017-06-13T18:05:48.180Z',\n end: '2017-06-13T18:05:48.180Z',\n },\n {\n allDay: false,\n start: '2017-06-17T11:41:16.372Z',\n end: '2017-06-17T11:41:16.372Z',\n },\n {\n allDay: true,\n start: '2017-05-25T01:29:20.872Z',\n end: '2017-05-25T01:29:20.872Z',\n },\n {\n allDay: false,\n start: '2017-06-01T18:23:07.322Z',\n end: '2017-06-01T18:23:07.322Z',\n },\n {\n allDay: false,\n start: '2017-05-22T04:20:36.858Z',\n end: '2017-05-22T04:20:36.858Z',\n },\n {\n allDay: false,\n start: '2017-05-26T12:05:32.983Z',\n end: '2017-05-26T12:05:32.983Z',\n },\n {\n allDay: false,\n start: '2017-06-01T13:57:24.817Z',\n end: '2017-06-01T13:57:24.817Z',\n },\n {\n allDay: false,\n start: '2017-05-29T17:58:20.674Z',\n end: '2017-05-29T17:58:20.674Z',\n },\n {\n allDay: false,\n start: '2017-06-11T01:19:28.050Z',\n end: '2017-06-11T01:19:28.050Z',\n },\n {\n allDay: false,\n start: '2017-05-31T07:10:27.044Z',\n end: '2017-05-31T07:10:27.044Z',\n },\n {\n allDay: true,\n start: '2017-05-26T09:00:39.158Z',\n end: '2017-05-26T09:00:39.158Z',\n },\n {\n allDay: true,\n start: '2017-05-31T17:15:18.611Z',\n end: '2017-05-31T17:15:18.611Z',\n },\n {\n allDay: false,\n start: '2017-06-10T19:42:35.124Z',\n end: '2017-06-10T19:42:35.124Z',\n },\n {\n allDay: false,\n start: '2017-05-20T18:40:49.210Z',\n end: '2017-05-20T18:40:49.210Z',\n },\n {\n allDay: false,\n start: '2017-06-04T11:36:22.540Z',\n end: '2017-06-04T11:36:22.540Z',\n },\n {\n allDay: false,\n start: '2017-06-13T20:53:08.880Z',\n end: '2017-06-13T20:53:08.880Z',\n },\n];\n\nconst datediff = new moment(new Date()).diff(\n new moment('2017-06-01T18:23:07.322Z'),\n 'days'\n);\nevents.forEach((event, index) => {\n events[index].id = `${index + 1}`;\n events[index].title = `Demo event ${index + 1}`;\n events[index].desc = `Desc of event ${index + 1}`;\n events[index].start = new moment(event.start).add(datediff, 'days').toDate();\n events[index].end = new moment(event.end).add(datediff, 'days').toDate();\n});\nexport default events.splice(0, 10);\n","import actions from './actions';\nimport events from './DemoEvents';\n\nconst initState = {\n events,\n view: 'month',\n};\n\nexport default function calendarReducer(state = initState, action) {\n switch (action.type) {\n case actions.CALENDAR_VIEW:\n return {\n ...state,\n view: action.view,\n };\n case actions.CALENDAR_EVENTS:\n return {\n ...state,\n events: action.events,\n };\n default:\n return state;\n }\n}\n","import { Popconfirm } from 'antd';\n\nexport default Popconfirm;\n","import React from 'react';\nimport { DeleteCell } from '../../components/Tables/HelperCells';\nfunction createColumns(editColumn, deleteColumn) {\n return [\n {\n title: 'Number',\n dataIndex: 'number',\n rowKey: 'number',\n },\n {\n title: 'Full Name',\n dataIndex: 'name',\n rowKey: 'name',\n },\n {\n title: 'Notes',\n dataIndex: 'notes',\n rowKey: 'notes',\n },\n {\n title: '',\n rowKey: 'action',\n render: (text, record) => (\n \n {\n deleteColumn(record);\n }}\n />\n \n ),\n },\n ];\n}\n\nconst fakedata = [\n {\n id: 3,\n key: 1,\n number: '**** **** **** 4243',\n name: 'John Brown',\n notes: 'Nulla vitae elit libero, a pharetra augue.',\n },\n {\n id: 2,\n key: 2,\n number: '**** **** **** 4242',\n name: 'Jim Green',\n notes: 'Nullam id dolor id nibh ultricies vehicula ut id elit.',\n },\n {\n id: 1,\n key: 3,\n number: '**** **** **** 4241',\n name: 'Joe Black',\n notes: 'Nulla vitae elit libero, a pharetra augue.',\n },\n];\nexport { createColumns, fakedata };\n","import { fakedata } from './config';\nconst cardActions = {\n CHANGE_CARDS: 'CHANGE_CARDS',\n addCard: card => {\n return (dispatch, getState) => {\n const cards = [card, ...getState().Cards.cards];\n dispatch({\n type: cardActions.CHANGE_CARDS,\n cards,\n });\n };\n },\n editCard: editCard => {\n return (dispatch, getState) => {\n const oldCards = getState().Cards.cards;\n const cards = [];\n oldCards.forEach(card => {\n if (card.id !== editCard.id) {\n cards.push(card);\n } else {\n cards.push(editCard);\n }\n });\n dispatch({\n type: cardActions.CHANGE_CARDS,\n cards,\n });\n };\n },\n deleteCard: deletedCard => {\n return (dispatch, getState) => {\n const oldCards = getState().Cards.cards;\n const cards = [];\n oldCards.forEach(card => {\n if (card.id !== deletedCard.id) {\n cards.push(card);\n }\n });\n dispatch({\n type: cardActions.CHANGE_CARDS,\n cards,\n });\n };\n },\n restoreCards: () => {\n return {\n type: cardActions.CHANGE_CARDS,\n cards: fakedata,\n };\n },\n};\nexport default cardActions;\n","import { fakedata } from './config';\nimport cardActions from './actions';\n\nconst cards = fakedata;\n\nconst initState = {\n cards,\n};\n\nexport default function cardReducer(state = initState, action) {\n switch (action.type) {\n case cardActions.CHANGE_CARDS:\n return {\n ...state,\n cards: action.cards,\n };\n default:\n return state;\n }\n}\n","import notification from '../../components/Notification';\n\nconst getChatRoom = (chatRooms, receiverId) => {\n let selectedChatroom;\n chatRooms.forEach(chatroom => {\n if (chatroom.otherUserId === receiverId) {\n selectedChatroom = chatroom;\n }\n });\n return selectedChatroom;\n};\nconst actions = {\n CHAT_INIT: 'CHAT_INIT',\n CHAT_INIT_SAGA: 'CHAT_INIT_SAGA',\n CHAT_UPDATE_CHATROOM: 'CHAT_UPDATE_CHATROOM',\n CHAT_TOGGLE_COMPOSE: 'CHAT_TOGGLE_COMPOSE',\n CHAT_SET_TOGGLE_VIEW_PROFILE: 'CHAT_SET_TOGGLE_VIEW_PROFILE',\n CHAT_SET_TOGGLE_COMPOSED_ID: 'CHAT_SET_TOGGLE_COMPOSED_ID',\n CHAT_SEND_MESSAGE: 'CHAT_SEND_MESSAGE',\n CHAT_UPDATE_CHATROOM_SAGA: 'CHAT_UPDATE_CHATROOM_SAGA',\n TOGGLE_MOBILE_LIST: 'TOGGLE_MOBILE_LIST',\n TOGGLE_MOBILE_PROFILE: 'TOGGLE_MOBILE_PROFILE',\n RESTORE_DEMO_DATA: 'RESTORE_DEMO_DATA',\n RESTORE_DEMO_DATA_DONE: 'RESTORE_DEMO_DATA_DONE',\n UPDATE_NEW_USER_PROPS: 'UPDATE_NEW_USER_PROPS',\n ADD_NEW_USER: 'ADD_NEW_USER',\n ADD_NEW_USER_SAGA: 'ADD_NEW_USER_SAGA',\n NEW_MESSAGE_SUCCESFULL: 'NEW_MESSAGE_SUCCESFULL',\n chatInit: userId => ({\n type: actions.CHAT_INIT,\n payload: { userId },\n }),\n toggleCompose: () => ({ type: actions.CHAT_TOGGLE_COMPOSE }),\n toggleViewProfile: viewProfile => ({\n type: actions.CHAT_SET_TOGGLE_VIEW_PROFILE,\n viewProfile,\n }),\n setComposedId: id => ({ type: actions.CHAT_SET_TOGGLE_COMPOSED_ID, id }),\n setSelectedChatroom: chatRoom => ({\n type: actions.CHAT_UPDATE_CHATROOM_SAGA,\n payload: { chatRoom, selected: true },\n }),\n // sendMessage: text => {\n // return (dispatch, getState) => {\n // const {\n // chatRooms,\n // composedId,\n // openCompose,\n // selectedChatRoom,\n // } = getState().Chat;\n // let chatRoom = selectedChatRoom;\n\n // if (openCompose) {\n // if (!composedId) {\n // notification('error', 'Please select receiver');\n // dispatch({ type: 'null' });\n // } else {\n // chatRoom = getChatRoom(chatRooms, composedId);\n // }\n // }\n // dispatch({\n // type: actions.CHAT_SEND_MESSAGE,\n // payload: { chatRoom, text, openCompose },\n // });\n // };\n // },\n sendMessage: message => ({\n type: actions.CHAT_SEND_MESSAGE,\n payload: message,\n }),\n toggleMobileList: mobileActiveList => ({\n type: actions.TOGGLE_MOBILE_LIST,\n mobileActiveList,\n }),\n toggleMobileProfile: mobileActiveProfile => ({\n type: actions.TOGGLE_MOBILE_PROFILE,\n mobileActiveProfile,\n }),\n restoreData: demoData => ({\n type: actions.RESTORE_DEMO_DATA,\n demoData,\n }),\n updateNewUsersProp: addNewUsersProp => ({\n type: actions.UPDATE_NEW_USER_PROPS,\n addNewUsersProp,\n }),\n addNewUser: (user, addNewUsersProp) => ({\n type: actions.ADD_NEW_USER,\n user,\n addNewUsersProp,\n }),\n};\nexport default actions;\n","import actions from './actions';\n\nconst initState = {\n users: null,\n chatRooms: [],\n messages: [],\n selectedChatRoom: null,\n openCompose: false,\n viewProfile: false,\n composedId: null,\n loading: true,\n error: false,\n mobileActiveList: true,\n mobileActiveProfile: false,\n restoringData: false,\n addNewUsersProp: {\n modalActive: false,\n },\n};\nconst sortTimeStamp = (optionA, optionB) =>\n optionA.messageTime - optionB.messageTime;\nconst sortChatRooms = (optionA, optionB) =>\n optionB.lastMessageTime - optionA.lastMessageTime;\nexport default function reducer(state = initState, action) {\n switch (action.type) {\n case actions.CHAT_INIT_SAGA: {\n return {\n ...state,\n userId: action.userId,\n user: action.user,\n users: action.users,\n chatRooms: action.chatRooms,\n messages: action.messages,\n selectedChatRoom: action.chatRooms[0],\n loading: false,\n };\n }\n case actions.CHAT_UPDATE_CHATROOM: {\n const { chatRoom, messages, selected } = action;\n return {\n ...state,\n chatRooms: state.chatRooms\n .map(chatroom =>\n chatroom.id === chatRoom.id\n ? {\n ...chatroom,\n lastMessage: chatRoom.lastMessage,\n lastMessageTime: chatRoom.lastMessageTime,\n }\n : chatroom\n )\n .sort(sortChatRooms),\n composedId: null,\n openCompose: false,\n selectedChatRoom: selected ? chatRoom : state.selectedChatRoom,\n viewProfile: selected ? false : state.viewProfile,\n messages: messages ? messages.sort(sortTimeStamp) : state.messages,\n };\n }\n case actions.CHAT_TOGGLE_COMPOSE:\n return {\n ...state,\n openCompose: !state.openCompose,\n viewProfile: false,\n };\n case actions.CHAT_SET_TOGGLE_COMPOSED_ID:\n return {\n ...state,\n composedId: action.id,\n };\n case actions.CHAT_SET_TOGGLE_VIEW_PROFILE:\n return {\n ...state,\n viewProfile: action.viewProfile,\n };\n case actions.TOGGLE_MOBILE_LIST:\n return {\n ...state,\n mobileActiveList: action.mobileActiveList,\n };\n case actions.TOGGLE_MOBILE_PROFILE:\n return {\n ...state,\n mobileActiveProfile: action.mobileActiveProfile,\n };\n case actions.RESTORE_DEMO_DATA:\n return {\n ...state,\n restoringData: true,\n };\n case actions.RESTORE_DEMO_DATA_DONE:\n return {\n ...state,\n restoringData: false,\n };\n case actions.UPDATE_NEW_USER_PROPS:\n return {\n ...state,\n addNewUsersProp: action.addNewUsersProp,\n };\n case actions.NEW_MESSAGE_SUCCESFULL:\n return {\n ...state,\n openCompose: false,\n composedId: null,\n };\n case actions.ADD_NEW_USER_SAGA:\n return {\n ...state,\n addNewUsersProp: { modalActive: false },\n users: [action.user, ...state.users],\n chatRooms: [action.chatRoom, ...state.chatRooms],\n };\n\n default:\n return state;\n }\n}\n","export const otherAttributes = [\n { title: 'Mobile', value: 'mobile', type: 'phoneNumber' },\n { title: 'Home', value: 'home', type: 'phoneNumber' },\n { title: 'Company', value: 'company', type: 'company' },\n { title: 'Work', value: 'work', type: 'phoneNumber' },\n { title: 'Notes', value: 'note', type: 'paragraph' },\n];\n\nconst contactList = JSON.parse(\n `[{\n \"id\": 22143,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/dvdwinden/128.jpg\",\n \"firstName\": \"Benjamin\",\n \"lastName\": \"Jacobi\",\n \"name\": \"Benjamin Jacobi\",\n \"mobile\": \"(023) 302-3161 x60451\",\n \"home\": \"(136) 403-0476 x8388\",\n \"company\": \"Casper Inc\",\n \"work\": \"(399) 506-9438\",\n \"note\": \"Quisquam et nisi. Dicta in ut eos consequatur ipsum omnis. Quisquam doloremque error praesentium sapiente et vitae. Omnis facere sint nulla similique vel voluptatem officia deleniti.\"\n}, {\n \"id\": 17385,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/antonyzotov/128.jpg\",\n \"firstName\": \"Clementina\",\n \"lastName\": \"Hahn\",\n \"name\": \"Clementina Hahn\",\n \"mobile\": \"686.292.3548 x7219\",\n \"home\": \"447-343-4864 x414\",\n \"company\": \"Marquardt Inc\",\n \"work\": \"299-721-6828 x856\",\n \"note\": \"Distinctio voluptas repellendus rerum temporibus deserunt et corrupti sint. Odit sit labore quia. Perferendis iure eos qui tempore ex saepe consequuntur accusamus ipsa. Eius consectetur nam quas. Laborum aperiam hic dolorum quae autem consequatur.\"\n}, {\n \"id\": 85838,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/bungiwan/128.jpg\",\n \"firstName\": \"Clinton\",\n \"lastName\": \"Goyette\",\n \"name\": \"Clinton Goyette\",\n \"mobile\": \"(913) 127-1563 x082\",\n \"home\": \"(843) 501-8804\",\n \"company\": \"Feil - Goodwin\",\n \"work\": \"732.111.8883\",\n \"note\": \"Maiores animi et quidem. Ducimus voluptate est consequatur ut vitae in. Ut fugit sit ab blanditiis ab occaecati soluta quis.\"\n}, {\n \"id\": 2791,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/benefritz/128.jpg\",\n \"firstName\": \"Forrest\",\n \"lastName\": \"Klein\",\n \"name\": \"Forrest Klein\",\n \"mobile\": \"174-628-5802 x8324\",\n \"home\": \"(047) 141-0247\",\n \"company\": \"Wilkinson - Howe\",\n \"work\": \"1-624-238-9252\",\n \"note\": \"Sit et non debitis. Quis atque facilis et sed. Illum adipisci deserunt corporis modi necessitatibus at numquam neque sint.\"\n}, {\n \"id\": 67493,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/salleedesign/128.jpg\",\n \"firstName\": \"General\",\n \"lastName\": \"Kub\",\n \"name\": \"General Kub\",\n \"mobile\": \"779.482.9824\",\n \"home\": \"(698) 858-0337 x3273\",\n \"company\": \"Moen Group\",\n \"work\": \"881.768.7522\",\n \"note\": \"Quibusdam dolorem minima ea enim nostrum eos. Corrupti dolore velit molestiae nostrum error qui. Sit qui maxime sed quisquam rem cupiditate. Iste ex quidem. Ipsam et quia omnis facere blanditiis.\"\n}, {\n \"id\": 75593,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/stalewine/128.jpg\",\n \"firstName\": \"Lon\",\n \"lastName\": \"Wunsch\",\n \"name\": \"Lon Wunsch\",\n \"mobile\": \"(792) 607-6366 x88975\",\n \"home\": \"447.683.3799 x38668\",\n \"company\": \"Johns, Gibson and Schinner\",\n \"work\": \"(735) 859-7674\",\n \"note\": \"Velit non voluptas sed sit pariatur earum unde neque. Incidunt nam reprehenderit non mollitia. Incidunt quo illum modi ex eos consequuntur eius nihil itaque. Quis tenetur ratione repudiandae ea et architecto dolorem porro. Rem non consectetur ea iste.\"\n}, {\n \"id\": 90096,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/cherif_b/128.jpg\",\n \"firstName\": \"Mabelle\",\n \"lastName\": \"Kling\",\n \"name\": \"Mabelle Kling\",\n \"mobile\": \"499-736-0779 x2409\",\n \"home\": \"1-910-529-7393 x222\",\n \"company\": \"Bins, Murray and Ryan\",\n \"work\": \"905.098.6372\",\n \"note\": \"Et et rerum placeat beatae doloribus earum et reiciendis. Nisi suscipit ad dolor. Tenetur hic quia nihil deleniti inventore. Blanditiis aliquam ea ea. Omnis consequatur itaque est rerum sed reiciendis laboriosam reiciendis. Consectetur ullam et laudantium at itaque aut qui et molestiae.\"\n}, {\n \"id\": 15783,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/ponchomendivil/128.jpg\",\n \"firstName\": \"Maryse\",\n \"lastName\": \"Koss\",\n \"name\": \"Maryse Koss\",\n \"mobile\": \"668-920-9662 x610\",\n \"home\": \"075.864.1819 x8265\",\n \"company\": \"Smitham Inc\",\n \"work\": \"468.534.0931\",\n \"note\": \"Libero perferendis aut repudiandae quas. Omnis aut enim voluptas magnam harum quisquam illo aliquid aliquam. Dolor et et vel nihil quibusdam fugit facere adipisci aut. Repellat quia est beatae animi ipsa. Ad sit eligendi pariatur quia illo atque qui voluptatem excepturi.\"\n}, {\n \"id\": 42122,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/traneblow/128.jpg\",\n \"firstName\": \"Maude\",\n \"lastName\": \"Grant\",\n \"name\": \"Maude Grant\",\n \"mobile\": \"1-077-505-0657\",\n \"home\": \"062.968.4841 x62748\",\n \"company\": \"Thiel, Bauch and Mosciski\",\n \"work\": \"1-318-593-2619 x206\",\n \"note\": \"Ut sit fuga quibusdam. Ullam non necessitatibus voluptatem quidem est dignissimos dolores quaerat. Aspernatur fugiat et.\"\n}, {\n \"id\": 5869,\n \"avatar\": \"https://s3.amazonaws.com/uifaces/faces/twitter/silv3rgvn/128.jpg\",\n \"firstName\": \"Orrin\",\n \"lastName\": \"Harris\",\n \"name\": \"Orrin Harris\",\n \"mobile\": \"871.567.4877\",\n \"home\": \"(466) 574-3352\",\n \"company\": \"Haag Group\",\n \"work\": \"1-908-422-4964\",\n \"note\": \"Aut sequi quae omnis ut qui quaerat. Dolor et fugit blanditiis laudantium. Libero modi officiis consequatur corrupti reiciendis aut qui nemo doloribus. Consequatur voluptatibus quis vero numquam aspernatur a sit laborum voluptates.\"\n}]`\n);\n\nexport default class fakeData {\n constructor(size = 10) {\n this.size = size;\n this.datas = [];\n }\n dataModel(index) {\n return contactList[index];\n }\n getObjectAt(index) {\n if (index < 0 || index > this.size) {\n return undefined;\n }\n if (this.datas[index] === undefined) {\n this.datas[index] = this.dataModel(index);\n }\n return this.datas[index];\n }\n getAll() {\n if (this.datas.length < this.size) {\n for (let i = 0; i < this.size; i++) {\n this.getObjectAt(i);\n }\n }\n return this.datas\n .slice()\n .sort(\n (contact1, contact2) =>\n `${contact1.firstName}${contact1.LastName}`.toUpperCase() >\n `${contact2.firstName}${contact2.LastName}`.toUpperCase()\n );\n }\n\n getSize() {\n return this.size;\n }\n}\n","import { contacts } from './reducer';\n\nfunction ascendingSort(contact1, contact2) {\n const name1 = contact1.name ? contact1.name.toUpperCase() : '~';\n const name2 = contact2.name ? contact2.name.toUpperCase() : '~';\n return name1 > name2 ? 1 : name1 === name2 ? 0 : -1;\n}\n\nconst contactActions = {\n ADD_CONTACT: 'ADD_CONTACT',\n EDIT_CONTACT: 'EDIT_CONTACT',\n DELETE__CONTACT: 'DELETE__CONTACT',\n CHANGE_CONTACT: 'CHANGE_CONTACT',\n EDIT_VIEW: 'EDIT_VIEW',\n changeContact: id => ({\n type: contactActions.CHANGE_CONTACT,\n id,\n }),\n addContact: () => {\n const newContact = {\n id: new Date(),\n firstName: '',\n avatar: contacts[new Date() % 10].avatar,\n LastName: '',\n mobile: '',\n home: '',\n name: '',\n company: '',\n work: '',\n note: '',\n };\n return (dispatch, getState) => {\n dispatch({\n type: contactActions.ADD_CONTACT,\n contacts: [...getState().Contacts.contacts, newContact],\n selectedId: newContact.id,\n });\n };\n },\n editContact: newContact => {\n return (dispatch, getState) => {\n const contacts = getState().Contacts.contacts;\n const newContacts = [];\n contacts.forEach(contact => {\n if (contact.id === newContact.id) {\n newContacts.push(newContact);\n } else {\n newContacts.push(contact);\n }\n });\n dispatch({\n type: contactActions.EDIT_CONTACT,\n contacts: newContacts.sort(ascendingSort),\n });\n };\n },\n deleteContact: id => {\n return (dispatch, getState) => {\n const contacts = getState().Contacts.contacts;\n const seectedId = getState().Contacts.seectedId;\n const newContacts = [];\n contacts.forEach(contact => {\n if (contact.id === id) {\n } else {\n newContacts.push(contact);\n }\n });\n dispatch({\n type: contactActions.DELETE__CONTACT,\n contacts: newContacts,\n seectedId: id === seectedId ? undefined : seectedId,\n });\n };\n },\n viewChange: view => ({\n type: contactActions.EDIT_VIEW,\n view,\n }),\n};\nexport default contactActions;\n","import fakeData from './data';\nimport contactActions from './actions';\n\nconst contacts = new fakeData(10).getAll();\n\nconst initState = {\n contacts,\n seectedId: contacts[0].id,\n editView: false,\n};\n\nexport default function contactReducer(state = initState, action) {\n switch (action.type) {\n case contactActions.CHANGE_CONTACT:\n return {\n ...state,\n seectedId: action.id,\n editView: false,\n };\n case contactActions.ADD_CONTACT:\n return {\n ...state,\n contacts: action.contacts,\n seectedId: action.selectedId,\n editView: true,\n };\n case contactActions.EDIT_CONTACT:\n return {\n ...state,\n contacts: action.contacts,\n };\n case contactActions.DELETE__CONTACT:\n return {\n ...state,\n contacts: action.contacts,\n seectedId: action.seectedId,\n };\n case contactActions.EDIT_VIEW:\n return {\n ...state,\n editView: action.view,\n };\n default:\n return state;\n }\n}\n\nexport { contacts };\n","import actions from './actions';\nimport authActions from '../auth/actions';\n\nconst initState = { data: null, nodes: [], loading: false };\n\nexport default function dashboardReducer(state = initState, action) {\n switch (action.type) {\n case actions.DASHBOARD_SUCCESS:\n return {\n ...state,\n data: action.data,\n };\n case actions.DASHBOARD_GET_NODES_REQUEST:\n return {\n ...state,\n loading: true,\n };\n case actions.DASHBOARD_GET_NODES_SUCCESS:\n return {\n ...state,\n loading: false,\n nodes: action.data,\n };\n case actions.DASHBOARD_ERROR:\n return initState;\n case authActions.LOGIN_SUCCESS:\n return initState;\n default:\n return state;\n }\n}\n","const drawerActions = {\n SHOW_DRAWER: 'SHOW_DRAWER',\n HIDE_DRAWER: 'HIDE_DRAWER',\n\n openDrawer: payload => ({\n type: drawerActions.SHOW_DRAWER,\n payload,\n }),\n closeDrawer: () => ({\n type: drawerActions.HIDE_DRAWER,\n }),\n};\n\nexport default drawerActions;\n","import drawerActions from './actions';\n\nconst initialState = {\n drawerVisibility: false,\n drawerType: '',\n drawerProps: {},\n};\n\nexport default function drawerReducer(state = initialState, action) {\n switch (action.type) {\n case drawerActions.SHOW_DRAWER:\n return {\n drawerVisibility: true,\n drawerType: action.payload.drawerType,\n drawerProps: action.payload.drawerProps,\n };\n case drawerActions.HIDE_DRAWER:\n return {\n ...state,\n drawerVisibility: false,\n };\n default:\n return state;\n }\n}\n","import clone from 'clone';\n\nlet count = 0;\n\nfunction getOption() {\n const option = {\n title: {},\n tooltip: { trigger: 'axis' },\n Legend: { data: ['latest transaction price', 'pre - order queue'] },\n toolbox: {\n show: true,\n feature: {\n dataView: {\n readOnly: false,\n title: 'View',\n lang: ['data view', 'turn off', 'refresh'],\n },\n restore: {\n title: 'Reset',\n },\n saveAsImage: {\n title: 'Download',\n },\n },\n },\n grid: {\n top: 60,\n left: 30,\n right: 60,\n bottom: 30,\n },\n dataZoom: {\n show: false,\n start: 0,\n end: 100,\n },\n visualMap: {\n show: false,\n min: 0,\n max: 1000,\n color: [\n '#554faf',\n '#f4f5f6',\n '#3f2159',\n '#9d54ad',\n '#968acf',\n '#6f68cb',\n '#d2d1d6',\n '#d78da8',\n '#f6fbfd',\n '#584ba1',\n '#d7edf8',\n '#914692',\n '#c64187',\n '#98b0c8',\n '#a3d1e6',\n '#cad8e3',\n '#795cae',\n '#de8e90',\n '#f09875',\n '#e0a695',\n '#e86e7a',\n ],\n },\n xAxis: [\n {\n type: 'category',\n boundaryGap: true,\n data: (() => {\n let now = new Date();\n let res = [];\n let len = 20;\n while (len--) {\n res.unshift(now.toLocaleTimeString().replace(/^\\D*/, ''));\n now = new Date(now - 2000);\n }\n return res;\n })(),\n },\n {\n type: 'category',\n boundaryGap: true,\n data: (() => {\n let res = [];\n let len = 20;\n while (len--) {\n res.push(20 - len + 1);\n }\n return res;\n })(),\n },\n ],\n yAxis: [\n {\n type: 'value',\n scale: true,\n name: 'Value Y',\n max: 20,\n min: 0,\n boundaryGap: [0.2, 0.2],\n },\n {\n type: 'value',\n scale: true,\n name: 'Value X',\n max: 1200,\n min: 0,\n boundaryGap: [0.2, 0.2],\n },\n ],\n series: [\n {\n name: 'Pre - order queue',\n type: 'bar',\n xAxisIndex: 1,\n yAxisIndex: 1,\n itemStyle: {\n normal: {\n barBorderRadius: 4,\n },\n },\n animationEasing: 'elasticOut',\n animationDelay: idx => {\n return idx * 10;\n },\n animationDelayUpdate: idx => {\n return idx * 10;\n },\n data: (() => {\n let res = [];\n let len = 20;\n while (len--) {\n res.push(Math.round(Math.random() * 1000));\n }\n return res;\n })(),\n },\n {\n name: 'Latest transaction price',\n type: 'line',\n data: (() => {\n let res = [];\n let len = 0;\n while (len < 20) {\n res.push((Math.random() * 10 + 5).toFixed(1) - 0);\n len++;\n }\n return res;\n })(),\n },\n ],\n };\n return option;\n}\nfunction fetchNewDate(option) {\n let axisData = new Date().toLocaleTimeString().replace(/^\\D*/, '');\n let data0 = option.series[0].data;\n let data1 = option.series[1].data;\n data0.shift();\n data0.push(Math.round(Math.random() * 1000));\n data1.shift();\n data1.push((Math.random() * 10 + 5).toFixed(1) - 0);\n\n option.xAxis[0].data.shift();\n option.xAxis[0].data.push(axisData);\n option.xAxis[1].data.shift();\n option.xAxis[1].data.push(count++);\n return option;\n}\nconst initState = {\n option: getOption(),\n};\n\nexport default function calendsrReducer(state = initState, action) {\n switch (action.type) {\n case 'UPDATE_OPTION':\n return {\n ...state,\n option: clone(fetchNewDate(state.get('option'))),\n };\n default:\n return state;\n }\n}\nexport function updateOption() {\n return {\n type: 'UPDATE_OPTION',\n };\n}\n","const actions = {\n INIT_DATA: 'ECOMMERCE_INIT_DATA',\n INIT_DATA_SAGA: 'ECOMMERCE_INIT_DATA_SAGA',\n UPDATE_DATA: 'ECOMMERCE_UPDATE_DATA',\n UPDATE_DATA_SAGA: 'ECOMMERCE_UPDATE_DATA_SAGA',\n CHANGE_VIEW: 'ECOMMERCE_CHANGE_VIEW',\n VIEW_TOPBAR_CART: 'ECOMMERCE_VIEW_TOPBAR_CART',\n initData: () => ({ type: actions.INIT_DATA_SAGA }),\n changeView: view => ({\n type: actions.CHANGE_VIEW,\n view,\n }),\n changeViewTopbarCart: viewTopbarCart => {\n return {\n type: actions.VIEW_TOPBAR_CART,\n viewTopbarCart,\n };\n },\n changeProductQuantity: productQuantity => {\n return (dispatch, getState) => {\n const { products } = getState().Ecommerce;\n dispatch({\n type: actions.UPDATE_DATA_SAGA,\n products,\n productQuantity,\n });\n };\n },\n addToCart: product => {\n return (dispatch, getState) => {\n const { products, productQuantity } = getState().Ecommerce;\n const objectID = product.objectID;\n productQuantity.push({ objectID, quantity: 1 });\n products[objectID] = product;\n dispatch({\n type: actions.UPDATE_DATA_SAGA,\n products,\n productQuantity,\n });\n };\n },\n};\nexport default actions;\n","import clone from 'clone';\nimport actions from './actions';\n\nconst initState = {\n loadingInitData: false,\n view: 'gridView',\n viewTopbarCart: false,\n productQuantity: [],\n products: {},\n};\nexport default (state = initState, action) => {\n switch (action.type) {\n case actions.INIT_DATA:\n return {\n ...state,\n loadingInitData: true,\n productQuantity: action.payload.productQuantity,\n products: action.payload.products,\n };\n case actions.CHANGE_VIEW:\n return {\n ...state,\n view: action.view,\n };\n case actions.VIEW_TOPBAR_CART:\n return {\n ...state,\n viewTopbarCart: action.viewTopbarCart,\n };\n case actions.UPDATE_DATA:\n return {\n ...state,\n products: clone(action.products),\n productQuantity: clone(action.productQuantity),\n };\n default:\n return state;\n }\n};\n","const actions = {\n GIT_SEARCH: 'GIT_SEARCH',\n GIT_SUCCESS_RESULT: 'GIT_SUCCESS_RESULT',\n GIT_ERROR_RESULT: 'GIT_ERROR_RESULT',\n gitSearch: searcText => ({\n type: actions.GIT_SEARCH,\n payload: { searcText, page: 1 },\n }),\n onPageChange: (searcText, page) => ({\n type: actions.GIT_SEARCH,\n payload: { searcText, page },\n }),\n gitSearchSuccess: (result, total_count, page) => ({\n type: actions.GIT_SUCCESS_RESULT,\n result,\n total_count,\n page,\n }),\n gitSearchError: () => ({\n type: actions.GIT_ERROR_RESULT,\n }),\n};\nexport default actions;\n","import actions from './actions';\n\nconst initState = {\n searcText: 'react',\n total_count: 0,\n page: 1,\n result: [],\n loading: false,\n error: false,\n};\n\nexport default function reducer(state = initState, action) {\n switch (action.type) {\n case actions.GIT_SEARCH:\n return {\n ...state,\n loading: true,\n searcText: action.payload.searcText,\n };\n case actions.GIT_SUCCESS_RESULT:\n return {\n ...state,\n loading: false,\n error: false,\n result: action.result,\n total_count: action.total_count,\n page: action.page,\n };\n case actions.GIT_ERROR_RESULT:\n return {\n ...state,\n loading: false,\n error: false,\n result: [],\n };\n default:\n return state;\n }\n}\n","const DOCUMENT = 'INVESTOR_';\n\nconst actions = {\n LOAD_FROM_FIRESTORE: DOCUMENT + 'LOAD_FROM_FIRESTORE',\n LOAD_FROM_FIRESTORE_SUCCESS: DOCUMENT + 'LOAD_FROM_FIRESTORE_SUCCESS',\n LOAD_FROM_FIRESTORE_ERROR: DOCUMENT + 'LOAD_FROM_FIRESTORE_ERROR',\n\n SAVE_INTO_FIRESTORE: DOCUMENT + 'SAVE_INTO_FIRESTORE',\n SAVE_INTO_FIRESTORE_ERROR: DOCUMENT + 'SAVE_INTO_FIRESTORE_ERROR',\n\n RESET_FIRESTORE_DOCUMENTS: DOCUMENT + 'RESET_FIRESTORE_DOCUMENTS',\n RESET_FIRESTORE_DOCUMENTS_ERROR: DOCUMENT + 'RESET_FIRESTORE_DOCUMENTS_ERROR',\n\n TOGGLE_FIRESTORE_HANDLE_MODAL: DOCUMENT + 'TOGGLE_FIRESTORE_HANDLE_MODAL',\n FIRESTORE_UPDATE: DOCUMENT + 'FIRESTORE_UPDATE',\n\n loadFromFireStore: () => {\n return { type: actions.LOAD_FROM_FIRESTORE };\n },\n\n loadFromFireStoreSuccess: data => ({\n type: actions.LOAD_FROM_FIRESTORE_SUCCESS,\n payload: { data },\n }),\n\n loadFromFireStoreError: error => ({\n type: actions.LOAD_FROM_FIRESTORE_ERROR,\n payload: { error },\n }),\n\n saveIntoFireStore: (data, actionName = 'insert') => ({\n type: actions.SAVE_INTO_FIRESTORE,\n payload: { data, actionName },\n }),\n\n toggleModal: (data = null) => ({\n type: actions.TOGGLE_FIRESTORE_HANDLE_MODAL,\n payload: { data },\n }),\n\n update: data => ({\n type: actions.FIRESTORE_UPDATE,\n payload: { data },\n }),\n\n saveIntoFireStoreError: error => ({\n type: actions.SAVE_INTO_FIRESTORE_ERROR,\n payload: { error },\n }),\n\n resetFireStoreDocuments: () => ({\n type: actions.RESET_FIRESTORE_DOCUMENTS,\n }),\n\n resetFireStoreDocumentsError: error => ({\n type: actions.RESET_FIRESTORE_DOCUMENTS_ERROR,\n payload: { error },\n }),\n};\nexport default actions;\n","import actions from './actions';\n\nconst initState = {\n isLoading: false,\n errorMessage: false,\n investors: {},\n modalActive: false,\n investor: {\n key: null,\n id: new Date().getTime(),\n name: '',\n company_name: '',\n job_title: '',\n investment_count: null,\n exists_count: null,\n location: '',\n deleted_at: null, // soft delete\n },\n};\n\nexport default function reducer(state = initState, { type, payload }) {\n switch (type) {\n case actions.LOAD_FROM_FIRESTORE:\n return {\n ...state,\n isLoading: true,\n errorMessage: false,\n modalActive: false,\n };\n case actions.LOAD_FROM_FIRESTORE_SUCCESS:\n return {\n ...state,\n isLoading: false,\n investors: payload.data,\n errorMessage: false,\n };\n case actions.LOAD_FROM_FIRESTORE_ERROR:\n return {\n ...state,\n isLoading: false,\n errorMessage: 'There is a loading problem',\n };\n case actions.TOGGLE_FIRESTORE_HANDLE_MODAL:\n return {\n ...state,\n modalActive: !state.modalActive,\n investor: payload.data == null ? initState.investor : payload.data,\n };\n case actions.FIRESTORE_UPDATE:\n return {\n ...state,\n investor: payload.data,\n };\n case actions.RESET_FIRESTORE_DOCUMENTS_ERROR:\n return {\n ...state,\n isLoading: false,\n errorMessage: 'There is a loading problem',\n };\n default:\n return state;\n }\n}\n","const localDataName = 'mateInvoice';\nconst orderStatusOptions = ['Pending', 'Shipped', 'Delivered'];\n\nconst fakedata = [\n {\n key: 1,\n id: '1518713981654',\n number: '#1231',\n orderStatus: 'Shipped',\n orderDate: 1518849188360,\n currency: '$',\n billTo: 'REDQ Inc.',\n billToAddress:\n 'redq@company.com\\n\\n405 Mulberry Rd, Mc Grady, \\nNC, 28649 \\n\\nFax: +0(863) 228-7064 \\nPhone: +(740) 927-9284',\n billFrom: 'Pineapple Inc.',\n billFromAddress:\n 'pineapple@company.com\\n\\n86781 547th Ave, Osmond, \\nNE, 68765 \\n\\nPhone: +(402) 748-3970',\n invoiceList: [\n {\n key: 1,\n itemName: 'A box of happiness',\n costs: 200,\n qty: 14,\n price: 2800,\n },\n { key: 2, itemName: 'Unicorn Tears', costs: 500, qty: 14, price: 7000 },\n { key: 3, itemName: 'Rainbow Machine', costs: 700, qty: 5, price: 3500 },\n ],\n subTotal: 13300,\n vatRate: 10,\n vatPrice: 1330,\n totalCost: 14630,\n },\n {\n key: 2,\n id: '1518713981655',\n number: '#1232',\n orderStatus: 'Pending',\n orderDate: 1518849188360,\n currency: '$',\n billTo: 'REDQ Inc.',\n billToAddress:\n 'redq@company.com\\n\\n405 Mulberry Rd, Mc Grady, \\nNC, 28649 \\n\\nFax: +0(863) 228-7064 \\nPhone: +(740) 927-9284',\n billFrom: 'Pineapple Inc.',\n billFromAddress:\n 'pineapple@company.com\\n\\n86781 547th Ave, Osmond, \\nNE, 68765 \\n\\nPhone: +(402) 748-3970',\n invoiceList: [\n {\n key: 1,\n itemName: 'A box of happiness',\n costs: 200,\n qty: 14,\n price: 2800,\n },\n { key: 2, itemName: 'Unicorn Tears', costs: 500, qty: 14, price: 7000 },\n { key: 3, itemName: 'Rainbow Machine', costs: 700, qty: 5, price: 3500 },\n ],\n subTotal: 13300,\n vatRate: 10,\n vatPrice: 1330,\n totalCost: 14630,\n },\n {\n key: 3,\n id: '1518713981656',\n number: '#1233',\n orderStatus: 'Delivered',\n orderDate: 1518849188360,\n currency: '$',\n billTo: 'REDQ Inc.',\n billToAddress:\n 'redq@company.com\\n\\n405 Mulberry Rd, Mc Grady, \\nNC, 28649 \\n\\nFax: +0(863) 228-7064 \\nPhone: +(740) 927-9284',\n billFrom: 'Pineapple Inc.',\n billFromAddress:\n 'pineapple@company.com\\n\\n86781 547th Ave, Osmond, \\nNE, 68765 \\n\\nPhone: +(402) 748-3970',\n invoiceList: [\n {\n key: 1,\n itemName: 'A box of happiness',\n costs: 200,\n qty: 14,\n price: 2800,\n },\n { key: 2, itemName: 'Unicorn Tears', costs: 500, qty: 14, price: 7000 },\n { key: 3, itemName: 'Rainbow Machine', costs: 700, qty: 5, price: 3500 },\n ],\n subTotal: 13300,\n vatRate: 10,\n vatPrice: 1330,\n totalCost: 14630,\n },\n];\nconst newInvoice = {\n orderStatus: 'Pending',\n orderDate: new Date().getTime(),\n currency: '$',\n billTo: '',\n billToAddress: '',\n billFrom: '',\n billFromAddress: '',\n invoiceList: [\n {\n key: 1,\n itemName: '',\n costs: 0,\n qty: 0,\n price: 0,\n },\n ],\n subTotal: 0,\n vatRate: 10,\n vatPrice: 0,\n totalCost: 0,\n};\nconst createDemoData = () => {\n const localData = localStorage.getItem(localDataName);\n if (localData) {\n try {\n const invoices = JSON.parse(localData);\n if (invoices && invoices.length > 0) {\n return invoices;\n }\n } catch (e) {}\n }\n return fakedata;\n};\n\nexport {\n fakedata,\n createDemoData,\n localDataName,\n newInvoice,\n orderStatusOptions,\n};\n","const actions = {\n GET_INVOICE: 'GET_INVOICE',\n UPDATE_INVOICE: 'UPDATE_INVOICE',\n UPDATE_INVOICE_SAGA: 'UPDATE_INVOICE_SAGA',\n SELECT_CURRENT_INVOICE: 'SELECT_CURRENT_INVOICE',\n TOGGLE_VIEW: 'INVOICE_TOGGLE_VIEW',\n UPDATE_EDIT_INVOICE: 'INVOICE_UPDATE_EDIT_INVOICE',\n initData: () => ({ type: actions.GET_INVOICE }),\n deleteInvoice: selected => {\n return (dispatch, getState) => {\n const invoices = getState().Invoices.invoices;\n const newInvoices = [];\n invoices.forEach(invoice => {\n const selectedIndex = selected.indexOf(invoice.key);\n if (selectedIndex === -1) {\n newInvoices.push(invoice);\n }\n });\n dispatch({\n type: actions.UPDATE_INVOICE_SAGA,\n invoices: newInvoices,\n });\n };\n },\n updateInvoice: invoice => {\n return (dispatch, getState) => {\n const invoices = getState().Invoices.invoices;\n const index = invoices.map(inv => inv.id).indexOf(invoice.id);\n if (index === -1) {\n invoices.push(invoice);\n } else {\n invoices[index] = invoice;\n }\n dispatch({\n type: actions.UPDATE_INVOICE_SAGA,\n invoices,\n invoice,\n });\n };\n },\n selectCurrentInvoice: id => ({ type: actions.SELECT_CURRENT_INVOICE, id }),\n toggleView: view => ({ type: actions.TOGGLE_VIEW, view }),\n editInvoice: invoice => ({ type: actions.UPDATE_EDIT_INVOICE, invoice }),\n};\nexport default actions;\n","import clone from 'clone';\nimport { newInvoice } from './config';\nimport actions from './actions';\n\nconst initState = {\n invoices: [],\n initialInvoices: false,\n currentInvoice: {},\n editableInvoice: {},\n isNewInvoice: false,\n enableEditView: false,\n};\n\nexport default function cardReducer(state = initState, { type, ...action }) {\n switch (type) {\n case actions.UPDATE_INVOICE: {\n const currentInvoice = action.invoice\n ? action.invoice\n : state.currentInvoice;\n return {\n ...state,\n invoices: action.invoices,\n currentInvoice: clone(currentInvoice),\n initialInvoices: true,\n isNewInvoice: false,\n enableEditView: false,\n };\n }\n case actions.SELECT_CURRENT_INVOICE: {\n const invoices = state.invoices;\n const index = invoices.map(invoice => invoice.id).indexOf(action.id);\n const isNewInvoice = index === -1;\n const currentInvoice = isNewInvoice\n ? {\n id: action.id,\n number: `#${action.id}`,\n key: action.id,\n ...newInvoice,\n }\n : invoices[index];\n const enableEditView = isNewInvoice;\n return {\n ...state,\n currentInvoice,\n isNewInvoice,\n enableEditView,\n editableInvoice: clone(currentInvoice),\n };\n }\n case actions.TOGGLE_VIEW:\n return {\n ...state,\n enableEditView: action.view,\n editableInvoice: clone(state.currentInvoice),\n };\n case actions.UPDATE_EDIT_INVOICE:\n return {\n ...state,\n editableInvoice: clone(action.invoice),\n };\n default:\n return state;\n }\n}\n","import config, { getCurrentLanguage } from './config';\n\nimport actions from './actions';\n\nconst initState = {\n isActivated: false,\n language: getCurrentLanguage(config.defaultLanguage || 'english'),\n};\n\nexport default function(state = initState, action) {\n switch (action.type) {\n case actions.ACTIVATE_LANG_MODAL:\n return {\n ...state,\n isActivated: !state.isActivated,\n };\n case actions.CHANGE_LANGUAGE:\n return {\n ...state,\n language: action.language,\n };\n default:\n return state;\n }\n}\n","const actions = {\n INC: 'INC',\n DEC: 'DEC',\n\n inc: () => {\n return { type: actions.INC };\n },\n\n dec() {\n return { type: actions.DEC };\n },\n};\n\nexport default actions;\n","import actions from './actions';\n\nconst initState = { count: 0 };\n\nexport default function loadingReducer(state = initState, action) {\n switch (action.type) {\n case actions.INC:\n return {\n count: ++state.count,\n };\n case actions.DEC:\n return {\n count: --state.count < 0 ? 0 : state.count,\n };\n default:\n return state;\n }\n}\n","export default JSON.parse(\n `[{\n \"id\": 30,\n \"key\": 30,\n \"name\": \"Friedrich Mitchell\",\n \"cc\": \"Devon90@hotmail.com\",\n \"email\": \"Giovanny12@hotmail.com\",\n \"body\": \"Doloribus voluptas itaque blanditiis repudiandae. Est libero in. Id enim et vero velit enim nostrum cum aut libero. Dignissimos non et. Qui inventore ducimus debitis qui perspiciatis iure. Eligendi omnis eos et iste iusto ipsa iste dolor. Porro consequatur iste. Incidunt rerum mollitia dolore sit. Officia maxime doloremque esse eaque ad. Architecto animi at qui deserunt.\",\n \"subject\": \"voluptas excepturi voluptates\",\n \"date\": \"2017-06-10T22:16:42.057Z\",\n \"bucket\": \"Important\",\n \"read\": false\n}, {\n \"id\": 44,\n \"key\": 44,\n \"name\": \"Cristopher Bogan\",\n \"cc\": \"Axel17@yahoo.com\",\n \"email\": \"Belle_Gaylord17@gmail.com\",\n \"body\": \"Consectetur sed ut assumenda accusantium reprehenderit nemo adipisci amet. Voluptatibus quae inventore. Et qui dolore et quis. Alias minus autem libero possimus sunt nesciunt quis libero. Autem voluptas aliquam voluptatibus velit. Et distinctio quia earum a illo. Magnam quo ea architecto repellendus hic dolorem non illum doloremque. Id sapiente quo perspiciatis fugiat laboriosam rerum. Praesentium laboriosam ex sunt velit illum quis a ut qui. Sint in in eos.\",\n \"subject\": \"soluta mollitia a\",\n \"date\": \"2017-06-08T19:48:36.439Z\",\n \"bucket\": \"Important\",\n \"read\": false\n}, {\n \"id\": 56,\n \"key\": 56,\n \"name\": \"Michelle Kunze\",\n \"cc\": \"Connor_Cruickshank@hotmail.com\",\n \"email\": \"Beryl.Heidenreich82@gmail.com\",\n \"body\": \"Debitis necessitatibus distinctio minima. Molestias ab consectetur quos occaecati aut laudantium. Dolor eos dolore exercitationem. Et architecto quae labore est iusto cum. Illum ut commodi eaque aut totam officiis. Eos a provident omnis autem magni vel. Fuga numquam magni. Nihil beatae optio ratione minus et sequi quaerat ut. Earum voluptatem voluptatem suscipit ut consequuntur dolorum asperiores possimus. Maiores unde adipisci aperiam.\",\n \"subject\": \"ipsam ut veniam\",\n \"date\": \"2017-05-26T11:47:14.575Z\",\n \"bucket\": \"Starred\",\n \"read\": false\n}, {\n \"id\": 54,\n \"key\": 54,\n \"name\": \"Darron Bednar\",\n \"cc\": \"Preston.Ullrich76@hotmail.com\",\n \"email\": \"Bessie_Gleason4@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/thedamianhdez/128.jpg\",\n \"tags\": \"Friend\",\n \"body\": \"Aut quasi est perferendis rem ut est quidem et. Dignissimos aperiam qui voluptas praesentium dicta. Consectetur repellat amet voluptates aperiam ut ratione. Est quia nisi ut vel iste debitis. Sint ea aspernatur mollitia cupiditate. Maiores quibusdam ducimus. Voluptates praesentium et sint earum laboriosam placeat. Minima possimus ipsa numquam consequatur molestias quasi. Fuga exercitationem ea deserunt dicta. Sit placeat aut.\",\n \"subject\": \"ea aut sint\",\n \"date\": \"2017-05-26T04:57:39.922Z\",\n \"bucket\": \"Important\",\n \"read\": false\n}, {\n \"id\": 60,\n \"key\": 60,\n \"name\": \"Marjorie Runolfsdottir\",\n \"cc\": \"Dock_Murazik93@yahoo.com\",\n \"email\": \"Reynold76@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/ernestsemerda/128.jpg\",\n \"tags\": \"Family\",\n \"body\": \"Consequatur occaecati id est. Quis et fuga voluptate distinctio sit. Modi dolore inventore quam autem asperiores in placeat. Porro quam perspiciatis eos exercitationem non quisquam cumque esse. Vero molestiae enim possimus tempora est sapiente voluptate officiis. Sed tenetur tempore qui. Quae amet et beatae eum repellendus est et sed. Perspiciatis dolore cupiditate eaque error dolores doloribus. Quos cum iste sit delectus qui dicta quo saepe. Quaerat repudiandae sequi aliquam et maiores sunt saepe qui.\",\n \"subject\": \"quae aperiam quia\",\n \"date\": \"2017-05-22T02:19:09.262Z\",\n \"bucket\": \"Inbox\",\n \"read\": false\n}, {\n \"id\": 75,\n \"key\": 75,\n \"name\": \"Orville Strosin\",\n \"cc\": \"Ressie_Klein@gmail.com\",\n \"email\": \"Kaitlyn.Block56@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/emmeffess/128.jpg\",\n \"body\": \"Qui animi quia vero asperiores ipsam repudiandae consequatur fugit. Temporibus aut facere quia et vel sit culpa. Dolor sapiente perferendis aut. Laborum autem quisquam alias perferendis ad tenetur. Debitis reprehenderit itaque rerum ea officiis odio deserunt molestiae. Accusantium atque praesentium in qui quo autem non. Dolore qui velit assumenda aut. Eos ex eveniet earum sapiente ea delectus. Quam consequatur voluptate non atque maxime et. Aut quia non facilis sed.\",\n \"subject\": \"ullam debitis aut\",\n \"date\": \"2017-05-20T10:13:38.494Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 87,\n \"key\": 87,\n \"name\": \"Carlotta Friesen\",\n \"cc\": \"Robin.McGlynn21@gmail.com\",\n \"email\": \"Isabelle88@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/kinday/128.jpg\",\n \"body\": \"Vitae excepturi expedita fugiat ad vitae illo dolorum dolor. Qui consectetur et quia nemo. Similique non illum. Animi velit ut. Totam eius numquam veritatis quo molestiae dignissimos vero accusamus. Maiores soluta fuga neque magni vitae eaque sint voluptatem. Culpa quas consequatur facilis sit exercitationem reprehenderit doloremque aut. Ex iure alias. Qui odio laborum maxime. Repellendus et qui est quia voluptas.\",\n \"subject\": \"autem dolor saepe\",\n \"date\": \"2017-05-18T10:33:41.146Z\",\n \"bucket\": \"Starred\",\n \"read\": false\n}, {\n \"id\": 15,\n \"key\": 15,\n \"name\": \"Ava Durgan\",\n \"cc\": \"Demario83@hotmail.com\",\n \"email\": \"Melany_Lemke@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/vimarethomas/128.jpg\",\n \"body\": \"Sint aut explicabo dolorum voluptatem magni nam at molestiae totam. Amet temporibus vel et harum eos minus atque et. Et dolores voluptas unde consequuntur odio quo sed voluptatem. Excepturi velit tempore praesentium vel in nesciunt. Laudantium non quis itaque aliquam ipsum qui aliquam blanditiis maxime. Fuga et quae eos numquam odio architecto impedit sed amet. Neque nemo nostrum dolores ut. Nostrum vitae ad. Aliquam in quaerat delectus cumque. Et consequatur esse sit omnis.\",\n \"subject\": \"ut sapiente praesentium\",\n \"date\": \"2017-05-18T04:39:53.974Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 86,\n \"key\": 86,\n \"name\": \"Alverta Gutkowski\",\n \"cc\": \"Jonathon11@gmail.com\",\n \"email\": \"Lila.Metz1@yahoo.com\",\n \"tags\": \"ClassMates\",\n \"body\": \"Ut ratione at laudantium et quibusdam provident earum voluptates. Veritatis et qui corporis. Nostrum ab eum magnam quidem est. Quod voluptas animi aperiam dicta autem cupiditate sunt voluptas voluptate. Laudantium expedita eum corporis perferendis. Quia repudiandae omnis in dolorem. Ratione deleniti optio eum illum error assumenda veritatis sit. Est voluptatem perferendis nostrum sint. Dolorem officia cumque maxime magnam est provident ducimus eligendi. Magni iste quibusdam itaque voluptatem quibusdam amet fuga assumenda.\",\n \"subject\": \"ut qui et\",\n \"date\": \"2017-05-02T01:49:41.982Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 41,\n \"key\": 41,\n \"name\": \"Hellen Carter\",\n \"cc\": \"Domenic85@hotmail.com\",\n \"email\": \"Evelyn84@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/vicivadeline/128.jpg\",\n \"body\": \"Incidunt sunt dicta et et ratione officiis quaerat in quas. Ut ut velit aut maxime rerum laboriosam. Ut qui cupiditate. Quidem quidem facilis ab. Suscipit tempore architecto atque nihil aut. Totam porro aut ut aspernatur similique laborum voluptatum ut. Qui maiores delectus deleniti aliquid. Harum autem natus velit doloribus. Deleniti velit enim alias et ratione consequatur eligendi et. Necessitatibus quia quod aspernatur nobis vero id sed.\",\n \"subject\": \"consectetur quia quisquam\",\n \"date\": \"2017-05-01T13:08:18.089Z\",\n \"bucket\": \"Important\",\n \"read\": false\n}, {\n \"id\": 96,\n \"key\": 96,\n \"name\": \"Alanis Koch\",\n \"cc\": \"Alvis.Harber64@gmail.com\",\n \"email\": \"Kelli1@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/saschadroste/128.jpg\",\n \"tags\": \"ClassMates\",\n \"body\": \"Ut non quis perferendis non itaque aliquid. Molestiae ut modi ab. Odio molestiae praesentium odit est ad veritatis est ut. Quasi quia sed ut enim. Animi cumque ipsum. Eligendi exercitationem ut et perspiciatis nostrum itaque mollitia facilis debitis. Similique sit velit pariatur distinctio cumque iure vel quia nulla. Ab omnis blanditiis et neque. Aut quis ea quas fugit. Rerum doloribus temporibus provident quis ut provident illo.\",\n \"subject\": \"iure nemo sed\",\n \"date\": \"2017-05-01T05:43:26.284Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 21,\n \"key\": 21,\n \"name\": \"Sid Kris\",\n \"cc\": \"Ayden59@gmail.com\",\n \"email\": \"Marilyne_Schumm@hotmail.com\",\n \"body\": \"Aliquid cupiditate est velit consectetur est nihil accusantium. Tempora accusamus aliquam nihil voluptatem rerum. Aut fugiat rerum ad. Suscipit ex recusandae dolorum ullam voluptas tempora. Culpa eos et earum. Quod laborum ipsum. Tempora quos quaerat. Inventore totam architecto id sed. Sunt rerum tempora. Laudantium quia debitis.\",\n \"subject\": \"excepturi dolor autem\",\n \"date\": \"2017-04-30T12:42:49.275Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 81,\n \"key\": 81,\n \"name\": \"Ewell Beahan\",\n \"cc\": \"Bethany_Towne@yahoo.com\",\n \"email\": \"Phyllis_Marvin47@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/mr_shiznit/128.jpg\",\n \"tags\": \"Family\",\n \"body\": \"Nihil quam ipsum ut beatae. Vitae facere dolor qui fugiat eos ut sit dignissimos. Qui et aut culpa error eveniet ab et. Quasi provident sunt vel voluptatem. Corrupti nesciunt et esse repellat. Animi explicabo ullam debitis a reprehenderit totam harum delectus necessitatibus. Necessitatibus eligendi id pariatur. At aut at aperiam nihil molestiae ea consequatur. Consectetur in dolorem sunt fugit omnis ipsa est quod. Voluptates a velit accusamus.\",\n \"subject\": \"aspernatur odit est\",\n \"date\": \"2017-04-29T20:17:15.315Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 84,\n \"key\": 84,\n \"name\": \"Wilton Hand\",\n \"cc\": \"Chandler_Robel@gmail.com\",\n \"email\": \"Elton8@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/sovesove/128.jpg\",\n \"body\": \"Similique ut hic vel velit. Ullam eos perspiciatis nesciunt eaque eaque repellendus rem occaecati quis. Qui sed numquam facere omnis. Soluta quos numquam esse. Nisi voluptatum voluptatem nostrum aut ab error pariatur architecto et. Similique voluptatem possimus deleniti vel. Doloremque magni asperiores nisi dignissimos reiciendis consectetur. Similique repudiandae in quia consequatur perspiciatis. Sed ea labore labore nostrum accusantium. Illo iure illo illum sequi aut omnis vel non quaerat.\",\n \"subject\": \"architecto omnis deserunt\",\n \"date\": \"2017-04-25T07:16:20.043Z\",\n \"bucket\": \"Important\",\n \"read\": false\n}, {\n \"id\": 98,\n \"key\": 98,\n \"name\": \"Remington Donnelly\",\n \"cc\": \"Abdiel90@hotmail.com\",\n \"email\": \"Adan20@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/kanickairaj/128.jpg\",\n \"tags\": \"Teachers\",\n \"body\": \"Deleniti sed suscipit quas ullam sed autem laboriosam qui. Deleniti velit debitis eum et corrupti quae fuga. Sed ea eligendi tenetur quae. Rerum vero dolore omnis sint fuga. Cum tenetur harum occaecati. Non expedita fugit rerum omnis. Et est odio architecto ducimus et modi. Necessitatibus ratione nisi qui unde debitis et hic doloribus. Est sunt suscipit delectus excepturi quo repellendus nisi reiciendis. Quia soluta illum odio libero.\",\n \"subject\": \"id et ut\",\n \"date\": \"2017-04-24T09:00:09.145Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 94,\n \"key\": 94,\n \"name\": \"Sarina Frami\",\n \"cc\": \"Lucius_Raynor@yahoo.com\",\n \"email\": \"Stephanie40@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/prinzadi/128.jpg\",\n \"tags\": \"Colleague\",\n \"body\": \"Et veritatis quis. Quo autem et quae est sequi voluptatem. Molestias dolorem magni voluptates ratione autem. Vero consequatur asperiores voluptatem. Quaerat vel fugit. Expedita autem sit laborum tempora quisquam eos velit. Voluptatem ut vel rerum ipsam ut repellendus optio. Nisi possimus aliquid sed voluptas eligendi qui nesciunt. Dolor fuga autem quo est autem inventore ullam. Quia voluptatem ut cumque.\",\n \"subject\": \"qui animi qui\",\n \"date\": \"2017-04-22T05:19:12.082Z\",\n \"bucket\": \"spam\",\n \"read\": true\n}, {\n \"id\": 43,\n \"key\": 43,\n \"name\": \"Camila Kilback\",\n \"cc\": \"Maribel_Hoeger@hotmail.com\",\n \"email\": \"Bridget_Johns@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/jeremymouton/128.jpg\",\n \"body\": \"Magnam ea veritatis consequatur. Voluptatum eaque et vel tempora ullam. A quos rerum laudantium. Est voluptatibus enim fuga in laudantium. Delectus illum veritatis tempore suscipit repellendus velit incidunt. Voluptate voluptatibus veritatis aut cum. Sint ab odit nostrum non aperiam nulla reprehenderit et quo. Voluptatum dolorem explicabo tempora deleniti omnis quia temporibus perspiciatis ut. Et autem totam tempora voluptatem pariatur. Rem omnis non animi.\",\n \"subject\": \"dolores vel a\",\n \"date\": \"2017-04-13T03:09:40.193Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 35,\n \"key\": 35,\n \"name\": \"Jana Walter\",\n \"cc\": \"Delphia.Gerhold@hotmail.com\",\n \"email\": \"Elmira_Lind63@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/Shriiiiimp/128.jpg\",\n \"body\": \"Ut porro harum. Animi eum laudantium laudantium blanditiis illo facere in sed. Doloribus sed minima et eius veritatis. Est eum est. Est non qui et laborum ut ut sit. Rem sed veritatis. Officiis laborum rem soluta dolores voluptatum aut velit quia pariatur. Magnam perspiciatis omnis. Magni assumenda ad tempore. Suscipit maxime cumque.\",\n \"subject\": \"eos cupiditate sapiente\",\n \"date\": \"2017-04-11T04:10:15.341Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 53,\n \"key\": 53,\n \"name\": \"Winfield Kihn\",\n \"cc\": \"Adan.Mraz@yahoo.com\",\n \"email\": \"Beulah_Reilly35@yahoo.com\",\n \"body\": \"Illum dolorem tempore omnis. Et delectus harum rerum qui quas reiciendis excepturi in. Velit inventore ut maxime minima expedita et eaque reiciendis architecto. Hic et qui ex. Eligendi quisquam vero iste. Consectetur ea qui magnam consequatur qui blanditiis amet esse tempore. Deserunt accusamus est. Odio maiores sunt pariatur ipsum itaque. Neque nulla enim sunt eum architecto deleniti ad rerum. Eius et sit mollitia.\",\n \"subject\": \"atque dolore exercitationem\",\n \"date\": \"2017-04-10T22:32:17.681Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 32,\n \"key\": 32,\n \"name\": \"Jeramy D'Amore\",\n \"cc\": \"Tobin26@gmail.com\",\n \"email\": \"Jimmie_Bernier@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/alevizio/128.jpg\",\n \"tags\": \"Students\",\n \"body\": \"Sint temporibus totam minus est quis. Omnis ipsum ipsam iure eum est amet porro cumque. Ut doloribus doloribus nihil animi aliquid qui. Omnis ad velit sed et perspiciatis aspernatur deserunt veniam rerum. Molestiae veritatis nam architecto itaque omnis qui incidunt soluta. Qui et reprehenderit. Nemo cum iste accusantium. Consequatur eos aut. Nemo similique blanditiis corporis a. Fugit qui autem sunt sit assumenda perferendis.\",\n \"subject\": \"vel illo doloribus\",\n \"date\": \"2017-03-31T04:51:14.497Z\",\n \"bucket\": \"Important\",\n \"read\": false\n}, {\n \"id\": 99,\n \"key\": 99,\n \"name\": \"Hassan Nicolas\",\n \"cc\": \"Aron_OKeefe@yahoo.com\",\n \"email\": \"Laron76@hotmail.com\",\n \"body\": \"Nesciunt sequi sed omnis. Ea dicta voluptates rerum quas corrupti odio earum. Reiciendis alias modi. Eum ut corporis. Aut rerum cumque quos magni. Facere sit fugiat laboriosam eos. Enim ut et asperiores perspiciatis at voluptas labore. Voluptatem maiores eos repellendus. Vero voluptate voluptatum sequi molestiae omnis tempora fuga non dicta. Nostrum harum culpa eum consequatur.\",\n \"subject\": \"unde veniam vitae\",\n \"date\": \"2017-03-29T09:03:20.158Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 93,\n \"key\": 93,\n \"name\": \"Jeffry Mann\",\n \"cc\": \"Talon_Pfannerstill@hotmail.com\",\n \"email\": \"Andrew.Olson@yahoo.com\",\n \"tags\": \"ClassMates\",\n \"body\": \"Sequi maiores asperiores. Sint vitae autem id molestias. Iure fuga deserunt. Atque fugiat aliquam est ipsum expedita magni modi officiis dolores. Quaerat voluptatibus in doloribus aliquid velit inventore eaque. Repellat tempora et nobis numquam. Amet rem porro doloremque minima. Cum sapiente sed velit provident. Perspiciatis dolor ducimus est laborum aut tempora. Nostrum accusamus nihil error quia quo quo optio tenetur.\",\n \"subject\": \"perspiciatis ipsa occaecati\",\n \"date\": \"2017-03-29T03:16:17.664Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 37,\n \"key\": 37,\n \"name\": \"Lisandro Kreiger\",\n \"cc\": \"Madelynn72@hotmail.com\",\n \"email\": \"Cole_Ondricka@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/ninjad3m0/128.jpg\",\n \"body\": \"Laudantium consequatur dolorem porro iure architecto modi corrupti sint et. Voluptatem vero odit laboriosam est iusto illo neque. Explicabo repudiandae veniam. Ab similique eveniet neque id dolores. Praesentium et eum aspernatur quo explicabo fugiat. Iure occaecati aperiam. Aut rem deserunt consequatur minus sed omnis adipisci explicabo. Tempora et velit id omnis. Dignissimos vitae sint et est quo dolore hic ea voluptatem. Aliquid praesentium eum accusamus ut cum quis laboriosam corporis non.\",\n \"subject\": \"ea iste quasi\",\n \"date\": \"2017-03-27T02:48:41.115Z\",\n \"bucket\": \"Inbox\",\n \"read\": false\n}, {\n \"id\": 26,\n \"key\": 26,\n \"name\": \"Pansy Macejkovic\",\n \"cc\": \"Tyler.Koelpin38@yahoo.com\",\n \"email\": \"Alysa.Adams@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/bradenhamm/128.jpg\",\n \"tags\": \"ClassMates\",\n \"body\": \"Soluta voluptate nihil non velit minus nihil culpa. Rerum perferendis est temporibus hic voluptatem in. Delectus tenetur excepturi quasi enim. Consequuntur eius soluta in voluptas architecto incidunt consequatur ea. Harum nobis odio dolor velit neque tempora illo voluptatem dolor. Suscipit omnis dicta necessitatibus. Dolore nihil rerum sit et eos sed quae accusamus. Accusamus quo perspiciatis id doloribus quis eum harum distinctio sunt. Repellat soluta quis dolorem consequuntur fuga beatae ut. Corporis praesentium fugiat eum numquam voluptate facilis.\",\n \"subject\": \"expedita quis quisquam\",\n \"date\": \"2017-03-24T17:10:20.010Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 69,\n \"key\": 69,\n \"name\": \"David Dach\",\n \"cc\": \"Ara7@yahoo.com\",\n \"email\": \"Josie37@gmail.com\",\n \"tags\": \"Friend\",\n \"body\": \"Incidunt quasi fugiat eum distinctio ut saepe iusto magni. Harum asperiores ut aut velit et consequuntur iure quasi velit. Architecto voluptatibus animi. Rerum necessitatibus quis eligendi deleniti consequatur porro qui. Sint molestiae neque error. Alias voluptate et veniam nihil cum doloribus ex sunt. Possimus placeat vero dolor alias magnam doloremque quo maiores voluptas. Sapiente deserunt voluptatem sunt debitis aut. Rerum corrupti animi in in eaque perferendis nostrum sunt. Nihil est accusamus rem aut expedita distinctio.\",\n \"subject\": \"beatae provident qui\",\n \"date\": \"2017-03-22T15:55:08.315Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 1,\n \"key\": 1,\n \"name\": \"Kyleigh Schmeler\",\n \"cc\": \"Caterina38@gmail.com\",\n \"email\": \"Marco.Runolfsson36@yahoo.com\",\n \"body\": \"Velit nulla sunt facere dolorum aut. Maiores et eligendi nostrum. Laborum ut ipsa deleniti non. Aut atque id blanditiis unde et asperiores sit quisquam. Et provident repellendus ut cumque qui animi. Omnis non quo iste perspiciatis molestiae et. Deleniti sed molestiae minus et occaecati ducimus voluptatibus porro. Animi et deserunt et fugit quasi sapiente reiciendis. Consequatur repellendus amet aperiam corporis. Exercitationem itaque rerum molestiae placeat.\",\n \"subject\": \"earum excepturi explicabo\",\n \"date\": \"2017-03-22T14:01:05.443Z\",\n \"bucket\": \"Important\",\n \"read\": false\n}, {\n \"id\": 22,\n \"key\": 22,\n \"name\": \"Kennedy Bogisich\",\n \"cc\": \"Bernita56@yahoo.com\",\n \"email\": \"Destiny.Block50@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/sachacorazzi/128.jpg\",\n \"body\": \"Sunt perferendis vel quos molestiae in et ut provident. Esse illo est sapiente et quod quam odio facilis blanditiis. Et voluptas nulla iusto beatae. Non officia voluptatibus quia veniam laborum. A reprehenderit asperiores quas hic eaque magnam laudantium eos. Repellendus est quis error ipsa sint molestiae. Eaque rerum suscipit est rerum nemo. Totam autem minus voluptate. Esse et corporis expedita vel non alias est est deleniti. Deserunt ullam repellendus omnis omnis iste.\",\n \"subject\": \"et mollitia perspiciatis\",\n \"date\": \"2017-03-22T08:20:43.359Z\",\n \"bucket\": \"Starred\",\n \"read\": false\n}, {\n \"id\": 19,\n \"key\": 19,\n \"name\": \"Cicero Kilback\",\n \"cc\": \"Margarete_Rau61@hotmail.com\",\n \"email\": \"Antone.Lind27@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/jeremyworboys/128.jpg\",\n \"body\": \"Tenetur ex nihil quia animi eos voluptas itaque neque quis. Similique laborum laudantium dolor. Ea officiis voluptatem. Nobis ullam corporis voluptatibus qui temporibus delectus voluptatibus numquam. Repellendus non doloremque est. Qui dolorem doloremque rerum voluptas et consequatur consequatur dolorem. Illo est et ab. Ipsa quasi qui voluptatem repudiandae laudantium sed. Aut sapiente commodi et consequatur. Ut aliquid veritatis molestias ea dignissimos voluptate.\",\n \"subject\": \"assumenda vero nostrum\",\n \"date\": \"2017-03-19T09:20:41.526Z\",\n \"bucket\": \"spam\",\n \"read\": true\n}, {\n \"id\": 52,\n \"key\": 52,\n \"name\": \"Kieran Auer\",\n \"cc\": \"Ellie.Watsica@hotmail.com\",\n \"email\": \"Morris.OKeefe23@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/y2graphic/128.jpg\",\n \"body\": \"Suscipit tenetur tempore sed assumenda quos quia quidem quidem animi. Praesentium aperiam sequi molestiae voluptatem eveniet in. Sequi tempora amet et ut officia. Rem aperiam aut. Ut veritatis facere quia tempore ea. Doloribus occaecati corrupti corporis culpa vero aut a sint. Fugit placeat beatae labore ratione qui eaque quaerat. Rerum distinctio repellat veritatis iste possimus est. Incidunt eligendi excepturi. Doloribus et fuga et et rerum rerum molestiae ipsum ea.\",\n \"subject\": \"inventore et est\",\n \"date\": \"2017-03-18T11:51:50.816Z\",\n \"bucket\": \"Important\",\n \"read\": false\n}, {\n \"id\": 31,\n \"key\": 31,\n \"name\": \"Moriah Stamm\",\n \"cc\": \"Stanford_Bode75@hotmail.com\",\n \"email\": \"Joelle.Brekke@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/wikiziner/128.jpg\",\n \"tags\": \"Colleague\",\n \"body\": \"Consequatur non reiciendis earum. Minus quaerat modi qui. Excepturi laudantium quas placeat ut voluptatem. Similique vitae quis officiis. Aut quam nihil voluptatem. Error et itaque rerum nemo. Non aperiam nihil totam non. Tempore ut quidem sit laborum consequatur mollitia mollitia facilis aliquam. Delectus facilis voluptas laudantium iusto est. Nostrum ab dolor et voluptatem illo.\",\n \"subject\": \"neque est est\",\n \"date\": \"2017-03-17T23:54:01.564Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 0,\n \"key\": 0,\n \"name\": \"Rupert Gusikowski\",\n \"cc\": \"Harmon18@gmail.com\",\n \"email\": \"Sidney_Lubowitz27@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/hgharrygo/128.jpg\",\n \"body\": \"Repellendus quos est earum quasi voluptate. Aut illo rerum. Repudiandae similique velit ipsa. Minus harum ut et numquam repudiandae veritatis. Sequi dolorum assumenda ut qui est. Id inventore aspernatur. Ipsam neque voluptates enim facere et saepe deserunt atque. Nulla iste id totam aliquam veritatis qui. Qui voluptatem voluptas. Ad qui fugiat assumenda voluptatem sit.\",\n \"subject\": \"accusamus deleniti omnis\",\n \"date\": \"2017-03-13T15:34:50.447Z\",\n \"bucket\": \"Inbox\",\n \"read\": false\n}, {\n \"id\": 24,\n \"key\": 24,\n \"name\": \"Dena Bergstrom\",\n \"cc\": \"Keshaun.Yost@hotmail.com\",\n \"email\": \"Cicero_Lubowitz83@yahoo.com\",\n \"tags\": \"Teachers\",\n \"body\": \"Nostrum necessitatibus nostrum est omnis et expedita. Et unde saepe omnis. Nulla et rerum repudiandae nesciunt. Hic aut non ducimus consequuntur modi qui eos sed dolorum. Quisquam ipsa qui voluptatum corporis sunt minus eum. Corporis est inventore illum iusto in quas pariatur. Tempora ab eum. Sit possimus molestiae dignissimos. Molestias nobis quae totam officiis sit voluptatem. Omnis a ea quam et optio iusto est.\",\n \"subject\": \"dolores dolore sit\",\n \"date\": \"2017-03-13T07:49:52.615Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 97,\n \"key\": 97,\n \"name\": \"Randall Hodkiewicz\",\n \"cc\": \"Jacky.Bednar@hotmail.com\",\n \"email\": \"Heidi26@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/mighty55/128.jpg\",\n \"body\": \"Iste minus et. Non necessitatibus ut est est id amet. Officiis sequi dolorum assumenda ipsam magnam cum possimus. Laudantium nulla amet tempore excepturi id expedita dolorum quisquam deserunt. Odit vel sint dolor eos. Ea blanditiis animi. Quibusdam unde unde. Perspiciatis vel pariatur qui. Deleniti omnis est quae. Laboriosam numquam amet aliquid.\",\n \"subject\": \"ratione quidem molestiae\",\n \"date\": \"2017-03-08T19:22:50.130Z\",\n \"bucket\": \"Inbox\",\n \"read\": false\n}, {\n \"id\": 57,\n \"key\": 57,\n \"name\": \"Camden Flatley\",\n \"cc\": \"Luther_Lakin@gmail.com\",\n \"email\": \"Ardith41@yahoo.com\",\n \"body\": \"Ipsa reiciendis molestiae repellat est. Accusamus illo quisquam. Et nihil quo minima. Quis labore accusantium doloremque placeat commodi eligendi iusto impedit. Cumque delectus odio quos repudiandae omnis unde atque. Fugiat doloribus officia nesciunt libero sed consequatur tempore neque aspernatur. Aliquid non sit expedita ut magnam sunt. Dolorem quia perferendis sit odio numquam quia sit. Laboriosam sint reprehenderit reiciendis et nobis velit velit. Accusantium non quod temporibus enim ut quia quia doloremque.\",\n \"subject\": \"facilis in est\",\n \"date\": \"2017-03-03T17:54:02.112Z\",\n \"bucket\": \"Starred\",\n \"read\": false\n}, {\n \"id\": 64,\n \"key\": 64,\n \"name\": \"Deion O'Connell\",\n \"cc\": \"Twila.Goyette@gmail.com\",\n \"email\": \"Cynthia_Jacobi38@hotmail.com\",\n \"body\": \"Et iste eligendi dignissimos officiis illum rerum sunt dolorum ducimus. Earum sunt qui in qui. Ullam nostrum in dolores quibusdam impedit voluptate repellat. Et adipisci distinctio sapiente est ducimus repellendus deleniti. Est impedit nobis enim distinctio. Tenetur rem maxime rerum quos quis deleniti vitae. Molestiae nisi quo natus eum numquam inventore sit enim. Quisquam voluptas animi. Quisquam reprehenderit nostrum. Sapiente tempora est qui facilis corporis voluptatibus.\",\n \"subject\": \"architecto quo ut\",\n \"date\": \"2017-03-01T04:43:49.049Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 59,\n \"key\": 59,\n \"name\": \"Ethyl Kemmer\",\n \"cc\": \"Darby50@hotmail.com\",\n \"email\": \"Carson.Abbott@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/a1chapone/128.jpg\",\n \"body\": \"Aut inventore omnis ad voluptate. Consectetur in id laboriosam recusandae voluptatem. Quidem autem dolores eveniet libero est. Soluta tempora reprehenderit nihil modi eum. Ex facilis est perspiciatis debitis architecto. Quo nihil corrupti distinctio ea qui. Beatae recusandae quis minima. Quis consequatur molestiae deserunt optio qui. Atque quo dolores esse expedita est incidunt nobis laboriosam saepe. Earum quis id suscipit.\",\n \"subject\": \"accusamus quia mollitia\",\n \"date\": \"2017-03-01T04:30:39.636Z\",\n \"bucket\": \"Starred\",\n \"read\": false\n}, {\n \"id\": 79,\n \"key\": 79,\n \"name\": \"Makayla Runolfsson\",\n \"cc\": \"Delilah41@yahoo.com\",\n \"email\": \"Carleton_Altenwerth@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/konus/128.jpg\",\n \"body\": \"A illum sunt. Voluptates aperiam nam incidunt animi dolorem deleniti. Sit beatae aliquid quia sed placeat facere ab cumque delectus. Officiis et et fugit iure et consequatur. Quae est sequi placeat rerum quia. Voluptatem est quod libero animi culpa. Aspernatur omnis culpa. Sequi dolores harum omnis veniam molestiae. Ea quia veniam architecto quas est eos harum iure voluptas. Ab quidem reiciendis consequatur eos.\",\n \"subject\": \"a corrupti facilis\",\n \"date\": \"2017-02-25T23:09:05.732Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 70,\n \"key\": 70,\n \"name\": \"Jessy Hahn\",\n \"cc\": \"Gustave_Stehr91@yahoo.com\",\n \"email\": \"Jocelyn.Zulauf@gmail.com\",\n \"body\": \"Voluptate neque corrupti et ut. Ipsam non dolore quia et. Sit dolor voluptates. Velit eos sint asperiores magnam modi praesentium dignissimos quidem. Corporis modi ut voluptas fugiat aperiam ut pariatur. Voluptatum aut provident. Minus rerum quam aut similique ut neque sit. Voluptatum corrupti quia qui. Et similique natus. Explicabo sed eius doloribus maiores rerum odit cum nam enim.\",\n \"subject\": \"unde et reiciendis\",\n \"date\": \"2017-02-10T06:37:35.336Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 10,\n \"key\": 10,\n \"name\": \"Domenico Shanahan\",\n \"cc\": \"Macie_Grant@gmail.com\",\n \"email\": \"Reva.Cormier2@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/ManikRathee/128.jpg\",\n \"body\": \"Atque officiis incidunt voluptatem neque sed placeat ut et. Qui inventore iste vitae est quia. Laborum quis quia. Et qui dolores atque nihil pariatur. Blanditiis dolorem consectetur quia. Nemo asperiores exercitationem eos architecto fugit quo. Et commodi dolor adipisci aut porro alias velit ipsa. Autem error ut doloremque ut explicabo eum assumenda. Magni eveniet quaerat dignissimos ipsam enim. Et nostrum voluptatem minima qui eveniet voluptatem nemo dolore nesciunt.\",\n \"subject\": \"neque assumenda distinctio\",\n \"date\": \"2017-02-08T20:02:47.644Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 40,\n \"key\": 40,\n \"name\": \"Einar Prohaska\",\n \"cc\": \"Mabel.Kling@yahoo.com\",\n \"email\": \"Sarah_Leuschke@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/colgruv/128.jpg\",\n \"body\": \"Voluptatum dicta commodi nam odio. Qui omnis laborum deserunt sed iste praesentium atque. Nihil natus vel quibusdam qui distinctio. Amet consequuntur dolor qui ad saepe et cupiditate libero dolores. Rerum voluptatem nulla. Deserunt voluptatum et pariatur eum recusandae praesentium. Inventore placeat inventore excepturi quod velit. In id adipisci sed perferendis odit voluptas et sit. Eum nihil unde assumenda vel modi. Quia nihil placeat beatae quas eius illum.\",\n \"subject\": \"nemo unde ut\",\n \"date\": \"2017-02-08T01:09:50.428Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 58,\n \"key\": 58,\n \"name\": \"Hertha Wisozk\",\n \"cc\": \"Kiara.Armstrong@gmail.com\",\n \"email\": \"Emmie9@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/missaaamy/128.jpg\",\n \"body\": \"Dolorum quisquam eum est explicabo atque. Pariatur atque impedit corporis non. Reiciendis minus sint et. Quis ut ratione consequuntur. Possimus facilis voluptas vel et quibusdam. Fugiat sed enim laudantium. Delectus ut quia rem dolores rerum necessitatibus voluptatem quos aut. Et quae voluptates nesciunt tenetur quia ut aut fuga corrupti. Aut voluptatem facere est officiis. Quasi provident id esse suscipit.\",\n \"subject\": \"dolores iure nisi\",\n \"date\": \"2017-01-29T19:04:48.094Z\",\n \"bucket\": \"Starred\",\n \"read\": true\n}, {\n \"id\": 61,\n \"key\": 61,\n \"name\": \"Evangeline Robel\",\n \"cc\": \"Yasmeen74@hotmail.com\",\n \"email\": \"Maxine_Conn@gmail.com\",\n \"body\": \"Quo enim atque. Saepe molestiae perferendis qui maiores ut eum suscipit. Optio architecto nihil necessitatibus saepe aut dolorem ex. Ad ipsum aut tempora ab minus ut minus. Natus facere aut. Autem et vero nulla. Commodi aut possimus cumque et officia autem aut. Deserunt totam eum facere voluptatem incidunt provident et saepe est. Aut qui maxime. Iste in quia.\",\n \"subject\": \"error qui non\",\n \"date\": \"2017-01-24T00:32:23.309Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 68,\n \"key\": 68,\n \"name\": \"Corbin Bruen\",\n \"cc\": \"Buck_Halvorson@gmail.com\",\n \"email\": \"Max24@gmail.com\",\n \"tags\": \"Family\",\n \"body\": \"Quia eligendi quia sit. Alias vel exercitationem molestias sed voluptatibus quo. Accusantium cupiditate facere qui possimus sunt fugiat aut. Pariatur aut deleniti et sed sed voluptatem quas. Sit nihil veritatis tenetur temporibus labore et excepturi quia. Consequatur quae nobis quia alias et commodi architecto. Vel nam consequuntur possimus autem. Laboriosam voluptas eaque omnis expedita optio aut tenetur doloribus repellendus. Aut magni tenetur veniam. Sint consequuntur consequatur amet dolorem officiis perferendis laudantium saepe aut.\",\n \"subject\": \"laborum voluptatem delectus\",\n \"date\": \"2017-01-12T02:23:00.347Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 95,\n \"key\": 95,\n \"name\": \"Amara Denesik\",\n \"cc\": \"Rickie_Murazik@hotmail.com\",\n \"email\": \"Cierra.Sipes23@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/xiel/128.jpg\",\n \"tags\": \"Teachers\",\n \"body\": \"Nostrum dignissimos iure eos qui delectus. Vel cupiditate ex. Quam aliquid nesciunt cumque et. Est autem rerum voluptates ea id. Placeat sint eum aut. Illum autem officiis. Et expedita rerum veniam sed praesentium. Placeat aliquam similique dolorem doloribus fuga autem autem. Ipsa earum animi in. Fugit et veritatis quam autem tempora dolor molestias soluta est.\",\n \"subject\": \"et consectetur amet\",\n \"date\": \"2017-01-10T21:30:05.964Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 55,\n \"key\": 55,\n \"name\": \"Alayna Abernathy\",\n \"cc\": \"Demario.Kilback@yahoo.com\",\n \"email\": \"Vinnie_Turcotte19@hotmail.com\",\n \"tags\": \"ClassMates\",\n \"body\": \"Quo doloremque tenetur consequatur commodi perferendis expedita. Aperiam magni quibusdam fuga culpa sed tempora. Occaecati dolorem inventore veniam est nihil sit. Perspiciatis corrupti veritatis distinctio sint eos. Alias molestias qui sunt est quo a eum non velit. Nesciunt ipsa ipsum ut nihil. Omnis animi praesentium. Placeat qui porro optio rerum eos. Impedit laborum ipsam dolores et atque eaque sint. Tenetur et ipsam est ea quis aut officiis et dolores.\",\n \"subject\": \"sunt error fugit\",\n \"date\": \"2017-01-04T11:18:33.434Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 25,\n \"key\": 25,\n \"name\": \"Marcellus Torp\",\n \"cc\": \"Lester.Tremblay56@gmail.com\",\n \"email\": \"Chaz3@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/yayteejay/128.jpg\",\n \"body\": \"Id quod ut natus voluptas aut harum voluptatibus sunt. Et nemo corporis sint architecto ex vitae voluptatem soluta sapiente. Explicabo dolores et molestiae numquam non. Ducimus dolor alias temporibus eligendi iusto. Rerum quos est repellendus quae sint sit est voluptas quaerat. Temporibus quasi iusto. Inventore et voluptatibus quisquam temporibus maxime repellendus dicta numquam. Autem voluptatum assumenda sequi ipsum ut. Quasi sequi et temporibus. Rerum consequatur recusandae est.\",\n \"subject\": \"id ut est\",\n \"date\": \"2017-01-03T10:35:53.688Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 91,\n \"key\": 91,\n \"name\": \"Eleanora Metz\",\n \"cc\": \"Breanne97@hotmail.com\",\n \"email\": \"Ashleigh65@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/betraydan/128.jpg\",\n \"body\": \"Natus delectus necessitatibus nostrum ratione atque neque inventore fugit. Totam eligendi sed nesciunt ducimus similique. Quae excepturi eos quaerat modi aut eveniet ex. Quasi voluptas quis atque porro quia eveniet. Soluta amet voluptate dolorem est quo numquam. Dolorum iure mollitia voluptas voluptas. Voluptatem vel rerum sed illum vel tempora. Temporibus nesciunt et quis laboriosam minima perspiciatis officia. Adipisci cupiditate mollitia libero adipisci doloribus eos. Adipisci error sunt nisi.\",\n \"subject\": \"exercitationem delectus velit\",\n \"date\": \"2016-12-31T08:20:35.747Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 82,\n \"key\": 82,\n \"name\": \"Shanel Cummerata\",\n \"cc\": \"Dejuan_Wolf@gmail.com\",\n \"email\": \"Madyson.Muller@yahoo.com\",\n \"tags\": \"Friend\",\n \"body\": \"Fugiat ea qui quasi. Excepturi autem voluptatum nulla odio quia beatae qui neque. Laboriosam eum quia necessitatibus aut rerum placeat dolorum deserunt. Quia dolores aut corporis. Dolor repellendus delectus esse rerum magni reprehenderit voluptatem. Tempora cupiditate facere tempore tempore voluptatem voluptatem odit. Quaerat laborum laborum culpa. Vel sint eveniet. Recusandae expedita voluptatum dolorem alias fuga. Voluptatem dolorem enim aut sequi deleniti voluptas et facilis omnis.\",\n \"subject\": \"molestias laudantium vel\",\n \"date\": \"2016-12-31T03:44:15.599Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 48,\n \"key\": 48,\n \"name\": \"Elva Orn\",\n \"cc\": \"Della.Wuckert@gmail.com\",\n \"email\": \"Elvis_Oberbrunner@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/mahdif/128.jpg\",\n \"body\": \"Dolorem harum dolor temporibus laboriosam. Ducimus temporibus a. Qui et sed quia qui. Cum voluptatem non atque. Non esse maxime odit. Ab repudiandae reiciendis vel odio nobis magni. Tempore assumenda cum tenetur amet et fugit. Ab ab animi est voluptas consequatur et repudiandae qui sint. Possimus ipsam alias occaecati sint officiis nihil. Eos nihil soluta eos reiciendis dolor sequi.\",\n \"subject\": \"quasi voluptas voluptas\",\n \"date\": \"2016-12-29T14:27:05.995Z\",\n \"bucket\": \"Starred\",\n \"read\": true\n}, {\n \"id\": 17,\n \"key\": 17,\n \"name\": \"Mateo Stehr\",\n \"cc\": \"Emery.Willms54@yahoo.com\",\n \"email\": \"Cullen22@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/darcystonge/128.jpg\",\n \"tags\": \"Family\",\n \"body\": \"Distinctio voluptatibus nihil. Vero fugiat ut dicta cumque quo. Illum officiis adipisci quaerat sunt dolorum consequatur officia voluptatem minima. Doloremque culpa quae et. Modi deserunt perferendis autem quo aliquid quia. Laudantium aut perspiciatis aperiam provident. Commodi sit et. Esse modi placeat reprehenderit et sit non. Maiores aperiam modi aut aspernatur. Aut non veritatis at iste ut repudiandae provident animi ullam.\",\n \"subject\": \"id doloremque omnis\",\n \"date\": \"2016-12-18T09:10:57.276Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 46,\n \"key\": 46,\n \"name\": \"Katherine Nitzsche\",\n \"cc\": \"Bernadine91@yahoo.com\",\n \"email\": \"Dillan.Boyle89@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/skkirilov/128.jpg\",\n \"tags\": \"Colleague\",\n \"body\": \"Eum tenetur consequatur sit voluptas maiores repellat quia. Est cumque doloremque voluptatum. Adipisci totam enim. Est at corrupti rerum voluptatem. Eos velit aut ut ab laborum minima. Quod optio dolores. Voluptas saepe deserunt est deleniti praesentium unde saepe. Magni ex est nostrum assumenda blanditiis quod. Voluptatem ut perspiciatis. Animi perferendis est totam et quos sed nemo illo sint.\",\n \"subject\": \"nemo reprehenderit quis\",\n \"date\": \"2016-12-18T00:01:59.194Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 13,\n \"key\": 13,\n \"name\": \"Cecilia Schulist\",\n \"cc\": \"Imelda.Dibbert@gmail.com\",\n \"email\": \"Anderson.Terry14@gmail.com\",\n \"body\": \"Iure rerum quia quia quidem doloribus praesentium tempore aut. Doloribus ad voluptatum harum est. Cum assumenda et. Dolorem est maxime officia aliquid et perferendis occaecati. Eos nesciunt tempora ut alias. Iusto quo blanditiis recusandae. Voluptas omnis sint. Ab debitis aut delectus. Dolorum accusantium repellat. Ut est similique dolor nesciunt deserunt molestias porro sunt.\",\n \"subject\": \"eligendi maiores quaerat\",\n \"date\": \"2016-12-13T09:08:37.974Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 29,\n \"key\": 29,\n \"name\": \"Henriette Rohan\",\n \"cc\": \"Laurianne26@gmail.com\",\n \"email\": \"Vicenta.Pouros34@yahoo.com\",\n \"body\": \"Vel consequatur culpa ut voluptatem est omnis enim. Ut eos tempora quibusdam vitae. Dolor mollitia alias occaecati cum officia cumque nesciunt sint. Animi ut id accusantium incidunt beatae. Voluptatum expedita qui repellendus veritatis impedit aliquid et illum. Quia quasi similique sint quidem est non. Blanditiis dignissimos autem quaerat nam ex earum. Et est explicabo eum et. Dolores nisi et officia quibusdam inventore. Rerum non quos rerum ipsa vitae odio.\",\n \"subject\": \"quia assumenda at\",\n \"date\": \"2016-12-11T23:43:32.239Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 7,\n \"key\": 7,\n \"name\": \"Earlene Simonis\",\n \"cc\": \"Marilie_Moore@hotmail.com\",\n \"email\": \"Sydnie.Aufderhar61@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/justinrhee/128.jpg\",\n \"tags\": \"Students\",\n \"body\": \"Et unde repudiandae earum maiores vel. Impedit consectetur dolorem nisi. Nesciunt omnis et veniam et doloremque a non consectetur vero. Veniam aperiam iste voluptas illo tempora. Rerum modi voluptate qui distinctio atque voluptatem at. Sequi voluptas nobis consequatur omnis. Expedita reiciendis aut eum qui qui possimus magnam similique est. Dignissimos odit ducimus perspiciatis. Qui ipsum ad maiores nemo id. Minus quidem rerum omnis est rerum eos dolorem voluptate.\",\n \"subject\": \"praesentium nesciunt eveniet\",\n \"date\": \"2016-11-28T10:06:56.174Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 23,\n \"key\": 23,\n \"name\": \"Robbie Kuhic\",\n \"cc\": \"Vicente_Brakus79@gmail.com\",\n \"email\": \"Carol.Treutel@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/themikenagle/128.jpg\",\n \"body\": \"Aut maxime quae fuga nisi a soluta. Inventore nam sed reiciendis doloremque eum minus dignissimos. Laborum pariatur fugit vel et. Et quia quia. Et numquam voluptas illum nihil dolorem sit nihil. Omnis quibusdam rem esse qui non natus. Aut magnam recusandae ex amet. Cupiditate eos autem ut quae voluptatem animi nihil voluptates itaque. Rerum sint sunt quo culpa ea molestiae modi qui consequatur. Esse et dolor enim ea ipsum aut.\",\n \"subject\": \"vero architecto provident\",\n \"date\": \"2016-11-24T21:10:31.798Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 71,\n \"key\": 71,\n \"name\": \"Werner McDermott\",\n \"cc\": \"Kareem_Ward@gmail.com\",\n \"email\": \"Gaetano77@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/jasonmarkjones/128.jpg\",\n \"body\": \"Ullam necessitatibus sunt alias dolorem minus aut illum impedit. Harum repellat voluptatem. Quia sed ad et. Perspiciatis vel assumenda officia labore nobis voluptas voluptates. Rem quaerat vel rerum adipisci. Dolorum quia error non. In dolorem ex alias. Blanditiis optio libero exercitationem dolore. Dolorem tempora ut dolorem ut. Aut ipsa perspiciatis.\",\n \"subject\": \"ullam illo placeat\",\n \"date\": \"2016-11-09T18:24:36.480Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 66,\n \"key\": 66,\n \"name\": \"Steve Dickens\",\n \"cc\": \"Floy.Bartoletti@yahoo.com\",\n \"email\": \"Frederique_Wunsch@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/saarabpreet/128.jpg\",\n \"tags\": \"Students\",\n \"body\": \"Minima debitis id neque architecto. Aliquid quis excepturi sapiente repellat. Sint molestias non omnis numquam dolor veritatis esse aperiam. Sit voluptates doloremque repellat labore est voluptatum. Autem ut quos provident voluptatem. Sed a nemo et ut iure autem. Qui repudiandae qui eos. Consequatur vel sed provident tempore cum hic. Deserunt harum dolores natus rem id et quia eum voluptatum. Et eum sapiente sunt ut sapiente quidem.\",\n \"subject\": \"exercitationem vero qui\",\n \"date\": \"2016-11-08T17:44:26.340Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 33,\n \"key\": 33,\n \"name\": \"Odie Gislason\",\n \"cc\": \"Tania.Mueller@hotmail.com\",\n \"email\": \"Angelina.Tromp7@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/gseguin/128.jpg\",\n \"body\": \"Molestias vero pariatur possimus repudiandae quo sed. Ut in minus nesciunt dolor quidem recusandae doloremque libero. Veritatis quis nemo repellat. Omnis et occaecati. Inventore natus voluptate quisquam rerum numquam inventore tempora a amet. Fuga iusto ullam. Est aspernatur voluptatem optio quisquam accusantium. Voluptatem eum eum in sed ut nostrum qui voluptate rem. Et et impedit veniam dolores. Voluptas non dolorem.\",\n \"subject\": \"rerum voluptas et\",\n \"date\": \"2016-11-06T13:20:00.738Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 5,\n \"key\": 5,\n \"name\": \"Berenice Bradtke\",\n \"cc\": \"Clarissa.Ratke@hotmail.com\",\n \"email\": \"Enoch_Olson30@gmail.com\",\n \"body\": \"Temporibus quidem eligendi at et. Cupiditate in quis iste magni. Laboriosam autem explicabo voluptas quos. Minus tempora perferendis et dolore sed quasi dolorem fugiat blanditiis. Iusto id quia quasi at earum quam tempore. Aut incidunt sapiente dolor iste suscipit. Ut quia ut consequatur exercitationem iusto recusandae assumenda. Et laudantium molestias beatae repellat aut eius. Odit quas consectetur saepe ex quo rerum qui. Dolorem aspernatur est optio dicta non.\",\n \"subject\": \"voluptatem sit pariatur\",\n \"date\": \"2016-11-01T21:19:38.377Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 92,\n \"key\": 92,\n \"name\": \"Jarvis Kovacek\",\n \"cc\": \"Westley81@hotmail.com\",\n \"email\": \"Cleve_Stroman@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/vikashpathak18/128.jpg\",\n \"tags\": \"Teachers\",\n \"body\": \"Sint illum voluptatem autem odit culpa autem reprehenderit veniam. Eos sit cumque voluptatem blanditiis molestiae quia aspernatur. Et dolorem dolorem delectus autem nesciunt quia ut. Consequatur qui quas iure fugit sequi ratione. Quod cumque et eos voluptatem qui est quis necessitatibus. Veritatis voluptas voluptatibus. Atque impedit illum quos eum. Tenetur libero culpa et nisi ea. Suscipit et et nihil quos temporibus. Pariatur aspernatur nisi et reiciendis.\",\n \"subject\": \"beatae qui rerum\",\n \"date\": \"2016-11-01T11:37:57.980Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 73,\n \"key\": 73,\n \"name\": \"Hope Schuster\",\n \"cc\": \"Colt_Herzog@yahoo.com\",\n \"email\": \"Jeffrey_Glover@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/dorphern/128.jpg\",\n \"tags\": \"Students\",\n \"body\": \"Odio fuga nobis fugit molestias dicta sint et eos officiis. Quisquam dolores id. Earum aspernatur ut laboriosam maxime rerum aut sit voluptas ipsum. Amet deleniti repellendus et atque quia tenetur. Autem cupiditate labore. Autem reiciendis qui unde nostrum eos ducimus quis. Officia odit et sunt voluptatibus et id. Cupiditate est et repellendus. Fugit at qui et aperiam explicabo nobis deleniti fugit. Et amet adipisci et nihil sed non quasi in et.\",\n \"subject\": \"est nobis odit\",\n \"date\": \"2016-10-28T11:19:23.037Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 36,\n \"key\": 36,\n \"name\": \"Jared Rath\",\n \"cc\": \"Macy_Medhurst@hotmail.com\",\n \"email\": \"Delpha_Gutkowski46@yahoo.com\",\n \"tags\": \"Colleague\",\n \"body\": \"Esse sed est laborum est aperiam optio totam. Sit occaecati sint aut omnis laudantium. Occaecati nulla aspernatur nulla est iure alias consequatur. Molestiae consequuntur sit id ut enim. Ea et voluptatibus assumenda cum animi sed esse aut. Similique ipsam assumenda esse rerum. Et doloribus vel nesciunt hic rerum est enim est commodi. Aperiam fugiat explicabo vel doloribus qui nisi et aut. Pariatur aut dolores numquam beatae repellendus et omnis. Velit voluptates sint in eius voluptates sequi aut ad necessitatibus.\",\n \"subject\": \"ad corrupti sequi\",\n \"date\": \"2016-10-27T09:22:19.945Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 27,\n \"key\": 27,\n \"name\": \"Teagan Keebler\",\n \"cc\": \"Fritz.Fisher47@gmail.com\",\n \"email\": \"Sim_Klocko72@yahoo.com\",\n \"tags\": \"Students\",\n \"body\": \"Vero dicta quis voluptatem et autem. Ut odit aut qui voluptatem. Et hic tenetur. Numquam recusandae aliquid vel eligendi nisi accusantium. Illum sunt corporis cupiditate vitae eos perferendis rerum incidunt tenetur. Et vero labore illo et numquam. Alias aliquam quibusdam. Nam fugit minus aspernatur ab numquam inventore ex. Reprehenderit veniam doloremque sequi commodi molestias magni. Minima vel delectus eius consequatur sit aut est suscipit voluptatem.\",\n \"subject\": \"inventore ut quasi\",\n \"date\": \"2016-10-19T01:34:35.691Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 83,\n \"key\": 83,\n \"name\": \"Kara Kuhic\",\n \"cc\": \"Reyna_Schaden97@gmail.com\",\n \"email\": \"Freddy.Gibson60@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/aiiaiiaii/128.jpg\",\n \"body\": \"Laudantium similique nam eum ut nihil. Non qui at beatae. Minima optio dolores quis. Quasi sed odit est quia qui dolore culpa. Consequatur voluptatibus ipsum explicabo et possimus. In harum ullam ut enim incidunt assumenda eveniet. Libero saepe vitae vero. Rem omnis nobis non quis. Sint ut aut est. Consequatur rem consequatur.\",\n \"subject\": \"asperiores commodi et\",\n \"date\": \"2016-10-17T00:29:28.677Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 76,\n \"key\": 76,\n \"name\": \"Mariela Rath\",\n \"cc\": \"Jannie74@yahoo.com\",\n \"email\": \"Raina37@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/plasticine/128.jpg\",\n \"tags\": \"Friend\",\n \"body\": \"Numquam aliquam vitae a quis doloribus nihil blanditiis. Corporis eius animi. Sapiente beatae accusamus. Minima dolorem voluptas. Repudiandae velit nostrum. Voluptas enim repellendus reprehenderit ea suscipit accusamus consequuntur. Explicabo cum ratione impedit sunt voluptas. Ut placeat sint dolore ipsum. Aut ex error blanditiis et atque sint. Ab culpa ad et.\",\n \"subject\": \"ipsum eos esse\",\n \"date\": \"2016-10-16T13:44:14.334Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 18,\n \"key\": 18,\n \"name\": \"Brown Padberg\",\n \"cc\": \"Josefa_Greenfelder@hotmail.com\",\n \"email\": \"Terence_Considine@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/victorerixon/128.jpg\",\n \"body\": \"Nesciunt eum eaque. Laudantium voluptatem quis fuga sint. Magni dignissimos vero at dolorem repudiandae aut sunt qui. Beatae soluta tenetur. Porro autem quidem. At omnis aliquam eum. Aut praesentium nulla dolores quod quibusdam perferendis. Dolores ut id repellat similique libero aut quo laudantium. Nulla consequuntur voluptatem cumque beatae eum voluptates. Iusto voluptatum enim repellat ipsam illum.\",\n \"subject\": \"alias reiciendis tempora\",\n \"date\": \"2016-10-07T02:56:02.571Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 88,\n \"key\": 88,\n \"name\": \"Luna Labadie\",\n \"cc\": \"Bessie.Blanda86@hotmail.com\",\n \"email\": \"Fletcher_Schumm@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/buddhasource/128.jpg\",\n \"body\": \"Quia unde sapiente excepturi commodi rerum est consequatur at. Sed at labore labore deleniti hic consequuntur perferendis ipsa. Aut molestiae odio eos molestiae delectus dolores quisquam sunt. Vitae dolor eum similique magni voluptatem. Eveniet sed vitae. Autem omnis corrupti dolorem nesciunt rerum vel odit necessitatibus. A recusandae magni. Voluptatem at eveniet voluptatem qui quia asperiores harum error ea. Omnis rerum est consequatur. Culpa aut vel qui sint et odio.\",\n \"subject\": \"deleniti aut aut\",\n \"date\": \"2016-10-05T16:02:18.907Z\",\n \"bucket\": \"spam\",\n \"read\": true\n}, {\n \"id\": 16,\n \"key\": 16,\n \"name\": \"Keyon Boyle\",\n \"cc\": \"Ellsworth.Goldner48@hotmail.com\",\n \"email\": \"Agnes_Casper@gmail.com\",\n \"body\": \"Vero consequatur rem. Autem atque consequatur. Labore adipisci qui. Cumque quia labore nisi est molestiae autem voluptatem est. Adipisci velit corrupti similique fugit et. Incidunt vitae quam. Similique animi sint qui eos aut. Quia tempore dolore ducimus iusto non omnis aut. Voluptas maxime iure ratione. Maiores numquam aut fugiat.\",\n \"subject\": \"eveniet qui molestiae\",\n \"date\": \"2016-10-02T23:13:23.785Z\",\n \"bucket\": \"spam\",\n \"read\": true\n}, {\n \"id\": 89,\n \"key\": 89,\n \"name\": \"Magali Swaniawski\",\n \"cc\": \"Anika.Lebsack36@gmail.com\",\n \"email\": \"Shannon23@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/SULiik/128.jpg\",\n \"tags\": \"Colleague\",\n \"body\": \"Fugiat hic esse optio. Rerum beatae quas dolores pariatur in qui sunt. Consectetur sunt facere nemo qui voluptate non numquam. Ut voluptate saepe dolorem ut. Magni quae sequi laborum. Consequatur repellat iusto laboriosam sit laborum labore minus voluptas repellat. Modi aspernatur consequuntur qui at aut laudantium est non. Soluta et et aperiam quisquam quibusdam voluptatem. Ipsam et accusamus aperiam. Nam rerum deleniti ab hic.\",\n \"subject\": \"sed vel nihil\",\n \"date\": \"2016-09-30T10:25:06.903Z\",\n \"bucket\": \"Starred\",\n \"read\": true\n}, {\n \"id\": 39,\n \"key\": 39,\n \"name\": \"Louvenia Bruen\",\n \"cc\": \"Christophe12@gmail.com\",\n \"email\": \"Cletus.Schumm@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/sementiy/128.jpg\",\n \"tags\": \"Family\",\n \"body\": \"Non ut fuga voluptas possimus non ab velit. Praesentium et incidunt consequuntur saepe. Voluptatibus ut velit laboriosam dignissimos. Nihil omnis non voluptatem aut consequatur dolores laboriosam sit. Cum distinctio est. Nobis corrupti libero. Hic velit assumenda unde odit fugit numquam et. Aliquam natus aut harum quaerat exercitationem. Ab cupiditate distinctio culpa impedit. Non et voluptatem impedit repellat neque omnis voluptas.\",\n \"subject\": \"qui doloremque omnis\",\n \"date\": \"2016-09-09T02:11:57.609Z\",\n \"bucket\": \"Starred\",\n \"read\": true\n}, {\n \"id\": 74,\n \"key\": 74,\n \"name\": \"Samara Pfeffer\",\n \"cc\": \"Bridgette_Senger26@yahoo.com\",\n \"email\": \"Joey76@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/xamorep/128.jpg\",\n \"body\": \"Vero officia quasi optio quidem. Cupiditate consequuntur officia asperiores ut vel quisquam nam. Numquam eaque minima est rerum est blanditiis veritatis repudiandae laudantium. Et qui placeat saepe ad quas harum maxime quod. Dolor quae omnis qui. Est odit suscipit aperiam esse laborum modi iste distinctio occaecati. Rerum quia aspernatur quaerat minima eos rerum. Voluptas ad animi non aliquid. Recusandae repellendus consequatur quam. Aliquid unde tenetur.\",\n \"subject\": \"consectetur a accusantium\",\n \"date\": \"2016-09-08T16:33:08.696Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 42,\n \"key\": 42,\n \"name\": \"Maximilian Breitenberg\",\n \"cc\": \"Lavina.Lubowitz64@yahoo.com\",\n \"email\": \"Ignatius_McGlynn@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/designervzm/128.jpg\",\n \"tags\": \"Students\",\n \"body\": \"Vero non voluptate. Asperiores inventore ut debitis odio culpa et exercitationem et ratione. Quo occaecati corrupti quia nihil dicta explicabo. Sequi consequatur harum odit. Nostrum nulla doloremque recusandae suscipit veritatis sapiente minima corporis. Voluptatem amet fugit blanditiis dolor voluptatem commodi. Atque rerum incidunt perferendis alias accusantium ducimus eveniet fuga nihil. Ut adipisci autem sit ut quia ipsa quia laborum molestiae. Et cum voluptas. Soluta eum perspiciatis iusto officiis.\",\n \"subject\": \"harum est neque\",\n \"date\": \"2016-09-06T10:16:27.820Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 51,\n \"key\": 51,\n \"name\": \"Kaylin Koch\",\n \"cc\": \"Marjorie80@yahoo.com\",\n \"email\": \"Cleveland0@gmail.com\",\n \"tags\": \"Friend\",\n \"body\": \"Et id magni et minus amet sit veritatis. Voluptatem incidunt ipsa dolores ipsam laboriosam non laudantium et. Sed eaque placeat. Provident perferendis suscipit voluptatem vero enim suscipit totam omnis. Reiciendis delectus in consequatur. Id deserunt voluptatem ea quam dolores quod ipsum aperiam velit. Ratione praesentium rerum fugiat voluptatem maiores vero dolorem eaque fugit. Non quibusdam dolore maiores consequatur. Quia deleniti commodi sed tempore aut. Omnis est corporis qui placeat.\",\n \"subject\": \"facilis architecto maxime\",\n \"date\": \"2016-09-03T17:13:24.524Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 8,\n \"key\": 8,\n \"name\": \"Angus Thompson\",\n \"cc\": \"Lera.Terry92@hotmail.com\",\n \"email\": \"Stella73@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/agustincruiz/128.jpg\",\n \"body\": \"Assumenda saepe maxime quas ut et. Enim dolore quas nihil et est atque sit. Enim tenetur eos iste velit amet quia. Facilis totam praesentium debitis veniam similique consequatur. Asperiores et quia recusandae quis aut. Deserunt et praesentium repudiandae tempora fugit odio. Quaerat error laudantium eligendi facilis veniam. Laudantium unde sapiente nemo. Minima voluptatem nemo qui autem tenetur. Sed accusamus maxime natus sint quibusdam eligendi quae rerum.\",\n \"subject\": \"rerum et ut\",\n \"date\": \"2016-09-01T20:39:57.285Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 14,\n \"key\": 14,\n \"name\": \"Kaci Heathcote\",\n \"cc\": \"Krista.Sawayn36@gmail.com\",\n \"email\": \"Ford_Conn@hotmail.com\",\n \"body\": \"Laboriosam doloremque et commodi enim sint. Mollitia omnis omnis et voluptate vitae accusantium architecto. Debitis aut doloremque voluptatem quia molestiae explicabo sunt. Praesentium id accusantium nisi dignissimos nostrum repudiandae amet. Consequatur tempore laborum id a molestiae molestiae atque placeat placeat. Magnam laudantium non. Magnam enim excepturi rerum voluptatem ab et nesciunt eum. Enim ea quis delectus recusandae officiis quia vitae. Quam maiores facilis magni omnis ex quia dolor qui. Fuga architecto vel eos excepturi.\",\n \"subject\": \"autem omnis dolorem\",\n \"date\": \"2016-08-31T11:31:44.241Z\",\n \"bucket\": \"spam\",\n \"read\": true\n}, {\n \"id\": 20,\n \"key\": 20,\n \"name\": \"Stephon Rowe\",\n \"cc\": \"Mohammed_Rippin@gmail.com\",\n \"email\": \"Walter.Breitenberg@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/scottfeltham/128.jpg\",\n \"tags\": \"Colleague\",\n \"body\": \"Velit fuga ullam qui dolore vel. Expedita distinctio unde a non quia. Explicabo quis et a. Quidem recusandae similique magni ut velit rerum eaque. Voluptatem nulla debitis tenetur rerum maiores. Ipsa in dolores quo reiciendis adipisci voluptas consectetur consequuntur error. Quia ad tempore tempora maxime totam corporis minima vitae dolorum. Delectus sequi velit omnis ut consequatur ullam commodi. Est voluptatem ab adipisci dolores. Sed ullam autem deleniti rerum quos atque veniam et ut.\",\n \"subject\": \"ab consequatur qui\",\n \"date\": \"2016-08-30T22:01:16.544Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 85,\n \"key\": 85,\n \"name\": \"Dejon Bartell\",\n \"cc\": \"Dusty_Nolan59@gmail.com\",\n \"email\": \"Citlalli83@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/cherif_b/128.jpg\",\n \"tags\": \"Family\",\n \"body\": \"Aperiam aliquid in voluptate et consequatur expedita et praesentium consequatur. Molestias non debitis consequatur impedit. Et accusamus quibusdam tenetur veniam enim. Sed ipsum occaecati natus. Autem sunt voluptatem soluta vel. Nostrum quia aut sunt reiciendis voluptas. Necessitatibus nihil eum et optio. Quia quos aut aut voluptatem quo eos quod. Eum cum suscipit distinctio. Laboriosam saepe minima.\",\n \"subject\": \"adipisci dolorum voluptatem\",\n \"date\": \"2016-08-26T02:04:20.150Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 62,\n \"key\": 62,\n \"name\": \"Cydney Casper\",\n \"cc\": \"Jerome_Okuneva@hotmail.com\",\n \"email\": \"Jonas13@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/SULiik/128.jpg\",\n \"body\": \"Animi unde non nostrum et dolore. Nemo nihil praesentium qui nobis. Earum pariatur et omnis exercitationem corrupti ipsa. Et provident ex aliquam consequatur architecto accusantium. Facilis laboriosam debitis nulla natus modi saepe possimus. Nihil voluptatem ad repellendus non et et similique. Amet possimus velit. Veniam nulla sunt illo eum rerum quaerat. Et iusto molestiae aliquid rerum ratione quas et recusandae. Ullam dolorem laboriosam tempore nesciunt.\",\n \"subject\": \"et recusandae beatae\",\n \"date\": \"2016-08-11T05:54:46.384Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 47,\n \"key\": 47,\n \"name\": \"Ashlee Schulist\",\n \"cc\": \"Breanna81@hotmail.com\",\n \"email\": \"Marie_Ryan@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/mirfanqureshi/128.jpg\",\n \"body\": \"Dolor libero quos eius. Eveniet deserunt quia neque exercitationem sapiente maxime. Dolorem porro in amet at eligendi. Id vitae incidunt est provident ab quia. Mollitia labore ratione voluptatum non. Dolorum delectus velit veniam doloremque qui ab. Tempore et autem harum. Blanditiis similique vel labore itaque. Quis provident repellendus eos ipsa. Accusamus accusantium sed impedit quo commodi est sunt.\",\n \"subject\": \"omnis quas aut\",\n \"date\": \"2016-08-10T16:07:33.349Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 63,\n \"key\": 63,\n \"name\": \"Chelsey Gislason\",\n \"cc\": \"Cullen_Shanahan@gmail.com\",\n \"email\": \"Estefania98@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/overcloacked/128.jpg\",\n \"body\": \"Voluptas natus cupiditate odio odit sit voluptas et. Qui soluta facere ut impedit et. Id dolores sed ut expedita quibusdam hic facilis quia. Expedita quia aut eum voluptas id. Veritatis labore delectus quae perspiciatis dolorem saepe deserunt ut omnis. Labore voluptas consectetur quis laboriosam nulla enim totam ut molestiae. Qui ipsa est dicta. Qui consequatur eum voluptatem consequatur eos suscipit repellendus voluptates cum. Doloremque vel rerum incidunt recusandae. Quia velit tempora fugiat pariatur eveniet repudiandae quia modi.\",\n \"subject\": \"iure est eos\",\n \"date\": \"2016-08-10T04:33:34.487Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 72,\n \"key\": 72,\n \"name\": \"Sigmund Spinka\",\n \"cc\": \"Nikita_Rice91@hotmail.com\",\n \"email\": \"Margarita.Kohler@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/anasnakawa/128.jpg\",\n \"body\": \"Id et quam dolores non expedita laborum eius. Voluptas quia sunt delectus consectetur reprehenderit ut iusto delectus. Sit quas aliquam ut officiis. Ullam vitae hic est voluptatem voluptatem asperiores molestiae. Fugiat dolorem repudiandae. Omnis quis debitis natus perspiciatis non quo id porro quod. Dolor temporibus commodi nisi in error in. Eos accusantium dignissimos aliquid fuga doloremque ad iure dolorem quisquam. Officiis reiciendis et nam mollitia nulla provident est. Repellendus pariatur consequatur et iste enim.\",\n \"subject\": \"id quae autem\",\n \"date\": \"2016-08-08T17:11:29.856Z\",\n \"bucket\": \"spam\",\n \"read\": true\n}, {\n \"id\": 12,\n \"key\": 12,\n \"name\": \"Mauricio Beier\",\n \"cc\": \"Rosendo74@hotmail.com\",\n \"email\": \"Kyler_Gaylord46@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/tonymillion/128.jpg\",\n \"tags\": \"Family\",\n \"body\": \"Qui ex rem officia illo. Et quos dolores eaque autem. At rerum officia ut necessitatibus repellat. Sunt labore ut eos eaque ut quam. Ut doloribus aut optio cum voluptas vitae qui. Aut laborum voluptas cum. Eligendi repudiandae ullam incidunt consequuntur consectetur ut ab quia. Voluptas voluptatem eos cumque quaerat dolor ipsum modi eum. Quis sit ut consequatur nemo voluptatem. Hic ipsam recusandae voluptate sequi molestiae doloremque maxime non voluptatem.\",\n \"subject\": \"ut rem sit\",\n \"date\": \"2016-08-07T23:07:54.231Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 6,\n \"key\": 6,\n \"name\": \"Nikko Miller\",\n \"cc\": \"Howell.Spinka11@hotmail.com\",\n \"email\": \"Kailee_Shields@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/deviljho_/128.jpg\",\n \"tags\": \"Family\",\n \"body\": \"Sit eum sequi corrupti iusto sed magnam. Dolorem sint ducimus aut a. Odit libero perferendis sed. Delectus ad in quam quia architecto. Exercitationem porro expedita porro aliquam. Et facilis quo atque voluptatem molestiae. Sunt ab dolorem hic odit. Velit sit quasi velit quia suscipit voluptate autem. Alias aut aspernatur nihil accusamus ea harum amet. Eum animi magni repellat distinctio libero accusantium.\",\n \"subject\": \"enim vel vitae\",\n \"date\": \"2016-08-04T03:31:50.216Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 49,\n \"key\": 49,\n \"name\": \"Jarred Ebert\",\n \"cc\": \"Emmitt.Douglas19@yahoo.com\",\n \"email\": \"Akeem.Bartell14@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/tbakdesigns/128.jpg\",\n \"tags\": \"Students\",\n \"body\": \"Velit expedita cum libero eos. Est possimus possimus ducimus commodi perferendis. Aut autem voluptas maxime suscipit maiores quis alias iste. Pariatur ratione eaque. Et voluptatum culpa asperiores perferendis ullam iusto eum ab. Molestias reprehenderit et numquam officia aliquid. Nostrum voluptatum doloribus eum nisi. Tenetur in non ea officia. Dignissimos exercitationem aperiam sit assumenda optio animi asperiores deleniti et. Iusto repellat ea veritatis ut aliquid et.\",\n \"subject\": \"suscipit ut est\",\n \"date\": \"2016-07-30T22:55:52.144Z\",\n \"bucket\": \"spam\",\n \"read\": true\n}, {\n \"id\": 78,\n \"key\": 78,\n \"name\": \"Elta Daugherty\",\n \"cc\": \"Everardo.Sawayn@gmail.com\",\n \"email\": \"Jamil75@hotmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/martinansty/128.jpg\",\n \"body\": \"Incidunt at nulla rerum non aut voluptas. Libero in rerum. Natus et vitae exercitationem accusamus odio doloremque ullam. Facilis est voluptatem voluptatibus rerum molestiae tempora similique nulla culpa. In incidunt eos vel quisquam aut nihil molestias reprehenderit laborum. Illo et ut aut. Et et voluptas. Enim possimus recusandae aut quisquam eum doloribus. Delectus sed et incidunt eveniet doloremque voluptatem eos nostrum. Voluptates beatae rerum aut molestiae cumque minus et est vero.\",\n \"subject\": \"qui id sed\",\n \"date\": \"2016-07-26T16:14:01.222Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 34,\n \"key\": 34,\n \"name\": \"Lolita Mayert\",\n \"cc\": \"Shanie.Doyle@yahoo.com\",\n \"email\": \"Marquis70@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/stephcoue/128.jpg\",\n \"body\": \"Doloribus sit et iste laboriosam quis. Veritatis magnam et sit consequatur ipsam. Eum doloribus odio eos doloremque. Omnis unde qui et eum voluptas quae labore quos. Autem amet nisi omnis dolore omnis itaque vitae aut. Accusantium nam consequatur delectus. Reprehenderit est maiores consequuntur alias totam molestias dolor maiores neque. Deserunt odit aperiam a tenetur sint voluptas sit aut. Debitis qui dolorum. Vel iusto aut aut accusantium et aperiam vitae inventore.\",\n \"subject\": \"harum minus aut\",\n \"date\": \"2016-07-25T06:08:25.714Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 2,\n \"key\": 2,\n \"name\": \"Tristian Dietrich\",\n \"cc\": \"Kiana_Stehr@yahoo.com\",\n \"email\": \"Eloise.Olson@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/enda/128.jpg\",\n \"tags\": \"ClassMates\",\n \"body\": \"Veritatis architecto quod possimus necessitatibus illo ab. Distinctio et incidunt dolores repellendus vitae maxime. Numquam id et temporibus reiciendis. Et velit non est et debitis adipisci labore. Pariatur quasi eaque provident quibusdam. Maxime ut aperiam ea eum in et. Hic quia dolor. Nobis sunt et corporis. Perspiciatis quod molestiae. Eius dolor quasi.\",\n \"subject\": \"eum id tempore\",\n \"date\": \"2016-07-22T10:17:15.497Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 28,\n \"key\": 28,\n \"name\": \"Cordie Botsford\",\n \"cc\": \"Rosalee_Treutel@hotmail.com\",\n \"email\": \"Sasha_Lebsack@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/buryaknick/128.jpg\",\n \"body\": \"Voluptates excepturi non eaque alias voluptate voluptatem temporibus. Qui beatae veniam ad. Quibusdam possimus amet est. Maxime non non. Enim officiis nobis dolorum. Voluptatem cum delectus quis animi quibusdam. Tempora at maiores. Est itaque est consequuntur sed architecto praesentium voluptatem. Repellendus consequuntur aut occaecati perferendis culpa mollitia voluptas et velit. Illum quia rem dolor mollitia aliquam voluptas.\",\n \"subject\": \"totam quo adipisci\",\n \"date\": \"2016-07-18T15:14:47.897Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 90,\n \"key\": 90,\n \"name\": \"Marlee Schinner\",\n \"cc\": \"Blaze_Schaden77@yahoo.com\",\n \"email\": \"Darren_Kertzmann@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/juamperro/128.jpg\",\n \"tags\": \"Teachers\",\n \"body\": \"Explicabo consectetur magnam animi ut et voluptatum blanditiis. Blanditiis voluptatem qui quae consequatur. Eligendi voluptate perspiciatis excepturi. Occaecati molestias id repellendus. Est autem rem repudiandae doloribus tempora et repellat ipsum corrupti. Cumque quidem alias atque aliquid. Quibusdam dolorem mollitia ut. Laboriosam impedit nihil consequatur eum atque odio quia beatae. Dolore quidem pariatur est saepe occaecati veritatis. Dolor sunt quo fugiat facere deserunt sit molestiae laboriosam quas.\",\n \"subject\": \"magni sed sunt\",\n \"date\": \"2016-07-17T16:51:23.443Z\",\n \"bucket\": \"spam\",\n \"read\": true\n}, {\n \"id\": 11,\n \"key\": 11,\n \"name\": \"Kailyn Johnson\",\n \"cc\": \"Napoleon89@gmail.com\",\n \"email\": \"Lucas_Stiedemann91@yahoo.com\",\n \"tags\": \"Family\",\n \"body\": \"Excepturi quo laboriosam qui eaque. Accusantium eveniet odit sint ducimus. Qui dolore hic. Eveniet laborum occaecati ullam culpa facilis libero dolores saepe. Qui est molestiae ad hic ut. Repellat natus similique. Dolor consequatur in. Qui tenetur et qui odit expedita molestiae quo harum. Ut sed voluptas ea molestiae et. Quas aut reprehenderit sit accusantium veniam rerum tenetur occaecati.\",\n \"subject\": \"illo in beatae\",\n \"date\": \"2016-07-15T14:44:12.972Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 4,\n \"key\": 4,\n \"name\": \"Gunnar Kirlin\",\n \"cc\": \"Nolan75@hotmail.com\",\n \"email\": \"Tod3@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/fabbrucci/128.jpg\",\n \"tags\": \"Students\",\n \"body\": \"Deleniti eum et voluptatibus fuga velit et dolores quia quam. Veritatis nostrum adipisci voluptas voluptates. Nihil repellat cumque iure. Perspiciatis dolore fuga voluptas. Labore reiciendis accusantium et mollitia. Totam itaque odit. Sint voluptate praesentium deserunt. Accusamus ea et at dolores consequuntur sunt ut. Animi ipsa provident laboriosam nemo est saepe inventore. Rem in sunt ut esse et omnis dolor quisquam sint.\",\n \"subject\": \"ad fugiat eos\",\n \"date\": \"2016-07-10T23:51:28.839Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 50,\n \"key\": 50,\n \"name\": \"Aletha Heaney\",\n \"cc\": \"Adelle_Gusikowski67@yahoo.com\",\n \"email\": \"Dariana3@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/traneblow/128.jpg\",\n \"tags\": \"Students\",\n \"body\": \"In voluptatem quibusdam saepe voluptates iure ut odit illum. Vel cum quasi et ad voluptatem recusandae libero et. Atque et perspiciatis eaque voluptatem. Accusamus deserunt ut est possimus voluptate ut. Et dignissimos enim consequatur. Molestiae beatae soluta. Eum voluptatibus culpa recusandae rerum quaerat. Omnis accusantium sint molestiae ut accusantium iure ut. Eos aut architecto distinctio eveniet labore ipsa. Aliquid totam aut assumenda.\",\n \"subject\": \"consequatur quos voluptates\",\n \"date\": \"2016-07-08T06:30:35.201Z\",\n \"bucket\": \"Drafts\",\n \"read\": true\n}, {\n \"id\": 45,\n \"key\": 45,\n \"name\": \"Jess Cummings\",\n \"cc\": \"Guy81@hotmail.com\",\n \"email\": \"Reggie_Goodwin@yahoo.com\",\n \"body\": \"Accusantium ipsum provident distinctio harum illo. Veniam aliquid a numquam soluta illum distinctio voluptates pariatur possimus. Nesciunt consequatur et eius necessitatibus iusto veniam ipsam sit qui. Voluptatem et porro optio et consectetur quia ab. Voluptatem nam sit recusandae tempore molestiae dolorem cum voluptatem. Aut quos doloribus consectetur ad mollitia et molestiae numquam voluptas. Suscipit rerum est rem aut accusamus cumque assumenda et nulla. Qui doloribus sed animi labore et labore unde. Numquam distinctio accusamus illo quia voluptatem quia. Sunt ut iure optio quidem fugit veritatis.\",\n \"subject\": \"distinctio a qui\",\n \"date\": \"2016-07-06T06:10:44.182Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 67,\n \"key\": 67,\n \"name\": \"Marion Gusikowski\",\n \"cc\": \"Frank31@hotmail.com\",\n \"email\": \"Alec_Parisian87@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/sweetdelisa/128.jpg\",\n \"body\": \"Quia possimus eligendi beatae et iusto ea. Est vitae officiis impedit ipsam consequuntur et. Vero quo pariatur dignissimos rem illum corrupti ut ut. Ipsum consequatur sapiente perspiciatis recusandae iusto similique placeat itaque. Porro asperiores eos ut voluptate quasi. Qui nisi aut quos officia nisi odio. Dolor voluptatem et. Fugiat quia ea omnis. Unde est voluptatibus quae. Quis expedita iusto in ipsum officia atque deleniti.\",\n \"subject\": \"quae maxime eos\",\n \"date\": \"2016-07-05T19:24:38.679Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 77,\n \"key\": 77,\n \"name\": \"Darby Johnson\",\n \"cc\": \"Aurelie_Howell@gmail.com\",\n \"email\": \"Marcel59@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/BroumiYoussef/128.jpg\",\n \"body\": \"Animi quod vero. Autem ut quod dignissimos consequatur dignissimos et. Eum cum reprehenderit doloremque. Perferendis porro tenetur ad quae ut assumenda quis maiores. Fuga aut et aspernatur in totam ipsam est. Illo et architecto expedita ea error nulla hic. Et aut beatae. Deserunt provident dolor amet molestiae veniam. Minus perferendis itaque molestias dicta quos iusto porro tempore qui. Iste tenetur alias.\",\n \"subject\": \"aut alias eum\",\n \"date\": \"2016-07-05T17:37:15.933Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 80,\n \"key\": 80,\n \"name\": \"Beatrice Jerde\",\n \"cc\": \"Gerard82@yahoo.com\",\n \"email\": \"Destiny95@yahoo.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/robturlinckx/128.jpg\",\n \"body\": \"Qui maxime exercitationem sint et voluptas. Repellat quo odio occaecati tempore et molestiae et sequi. Iste deleniti aliquam qui quaerat est saepe nemo. Sint quibusdam voluptas cupiditate optio ut recusandae repellendus reprehenderit. Ut optio quo eveniet. Accusantium consequuntur nulla quas et. Omnis eius et iure tempore minus fugiat mollitia qui. Aut deleniti ex est. Ex earum temporibus incidunt corporis saepe dolore. Voluptas aut ut repellat odit qui et dolorem voluptatibus.\",\n \"subject\": \"ut tempore nesciunt\",\n \"date\": \"2016-07-01T16:01:36.016Z\",\n \"bucket\": \"Trash\",\n \"read\": true\n}, {\n \"id\": 9,\n \"key\": 9,\n \"name\": \"Shanelle Buckridge\",\n \"cc\": \"Earline_Bergstrom@gmail.com\",\n \"email\": \"Aaliyah.Schumm50@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/simobenso/128.jpg\",\n \"tags\": \"Teachers\",\n \"body\": \"At eveniet cupiditate qui dicta modi et neque sequi. Et magni nesciunt animi. Consequatur assumenda dolores fugiat omnis beatae ex ea quas. Tempore placeat cum dolor. Doloremque mollitia et autem repellat iusto eum suscipit consectetur officiis. Non ipsa ut odio sed reiciendis iure. Ipsum ducimus distinctio. Sit omnis sint ab fuga dignissimos inventore voluptatem. Et nisi et odit sint sunt ut qui est voluptas. Neque quas soluta sunt et distinctio aliquid omnis illo enim.\",\n \"subject\": \"quia fugiat placeat\",\n \"date\": \"2016-06-23T08:55:46.700Z\",\n \"bucket\": \"Important\",\n \"read\": true\n}, {\n \"id\": 65,\n \"key\": 65,\n \"name\": \"Forest Walsh\",\n \"cc\": \"Cecil_Cummerata@yahoo.com\",\n \"email\": \"Joey_Monahan95@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/Chakintosh/128.jpg\",\n \"tags\": \"Colleague\",\n \"body\": \"Incidunt dolor et unde. Quo et sequi sunt architecto necessitatibus quia aliquam. Sunt voluptatem quaerat doloremque. Exercitationem non quod nam et deserunt. Officiis vero ut aut enim libero consectetur nihil. Quia doloremque praesentium iste itaque qui repudiandae culpa qui omnis. Laboriosam dolores eveniet quas perferendis corrupti nulla consequatur illo. Nisi modi rem consequatur vel reiciendis. Consequuntur amet alias autem quia. Quo quaerat nihil mollitia architecto est nulla.\",\n \"subject\": \"ut sapiente nobis\",\n \"date\": \"2016-06-21T07:45:29.033Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}, {\n \"id\": 38,\n \"key\": 38,\n \"name\": \"Alison Swift\",\n \"cc\": \"Willie.DAmore@hotmail.com\",\n \"email\": \"Hadley_Abshire42@gmail.com\",\n \"img\": \"https://s3.amazonaws.com/uifaces/faces/twitter/donjain/128.jpg\",\n \"body\": \"Rem quae ut placeat adipisci ut quia veritatis culpa. Eos enim ut iure aliquam. Consequuntur voluptatem inventore doloribus et dicta quam consequatur. Porro nihil soluta. Rerum pariatur non quia. Et quas debitis et et labore velit repudiandae debitis. Id omnis et libero architecto eaque repellat. Veritatis enim quis ut nisi praesentium. Aperiam laudantium consectetur qui et harum cupiditate placeat dolorem labore. Magni commodi explicabo quia.\",\n \"subject\": \"adipisci officiis nemo\",\n \"date\": \"2016-06-20T15:48:23.880Z\",\n \"bucket\": \"Inbox\",\n \"read\": true\n}, {\n \"id\": 3,\n \"key\": 3,\n \"name\": \"Tanya Wuckert\",\n \"cc\": \"Adeline.Hermiston5@hotmail.com\",\n \"email\": \"Ubaldo83@yahoo.com\",\n \"tags\": \"Students\",\n \"body\": \"Odit sed totam praesentium nihil optio omnis sunt quia dolorem. In esse consequuntur hic hic pariatur. Voluptas omnis est cumque et consequuntur illum id. Omnis esse odit cupiditate est aut ad consequatur. Soluta et aliquam repudiandae molestiae voluptatem. Nobis perspiciatis dolorum ullam ipsam quia sint dolorem. Accusantium eum fugit praesentium et similique. Necessitatibus veniam sed sit aliquam laudantium. Sed assumenda est dignissimos at sapiente qui vero. Optio dolorem nam soluta autem atque ad quas in.\",\n \"subject\": \"placeat fugiat cum\",\n \"date\": \"2016-06-20T07:24:03.907Z\",\n \"bucket\": \"Sent\",\n \"read\": true\n}]`\n);\n","const mailActions = {\n FILTER_ATTRIBUTE: 'FILTER_ATTRIBUTE',\n SELECTED_MAIL: 'SELECTED_MAIL',\n COMPOSE_MAIL: 'COMPOSE_MAIL',\n REPLY_MAIL: 'REPLY_MAIL',\n SEARCH_STRING: 'SEARCH_STRING',\n filterAction: newFilterAttr => {\n return (dispatch, getState) => {\n const filterAttr = getState().Mails.filterAttr;\n if (newFilterAttr) {\n if (newFilterAttr.bucket) {\n filterAttr.bucket = newFilterAttr.bucket;\n filterAttr.tag = newFilterAttr.tag;\n } else if (newFilterAttr.tag) {\n filterAttr.tag = newFilterAttr.tag;\n }\n }\n dispatch({\n type: mailActions.FILTER_ATTRIBUTE,\n filterAttr,\n });\n };\n },\n selectMail: selectedMail => {\n return (dispatch, getState) => {\n const allMails = getState().Mails.allMails;\n allMails[\n allMails.findIndex(mail => mail.id === selectedMail)\n ].read = true;\n dispatch({\n type: mailActions.SELECTED_MAIL,\n selectedMail,\n allMails,\n });\n };\n },\n changeComposeMail: composeMail => ({\n type: mailActions.COMPOSE_MAIL,\n composeMail,\n }),\n changeReplyMail: replyMail => ({\n type: mailActions.REPLY_MAIL,\n replyMail,\n }),\n changeSearchString: searchString => ({\n type: mailActions.SEARCH_STRING,\n searchString,\n }),\n};\nexport default mailActions;\n","import allMails from './data';\nimport actions from './actions';\n\nconst initState = {\n allMails,\n tag: undefined,\n selectedMail: -1,\n filterAttr: { bucket: 'Inbox' },\n composeMail: false,\n replyMail: false,\n searchString: '',\n};\n\nexport default function mailReducer(state = initState, action) {\n switch (action.type) {\n case actions.FILTER_ATTRIBUTE:\n return {\n ...state,\n composeMail: false,\n replyMail: false,\n selectedMail: -1,\n filterAttr: { ...action.filterAttr },\n };\n case actions.SELECTED_MAIL:\n return {\n ...state,\n replyMail: false,\n selectedMail: action.selectedMail,\n allMails: action.allMails,\n };\n case actions.COMPOSE_MAIL:\n return {\n ...state,\n replyMail: false,\n composeMail: action.composeMail,\n };\n case actions.REPLY_MAIL:\n return {\n ...state,\n replyMail: action.replyMail,\n };\n case actions.SEARCH_STRING:\n return {\n ...state,\n searchString: action.searchString,\n };\n default:\n return state;\n }\n}\n","const modalActions = {\n SHOW_MODAL: 'SHOW_MODAL',\n HIDE_MODAL: 'HIDE_MODAL',\n\n openModal: payload => ({\n type: modalActions.SHOW_MODAL,\n payload,\n }),\n closeModal: () => ({\n type: modalActions.HIDE_MODAL,\n }),\n};\n\nexport default modalActions;\n","import modalActions from './actions';\n\nconst initialState = {\n modalVisibility: false,\n modalType: '',\n modalProps: {},\n};\n\nexport default function modalReducer(state = initialState, action) {\n switch (action.type) {\n case modalActions.SHOW_MODAL:\n return {\n modalVisibility: true,\n modalType: action.payload.modalType,\n modalProps: action.payload.modalProps,\n };\n case modalActions.HIDE_MODAL:\n return initialState;\n default:\n return state;\n }\n}\n","export default JSON.parse(\n `[{\n \"id\": 94926,\n \"note\": \"Et quia eum nobis ut hic autem enim. Qui ea a qui accusantium ducimus ut placeat modi. Esse quibusdam earum cupiditate optio et nulla voluptatem. Qui est deserunt doloremque qui eaque in. Rerum voluptatum dolor corrupti. Voluptatem occaecati laudantium ea enim similique.\",\n \"createTime\": \"2017-02-10T07:42:44.828Z\",\n \"color\": 0\n}, {\n \"id\": 51842,\n \"note\": \"Possimus exercitationem qui ea quo repudiandae. Corporis magnam non soluta doloremque et sunt dolores sunt. Corrupti reiciendis sunt optio dolorem. Dignissimos quo adipisci veritatis et repellat. Omnis omnis dignissimos ipsum non iusto voluptates.\",\n \"createTime\": \"2017-04-08T03:17:31.999Z\",\n \"color\": 0\n}, {\n \"id\": 28180,\n \"note\": \"Tempore est velit non eaque. Exercitationem fugiat rerum magni. Delectus reprehenderit est neque autem amet. Qui consequatur velit et reprehenderit soluta voluptates. Id reprehenderit dolorum omnis ipsa quae dolores.\",\n \"createTime\": \"2017-01-21T05:43:16.889Z\",\n \"color\": 3\n}, {\n \"id\": 29619,\n \"note\": \"Officiis suscipit perferendis blanditiis aut aliquid quod et. Eius repellendus natus dicta saepe. In adipisci alias facilis nihil eligendi consequatur odit sequi. Quae quibusdam eos ut qui aut nisi beatae quaerat qui.\",\n \"createTime\": \"2017-01-08T23:36:05.692Z\",\n \"color\": 4\n}, {\n \"id\": 19600,\n \"note\": \"Dolor quas est quae. Id temporibus sed. Illum quo amet est fuga laborum facilis. Aut nisi consequatur voluptatum et. Eum et necessitatibus quam corporis expedita quasi reiciendis quia vitae. Earum harum deserunt minus modi consequuntur perspiciatis labore officia quo.\",\n \"createTime\": \"2017-05-11T22:30:14.915Z\",\n \"color\": 4\n}]`\n);\n","const notesAction = {\n CHANGE_NOTE: 'CHANGE_NOTE',\n ADD_NOTE: 'ADD_NOTE',\n EDIT_NOTE: 'EDIT_NOTE',\n DELETE_NOTE: 'DELETE_NOTE',\n CHANGE_COLOR: 'CHANGE_COLOR',\n\n changeNote: id => {\n return (dispatch, getState) => {\n const notes = getState().Notes.notes;\n const seectedColor = notes[notes.findIndex(note => note.id === id)].color;\n dispatch({\n type: notesAction.CHANGE_NOTE,\n selectedId: id,\n seectedColor,\n });\n };\n },\n addNote: () => {\n return (dispatch, getState) => {\n const newNote = {\n id: new Date(),\n note: 'New Note',\n createTime: new Date(),\n color: getState().Notes.seectedColor,\n };\n const notes = [newNote, ...getState().Notes.notes];\n dispatch({\n type: notesAction.ADD_NOTE,\n selectedId: newNote.id,\n notes,\n });\n };\n },\n editNote: (id, newNote) => {\n return (dispatch, getState) => {\n const oldNotes = getState().Notes.notes;\n const notes = [];\n oldNotes.forEach(note => {\n if (note.id !== id) {\n notes.push(note);\n } else {\n note.note = newNote;\n notes.push(note);\n }\n });\n dispatch({\n type: notesAction.EDIT_NOTE,\n notes,\n });\n };\n },\n deleteNote: id => {\n return (dispatch, getState) => {\n const oldNotes = getState().Notes.notes;\n const notes = [];\n oldNotes.forEach(note => {\n if (note.id !== id) {\n notes.push(note);\n }\n });\n let selectedId = getState().Notes.selectedId;\n if (selectedId === id) {\n if (notes.length === 0) {\n selectedId = undefined;\n } else {\n selectedId = notes[0].id;\n }\n }\n dispatch({\n type: notesAction.DELETE_NOTE,\n notes,\n selectedId,\n });\n };\n },\n changeColor: seectedColor => {\n return (dispatch, getState) => {\n const oldNotes = getState().Notes.notes;\n const selectedId = getState().Notes.selectedId;\n const notes = [];\n oldNotes.forEach(note => {\n if (note.id !== selectedId) {\n notes.push(note);\n } else {\n note.color = seectedColor;\n notes.push(note);\n }\n });\n dispatch({\n type: notesAction.CHANGE_COLOR,\n notes,\n seectedColor,\n });\n };\n },\n};\nexport default notesAction;\n","import notes from './data';\nimport actions from './actions';\n\nconst colors = ['#7ED321', '#de1b1b', '#511E78', '#ff9009', '#42a5f5'];\nconst initState = {\n notes,\n colors,\n selectedId: notes[0].id,\n seectedColor: notes[0].color,\n};\n\nexport default function noteReducer(state = initState, action) {\n switch (action.type) {\n case actions.CHANGE_NOTE:\n return {\n ...state,\n selectedId: action.selectedId,\n seectedColor: action.seectedColor,\n };\n case actions.ADD_NOTE:\n return {\n ...state,\n notes: action.notes,\n selectedId: action.selectedId,\n };\n case actions.EDIT_NOTE:\n return {\n ...state,\n notes: action.notes,\n };\n case actions.DELETE_NOTE:\n return {\n ...state,\n notes: action.notes,\n selectedId: action.selectedId,\n };\n case actions.CHANGE_COLOR:\n return {\n ...state,\n notes: action.notes,\n seectedColor: action.seectedColor,\n };\n default:\n return state;\n }\n}\n","const profileActions = {\n FETCH_PROFILE_DATA_START: 'FETCH_PROFILE_DATA_START',\n FETCH_PROFILE_DATA_SUCCESS: 'FETCH_PROFILE_DATA_SUCCESS',\n FETCH_PROFILE_DATA_FAILURE: 'FETCH_PROFILE_DATA_FAILURE',\n SET_PROFILE_DATA: 'SET_PROFILE_DATA',\n fetchProfileDataStart: () => ({\n type: profileActions.FETCH_PROFILE_DATA_START,\n }),\n fetchProfileDataSuccess: profile => ({\n type: profileActions.FETCH_PROFILE_DATA_SUCCESS,\n payload: profile,\n }),\n fetchProfileDataFailure: error => ({\n type: profileActions.FETCH_PROFILE_DATA_FAILURE,\n payload: error,\n }),\n};\n\nexport default profileActions;\n","import profileActions from './actions';\n\nconst INITIAL_DATA = {\n data: null,\n loading: true,\n error: null,\n};\nexport default function profileReducer(state = INITIAL_DATA, action) {\n switch (action.type) {\n case profileActions.FETCH_PROFILE_DATA_SUCCESS:\n return {\n ...state,\n data: action.payload,\n loading: false,\n error: null,\n };\n case profileActions.FETCH_PROFILE_DATA_FAILURE:\n return {\n ...state,\n loading: false,\n error: action.payload,\n };\n default:\n return state;\n }\n}\n","const scrumBoardActions = {\n //BOARD\n CREATE_OR_UPDATE_BOARD_WATCHER: 'CREATE_OR_UPDATE_BOARD_WATCHER',\n CREATE_OR_UPDATE_BOARD: 'CREATE_OR_UPDATE_BOARD',\n EDIT_BOARD: 'EDIT_BOARD',\n DELETE_BOARD_WATCHER: 'DELETE_BOARD_WATCHER',\n DELETE_BOARD: 'DELETE_BOARD',\n SELECT_BOARD: 'SELECT_BOARD',\n\n //COLUMN\n CREATE_OR_UPDATE_COLUMN_WATCHER: 'CREATE_OR_UPDATE_COLUMN_WATCHER',\n CREATE_OR_UPDATE_COLUMN: 'CREATE_OR_UPDATE_COLUMN',\n EDIT_COLUMN: 'EDIT_COLUMN',\n CANCEL_EDIT_COLUMN: 'CANCEL_EDIT_COLUMN',\n DELETE_COLUMN_WATCHER: 'DELETE_COLUMN_WATCHER',\n DELETE_COLUMN: 'DELETE_COLUMN',\n RESET_COLUMN: 'RESET_COLUMN',\n MOVE_COLUMN_WATCHER: 'MOVE_COLUMN_WATCHER',\n SET_MOVED_COLUMN: 'SET_MOVED_COLUMN',\n DUBLICATE_COLUMN: 'DUBLICATE_COLUMN',\n\n //TASK\n CREATE_OR_UPDATE_TASK_WATCHER: 'CREATE_OR_UPDATE_TASK_WATCHER',\n CREATE_OR_UPDATE_TASK: 'CREATE_OR_UPDATE_TASK',\n EDIT_TASK: 'EDIT_TASK',\n CANCEL_EDIT_TASK: 'CANCEL_EDIT_TASK',\n DELETE_TASK_WATCHER: 'DELETE_TASK_WATCHER',\n DELETE_TASK: 'DELETE_TASK',\n RESET_TASK: 'RESET_TASK',\n MOVE_TASK_WATCHER: 'MOVE_TASK_WATCHER',\n SET_MOVED_TASK: 'SET_MOVED_TASK',\n DUBLICATE_TASK: 'DUBLICATE_TASK',\n\n // SEARCH\n SET_SEARCH_TEXT: 'SET_SEARCH_TEXT',\n\n // LOAD DATA\n LOAD_BOARDS_DATA_SAGA: 'LOAD_BOARDS_DATA_SAGA',\n LOAD_CURRENT_BOARD_DATA_SAGA: 'LOAD_CURRENT_BOARD_DATA_SAGA',\n SET_BOARDS_DATA: 'SET_BOARDS_DATA',\n SET_CURRENT_BOARD_DATA: 'SET_CURRENT_BOARD_DATA',\n\n // LABELS\n CREATE_OR_UPDATE_LABEL: 'CREATE_OR_UPDATE_LABEL',\n EDIT_LABEL: 'EDIT_LABEL',\n DELETE_LABEL: 'DELETE_LABEL',\n\n // Load Data Actions\n\n boardsRenderWatcher: () => ({\n type: scrumBoardActions.LOAD_BOARDS_DATA_SAGA,\n }),\n\n setBoardsData: boards => ({\n type: scrumBoardActions.SET_BOARDS_DATA,\n payload: boards,\n }),\n\n boardRenderWatcher: boardId => ({\n type: scrumBoardActions.LOAD_CURRENT_BOARD_DATA_SAGA,\n payload: boardId,\n }),\n\n setBoardData: boardData => ({\n type: scrumBoardActions.SET_CURRENT_BOARD_DATA,\n payload: boardData,\n }),\n\n // Task Actions\n createOrUpdateTaskWatcher: payload => {\n return {\n type: scrumBoardActions.CREATE_OR_UPDATE_TASK_WATCHER,\n payload,\n };\n },\n createOrUpdateTask: payload => {\n return {\n type: scrumBoardActions.CREATE_OR_UPDATE_TASK,\n payload,\n };\n },\n\n editTask: payload => {\n return {\n type: scrumBoardActions.EDIT_TASK,\n payload,\n };\n },\n\n cancelEditTask: payload => {\n return {\n type: scrumBoardActions.CANCEL_EDIT_TASK,\n payload,\n };\n },\n\n deleteTaskWatcher: payload => {\n return {\n type: scrumBoardActions.DELETE_TASK_WATCHER,\n payload,\n };\n },\n deleteTask: payload => {\n return {\n type: scrumBoardActions.DELETE_TASK,\n payload,\n };\n },\n\n resetTask: payload => {\n return {\n type: scrumBoardActions.RESET_TASK,\n payload,\n };\n },\n\n setSearchText: payload => {\n return {\n type: scrumBoardActions.SET_SEARCH_TEXT,\n payload,\n };\n },\n\n moveTaskWatcher: payload => {\n return {\n type: scrumBoardActions.MOVE_TASK_WATCHER,\n payload,\n };\n },\n setMovedTask: payload => {\n return {\n type: scrumBoardActions.SET_MOVED_TASK,\n payload,\n };\n },\n\n // Column Actions\n createOrUpdateColumnWatcher: payload => {\n return {\n type: scrumBoardActions.CREATE_OR_UPDATE_COLUMN_WATCHER,\n payload,\n };\n },\n createOrUpdateColumn: payload => {\n return {\n type: scrumBoardActions.CREATE_OR_UPDATE_COLUMN,\n payload,\n };\n },\n\n editColumn: payload => {\n return {\n type: scrumBoardActions.EDIT_COLUMN,\n payload,\n };\n },\n\n cancelEditColumn: payload => {\n return {\n type: scrumBoardActions.CANCEL_EDIT_COLUMN,\n payload,\n };\n },\n\n deleteColumnWatcher: payload => {\n return {\n type: scrumBoardActions.DELETE_COLUMN_WATCHER,\n payload,\n };\n },\n deleteColumn: payload => {\n return {\n type: scrumBoardActions.DELETE_COLUMN,\n payload,\n };\n },\n\n resetColumn: payload => {\n return {\n type: scrumBoardActions.RESET_COLUMN,\n payload,\n };\n },\n moveColumnWatcher: payload => {\n return {\n type: scrumBoardActions.MOVE_COLUMN_WATCHER,\n payload,\n };\n },\n setMovedColumn: payload => {\n return {\n type: scrumBoardActions.SET_MOVED_COLUMN,\n payload,\n };\n },\n\n // Board Actions\n createOrUpdateBoardWatcher: board => {\n return {\n type: scrumBoardActions.CREATE_OR_UPDATE_BOARD_WATCHER,\n payload: board,\n };\n },\n createOrUpdateBoard: board => {\n return {\n type: scrumBoardActions.CREATE_OR_UPDATE_BOARD,\n payload: board,\n };\n },\n editBoard: board => {\n return {\n type: scrumBoardActions.EDIT_BOARD,\n payload: board,\n };\n },\n deleteBoardWatcher: boardID => {\n return {\n type: scrumBoardActions.DELETE_BOARD_WATCHER,\n payload: boardID,\n };\n },\n deleteBoard: boardID => {\n return {\n type: scrumBoardActions.DELETE_BOARD,\n payload: boardID,\n };\n },\n\n // Label Actions\n createOrUpdateLabel: label => {\n return {\n type: scrumBoardActions.CREATE_OR_UPDATE_LABEL,\n payload: label,\n };\n },\n editLabel: label => {\n return {\n type: scrumBoardActions.EDIT_LABEL,\n payload: label,\n };\n },\n deleteLabel: labelID => {\n return {\n type: scrumBoardActions.DELETE_LABEL,\n payload: labelID,\n };\n },\n};\n\nexport default scrumBoardActions;\n","import scrumBoardActions from './actions';\n\nconst initialState = {\n boards: {},\n columns: {},\n tasks: {},\n searchText: '',\n labels: {},\n};\nexport default function scrumBoardReducer(state = initialState, action) {\n switch (action.type) {\n case scrumBoardActions.SET_BOARDS_DATA:\n return { ...state, ...action.payload };\n\n case scrumBoardActions.SET_CURRENT_BOARD_DATA:\n return { ...state, ...action.payload };\n\n case scrumBoardActions.CREATE_OR_UPDATE_TASK:\n return {\n ...state,\n tasks: action.payload.tasks,\n columns: action.payload.columns,\n };\n\n case scrumBoardActions.EDIT_TASK:\n return {\n ...state,\n tasks: {\n ...state.tasks,\n [action.payload.id]: {\n ...action.payload,\n editing: true,\n },\n },\n };\n\n case scrumBoardActions.CANCEL_EDIT_TASK:\n return {\n ...state,\n tasks: {\n ...state.tasks,\n [action.payload.id]: {\n ...action.payload,\n editing: false,\n },\n },\n };\n\n case scrumBoardActions.DELETE_TASK:\n return {\n ...state,\n tasks: action.payload.tasks,\n columns: action.payload.columns,\n };\n\n case scrumBoardActions.SET_SEARCH_TEXT:\n return {\n ...state,\n searchText: action.payload,\n };\n\n case scrumBoardActions.SET_MOVED_TASK:\n return {\n ...state,\n columns: action.payload.columns,\n tasks: action.payload.tasks,\n };\n\n case scrumBoardActions.RESET_TASK: {\n return {\n ...state,\n task: initialState.task,\n };\n }\n\n /// COLUMNS\n case scrumBoardActions.CREATE_OR_UPDATE_COLUMN:\n return {\n ...state,\n columns: action.payload.columns,\n boards: action.payload.boards,\n };\n case scrumBoardActions.EDIT_COLUMN:\n return {\n ...state,\n columns: {\n ...state.columns,\n [action.payload.id]: {\n ...action.payload,\n editing: true,\n },\n },\n };\n\n case scrumBoardActions.CANCEL_EDIT_COLUMN:\n return {\n ...state,\n columns: {\n ...state.columns,\n [action.payload.id]: {\n ...action.payload,\n editing: false,\n },\n },\n };\n case scrumBoardActions.DELETE_COLUMN:\n return {\n ...state,\n columns: action.payload.columns,\n boards: action.payload.boards,\n };\n\n case scrumBoardActions.SET_MOVED_COLUMN:\n return {\n ...state,\n boards: action.payload,\n };\n\n case scrumBoardActions.CREATE_OR_UPDATE_BOARD:\n return {\n ...state,\n boards: action.payload,\n };\n case scrumBoardActions.EDIT_BOARD:\n return {\n ...state,\n boards: {\n ...state.boards,\n [action.payload.id]: {\n ...action.payload,\n editing: true,\n },\n },\n };\n case scrumBoardActions.DELETE_BOARD:\n return {\n ...state,\n boards: action.payload,\n };\n\n case scrumBoardActions.CREATE_OR_UPDATE_LABEL:\n return {\n ...state,\n labels: {\n ...state.labels,\n [action.payload.id]: action.payload,\n },\n };\n case scrumBoardActions.EDIT_LABEL:\n return {\n ...state,\n labels: {\n ...state.labels,\n [action.payload.id]: {\n ...action.payload,\n editing: true,\n },\n },\n };\n case scrumBoardActions.DELETE_LABEL:\n const LABELS = {\n ...state.labels,\n };\n delete LABELS[action.payload];\n return {\n ...state,\n labels: LABELS,\n };\n default:\n return state;\n }\n}\n","import actions from './actions';\n\nconst initState = {\n data: [],\n type: null,\n};\n\nexport default function siteDashboardReducer(state = initState, action) {\n switch (action.type) {\n case actions.EXPORT_DATA:\n return {\n data: action.data.data,\n type: action.data.type,\n };\n\n case actions.CLEAR_EXPORT_DATA:\n return initState;\n\n default:\n return state;\n }\n}\n","import config, { getCurrentTheme } from './config';\nimport actions from './actions';\n\nconst initState = {\n isActivated: false,\n changeThemes: getCurrentTheme(\n 'changeThemes',\n config.changeThemes.defaultTheme || 'themedefault'\n ),\n topbarTheme: getCurrentTheme(\n 'topbarTheme',\n config.topbarTheme.defaultTheme || 'themedefault'\n ),\n sidebarTheme: getCurrentTheme(\n 'sidebarTheme',\n config.sidebarTheme.defaultTheme || 'themedefault'\n ),\n layoutTheme: getCurrentTheme(\n 'layoutTheme',\n config.layoutTheme.defaultTheme || 'themedefault'\n ),\n};\n\nexport default function(state = initState, action) {\n switch (action.type) {\n case actions.SWITCH_ACTIVATION:\n return {\n ...state,\n isActivated: !state.isActivated,\n };\n case actions.CHANGE_THEME:\n return {\n ...state,\n [action.attribute]: action.theme,\n };\n default:\n return state;\n }\n}\n","const todoData = JSON.parse(`[{\n \"id\": 6903,\n \"todo\": \"Ut corrupti eum. Magnam culpa et itaque voluptas maiores et sed molestiae ad. Ut earum est tempore enim odio hic architecto et iure. Qui dolore velit illo velit atque reprehenderit sed cupiditate.\",\n \"createTime\": \"2016-12-26T15:52:07.773Z\",\n \"color\": 1,\n \"completed\": true\n}, {\n \"id\": 47977,\n \"todo\": \"Eos quas doloremque iste aut. Harum doloribus atque. Natus quis odio eaque ea. Ut recusandae occaecati. Consequuntur deleniti qui perspiciatis veniam ut.\",\n \"createTime\": \"2016-08-15T06:09:48.506Z\",\n \"color\": 3,\n \"completed\": false\n}, {\n \"id\": 81193,\n \"todo\": \"Est quod in vel. Consequatur consequatur ipsa. Odio ea repellat aut quibusdam autem quibusdam. Ad ea quo in.\",\n \"createTime\": \"2016-09-10T03:59:20.370Z\",\n \"color\": 2,\n \"completed\": true\n}, {\n \"id\": 23485,\n \"todo\": \"Omnis non iste. Delectus omnis quaerat dicta in aut. Id velit est aliquid ut voluptas eligendi numquam.\",\n \"createTime\": \"2016-07-04T04:40:50.001Z\",\n \"color\": 3,\n \"completed\": false\n}, {\n \"id\": 61833,\n \"todo\": \"Exercitationem qui quia. Laborum suscipit qui voluptatum suscipit est accusamus. Placeat illo dolorem placeat totam.\",\n \"createTime\": \"2017-06-18T00:51:31.881Z\",\n \"color\": 4,\n \"completed\": true\n}]`);\n\nclass fakeData {\n constructor(size = 10, colorLength = 4) {\n this.size = size;\n this.datas = [];\n this.colorLength = colorLength;\n }\n dataModel(index) {\n // return {\n // id: faker.random.number() ,\n // todo: faker.lorem.paragraph(),\n // createTime: faker.date.past(),\n // color: faker.random.number(this.colorLength - 1),\n // completed: faker.random.boolean(),\n // }\n return todoData[index];\n }\n getObjectAt(index) {\n if (index < 0 || index > this.size) {\n return undefined;\n }\n if (this.datas[index] === undefined) {\n this.datas[index] = this.dataModel(index);\n }\n return this.datas[index];\n }\n getAll() {\n if (this.datas.length < this.size) {\n for (let i = 0; i < this.size; i++) {\n this.getObjectAt(i);\n }\n }\n return this.datas.slice();\n }\n\n getSize() {\n return this.size;\n }\n}\nexport default fakeData;\n","const todoActions = {\n CHANGE_TODO: 'CHANGE_TODO',\n ALL_COMPLETED: 'ALL_COMPLETED',\n DELETE_COMPLETED: 'DELETE_COMPLETED',\n\n addTodo: todo => {\n return (dispatch, getState) => {\n const newTodo = {\n id: new Date(),\n todo: todo,\n createTime: new Date(),\n color: 0,\n completed: false,\n };\n const todos = [newTodo, ...getState().Todos.todos];\n dispatch({\n type: todoActions.CHANGE_TODO,\n todos,\n });\n };\n },\n edittodo: editTodo => {\n return (dispatch, getState) => {\n const oldTodos = getState().Todos.todos;\n const todos = [];\n oldTodos.forEach(todo => {\n if (todo.id !== editTodo.id) {\n todos.push(todo);\n } else {\n todos.push(editTodo);\n }\n });\n dispatch({\n type: todoActions.CHANGE_TODO,\n todos,\n });\n };\n },\n deleteTodo: id => {\n return (dispatch, getState) => {\n const oldTodos = getState().Todos.todos;\n const todos = [];\n oldTodos.forEach(todo => {\n if (todo.id !== id) {\n todos.push(todo);\n }\n });\n dispatch({\n type: todoActions.CHANGE_TODO,\n todos,\n });\n };\n },\n allCompleted: () => {\n return (dispatch, getState) => {\n const oldTodos = getState().Todos.todos;\n const todos = [];\n oldTodos.forEach(todo => {\n todo.completed = true;\n todos.push(todo);\n });\n dispatch({\n type: todoActions.CHANGE_TODO,\n todos,\n });\n };\n },\n deleteCompleted: () => {\n return (dispatch, getState) => {\n const oldTodos = getState().Todos.todos;\n const todos = [];\n oldTodos.forEach(todo => {\n if (!todo.completed) {\n todos.push(todo);\n }\n });\n dispatch({\n type: todoActions.CHANGE_TODO,\n todos,\n });\n };\n },\n};\nexport default todoActions;\n","import fakeData from './data';\nimport todoActions from './actions';\n\nconst colors = ['#7ED321', '#de1b1b', '#511E78', '#ff9009', '#42a5f5'];\nconst todos = new fakeData(5, colors.length).getAll();\n\nconst initState = {\n todos,\n colors,\n};\n\nexport default function todoReducer(state = initState, action) {\n const todos = state.todos;\n const newtodos = [];\n switch (action.type) {\n case todoActions.CHANGE_TODO:\n return {\n ...state,\n todos: action.todos,\n };\n case todoActions.ALL_COMPLETED:\n todos.forEach(todo => {\n todo.completed = true;\n newtodos.push(todo);\n });\n return {\n ...state,\n todos: newtodos,\n };\n case todoActions.DELETE_COMPLETED:\n todos.forEach(todo => {\n if (todo.completed !== true) {\n newtodos.push(todo);\n }\n });\n return {\n ...state,\n todos: newtodos,\n };\n default:\n return state;\n }\n}\n","import axios from 'axios';\n\nconst actions = {\n WHITE_LABELING: \"WHITE_LABELING\",\n getWhiteLabeling: (domain) => {\n return (dispatch) => {\n return axios.get(`./white-lablelling?Domain=${domain}`).then((resp) => {\n dispatch({ type: actions.WHITE_LABELING, data: resp.data });\n });\n };\n },\n};\n\nexport default actions;\n","import actions from './actions';\n\nconst initState = {\n faviconUrl: \"\",\n loginLogoUrl: \"\",\n siteLogoUrl: \"\",\n websiteTitle: \"\",\n};\n\nexport default function whiteLabelingReducer(state = initState, action) {\n switch (action.type) {\n case actions.WHITE_LABELING:\n return {\n ...state,\n ...action.data,\n };\n\n default:\n return state;\n }\n}\n","const actions = {\n YOUTUBE_SEARCH: 'YOUTUBE_SEARCH',\n YOUTUBE_SUCCESS_RESULT: 'YOUTUBE_SUCCESS_RESULT',\n YOUTUBE_ERROR_RESULT: 'YOUTUBE_ERROR_RESULT',\n youtubeSearch: searcText => ({\n type: actions.YOUTUBE_SEARCH,\n payload: { searcText },\n }),\n onPageChange: (searcText, pageToken) => ({\n type: actions.YOUTUBE_SEARCH,\n payload: { searcText, pageToken },\n }),\n youtubeSearchSuccess: (\n result,\n total_count,\n nextPageToken,\n prevPageToken\n ) => ({\n type: actions.YOUTUBE_SUCCESS_RESULT,\n result,\n total_count,\n nextPageToken,\n prevPageToken,\n }),\n youtubeSearchError: () => ({\n type: actions.YOUTUBE_ERROR_RESULT,\n }),\n};\nexport default actions;\n","import actions from './actions';\n\nconst initState = {\n searcText: 'React JS Conf',\n total_count: 0,\n result: [],\n loading: false,\n error: false,\n};\n\nexport default function reducer(state = initState, action) {\n switch (action.type) {\n case actions.YOUTUBE_SEARCH:\n return {\n ...state,\n loading: true,\n searcText: action.payload.searcText,\n };\n case actions.YOUTUBE_SUCCESS_RESULT:\n return {\n ...state,\n loading: false,\n error: false,\n result: action.result,\n total_count: action.total_count,\n prevPageToken: action.prevPageToken,\n nextPageToken: action.nextPageToken,\n };\n case actions.YOUTUBE_ERROR_RESULT:\n return {\n ...state,\n loading: false,\n error: false,\n result: [],\n };\n default:\n return state;\n }\n}\n","import actions from './actions';\n\nconst initState = { keySearch: '' };\n\nexport default function alertEventReducer(state = initState, action) {\n switch (action.type) {\n case actions.ALERT_EVENT_SEARCH:\n return {\n ...state,\n keySearch: action.data,\n };\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\n\nimport App from './app/reducer';\nimport Articles from './articles/reducers';\nimport Auth from './auth/reducer';\nimport Box from './box/reducer';\nimport Calendar from './calendar/reducer';\nimport Cards from './card/reducer';\nimport Chat from './chat/reducers';\nimport Contacts from './contacts/reducer';\nimport Dashboard from './dashboard/reducer';\nimport drawer from './drawer/reducer';\nimport DynamicChartComponent from './dynamicEchart/reducer';\nimport Ecommerce from './ecommerce/reducer';\nimport githubSearch from './githubSearch/reducers';\nimport Investors from './investors/reducers';\nimport Invoices from './invoice/reducer';\nimport LanguageSwitcher from './languageSwitcher/reducer';\nimport Loading from './loading/reducer';\nimport Mails from './mail/reducer';\nimport modal from './modal/reducer';\nimport Notes from './notes/reducer';\nimport profile from './profile/reducer';\nimport scrumBoard from './scrumBoard/reducer';\nimport SiteDashboard from './siteDashboard/reducer';\nimport ThemeSwitcher from './themeSwitcher/reducer';\nimport Todos from './todos/reducer';\nimport WhiteLabeling from './white-labling/reducer';\nimport YoutubeSearch from './youtubeSearch/reducers';\n\nimport AlertEvent from './alert-events/reducer';\nexport default combineReducers({\n Auth,\n App,\n SiteDashboard,\n WhiteLabeling,\n // Companies,\n ThemeSwitcher,\n LanguageSwitcher,\n Mails,\n Calendar,\n Box,\n Notes,\n Todos,\n Contacts,\n Cards,\n Chat,\n DynamicChartComponent,\n Ecommerce,\n Invoices,\n YoutubeSearch,\n Articles,\n Investors,\n scrumBoard,\n modal,\n drawer,\n profile,\n githubSearch,\n Dashboard,\n Loading,\n AlertEvent\n});\n","import { createBrowserHistory } from 'history';\nimport { all, fork, put, takeEvery } from 'redux-saga/effects';\nimport { PUBLIC_ROUTE } from 'src/route.constants';\n\nimport { clearToken, getUserToken } from '../../shared/library/helpers/utility';\nimport actions from './actions';\n\nconst history = createBrowserHistory();\nconst fakeApiCall = true; // auth0 or express JWT\n\nexport function* loginRequest() {\n // yield takeEvery('LOGIN_REQUEST', function*({ payload }) {\n // const { token } = payload;\n // if (token) {\n // yield put({\n // type: actions.LOGIN_SUCCESS,\n // token: token,\n // profile: 'Profile',\n // });\n // } else {\n // if (fakeApiCall) {\n // yield put({\n // type: actions.LOGIN_SUCCESS,\n // token: 'secret token',\n // profile: 'Profile',\n // });\n // } else {\n // yield put({ type: actions.LOGIN_ERROR });\n // }\n // }\n // });\n}\n\nexport function* loginSuccess() {\n // yield takeEvery(actions.LOGIN_SUCCESS, function*(payload) {\n // yield localStorage.setItem('id_token', payload.token);\n // });\n}\n\nexport function* loginError() {\n yield takeEvery(actions.LOGIN_ERROR, function*() {});\n}\n\nexport function* logout() {\n yield takeEvery(actions.LOGOUT, function*() {\n yield clearToken();\n history.push(PUBLIC_ROUTE.SIGN_IN);\n });\n}\nexport function* checkAuthorization() {\n yield takeEvery(actions.CHECK_AUTHORIZATION, function*() {\n const token = getUserToken().get('idToken');\n if (token) {\n yield put({\n type: actions.LOGIN_SUCCESS,\n token,\n profile: 'Profile',\n });\n }\n });\n}\nexport default function* rootSaga() {\n yield all([\n fork(checkAuthorization),\n fork(loginRequest),\n fork(loginSuccess),\n fork(loginError),\n fork(logout),\n ]);\n}\n","import { all, takeEvery, fork } from 'redux-saga/effects';\nimport actions from './actions';\n\nexport function* addContact() {\n yield takeEvery(actions.ADD_CONTACT, function*() {});\n}\nexport function* editContact() {\n yield takeEvery(actions.EDIT_CONTACT, function*() {});\n}\nexport function* deleteContact() {\n yield takeEvery(actions.DELETE__CONTACT, function*() {});\n}\nexport default function* rootSaga() {\n yield all([fork(addContact), fork(editContact), fork(deleteContact)]);\n}\n","import { all, takeEvery, put } from 'redux-saga/effects';\nimport { localDataName, createDemoData } from './config';\nimport actions from './actions';\n\nexport function* getInvoice() {\n yield put({\n type: actions.UPDATE_INVOICE,\n invoices: createDemoData(),\n });\n}\nexport function* updateInvoiceSaga({ invoices, invoice }) {\n yield localStorage.setItem(localDataName, JSON.stringify(invoices));\n yield put({\n type: actions.UPDATE_INVOICE,\n invoices,\n invoice,\n });\n}\nexport default function* rootSaga() {\n yield all([\n yield takeEvery(actions.GET_INVOICE, getInvoice),\n yield takeEvery(actions.UPDATE_INVOICE_SAGA, updateInvoiceSaga),\n ]);\n}\n","import { all, takeEvery, fork } from 'redux-saga/effects';\nimport actions from './actions';\n\nexport function* filterAction() {\n yield takeEvery(actions.FILTER_ATTRIBUTE, function*() {});\n}\nexport default function* rootSaga() {\n yield all([fork(filterAction)]);\n}\n","import { all, takeEvery, fork } from 'redux-saga/effects';\nimport actions from './actions';\n\nexport function* changeColor() {\n yield takeEvery(actions.CHANGE_COLOR, function*() {});\n}\nexport function* addNote() {\n yield takeEvery(actions.ADD_NOTE, function*() {});\n}\nexport function* editNote() {\n yield takeEvery(actions.EDIT_NOTE, function*() {});\n}\nexport function* deleteNote() {\n yield takeEvery(actions.DELETE_NOTE, function*() {});\n}\nexport default function* rootSaga() {\n yield all([\n fork(changeColor),\n fork(addNote),\n fork(editNote),\n fork(deleteNote),\n ]);\n}\n","import { all, takeEvery, fork } from 'redux-saga/effects';\nimport actions from './actions';\n\nexport function* changedTodo() {\n yield takeEvery(actions.CHANGE_TODO, function*() {});\n}\nexport default function* rootSaga() {\n yield all([fork(changedTodo)]);\n}\n","export default {\n productQuantity: [\n { objectID: '5357011', quantity: 1 },\n { objectID: '5354101', quantity: 1 },\n { objectID: '4494401', quantity: 1 },\n { objectID: '4494000', quantity: 1 },\n ],\n products: {\n '4494000': {\n name: 'Amazon - Case for Amazon Fire HD 8 Tablets - Black',\n description:\n \"Take your Amazon Fire HD 8 tablet on the go with this Amazon B00XM5W2WE case, which features a folio cover that guards your device's display and automatically wakes up your device when opened. The built-in stand offers comfortable hands-free viewing.\",\n brand: 'Amazon',\n categories: ['Computers & Tablets', 'iPad & Tablet Accessories', 'Cases'],\n hierarchicalCategories: {\n lvl0: 'Computers & Tablets',\n lvl1: 'Computers & Tablets > iPad & Tablet Accessories',\n lvl2: 'Computers & Tablets > iPad & Tablet Accessories > Cases',\n },\n price: 39.99,\n price_range: '1 - 50',\n image: 'https://cdn-demo.algolia.com/bestbuy/4494000_sb.jpg',\n free_shipping: false,\n rating: 6,\n objectID: '4494000',\n _snippetResult: {\n description: {\n value: 'Take your Amazon Fire HD 8 tablet on the go',\n matchLevel: 'none',\n },\n },\n _highlightResult: {\n name: {\n value: 'Amazon - Case for Amazon Fire HD 8 Tablets - Black',\n matchLevel: 'none',\n matchedWords: [],\n },\n description: {\n value:\n \"Take your Amazon Fire HD 8 tablet on the go with this Amazon B00XM5W2WE case, which features a folio cover that guards your device's display and automatically wakes up your device when opened. The built-in stand offers comfortable hands-free viewing.\",\n matchLevel: 'none',\n matchedWords: [],\n },\n },\n },\n '4494401': {\n name: 'Amazon - Case for Amazon Fire 7\" Tablets - Black',\n description:\n 'Protect your Amazon Fire 7\" tablet from scratches and bumps on the go with this slim Amazon B00ZGUYN1Q case, which features a full-coverage design with polyurethane and microfiber materials for durability. The built-in stand enables hands-free viewing.',\n brand: 'Amazon',\n categories: ['Computers & Tablets', 'iPad & Tablet Accessories', 'Cases'],\n hierarchicalCategories: {\n lvl0: 'Computers & Tablets',\n lvl1: 'Computers & Tablets > iPad & Tablet Accessories',\n lvl2: 'Computers & Tablets > iPad & Tablet Accessories > Cases',\n },\n price: 24.99,\n price_range: '1 - 50',\n image: 'https://cdn-demo.algolia.com/bestbuy/4494401_sb.jpg',\n free_shipping: false,\n rating: 4,\n objectID: '4494401',\n _snippetResult: {\n description: {\n value: 'Protect your Amazon Fire 7\" tablet from scratches and bumps',\n matchLevel: 'none',\n },\n },\n _highlightResult: {\n name: {\n value: 'Amazon - Case for Amazon Fire 7\" Tablets - Black',\n matchLevel: 'none',\n matchedWords: [],\n },\n description: {\n value:\n 'Protect your Amazon Fire 7\" tablet from scratches and bumps on the go with this slim Amazon B00ZGUYN1Q case, which features a full-coverage design with polyurethane and microfiber materials for durability. The built-in stand enables hands-free viewing.',\n matchLevel: 'none',\n matchedWords: [],\n },\n },\n },\n '5354101': {\n name: '3DR - Solo Smart Rechargeable Battery - Black',\n description:\n '3D Robotics Battery for Solo Drones: Instead of waiting for your lone battery to recharge, get back to flying right away with this rechargeable battery for Solo drones. The battery can power your drone for up to 25 minutes with no camera attached, or 20 minutes carrying a camera.',\n brand: '3DR',\n categories: [\n 'Toys, Games & Drones',\n 'Drones & Accessories',\n 'Drone Accessories',\n 'Drone Batteries',\n ],\n hierarchicalCategories: {\n lvl0: 'Toys, Games & Drones',\n lvl1: 'Toys, Games & Drones > Drones & Accessories',\n lvl2: 'Toys, Games & Drones > Drones & Accessories > Drone Accessories',\n lvl3:\n 'Toys, Games & Drones > Drones & Accessories > Drone Accessories > Drone Batteries',\n },\n price: 149.95,\n price_range: '100 - 200',\n image: 'https://cdn-demo.algolia.com/bestbuy/5354101_sb.jpg',\n free_shipping: false,\n rating: 4,\n objectID: '5354101',\n _snippetResult: {\n description: {\n value: '3D Robotics Battery for Solo Drones: Instead of waiting for',\n matchLevel: 'none',\n },\n },\n _highlightResult: {\n name: {\n value: '3DR - Solo Smart Rechargeable Battery - Black',\n matchLevel: 'none',\n matchedWords: [],\n },\n description: {\n value:\n '3D Robotics Battery for Solo Drones: Instead of waiting for your lone battery to recharge, get back to flying right away with this rechargeable battery for Solo drones. The battery can power your drone for up to 25 minutes with no camera attached, or 20 minutes carrying a camera.',\n matchLevel: 'none',\n matchedWords: [],\n },\n },\n },\n '5357011': {\n name: '3DR - Propellers for 3DR Solo Drones (2-Pack) - Black',\n description:\n '3D Robotics Propellers for Solo Drones: Buy this set of replacement propellers before you need them so you can get back to flying as soon as you damage or lose a propeller. The 1-piece design of these propellers keeps them secure during flight, self-tightening so you can install them in an instant and return to in-air fun.',\n brand: '3DR',\n categories: [\n 'Toys, Games & Drones',\n 'Drones & Accessories',\n 'Drone Accessories',\n 'Drone Parts',\n ],\n hierarchicalCategories: {\n lvl0: 'Toys, Games & Drones',\n lvl1: 'Toys, Games & Drones > Drones & Accessories',\n lvl2: 'Toys, Games & Drones > Drones & Accessories > Drone Accessories',\n lvl3:\n 'Toys, Games & Drones > Drones & Accessories > Drone Accessories > Drone Parts',\n },\n price: 14.95,\n price_range: '1 - 50',\n image: 'https://cdn-demo.algolia.com/bestbuy/5357011_rb.jpg',\n free_shipping: false,\n rating: 2,\n objectID: '5357011',\n _snippetResult: {\n description: {\n value: '3D Robotics Propellers for Solo Drones: Buy this set of',\n matchLevel: 'none',\n },\n },\n _highlightResult: {\n name: {\n value: '3DR - Propellers for 3DR Solo Drones (2-Pack) - Black',\n matchLevel: 'none',\n matchedWords: [],\n },\n description: {\n value:\n '3D Robotics Propellers for Solo Drones: Buy this set of replacement propellers before you need them so you can get back to flying as soon as you damage or lose a propeller. The 1-piece design of these propellers keeps them secure during flight, self-tightening so you can install them in an instant and return to in-air fun.',\n matchLevel: 'none',\n matchedWords: [],\n },\n },\n },\n },\n};\n","import { isServer } from '../../shared/library/helpers/isServer';\n\nconst productDatas = [];\nfunction getInitData() {\n let productQuantity = [];\n const products = {};\n if (!isServer) {\n const cartProductQuantity = localStorage.getItem('cartProductQuantity');\n let cartProducts = localStorage.getItem('cartProducts');\n if (cartProducts && cartProductQuantity) {\n cartProducts = JSON.parse(cartProducts);\n JSON.parse(cartProductQuantity).forEach(product => {\n const objectID = product.objectID;\n if (!isNaN(product.quantity)) {\n productQuantity.push({\n objectID,\n quantity: parseInt(product.quantity, 10),\n });\n products[objectID] = {\n ...cartProducts[objectID],\n price: parseFloat(cartProducts[objectID].price, 10),\n };\n }\n });\n } else {\n productDatas.forEach(product => {\n productQuantity.push({\n objectID: product.objectID,\n quantity: 1,\n });\n products[product.objectID] = product;\n });\n }\n }\n return { productQuantity, products };\n}\n\nexport default getInitData();\n","import { all, takeEvery, put } from 'redux-saga/effects';\nimport actions from './actions';\nimport fake from './fake';\nimport fakeinitdata from './config';\n\nexport function* changedCard() {\n yield takeEvery(actions.CHANGE_CARDS, function*() {});\n}\nexport function* initData() {\n let fakeData = fakeinitdata;\n if (fakeinitdata.productQuantity.length === 0) {\n fakeData = fake;\n }\n yield put({\n type: actions.INIT_DATA,\n payload: fakeData,\n });\n}\nexport function* updateData({ products, productQuantity }) {\n localStorage.setItem('cartProductQuantity', JSON.stringify(productQuantity));\n localStorage.setItem('cartProducts', JSON.stringify(products));\n yield put({\n type: actions.UPDATE_DATA,\n products,\n productQuantity,\n });\n}\nexport default function*() {\n yield all([\n takeEvery(actions.INIT_DATA_SAGA, initData),\n takeEvery(actions.UPDATE_DATA_SAGA, updateData),\n ]);\n}\n","import { all, takeEvery, fork } from 'redux-saga/effects';\nimport actions from './actions';\n\nexport function* changedCard() {\n yield takeEvery(actions.CHANGE_CARDS, function*() {});\n}\nexport default function* rootSaga() {\n yield all([fork(changedCard)]);\n}\n","import { db } from './firebase';\nexport function convertCollectionsSnapshotToMap(snapshots) {\n return snapshots.docs.reduce((accumulator, collection) => {\n accumulator[collection.id] = collection.data();\n return accumulator;\n }, {});\n}\nexport async function getNewDocRef(collectionName) {\n return await db.collection(collectionName).doc();\n}\nexport async function addDocument(collectionName, documentData) {\n return await db\n .collection(collectionName)\n .add(documentData)\n .then(docRef => docRef.id);\n}\nexport async function setDocument(collectionName, docRef, documentData) {\n return await db\n .collection(collectionName)\n .doc(docRef)\n .set(documentData);\n}\n\nexport async function getDocuments(collectionName) {\n return await db\n .collection(collectionName)\n .get()\n .then(querySnapshot =>\n querySnapshot.docs.map(doc => ({ id: doc.id, ...doc.data() }))\n );\n}\nexport async function getDocumentsByQuery(collectionName, query) {\n console.log(...query, collectionName, 'test');\n\n return await db\n .collection(collectionName)\n .where(...query)\n .get()\n .then(querySnapshot =>\n querySnapshot.docs.map(doc => ({ id: doc.id, ...doc.data() }))\n );\n}\n\nexport async function deleteDocuments(collectionName) {\n const collectionRef = db.collection(collectionName);\n var batch = db.batch();\n await collectionRef\n .get()\n .then(querySnapshot =>\n querySnapshot.docs.map(doc => batch.delete(collectionRef.doc(doc.id)))\n );\n\n return await batch.commit().then(() => {\n console.log('Batch Deletion successfully committed!');\n });\n}\n\nexport const addCollectionAndDocuments = async (\n collectionKey,\n objectsToAdd\n) => {\n const collectionRef = db.collection(collectionKey);\n const batch = db.batch();\n objectsToAdd.forEach(obj => {\n const newDocRef = collectionRef.doc();\n batch.set(newDocRef, obj);\n });\n return await batch.commit().then(() => {\n console.log('Batch Addition successfully committed!');\n });\n};\n// const { title, items } = doc.data();\n// return {\n// routeName: encodeURI(title.toLowerCase()),\n// id: doc.id,\n// title,\n// items,\n// };\n// });\n// console.log(transformedCollection);\n// return transformedCollection.reduce((accumulator, collection) => {\n// accumulator[collection.title.toLowerCase()] = collection;\n// return accumulator;\n// }, {});\n","import { all, takeEvery, put, call, fork, select } from 'redux-saga/effects';\nimport actions from './actions';\nimport { rsf, db } from '../../shared/library/firebase/firebase';\nimport {\n getDocuments,\n getDocumentsByQuery,\n addDocument,\n setDocument,\n getNewDocRef,\n} from '../../shared/library/firebase/firebase.util';\nconst getSelectedChatRoom = state => state.Chat.selectedChatRoom;\nconst fsProps = {};\nconst reverseString = str =>\n str\n .split('')\n .reverse()\n .join('');\n\nconst sortChatrooms = (optionA, optionB) =>\n optionB.lastMessageTime - optionA.lastMessageTime;\nconst sortMessages = (optionA, optionB) =>\n optionA.messageTime - optionB.messageTime;\nconst getCurrentUser = () => {\n return {\n userId: 'wt4TiasxgPrQ3dNwVZ55',\n user: {\n id: 'wt4TiasxgPrQ3dNwVZ55',\n dob: '06-Apr-1993',\n gender: 'Male',\n language: 'Burmese',\n mobileNo: '5726784596',\n name: 'Zondra Kulic',\n profileImageUrl:\n 'https://s3.amazonaws.com/redqteam.com/mateadmin/support-male-zonra.png',\n },\n };\n};\n\nlet chatroomsUserCollections;\nlet chatroomCollectionRef = db.collection('chatRooms');\nlet messagesCollectionRef = db.collection('messages');\nconst sendMessageBatch = async ({ payload, selectedChatRoom }) => {\n const batch = db.batch();\n // const { chatRoom, text } = payload;\n\n console.log(selectedChatRoom, payload, 'send');\n const revId = reverseString(selectedChatRoom.id);\n const messageTime = new Date().getTime();\n const chatRoomModified = {\n lastMessage: payload,\n lastMessageTime: messageTime,\n };\n batch.update(\n chatroomCollectionRef.doc(selectedChatRoom.id),\n chatRoomModified\n );\n batch.update(chatroomCollectionRef.doc(revId), chatRoomModified);\n batch.set(messagesCollectionRef.doc(), {\n sender: selectedChatRoom.userId,\n text: payload,\n messageTime,\n chatRoomId: selectedChatRoom.id,\n });\n batch.commit();\n // yield fork(updateChatrooms);\n};\n\nfunction* initChat(action) {\n // console.log(payload, 'chatinit');\n\n const payload = getCurrentUser();\n const users = yield call(getDocuments, 'users');\n\n const chatRooms = yield call(getDocumentsByQuery, 'chatRooms', [\n 'userId',\n '==',\n payload.userId,\n ]);\n chatRooms.sort(sortChatrooms);\n const messages = yield call(getDocumentsByQuery, 'messages', [\n 'chatRoomId',\n '==',\n chatRooms[0].id,\n ]);\n console.log(chatRooms, 'chatRooms');\n messages.sort(sortMessages);\n // fsProps.selectedChatRoom = chatRooms.length > 0 && chatRooms[0];\n chatroomsUserCollections = db\n .collection('chatRooms')\n .where('userId', '==', payload.userId);\n yield fork(updateChatrooms);\n yield put({\n type: actions.CHAT_INIT_SAGA,\n user: payload.user,\n userId: payload.userId,\n users,\n chatRooms,\n messages,\n });\n}\n\nfunction* sendMessage({ payload }) {\n // fsProps.selectedChatRoom = payload.chatRoom;\n const selectedChatRoom = yield select(getSelectedChatRoom);\n\n yield call(sendMessageBatch, { payload, selectedChatRoom });\n yield put({\n type: actions.NEW_MESSAGE_SUCCESFULL,\n });\n // yield fork(updateChatrooms);\n}\nfunction* addNewUser({ user, addNewUsersProp }) {\n const newUserId = yield call(addDocument, 'users', addNewUsersProp);\n const newUser = { id: newUserId, ...addNewUsersProp };\n const newChatroom = {\n reverse: false,\n userId: user.id,\n otherUserId: newUserId,\n otherUserInfo: newUser,\n lastMessage: '',\n lastMessageTime: 0,\n };\n const newChatRoomId = yield call(addDocument, 'chatRooms', newChatroom);\n const chatRoomKeyRev = reverseString(newChatRoomId);\n const newChatroomRev = {\n id: chatRoomKeyRev,\n reverse: true,\n userId: newUserId,\n otherUserId: user.id,\n otherUserInfo: user,\n lastMessage: '',\n lastMessageTime: 0,\n };\n yield call(addDocument, 'chatRooms', newChatroomRev);\n\n yield put({\n type: actions.ADD_NEW_USER_SAGA,\n user: newUser,\n chatRoom: { id: newChatRoomId, ...newChatroom },\n });\n}\nfunction* updateChatrooms() {\n const successActionCreator = data => {\n const { type, newIndex } = data.docChanges()[0];\n const dataMoodified = type === 'modified';\n if (!dataMoodified) {\n return { type: 'NO_CHANGE' };\n }\n const chatRoom = data.docs[newIndex].data();\n\n return {\n type: actions.CHAT_UPDATE_CHATROOM_SAGA,\n payload: { chatRoom },\n };\n };\n yield call(rsf.firestore.syncCollection, chatroomsUserCollections, {\n successActionCreator,\n });\n}\nfunction* updateChatroomSaga({ payload }) {\n const { chatRoom } = payload;\n let { selected } = payload;\n\n const selectedChatRoom = yield select(getSelectedChatRoom);\n\n let messages;\n if (selected || chatRoom.id === selectedChatRoom.id) {\n messages = yield call(getDocumentsByQuery, 'messages', [\n 'chatRoomId',\n '==',\n chatRoom.id,\n ]);\n selected = true;\n }\n\n yield put({\n type: actions.CHAT_UPDATE_CHATROOM,\n chatRoom,\n messages,\n selected,\n });\n}\nexport default function* rootSaga() {\n yield all([\n takeEvery(actions.CHAT_INIT, initChat),\n takeEvery(actions.CHAT_UPDATE_CHATROOM_SAGA, updateChatroomSaga),\n takeEvery(actions.CHAT_SEND_MESSAGE, sendMessage),\n takeEvery(actions.ADD_NEW_USER, addNewUser),\n ]);\n}\n","const youtubeSearchApi = 'your_youtube_search_api_key';\nexport default youtubeSearchApi;\n","import { all, takeEvery, put, call } from 'redux-saga/effects';\nimport actions from './actions';\nimport youtubeSearchApi from '../../config/youtube_search.config';\nexport const per_page = 10;\nconst maxResults = 10;\nconst youtubeSearchURL = `https://www.googleapis.com/youtube/v3/search?maxResults=${maxResults}&type=video&key=${youtubeSearchApi}&part=snippet`;\n\nconst onSearchReqeust = async (searcText, pageToken) =>\n await fetch(\n `${youtubeSearchURL}&q=${encodeURIComponent(searcText)}${pageToken}`\n )\n .then(res => res.json())\n .then(res => res)\n .catch(error => error);\n\nfunction* searchRequest({ payload }) {\n const { searcText, pageToken } = payload;\n try {\n const searchResult = yield call(\n onSearchReqeust,\n searcText,\n pageToken ? `&pageToken=${pageToken}` : ''\n );\n if (searchResult.items) {\n yield put(\n actions.youtubeSearchSuccess(\n searchResult.items,\n searchResult.pageInfo.totalResults,\n searchResult.nextPageToken,\n searchResult.prevPageToken\n )\n );\n } else {\n yield put(actions.youtubeSearchSuccess());\n }\n } catch (error) {\n yield put(actions.youtubeSearchSuccess());\n }\n}\nexport default function* rootSaga() {\n yield all([takeEvery(actions.YOUTUBE_SEARCH, searchRequest)]);\n}\n","import { all, takeEvery, put, call } from 'redux-saga/effects';\nimport actions from './actions';\nexport const per_page = 10;\nconst gitSearchApi = `https://api.github.com/search/repositories?per_page=${per_page}&q=`;\n\nconst onSearchReqeust = async (searcText, page = 1) =>\n await fetch(`${gitSearchApi}${encodeURIComponent(searcText)}&page=${page}`)\n .then(res => res.json())\n .then(res => res)\n .catch(error => error);\n\nfunction* searchRequest({ payload }) {\n const { searcText, page } = payload;\n try {\n const searchResult = yield call(onSearchReqeust, searcText, page);\n if (searchResult.items && searchResult.total_count) {\n yield put(\n actions.gitSearchSuccess(\n searchResult.items,\n searchResult.total_count,\n page\n )\n );\n } else {\n yield put(actions.gitSearchSuccess());\n }\n } catch (error) {\n yield put(actions.gitSearchSuccess());\n }\n}\nexport default function* rootSaga() {\n yield all([takeEvery(actions.GIT_SEARCH, searchRequest)]);\n}\n","let createdAt = new Date().getTime();\nconst tableData = JSON.parse(\n `[{\n \"id\": \"1\",\n \"title\": \"React is the future\",\n \"description\": \"Let’s take a closer look at some of the patterns that are emerging in the React ecosystem.\",\n \"excerpt\": \"Let’s take a closer look at some of the patterns that are emerging\",\n \"deleted_at\": null,\n \"created_at\": ${createdAt},\n \"status\": \"publish\",\n \"key\": null,\n \"slug\": \"future-in-react-116140e5fe8f\"\n}, {\n \"id\": \"2\",\n \"title\": \"Global configuration of webpack, react and CRA\",\n \"description\": \"We are very happy to introduce. It’s available on npm effective immediately. To upgrade, run:\",\n \"excerpt\": \"Introducing the devtools world\",\n \"deleted_at\": null,\n \"created_at\": ${createdAt},\n \"status\": \"publish\",\n \"key\": null,\n \"slug\": \"next5-react\"\n}, {\n \"id\": \"3\",\n \"title\": \"Reactive Pro: A user guide\",\n \"description\": \"Reactive a modern web based filtering and searching plugin. I have already released two apps in production, Kiven Aa (React) and Pollen Chat (React Native). \",\n \"excerpt\": \"I’ve been working with React and React-Native for the last couple of months.\",\n \"deleted_at\": null,\n \"created_at\": ${createdAt},\n \"status\": \"publish\",\n \"key\": null,\n \"slug\": \"rock-solid-react-js-foundations-a-beginners-guide-c45c93f5a923\"\n}, {\n \"id\": \"4\",\n \"title\": \"Userplace - a compelete user experience.\",\n \"description\": \"There, You can use the traditional if statement or the switch statement. In this article, we’ll explore a few alternatives \",\n \"excerpt\": \"I’ve been the last couple of months.\",\n \"deleted_at\": null,\n \"created_at\": ${createdAt},\n \"status\": \"publish\",\n \"key\": null,\n \"slug\": \"rock-solid-react-js-foundations-a-beginners-guide-c45c93f5a923\"\n}, {\n \"id\": \"5\",\n \"title\": \"React is rulling the tech \",\n \"description\": \"There, You can use the traditional if statement or the switch statement. In this article, we’ll explore a few alternatives \",\n \"excerpt\": \"I’ve been the last couple of months.\",\n \"deleted_at\": null,\n \"created_at\": ${createdAt},\n \"status\": \"publish\",\n \"key\": null,\n \"slug\": \"rock-solid-react-js-foundations-a-beginners-guide-c45c93f5a923\"\n}]`\n);\nconst sortOption = {};\nclass fakeData {\n constructor(size) {\n this.size = size || 2000;\n this.datas = [];\n this.sortKey = null;\n this.sortDir = null;\n }\n dataModel(index) {\n return tableData[index];\n }\n getObjectAt(index) {\n if (index < 0 || index > this.size) {\n return undefined;\n }\n if (this.datas[index] === undefined) {\n this.datas[index] = this.dataModel(index);\n }\n return this.datas[index];\n }\n getAll() {\n if (this.datas.length < this.size) {\n for (let i = 0; i < this.size; i++) {\n this.getObjectAt(i);\n }\n }\n return this.datas.slice();\n }\n\n getSize() {\n return this.size;\n }\n getSortAsc(sortKey) {\n sortOption.sortKey = sortKey;\n sortOption.sortDir = 'ASC';\n return this.datas.sort(this.sort);\n }\n getSortDesc(sortKey) {\n sortOption.sortKey = sortKey;\n sortOption.sortDir = 'DESC';\n return this.datas.sort(this.sort);\n }\n sort(optionA, optionB) {\n const valueA = optionA[sortOption.sortKey].toUpperCase();\n const valueB = optionB[sortOption.sortKey].toUpperCase();\n let sortVal = 0;\n if (valueA > valueB) {\n sortVal = 1;\n }\n if (valueA < valueB) {\n sortVal = -1;\n }\n if (sortVal !== 0 && sortOption.sortDir === 'DESC') {\n return sortVal * -1;\n }\n return sortVal;\n }\n}\nexport default fakeData;\n","import { all, takeEvery, put, call } from 'redux-saga/effects';\nimport actions from './actions';\nimport omit from 'lodash/omit';\nimport fakeData from './fakeData';\nimport { rsf, db } from '../../shared/library/firebase/firebase';\nimport {\n convertCollectionsSnapshotToMap,\n deleteDocuments,\n addCollectionAndDocuments,\n} from '../../shared/library/firebase/firebase.util';\n\nconst fakeDataList = new fakeData(5).getAll();\n\n/**\n * DOC: https://redux-saga-firebase.js.org/reference/dev/firestore\n */\n\nconst COLLECTION_NAME = 'articles'; // change your collection\nconst ORDER_BY = 'id';\nconst ORDER = 'desc';\n\nfunction* loadFromFirestore() {\n try {\n const collectionRef = db\n .collection(COLLECTION_NAME)\n .where('deleted_at', '==', null)\n .orderBy(ORDER_BY, ORDER);\n\n const snapshots = yield call(rsf.firestore.getCollection, collectionRef);\n let data = yield call(convertCollectionsSnapshotToMap, snapshots);\n yield put(actions.loadFromFireStoreSuccess(data));\n } catch (error) {\n console.log(error);\n yield put(actions.loadFromFireStoreError(error));\n }\n}\n\nfunction* storeIntoFirestore({ payload }) {\n const { data, actionName } = payload;\n try {\n switch (actionName) {\n case 'delete':\n yield call(\n rsf.firestore.setDocument,\n `${COLLECTION_NAME}/${data.key}`,\n {\n deleted_at: new Date().getTime(),\n }\n );\n break;\n case 'update':\n yield call(\n rsf.firestore.setDocument,\n `${COLLECTION_NAME}/${data.key}`,\n {\n ...omit(data, ['key']),\n }\n );\n break;\n default:\n yield call(rsf.firestore.addDocument, COLLECTION_NAME, data);\n break;\n }\n yield put({ type: actions.LOAD_FROM_FIRESTORE });\n } catch (error) {\n console.log(error);\n yield put(actions.saveIntoFireStoreError(error));\n }\n}\n\nfunction* resetFireStoreDocuments() {\n try {\n yield call(deleteDocuments, COLLECTION_NAME);\n yield call(addCollectionAndDocuments, COLLECTION_NAME, fakeDataList);\n yield put({ type: actions.LOAD_FROM_FIRESTORE });\n } catch (error) {\n console.log(error);\n }\n}\n\nexport default function* rootSaga() {\n yield all([\n takeEvery(actions.LOAD_FROM_FIRESTORE, loadFromFirestore),\n takeEvery(actions.SAVE_INTO_FIRESTORE, storeIntoFirestore),\n takeEvery(actions.RESET_FIRESTORE_DOCUMENTS, resetFireStoreDocuments),\n ]);\n}\n","const tableData = JSON.parse(\n `[{\n \"id\": \"1\",\n \"name\": \"John Doe\",\n \"deleted_at\": null,\n \"exists_count\": \"70\",\n \"investment_count\": \"100\",\n \"job_title\": \"Data Scientist\",\n \"key\": \"eradf\",\n \"location\": \"New York, USA\",\n \"company_name\": \"Apple, Inc\"\n}, {\n \"id\": \"2\",\n \"name\": \"Jae Doe\",\n \"deleted_at\": null,\n \"exists_count\": \"80\",\n \"investment_count\": \"100\",\n \"job_title\": \"Data Minning Engineer\",\n \"key\": \"eradf\",\n \"location\": \"Sillicon Valley, USA\",\n \"company_name\": \"Uber\"\n}, {\n \"id\": \"3\",\n \"name\": \"Robertson Jane\",\n \"deleted_at\": null,\n \"exists_count\": \"50\",\n \"investment_count\": \"60\",\n \"job_title\": \"Project Architect\",\n \"key\": \"eradf\",\n \"location\": \"Mountain View, USA\",\n \"company_name\": \"TechCrunch\"\n}, {\n \"id\": \"4\",\n \"name\": \"Jake Baw\",\n \"deleted_at\": null,\n \"exists_count\": \"70\",\n \"investment_count\": \"100\",\n \"job_title\": \"Sr. Software Engineer\",\n \"key\": \"eradf\",\n \"location\": \"Hangzhou, Zhejiang, China\",\n \"company_name\": \"AliExpress\"\n}, {\n \"id\": \"5\",\n \"name\": \"John Doe\",\n \"deleted_at\": null,\n \"exists_count\": \"1\",\n \"investment_count\": \"1\",\n \"job_title\": \"CTO\",\n \"key\": \"eradf\",\n \"location\": \"Dupont Highway, Dover, Delaware, USA\",\n \"company_name\": \"RedQ, Inc\"\n}]`\n);\nconst sortOption = {};\nclass fakeData {\n constructor(size) {\n this.size = size || 2000;\n this.datas = [];\n this.sortKey = null;\n this.sortDir = null;\n }\n dataModel(index) {\n return tableData[index];\n }\n getObjectAt(index) {\n if (index < 0 || index > this.size) {\n return undefined;\n }\n if (this.datas[index] === undefined) {\n this.datas[index] = this.dataModel(index);\n }\n return this.datas[index];\n }\n getAll() {\n if (this.datas.length < this.size) {\n for (let i = 0; i < this.size; i++) {\n this.getObjectAt(i);\n }\n }\n return this.datas.slice();\n }\n\n getSize() {\n return this.size;\n }\n getSortAsc(sortKey) {\n sortOption.sortKey = sortKey;\n sortOption.sortDir = 'ASC';\n return this.datas.sort(this.sort);\n }\n getSortDesc(sortKey) {\n sortOption.sortKey = sortKey;\n sortOption.sortDir = 'DESC';\n return this.datas.sort(this.sort);\n }\n sort(optionA, optionB) {\n const valueA = optionA[sortOption.sortKey].toUpperCase();\n const valueB = optionB[sortOption.sortKey].toUpperCase();\n let sortVal = 0;\n if (valueA > valueB) {\n sortVal = 1;\n }\n if (valueA < valueB) {\n sortVal = -1;\n }\n if (sortVal !== 0 && sortOption.sortDir === 'DESC') {\n return sortVal * -1;\n }\n return sortVal;\n }\n}\nexport default fakeData;\n","import { all, takeEvery, put, call } from 'redux-saga/effects';\nimport actions from './actions';\nimport omit from 'lodash/omit';\nimport fakeData from './fakeData';\n\nimport { rsf, db } from '../../shared/library/firebase/firebase';\nimport {\n convertCollectionsSnapshotToMap,\n deleteDocuments,\n addCollectionAndDocuments,\n} from '../../shared/library/firebase/firebase.util';\n\nconst fakeDataList = new fakeData(5).getAll();\n\n/**\n * DOC: https://redux-saga-firebase.js.org/reference/dev/firestore\n */\n\nconst COLLECTION_NAME = 'investors'; // change your collection\nconst ORDER_BY = 'id';\nconst ORDER = 'desc';\n\nfunction* loadFromFirestore() {\n try {\n const collectionRef = db\n .collection(COLLECTION_NAME)\n .where('deleted_at', '==', null)\n .orderBy(ORDER_BY, ORDER);\n const snapshots = yield call(rsf.firestore.getCollection, collectionRef);\n let data = yield call(convertCollectionsSnapshotToMap, snapshots);\n yield put(actions.loadFromFireStoreSuccess(data));\n } catch (error) {\n console.log(error);\n yield put(actions.loadFromFireStoreError(error));\n }\n}\n\nfunction* storeIntoFirestore({ payload }) {\n const { data, actionName } = payload;\n try {\n switch (actionName) {\n case 'delete':\n yield call(\n rsf.firestore.setDocument,\n `${COLLECTION_NAME}/${data.key}`,\n {\n deleted_at: new Date().getTime(),\n }\n );\n break;\n case 'update':\n yield call(\n rsf.firestore.setDocument,\n `${COLLECTION_NAME}/${data.key}`,\n {\n ...omit(data, ['key']),\n }\n );\n break;\n default:\n yield call(rsf.firestore.addDocument, COLLECTION_NAME, data);\n break;\n }\n yield put({ type: actions.LOAD_FROM_FIRESTORE });\n } catch (error) {\n console.log(error);\n yield put(actions.saveIntoFireStoreError(error));\n }\n}\n\nfunction* resetFireStoreDocuments() {\n try {\n yield call(deleteDocuments, COLLECTION_NAME);\n yield call(addCollectionAndDocuments, COLLECTION_NAME, fakeDataList);\n\n yield put({ type: actions.LOAD_FROM_FIRESTORE });\n } catch (error) {\n console.log(error);\n }\n}\n\nexport default function* rootSaga() {\n yield all([\n takeEvery(actions.LOAD_FROM_FIRESTORE, loadFromFirestore),\n takeEvery(actions.SAVE_INTO_FIRESTORE, storeIntoFirestore),\n takeEvery(actions.RESET_FIRESTORE_DOCUMENTS, resetFireStoreDocuments),\n ]);\n}\n","const initialData = {\n tasks: {\n 'task-1': {\n id: 'task-1',\n column_id: 'column-1',\n title: 'Hello There',\n description: 'Take Out the garbage 1',\n labels: ['default', 'processing', 'warning', 'success'],\n due_date: '01-12-2019',\n assignees: ['mark'],\n attachments: [],\n comments: [],\n todos: [],\n editing: false,\n created_at: '01-09-2019',\n updated_at: '',\n },\n 'task-2': {\n id: 'task-2',\n column_id: 'column-1',\n title: 'Hello World',\n description: 'Let Fix The Task manager using Redux 2',\n labels: ['warning', 'error'],\n due_date: '01-09-2019',\n assignees: [],\n attachments: [],\n comments: [],\n todos: [],\n editing: false,\n created_at: '01-09-2019',\n updated_at: '',\n },\n 'task-3': {\n id: 'task-3',\n column_id: 'column-1',\n title: 'There',\n description: 'Need Some Study Time To Solve The Problem 3',\n labels: ['processing', 'warning', 'success'],\n due_date: '01-09-2019',\n assignees: ['neamat', 'mim'],\n attachments: [],\n comments: [],\n todos: [],\n editing: false,\n created_at: '01-09-2019',\n updated_at: '',\n },\n 'task-4': {\n id: 'task-4',\n column_id: 'column-1',\n title: 'Nothing to do',\n description: 'Let Learn Formik 4',\n labels: ['warning', 'success'],\n due_date: '01-09-2019',\n assignees: [],\n attachments: [],\n comments: [],\n todos: [],\n editing: false,\n created_at: '01-09-2019',\n updated_at: '',\n },\n 'task-5': {\n id: 'task-5',\n column_id: 'column-3',\n title: 'Lets Fixed',\n description: 'Come on ... 5',\n labels: ['success', 'warning'],\n due_date: '01-10-2019',\n assignees: ['bob'],\n attachments: [],\n comments: [],\n todos: [],\n editing: false,\n created_at: '01-09-2019',\n updated_at: '',\n },\n },\n columns: {\n 'column-1': {\n id: 'column-1',\n board_id: 'board-1',\n task_orders: ['task-1', 'task-2', 'task-3', 'task-4'],\n title: 'To Do',\n editing: false,\n },\n 'column-2': {\n id: 'column-2',\n board_id: 'board-2',\n task_orders: [],\n title: 'In Progress',\n editing: false,\n },\n 'column-3': {\n id: 'column-3',\n board_id: 'board-1',\n task_orders: ['task-5'],\n title: 'Done',\n editing: false,\n },\n },\n boards: {\n 'board-1': {\n id: 'board-1',\n column_orders: ['column-1', 'column-3'],\n title: 'Isomorphic',\n category: 'Software',\n progress: 50,\n thumb: '',\n open_to_members: false,\n open_to_company: false,\n estimated_time: '',\n editing: false,\n created_at: '01-10-2019',\n updated_at: '',\n },\n 'board-2': {\n id: 'board-2',\n column_orders: ['column-2'],\n title: 'Headless',\n category: 'OPs',\n progress: 70,\n thumb: '',\n open_to_members: true,\n open_to_company: true,\n estimated_time: '',\n editing: false,\n created_at: '02-01-2019',\n updated_at: '',\n },\n 'board-3': {\n id: 'board-3',\n column_orders: [],\n title: 'React Next Landing',\n category: 'Service Desk',\n progress: 30,\n thumb: '',\n open_to_members: false,\n open_to_company: true,\n estimated_time: '',\n editing: false,\n created_at: '02-03-2019',\n updated_at: '',\n },\n },\n labels: {\n 'label-1': {\n id: 'label-1',\n title: 'default',\n color: 'red',\n created_at: '',\n updated_at: '',\n editing: false,\n },\n 'label-2': {\n id: 'label-2',\n title: 'processing',\n color: 'red',\n created_at: '',\n updated_at: '',\n editing: false,\n },\n 'label-3': {\n id: 'label-3',\n title: 'warning',\n color: 'red',\n created_at: '',\n updated_at: '',\n editing: false,\n },\n 'label-4': {\n id: 'label-4',\n title: 'success',\n color: 'red',\n created_at: '',\n updated_at: '',\n editing: false,\n },\n 'label-5': {\n id: 'label-5',\n title: 'error',\n color: 'red',\n created_at: '',\n updated_at: '',\n editing: false,\n },\n },\n};\n\nexport default initialData;\n","// localStorage.js\nexport const loadState = key => {\n try {\n const serializedState = localStorage.getItem(key);\n if (serializedState === null) {\n return undefined;\n }\n return JSON.parse(serializedState);\n } catch (err) {\n return undefined;\n }\n};\n\nexport const clearState = () => {\n localStorage.clear();\n};\n\n// export const saveState = (key, value) => {\n// try {\n// const serializedState = JSON.stringify(value);\n// localStorage.setItem(key, serializedState);\n// } catch {\n// // ignore write errors\n// }\n// };\n\nexport const saveState = (key, value, companyId = null) => {\n try {\n if (companyId) {\n let item = { [companyId]: value };\n const serializedState = JSON.stringify(item);\n localStorage.setItem(key, serializedState);\n } else {\n const serializedState = JSON.stringify(value);\n localStorage.setItem(key, serializedState);\n }\n } catch {\n // ignore write errors\n }\n};\n","// saga.js\nimport { all, takeEvery, put, select } from 'redux-saga/effects';\nimport scrumBoardActions from './actions';\nimport DemoData from './data';\nimport { loadState, saveState } from '../../shared/library/helpers/localStorage';\n\nconst getScrumBoards = state => state.scrumBoard;\n\nfunction* boardsRenderEffectSaga() {\n let boards;\n let columns;\n let tasks;\n if (localStorage.hasOwnProperty('scrum_boards')) {\n const scrum_boards = loadState('scrum_boards');\n boards = scrum_boards.boards;\n columns = scrum_boards.columns;\n tasks = scrum_boards.tasks;\n } else {\n boards = DemoData.boards;\n columns = DemoData.columns;\n tasks = DemoData.tasks;\n }\n saveState('scrum_boards', { boards, columns, tasks });\n yield put(scrumBoardActions.setBoardsData({ boards, columns, tasks }));\n}\n\nfunction* boardRenderEffectSaga({ payload }) {\n let scrum_boards;\n let boards;\n let columns;\n let tasks;\n if (localStorage.hasOwnProperty('scrum_boards')) {\n scrum_boards = loadState('scrum_boards');\n boards = scrum_boards.boards;\n columns = scrum_boards.columns;\n tasks = scrum_boards.tasks;\n } else {\n scrum_boards = DemoData;\n boards = DemoData.boards;\n columns = DemoData.columns;\n tasks = DemoData.tasks;\n }\n\n yield put(\n scrumBoardActions.setBoardData({\n boards,\n columns,\n tasks,\n })\n );\n}\nfunction* createOrUpdateBoardEffectSaga(action) {\n let scrum_boards = yield select(getScrumBoards);\n const boards = {\n ...scrum_boards.boards,\n [action.payload.id]: action.payload,\n };\n scrum_boards = {\n columns: scrum_boards.columns,\n tasks: scrum_boards.tasks,\n boards: boards,\n };\n saveState('scrum_boards', scrum_boards);\n\n yield put(scrumBoardActions.createOrUpdateBoard(boards));\n}\n\nfunction* deleteBoardEffectSaga(action) {\n let scrum_boards = yield select(getScrumBoards);\n const BOARDS = {\n ...scrum_boards.boards,\n };\n delete BOARDS[action.payload];\n\n const boards = BOARDS;\n\n scrum_boards = {\n ...scrum_boards,\n boards,\n };\n saveState('scrum_boards', scrum_boards);\n\n yield put(scrumBoardActions.deleteBoard(boards));\n}\n\nfunction* createOrUpdateColumnEffectSaga({ payload: { column, board_id } }) {\n let scrum_boards = yield select(getScrumBoards);\n console.log(column, board_id);\n const columns = {\n ...scrum_boards.columns,\n [column.id]: {\n ...column,\n editing: false,\n },\n };\n let boards = scrum_boards.boards;\n if (!column.editing) {\n boards = {\n ...scrum_boards.boards,\n [board_id]: {\n ...scrum_boards.boards[board_id],\n column_orders: [\n ...scrum_boards.boards[board_id].column_orders,\n column.id,\n ],\n },\n };\n }\n scrum_boards = {\n ...scrum_boards,\n columns,\n boards,\n };\n saveState('scrum_boards', scrum_boards);\n yield put(scrumBoardActions.createOrUpdateColumn({ columns, boards }));\n}\n\nfunction* deleteColumnEffectSaga({ payload: { column_id, board_id } }) {\n let scrum_boards = yield select(getScrumBoards);\n const COLUMNS = {\n ...scrum_boards.columns,\n };\n delete COLUMNS[column_id];\n\n const columns = COLUMNS;\n const boards = {\n ...scrum_boards.boards,\n [board_id]: {\n ...scrum_boards.boards[board_id],\n column_orders: scrum_boards.boards[board_id].column_orders.filter(\n order => order !== column_id\n ),\n },\n };\n\n scrum_boards = {\n ...scrum_boards,\n columns,\n boards,\n };\n saveState('scrum_boards', scrum_boards);\n\n yield put(scrumBoardActions.deleteColumn({ columns, boards }));\n}\n\nfunction* moveColumnEffectSaga({ payload: { board_id, column_orders } }) {\n let scrum_boards = yield select(getScrumBoards);\n const boards = {\n ...scrum_boards.boards,\n [board_id]: {\n ...scrum_boards.boards[board_id],\n column_orders: column_orders,\n },\n };\n scrum_boards = {\n ...scrum_boards,\n boards: boards,\n };\n saveState('scrum_boards', scrum_boards);\n\n yield put(scrumBoardActions.setMovedColumn(boards));\n}\n\nfunction* createOrUpdateTaskEffectSaga(action) {\n let scrum_boards = yield select(getScrumBoards);\n const tasks = {\n ...scrum_boards.tasks,\n [action.payload.id]: { ...action.payload, editing: false },\n };\n let columns = scrum_boards.columns;\n if (!action.payload.editing) {\n columns = {\n ...scrum_boards.columns,\n [action.payload.column_id]: {\n ...scrum_boards.columns[action.payload.column_id],\n task_orders: [\n ...scrum_boards.columns[action.payload.column_id].task_orders,\n action.payload.id,\n ],\n },\n };\n }\n\n scrum_boards = {\n columns: columns,\n tasks: tasks,\n boards: scrum_boards.boards,\n };\n saveState('scrum_boards', scrum_boards);\n\n yield put(scrumBoardActions.createOrUpdateTask({ tasks, columns }));\n}\n\nfunction* deleteTaskEffectSaga({ payload: { task_id, column_id } }) {\n let scrum_boards = yield select(getScrumBoards);\n const tasks = Object.keys(scrum_boards.tasks).reduce((object, key) => {\n if (key !== task_id) {\n object[key] = scrum_boards.tasks[key];\n }\n return object;\n }, {});\n const columns = {\n ...scrum_boards.columns,\n [column_id]: {\n ...scrum_boards.columns[column_id],\n task_orders: scrum_boards.columns[column_id].task_orders.filter(\n order => order !== task_id\n ),\n },\n };\n scrum_boards = {\n columns: columns,\n tasks: tasks,\n boards: scrum_boards.boards,\n };\n saveState('scrum_boards', scrum_boards);\n yield put(scrumBoardActions.deleteTask({ columns, tasks }));\n}\n\nfunction* moveTaskEffectSaga({ payload: { tasks, columns } }) {\n let scrum_boards = yield select(getScrumBoards);\n scrum_boards = {\n columns: columns,\n tasks: tasks,\n boards: scrum_boards.boards,\n };\n saveState('scrum_boards', scrum_boards);\n yield put(scrumBoardActions.setMovedTask({ columns, tasks }));\n}\n\nexport default function* scrumBoardSaga() {\n yield all([\n takeEvery(scrumBoardActions.LOAD_BOARDS_DATA_SAGA, boardsRenderEffectSaga),\n takeEvery(\n scrumBoardActions.LOAD_CURRENT_BOARD_DATA_SAGA,\n boardRenderEffectSaga\n ),\n takeEvery(\n scrumBoardActions.CREATE_OR_UPDATE_BOARD_WATCHER,\n createOrUpdateBoardEffectSaga\n ),\n takeEvery(scrumBoardActions.DELETE_BOARD_WATCHER, deleteBoardEffectSaga),\n takeEvery(\n scrumBoardActions.CREATE_OR_UPDATE_COLUMN_WATCHER,\n createOrUpdateColumnEffectSaga\n ),\n takeEvery(scrumBoardActions.DELETE_COLUMN_WATCHER, deleteColumnEffectSaga),\n takeEvery(scrumBoardActions.MOVE_COLUMN_WATCHER, moveColumnEffectSaga),\n takeEvery(\n scrumBoardActions.CREATE_OR_UPDATE_TASK_WATCHER,\n createOrUpdateTaskEffectSaga\n ),\n takeEvery(scrumBoardActions.DELETE_TASK_WATCHER, deleteTaskEffectSaga),\n takeEvery(scrumBoardActions.MOVE_TASK_WATCHER, moveTaskEffectSaga),\n ]);\n}\n","import userpic from '../../../public/images/user1.png';\n\nimport profilebg from '../../../public/images/profile-bg.jpg';\n// posts\nimport post1 from '../../../public/images/posts/1.png';\nimport post2 from '../../../public/images/posts/2.png';\nimport post3 from '../../../public/images/posts/3.png';\nimport post4 from '../../../public/images/posts/4.png';\nimport post5 from '../../../public/images/posts/5.png';\nimport post6 from '../../../public/images/posts/6.png';\nimport post7 from '../../../public/images/posts/7.png';\nimport post8 from '../../../public/images/posts/8.png';\nimport post9 from '../../../public/images/posts/9.png';\nimport post10 from '../../../public/images/posts/10.png';\nimport post11 from '../../../public/images/posts/11.png';\n\nconst profileData = {\n id: 1,\n name: 'Samwell Martina',\n username: '@samwell_martina',\n avatar: userpic,\n profile_bg: profilebg,\n post: [\n {\n id: 1,\n type: 'image',\n thumb_url: post1,\n numberOflike: '21',\n numberOfcomment: '8',\n comments: [\n {\n id: 1,\n role: 'author',\n avatar: userpic,\n username: '@samwell_martina',\n comment:\n 'Hi πŸ‘‹πŸ»πŸ˜Š
These are my personal favorites of my last year\\'s render challenge. And maybe that\\'s also a reason to try this new instagram feature... 😜
#lekoarts #arsaurea #photoshop #cinema4d #c4d #graphicdesign #artwork #digitalart #artoftheday #abstract',\n time: '133w',\n },\n {\n id: 2,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/men/64.jpg',\n username: '@jon_doe',\n comment: 'Hey. This is so dope',\n time: '133w',\n },\n ],\n },\n {\n id: 2,\n type: 'gallery',\n thumb_url: post2,\n gallery: [post2, post11, post6],\n numberOflike: '34',\n numberOfcomment: '2',\n comments: [\n {\n id: 1,\n role: 'author',\n avatar: userpic,\n username: '@samwell_martina',\n comment:\n 'Hi πŸ‘‹πŸ»πŸ˜Š
These are my personal favorites of my last year\\'s render challenge. And maybe that\\'s also a reason to try this new instagram feature... 😜
#lekoarts #arsaurea #photoshop #cinema4d #c4d #graphicdesign #artwork #digitalart #artoftheday #abstract',\n time: '133w',\n },\n {\n id: 2,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/men/64.jpg',\n username: '@jon_doe',\n comment: 'πŸ’ͺ 😊 πŸ‘ πŸ†',\n time: '133w',\n },\n {\n id: 3,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/women/68.jpg',\n username: '@jenny_doe',\n comment: 'wow!! πŸ‘ŒπŸ‘ŒπŸ˜πŸ˜',\n time: '133w',\n },\n ],\n },\n {\n id: 3,\n type: 'video',\n thumb_url: post9,\n video: ``,\n numberOfView: '134',\n numberOflike: '47',\n numberOfcomment: '48',\n comments: [\n {\n id: 1,\n role: 'author',\n avatar: userpic,\n username: '@samwell_martina',\n comment:\n 'Hi πŸ‘‹πŸ»πŸ˜Š
These are my personal favorites of my last year\\'s render challenge. And maybe that\\'s also a reason to try this new instagram feature... 😜
#lekoarts #arsaurea #photoshop #cinema4d #c4d #graphicdesign #artwork #digitalart #artoftheday #abstract',\n time: '133w',\n },\n {\n id: 2,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/men/64.jpg',\n username: '@jon_doe',\n comment:\n 'How delightful, total eye candy🌸😻😻 Are you interested in being featured next in our gallery? Write to me for more info!!',\n time: '133w',\n },\n ],\n },\n {\n id: 4,\n type: 'image',\n thumb_url: post3,\n numberOflike: '21',\n numberOfcomment: '8',\n comments: [\n {\n id: 1,\n role: 'author',\n avatar: userpic,\n username: '@samwell_martina',\n comment:\n 'Hi πŸ‘‹πŸ»πŸ˜Š
These are my personal favorites of my last year\\'s render challenge. And maybe that\\'s also a reason to try this new instagram feature... 😜
#lekoarts #arsaurea #photoshop #cinema4d #c4d #graphicdesign #artwork #digitalart #artoftheday #abstract',\n time: '133w',\n },\n {\n id: 2,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/men/64.jpg',\n username: '@jon_doe',\n comment: 'Hey. This is so dope',\n time: '133w',\n },\n ],\n },\n {\n id: 5,\n type: 'image',\n thumb_url: post4,\n numberOflike: '34',\n numberOfcomment: '2',\n comments: [\n {\n id: 1,\n role: 'author',\n avatar: userpic,\n username: '@samwell_martina',\n comment:\n 'Hi πŸ‘‹πŸ»πŸ˜Š
These are my personal favorites of my last year\\'s render challenge. And maybe that\\'s also a reason to try this new instagram feature... 😜
#lekoarts #arsaurea #photoshop #cinema4d #c4d #graphicdesign #artwork #digitalart #artoftheday #abstract',\n time: '133w',\n },\n {\n id: 2,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/men/64.jpg',\n username: '@jon_doe',\n comment: 'πŸ’ͺ 😊 πŸ‘ πŸ†',\n time: '133w',\n },\n {\n id: 3,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/women/68.jpg',\n username: '@jenny_doe',\n comment: 'wow!! πŸ‘ŒπŸ‘ŒπŸ˜πŸ˜',\n time: '133w',\n },\n ],\n },\n {\n id: 6,\n type: 'image',\n thumb_url: post5,\n numberOflike: '47',\n numberOfcomment: '48',\n comments: [\n {\n id: 1,\n role: 'author',\n avatar: userpic,\n username: '@samwell_martina',\n comment:\n 'Hi πŸ‘‹πŸ»πŸ˜Š
These are my personal favorites of my last year\\'s render challenge. And maybe that\\'s also a reason to try this new instagram feature... 😜
#lekoarts #arsaurea #photoshop #cinema4d #c4d #graphicdesign #artwork #digitalart #artoftheday #abstract',\n time: '133w',\n },\n {\n id: 2,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/men/64.jpg',\n username: '@jon_doe',\n comment:\n 'How delightful, total eye candy🌸😻😻 Are you interested in being featured next in our gallery? Write to me for more info!!',\n time: '133w',\n },\n ],\n },\n {\n id: 7,\n type: 'gallery',\n thumb_url: post7,\n gallery: [post7, post5, post9],\n numberOflike: '34',\n numberOfcomment: '2',\n comments: [\n {\n id: 1,\n role: 'author',\n avatar: userpic,\n username: '@samwell_martina',\n comment:\n 'Hi πŸ‘‹πŸ»πŸ˜Š
These are my personal favorites of my last year\\'s render challenge. And maybe that\\'s also a reason to try this new instagram feature... 😜
#lekoarts #arsaurea #photoshop #cinema4d #c4d #graphicdesign #artwork #digitalart #artoftheday #abstract',\n time: '133w',\n },\n {\n id: 2,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/men/64.jpg',\n username: '@jon_doe',\n comment: 'πŸ’ͺ 😊 πŸ‘ πŸ†',\n time: '133w',\n },\n {\n id: 3,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/women/68.jpg',\n username: '@jenny_doe',\n comment: 'wow!! πŸ‘ŒπŸ‘ŒπŸ˜πŸ˜',\n time: '133w',\n },\n ],\n },\n {\n id: 8,\n type: 'video',\n thumb_url: post8,\n video: ``,\n numberOfView: '134',\n numberOflike: '47',\n numberOfcomment: '48',\n comments: [\n {\n id: 1,\n role: 'author',\n avatar: userpic,\n username: '@samwell_martina',\n comment:\n 'Hi πŸ‘‹πŸ»πŸ˜Š
These are my personal favorites of my last year\\'s render challenge. And maybe that\\'s also a reason to try this new instagram feature... 😜
#lekoarts #arsaurea #photoshop #cinema4d #c4d #graphicdesign #artwork #digitalart #artoftheday #abstract',\n time: '133w',\n },\n {\n id: 2,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/men/64.jpg',\n username: '@jon_doe',\n comment:\n 'How delightful, total eye candy🌸😻😻 Are you interested in being featured next in our gallery? Write to me for more info!!',\n time: '133w',\n },\n ],\n },\n {\n id: 9,\n type: 'image',\n thumb_url: post10,\n numberOflike: '21',\n numberOfcomment: '8',\n comments: [\n {\n id: 1,\n role: 'author',\n avatar: userpic,\n username: '@samwell_martina',\n comment:\n 'Hi πŸ‘‹πŸ»πŸ˜Š
These are my personal favorites of my last year\\'s render challenge. And maybe that\\'s also a reason to try this new instagram feature... 😜
#lekoarts #arsaurea #photoshop #cinema4d #c4d #graphicdesign #artwork #digitalart #artoftheday #abstract',\n time: '133w',\n },\n {\n id: 2,\n role: 'user',\n avatar: 'https://randomuser.me/api/portraits/men/64.jpg',\n username: '@jon_doe',\n comment: 'Hey. This is so dope',\n time: '133w',\n },\n ],\n },\n ],\n followers: [\n {\n id: 1,\n avatar:\n 'https://pbs.twimg.com/profile_images/974603248119222272/N5PLzyan.jpg',\n name: 'Nykyta Korotkevych',\n },\n {\n id: 2,\n avatar: 'https://randomuser.me/api/portraits/women/65.jpg',\n name: 'Christine Maldonado',\n },\n {\n id: 3,\n avatar: 'https://randomuser.me/api/portraits/men/46.jpg',\n name: 'Konsta Peura',\n },\n {\n id: 4,\n avatar: 'https://randomuser.me/api/portraits/women/63.jpg',\n name: 'Britney Cooper',\n },\n {\n id: 5,\n avatar: 'https://randomuser.me/api/portraits/men/81.jpg',\n name: 'Eduardo Hernandez',\n },\n {\n id: 6,\n avatar:\n 'https://images-na.ssl-images-amazon.com/images/M/MV5BMjEzMjA0ODk1OF5BMl5BanBnXkFtZTcwMTA4ODM3OQ@@._V1_UY256_CR5,0,172,256_AL_.jpg',\n name: ' Elizabeth Olsen',\n },\n {\n id: 7,\n avatar:\n 'https://pbs.twimg.com/profile_images/1079706442763067392/wuaeGZnN.jpg',\n name: 'Hrvoje Šimić',\n },\n {\n id: 8,\n avatar:\n 'https://images.pexels.com/photos/247885/pexels-photo-247885.jpeg?h=350&auto=compress&cs=tinysrgb',\n name: 'Monroe Bond',\n },\n ],\n following: [\n {\n id: 1,\n avatar: 'https://randomuser.me/api/portraits/men/81.jpg',\n name: 'Eduardo Hernandez',\n },\n {\n id: 2,\n avatar:\n 'https://images-na.ssl-images-amazon.com/images/M/MV5BMjEzMjA0ODk1OF5BMl5BanBnXkFtZTcwMTA4ODM3OQ@@._V1_UY256_CR5,0,172,256_AL_.jpg',\n name: ' Elizabeth Olsen',\n },\n {\n id: 3,\n avatar:\n 'https://pbs.twimg.com/profile_images/1079706442763067392/wuaeGZnN.jpg',\n name: 'Hrvoje Šimić',\n },\n {\n id: 4,\n avatar:\n 'https://images.pexels.com/photos/247885/pexels-photo-247885.jpeg?h=350&auto=compress&cs=tinysrgb',\n name: 'Monroe Bond',\n },\n {\n id: 5,\n avatar:\n 'https://pbs.twimg.com/profile_images/974603248119222272/N5PLzyan.jpg',\n name: 'Nykyta Korotkevych',\n },\n {\n id: 6,\n avatar: 'https://randomuser.me/api/portraits/women/65.jpg',\n name: 'Christine Maldonado',\n },\n {\n id: 7,\n avatar: 'https://randomuser.me/api/portraits/men/46.jpg',\n name: 'Konsta Peura',\n },\n {\n id: 8,\n avatar: 'https://randomuser.me/api/portraits/women/63.jpg',\n name: 'Britney Cooper',\n },\n {\n id: 9,\n avatar:\n 'https://images-na.ssl-images-amazon.com/images/M/MV5BMjEzMjA0ODk1OF5BMl5BanBnXkFtZTcwMTA4ODM3OQ@@._V1_UY256_CR5,0,172,256_AL_.jpg',\n name: ' Elizabeth Olsen',\n },\n {\n id: 10,\n avatar:\n 'https://pbs.twimg.com/profile_images/1079706442763067392/wuaeGZnN.jpg',\n name: 'Hrvoje Šimić',\n },\n {\n id: 11,\n avatar:\n 'https://images.pexels.com/photos/247885/pexels-photo-247885.jpeg?h=350&auto=compress&cs=tinysrgb',\n name: 'Monroe Bond',\n },\n {\n id: 12,\n avatar:\n 'https://pbs.twimg.com/profile_images/974603248119222272/N5PLzyan.jpg',\n name: 'Nykyta Korotkevych',\n },\n {\n id: 13,\n avatar: 'https://randomuser.me/api/portraits/women/65.jpg',\n name: 'Christine Maldonado',\n },\n {\n id: 14,\n avatar: 'https://randomuser.me/api/portraits/men/46.jpg',\n name: 'Konsta Peura',\n },\n ],\n};\n\nexport default profileData;\n","// saga.js\nimport { all, takeEvery, put } from 'redux-saga/effects';\nimport profileActions from './actions';\nimport DemoProfileData from './profile.data';\n\nfunction* fetchProfileDataEffect() {\n try {\n let profile = DemoProfileData;\n yield put(profileActions.fetchProfileDataSuccess(profile));\n } catch (error) {\n yield put(profileActions.fetchProfileDataFailure(error));\n }\n}\n\nexport default function* profileSaga() {\n yield all([\n takeEvery(profileActions.FETCH_PROFILE_DATA_START, fetchProfileDataEffect),\n ]);\n}\n","import { all } from 'redux-saga/effects';\nimport authSagas from '../redux/auth/saga';\nimport contactSagas from '../redux/contacts/saga';\nimport invoicesSagas from '../redux/invoice/saga';\nimport mailSagas from '../redux/mail/saga';\nimport notesSagas from '../redux/notes/saga';\nimport todosSagas from '../redux/todos/saga';\nimport ecommerceSaga from '../redux/ecommerce/saga';\nimport cardsSagas from '../redux/card/saga';\nimport chatSagas from '../redux/chat/sagas';\nimport youtubeSearchSagas from '../redux/youtubeSearch/sagas';\nimport githubSagas from '../redux/githubSearch/sagas';\nimport articles from '../redux/articles/sagas';\nimport investors from '../redux/investors/sagas';\nimport scrumBoardSaga from '../redux/scrumBoard/saga';\nimport profileSaga from '../redux/profile/saga';\n\nexport default function* rootSaga(getState) {\n yield all([\n authSagas(),\n contactSagas(),\n mailSagas(),\n notesSagas(),\n todosSagas(),\n ecommerceSaga(),\n cardsSagas(),\n invoicesSagas(),\n chatSagas(),\n youtubeSearchSagas(),\n githubSagas(),\n articles(),\n investors(),\n scrumBoardSaga(),\n profileSaga(),\n ]);\n}\n","import moment from 'moment';\nimport { applyMiddleware, createStore } from 'redux';\nimport { persistReducer, persistStore } from 'redux-persist';\nimport createEncryptor from 'redux-persist-transform-encrypt';\nimport storage from 'redux-persist/lib/storage';\nimport createSagaMiddleware from 'redux-saga';\nimport thunk from 'redux-thunk';\n\nimport authActions from './auth/actions';\nimport rootReducer from './root-reducer';\nimport rootSaga from './root-saga';\n\nconst jwtMiddleware = ({ dispatch, getState }) => {\n return (next) => (action) => {\n // only worry about expiring token for async actions\n if (typeof action === \"function\") {\n const {\n loggedTime,\n expiresIn,\n refreshToken,\n companyId,\n freshTokenPromise,\n } = getState().Auth || {};\n let isExpired =\n moment(loggedTime).add(expiresIn, \"seconds\") - moment() < 5000; // // Call get new token before 10s\n\n if (refreshToken && isExpired) {\n if (!freshTokenPromise) {\n return authActions\n .refreshToken(dispatch, refreshToken, companyId)\n .then(() => next(action));\n } else {\n return freshTokenPromise.then(() => next(action));\n }\n }\n }\n\n return next(action);\n };\n};\n\nconst sagaMiddleware = createSagaMiddleware();\nconst middlewares = [jwtMiddleware, thunk, sagaMiddleware];\n\nconst encryptor = createEncryptor({\n secretKey: \"my-super-secret-key\",\n onError: function(error) {\n // Handle the error.\n },\n});\n\nconst persistConfig = {\n key: \"root\",\n storage,\n whitelist: [\"Auth\", \"SiteDashboard\", \"WhiteLabelingReducer\"],\n // blacklist: ['Dashboard'],\n // transforms: [encryptor]\n};\n\nif (process.env.NODE_ENV === \"production\") {\n persistConfig.transforms = [encryptor];\n}\n\nconst persistedReducer = persistReducer(persistConfig, rootReducer);\n\nconst bindMiddleware = (middleware) => {\n if (process.env.NODE_ENV !== \"production\") {\n const { composeWithDevTools } = require(\"redux-devtools-extension\");\n return composeWithDevTools(applyMiddleware(...middleware));\n }\n return applyMiddleware(...middleware);\n};\n\nconst store = createStore(persistedReducer, bindMiddleware(middlewares));\nsagaMiddleware.run(rootSaga);\nconst persistor = persistStore(store);\nexport { store, persistor };\n","import React from 'react';\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError(error) {\n return { hasError: true };\n }\n\n render() {\n if (this.state.hasError) {\n return

Loading failed! Please reload.

;\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import React, { lazy, Suspense, useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { BrowserRouter as Router, Redirect, Route, Switch, useHistory, useLocation } from 'react-router-dom';\n\nimport faviIcon from '../public/favicon.png';\nimport ErrorBoundary from './ErrorBoundary';\nimport { PUBLIC_ROUTE } from './route.constants';\n\nconst Dashboard = lazy(() => import(\"./containers/Dashboard/Dashboard\"));\n\nconst publicRoutes = [\n {\n path: PUBLIC_ROUTE.LANDING,\n exact: true,\n component: () => ,\n },\n {\n path: PUBLIC_ROUTE.PAGE_500,\n component: lazy(() => import(\"./containers/Pages/500/500\")),\n },\n {\n path: PUBLIC_ROUTE.PAGE_MAINTENANCE,\n component: lazy(() => import(\"./containers/Pages/maintenance/maintenance\")),\n },\n {\n path: PUBLIC_ROUTE.SIGN_IN,\n component: lazy(() => import(\"./containers/Pages/SignIn/SignIn\")),\n },\n {\n path: PUBLIC_ROUTE.MULTI_FACTOR,\n component: lazy(() => import(\"./containers/Pages/MultiFactorVerify/MultiFactorVerify\")),\n },\n {\n path: PUBLIC_ROUTE.SIGN_UP,\n component: lazy(() => import(\"./containers/Pages/SignUp/SignUp\")),\n },\n {\n path: PUBLIC_ROUTE.FORGET_PASSWORD,\n component: lazy(() =>\n import(\"./containers/Pages/ForgotPassword/ForgotPassword\")\n ),\n },\n {\n path: PUBLIC_ROUTE.RESET_PASSWORD,\n component: lazy(() =>\n import(\"./containers/Pages/ResetPassword/ResetPassword\")\n ),\n },\n {\n path: PUBLIC_ROUTE.AUTH0_CALLBACK,\n component: lazy(() =>\n import(\"./containers/Authentication/Auth0/Auth0Callback\")\n ),\n },\n {\n path: `${PUBLIC_ROUTE.EXPORTDATA}/:id`,\n component: lazy(() => import(\"./containers/ExportData/ExportData\")),\n },\n {\n component: lazy(() => import(\"./containers/Pages/404/404\")),\n },\n];\n\nfunction PrivateRoute({ children, ...rest }) {\n let location = useLocation();\n localStorage.setItem(\"historyPathname\",location?.pathname);\n let isLoggedIn = useSelector((state) => state.Auth.accessToken);\n\n if (isLoggedIn) {\n return {children};\n }\n return (\n \n );\n}\n\nexport default function Routes(props) {\n const history = useHistory();\n const whiteLabelingData = useSelector((state) => state.WhiteLabeling);\n const favicon = \"../public/favicon.png\";\n useEffect(() => {\n document.title = whiteLabelingData.websiteTitle || \"Plexus\";\n const favi =\n whiteLabelingData.faviconUrl != null\n ? whiteLabelingData.faviconUrl\n : faviIcon;\n changeIconWeb(favi);\n });\n\n const changeIconWeb = (url) => {\n let link =\n document.querySelector(\"link[rel*='icon']\") ||\n document.createElement(\"link\");\n link.type = \"image/x-icon\";\n link.rel = \"shortcut icon\";\n link.href = url;\n link.sizes = \"32x32\";\n\n document.getElementsByTagName(\"head\")[0].appendChild(link);\n };\n\n return (\n \n \n \n \n \n \n \n {publicRoutes.map((route, index) => (\n \n \n \n ))}\n \n \n \n \n );\n}\n","import axios from 'axios';\nimport { PUBLIC_ROUTE } from 'src/route.constants';\n\nimport { notification } from '../../../components';\nimport authAction from '../../../redux/auth/actions';\nimport loadingAction from '../../../redux/loading/actions';\nimport history from '../../../shared/library/helpers/history';\nimport setAuthorizationToken from './setAuthorizationToken';\n\nexport default {\n interceptor: store => {\n axios.interceptors.request.use(\n function (config) {\n if (config.headers?.isIgnoredLoading) {\n return config;\n }\n\n store.dispatch(loadingAction.inc());\n return config;\n },\n\n function (error) {\n store.dispatch(loadingAction.dec());\n return Promise.reject(error);\n }\n );\n\n // Update: 28/1/2022\n // Check if there are many apis have unAuthorization errors,\n // show only 1 controlled by authorizationErrorTimes flag\n axios.interceptors.response.use(\n function (response) {\n localStorage.setItem(\"authorizationErrorTimes\", \"0\");\n if (response.config.headers?.isIgnoredLoading) {\n return response.data;\n }\n store.dispatch(loadingAction.dec());\n return response.data;\n },\n function (error) {\n store.dispatch(loadingAction.dec());\n switch (error.response?.status) {\n case 401:\n let authorizationErrorTimes = Number(localStorage.getItem(\"authorizationErrorTimes\"));\n authorizationErrorTimes = authorizationErrorTimes + 1;\n localStorage.setItem(\"authorizationErrorTimes\", authorizationErrorTimes.toString());\n store.dispatch({ type: authAction.LOGOUT });\n if (authorizationErrorTimes > 1) break;\n case 403:\n setAuthorizationToken(null);\n notification(\n 'error',\n error.response?.data.message || error.message\n );\n store.dispatch({ type: authAction.LOGOUT });\n break;\n\n default:\n if ((error.response?.data.message || error.message) == 'Network Error' &&\n window.location.pathname != PUBLIC_ROUTE.PAGE_MAINTENANCE) {\n history.push(PUBLIC_ROUTE.PAGE_MAINTENANCE);\n } else {\n notification(\n 'error',\n error.response?.data.message || error.message\n );\n }\n break;\n }\n return Promise.reject(error);\n }\n );\n },\n};\n","import { createGlobalStyle } from 'styled-components';\nimport { font, palette } from 'styled-theme';\n\n// import 'antd/dist/antd.css';\n\nconst GlobalStyles = createGlobalStyle`\n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .logo {\n font-size: 32px;\n font-weight: 700;\n color: #fff;\n }\n\n .ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row) > td, .ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row) > td, .ant-table-thead > tr:hover:not(.ant-table-expanded-row) > td, .ant-table-tbody > tr:hover:not(.ant-table-expanded-row) > td {\n background: #f8f8f8!important;\n }\n\n .ant-row.ant-form-item {\n margin-bottom: 5px;\n }\n\n .has-success.has-feedback {\n .ant-select {\n .ant-select-selection {\n .ant-select-selection__rendered {\n .ant-select-selection__placeholder {\n display: none !important;\n }\n }\n }\n }\n }\n\n // ---- dashboard-link decoration underline \n .dashboard-link:hover {\n text-decoration: underline !important;\n }\n // ---- \n\n // ---- Clickable Table Row\n .clickAble {\n cursor: pointer;\n }\n // ----\n\n /*-----------------------------------------------*/ \n // style for project category menu [ScrumBoard]\n /*-----------------------------------------------*/\n .project-category {\n .ant-select-dropdown-menu {\n .ant-select-dropdown-menu-item {\n padding: 8px 12px;\n color: #000000;\n font-family: 'Roboto';\n font-weight: 400;\n }\n }\n }\n\n /*-----------------------------------------------*/ \n // style for project menu [ScrumBoard]\n /*-----------------------------------------------*/\n .ant-dropdown {\n &.project-menu {\n width: 280px;\n top: 133px !important;\n \n .ant-dropdown-menu {\n padding: 0;\n overflow: hidden;\n\n .ant-dropdown-menu-item {\n min-height: 54px;\n line-height: auto;\n display: flex;\n align-items: center;\n padding: 10px 20px;\n\n &:first-child {\n padding: 0;\n border-bottom: 1px solid #f4f6fd;\n\n &:hover,\n &:focus {\n background-color: #ffffff;\n }\n }\n\n &:hover,\n &:focus {\n background-color: #F3F5FD;\n }\n\n &:last-child {\n background-color: #E6EAF8;\n }\n }\n }\n }\n }\n\n /*-----------------------------------------------*/ \n // style for popover [ScrumBoard]\n /*-----------------------------------------------*/\n .ant-popover {\n .ant-checkbox-group {\n display: flex;\n flex-direction: column;\n .ant-checkbox-group-item {\n margin: 5px 0;\n span {\n font-size: 14px;\n color: #788195;\n text-transform: capitalize;\n }\n }\n }\n }\n\n /*-----------------------------------------------*/ \n // style for modal [ScrumBoard]\n /*-----------------------------------------------*/\n .ant-modal-wrap {\n .ant-modal {\n .ant-modal-content {\n .ant-modal-body {\n .render-form-wrapper {\n padding: 10px;\n h2 {\n margin: 0;\n }\n form {\n padding: 15px 0 3px;\n .field-container {\n margin-bottom: 26px;\n }\n }\n }\n }\n }\n }\n }\n\n\n/*-----------------------------------------------*/ \n // style form previous GlobalStyles\n /*-----------------------------------------------*/\n\n .ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row) > td, .ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row) > td, .ant-table-thead > tr:hover:not(.ant-table-expanded-row) > td, .ant-table-tbody > tr:hover:not(.ant-table-expanded-row) > td {\n background: #f8f8f8!important;\n}\n\nfont-family: ${font('primary', 0)};\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\na,\np,\nli,\ninput,\ntextarea,\nspan,\ndiv,\nimg,\nsvg {\n &::selection {\n background: ${palette('primary', 0)};\n color: #fff;\n }\n}\n\n.ant-row:not(.ant-form-item) {\n ${'' /* margin-left: -8px;\n margin-right: -8px; */};\n &:before,\n &:after {\n display: none;\n }\n}\n\n.ant-row > div {\n padding: 0;\n}\n\n.isoLeftRightComponent {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.isoCenterComponent {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n}\n/********** Add Your Global CSS Here **********/\n\nbody {\n -webkit-overflow-scrolling: touch;\n}\n\nhtml h1,\nhtml h2,\nhtml h3,\nhtml h4,\nhtml h5,\nhtml h6,\nhtml a,\nhtml p,\nhtml li,\ninput,\ntextarea,\nspan,\ndiv,\nhtml,\nbody,\nhtml a {\n margin-bottom: 0;\n font-family: 'Roboto', sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.004);\n}\n\nhtml ul {\n -webkit-padding-start: 0px;\n list-style: none;\n margin-bottom: 0;\n}\n\n.scrollbar-track-y,\n.scrollbar-thumb-y {\n width: 5px !important;\n}\n\n.scrollbar-track-x,\n.scrollbar-thumb-x {\n height: 5px !important;\n}\n\n.scrollbar-thumb {\n border-radius: 0 !important;\n}\n\n.scrollbar-track {\n background: rgba(222, 222, 222, 0.15) !important;\n}\n\n.scrollbar-thumb {\n border-radius: 0 !important;\n background: rgba(0, 0, 0, 0.5) !important;\n}\n\n.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow:after,\n.ant-popover-placement-bottomLeft\n > .ant-popover-content\n > .ant-popover-arrow:after,\n.ant-popover-placement-bottomRight\n > .ant-popover-content\n > .ant-popover-arrow:after,\n.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow:after,\n.ant-popover-placement-topLeft\n > .ant-popover-content\n > .ant-popover-arrow:after,\n.ant-popover-placement-topRight\n > .ant-popover-content\n > .ant-popover-arrow:after {\n left: 0;\n margin-left: -4px;\n}\n\n/* Instagram Modal */\n\n.ant-modal-wrap.instagram-modal .ant-modal {\n max-width: 935px;\n width: 100% !important;\n}\n\n@media only screen and (max-width: 991px) {\n .ant-modal-wrap.instagram-modal .ant-modal {\n padding: 0 60px;\n }\n}\n\n@media only screen and (max-width: 767px) {\n .ant-modal-wrap.instagram-modal .ant-modal {\n max-width: 580px;\n }\n}\n\n.ant-modal-wrap.instagram-modal .ant-modal-content {\n border-radius: 0;\n}\n\n.ant-modal-wrap.instagram-modal .ant-modal-content button.ant-modal-close {\n position: fixed;\n color: #fff;\n}\n\n.ant-modal-wrap.instagram-modal .ant-modal-content button.ant-modal-close i {\n font-size: 24px;\n}\n\n.ant-modal-wrap.instagram-modal .ant-modal-content .ant-modal-body {\n padding: 0;\n}\n\n/********** Add Your Global RTL CSS Here **********/\n\n/* Popover */\n\nhtml[dir='rtl'] .ant-popover {\n text-align: right;\n}\n\n/* Ecommerce Card */\n\nhtml[dir='rtl'] .isoCardInfoForm .ant-input {\n text-align: right;\n}\n\n/* Modal */\n\nhtml[dir='rtl'] .has-success.has-feedback:after,\nhtml[dir='rtl'] .has-warning.has-feedback:after,\nhtml[dir='rtl'] .has-error.has-feedback:after,\nhtml[dir='rtl'] .is-validating.has-feedback:after {\n left: 0;\n right: auto;\n}\n\nhtml[dir='rtl'] .ant-modal-close {\n right: inherit;\n left: 0;\n}\n\nhtml[dir='rtl'] .ant-modal-footer {\n text-align: left;\n}\n\nhtml[dir='rtl'] .ant-modal-footer button + button {\n margin-left: 0;\n margin-right: 8px;\n}\n\nhtml[dir='rtl'] .ant-confirm-body .ant-confirm-content {\n margin-right: 42px;\n}\n\nhtml[dir='rtl'] .ant-btn > .anticon + span,\nhtml[dir='rtl'] .ant-btn > span + .anticon {\n margin-right: 0.5em;\n}\n\nhtml[dir='rtl'] .ant-btn-loading span {\n margin-left: 0;\n margin-right: 0.5em;\n}\n\nhtml[dir='rtl']\n .ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline) {\n padding-left: 25px;\n padding-right: 29px;\n}\n\nhtml[dir='rtl']\n .ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline)\n .anticon {\n margin-right: -14px;\n margin-left: 0;\n}\n\n/* Confirm */\n\nhtml[dir='rtl'] .ant-modal.ant-confirm .ant-confirm-body > .anticon {\n margin-left: 16px;\n margin-right: 0;\n float: right;\n}\n\nhtml[dir='rtl'] .ant-modal.ant-confirm .ant-confirm-btns {\n float: left;\n}\n\nhtml[dir='rtl'] .ant-modal.ant-confirm .ant-confirm-btns button + button {\n margin-right: 10px;\n margin-left: 0;\n}\n\n/* Message */\n\nhtml[dir='rtl'] .ant-message .anticon {\n margin-left: 8px;\n margin-right: 0;\n}\n\n/* Pop Confirm */\n\nhtml[dir='rtl'] .ant-popover-message-title {\n padding-right: 20px;\n padding-left: 0;\n}\n\nhtml[dir='rtl'] .ant-popover-buttons {\n text-align: left;\n}\n\n/* Notification */\n\nhtml[dir='rtl']\n .ant-notification-notice-closable\n .ant-notification-notice-message {\n padding-left: 24px;\n padding-right: 0;\n}\n\nhtml[dir='rtl']\n .ant-notification-notice-with-icon\n .ant-notification-notice-message,\nhtml[dir='rtl']\n .ant-notification-notice-with-icon\n .ant-notification-notice-description {\n margin-right: 48px;\n}\n\nhtml[dir='rtl'] .ant-notification-notice-close {\n right: auto;\n left: 16px;\n}\n\nhtml[dir='rtl'] .ant-notification-notice-with-icon {\n left: 0;\n}\n\n/* Dropzone */\n\nhtml[dir='rtl'] .dz-hidden-input {\n display: none;\n}\n\n.topbar-company-dropdown {\n width: 400px;\n}\n\n.topbar-company-dropdown {\n @media only screen and (min-width: 320px) and (max-width: 375px) {\n width: 265px !important;\n }\n @media only screen and (min-width: 374px) and (max-width: 413px) {\n width: 320px !important;\n }\n @media only screen and (min-width: 412px) and (max-width: 414px) {\n width: 355px !important;\n }\n}\n\n.ant-form{\n .ant-checkbox-wrapper{\n font-size: 13px;\n color: #595959;\n line-height: 1.5;\n font-weight: 500;\n } \n \n .ant-form-item-label{\n line-height: inherit;\n \n > label {\n font-size: 13px;\n color: #595959;\n line-height: 1.5;\n font-weight: 500;\n padding: 0;\n margin: 0 0 8px;\n \n &:after {\n display: none !important;\n }\n\n &.ant-form-item-required {\n &:before {\n display: none !important;\n }\n\n &:after {\n display: inline-block !important;\n margin-right: 4px;\n color: #f5222d;\n font-size: 14px;\n font-family: SimSun, sans-serif;\n line-height: 1;\n content: '*';\n }\n }\n }\n }\n \n .ant-form-explain, .ant-form-extra{\n font-size: 13px;\n }\n \n .ant-form-extra{\n font-style: italic; \n }\n \n .flex-fill{\n flex:1;\n }\n \n .action-btn {\n min-width: 4.5rem;\n }\n \n .w-100 {\n width: 100% !important;\n }\n \n .mr-1 {\n margin-right: 0.25rem !important;\n }\n} \n`;\n\nexport default GlobalStyles;\n","import axios from 'axios';\nimport React, { useEffect } from 'react';\nimport { Provider } from 'react-redux';\nimport { PersistGate } from 'redux-persist/integration/react';\n\nimport AppProvider from './AppProvider';\nimport siteConfig from './config/site.config';\nimport { persistor, store } from './redux/store';\nimport whiteLabelingActions from './redux/white-labling/actions';\nimport Routes from './router';\nimport httpService from './shared/library/helpers/interceptors';\nimport setAuthorizationToken from './shared/library/helpers/setAuthorizationToken';\nimport GlobalStyles from './shared/styles/globalStyle';\n\naxios.defaults.baseURL = siteConfig.apiUrl;\n\nconst App = () => {\n useEffect(() => {\n // const accessToken = loadState('accessToken');\n const accessToken = store.getState().Auth?.accessToken;\n setAuthorizationToken(accessToken);\n httpService.interceptor(store);\n store.dispatch(whiteLabelingActions.getWhiteLabeling(window.location.host));\n });\n\n return (\n \n \n \n <>\n \n \n \n \n \n \n );\n};\n\n// Boot()\n// .then(() => App())\n// .catch(error => console.error(error));\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './app';\nimport * as serviceWorker from './serviceWorker';\n\nimport './index.scss';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","const theme = {};\n\ntheme.palette = {\n primary: [\n '#4482FF', // 0: Default\n '#3A78F5', // 1: Darken 4%\n '#3775F2', // 2: Darken 5%\n 'rgba(68, 130, 255, 0.2)', // 3: Fade 20%\n '#4C8AFF', // 4: Lighten 3%\n 'rgba(68, 130, 255, 0.75)', // 5: Fade 75%\n '#6AA8FF', // 6: Lighten 15%\n '#63A1FF', // 7: Lighten 12%\n '#3F7DFA', // 8: Darken 2%\n '#3369e7', // 9: Algolia color\n '#5896FF', // 10: Lighten 8%\n '#2b69e6', // 11:\n '#236cfe', // 12: darken 10%\n '#4d88ff', // 13: Lighten 5%\n ],\n secondary: [\n '#2d3446', // 0: DarkBlue\n '#f1f3f6', // 1: LightBluish\n '#788195', // 2: LightBlue\n '#E4E6E9', // 3: LightBluish Darken 5%\n '#364d79', // 4:\n '#202739', // 5: DarkBlue Darken 5%\n '#f5f6f8', // 6: LighterBluish\n '#e9ebf1', // 7: DarkBluish\n '#F6F8FB', // 8: LighterBluish Lighten 2%\n '#E9EBEE', // 9: LighterBluish Darken 3%\n '#1a1a1a', // 10: Sidebar submenu select,\n '#2A3F54', // 11: Sidebar, SignIn background\n ],\n color: [\n '#FEAC01', // 0: Orange\n '#42299a', // 1: Purple\n '#F75D81', // 2: Pink\n '#7ED321', // 3: LimeGreen\n '#39435f', // 4: BlueShade\n '#FFCA28', // 5: Yellow\n '#F2BD1B', // 6: Yellow Darken 5%\n '#3b5998', // 7: Facebook\n '#344e86', // 8: Facebook Darken 5%\n '#dd4b39', // 9: Google Plus\n '#d73925', // 10: Google Plus Darken 5%\n '#e14615', // 11: Auth0\n '#ca3f13', // 12: Auth0\n '#e0364c', // 13: themeColor--AlizarinCrimson\n ],\n warning: [\n '#ffbf00', // 0: Warning\n ],\n success: [\n '#00b16a', // 0: Success\n ],\n error: [\n '#f64744', // 0: Error\n '#EC3D3A', // 1: Darken 4%\n '#FF5B58', // 2: Lighten 8%\n ],\n grayscale: [\n '#bababa', // 0: GreyShade\n '#c1c1c1', // 1: GreyDark\n '#D8D8D8', // 2: Grey\n '#f1f1f1', // 3: GreyAlt\n '#F3F3F3', // 4: GreyLight\n '#fafafa', // 5: DarkWhite\n '#F9F9F9', // 6: DarkerWhite\n '#fcfcfc', // 7: #fff Darken 1%\n '#eeeeee', // 8:\n '#fbfbfb', // 9:\n '#f5f5f5', // 10:\n '#f7f8f9', // 11: today-highlight-bg\n ],\n text: [\n '#323332', // 0: Heading\n '#595959', // 1: HeadingLight\n '#979797', // 2: Text\n '#797979', // 3: TextDark\n '#6a6c6a', // 4: Heading Lighten 22%\n ],\n border: [\n '#e9e9e9', // 0: Border\n '#d8d8d8', // 1: BorderDark\n '#ebebeb', // 2: BorderLight\n '#d3d3d3', // 3:\n 'rgba(228, 228, 228, 0.65)', // 4:\n ],\n\n calendar: [\n '#905', // 0:\n '#690', // 1:\n '#a67f59', // 2:\n '#07a', // 3:\n '#dd4a68', // 4:\n '#e90', // 5:\n ],\n};\n\ntheme.fonts = {\n primary: 'Roboto, sans-serif',\n pre: 'Consolas, Liberation Mono, Menlo, Courier, monospace',\n};\n\nexport default theme;\n","import defaultTheme from './default';\nimport customTheme from './custom';\n\nconst themes = {\n defaultTheme,\n customTheme,\n};\n\nexport const themeConfig = {\n topbar: 'defaultTheme',\n sidebar: 'defaultTheme',\n layout: 'defaultTheme',\n theme: 'defaultTheme',\n};\nexport default themes;\n","import defaultTheme from './default';\n\nexport default {\n ...defaultTheme,\n palette: {\n primary: ['#f00'],\n secondary: ['#0f0'],\n },\n};\n","import styled from 'styled-components';\nimport { palette } from 'styled-theme';\nimport {\n transition,\n borderRadius,\n boxShadow,\n} from '../../../shared/library/helpers/style_utils';\n\nconst InputWrapper = ComponentName => styled(ComponentName)`\n &.ant-input {\n padding: 4px 10px;\n width: 100%;\n height: 35px;\n cursor: text;\n text-align: ${props => (props['data-rtl'] === 'rtl' ? 'right' : 'left')};\n font-size: 13px;\n line-height: 1.5;\n color: ${palette('text', 1)};\n background-color: #fff;\n background-image: none;\n border: 1px solid ${palette('border', 0)};\n ${borderRadius('4px')};\n ${transition()};\n\n &:focus {\n border-color: ${palette('primary', 0)};\n }\n\n &.ant-input-lg {\n height: 42px;\n padding: 6px 10px;\n }\n\n &.ant-input-sm {\n padding: 1px 10px;\n height: 30px;\n }\n\n &::-webkit-input-placeholder {\n text-align: ${props => (props['data-rtl'] === 'rtl' ? 'right' : 'left')};\n color: ${palette('grayscale', 0)};\n }\n\n &:-moz-placeholder {\n text-align: ${props => (props['data-rtl'] === 'rtl' ? 'right' : 'left')};\n color: ${palette('grayscale', 0)};\n }\n\n &::-moz-placeholder {\n text-align: ${props => (props['data-rtl'] === 'rtl' ? 'right' : 'left')};\n color: ${palette('grayscale', 0)};\n }\n &:-ms-input-placeholder {\n text-align: ${props => (props['data-rtl'] === 'rtl' ? 'right' : 'left')};\n color: ${palette('grayscale', 0)};\n }\n }\n`;\nconst InputGroupWrapper = ComponentName => styled(ComponentName)`\n &.ant-input-group {\n margin-bottom: 10px;\n\n .ant-select-auto-complete {\n margin-right: ${props => (props['data-rtl'] === 'rtl' ? '-1px' : '0')};\n }\n\n .ant-input {\n &:first-child {\n border-radius: ${props =>\n props['data-rtl'] === 'rtl' ? '0 4px 4px 0' : '4px 0 0 4px'};\n }\n }\n\n .ant-input-group-addon:not(:first-child):not(:last-child),\n .ant-input-group-wrap:not(:first-child):not(:last-child),\n > .ant-input:not(:first-child):not(:last-child) {\n padding: 0 7px;\n border-left-width: ${props =>\n props['data-rtl'] === 'rtl' ? '0' : '1px'};\n margin-right: ${props => (props['data-rtl'] === 'rtl' ? '-1px' : '0')};\n }\n\n .ant-input-group-addon {\n padding: 4px 7px;\n font-size: 12px;\n color: ${palette('text', 1)};\n text-align: center;\n background-color: ${palette('grayscale', 4)};\n border: 1px solid ${palette('border', 0)};\n ${transition()};\n\n &:first-child {\n border-right-width: ${props =>\n props['data-rtl'] === 'rtl' ? '1px' : '0'};\n border-left-width: ${props =>\n props['data-rtl'] === 'rtl' ? '0' : '1px'};\n border-radius: ${props =>\n props['data-rtl'] === 'rtl' ? '0 4px 4px 0' : '4px 0 0 4px'};\n }\n\n &:last-child {\n border-right-width: ${props =>\n props['data-rtl'] === 'rtl' ? '0' : '1px'};\n border-left-width: ${props =>\n props['data-rtl'] === 'rtl' ? '1px' : '0'};\n border-radius: ${props =>\n props['data-rtl'] === 'rtl' ? '4px 0 0 4px' : '0 4px 4px 0'};\n }\n\n .ant-select {\n .ant-select-selection {\n background-color: inherit;\n margin: -1px;\n border: 1px solid transparent;\n ${boxShadow()};\n }\n }\n }\n\n .ant-input-group-addon:not(:first-child):not(:last-child),\n .ant-input-group-wrap:not(:first-child):not(:last-child) {\n border-left: 0;\n border-right: 0;\n }\n\n & > .ant-input:not(:first-child):not(:last-child) {\n ${'' /* border-left: 0; */};\n }\n\n .ant-input:first-child:last-child {\n border-radius: 4px;\n }\n\n &.ant-input-group-compact > * {\n border-right-width: ${props =>\n props['data-rtl'] === 'rtl' ? '1px ' : '0'};\n }\n\n &.ant-input-group-compact > .ant-select > .ant-select-selection,\n &.ant-input-group-compact > .ant-calendar-picker .ant-input,\n &.ant-input-group-compact > .ant-select-auto-complete .ant-input,\n &.ant-input-group-compact > .ant-cascader-picker .ant-input,\n &.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor,\n &.ant-input-group-compact > .ant-time-picker .ant-time-picker-input {\n border-right-width: ${props =>\n props['data-rtl'] === 'rtl' ? '1px ' : '0'};\n }\n\n &.ant-input-group-compact > *:first-child,\n &.ant-input-group-compact > .ant-select:first-child > .ant-select-selection,\n &.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input,\n &.ant-input-group-compact\n > .ant-select-auto-complete:first-child\n .ant-input,\n &.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input,\n &.ant-input-group-compact\n > .ant-mention-wrapper:first-child\n .ant-mention-editor,\n &.ant-input-group-compact\n > .ant-time-picker:first-child\n .ant-time-picker-input {\n border-radius: ${props =>\n props['data-rtl'] === 'rtl' ? '0 4px 4px 0' : '4px 0 0 4px'};\n border-left-width: 1px\n ${'' /* border-right-width: ${props =>\n props['data-rtl'] === 'rtl' ? '1px' : '0'}; */};\n }\n\n &.ant-input-group-compact > *:last-child,\n &.ant-input-group-compact > .ant-select:last-child > .ant-select-selection,\n &.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input,\n &.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input,\n &.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input,\n &.ant-input-group-compact\n > .ant-mention-wrapper:last-child\n .ant-mention-editor,\n &.ant-input-group-compact\n > .ant-time-picker:last-child\n .ant-time-picker-input {\n border-radius: ${props =>\n props['data-rtl'] === 'rtl' ? '4px 0 0 4px' : '0 4px 4px 0'};\n border-right-width: ${props =>\n props['data-rtl'] === 'rtl' ? '0 ' : '1px'};\n }\n\n .ant-calendar-picker-clear,\n .ant-calendar-picker-icon {\n right: ${props => (props['data-rtl'] === 'rtl' ? 'inherit' : '8px')};\n left: ${props => (props['data-rtl'] === 'rtl' ? '8px' : 'inherit')};\n }\n }\n\n &.ant-input-group-lg {\n .ant-input,\n > .ant-input-group-addon {\n padding: 6px 10px;\n height: 35px;\n }\n }\n`;\n\nconst TextAreaWrapper = ComponentName => styled(ComponentName)`\n &.ant-input {\n padding: 4px 10px;\n width: 100%;\n height: auto;\n cursor: text;\n font-size: 13px;\n line-height: 1.5;\n color: ${palette('text', 1)};\n background-color: #fff;\n background-image: none;\n border: 1px solid ${palette('border', 0)};\n ${borderRadius('4px')};\n ${transition()};\n\n &:focus {\n border-color: ${palette('primary', 0)};\n }\n\n &::-webkit-input-placeholder {\n color: ${palette('grayscale', 0)};\n }\n\n &:-moz-placeholder {\n color: ${palette('grayscale', 0)};\n }\n\n &::-moz-placeholder {\n color: ${palette('grayscale', 0)};\n }\n &:-ms-input-placeholder {\n color: ${palette('grayscale', 0)};\n }\n }\n`;\n\nconst InputSearchWrapper = ComponentName => styled(ComponentName)`\n &.ant-input-affix-wrapper {\n .ant-input {\n padding: 4px 10px;\n width: 100%;\n height: 35px;\n cursor: text;\n font-size: 13px;\n line-height: 1.5;\n color: ${palette('text', 1)};\n background-color: #fff;\n background-image: none;\n border: 1px solid ${palette('border', 0)};\n ${borderRadius('4px')};\n ${transition()};\n\n &:focus {\n border-color: ${palette('primary', 0)};\n }\n\n &.ant-input-lg {\n height: 42px;\n padding: 6px 10px;\n }\n\n &.ant-input-sm {\n padding: 1px 10px;\n height: 30px;\n }\n\n &::-webkit-input-placeholder {\n color: ${palette('grayscale', 0)};\n }\n\n &:-moz-placeholder {\n color: ${palette('grayscale', 0)};\n }\n\n &::-moz-placeholder {\n color: ${palette('grayscale', 0)};\n }\n &:-ms-input-placeholder {\n color: ${palette('grayscale', 0)};\n }\n }\n\n .ant-input-suffix {\n right: ${props => (props['data-rtl'] === 'rtl' ? 'inherit' : '7px')};\n left: ${props => (props['data-rtl'] === 'rtl' ? '7px' : 'inherit')};\n }\n\n .ant-input-ant-input-prefix {\n right: ${props => (props['data-rtl'] === 'rtl' ? '7px' : 'inherit')};\n left: ${props => (props['data-rtl'] === 'rtl' ? 'inherit' : '7px')};\n }\n\n .ant-input-search-icon {\n color: ${palette('grayscale', 0)};\n\n &:hover {\n color: ${palette('primary', 0)};\n }\n }\n }\n`;\n\nexport { InputWrapper, InputGroupWrapper, InputSearchWrapper, TextAreaWrapper };\n","import { Input } from 'antd';\nimport {\n InputWrapper,\n InputGroupWrapper,\n InputSearchWrapper,\n TextAreaWrapper,\n} from './styles/input.style';\nimport WithDirection from '../../shared/library/helpers/rtl';\nconst { Search, TextArea, Group } = Input;\n\nconst WDStyledInput = InputWrapper(Input);\nconst StyledInput = WithDirection(WDStyledInput);\n\nconst WDInputGroup = InputGroupWrapper(Group);\nconst InputGroup = WithDirection(WDInputGroup);\n\nconst WDInputSearch = InputSearchWrapper(Search);\nconst InputSearch = WithDirection(WDInputSearch);\n\nconst WDTextarea = TextAreaWrapper(TextArea);\nconst Textarea = WithDirection(WDTextarea);\n\nexport default StyledInput;\nexport { InputSearch, InputGroup, Textarea };\n","import styled from 'styled-components';\nimport { palette } from 'styled-theme';\nimport { transition } from '../../../shared/library/helpers/style_utils';\n\nconst Buttons = ComponentName => styled(ComponentName)`\n &.ant-btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: 500;\n text-align: center;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n line-height: 1.5;\n padding: 0 25px;\n font-size: 14px;\n border-radius: 4px;\n height: 36px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n position: relative;\n color: ${palette('text', 1)};\n border-color: ${palette('border', 0)};\n ${transition()};\n\n &:hover {\n border-color: ${palette('primary', 0)};\n color: ${palette('primary', 0)};\n }\n\n > .anticon + span,\n > span + .anticon {\n margin: ${props =>\n props['data-rtl'] === 'rtl' ? '0 0.5em 0 0' : '0 0 0 0.5em'};\n }\n\n .anticon-right {\n transform: ${props =>\n props['data-rtl'] === 'rtl' ? 'rotate(180deg)' : 'rotate(0)'};\n }\n\n .anticon-left {\n transform: ${props =>\n props['data-rtl'] === 'rtl' ? 'rotate(180deg)' : 'rotate(0)'};\n }\n\n &.ant-btn-primary {\n background-color: ${palette('primary', 0)};\n border-color: ${palette('primary', 0)};\n\n &:hover {\n background-color: ${palette('primary', 10)};\n border-color: ${palette('primary', 10)};\n color: #fff;\n }\n }\n\n &.ant-btn-sm {\n padding: 0 15px;\n height: 28px;\n font-size: 12px;\n\n &.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline) {\n padding: ${props =>\n props['data-rtl'] === 'rtl' ? '0 24px 0 15px' : '0 15px 0 24px'};\n .anticon {\n margin: ${props =>\n props['data-rtl'] === 'rtl' ? '0 -17px 0 0' : '0 0 0 -17px'};\n }\n }\n }\n\n &.ant-btn-lg {\n padding: 0 35px;\n font-size: 14px;\n height: 42px;\n }\n\n &.ant-btn-primary {\n color: #ffffff;\n }\n\n &.ant-btn-dashed {\n border-style: dashed;\n border-color: ${palette('border', 1)};\n\n &:hover {\n color: ${palette('primary', 0)};\n border-color: ${palette('primary', 0)};\n }\n }\n\n &.ant-btn-danger {\n background-color: ${palette('error', 0)};\n border-color: ${palette('error', 0)};\n color: #ffffff;\n\n &:hover {\n background-color: ${palette('error', 2)};\n border-color: ${palette('error', 2)};\n }\n\n &.ant-btn-background-ghost {\n color: ${palette('error', 0)};\n background-color: transparent;\n border-color: ${palette('error', 0)};\n\n &:hover {\n color: ${palette('error', 2)};\n border-color: ${palette('error', 2)};\n }\n }\n }\n\n &.ant-btn-circle,\n &.ant-btn-circle-outline {\n width: 35px;\n padding: 0;\n font-size: 14px;\n border-radius: 50%;\n height: 35px;\n\n &.ant-btn-sm {\n padding: 0;\n height: 28px;\n width: 28px;\n font-size: 12px;\n }\n\n &.ant-btn-lg {\n padding: 0;\n font-size: 14px;\n height: 42px;\n width: 42px;\n }\n }\n\n &.ant-btn.disabled,\n &.ant-btn[disabled],\n &.ant-btn.disabled:hover,\n &.ant-btn[disabled]:hover,\n &.ant-btn.disabled:focus,\n &.ant-btn[disabled]:focus,\n &.ant-btn.disabled:active,\n &.ant-btn[disabled]:active,\n &.ant-btn.disabled.active,\n &.ant-btn[disabled].active {\n color: ${palette('grayscale', 2)};\n background-color: #f7f7f7;\n border-color: ${palette('border', 0)};\n cursor: not-allowed;\n }\n\n &.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline)\n .anticon {\n margin: ${props =>\n props['data-rtl'] === 'rtl' ? '0 -14px 0 0' : '0 0 0 -14px'};\n }\n\n &.isoButton {\n display: inline-block;\n margin-bottom: 0;\n font-weight: 500;\n text-align: center;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 0;\n white-space: nowrap;\n line-height: 1.5;\n padding: 0 25px;\n font-size: 13px;\n border-radius: 4px;\n height: 35px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n position: relative;\n color: #ffffff;\n background-color: ${palette('primary', 0)};\n ${transition()};\n\n &:hover {\n background-color: ${palette('primary', 2)};\n }\n\n &.isoBtnSm {\n padding: 0 15px;\n height: 28px;\n font-size: 12px;\n }\n\n &.isoBtnLg {\n padding: 0 35px;\n font-size: 14px;\n height: 42px;\n }\n }\n }\n\n + .ant-btn-group {\n margin-left: ${props =>\n props['data-rtl'] === 'rtl' ? '0' : '-1px'} !important;\n margin-right: ${props =>\n props['data-rtl'] === 'rtl' ? '-1px' : '0'} !important;\n }\n`;\n\nconst RadioButtons = ComponentName => styled(ComponentName)`\n .ant-radio-button-wrapper {\n height: 35px;\n line-height: 33px;\n color: ${palette('text', 1)};\n border: 1px solid ${palette('border', 0)};\n border-left: 0;\n background: #fff;\n padding: 0 20px;\n\n &:hover,\n &.ant-radio-button-wrapper-focused {\n color: ${palette('primary', 0)};\n }\n\n &.ant-radio-button-wrapper-checked {\n background: #fff;\n border-color: ${palette('primary', 0)};\n color: ${palette('primary', 0)};\n box-shadow: -1px 0 0 0 ${palette('primary', 0)};\n }\n }\n`;\n\nconst ButtonsGroup = ComponentName => styled(ComponentName)`\n &.ant-btn-group {\n .ant-btn {\n margin: 0;\n margin-right: 0;\n display: inline-block;\n margin-bottom: 0;\n font-weight: 500;\n text-align: center;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n border-color: ${palette('border', 1)};\n white-space: nowrap;\n line-height: 1.5;\n padding: 0 8px;\n font-size: 14px;\n border-radius: 0;\n height: 36px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n position: relative;\n ${transition()};\n\n &:hover {\n border-color: ${palette('primary', 0)};\n }\n\n &.ant-btn-dashed {\n border-style: dashed;\n\n &:hover {\n border-color: ${palette('primary', 0)};\n }\n }\n\n &.ant-btn-primary {\n border-color: ${palette('primary', 0)};\n\n &:hover {\n border-color: ${palette('primary', 10)};\n }\n }\n }\n\n > .ant-btn:first-child:not(:last-child) {\n border-radius: ${props =>\n props['data-rtl'] === 'rtl' ? '0 4px 4px 0' : '4px 0 0 4px'};\n }\n\n > .ant-btn:last-child:not(:first-child) {\n border-radius: ${props =>\n props['data-rtl'] === 'rtl' ? '4px 0 0 4px' : '0 4px 4px 0'};\n }\n\n .ant-btn-primary:last-child:not(:first-child),\n .ant-btn-primary + .ant-btn-primary {\n border-left-color: ${props =>\n props['data-rtl'] === 'rtl'\n ? palette('primary', 0)\n : palette('primary', 2)};\n border-right-color: ${props =>\n props['data-rtl'] === 'rtl'\n ? palette('primary', 2)\n : palette('primary', 0)};\n }\n\n .ant-btn-primary:first-child:not(:last-child) {\n border-left-color: ${props =>\n props['data-rtl'] === 'rtl'\n ? palette('primary', 2)\n : palette('primary', 0)};\n border-right-color: ${props =>\n props['data-rtl'] === 'rtl'\n ? palette('primary', 0)\n : palette('primary', 2)};\n }\n\n .ant-btn + .ant-btn,\n + .ant-btn {\n margin-left: ${props =>\n props['data-rtl'] === 'rtl' ? '0' : '-1px'} !important;\n margin-right: ${props =>\n props['data-rtl'] === 'rtl' ? '-1px' : '0'} !important;\n }\n\n &.ant-btn-group-lg {\n > .ant-btn {\n padding: 0 35px;\n font-size: 14px;\n height: 42px;\n }\n }\n\n &.ant-btn-group-sm {\n > .ant-btn {\n padding: 0 15px;\n height: 28px;\n font-size: 12px;\n }\n }\n }\n\n &.ant-btn-group + &.ant-btn-group {\n margin-left: ${props =>\n props['data-rtl'] === 'rtl' ? '0' : '-1px'} !important;\n margin-right: ${props =>\n props['data-rtl'] === 'rtl' ? '-1px' : '0'} !important;\n }\n`;\n\nconst GhostButtons = ComponentName => styled(ComponentName)`\n .ant-btn-background-ghost {\n background: transparent !important;\n border-color: #fff;\n color: #fff;\n\n &.ant-btn-primary {\n color: ${palette('primary', 0)};\n background-color: transparent;\n border-color: ${palette('primary', 0)};\n }\n }\n`;\n\nexport { Buttons, ButtonsGroup, RadioButtons, GhostButtons };\n","import { Button } from 'antd';\nimport { Buttons, ButtonsGroup } from './styles/button.style';\nimport WithDirection from '../../shared/library/helpers/rtl';\nconst AntButton = Buttons(Button);\nconst isoButton = WithDirection(AntButton);\nconst AntButtonGroup = ButtonsGroup(Button.Group);\nconst ButtonGroup = WithDirection(AntButtonGroup);\n\nexport default isoButton;\nexport { ButtonGroup };\n","import axios from 'axios';\nimport isIgnoredLoading from 'src/shared/library/helpers/isIgnoredLoading';\n\nconst actions = {\n DASHBOARD_SUCCESS: 'DASHBOARD_SUCCESS',\n DASHBOARD_GET_NODES_SUCCESS: 'DASHBOARD_GET_NODES_SUCCESS',\n DASHBOARD_GET_ALERT_EVENTS_SUCCESS: 'DASHBOARD_GET_ALERT_EVENTS_SUCCESS',\n DASHBOARD_ERROR: 'DASHBOARD_ERROR',\n DASHBOARD_GET_NODES_REQUEST: 'DASHBOARD_GET_NODES_REQUEST',\n\n getDashboardData: () => {\n return dispatch => {\n axios\n .get('/api/dashboard')\n .then(resp => {\n dispatch(success(resp.data));\n })\n .catch(err => {\n dispatch(error(err.message));\n });\n };\n\n function success(data) {\n return { type: actions.DASHBOARD_SUCCESS, data };\n }\n function error(message) {\n return { type: actions.DASHBOARD_ERROR, message };\n }\n },\n\n getDashboardDataById: (companyId) => {\n return dispatch => {\n return axios.get(`/api/dashboard/company/${companyId}`);\n };\n },\n\n getNodesBySiteId: siteId => {\n return dispatch => {\n dispatch({ type: actions.DASHBOARD_GET_NODES_REQUEST });\n return axios.get(`/api/dashboard/${siteId}/nodes`, isIgnoredLoading(true)).then(resp => {\n dispatch({\n type: actions.DASHBOARD_GET_NODES_SUCCESS,\n data: resp.data\n });\n });\n };\n },\n\n getAlertEvents: params => {\n return dispatch => {\n return axios.get('/api/alertevents', { params });\n };\n }\n};\n\nexport default actions;\n"],"sourceRoot":""}