import React, {StrictMode} from 'react';
import { createRoot } from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';

// scroll bar
import 'simplebar/src/simplebar.css';

// third-party
import { Provider as ReduxProvider } from 'react-redux';

// apex-chart
import 'assets/third-party/apex-chart.css';

// project import
import App from './App';
import { store } from 'store';
import reportWebVitals from './reportWebVitals';
import {UploadProvider} from "./components/UploadProvider";
import {AbilityProvider} from "./components/AbilityProvider";
import {I18nProvider} from "./components/I18nProvider";
import {AutoLogoutProvider} from "./components/AutoLogoutProvider";
import {RefreshTokenProvider} from "./components/RefreshTokenProvider";
// ==============================|| MAIN - REACT DOM RENDER  ||============================== //

const container = document.getElementById('root');
const root = createRoot(container); // createRoot(container!) if you use TypeScript
//const NotAuthorized = lazy(() => import('../views/NotAuthorized'))
//const Error = lazy(() => import('../views/Error'))
root.render(
  <StrictMode>
          <ReduxProvider store={store}>
              <I18nProvider>
              <AbilityProvider>
                  <UploadProvider>
                          <BrowserRouter basename="/">
                            <RefreshTokenProvider>
                              <AutoLogoutProvider>
                                  <App />
                              </AutoLogoutProvider>
                            </RefreshTokenProvider>
                          </BrowserRouter>
                  </UploadProvider>
              </AbilityProvider>
              </I18nProvider>
          </ReduxProvider>
  </StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
