{"version":3,"sources":["services/localStorage.js","services/middleware.js","app/store.js","components/Logo.js","components/FullscreenLoader.js","services/settings.js","features/topics/topicsSlice.js","features/notifications/notificationsSlice.js","theme/global.js","components/ErrorBoundary.js","components/GlobalWrapper.js","components/ScrollToTop.js","App.js","index.js","features/user/userSlice.js","../../../er.js.utils/dist/index.es.js","../../../er.react.ui/dist/index.es.js","theme/theme.js","services/baseQueryWithRefreshTokenAttempt.js","services/api.js","services/utils.js"],"names":["loadLocalStorage","itemKey","serializedState","localStorage","getItem","JSON","parse","error","saveLocalStorage","itemValue","stringify","setItem","console","log","deleteLocalStorage","removeItem","userMiddleware","store","next","action","result","userAuthenticated","match","user","getState","userLoggedOut","clear","isSilentAction","isAsyncThunkAction","showAlert","genericLoaderMiddleware","isPending","dispatch","loadingUpdated","isFulfilled","isRejected","isRejectedWithValue","presistedState","configureStore","reducer","userReducer","notifications","notificationsReducer","topics","topicsReducer","api","reducerPath","devTools","preloadedState","middleware","getDefaultMiddleware","concat","setupListeners","StyledImage","styled","img","height","sm","md","media","Beta","span","theme","font","size","xxs","colors","gray","dark","light","Logo","props","to","srcSet","ROOT","src","alt","StyledDiv","div","white","FullscreenLoader","image","ENTITY","process","API_URL","TEMP_URL","ERROR_URL","CLAIM_TYPES","Admin","Manager","Expert","Observer","ADD_USER_CLAIM_TYPES","title","value","CLAIM_TYPES_NEUTRAL","USERS_TITLES","split","ALLOWED_IMAGE_FORMATS","ALLOWED_FILE_FORMATS","ATTACHMENT_TYPE","file","video","TOPICS_FILTER","ByLatestPost","ByUpvotes","ByHasActiveProposal","ByUnread","VOTING","StronglyAgree","Agree","Neutral","Disagree","StronglyDisagree","initialState","filter","order","space","topicsSlice","createSlice","name","reducers","topicsOrderFilterChanged","state","payload","topicsSpaceFilterChanged","selectTopicsOrderFilter","selectTopicsSpaceFilter","actions","hideAlert","timeout","alert","clearTimeout","alertUpdated","show","createAsyncThunk","a","Promise","resolve","setTimeout","response","notificationsSlice","loading","type","text","extraReducers","builder","addCase","fulfilled","selectLoader","selectAlert","GlobalStyle","createGlobalStyle","black","family","arabic","weight","regular","medium","lg","xl","xxl","bold","Container","StyledLogo","ErrorBoundary","hasError","errorMessage","errorInfo","reportError","this","children","React","Component","withTheme","useDispatch","useSelector","onClick","ScrollToTop","pathname","useLocation","useEffect","window","scrollTo","top","behavior","Public","lazy","ThinkTank","User","Dashboard","App","loader","document","getElementById","parentElement","removeChild","fontFamily","fontWeights","Object","keys","map","prop","join","WebFont","load","google","families","browser","checkSVG","fallback","path","exact","ReactDOM","render","StrictMode","firstName","familyName","gender","picture","token","expiry","claims","userSlice","selectToken","selectTokenExpiry","selectUserClaims","selectUser","e","t","hasOwnProperty","n","freeze","__proto__","implementation","hasFeature","querySelectorAll","forEach","getAttribute","replace","setAttribute","removeAttribute","checkFileUploadDragAndDrop","createElement","o","Date","convertDateToUnix","Math","floor","getTime","convertDateFromUnixToDate","convertDateFromUnixToString","r","toISOString","slice","convertDateFromUnixToLiteralString","toLocaleString","hour12","dateStyle","timeStyle","getDate","month","getFullYear","getCurrentYear","l","c","s","p","gap","splits","d","m","assign","arguments","length","prototype","call","apply","u","input","valid","required","complementary","label","g","h","b","x","f","Fragment","y","toggle","warning","i","note","$","k","w","v","disabled","button","muted","color","secondary","backcolor","hovercolor","hoverbackcolor","E","C","icon","D","small","format","shadow","iconfirst","z","hasIcon","hasLabel","S","F","confirmlabel","confirmicon","onClickCapture","onBlur","className","stopPropagation","T","form","I","L","loadingbar","A","U","N","q","P","Y","G","R","V","B","menu","M","ul","opened","sub","X","li","active","H","submenuborder","J","closed","items","key","links","link","K","Q","width","W","COLORS","primary","lightest","xxxl","xs","success","basic","transparent","attention","side","rating","notice","information","baseQuery","fetchBaseQuery","baseUrl","prepareHeaders","headers","set","baseQueryWithRefreshTokenAttempt","args","extraOptions","status","url","method","credentials","body","refreshResult","data","updateUserState","createApi","keepUnusedDataFor","refetchOnMountOrArgChange","tagTypes","endpoints","authenticate","mutation","query","refreshToken","expiredToken","vertifyToken","verifyEmail","email","transformResponse","register","registration","requestPasswordReset","reset","passwordReset","getUserProfile","providesTags","editUserProfile","profile","invalidatesTags","confirmEmail","confirmation","getUsers","id","getUser","addUser","editUser","deleteUser","toggleUserActivation","removeUserPicture","getEntities","getEntity","getEntityExperts","addEntity","entity","editEntity","verifyEntityStringID","entityID","toggleEntityActivation","toggleEntityRegistration","getSpaces","getSpacesByEntity","getSpace","addSpace","editSpace","deleteSpace","verifySpaceStringID","spaceID","addTopic","topic","topicId","getTopic","getTopics","getTopicLogs","getTopicActiveProposal","upvote","parentId","endDate","topicDiscussionEndDate","assignexpert","topicAssignedExpert","addOpinion","opinion","logId","postID","addProposal","proposal","vote","arg","useAuthenticateMutation","useRefreshTokenMutation","useVerifyEmailMutation","useVertifyTokenMutation","useRegisterMutation","useRequestPasswordResetMutation","useResetMutation","useGetUserProfileQuery","useEditUserProfileMutation","useConfirmEmailMutation","useGetUsersQuery","useGetUserQuery","useAddUserMutation","useEditUserMutation","useToggleUserActivationMutation","useRemoveUserPictureMutation","useDeleteUserMutation","useGetEntitiesQuery","useGetEntityQuery","useGetEntityExpertsQuery","useAddEntityMutation","useEditEntityMutation","useVerifyEntityStringIDMutation","useToggleEntityActivationMutation","useToggleEntityRegistrationMutation","useGetSpacesQuery","useGetSpacesByEntityQuery","useGetSpaceQuery","useAddSpaceMutation","useLazyGetSpaceQuery","useEditSpaceMutation","useDeleteSpaceMutation","useVerifySpaceStringIDMutation","useAddTopicMutation","useGetTopicQuery","useGetTopicsQuery","useGetTopicLogsQuery","useGetTopicActiveProposalQuery","useUpvoteMutation","useEndDateMutation","useAssignexpertMutation","useAddOpinionMutation","useAddProposalMutation","useVoteMutation","jwt_decode","given_name","family_name","exp","userHasClaims","allowClaims","userClaims","some","includes","userDoesntHaveClaims","denyClaims","getImageThumbnailName","imageName","lastIndexOf","downloadImage","userToken","callback","request","XMLHttpRequest","addEventListener","target","imageURL","URL","createObjectURL","responseType","open","setRequestHeader","send","errorType","fetch","message","componentStack"],"mappings":"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","file":"static/js/main.d95b453f.chunk.js","sourcesContent":["export const loadLocalStorage = (itemKey) => {\n try {\n const serializedState = localStorage.getItem(itemKey);\n if (serializedState === null) {\n return undefined;\n }\n return JSON.parse(serializedState);\n } catch (error) {\n return undefined;\n }\n};\n\nexport const saveLocalStorage = (itemKey, itemValue) => {\n try {\n const serializedState = JSON.stringify(itemValue);\n localStorage.setItem(itemKey, serializedState);\n } catch (error) {\n console.log(\"An error occured when serializing object.\");\n }\n};\n\nexport const deleteLocalStorage = (itemKey) => {\n try {\r\n localStorage.removeItem(itemKey);\r\n } catch (error) {}\r\n}","import { userAuthenticated, userLoggedOut } from \"../features/user/userSlice\";\nimport { saveLocalStorage } from \"./localStorage\";\nimport {\n isAsyncThunkAction,\n isPending,\n isFulfilled,\n isRejected,\n isRejectedWithValue,\n} from \"@reduxjs/toolkit\";\nimport { loadingUpdated, showAlert } from \"../features/notifications/notificationsSlice\";\n\n// https://stackoverflow.com/questions/68421040/local-storage-using-redux-toolkit\n// https://redux.js.org/understanding/history-and-design/middleware\nexport const userMiddleware = (store) => (next) => (action) => {\n // https://redux.js.org/understanding/history-and-design/middleware#seven-examples\n let result = next(action);\n\n // update presisted state if the user logged in\n if (userAuthenticated.match(action)) {\n saveLocalStorage(\"state\", {\n user: store.getState().user,\n });\n }\n\n // clear the local storage if the user logged out\n if (userLoggedOut.match(action)) {\n localStorage.clear();\n }\n\n return result;\n};\n\n// Thunks/Actions that should not show a loader\n// https://redux-toolkit.js.org/api/matching-utilities#isasyncthunkaction\nconst isSilentAction = isAsyncThunkAction(showAlert);\n// centralized place to show/hide loaders when a no-slient api request is made\n// https://redux-toolkit.js.org/rtk-query/usage/error-handling\nexport const genericLoaderMiddleware = (store /*api*/) => (next) => (action) => {\n if (!isSilentAction(action)) {\n if (isPending(action)) {\n store.dispatch(loadingUpdated(true));\n }\n if (isFulfilled(action) || isRejected(action) || isRejectedWithValue(action)) {\n store.dispatch(loadingUpdated(false));\n }\n }\n\n return next(action);\n};\n\n//// https://redux-toolkit.js.org/rtk-query/usage/error-handling#handling-errors-at-a-macro-level\n//export const errorMiddleware = (store) => (next) => (action) => {\n// if (isRejected(action) && action.payload) {\n// console.log(action);\n// console.log(action.payload);\n// }\n\n// return next(action);\n//};\n","import { configureStore } from \"@reduxjs/toolkit\";\n// import counterReducer from \"../features/counter/counterSlice\";\nimport userReducer from \"../features/user/userSlice\";\nimport notificationsReducer from \"../features/notifications/notificationsSlice\";\nimport topicsReducer from \"../features/topics/topicsSlice\";\nimport { api } from \"../services/api\";\nimport { setupListeners } from \"@reduxjs/toolkit/query\";\nimport { loadLocalStorage /*saveState*/ } from \"../services/localStorage\";\nimport {\n genericLoaderMiddleware,\n userMiddleware /*, errorMiddleware*/,\n} from \"../services/middleware\";\n\nconst presistedState = loadLocalStorage(\"state\");\n\n// https://redux-toolkit.js.org/api/configureStore\nexport const store = configureStore({\n reducer: {\n // counter: counterReducer,\n user: userReducer,\n notifications: notificationsReducer,\n topics: topicsReducer,\n [api.reducerPath]: api.reducer,\n },\n devTools: process.env.NODE_ENV === \"production\" ? false : true,\n preloadedState: presistedState,\n // Adding the api middleware enables caching, invalidation, polling,\n // and other useful features of `rtk-query`.\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware()\n .concat(api.middleware)\n .concat(genericLoaderMiddleware)\n .concat(userMiddleware),\n // .concat(errorMiddleware),\n});\n\n// https://egghead.io/lessons/javascript-redux-persisting-the-state-to-the-local-storage\n// Used middleware based on the action type instead\n//store.subscribe(() => {\n// saveState({\n// user: store.getState().user,\n// });\n//});\n\n// optional, but required for refetchOnFocus/refetchOnReconnect behaviors\n// see `setupListeners` docs - takes an optional callback as the 2nd arg for customization\nsetupListeners(store.dispatch);\n","import React from \"react\";\nimport { ROOT } from \"../services/settings\";\nimport { media } from \"er.js.utils\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\n\nconst StyledImage = styled.img`\n transition: ease-in-out 0.2s;\n display: block;\n width: auto;\n height: ${({ height }) => (height.sm ? height.sm : height.md ?? height)}px;\n\n ${media(\"md\")} {\n height: ${({ height }) => (height.md ? height.md : height)}px;\n }\n`;\n\nconst Beta = styled.span`\n font-size: ${({ theme }) => theme.font.size.xxs};\n display: block;\n margin: 0 auto;\n color: ${({ theme }) => theme.colors.gray.dark};\n background-color: ${({ theme }) => theme.colors.gray.light};\n border-radius: 2px;\n padding: 1px 5px;\n margin-top: 5px;\n text-align: center;\n`;\n\nconst Logo = (props) => {\n return (\n \n \n نسخة تجريبية\n \n );\n};\n\nexport default Logo;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { LoadingImage } from \"er.react.ui\";\nimport { ROOT } from \"../services/settings\";\n\nconst StyledDiv = styled.div`\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n position: absolute;\n background-color: ${({ theme }) => theme.colors.white};\n z-index: 5000;\n`;\n\nconst FullscreenLoader = () => {\n return (\n \n \n \n );\n};\n\nexport default FullscreenLoader;\n","// entity name\nexport const ENTITY = \"HCSR\";\n\n// root URL of the client\nexport const ROOT = process.env.PUBLIC_URL;\n\n// root URL of the API\n//export const ROOT_URL =\n// process.env.NODE_ENV === \"production\" ? \"https://localhost:44302\" : \"https://localhost:44302\";\n\n// root URL of the API\nexport const ROOT_URL =\n process.env.NODE_ENV === \"production\" ? \"https://www.nekash.com\" : \"https://localhost:44302\";\n\n// api url\nexport const API_URL = `${ROOT_URL}/api/`;\n\n// temp url\nexport const TEMP_URL = `${API_URL}attachments/${ENTITY}/temp/`;\n\n// errors reporting url\nexport const ERROR_URL = `${API_URL}errors/report`;\n\n// user claim types (for authentication)\nexport const CLAIM_TYPES = {\n Admin: \"ManagerSystem\",\n Manager: `Manager${ENTITY}`,\n Expert: `Expert${ENTITY}`,\n Observer: `Observer${ENTITY}`,\n};\n\n// user claim types (for adding users)\nexport const ADD_USER_CLAIM_TYPES = [\n { title: \"مدير نظام\", value: \"Manager,System\" },\n { title: \"رئيس هيئة\", value: `Manager,${ENTITY}` },\n { title: \"خبير\", value: `Expert,${ENTITY}` },\n { title: \"مراقب\", value: `Observer,${ENTITY}` },\n];\n\n// user claim types (for list)\nexport const CLAIM_TYPES_NEUTRAL = [\n { title: \"مدير نظام\", value: \"ManagerSystem\" },\n { title: \"رئيس هيئة\", value: \"Manager\" },\n { title: \"خبير\", value: \"Expert\" },\n { title: \"مراقب\", value: \"Observer\" },\n];\n\n// allowed characters in username\nexport const USERNAME_ALLOWED_CHARS =\n \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+\".split(\"\");\n\n// users titles\nexport const USERS_TITLES = [\n \"الآنسة\",\n \"السيدة\",\n \"السيد\",\n \"الأستاذة\",\n \"الأستاذ\",\n \"الدكتورة\",\n \"الدكتور\",\n \"المهندسة\",\n \"المهندس\",\n \"القاضية\",\n \"القاضي\",\n \"المحامية\",\n \"المحامي\",\n \"المستشارة\",\n \"المستشار\",\n];\n\n// https://www.iana.org/assignments/media-types/media-types.xhtml\n// allowed images and files formats\nexport const ALLOWED_IMAGE_FORMATS = \"image/jpeg, image/png, image/bmp, image/tiff\";\nexport const ALLOWED_FILE_FORMATS = \".pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .dwg, .zip, .rar\";\n\nexport const ATTACHMENT_TYPE = {\n image: 1,\n file: 2,\n video: 3,\n};\n\nexport const TOPICS_FILTER = {\n ByLatestPost: 1,\n ByUpvotes: 2,\n ByHasActiveProposal: 3,\n ByUnread: 4,\n};\n\nexport const VOTING = {\n StronglyAgree: {\n title: \"موافق بشدّة\",\n value: 5,\n },\n Agree: {\n title: \"موافق\",\n value: 4,\n },\n Neutral: {\n title: \"حيادي\",\n value: 3,\n },\n Disagree: {\n title: \"معارض\",\n value: 2,\n },\n StronglyDisagree: {\n title: \"معارض بشدّة\",\n value: 1,\n },\n};\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { TOPICS_FILTER } from \"../../services/settings\";\n\nconst initialState = {\n filter: {\n order: TOPICS_FILTER.ByLatestPost,\n space: null,\n },\n};\n\nconst topicsSlice = createSlice({\n name: \"topics\",\n initialState,\n reducers: {\n topicsOrderFilterChanged(state, action) {\n state.filter.order = action.payload;\n },\n topicsSpaceFilterChanged(state, action) {\n state.filter.space = action.payload;\n },\n },\n});\n\nexport const selectTopicsOrderFilter = (state) => state.topics.filter.order;\nexport const selectTopicsSpaceFilter = (state) => state.topics.filter.space;\n\nexport const { topicsOrderFilterChanged, topicsSpaceFilterChanged } = topicsSlice.actions;\n\nexport default topicsSlice.reducer;\n","import { createSlice, createAsyncThunk } from \"@reduxjs/toolkit\";\n// import { theme } from \"../../theme/theme\";\n\nconst initialState = {\n loading: false,\n alert: {\n timeout: null,\n type: \"error\",\n show: false,\n // color: theme.colors.white,\n // backcolor: theme.colors.complementary,\n text: \"\",\n },\n};\n\n// https://stackoverflow.com/questions/64850725/reactjs-and-redux-toolkit-can-i-use-createasyncthunk-to-execute-non-async-s\nexport const hideAlert = () => (dispatch, getState) => {\n // clear the timeout if it exists\n const timeout = getState().notifications.alert.timeout;\n timeout && clearTimeout(timeout);\n\n dispatch(\n alertUpdated({\n show: false,\n })\n );\n};\n\n// https://github.com/reduxjs/redux-toolkit/issues/773\n// https://redux-toolkit.js.org/api/createAsyncThunk#payloadcreator\nexport const showAlert = createAsyncThunk(\n \"notifications/showAlert\",\n async (payload, { dispatch, getState } /* instead of thunkAPI*/) => {\n // hide alert after 5 seconds\n const response = await new Promise((resolve) => {\n var timeout = getState().notifications.alert.timeout;\n\n // clear the timeout if it exists\n timeout && clearTimeout(timeout);\n\n // set a new timeout\n timeout = setTimeout(() => resolve(), 5000);\n\n // show alert\n dispatch(\n alertUpdated({\n ...payload,\n timeout,\n })\n );\n });\n\n // return fulfilled/rejected\n return response;\n }\n);\n\nconst notificationsSlice = createSlice({\n name: \"notifications\",\n initialState,\n reducers: {\n loadingUpdated(state, action) {\n state.loading = action.payload;\n },\n alertUpdated(state, action) {\n state.alert = {\n ...state.alert,\n ...action.payload,\n };\n\n // extra option to prepare the received payload before updating state\n // https://redux.js.org/tutorials/essentials/part-4-using-data#preparing-action-payloads\n },\n },\n extraReducers: (builder) => {\n builder.addCase(showAlert.fulfilled, (state) => {\n state.alert.show = false;\n });\n },\n});\n\n// selectors\nexport const selectLoader = (state) => state.notifications.loading;\nexport const selectAlert = (state) => state.notifications.alert;\n\n// export actions\nexport const { loadingUpdated, alertUpdated } = notificationsSlice.actions;\n\nexport default notificationsSlice.reducer;\n","import { createGlobalStyle } from \"styled-components\";\nimport { media } from \"er.js.utils\";\n\nexport const GlobalStyle = createGlobalStyle`\n html, body, div, span, applet, object, iframe,\n h1, h2, h3, h4, h5, h6, p, blockquote, pre,\n a, abbr, acronym, address, big, cite, code,\n del, dfn, em, img, ins, kbd, q, s, samp,\n small, strike, strong, sub, sup, tt, var,\n b, u, i, center,\n dl, dt, dd, ol, ul, li,\n fieldset, form, label, legend,\n table, caption, tbody, tfoot, thead, tr, th, td,\n article, aside, canvas, details, embed,\n figure, figcaption, footer, header, hgroup,\n menu, nav, output, ruby, section, summary,\n time, mark, audio, video {\n margin: 0;\n padding: 0;\n border: 0;\n font: inherit;\n font-size: 100%;\n line-height: normal;\n vertical-align: baseline;\n }\n\n * {\n box-sizing: border-box !important;\n outline: none;\n }\n\n html {\n scroll-behavior: smooth;\n }\n\n body {\n margin: 0 auto;\n color: ${({ theme }) => theme.colors.black};\n background-color: ${({ theme }) => theme.colors.white};\n font-family: '${({ theme }) => theme.font.family.arabic}', sans-serif;\n font-size: 100%;\n font-weight: ${({ theme }) => theme.font.weight.regular};\n direction: rtl;\n }\n\n h1, h2, h3 h4, h5, h6 {\n font-weight: ${({ theme }) => theme.font.weight.medium};\n }\n\n h1 {\n font-size: ${({ theme }) => theme.font.size.lg};\n\n ${media(\"md\")} {\n font-size: ${({ theme }) => theme.font.size.xl};\n }\n\n ${media(\"lg\")} {\n font-size: ${({ theme }) => theme.font.size.xxl};\n }\n }\n\n h2 {\n font-size: ${({ theme }) => theme.font.size.xl};\n }\n\n h3 {\n font-size: ${({ theme }) => theme.font.size.lg};\n }\n\n h4 {\n font-size: ${({ theme }) => theme.font.size.md};\n }\n\n h5 {\n font-size: ${({ theme }) => theme.font.size.md};\n }\n\n h6 {\n font-size: ${({ theme }) => theme.font.size.md};\n }\n\n a {\n color: inherit;\n text-decoration: none;\n }\n\n input,\n textarea,\n select,\n button {\n font-family: ${({ theme }) => theme.font.family.arabic}, Tahoma, sans-serif;\n font-size: ${({ theme }) => theme.font.size.md};\n\n ::placeholder{\n color: ${({ theme }) => theme.colors.gray.medium};\n }\n }\n\n b, strong {\n font-weight: ${({ theme }) => theme.font.weight.bold};\n }\n\n small {\n font-size: ${({ theme }) => theme.font.size.sm};\n }\n\n svg {\n display: inline-block;\n vertical-align: middle;\n }\n\n ul {\n list-style: none;\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { reportError } from \"../services/utils\";\r\nimport Logo from \"./Logo\";\n\nconst Container = styled.div`\n position: absolute;\n width: 100%;\n height: 100px;\n top: 0;\n bottom: 0;\n margin: auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 20px;\n`;\n\nconst StyledLogo = styled(Logo)`\n margin-top: 20px;\n`;\n\nexport default class ErrorBoundary extends React.Component {\n // https://reactjs.org/docs/error-boundaries.html\n\n constructor(props) {\n super(props);\n this.state = {\n hasError: false,\n errorMessage: \"\",\n };\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error, errorInfo) {\n // You can also log the error to an error reporting service\n // logErrorToMyService(error, errorInfo);\n reportError(error, errorInfo);\n // console.log(error.message);\n }\n\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n \n

حصل خطأ في الاتصال بالمخدم، الرجاء إعادة تحميل الصفحة.

\n

يمكن أن يكون ذلك بسبب عطل في الاتصال بالانترنت أو خطأ ما في المخدم.

\n \n
\n );\n }\n\n return this.props.children;\n }\n}\n","import React from \"react\";\nimport { withTheme } from \"styled-components\";\nimport { LoadingBar, Alert } from \"er.react.ui\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { selectLoader, selectAlert } from \"../features/notifications/notificationsSlice\";\nimport { hideAlert } from \"../features/notifications/notificationsSlice\";\n\nconst GlobalWrapper = ({ theme, children }) => {\n const dispatch = useDispatch();\n\n const loading = useSelector(selectLoader);\n const alert = useSelector(selectAlert);\n\n return (\n <>\n \n {\n dispatch(hideAlert());\n }}\n />\n {children}\n \n );\n};\n\nexport default withTheme(GlobalWrapper);\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\n// https://reactrouter.com/web/guides/scroll-restoration\n\nexport default function ScrollToTop() {\n const { pathname } = useLocation();\n\n useEffect(() => {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo\n window.scrollTo({\n top: 0,\n behavior: \"instant\",\n });\n }, [pathname]);\n\n return null;\n}\n","import React, { useEffect, Suspense, lazy } from \"react\";\nimport { ThemeProvider } from \"styled-components\";\nimport { theme } from \"./theme/theme\";\nimport { GlobalStyle } from \"./theme/global\";\nimport WebFont from \"webfontloader\";\nimport { browser } from \"er.js.utils\";\nimport FullscreenLoader from \"./components/FullscreenLoader\";\nimport ErrorBoundary from \"./components/ErrorBoundary\";\nimport GlobalWrapper from \"./components/GlobalWrapper\";\n\n// https://reactrouter.com/web/guides/quick-start\nimport { BrowserRouter, Redirect, Route, Switch } from \"react-router-dom\";\nimport ScrollToTop from \"./components/ScrollToTop\";\n\n// code splitting: https://reactjs.org/docs/code-splitting.html\n// artifical delay to test the suspense loader\n//const Authenticator = lazy(() => {\n// return new Promise((resolve) => {\n// setTimeout(() => resolve(import(\"./features/user/Auhtenticator\")), 5000);\n// });\n//});\n\n// This will automatically load the bundle containing a Component when this component is first rendered.\nconst Public = lazy(() => import(\"./components/Public\"));\nconst ThinkTank = lazy(() => import(\"./components/ThinkTank\"));\nconst User = lazy(() => import(\"./features/user/User\"));\nconst Dashboard = lazy(() => import(\"./components/Dashboard\"));\n\nfunction App() {\n // remove loader when everything is ready\n useEffect(() => {\n const loader = document.getElementById(\"loader\");\n loader.parentElement.removeChild(loader);\n });\n\n // load the web fonts using webfontloader\n // https://github.com/typekit/webfontloader#google\n useEffect(() => {\n const fontFamily = theme.font.family.arabic;\n const fontWeights = Object.keys(theme.font.weight)\n .map((prop) => theme.font.weight[prop])\n .join(\",\");\n\n WebFont.load({\n google: {\n families: [`${fontFamily}:${fontWeights}:arabic,latin`], // added arabic first\n },\n });\n }, []); // [] means that the effect will only run once\n\n useEffect(() => {\n browser.checkSVG();\n });\n\n return (\n \n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import \"react-app-polyfill/ie11\"; // ie11 support\nimport \"react-app-polyfill/stable\"; // add support to functions like Array.find()\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport { store } from \"./app/store\";\nimport { Provider } from \"react-redux\";\n// import * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\n// serviceWorker.unregister();\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nconst initialState = {\n firstName: \"\",\n familyName: \"\",\n gender: \"\",\n picture: \"\",\n token: \"\",\n expiry: \"\",\n claims: [],\n};\n\nconst userSlice = createSlice({\n name: \"user\",\n initialState,\n reducers: {\n userAuthenticated(state, action) {\n // https://redux-toolkit.js.org/usage/immer-reducers#resetting-and-replacing-state\n return action.payload;\n },\n userLoggedOut(state) {\n return initialState;\n },\n },\n});\n\n// selector to select the user state\nexport const selectToken = (state) => state.user.token;\nexport const selectTokenExpiry = (state) => state.user.expiry;\nexport const selectUserClaims = (state) => state.user.claims;\nexport const selectUser = (state) => state.user;\n\n// export actions\nexport const { userAuthenticated, userLoggedOut } = userSlice.actions;\n\nexport default userSlice.reducer;\n","const e={sm:\"600px\",md:\"769px\",lg:\"992px\",xl:\"1200px\"},t=t=>{if(e.hasOwnProperty(t))return`@media (min-width: ${e[t]})`};var r=Object.freeze({__proto__:null,media:t});var n=Object.freeze({__proto__:null,checkSVG:()=>{if(document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#Image\",\"1.1\")){document.querySelectorAll('img[data-process=\"png\"]').forEach((e=>{let t=e.getAttribute(\"src\").replace(\".png\",\".svg\");e.setAttribute(\"src\",t),e.removeAttribute(\"srcset\")}))}},checkFileUploadDragAndDrop:function(){var e=document.createElement(\"div\");return(\"draggable\"in e||\"ondragstart\"in e&&\"ondrop\"in e)&&\"FormData\"in window&&\"FileReader\"in window}});const o=(e,t=!0)=>(t&&(e*=1e3),new Date(e));var a=Object.freeze({__proto__:null,convertDateToUnix:(e=null,t=!0)=>(e=e?new Date(e):new Date,t?Math.floor(e.getTime()/1e3):e.getTime()),convertDateFromUnixToDate:o,convertDateFromUnixToString:(e,t=!1,r=!0)=>{let n=r?new Date(1e3*e):new Date(e);return t?n.toISOString().slice(0,10).replace(/-/g,\"/\"):n.toISOString().slice(0,10)},convertDateFromUnixToLiteralString:(e,t=\"en-uk\",r=!1)=>{var n=o(e);return r?n.toLocaleString(t,{hour12:!0,dateStyle:\"short\",timeStyle:\"short\"}):`${n.getDate()} ${n.toLocaleString(t,{month:\"long\"})} ${n.getFullYear()}`},getCurrentYear:()=>(new Date).getFullYear()});export{n as browser,r as css,a as dates,t as media};\n","import e,{useState as t,useEffect as o}from\"react\";import n,{withTheme as r,keyframes as i}from\"styled-components\";import{Link as a}from\"react-router-dom\";const l={sm:\"600px\",md:\"769px\",lg:\"992px\",xl:\"1200px\"},c=e=>{if(l.hasOwnProperty(e))return`@media (min-width: ${l[e]})`};Object.freeze({__proto__:null,media:c}),Object.freeze({__proto__:null,checkSVG:()=>{document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#Image\",\"1.1\")&&document.querySelectorAll('img[data-process=\"png\"]').forEach((e=>{let t=e.getAttribute(\"src\").replace(\".png\",\".svg\");e.setAttribute(\"src\",t),e.removeAttribute(\"srcset\")}))},checkFileUploadDragAndDrop:function(){var e=document.createElement(\"div\");return(\"draggable\"in e||\"ondragstart\"in e&&\"ondrop\"in e)&&\"FormData\"in window&&\"FileReader\"in window}});const s=(e,t=!0)=>(t&&(e*=1e3),new Date(e));Object.freeze({__proto__:null,convertDateToUnix:(e=null,t=!0)=>(e=e?new Date(e):new Date,t?Math.floor(e.getTime()/1e3):e.getTime()),convertDateFromUnixToDate:s,convertDateFromUnixToString:(e,t=!1,o=!0)=>{let n=o?new Date(1e3*e):new Date(e);return t?n.toISOString().slice(0,10).replace(/-/g,\"/\"):n.toISOString().slice(0,10)},convertDateFromUnixToLiteralString:(e,t=\"en-uk\",o=!1)=>{var n=s(e);return o?n.toLocaleString(t,{hour12:!0,dateStyle:\"short\",timeStyle:\"short\"}):`${n.getDate()} ${n.toLocaleString(t,{month:\"long\"})} ${n.getFullYear()}`},getCurrentYear:()=>(new Date).getFullYear()});const p=n.div`\n // width: 100%;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: stretch;\n\n > * {\n margin: ${({gap:e})=>`${e}px 0 ${e}px 0`};\n }\n\n > :first-child {\n margin-block-start: 0;\n }\n\n > :last-child {\n margin-block-end: 0;\n }\n\n ${({splits:e})=>e.split(\",\").map(((e,t)=>`> :nth-child(${t+1}) { \\n flex-grow: ${e};\\n flex-basis: ${e}%;\\n min-width: 0; // this is added to support text truncate\\n }`))}\n\n ${c(\"md\")} {\n flex-direction: row;\n\n > * {\n margin: ${({gap:e})=>`0 ${e}px 0 ${e}px`};\n }\n\n > :first-child {\n margin-inline-start: 0;\n }\n\n > :last-child {\n margin-inline-end: 0;\n }\n }\n`,d=t=>e.createElement(p,t,t.children);function m(){return(m=Object.assign||function(e){for(var t=1;to?t?\"0\":`1px solid ${e.colors.complementary}`:\"0\"};\n height: ${({type:e})=>\"textarea\"!==e&&\"40px\"};\n margin-top: ${({label:e})=>e&&\"5px\"};\n`,g=n.span`\n position: absolute;\n z-index: 40;\n //inset-inline-end: 0;\n top: 0;\n left: 0;\n cursor: pointer;\n`,h=n.label`\n position: relative;\n display: flex;\n flex-direction: column;\n white-space: nowrap;\n`,b=n.p`\n padding: 2px 5px;\n border-radius: 5px;\n font-size: smaller;\n font-style: italic;\n background-color: ${({theme:e})=>e.colors.complementary};\n color: ${({theme:e})=>e.colors.white};\n margin-top: 5px;\n`,x=n.p`\n font-size: smaller;\n margin-top: 5px;\n`,f=({label:t,children:o})=>t?e.createElement(h,null,t,o):e.createElement(e.Fragment,null,o),y=({toggle:o,type:n,warning:r,note:i,...a})=>{const[l,c]=t(0),[s,p]=t(n);return e.createElement(f,a,o&&o.length>0&&e.createElement(g,{onClick:()=>{c(l?0:1),p(\"password\"===n&&l?\"password\":\"text\")}},o[l]),e.createElement(u,m({type:s},a)),r&&e.createElement(b,null,r),i&&e.createElement(x,null,i))};r(y);const $=n.label`\n display: flex;\n flex-direction: row;\n\n > span {\n white-space: nowrap;\n }\n`,k=n.input`\n width: 20px;\n height: 20px;\n margin: 0 5px;\n flex-shrink: 0;\n`,w=t=>e.createElement($,t,e.createElement(k,m({type:\"checkbox\"},t)),e.createElement(\"span\",null,t.label)),v=n.label`\n // font-size: smaller;\n display: inline-flex;\n align-items: center;\n border-radius: 5px;\n padding: 7.5px;\n border: ${({theme:e,valid:t,required:o})=>o?t?\"0\":`2px solid ${e.colors.complementary}`:\"0\"};\n margin: 5px 0;\n cursor: pointer;\n color: ${({theme:e,disabled:t})=>t?e.button.muted.color:e.button.secondary.color};\n background-color: ${({theme:e,disabled:t})=>t?e.button.muted.backcolor:e.button.secondary.backcolor};\n\n &:hover:not([disabled]) {\n color: ${({theme:e})=>e.button.secondary.hovercolor};\n background-color: ${({theme:e})=>e.button.secondary.hoverbackcolor};\n }\n\n &:disabled,\n &[disabled] {\n cursor: not-allowed;\n }\n\n > * {\n margin-inline-start: 5px;\n }\n`,E=n.p`\n font-size: smaller;\n text-align: center;\n`,C=t=>e.createElement(e.Fragment,null,e.createElement(v,t,t.label,\" \",t.icon,t.children),e.createElement(E,null,t.note)),D=n.button`\n transition: ease-in-out 0.2s;\n border: 0;\n cursor: pointer;\n display: flex;\n padding: ${({small:e,icon:t,label:o})=>e?\"7.5px 5px;\":t&&\"\"===o?\"12.5px\":\"12.5px 20px\"};\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n color: ${({theme:e,format:t=\"secondary\",disabled:o})=>!o&&e.button[t].color};\n background-color: ${({theme:e,format:t=\"secondary\",disabled:o})=>!o&&e.button[t].backcolor};\n box-shadow: none;\n position: relative;\n font-weight: ${({theme:e})=>e.font.weight.medium};\n\n @media (hover: hover) {\n &:hover:enabled,\n &:hover:not([disabled]) {\n box-shadow: ${({theme:e,format:t=\"secondary\"})=>e.button[t].shadow};\n color: ${({theme:e,format:t=\"secondary\",disabled:o})=>!o&&e.button[t].hovercolor};\n background-color: ${({theme:e,format:t=\"secondary\",disabled:o})=>!o&&e.button[t].hoverbackcolor};\n }\n }\n\n &:active:enabled {\n top: ${({theme:e,format:t=\"secondary\"})=>e.button[t].shadow&&\"1px\"};\n box-shadow: none;\n }\n\n &:disabled,\n &[disabled] {\n cursor: not-allowed;\n }\n\n > span:first-child {\n order: ${({iconfirst:e})=>e?\"2\":\"1\"};\n flex: 0 1 auto;\n vertical-align: middle;\n line-height: 100%;\n // text-align: start;\n }\n`,z=n.span`\n margin-inline-start: ${({hasIcon:e,hasLabel:t,iconfirst:o})=>o?\"0\":t&&e?\"5px\":\"0\"};\n margin-inline-end: ${({hasIcon:e,hasLabel:t,iconfirst:o})=>o&&t&&e?\"5px\":\"0\"};\n display: flex;\n align-items: center;\n justify-content: center;\n order: ${({iconfirst:e})=>e?\"1\":\"2\"};\n`,S=t=>e.createElement(D,t,e.createElement(\"span\",null,t.label),e.createElement(z,{hasIcon:t.icon,hasLabel:void 0!==t.label&&\"\"!==t.label,iconfirst:t.iconfirst},t.icon)),F=({confirmlabel:o,confirmicon:n,label:r,icon:i,...a})=>{const[l,c]=t(!1);return l?e.createElement(S,m({},a,{onClick:e=>{a.onClick&&(a.onClick(e),c(!1))},onClickCapture:e=>{a.onClickCapture&&(a.onClickCapture(e),c(!1))},onBlur:()=>{c(!1)},label:o,icon:n})):e.createElement(S,{className:a.className,onClick:e=>{e.stopPropagation(),c(!0)},type:a.type,label:r,icon:i,format:a.format,small:a.small})},_=n.form`\n padding: 15px;\n border-radius: 10px;\n background-color: ${({theme:e})=>e.form.backcolor};\n\n ${c(\"md\")} {\n padding: 30px;\n }\n`,j=n.div`\n margin-top: ${({gap:e})=>e}px;\n\n &:first-child {\n margin-top: 0;\n }\n`,O=t=>e.createElement(_,t,t.children.map(((o,n)=>e.createElement(j,{key:n,gap:t.wrap},o)))),T=n.span`\n > svg {\n animation-name: rotate;\n animation-duration: 1s;\n animation-iteration-count: infinite;\n /* animation-timing-function: cubic-bezier(0.87, 0.025, 0.13, 0.985);*/\n animation-timing-function: linear;\n color: ${({color:e})=>e||\"inherit\"};\n }\n\n @keyframes rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n }\n`,I=({icon:t,color:o})=>e.createElement(T,{color:o},t),L=n.div`\n height: 4px;\n background-color: ${({theme:e})=>e.loadingbar.backcolor};\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n display: ${({show:e})=>!e&&\"none\"};\n z-index: 1000;\n\n &:after {\n content: \"\";\n position: absolute;\n display: block;\n height: 100%;\n background-color: ${({theme:e})=>e.loadingbar.color};\n left: 0%;\n right: 100%;\n animation: loading 2s ease infinite;\n }\n\n @keyframes loading {\n 0% {\n left: 0;\n right: 100%;\n }\n\n 50% {\n left: 0;\n right: 0;\n }\n\n 100% {\n left: 100%;\n right: 0;\n }\n }\n`,A=t=>e.createElement(L,t),U=n.div`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n left: -100px;\n width: 70px;\n height: 100%;\n background: rgba(255,255,255, 0.3);\n transform: skewX(-30deg);\n animation-name: slide;\n animation-duration: 3s;\n animation-timing-function: ease-in-out;\n animation-iteration-count: infinite;\n // animation-direction: alternate;\n background: linear-gradient(to right,\n rgba(255, 255, 255, 0) 0%,\n rgba(255, 255, 255, 0.15) 45%,\n rgba(255, 255, 255, 1) 60%,\n rgba(255, 255, 255, 0.15) 75%,\n rgba(255, 255, 255, 0.0) 100%);\n\n @keyframes slide {\n 0% {\n left: -150px;\n top: 0;\n }\n 50% {\n left: 120px;\n top: 0px;\n }\n 100% {\n left: 150px;\n top: 0;\n }\n }\n`,N=n.img`\n flex: 1 1 auto;\n height: 80px;\n`,q=({image:t,...o})=>e.createElement(U,null,e.createElement(N,m({src:t},o))),P=n.div`\n padding: 15px;\n position: fixed;\n left: 10px;\n right: 10px;\n bottom: ${({show:e})=>e?\"10px\":\"-80px\"};\n border-radius: 5px;\n color: ${({theme:e,type:t=\"success\"})=>e.alert[t].color};\n background-color: ${({theme:e,type:t=\"success\"})=>e.alert[t].backcolor};\n opacity: ${({show:e})=>e?\"1\":\"0\"};\n transition: opacity 0.15s, bottom 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n opacity: 0.9;\n cursor: pointer;\n\n ${c(\"md\")} {\n left: 20px;\n right: 20px;\n bottom: ${({show:e})=>e?\"20px\":\"-60px\"};\n }\n`,Y=n(S)`\n flex: 0 0 auto;\n height: 30px;\n padding: 10px;\n opacity: 0.75;\n background-color: ${({theme:e})=>e.colors.white};\n color: ${({color:e})=>e};\n`,G=n.p`\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n\n > svg {\n margin-inline-end: 10px;\n margin-inline-start: 0;\n }\n`,R=({theme:n,...r})=>{const i=n.alert[r.type].icon,[a,l]=t(!1);return o((()=>{l(r.show)}),[r.show]),e.createElement(P,m({},r,{show:r.onClick?r.show:a,onClick:r.onClick?r.onClick:()=>{l(!1)}}),e.createElement(G,null,i,r.text),e.createElement(Y,{color:n.alert[r.type].backcolor,icon:n.alert.icon,type:\"button\",format:\"basic\"}))};r(R);const V=n.div`\n display: flex;\n flex-direction: column;\n`,B=n.button`\n flex: 1 1 auto;\n border: 0;\n background-color: transparent;\n display: block;\n padding: 10px;\n font-size: larger;\n color: ${({theme:e,type:t})=>e.menu[t].toggle.color};\n background-color: ${({theme:e,type:t})=>e.menu[t].toggle.backcolor};\n\n ${c(\"md\")} {\n display: none;\n }\n`,M=n.ul`\n transition: ease-in-out 0.25s;\n list-style: none;\n max-height: ${({opened:e})=>e?\"1200px\":\"0px\"};\n height: auto;\n overflow: hidden;\n\n ${c(\"md\")} {\n max-height: ${({opened:e,sub:t})=>t?e?\"1200px\":\"0px\":\"1200px\"};\n }\n`,X=n.li`\n transition: ease-in-out 0.25s;\n display: flex;\n flex-direction: column;\n cursor: pointer;\n\n > a,\n p {\n color: ${({theme:e,type:t})=>e.menu[t].color};\n background-color: ${({theme:e,type:t,active:o})=>o?e.menu[t].hoverbackcolor:e.menu[t].backcolor};\n\n @media (hover: hover) {\n &:hover {\n color: ${({theme:e,type:t})=>e.menu[t].hovercolor};\n background-color: ${({theme:e,type:t})=>e.menu[t].hoverbackcolor};\n }\n }\n\n font-weight: ${({theme:e,opened:t})=>t&&e.font.weight.bold};\n padding: 15px 10px;\n flex: 1 1 auto;\n\n ${c(\"md\")} {\n padding: 10px;\n }\n }\n`,H=n(M)`\n // padding-inline-start: 10px;\n margin-inline-start: 10px;\n border-top: ${({theme:e,type:t,opened:o})=>o&&`1px solid ${e.menu[t].submenuborder}`};\n border-bottom: ${({theme:e,type:t,opened:o})=>o&&`1px solid ${e.menu[t].submenuborder}`};\n font-size: smaller;\n`,J=({theme:o,...n})=>{const[r,i]=t(!1),[l,c]=t(null);return e.createElement(V,{className:n.className},e.createElement(B,{type:n.type,onClick:()=>i(!r)},r?o.menu[n.type].toggle.opened:o.menu[n.type].toggle.closed),e.createElement(M,{type:n.type,opened:r},n.items.map(((t,o)=>e.createElement(X,{type:n.type,key:`item${o}`,active:t.active,opened:l===o},t.links?e.createElement(e.Fragment,null,e.createElement(\"p\",{onClick:()=>{c(null!==l&&l===o?null:o)}},t.title),e.createElement(H,{type:n.type,opened:l===o,sub:!0},t.links.map(((t,o)=>e.createElement(X,{type:n.type,key:`item${o}`,active:t.active,onClick:()=>i(!r)},e.createElement(a,{to:t.link},t.title)))))):e.createElement(a,{onClick:()=>{i(!r),c(null)},to:t.link},t.title))))))};r(J);const K=i`\n 0% {\n background-position: 50% 0%;\n }\n\n 50% {\n background-position: 0% 50%;\n }\n\n 100% {\n background-position: 50% 0%;\n }\n`,Q=n.p`\n border-radius: 5px;\n background-image: ${({theme:e})=>`linear-gradient(45deg, ${e.colors.white}, ${e.colors.gray.medium} 50%, ${e.colors.white})`};\n background-size: 400% 400%;\n animation-name: ${K};\n animation-duration: 3s;\n animation-iteration-count: infinite;\n animation-timing-function: ease-in-out;\n max-width: ${({width:e})=>e&&e}px;\n width: auto;\n height: ${({height:e})=>e&&e}px;\n`,W=t=>e.createElement(Q,t);export{R as Alert,W as Bone,S as Button,F as ButtonDual,w as Checkbox,C as FileUpload,O as Form,y as Input,A as LoadingBar,I as LoadingIcon,q as LoadingImage,J as Menu,d as Split};\n","import { FiX, FiMenu, FiAlertOctagon, FiAlertCircle, FiCheck, FiChevronDown } from \"react-icons/fi\";\n\nconst COLORS = {\n primary: \"#1DE758\", // green\n complementary: \"#6A1B9A\", // violet\n gray: {\n dark: \"#808285\",\n medium: \"#D4D1D1\",\n light: \"#E6E6E6\",\n lightest: \"#F2F2F2\",\n },\n black: \"#0A0A0A\",\n white: \"#FFFFFF\",\n};\n\nconst FONT = {\n family: {\n arabic: \"Tajawal\",\n },\n weight: {\n light: 300,\n regular: 400,\n medium: 500,\n bold: 700,\n },\n size: {\n xxxl: \"2em\",\n xxl: \"1.6em\",\n xl: \"1.35em\",\n lg: \"1.2em\",\n md: \"1em\",\n sm: \".85em\",\n xs: \".7em\",\n xxs: \".6em\",\n },\n};\n\nconst SHADOW = \"0 4px 8px 0 rgba(0, 0, 0, 0.2)\";\n\nexport const theme = {\n colors: COLORS,\n\n font: FONT,\n\n alert: {\n icon: ,\n error: {\n color: COLORS.white,\n backcolor: COLORS.complementary,\n icon: ,\n },\n success: {\n color: COLORS.white,\n backcolor: COLORS.primary,\n icon: ,\n },\n },\n\n loadingbar: {\n color: COLORS.complementary,\n backcolor: \"transparent\",\n },\n\n button: {\n basic: {\n color: COLORS.white,\n backcolor: COLORS.gray.medium,\n },\n primary: {\n color: COLORS.white,\n backcolor: COLORS.primary,\n shadow: SHADOW,\n },\n complementary: {\n color: COLORS.white,\n backcolor: COLORS.complementary,\n hoverbackcolor: COLORS.gray.medium,\n },\n secondary: {\n hovercolor: COLORS.white,\n color: COLORS.gray.dark,\n hoverbackcolor: COLORS.gray.dark,\n backcolor: COLORS.gray.medium,\n },\n dark: {\n color: COLORS.white,\n // hovercolor: COLORS.gray.dark,\n hoverbackcolor: COLORS.gray.medium,\n backcolor: COLORS.gray.dark,\n },\n muted: {\n color: COLORS.white,\n backcolor: COLORS.gray.medium,\n hoverbackcolor: COLORS.gray.dark,\n },\n transparent: {\n color: COLORS.gray.dark,\n backcolor: \"transparent\",\n hoverbackcolor: COLORS.white,\n },\n white: {\n color: COLORS.gray.dark,\n backcolor: COLORS.white,\n hoverbackcolor: COLORS.gray.light,\n },\n attention: {\n color: COLORS.complementary,\n backcolor: \"transparent\",\n hovercolor: COLORS.gray.medium,\n },\n },\n\n form: {\n backcolor: COLORS.gray.lightest,\n },\n\n menu: {\n side: {\n backcolor: \"transparent\",\n hoverbackcolor: COLORS.gray.lightest,\n submenuborder: COLORS.gray.medium,\n toggle: {\n opened: ,\n closed: ,\n },\n },\n },\n\n rating: {\n StronglyAgree: {\n backcolor: \"rgba(29, 231, 88, 1)\",\n },\n Agree: {\n backcolor: \"rgba(29, 231, 88, 0.65)\",\n },\n Neutral: {\n backcolor: \"rgba(128, 130, 133, 0.25)\",\n },\n Disagree: {\n backcolor: \"rgba(128, 130, 133, 0.65)\",\n },\n StronglyDisagree: {\n backcolor: \"rgba(128, 130, 133, 1)\",\n },\n },\n\n notice: {\n error: {\n color: COLORS.white,\n backcolor: COLORS.gray.dark,\n icon: ,\n },\n information: {\n color: COLORS.gray.dark,\n backcolor: COLORS.gray.lightest,\n },\n },\n};\n","import { fetchBaseQuery } from \"@reduxjs/toolkit/query/react\";\nimport { API_URL } from \"./settings\";\nimport { userLoggedOut } from \"../features/user/userSlice\";\nimport { updateUserState } from \"../services/utils\";\n\nconst baseQuery = fetchBaseQuery({\n baseUrl: API_URL,\n // https://redux-toolkit.js.org/rtk-query/api/fetchBaseQuery#setting-default-headers-on-requests\n prepareHeaders: (headers, { getState }) => {\n const token = getState().user.token;\n // if we have a valid token, add it to the authentication header\n if (token) {\n headers.set(\"authorization\", `Bearer ${token}`);\n }\n return headers;\n },\n});\n\n// https://redux-toolkit.js.org/rtk-query/usage/customizing-queries#automatic-re-authorization-by-extending-fetchbasequery\n// this is a wrapper for fetchBaseQuery function\n// when any request receives a 401 response, an additional request is sent to attempt to refresh the access token\n// after that the initial request will be reinitialized\nexport const baseQueryWithRefreshTokenAttempt = async (args, api, extraOptions) => {\n let result = await baseQuery(args, api, extraOptions);\n if (result.error && result.error.status === 401) {\n const token = api.getState().user.token;\n if (token) {\n // try to get a new token\n const refreshResult = await baseQuery(\n {\n url: \"token/refresh\",\n method: \"POST\",\n credentials: \"include\",\n body: { token },\n },\n api,\n extraOptions\n );\n\n if (refreshResult.data) {\n // store the new token and claims\n updateUserState(refreshResult.data);\n // retry the initial query\n result = await baseQuery(args, api, extraOptions);\n } else {\n api.dispatch(userLoggedOut());\n }\n }\n }\n return result;\n};\n","// Need to use the React-specific entry point to import createApi\nimport { createApi } from \"@reduxjs/toolkit/query/react\";\nimport { baseQueryWithRefreshTokenAttempt } from \"./baseQueryWithRefreshTokenAttempt\";\nimport { ENTITY, TOPICS_FILTER } from \"./settings\";\n\n// code splitting: https://redux-toolkit.js.org/rtk-query/usage/code-splitting\n\n// Define a service using a base URL and expected endpoints\nexport const api = createApi({\n // reducerPath: \"nekashApi\",\n baseQuery: baseQueryWithRefreshTokenAttempt,\n // https://redux-toolkit.js.org/rtk-query/usage/cache-behavior#manipulating-cache-behavior\n keepUnusedDataFor: 30, // this can be set for the whole api\n // https://redux-toolkit.js.org/rtk-query/usage/cache-behavior#encouraging-re-fetching-with-refetchonmountorargchange\n refetchOnMountOrArgChange: 60, // this can be set for the whole api\n // https://redux-toolkit.js.org/rtk-query/usage/cache-behavior#re-fetching-on-window-focus-with-refetchonfocus\n // refetchOnFocus: true,\n // https://redux-toolkit.js.org/rtk-query/usage/cache-behavior#re-fetching-on-network-reconnection-with-refetchonreconnect\n // refetchOnReconnect: true,\n // tagTypes: [\"Users\"],\n tagTypes: [\"User\", \"Entity\", \"Space\", \"Post\", \"Log\", \"Proposal\", \"Profile\"],\n endpoints: (builder) => ({\n // https://redux-toolkit.js.org/rtk-query/usage/mutations\n authenticate: builder.mutation({\n query: (credentials) => ({\n url: \"token/get\",\n method: \"POST\",\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials\n // https://developer.mozilla.org/en-US/docs/Web/API/fetch#parameters\n credentials: \"include\",\n // fetchBaseQuery automatically adds `content-type: application/json` to the Headers and calls `JSON.stringify(credentials)`\n body: credentials,\n }),\n // transformResponse: (response) => response.token,\n }),\n refreshToken: builder.mutation({\n query: (expiredToken) => ({\n url: \"token/refresh\",\n method: \"POST\",\n credentials: \"include\",\n body: expiredToken,\n }),\n // transformResponse: (response) => response.token,\n }),\n vertifyToken: builder.mutation({\n query: () => ({\n url: \"token/verify\",\n method: \"POST\",\n // credentials: \"include\",\n }),\n }),\n verifyEmail: builder.mutation({\n query: (email) => ({\n url: \"users/exist\",\n method: \"POST\",\n body: email,\n }),\n transformResponse: (response) => response.result,\n }),\n register: builder.mutation({\n query: (registration) => ({\n url: \"users/register\",\n method: \"POST\",\n body: registration,\n }),\n }),\n requestPasswordReset: builder.mutation({\n query: (email) => ({\n url: `users/remember/${email}`,\n method: \"POST\",\n }),\n }),\n reset: builder.mutation({\n query: (passwordReset) => ({\n url: \"users/reset\",\n method: \"POST\",\n body: passwordReset,\n }),\n }),\n getUserProfile: builder.query({\n query: () => ({\n url: `users/profile`,\n method: \"GET\",\n }),\n providesTags: [\"Profile\"],\n }),\n editUserProfile: builder.mutation({\n query: (profile) => ({\n url: `users/profile/update`,\n method: \"POST\",\n body: profile,\n }),\n invalidatesTags: [\"Post\", \"Log\", \"Proposal\", \"Profile\"],\n }),\n confirmEmail: builder.mutation({\n query: (confirmation) => ({\n url: \"users/confirm\",\n method: \"POST\",\n body: confirmation,\n }),\n }),\n getUsers: builder.query({\n query: () => ({\n url: \"users/list\",\n method: \"GET\",\n }),\n // https://redux-toolkit.js.org/rtk-query/usage/automated-refetching#invalidating-cache-data\n //providesTags: (result) =>\n // // id is the unique id of each element as named in the response\n // result ? [...result.map(({ id }) => ({ type: \"User\", id })), \"User\"] : [\"User\"],\n // https://redux-toolkit.js.org/rtk-query/usage/automated-refetching#selectively-invalidating-lists\n providesTags: (result) =>\n result\n ? // when the result is not empty\n [\n ...result.map(({ id }) => ({ type: \"User\", id })),\n { type: \"User\", id: \"LIST\" },\n ]\n : // when the result is empty\n [{ type: \"User\", id: \"LIST\" }],\n // https://redux-toolkit.js.org/rtk-query/usage/cache-behavior#manipulating-cache-behavior\n // keepUnusedDataFor: 5, // this can be set per endpoint\n // https://redux-toolkit.js.org/rtk-query/usage/cache-behavior#encouraging-re-fetching-with-refetchonmountorargchange\n // refetchOnMountOrArgChange: 5 // this can be set per end point\n }),\n getUser: builder.query({\n query: (id) => ({\n url: `users/${id}`,\n method: \"GET\",\n }),\n providesTags: (result, error, id) => [{ type: \"User\", id }],\n }),\n addUser: builder.mutation({\n query: (user) => ({\n url: \"users/add\",\n method: \"POST\",\n body: user,\n }),\n invalidatesTags: [{ type: \"User\", id: \"LIST\" }],\n }),\n editUser: builder.mutation({\n query: ({ user, id }) => ({\n url: `users/edit/${id}`,\n method: \"POST\",\n body: user,\n }),\n invalidatesTags: (result, error, { id }) => [{ type: \"User\", id }],\n }),\n deleteUser: builder.mutation({\n query: (id) => ({\n url: `users/delete/${id}`,\n method: \"POST\",\n }),\n invalidatesTags: (result, error, id) => [{ type: \"User\", id }],\n }),\n toggleUserActivation: builder.mutation({\n query: (id) => ({\n url: `users/activation/${id}`,\n method: \"POST\",\n }),\n // https://redux-toolkit.js.org/rtk-query/usage/automated-refetching#invalidating-cache-data\n // invalidatesTags: [\"User\"],\n invalidatesTags: (result, error, id) => [{ type: \"User\", id }],\n // invalidatesTags: (result, error, arg) => [{ type: \"User\", id: arg.id }],\n }),\n removeUserPicture: builder.mutation({\n query: (id) => ({\n url: `users/removepicture/${id}`,\n method: \"POST\",\n }),\n invalidatesTags: (result, error, id) => [{ type: \"User\", id }],\n }),\n getEntities: builder.query({\n query: () => ({\n url: \"entities/list\",\n method: \"GET\",\n }),\n providesTags: (result) =>\n // id is the unique id of each element as named in the response\n result\n ? [\n ...result.map(({ id }) => ({ type: \"Entity\", id })),\n { type: \"Entity\", id: \"LIST\" },\n ]\n : [{ type: \"Entity\", id: \"LIST\" }],\n }),\n getEntity: builder.query({\n query: (id) => ({\n url: `entities/${id}`,\n method: \"GET\",\n }),\n providesTags: (result, error, id) => [{ type: \"Entity\", id }],\n }),\n getEntityExperts: builder.query({\n query: (id) => ({\n url: `users/list/${id}`,\n method: \"GET\",\n }),\n }),\n addEntity: builder.mutation({\n query: (entity) => ({\n url: \"entities/add\",\n method: \"POST\",\n body: entity,\n }),\n invalidatesTags: [{ type: \"Entity\", id: \"LIST\" }],\n }),\n editEntity: builder.mutation({\n query: ({ entity, id }) => ({\n url: `entities/edit/${id}`,\n method: \"POST\",\n body: entity,\n }),\n invalidatesTags: (result, error, { id }) => [{ type: \"Entity\", id }],\n }),\n verifyEntityStringID: builder.mutation({\n query: (entityID) => ({\n url: \"entities/exist\",\n method: \"POST\",\n body: entityID,\n }),\n transformResponse: (response) => response.result,\n }),\n toggleEntityActivation: builder.mutation({\n query: (id) => ({\n url: `entities/activation/${id}`,\n method: \"POST\",\n }),\n invalidatesTags: (result, error, id) => [{ type: \"Entity\", id }],\n }),\n toggleEntityRegistration: builder.mutation({\n query: (id) => ({\n url: `entities/registration/${id}`,\n method: \"POST\",\n }),\n invalidatesTags: (result, error, id) => [{ type: \"Entity\", id }],\n }),\n getSpaces: builder.query({\n query: () => ({\n url: \"spaces/list\",\n method: \"GET\",\n }),\n providesTags: (result) =>\n // id is the unique id of each element as named in the response\n result\n ? [\n ...result.map(({ id }) => ({ type: \"Space\", id })),\n { type: \"Space\", id: \"LIST\" },\n ]\n : [{ type: \"Space\", id: \"LIST\" }],\n }),\n getSpacesByEntity: builder.query({\n query: (entity) => ({\n url: `spaces/list/${entity}`,\n method: \"GET\",\n }),\n }),\n getSpace: builder.query({\n query: (id) => ({\n url: `spaces/${id}`,\n method: \"GET\",\n }),\n providesTags: (result, error, id) => [{ type: \"Space\", id }],\n }),\n addSpace: builder.mutation({\n query: (space) => ({\n url: \"spaces/add\",\n method: \"POST\",\n body: space,\n }),\n invalidatesTags: [{ type: \"Space\", id: \"LIST\" }],\n }),\n editSpace: builder.mutation({\n query: ({ space, id }) => ({\n url: `spaces/edit/${id}`,\n method: \"POST\",\n body: space,\n }),\n invalidatesTags: (result, error, { id }) => [{ type: \"Space\", id }],\n }),\n deleteSpace: builder.mutation({\n query: (id) => ({\n url: `spaces/delete/${id}`,\n method: \"POST\",\n }),\n invalidatesTags: (result, error, id) => [{ type: \"Space\", id }],\n }),\n verifySpaceStringID: builder.mutation({\n query: (spaceID) => ({\n url: \"spaces/exist\",\n method: \"POST\",\n body: spaceID,\n }),\n transformResponse: (response) => response.result,\n }),\n addTopic: builder.mutation({\n query: (topic) => ({\n url: `topics/add/${ENTITY}`,\n method: \"POST\",\n body: topic,\n }),\n transformResponse: (response) => response.topicId,\n invalidatesTags: [\"Post\", \"LIST\"],\n }),\n getTopic: builder.query({\n query: (id) => ({\n url: `topics/${id}`,\n method: \"GET\",\n }),\n providesTags: (result, error, id) => [{ type: \"Post\", id }],\n }),\n // https://redux-toolkit.js.org/rtk-query/usage/pagination\n getTopics: builder.query({\n query: ({ filter = TOPICS_FILTER.ByLatestPost, space = null }) => ({\n url: space\n ? `topics/list/${ENTITY}/${filter}/${space}`\n : `topics/list/${ENTITY}/${filter}`,\n method: \"GET\",\n }),\n providesTags: (result) =>\n result\n ? [\n ...result.map(({ id }) => ({ type: \"Post\", id })),\n { type: \"Post\", id: \"LIST\" },\n ]\n : [{ type: \"Post\", id: \"LIST\" }],\n }),\n getTopicLogs: builder.query({\n query: (id) => ({\n url: `topics/log/${id}`,\n method: \"GET\",\n }),\n providesTags: (result, error, id) => [{ type: \"Log\", id }],\n }),\n getTopicActiveProposal: builder.query({\n query: (id) => ({\n url: `topics/proposal/${id}`,\n method: \"GET\",\n }),\n providesTags: (result, error, id) => [{ type: \"Proposal\", id }],\n }),\n upvote: builder.mutation({\n query: ({ id }) => ({\n url: `posts/upvote/${id}/${ENTITY}`,\n method: \"POST\",\n }),\n invalidatesTags: (result, error, { parentId }) => [\n { type: \"Post\", parentId },\n { type: \"Log\", parentId },\n ],\n }),\n //viewPost: builder.mutation({\n // query: (id) => ({\n // url: `posts/view/${id}`,\n // method: \"POST\",\n // }),\n // providesTags: (result, error, id) => [{ type: \"Post\", id }],\n //}),\n endDate: builder.mutation({\n query: (topicDiscussionEndDate) => ({\n url: `topics/enddate/${ENTITY}`,\n method: \"POST\",\n body: topicDiscussionEndDate,\n }),\n invalidatesTags: (result, error, { id }) => [{ type: \"Post\", id }],\n }),\n assignexpert: builder.mutation({\n query: (topicAssignedExpert) => ({\n url: `topics/assignexpert/${ENTITY}`,\n method: \"POST\",\n body: topicAssignedExpert,\n }),\n invalidatesTags: (result, error, { id }) => [{ type: \"Post\", id }],\n }),\n //getAttachment: builder.query({\n // query: (link) => ({\n // url: `attachments/${link}`,\n // method: \"GET\",\n // // https://redux-toolkit.js.org/rtk-query/api/fetchBaseQuery#parsing-a-Response\n // // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#body\n // responseHandler: (response) => {\n // let attachment = response.blob();\n // // let url = URL.createObjectURL(response);\n // return attachment;\n // },\n // }),\n //}),\n addOpinion: builder.mutation({\n query: (opinion) => ({\n url: `posts/addopinion/${ENTITY}`,\n method: \"POST\",\n body: opinion,\n }),\n transformResponse: (response) => response.logId,\n invalidatesTags: (result, error, { postID }) => [\n { type: \"Post\", postID },\n { type: \"Log\", postID },\n ],\n }),\n addProposal: builder.mutation({\n query: (proposal) => ({\n url: `posts/addproposal/${proposal.postID}/${ENTITY}`,\n method: \"POST\",\n body: proposal,\n }),\n transformResponse: (response) => response.logId,\n invalidatesTags: (result, error, { postID }) => [\n { type: \"Post\", postID },\n { type: \"Log\", postID },\n { type: \"Proposal\", postID },\n ],\n }),\n vote: builder.mutation({\n query: (vote) => ({\n url: `posts/vote/${ENTITY}`,\n method: \"POST\",\n body: vote,\n }),\n invalidatesTags: (result, error, arg) => {\n console.log(result);\n return [{ type: \"Proposal\", id: result.parentId }];\n },\n }),\n }),\n});\n\n// Export hooks for usage in functional components, which are\n// auto-generated based on the defined endpoints\nexport const {\n useAuthenticateMutation,\n useRefreshTokenMutation,\n useVertifyTokenMutation,\n useVerifyEmailMutation,\n useRegisterMutation,\n useRequestPasswordResetMutation,\n useResetMutation,\n useGetUserProfileQuery,\n useEditUserProfileMutation,\n useConfirmEmailMutation,\n useGetUsersQuery,\n useGetUserQuery,\n useAddUserMutation,\n useEditUserMutation,\n useToggleUserActivationMutation,\n useRemoveUserPictureMutation,\n useDeleteUserMutation,\n useGetEntitiesQuery,\n useGetEntityQuery,\n useGetEntityExpertsQuery,\n useAddEntityMutation,\n useEditEntityMutation,\n useVerifyEntityStringIDMutation,\n useToggleEntityActivationMutation,\n useToggleEntityRegistrationMutation,\n useGetSpacesQuery,\n useGetSpacesByEntityQuery,\n useGetSpaceQuery,\n useLazyGetSpaceQuery,\n useAddSpaceMutation,\n useEditSpaceMutation,\n useDeleteSpaceMutation,\n useVerifySpaceStringIDMutation,\n useAddTopicMutation,\n useGetTopicQuery,\n useGetTopicsQuery,\n useGetTopicLogsQuery,\n useGetTopicActiveProposalQuery,\n useUpvoteMutation,\n //useViewPostMutation,\n useEndDateMutation,\n useAssignexpertMutation,\n //useGetAttachmentQuery,\n useAddOpinionMutation,\n useAddProposalMutation,\n useVoteMutation,\n} = api;\n","import { store } from \"../app/store\";\nimport jwt_decode from \"jwt-decode\";\nimport { userAuthenticated } from \"../features/user/userSlice\";\nimport { CLAIM_TYPES, ERROR_URL } from \"./settings\";\n//import { createAsyncThunk } from \"@reduxjs/toolkit\";\n//import { api } from \"../services/api\";\n\n// update the user state based on the response recceived from authentication/refresh token\nexport const updateUserState = (payload) => {\n // https://www.npmjs.com/package/jwt-decode\n const token = jwt_decode(payload.token);\n const claims = payload.claims;\n\n store.dispatch(\n userAuthenticated({\n firstName: token.given_name,\n familyName: token.family_name,\n gender: token.gender,\n picture: token.picture,\n token: payload.token,\n expiry: token.exp,\n claims: claims,\n })\n );\n};\n\n// this checks if the user has one of the required claims\nexport const userHasClaims = (allowClaims, userClaims) => {\n return allowClaims.some((c) => userClaims.includes(CLAIM_TYPES[c]));\n};\n\n// this checks if the user doesn't have one of the required claims\nexport const userDoesntHaveClaims = (denyClaims, userClaims) => {\n return !denyClaims.some((c) => userClaims.includes(CLAIM_TYPES[c]));\n};\n\n// get image thumbnail version\nexport const getImageThumbnailName = (imageName) => {\n return `${imageName.slice(0, imageName.lastIndexOf(\".\"))}_s${imageName.slice(\n imageName.lastIndexOf(\".\")\n )}`;\n};\n\n// download image with custom http request\nexport const downloadImage = (link, userToken, callback) => {\n let request = new XMLHttpRequest();\n request.addEventListener(\n \"load\",\n (e) => {\n if (e.target.status === 200) {\n let imageURL = URL.createObjectURL(e.target.response);\n callback(imageURL);\n }\n },\n false\n );\n request.responseType = \"blob\";\n request.open(\"GET\", link);\n request.setRequestHeader(\"authorization\", `Bearer ${userToken}`);\n request.send();\n};\n\n// send error report \nexport const reportError = async (errorType, errorInfo) => {\n // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n\n await fetch(ERROR_URL, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n errorType: errorType.message,\r\n errorInfo: errorInfo.componentStack\r\n })\r\n });\r\n};\n\n// convert guid to string and remove the hyphen\n//export const normalizeGuid = (guid) => {\n// return `${guid}`.replaceAll(\"-\", \"\");\n//};\n\n//export const refreshToken = (payload) => (dispatch, getState) => {\n// dispatch(api.endpoints.refreshToken.initiate(payload))\n// .unwrap()\n// .then((payload) => {\n// // save the new token and claims to the state\n// decodeAndSaveToken(payload);\n// })\n// .catch((error) => {\n// // logout the user if the refresh token fails\n// if (error.status === 400) {\n// dispatch(userLoggedOut());\n// }\n// });\n//};\n\n//export const refreshToken = createAsyncThunk(\n// \"user/refreshToken\",\n// async (payload, { dispatch, getState }) => {\n// dispatch(api.endpoints.refreshToken.initiate(payload))\n// .unwrap()\n// .then(payload => {\n// // save the new token and claims to the state\n// decodeAndSaveToken(payload);\n// })\n// .catch((error) => {\n// // logout the user if the refresh token fails\n// if (error.status === 400) {\n// dispatch(userLoggedOut());\n// }\n// });\n// }\n//);\n"],"sourceRoot":""}