diff --git a/src/app/App.tsx b/src/app/App.tsx
index d4469d67..f816585d 100644
--- a/src/app/App.tsx
+++ b/src/app/App.tsx
@@ -1,3 +1,5 @@
+import React from 'react';
+
import PageFooter from '@widgets/PageFooter';
import PageNavBar from '@widgets/PageNavBar';
@@ -9,12 +11,37 @@ import './index.css';
function App() {
return (
-
-
-
-
-
+
+
+
+
+
+
+
);
}
+const DeferredDataProviders: React.FC<{ children: React.ReactNode }> = ({ children }) => {
+ const [PageParamsProvider, setPageParamsProvider] = React.useState<
+ React.ComponentType<{ children: React.ReactNode }> | undefined
+ >(undefined);
+ const [DataProvider, setDataProvider] = React.useState<
+ React.ComponentType<{ children: React.ReactNode }> | undefined
+ >(undefined);
+
+ React.useEffect(() => {
+ import('@features/params/PageParamsProvider').then((m) =>
+ setPageParamsProvider(() => m.default),
+ );
+ import('@features/data/context/DataProvider').then((m) => setDataProvider(() => m.default));
+ }, []);
+ if (!PageParamsProvider || !DataProvider) return children;
+
+ return (
+
+ {children}
+
+ );
+};
+
export default App;
diff --git a/src/pages/DataPage.tsx b/src/pages/DataPage.tsx
index e2a81c01..89c5837d 100644
--- a/src/pages/DataPage.tsx
+++ b/src/pages/DataPage.tsx
@@ -3,34 +3,20 @@ import React, { Suspense } from 'react';
import DetailsPanel from '@widgets/details/DetailsPanel';
import Loading from '@widgets/Loading';
-import HoverCardProvider from '@features/layers/hovercard/HoverCardProvider';
-
-const FilterPanelProvider = React.lazy(() => import('@widgets/controls/FilterPanelProvider'));
-const PageParamsProvider = React.lazy(() => import('@features/params/PageParamsProvider'));
-const DataProvider = React.lazy(() => import('@features/data/context/DataProvider'));
const DataPageBody = React.lazy(() => import('./DataPageBody'));
const OptionsPanel = React.lazy(() => import('@widgets/controls/OptionsPanel'));
const ViewModal = React.lazy(() => import('@features/layers/modal/ViewModal'));
const DataPage: React.FC = () => {
- /* DataProvider and many other data components have more lines of code so they are loaded lazily */
+ /* Many data components have more lines of code so they are loaded lazily */
return (
}>
-
-
- {/* HoverCardProvider is re-declared so it has access to page parameters, there may be a better way to organize it */}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
);
};