{"version":3,"sources":["common/apollo-client.js","routes/private.routes.js","routes/index.js","components/app/app.component.js","index.js","common/constants.js","helpers/ssr/store.js","helpers/ssr/ssr.js","routes/auth.routes.js","layouts/blank.layout.js","helpers/translate.js","common/history.js","helpers/spinner.js","components/spinner/spinner.component.js"],"names":["graphqlUri","process","uploadLink","createUploadLink","uri","authMiddleware","ApolloLink","operation","forward","setContext","headers","authorization","localStorage","getItem","AUTH_TOKEN","client","ApolloClient","link","from","cache","InMemoryCache","defaultOptions","watchQuery","fetchPolicy","errorPolicy","query","PrivateRoute","Component","component","rest","render","props","currentUser","location","pathname","to","state","FullLayout","lazy","BlankLayout","indexRoutes","path","name","App","document","title","window","hostname","includes","querySelector","createElement","rel","getElementsByTagName","appendChild","href","TYPE_OF_THEME_OCS","TYPE_OF_THEME_EXPRESS_ALLIANCE","className","Browser","isDevice","ApolloProvider","position","containerStyle","zIndex","history","exact","map","prop","key","React","i18next","init","interpolation","escapeValue","lng","resources","en","common","common_en","login","login_en","testing","testing_en","global","global_en","nl","common_nl","login_nl","testing_nl","global_nl","ru","common_ru","login_ru","testing_ru","global_ru","jp","common_jp","login_jp","testing_jp","global_jp","require","SSR","initializeStore","store","setState","pendingShipmentCount","registerLicense","config","resolve","__dirname","OCSTheme","ExpressAllianceTheme","ThemeSelector","children","CHOSEN_THEME","Suspense","fallback","ReactDOM","i18n","Provider","getElementById","REFRESH_TOKEN","LOGIN_AS_ACTIVATED","LOGIN_AS_AUTH_TOKEN","LOGIN_AS_REFRESH_TOKEN","USER_ABBREVIATION","USER_ROLE","ACCOUNT_ID","SETTINGS_ID","ROLES","User","Admin","SysAdmin","Support","Supplier","Driver","createStore","PRELOADED_STATE","getServerStatesToSendToClient","states","value","forEach","getValue","JSON","stringify","script","__html","dangerouslySetInnerHTML","initializeStoreNormally","serverState","initializeClientStoreByUsingServerState","parse","AuthRoutes","icon","redirect","pathTo","translate","item","caseType","translation","t","replace","split","pop","toUpperCase","toLowerCase","txt","charAt","substr","createBrowserHistory","showLoading","id","label","createSpinner","target","create","showSpinner","Spinner","SpinnerInline","Date","now","useEffect","style","display","width","height","marginTop","marginBottom"],"mappings":"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","file":"static/js/main.89a776a8.chunk.js","sourcesContent":["import {\r\n ApolloClient,\r\n ApolloLink,\r\n DefaultOptions,\r\n InMemoryCache\r\n} from \"@apollo/client\";\r\nimport { createUploadLink } from \"apollo-upload-client\";\r\n// Constants\r\nimport { AUTH_TOKEN } from \"./constants\";\r\n\r\n// For test use\r\nvar graphqlUri = `${process.env.REACT_APP_API_URL}`;\r\n\r\nconst uploadLink = createUploadLink({ uri: graphqlUri });\r\n\r\nconst authMiddleware = new ApolloLink((operation, forward) => {\r\n // add the authorization to the headers\r\n operation.setContext(({ headers = {} }) => ({\r\n headers: {\r\n ...headers,\r\n authorization: \"Bearer \" + localStorage.getItem(AUTH_TOKEN) || null,\r\n },\r\n }));\r\n\r\n return forward(operation);\r\n});\r\n\r\nconst defaultOptions: DefaultOptions = {\r\n watchQuery: {\r\n fetchPolicy: \"no-cache\",\r\n errorPolicy: \"ignore\",\r\n },\r\n query: { \r\n fetchPolicy: \"network-only\",\r\n errorPolicy: \"all\",\r\n },\r\n};\r\n\r\nconst client = new ApolloClient({\r\n link: ApolloLink.from([authMiddleware, uploadLink]),\r\n cache: new InMemoryCache(),\r\n defaultOptions: defaultOptions,\r\n});\r\n\r\nexport default client;\r\n","import React from \"react\";\r\nimport { Route, Redirect } from \"react-router-dom\";\r\n\r\nexport const PrivateRoute = ({ component: Component, ...rest }) => {\r\n return (\r\n {\r\n // TODO\r\n var currentUser = true;\r\n if(props.location.pathname === \"/\"){\r\n currentUser = false;\r\n }\r\n \r\n if (!currentUser) {\r\n // not logged in so redirect to login page with the return url\r\n return (\r\n \r\n );\r\n }\r\n\r\n return ; \r\n }\r\n }\r\n />);\r\n};\r\n\r\nexport default PrivateRoute;","import { lazy } from \"react\";\r\nimport \"../common/scss/style.scss\";\r\n\r\nconst FullLayout = lazy(() => import(\"../layouts/full.layout.js\"));\r\nconst BlankLayout = lazy(() => import(\"../layouts/blank.layout.js\"));\r\n\r\nvar indexRoutes = [\r\n { path: \"/\", name: \"Dashboard\", component: FullLayout },\r\n { path: \"/login\", name: \"Login\", component: BlankLayout },\r\n { path: \"/forgotpassword\", name: \"ForgotPassword\", component: BlankLayout },\r\n { path: \"/resetpassword\", name: \"ResetPassword\", component: BlankLayout }\r\n];\r\n\r\nexport default indexRoutes;\r\n","import { ApolloProvider } from \"@apollo/client\";\r\nimport { Toaster } from \"react-hot-toast\";\r\nimport client from \"../../common/apollo-client\";\r\nimport React from \"react\";\r\nimport { Router, Route, Switch } from \"react-router-dom\";\r\nimport history from \"../../common/history\";\r\n\r\nimport \"./app.component.scss\";\r\nimport PrivateRoute from \"../../routes/private.routes\";\r\nimport indexRoutes from \"../../routes\";\r\nimport BlankLayout from \"../../layouts/blank.layout\";\r\n\r\nimport { Browser } from \"@syncfusion/ej2-base\";\r\nimport { TYPE_OF_THEME_EXPRESS_ALLIANCE, TYPE_OF_THEME_OCS } from \"../../common/constants\";\r\n\r\nclass App extends React.Component {\r\n componentDidMount(){\r\n document.title = `${\r\n window.location.hostname.includes(\"ocs\") === true\r\n ? \"OCS\"\r\n : \"Express Alliance\"\r\n } Portaal`;\r\n\r\n var link = document.querySelector(\"link[rel~='icon']\");\r\n if (!link) {\r\n link = document.createElement(\"link\");\r\n link.rel = \"icon\";\r\n document.getElementsByTagName(\"head\")[0].appendChild(link);\r\n }\r\n link.href = `${\r\n window.location.hostname.includes(\"ocs\") === true\r\n ? TYPE_OF_THEME_OCS\r\n : TYPE_OF_THEME_EXPRESS_ALLIANCE\r\n }-favicon.ico`;\r\n }\r\n render() { \r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n ;\r\n ;\r\n {indexRoutes.map((prop, key) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import React, { Suspense, useEffect } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./components/app/app.component\";\r\nimport { Spinner } from \"./components/spinner/spinner.component\";\r\n\r\nimport { I18nextProvider } from \"react-i18next\";\r\nimport i18next from \"i18next\";\r\n\r\nimport common_nl from \"./common/translations/nl/common.json\";\r\nimport common_en from \"./common/translations/en/common.json\";\r\nimport common_ru from \"./common/translations/ru/common.json\";\r\nimport common_jp from \"./common/translations/jp/common.json\";\r\n\r\nimport login_nl from \"./common/translations/nl/login.json\";\r\nimport login_en from \"./common/translations/en/login.json\";\r\nimport login_ru from \"./common/translations/ru/login.json\";\r\nimport login_jp from \"./common/translations/jp/login.json\";\r\n\r\nimport testing_nl from \"./common/translations/nl/testing.json\";\r\nimport testing_en from \"./common/translations/en/testing.json\";\r\nimport testing_ru from \"./common/translations/ru/testing.json\";\r\nimport testing_jp from \"./common/translations/jp/testing.json\";\r\n\r\nimport global_nl from \"./common/translations/nl/global.json\";\r\nimport global_en from \"./common/translations/en/global.json\";\r\nimport global_ru from \"./common/translations/ru/global.json\";\r\nimport global_jp from \"./common/translations/jp/global.json\";\r\n\r\nimport store from \"./helpers/ssr/store\";\r\nimport SSR from \"./helpers/ssr/ssr\";\r\n\r\nimport { registerLicense } from \"@syncfusion/ej2-base\";\r\nimport {\r\n TYPE_OF_THEME_DARK,\r\n TYPE_OF_THEME_DEFAULT,\r\n TYPE_OF_THEME_EXPRESS_ALLIANCE,\r\n TYPE_OF_THEME_LIGHT,\r\n TYPE_OF_THEME_OCS,\r\n TYPE_OF_THEME_OCS_TEST,\r\n} from \"./common/constants\";\r\n\r\ni18next.init({\r\n interpolation: { escapeValue: false }, // React already does escaping\r\n lng: localStorage.getItem(\"sable-language\") ?? \"en\",\r\n resources: {\r\n en: {\r\n common: common_en, // 'common' is our custom namespace\r\n login: login_en,\r\n testing: testing_en,\r\n global: global_en,\r\n },\r\n nl: {\r\n common: common_nl, // 'common' is our custom namespace\r\n login: login_nl,\r\n testing: testing_nl,\r\n global: global_nl,\r\n },\r\n ru: {\r\n common: common_ru, // 'common' is our custom namespace\r\n login: login_ru,\r\n testing: testing_ru,\r\n global: global_ru,\r\n },\r\n jp: {\r\n common: common_jp, // 'common' is our custom namespace\r\n login: login_jp,\r\n testing: testing_jp,\r\n global: global_jp,\r\n },\r\n },\r\n});\r\n\r\nconst path = require(\"path\");\r\n\r\nSSR.initializeStore(() => {\r\n store.setState(\"globalState\", {\r\n pendingShipmentCount: 0,\r\n });\r\n});\r\n\r\nSSR.initializeStore(() => {\r\n store.setState(\"globalTakeValue\", 1000);\r\n});\r\n\r\n// Registering Syncfusion license key\r\nregisterLicense(\r\n \"ORg4AjUWIQA/Gnt2VVhiQlFacl9JXGFWfVJpTGpQdk5xdV9DaVZUTWY/P1ZhSXxRdk1jXH9adXFWQWFdUUM=\"\r\n);\r\n\r\nrequire(\"dotenv\").config({ path: path.resolve(__dirname, \"../.env\") });\r\n\r\n//STEP 1:\r\n//create components using React.lazy\r\nconst OCSTheme = React.lazy(() => import(\"./common/themes/ocsTheme\"));\r\nconst ExpressAllianceTheme = React.lazy(() =>\r\n import(\"./common/themes/expaTheme\")\r\n);\r\n\r\n//STEP 2:\r\n//create a parent component that will load the components conditionally using React.Suspense\r\nconst ThemeSelector = ({ children }) => {\r\n const CHOSEN_THEME =\r\n window.location.hostname.includes(\"ocs\") === true\r\n ? TYPE_OF_THEME_OCS\r\n : TYPE_OF_THEME_EXPRESS_ALLIANCE;\r\n\r\n //console.log(\"CHOSEN_THEME\", CHOSEN_THEME);\r\n return (\r\n <>\r\n }>\r\n {CHOSEN_THEME === TYPE_OF_THEME_OCS && }\r\n {CHOSEN_THEME === TYPE_OF_THEME_EXPRESS_ALLIANCE && (\r\n \r\n )}\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nReactDOM.render(\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n","export const AUTH_TOKEN = \"sable-auth-token\";\r\nexport const REFRESH_TOKEN = \"sable-refresh-token\";\r\n\r\nexport const LOGIN_AS_ACTIVATED = \"sable-login-as-activated\";\r\nexport const LOGIN_AS_AUTH_TOKEN = \"sable-original-auth-token\";\r\nexport const LOGIN_AS_REFRESH_TOKEN = \"sable-original-refresh-token\";\r\n\r\nexport const USER_ABBREVIATION = \"sable-user-abbreviation\";\r\nexport const USER_ROLE = \"sable-user-role\";\r\nexport const ACCOUNT_ID = \"sable-user-account-id\";\r\n\r\nexport const SETTINGS_ID = 1;\r\n\r\nexport const ROLES = {\r\n User: \"user\",\r\n Admin: \"admin\",\r\n SysAdmin: \"sysadmin\",\r\n Support: \"support\",\r\n Supplier: \"supplier\",\r\n Driver: \"driver\",\r\n};\r\n\r\nexport const TYPE_OF_THEME_DEFAULT = \"expa\";\r\nexport const TYPE_OF_THEME_OCS = \"ocs\";\r\nexport const TYPE_OF_THEME_EXPRESS_ALLIANCE = \"expa\";","import { createStore } from 'state-pool';\r\n\r\n\r\nconst store = createStore();\r\n\r\nexport default store;","import React from 'react';\r\nimport store from './store';\r\n\r\n\r\nconst PRELOADED_STATE = '__PRELOADED_STATE__';\r\n\r\nfunction initializeClientStoreByUsingServerState(serverState) {\r\n for (let key in serverState) {\r\n store.setState(key, serverState[key]);\r\n }\r\n}\r\n\r\n\r\nfunction initializeStore(initializeStoreNormally) {\r\n if (typeof window !== 'undefined' && window[PRELOADED_STATE]) {\r\n // We're on client side and there're states which have been sent from a server\r\n // So we initialize our store by using server states\r\n let states = JSON.parse(window[PRELOADED_STATE]);\r\n initializeClientStoreByUsingServerState(states);\r\n }\r\n else {\r\n // We're on server side or on client side without server state\r\n // so we initialize the store normally\r\n initializeStoreNormally();\r\n }\r\n}\r\n\r\n\r\nfunction getServerStatesToSendToClient() {\r\n let states = {}\r\n store.value.forEach((state, key) => {\r\n states[key] = state.getValue();\r\n })\r\n return JSON.stringify(states);\r\n}\r\n\r\n\r\nfunction Provider({ children }) {\r\n const script = {\r\n __html: `window.${PRELOADED_STATE} = '${getServerStatesToSendToClient()}';`\r\n }\r\n\r\n return (\r\n <>\r\n