From 039132d0e47ef49551079dfc068a94bd57848323 Mon Sep 17 00:00:00 2001 From: Timothy Sullivan Date: Mon, 29 Apr 2024 08:57:54 -0700 Subject: [PATCH 1/9] [SharedUX/React render] prevent double-nested EuiProvider --- .../kibana_context/root/root_provider.tsx | 31 ++++++++++++++----- .../kibana_context/theme/theme_provider.tsx | 4 +-- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/packages/react/kibana_context/root/root_provider.tsx b/packages/react/kibana_context/root/root_provider.tsx index 19cce446e5f115..6980820bba6d5f 100644 --- a/packages/react/kibana_context/root/root_provider.tsx +++ b/packages/react/kibana_context/root/root_provider.tsx @@ -6,10 +6,16 @@ * Side Public License, v 1. */ -import type { I18nStart } from '@kbn/core-i18n-browser'; -import type { AnalyticsServiceStart } from '@kbn/core-analytics-browser'; import React, { FC, PropsWithChildren } from 'react'; +import type { AnalyticsServiceStart } from '@kbn/core-analytics-browser'; +import type { I18nStart } from '@kbn/core-i18n-browser'; + +// @ts-expect-error EUI exports this component internally, but Kibana isn't picking it up its types +import { useIsNestedEuiProvider } from '@elastic/eui/lib/components/provider/nested'; +// @ts-expect-error EUI exports this component internally, but Kibana isn't picking it up its types +import { emitEuiProviderWarning } from '@elastic/eui/lib/services/theme/warning'; + import { KibanaEuiProvider, type KibanaEuiProviderProps } from './eui_provider'; /** Props for the KibanaRootContextProvider */ @@ -38,8 +44,19 @@ export const KibanaRootContextProvider: FC ( - - {children} - -); +}) => { + const hasEuiProvider = useIsNestedEuiProvider(); + + if (hasEuiProvider) { + emitEuiProviderWarning( + 'EuiProvider has already been included. Check your React tree and ensure that KibanaRenderContextProvider used more than once.' + ); + return {children}; + } else { + return ( + + {children} + + ); + } +}; diff --git a/packages/react/kibana_context/theme/theme_provider.tsx b/packages/react/kibana_context/theme/theme_provider.tsx index 1a3bd0f8c1ce26..78b94c1e98793b 100644 --- a/packages/react/kibana_context/theme/theme_provider.tsx +++ b/packages/react/kibana_context/theme/theme_provider.tsx @@ -11,9 +11,9 @@ import useObservable from 'react-use/lib/useObservable'; import { EuiThemeProvider, EuiThemeProviderProps } from '@elastic/eui'; -// @ts-ignore EUI exports this component internally, but Kibana isn't picking it up its types +// @ts-expect-error EUI exports this component internally, but Kibana isn't picking it up its types import { useIsNestedEuiProvider } from '@elastic/eui/lib/components/provider/nested'; -// @ts-ignore EUI exports this component internally, but Kibana isn't picking it up its types +// @ts-expect-error EUI exports this component internally, but Kibana isn't picking it up its types import { emitEuiProviderWarning } from '@elastic/eui/lib/services/theme/warning'; import { KibanaEuiProvider } from '@kbn/react-kibana-context-root'; From 081271e297420311ded23806564a74b5cfcd0bfb Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Mon, 29 Apr 2024 09:06:54 -0700 Subject: [PATCH 2/9] Update wording --- packages/react/kibana_context/root/root_provider.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react/kibana_context/root/root_provider.tsx b/packages/react/kibana_context/root/root_provider.tsx index 6980820bba6d5f..c099b9deb2c073 100644 --- a/packages/react/kibana_context/root/root_provider.tsx +++ b/packages/react/kibana_context/root/root_provider.tsx @@ -49,7 +49,7 @@ export const KibanaRootContextProvider: FC{children}; } else { From 1ecb97dc54319496eef5481667c2a7028e58a831 Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Mon, 29 Apr 2024 09:47:44 -0700 Subject: [PATCH 3/9] feedback Co-authored-by: Clint Andrew Hall --- packages/react/kibana_context/root/root_provider.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react/kibana_context/root/root_provider.tsx b/packages/react/kibana_context/root/root_provider.tsx index c099b9deb2c073..f979d0ef49f5d1 100644 --- a/packages/react/kibana_context/root/root_provider.tsx +++ b/packages/react/kibana_context/root/root_provider.tsx @@ -49,7 +49,7 @@ export const KibanaRootContextProvider: FC{children}; } else { From 0ec663bce9879c07b6e71dd3cf2c9fe90c2d2510 Mon Sep 17 00:00:00 2001 From: Timothy Sullivan Date: Mon, 29 Apr 2024 12:21:50 -0700 Subject: [PATCH 4/9] update limits --- packages/kbn-optimizer/limits.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index f1b24fb01b5564..c8474614b3d099 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -30,7 +30,7 @@ pageLoadAssetSize: data: 454087 datasetQuality: 50624 dataViewEditor: 28082 - dataViewFieldEditor: 27000 + dataViewFieldEditor: 40000 dataViewManagement: 5176 dataViews: 65000 dataVisualizer: 27530 @@ -51,7 +51,7 @@ pageLoadAssetSize: expressionLegacyMetricVis: 23121 expressionMetric: 22238 expressionMetricVis: 23121 - expressionPartitionVis: 29000 + expressionPartitionVis: 31000 expressionRepeatImage: 22341 expressionRevealImage: 25675 expressions: 140958 @@ -115,7 +115,7 @@ pageLoadAssetSize: presentationUtil: 58834 profiling: 36694 remoteClusters: 51327 - reporting: 58600 + reporting: 59000 rollup: 97204 runtimeFields: 41752 savedObjects: 108518 From 58e805b380738db2540474e22c7805c0e778a365 Mon Sep 17 00:00:00 2001 From: Timothy Sullivan Date: Mon, 29 Apr 2024 12:29:37 -0700 Subject: [PATCH 5/9] Revert "update limits" This reverts commit 0ec663bce9879c07b6e71dd3cf2c9fe90c2d2510. --- packages/kbn-optimizer/limits.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index c8474614b3d099..f1b24fb01b5564 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -30,7 +30,7 @@ pageLoadAssetSize: data: 454087 datasetQuality: 50624 dataViewEditor: 28082 - dataViewFieldEditor: 40000 + dataViewFieldEditor: 27000 dataViewManagement: 5176 dataViews: 65000 dataVisualizer: 27530 @@ -51,7 +51,7 @@ pageLoadAssetSize: expressionLegacyMetricVis: 23121 expressionMetric: 22238 expressionMetricVis: 23121 - expressionPartitionVis: 31000 + expressionPartitionVis: 29000 expressionRepeatImage: 22341 expressionRevealImage: 25675 expressions: 140958 @@ -115,7 +115,7 @@ pageLoadAssetSize: presentationUtil: 58834 profiling: 36694 remoteClusters: 51327 - reporting: 59000 + reporting: 58600 rollup: 97204 runtimeFields: 41752 savedObjects: 108518 From dd3f12ac91bc0fa2f4beded781b4e390afea88a4 Mon Sep 17 00:00:00 2001 From: Timothy Sullivan Date: Mon, 29 Apr 2024 12:46:52 -0700 Subject: [PATCH 6/9] add useIsNestedEuiProvider to kbn-ui-shared-deps --- packages/kbn-ui-shared-deps-src/src/definitions.js | 1 + packages/kbn-ui-shared-deps-src/src/entry.js | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/kbn-ui-shared-deps-src/src/definitions.js b/packages/kbn-ui-shared-deps-src/src/definitions.js index 519c706e723fdb..ce4f4d971e0630 100644 --- a/packages/kbn-ui-shared-deps-src/src/definitions.js +++ b/packages/kbn-ui-shared-deps-src/src/definitions.js @@ -74,6 +74,7 @@ const externals = { '@elastic/eui/lib/services': '__kbnSharedDeps__.ElasticEuiLibServices', '@elastic/eui/lib/services/format': '__kbnSharedDeps__.ElasticEuiLibServicesFormat', '@elastic/eui/dist/eui_charts_theme': '__kbnSharedDeps__.ElasticEuiChartsTheme', + '@elastic/eui/lib/components/provider/nested': 'ElasticEuiUseIsNestedEuiProvider', // transient dep of eui '@hello-pangea/dnd': '__kbnSharedDeps__.HelloPangeaDnd', diff --git a/packages/kbn-ui-shared-deps-src/src/entry.js b/packages/kbn-ui-shared-deps-src/src/entry.js index 1046f2fed7cb27..e0445cc83cf781 100644 --- a/packages/kbn-ui-shared-deps-src/src/entry.js +++ b/packages/kbn-ui-shared-deps-src/src/entry.js @@ -42,6 +42,7 @@ export const ElasticEui = require('@elastic/eui'); export const ElasticEuiLibServices = require('@elastic/eui/optimize/es/services'); export const ElasticEuiLibServicesFormat = require('@elastic/eui/optimize/es/services/format'); export const ElasticEuiChartsTheme = require('@elastic/eui/dist/eui_charts_theme'); +export const ElasticEuiUseIsNestedEuiProvider = require('@elastic/eui/lib/components/provider/nested'); export const KbnDatemath = require('@kbn/datemath'); export const HelloPangeaDnd = require('@hello-pangea/dnd/dist/dnd'); export const ReduxjsToolkit = require('@reduxjs/toolkit'); From 9de2153c6348120b19f324c7c977eb52fa31e57e Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 30 Apr 2024 14:36:38 +0100 Subject: [PATCH 7/9] chore(NA): expose EUI internal component UseIsNestedEuiProvider on shared deps --- packages/kbn-ui-shared-deps-npm/webpack.config.js | 1 + packages/kbn-ui-shared-deps-src/src/definitions.js | 2 +- packages/kbn-ui-shared-deps-src/src/entry.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/kbn-ui-shared-deps-npm/webpack.config.js b/packages/kbn-ui-shared-deps-npm/webpack.config.js index 817a340dc3a8f1..79502207aea00c 100644 --- a/packages/kbn-ui-shared-deps-npm/webpack.config.js +++ b/packages/kbn-ui-shared-deps-npm/webpack.config.js @@ -60,6 +60,7 @@ module.exports = (_, argv) => { // modules from npm '@elastic/charts', '@elastic/eui', + '@elastic/eui/optimize/es/components/provider/nested', '@elastic/eui/optimize/es/services', '@elastic/eui/optimize/es/services/format', '@elastic/eui/dist/eui_charts_theme', diff --git a/packages/kbn-ui-shared-deps-src/src/definitions.js b/packages/kbn-ui-shared-deps-src/src/definitions.js index ce4f4d971e0630..09daeabfbe68c0 100644 --- a/packages/kbn-ui-shared-deps-src/src/definitions.js +++ b/packages/kbn-ui-shared-deps-src/src/definitions.js @@ -71,10 +71,10 @@ const externals = { '@elastic/charts': '__kbnSharedDeps__.ElasticCharts', '@kbn/datemath': '__kbnSharedDeps__.KbnDatemath', '@elastic/eui': '__kbnSharedDeps__.ElasticEui', + '@elastic/eui/lib/components/provider/nested': '__kbnSharedDeps__.ElasticEuiLibComponentsUseIsNestedEuiProvider', '@elastic/eui/lib/services': '__kbnSharedDeps__.ElasticEuiLibServices', '@elastic/eui/lib/services/format': '__kbnSharedDeps__.ElasticEuiLibServicesFormat', '@elastic/eui/dist/eui_charts_theme': '__kbnSharedDeps__.ElasticEuiChartsTheme', - '@elastic/eui/lib/components/provider/nested': 'ElasticEuiUseIsNestedEuiProvider', // transient dep of eui '@hello-pangea/dnd': '__kbnSharedDeps__.HelloPangeaDnd', diff --git a/packages/kbn-ui-shared-deps-src/src/entry.js b/packages/kbn-ui-shared-deps-src/src/entry.js index e0445cc83cf781..b012cb56601138 100644 --- a/packages/kbn-ui-shared-deps-src/src/entry.js +++ b/packages/kbn-ui-shared-deps-src/src/entry.js @@ -39,10 +39,10 @@ export const Rxjs = require('rxjs'); export const ElasticNumeral = require('@elastic/numeral'); export const ElasticCharts = require('@elastic/charts'); export const ElasticEui = require('@elastic/eui'); +export const ElasticEuiLibComponentsUseIsNestedEuiProvider = require('@elastic/eui/optimize/es/components/provider/nested'); export const ElasticEuiLibServices = require('@elastic/eui/optimize/es/services'); export const ElasticEuiLibServicesFormat = require('@elastic/eui/optimize/es/services/format'); export const ElasticEuiChartsTheme = require('@elastic/eui/dist/eui_charts_theme'); -export const ElasticEuiUseIsNestedEuiProvider = require('@elastic/eui/lib/components/provider/nested'); export const KbnDatemath = require('@kbn/datemath'); export const HelloPangeaDnd = require('@hello-pangea/dnd/dist/dnd'); export const ReduxjsToolkit = require('@reduxjs/toolkit'); From b9029dde5d04073ec1f95fb3d6ae8b1346d52fd0 Mon Sep 17 00:00:00 2001 From: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:47:01 +0000 Subject: [PATCH 8/9] [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' --- packages/kbn-ui-shared-deps-src/src/definitions.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/kbn-ui-shared-deps-src/src/definitions.js b/packages/kbn-ui-shared-deps-src/src/definitions.js index 09daeabfbe68c0..78ee1229da4e97 100644 --- a/packages/kbn-ui-shared-deps-src/src/definitions.js +++ b/packages/kbn-ui-shared-deps-src/src/definitions.js @@ -71,7 +71,8 @@ const externals = { '@elastic/charts': '__kbnSharedDeps__.ElasticCharts', '@kbn/datemath': '__kbnSharedDeps__.KbnDatemath', '@elastic/eui': '__kbnSharedDeps__.ElasticEui', - '@elastic/eui/lib/components/provider/nested': '__kbnSharedDeps__.ElasticEuiLibComponentsUseIsNestedEuiProvider', + '@elastic/eui/lib/components/provider/nested': + '__kbnSharedDeps__.ElasticEuiLibComponentsUseIsNestedEuiProvider', '@elastic/eui/lib/services': '__kbnSharedDeps__.ElasticEuiLibServices', '@elastic/eui/lib/services/format': '__kbnSharedDeps__.ElasticEuiLibServicesFormat', '@elastic/eui/dist/eui_charts_theme': '__kbnSharedDeps__.ElasticEuiChartsTheme', From a0c33a8381d0a497208e84c5f26b62396e5774a8 Mon Sep 17 00:00:00 2001 From: Timothy Sullivan Date: Tue, 30 Apr 2024 12:05:04 -0700 Subject: [PATCH 9/9] update limits bytes --- packages/kbn-optimizer/limits.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 0cbb1eff71a676..8ee32095e8789f 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -31,7 +31,7 @@ pageLoadAssetSize: datasetQuality: 50624 dataViewEditor: 28082 dataViewFieldEditor: 27000 - dataViewManagement: 5176 + dataViewManagement: 5300 dataViews: 65000 dataVisualizer: 27530 devTools: 38637 @@ -51,7 +51,7 @@ pageLoadAssetSize: expressionLegacyMetricVis: 23121 expressionMetric: 22238 expressionMetricVis: 23121 - expressionPartitionVis: 29000 + expressionPartitionVis: 29700 expressionRepeatImage: 22341 expressionRevealImage: 25675 expressions: 140958