@@ -11,6 +11,8 @@ import React, { FC, PropsWithChildren } from 'react';
1111
1212import type { AnalyticsServiceStart } from '@kbn/core-analytics-browser' ;
1313import type { I18nStart } from '@kbn/core-i18n-browser' ;
14+ import type { ExecutionContextStart } from '@kbn/core-execution-context-browser' ;
15+ import { SharedUXRouterContext } from '@kbn/shared-ux-router' ;
1416
1517// @ts -expect-error EUI exports this component internally, but Kibana isn't picking it up its types
1618import { useIsNestedEuiProvider } from '@elastic/eui/lib/components/provider/nested' ;
@@ -25,6 +27,8 @@ export interface KibanaRootContextProviderProps extends KibanaEuiProviderProps {
2527 i18n : I18nStart ;
2628 /** The `AnalyticsServiceStart` API from `CoreStart`. */
2729 analytics ?: Pick < AnalyticsServiceStart , 'reportEvent' > ;
30+ /** The `ExecutionContextStart` API from `CoreStart`. */
31+ executionContext ?: ExecutionContextStart ;
2832}
2933
3034/**
@@ -44,20 +48,26 @@ export interface KibanaRootContextProviderProps extends KibanaEuiProviderProps {
4448export const KibanaRootContextProvider : FC < PropsWithChildren < KibanaRootContextProviderProps > > = ( {
4549 children,
4650 i18n,
51+ executionContext,
4752 ...props
4853} ) => {
4954 const hasEuiProvider = useIsNestedEuiProvider ( ) ;
55+ const rootContextProvider = (
56+ < SharedUXRouterContext . Provider value = { { services : { executionContext } } } >
57+ < i18n . Context > { children } </ i18n . Context >
58+ </ SharedUXRouterContext . Provider >
59+ ) ;
5060
5161 if ( hasEuiProvider ) {
5262 emitEuiProviderWarning (
5363 'KibanaRootContextProvider has likely been nested in this React tree, either by direct reference or by KibanaRenderContextProvider. The result of this nesting is a nesting of EuiProvider, which has negative effects. Check your React tree for nested Kibana context providers.'
5464 ) ;
55- return < i18n . Context > { children } </ i18n . Context > ;
65+ return rootContextProvider ;
5666 } else {
5767 const { theme, userProfile, globalStyles, colorMode, modify } = props ;
5868 return (
5969 < KibanaEuiProvider { ...{ theme, userProfile, globalStyles, colorMode, modify } } >
60- < i18n . Context > { children } </ i18n . Context >
70+ { rootContextProvider }
6171 </ KibanaEuiProvider >
6272 ) ;
6373 }
0 commit comments