Skip to content

Commit c4e3f4f

Browse files
Add lazy loading
1 parent 3964578 commit c4e3f4f

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

src/platform/plugins/shared/navigation/public/top_nav_menu/create_top_nav_menu.tsx

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,24 @@
77
* License v3.0 only", or the "Server Side Public License, v 1".
88
*/
99

10-
import React from 'react';
10+
import React, { Suspense, lazy } from 'react';
1111
import { I18nProvider } from '@kbn/i18n-react';
1212
import type { AggregateQuery, Query } from '@kbn/es-query';
1313
import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public';
1414
import type { TopNavMenuPropsBeta } from '../top_nav_menu_beta/top_nav_menu_beta';
15-
import { TopNavMenuBeta } from '../top_nav_menu_beta/top_nav_menu_beta';
1615
import type { TopNavMenuProps } from './top_nav_menu';
17-
import { TopNavMenu } from './top_nav_menu';
1816
import type { RegisteredTopNavMenuData, RegisteredTopNavMenuDataBeta } from './top_nav_menu_data';
1917

18+
const LazyTopNavMenu = lazy(async () => {
19+
const { TopNavMenu } = await import('./top_nav_menu');
20+
return { default: TopNavMenu };
21+
});
22+
23+
const LazyTopNavMenuBeta = lazy(async () => {
24+
const { TopNavMenuBeta } = await import('../top_nav_menu_beta/top_nav_menu_beta');
25+
return { default: TopNavMenuBeta };
26+
});
27+
2028
export function createTopNav(
2129
unifiedSearch: UnifiedSearchPublicPluginStart,
2230
extraConfig: RegisteredTopNavMenuData[] | RegisteredTopNavMenuDataBeta[],
@@ -30,27 +38,31 @@ export function createTopNav(
3038
);
3139

3240
const TopNavMenuComponent = isBeta ? (
33-
<TopNavMenuBeta
34-
{...(props as TopNavMenuPropsBeta<QT>)}
35-
unifiedSearch={unifiedSearch}
36-
config={
37-
props.config
38-
? {
39-
items: [
40-
...(props.config as TopNavMenuPropsBeta<QT>['config'])!.items,
41-
...relevantConfig,
42-
],
43-
actionItem: (props.config as TopNavMenuPropsBeta<QT>['config'])!.actionItem,
44-
}
45-
: { items: relevantConfig }
46-
}
47-
/>
41+
<Suspense>
42+
<LazyTopNavMenuBeta
43+
{...(props as any)}
44+
unifiedSearch={unifiedSearch}
45+
config={
46+
props.config
47+
? {
48+
items: [
49+
...(props.config as TopNavMenuPropsBeta<QT>['config'])!.items,
50+
...relevantConfig,
51+
],
52+
actionItem: (props.config as TopNavMenuPropsBeta<QT>['config'])!.actionItem,
53+
}
54+
: { items: relevantConfig }
55+
}
56+
/>
57+
</Suspense>
4858
) : (
49-
<TopNavMenu
50-
{...(props as TopNavMenuProps<QT>)}
51-
unifiedSearch={unifiedSearch}
52-
config={((props.config as TopNavMenuProps<QT>['config']) || []).concat(relevantConfig)}
53-
/>
59+
<Suspense>
60+
<LazyTopNavMenu
61+
{...(props as any)}
62+
unifiedSearch={unifiedSearch}
63+
config={((props.config as TopNavMenuProps<QT>['config']) || []).concat(relevantConfig)}
64+
/>
65+
</Suspense>
5466
);
5567

5668
return <I18nProvider>{TopNavMenuComponent}</I18nProvider>;

0 commit comments

Comments
 (0)