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' ;
1111import { I18nProvider } from '@kbn/i18n-react' ;
1212import type { AggregateQuery , Query } from '@kbn/es-query' ;
1313import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public' ;
1414import type { TopNavMenuPropsBeta } from '../top_nav_menu_beta/top_nav_menu_beta' ;
15- import { TopNavMenuBeta } from '../top_nav_menu_beta/top_nav_menu_beta' ;
1615import type { TopNavMenuProps } from './top_nav_menu' ;
17- import { TopNavMenu } from './top_nav_menu' ;
1816import 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+
2028export 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