diff --git a/querybook/webapp/components/AppAdmin/AppAdmin.tsx b/querybook/webapp/components/AppAdmin/AppAdmin.tsx
index f0ecb5225..4f9414501 100644
--- a/querybook/webapp/components/AppAdmin/AppAdmin.tsx
+++ b/querybook/webapp/components/AppAdmin/AppAdmin.tsx
@@ -31,7 +31,7 @@ import './AppAdmin.scss';
const ENTITY_SIDEBAR_WIDTH = 200;
const NAV_SIDEBAR_WIDTH = 200;
-export const AppAdmin: React.FunctionComponent = () => {
+const AppAdmin: React.FunctionComponent = () => {
const { entity: selectedEntity }: { entity: AdminEntity } = useParams();
const { data: environments, forceFetch: loadEnvironments } = useDataFetch<
@@ -280,3 +280,5 @@ const AdminTaskStatus: React.FC = () => (
);
+
+export default AppAdmin;
diff --git a/querybook/webapp/components/AppRouter/AppRouter.tsx b/querybook/webapp/components/AppRouter/AppRouter.tsx
index 72acbd21e..3a31de787 100644
--- a/querybook/webapp/components/AppRouter/AppRouter.tsx
+++ b/querybook/webapp/components/AppRouter/AppRouter.tsx
@@ -1,31 +1,35 @@
import React from 'react';
import { Router, Route, Switch } from 'react-router-dom';
-import { AppAdmin } from 'components/AppAdmin/AppAdmin';
import { UserLoader } from 'components/UserLoader/UserLoader';
-import { EnvironmentsRouter } from 'components/EnvironmentsRouter/EnvironmentsRouter';
-
import history from 'lib/router-history';
-
import { AppLayout } from 'components/AppLayout/AppLayout';
import { ConfirmationManager } from 'components/ConfirmationManager/ConfirmationManager';
import { ToastManager } from 'ui/ToastManager/ToastManager';
import { FourOhFour } from 'ui/ErrorPage/FourOhFour';
+import { Loading } from 'ui/Loading/Loading';
+
+const AppAdmin = React.lazy(() => import('components/AppAdmin/AppAdmin'));
+const EnvironmentsRouter = React.lazy(() =>
+ import('components/EnvironmentsRouter/EnvironmentsRouter')
+);
export const AppRouter: React.FunctionComponent = () => (
-
-
- }
- />
-
-
-
+ }>
+
+
+ }
+ />
+
+
+
+
diff --git a/querybook/webapp/components/DataDocSchemaNavigator/DataDocSchemaNavigator.tsx b/querybook/webapp/components/DataDocSchemaNavigator/DataDocSchemaNavigator.tsx
index ec23d7378..833bfb6d4 100644
--- a/querybook/webapp/components/DataDocSchemaNavigator/DataDocSchemaNavigator.tsx
+++ b/querybook/webapp/components/DataDocSchemaNavigator/DataDocSchemaNavigator.tsx
@@ -5,9 +5,9 @@ import { getCurrentEnv } from 'lib/utils/query-string';
import { DataTableNavigator } from 'components/DataTableNavigator/DataTableNavigator';
import { FullHeight } from 'ui/FullHeight/FullHeight';
-import './DataDocSchemaNavigator.scss';
import { DataTableViewMini } from 'components/DataTableViewMini/DataTableViewMini';
import { enableResizable } from 'lib/utils';
+import './DataDocSchemaNavigator.scss';
export const DataDocSchemaNavigator: React.FunctionComponent = () => {
const [tableId, setTableId] = React.useState(null);
diff --git a/querybook/webapp/components/EmbeddedQueryPage/EmbeddedQueryPage.tsx b/querybook/webapp/components/EmbeddedQueryPage/EmbeddedQueryPage.tsx
index a5712fe83..5783a4cb7 100644
--- a/querybook/webapp/components/EmbeddedQueryPage/EmbeddedQueryPage.tsx
+++ b/querybook/webapp/components/EmbeddedQueryPage/EmbeddedQueryPage.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
-import { QueryComposer } from 'components/QueryComposer/QueryComposer';
+import QueryComposer from 'components/QueryComposer/QueryComposer';
import { IAdhocQuery } from 'const/adhocQuery';
import { IStoreState, Dispatch } from 'redux/store/types';
import { receiveAdhocQuery } from 'redux/adhocQuery/action';
@@ -9,7 +9,7 @@ import { FullHeight } from 'ui/FullHeight/FullHeight';
import { Button } from 'ui/Button/Button';
import './EmbeddedQueryPage.scss';
-export const EmbeddedQueryPage: React.FunctionComponent = () => {
+const EmbeddedQueryPage: React.FunctionComponent = () => {
const environmentId = useSelector(
(state: IStoreState) => state.environment.currentEnvironmentId
);
@@ -71,3 +71,5 @@ export const EmbeddedQueryPage: React.FunctionComponent = () => {
);
};
+
+export default EmbeddedQueryPage;
diff --git a/querybook/webapp/components/EnvironmentAppRouter/EnvironmentAppRouter.tsx b/querybook/webapp/components/EnvironmentAppRouter/EnvironmentAppRouter.tsx
index a2f214889..34d1841e8 100644
--- a/querybook/webapp/components/EnvironmentAppRouter/EnvironmentAppRouter.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/EnvironmentAppRouter.tsx
@@ -5,6 +5,7 @@ import { useDispatch } from 'react-redux';
import { IEnvironment } from 'redux/environment/types';
import { loadQueryEngine } from 'redux/queryEngine/action';
import { fetchQueryMetastore } from 'redux/dataSources/action';
+import { rehydrateAdhocQueryForEnvironment } from 'redux/adhocQuery/action';
import { Loading } from 'ui/Loading/Loading';
import { EnvironmentAppSidebar } from 'components/EnvironmentAppSidebar/EnvironmentAppSidebar';
@@ -12,7 +13,6 @@ import { EnvironmentModalSwitchRouter } from 'components/EnvironmentAppRouter/En
import { FullHeight } from 'ui/FullHeight/FullHeight';
import './EnvironmentAppRouter.scss';
-import { rehydrateAdhocQueryForEnvironment } from 'redux/adhocQuery/action';
interface IProps {
environment?: IEnvironment;
diff --git a/querybook/webapp/components/EnvironmentAppRouter/EnvironmentModalSwitchRouter.tsx b/querybook/webapp/components/EnvironmentAppRouter/EnvironmentModalSwitchRouter.tsx
index 2a60d646e..34b2e4aaa 100644
--- a/querybook/webapp/components/EnvironmentAppRouter/EnvironmentModalSwitchRouter.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/EnvironmentModalSwitchRouter.tsx
@@ -4,20 +4,35 @@ import { Switch, Route, useHistory, useLocation } from 'react-router-dom';
import { usePrevious } from 'hooks/usePrevious';
import { useModalRoute } from 'hooks/useModalRoute';
-import { AppDataDoc } from 'components/AppDataDoc/AppDataDoc';
-import { BoardWrapper } from 'components/Board/BoardWrapper';
-import { EmbeddedQueryPage } from 'components/EmbeddedQueryPage/EmbeddedQueryPage';
-import { Landing } from 'components/Landing/Landing';
-import { QueryComposer } from 'components/QueryComposer/QueryComposer';
-import { QuerySnippetRoute } from 'components/QuerySnippetRoute/QuerySnippetRoute';
import { FourOhFour } from 'ui/ErrorPage/FourOhFour';
+import { Loading } from 'ui/Loading/Loading';
+import { Modal } from 'ui/Modal/Modal';
-import { ChangeLogRoute } from './ChangeLogRoute';
-import { DataTableRoute } from './DataTableRoute';
-import { InfoMenuRoute } from './InfoMenuRoute';
-import { QueryExecutionRoute } from './QueryExecutionRoute';
-import { SearchRoute } from './SearchRoute';
-import { UserSettingsMenuRoute } from './UserSettingsMenuRoute';
+// Main Routes
+const Landing = React.lazy(() => import('components/Landing/Landing'));
+const DataDocRoute = React.lazy(() => import('./mainRoute/DataDocRoute'));
+const BoardRoute = React.lazy(() => import('./mainRoute/BoardRoute'));
+const EmbeddedQueryPage = React.lazy(() =>
+ import('components/EmbeddedQueryPage/EmbeddedQueryPage')
+);
+const QueryComposer = React.lazy(() =>
+ import('components/QueryComposer/QueryComposer')
+);
+
+// Modal Routes
+const QuerySnippetRoute = React.lazy(() =>
+ import('components/QuerySnippetRoute/QuerySnippetRoute')
+);
+const ChangeLogRoute = React.lazy(() => import('./modalRoute/ChangeLogRoute'));
+const DataTableRoute = React.lazy(() => import('./modalRoute/DataTableRoute'));
+const InfoMenuRoute = React.lazy(() => import('./modalRoute/InfoMenuRoute'));
+const QueryExecutionRoute = React.lazy(() =>
+ import('./modalRoute/QueryExecutionRoute')
+);
+const SearchRoute = React.lazy(() => import('./modalRoute/SearchRoute'));
+const UserSettingsMenuRoute = React.lazy(() =>
+ import('./modalRoute/UserSettingsMenuRoute')
+);
export const EnvironmentModalSwitchRouter: React.FC = () => {
const location = useLocation();
@@ -75,32 +90,46 @@ export const EnvironmentModalSwitchRouter: React.FC = () => {
/>,
];
- const modalSwitch = needsToShowModal && {modalRoutes};
+ const modalSwitch = needsToShowModal && (
+ null}>
+
+
+ }
+ >
+ {modalRoutes}
+
+ );
return (
<>
-
-
-
- } />
- }
- />
-
- {modalRoutes}
-
-
-
+ }>
+
+
+
+ }
+ />
+ }
+ />
+
+ {modalRoutes}
+
+
+
{modalSwitch}
>
);
diff --git a/querybook/webapp/components/Board/BoardWrapper.tsx b/querybook/webapp/components/EnvironmentAppRouter/mainRoute/BoardRoute.tsx
similarity index 58%
rename from querybook/webapp/components/Board/BoardWrapper.tsx
rename to querybook/webapp/components/EnvironmentAppRouter/mainRoute/BoardRoute.tsx
index 651c58953..bcc1cbed0 100644
--- a/querybook/webapp/components/Board/BoardWrapper.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/mainRoute/BoardRoute.tsx
@@ -1,11 +1,13 @@
import React from 'react';
import { RouteComponentProps } from 'react-router-dom';
-import { Board } from './Board';
+import { Board } from 'components/Board/Board';
-export const BoardWrapper: React.FunctionComponent = ({
+const BoardRoute: React.FunctionComponent = ({
match,
}) => {
const boardId = Number(match.params['boardId']);
return ;
};
+
+export default BoardRoute;
diff --git a/querybook/webapp/components/AppDataDoc/AppDataDoc.tsx b/querybook/webapp/components/EnvironmentAppRouter/mainRoute/DataDocRoute.tsx
similarity index 50%
rename from querybook/webapp/components/AppDataDoc/AppDataDoc.tsx
rename to querybook/webapp/components/EnvironmentAppRouter/mainRoute/DataDocRoute.tsx
index 299dc6c03..9e2e6141b 100644
--- a/querybook/webapp/components/AppDataDoc/AppDataDoc.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/mainRoute/DataDocRoute.tsx
@@ -1,15 +1,18 @@
import React from 'react';
-import { Route, Switch, RouteComponentProps } from 'react-router-dom';
+import { Route, Switch, RouteComponentProps, Redirect } from 'react-router-dom';
import { DataDocWrapper } from 'components/DataDoc/DataDocWrapper';
-import { Landing } from 'components/Landing/Landing';
import { FourOhFour } from 'ui/ErrorPage/FourOhFour';
-export const AppDataDoc: React.FunctionComponent = () => (
+const DataDocRoute: React.FunctionComponent = () => (
-
+
+
+
);
+
+export default DataDocRoute;
diff --git a/querybook/webapp/components/EnvironmentAppRouter/ChangeLogRoute.tsx b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/ChangeLogRoute.tsx
similarity index 90%
rename from querybook/webapp/components/EnvironmentAppRouter/ChangeLogRoute.tsx
rename to querybook/webapp/components/EnvironmentAppRouter/modalRoute/ChangeLogRoute.tsx
index 2281635a7..b4d8b8175 100644
--- a/querybook/webapp/components/EnvironmentAppRouter/ChangeLogRoute.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/ChangeLogRoute.tsx
@@ -13,7 +13,7 @@ import { ChangeLog } from 'components/ChangeLog/ChangeLog';
import { Modal } from 'ui/Modal/Modal';
-export const ChangeLogRoute: React.FunctionComponent = ({
+const ChangeLogRoute: React.FunctionComponent = ({
location,
}) => {
useBrowserTitle('Change Log');
@@ -37,3 +37,5 @@ export const ChangeLogRoute: React.FunctionComponent = ({
);
};
+
+export default ChangeLogRoute;
diff --git a/querybook/webapp/components/EnvironmentAppRouter/DataTableRoute.tsx b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/DataTableRoute.tsx
similarity index 87%
rename from querybook/webapp/components/EnvironmentAppRouter/DataTableRoute.tsx
rename to querybook/webapp/components/EnvironmentAppRouter/modalRoute/DataTableRoute.tsx
index 26ed077a3..fcfcec6ac 100644
--- a/querybook/webapp/components/EnvironmentAppRouter/DataTableRoute.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/DataTableRoute.tsx
@@ -6,7 +6,7 @@ import { DataTableView } from 'components/DataTableView/DataTableView';
import { Modal } from 'ui/Modal/Modal';
import { useModalRoute } from 'hooks/useModalRoute';
-export const DataTableRoute: React.FunctionComponent = ({
+const DataTableRoute: React.FunctionComponent = ({
match,
location,
}) => {
@@ -26,3 +26,5 @@ export const DataTableRoute: React.FunctionComponent = ({
contentDOM
);
};
+
+export default DataTableRoute;
diff --git a/querybook/webapp/components/EnvironmentAppRouter/InfoMenuRoute.tsx b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/InfoMenuRoute.tsx
similarity index 93%
rename from querybook/webapp/components/EnvironmentAppRouter/InfoMenuRoute.tsx
rename to querybook/webapp/components/EnvironmentAppRouter/modalRoute/InfoMenuRoute.tsx
index b0dd0fe11..b5a1b0e99 100644
--- a/querybook/webapp/components/EnvironmentAppRouter/InfoMenuRoute.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/InfoMenuRoute.tsx
@@ -12,7 +12,7 @@ import { Tours } from 'components/Info/Tours';
import { Modal } from 'ui/Modal/Modal';
-export const InfoMenuRoute: React.FunctionComponent = ({
+const InfoMenuRoute: React.FunctionComponent = ({
location,
}) => {
useBrowserTitle('Info');
@@ -47,3 +47,5 @@ export const InfoMenuRoute: React.FunctionComponent = ({
{getContentDOM()}
);
};
+
+export default InfoMenuRoute;
diff --git a/querybook/webapp/components/EnvironmentAppRouter/QueryExecutionRoute.tsx b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/QueryExecutionRoute.tsx
similarity index 86%
rename from querybook/webapp/components/EnvironmentAppRouter/QueryExecutionRoute.tsx
rename to querybook/webapp/components/EnvironmentAppRouter/modalRoute/QueryExecutionRoute.tsx
index 33303214a..26ddcaab0 100644
--- a/querybook/webapp/components/EnvironmentAppRouter/QueryExecutionRoute.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/QueryExecutionRoute.tsx
@@ -7,7 +7,7 @@ import { Modal } from 'ui/Modal/Modal';
import { QueryView } from 'components/QueryView/QueryView';
import { useBrowserTitle } from 'hooks/useBrowserTitle';
-export const QueryExecutionRoute: React.FunctionComponent = ({
+const QueryExecutionRoute: React.FunctionComponent = ({
location,
match,
}) => {
@@ -24,3 +24,5 @@ export const QueryExecutionRoute: React.FunctionComponent =
contentDOM
);
};
+
+export default QueryExecutionRoute;
diff --git a/querybook/webapp/components/EnvironmentAppRouter/SearchRoute.tsx b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/SearchRoute.tsx
similarity index 92%
rename from querybook/webapp/components/EnvironmentAppRouter/SearchRoute.tsx
rename to querybook/webapp/components/EnvironmentAppRouter/modalRoute/SearchRoute.tsx
index 8cc36b04b..def5bd1ec 100644
--- a/querybook/webapp/components/EnvironmentAppRouter/SearchRoute.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/SearchRoute.tsx
@@ -10,7 +10,7 @@ import { useModalRoute } from 'hooks/useModalRoute';
import { SearchOverview } from 'components/Search/SearchOverview';
import { Modal } from 'ui/Modal/Modal';
-export const SearchRoute: React.FunctionComponent = ({
+const SearchRoute: React.FunctionComponent = ({
location,
}) => {
useBrowserTitle('Search');
@@ -42,3 +42,5 @@ export const SearchRoute: React.FunctionComponent = ({
contentDOM
);
};
+
+export default SearchRoute;
diff --git a/querybook/webapp/components/EnvironmentAppRouter/UserSettingsMenuRoute.tsx b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/UserSettingsMenuRoute.tsx
similarity index 87%
rename from querybook/webapp/components/EnvironmentAppRouter/UserSettingsMenuRoute.tsx
rename to querybook/webapp/components/EnvironmentAppRouter/modalRoute/UserSettingsMenuRoute.tsx
index 548ebcd39..d994bccd2 100644
--- a/querybook/webapp/components/EnvironmentAppRouter/UserSettingsMenuRoute.tsx
+++ b/querybook/webapp/components/EnvironmentAppRouter/modalRoute/UserSettingsMenuRoute.tsx
@@ -8,7 +8,7 @@ import { useBrowserTitle } from 'hooks/useBrowserTitle';
import { useModalRoute } from 'hooks/useModalRoute';
import { UserSettingsMenu } from 'components/UserSettingsMenu/UserSettingsMenu';
-export const UserSettingsMenuRoute: React.FunctionComponent = ({
+const UserSettingsMenuRoute: React.FunctionComponent = ({
location,
}) => {
useBrowserTitle('User Settings');
@@ -27,3 +27,5 @@ export const UserSettingsMenuRoute: React.FunctionComponent
);
};
+
+export default UserSettingsMenuRoute;
diff --git a/querybook/webapp/components/EnvironmentAppSidebar/EnvironmentAppSidebar.tsx b/querybook/webapp/components/EnvironmentAppSidebar/EnvironmentAppSidebar.tsx
index 5fd4e062a..5057c5d2b 100644
--- a/querybook/webapp/components/EnvironmentAppSidebar/EnvironmentAppSidebar.tsx
+++ b/querybook/webapp/components/EnvironmentAppSidebar/EnvironmentAppSidebar.tsx
@@ -13,10 +13,10 @@ import { Icon } from 'ui/Icon/Icon';
import { Entity } from './types';
import { EnvironmentTopbar } from './EnvironmentTopbar';
import { EntitySidebar } from './EntitySidebar';
-import './EnvironmentAppSidebar.scss';
import { EnvironmentDropdownButton } from './EnvironmentDropdownButton';
import { useEvent } from 'hooks/useEvent';
import { matchKeyMap, KeyMap } from 'lib/utils/keyboard';
+import './EnvironmentAppSidebar.scss';
const SIDEBAR_WIDTH = 320;
diff --git a/querybook/webapp/components/EnvironmentsRouter/EnvironmentsRouter.tsx b/querybook/webapp/components/EnvironmentsRouter/EnvironmentsRouter.tsx
index e69405237..0d1f17758 100644
--- a/querybook/webapp/components/EnvironmentsRouter/EnvironmentsRouter.tsx
+++ b/querybook/webapp/components/EnvironmentsRouter/EnvironmentsRouter.tsx
@@ -217,6 +217,6 @@ function mapDispatchToProps(dispatch: Dispatch) {
};
}
-export const EnvironmentsRouter = withRouter(
+export default withRouter(
connect(mapStateToProps, mapDispatchToProps)(EnvironmentsRouterComponent)
);
diff --git a/querybook/webapp/components/Landing/Landing.tsx b/querybook/webapp/components/Landing/Landing.tsx
index 2f62d4c15..065f30fe2 100644
--- a/querybook/webapp/components/Landing/Landing.tsx
+++ b/querybook/webapp/components/Landing/Landing.tsx
@@ -131,7 +131,7 @@ const DefaultLanding: React.FC = ({ children }) => {
);
};
-export const Landing: React.FC = () => {
+const Landing: React.FC = () => {
useBrowserTitle();
const customLandingConfig = window.CUSTOM_LANDING_PAGE;
@@ -141,3 +141,5 @@ export const Landing: React.FC = () => {
return {customLandingConfig?.renderer()};
};
+
+export default Landing;
diff --git a/querybook/webapp/components/QueryComposer/QueryComposer.tsx b/querybook/webapp/components/QueryComposer/QueryComposer.tsx
index c4d282ca3..1f4ebf8c2 100644
--- a/querybook/webapp/components/QueryComposer/QueryComposer.tsx
+++ b/querybook/webapp/components/QueryComposer/QueryComposer.tsx
@@ -188,7 +188,7 @@ function useQueryEditorHelpers() {
};
}
-export const QueryComposer: React.FC = () => {
+const QueryComposer: React.FC = () => {
useBrowserTitle('Adhoc Query');
const environmentId = useSelector(
@@ -370,3 +370,5 @@ export const QueryComposer: React.FC = () => {
);
};
+
+export default QueryComposer;
diff --git a/querybook/webapp/components/QuerySnippetRoute/QuerySnippetRoute.tsx b/querybook/webapp/components/QuerySnippetRoute/QuerySnippetRoute.tsx
index eb9fd98a6..591b7cdf1 100644
--- a/querybook/webapp/components/QuerySnippetRoute/QuerySnippetRoute.tsx
+++ b/querybook/webapp/components/QuerySnippetRoute/QuerySnippetRoute.tsx
@@ -6,7 +6,7 @@ import { useModalRoute } from 'hooks/useModalRoute';
import { Modal } from 'ui/Modal/Modal';
import { QuerySnippetWrapper } from './QuerySnippetWrapper';
-export const QuerySnippetRoute: React.FunctionComponent = ({
+const QuerySnippetRoute: React.FunctionComponent = ({
location,
match,
}) => {
@@ -21,3 +21,5 @@ export const QuerySnippetRoute: React.FunctionComponent = (
contentDOM
);
};
+
+export default QuerySnippetRoute;