diff --git a/src/plugins/expression_shape/common/index.ts b/src/plugins/expression_shape/common/index.ts index 6019cda7a51bd5..2a889e6de1bb32 100755 --- a/src/plugins/expression_shape/common/index.ts +++ b/src/plugins/expression_shape/common/index.ts @@ -6,10 +6,31 @@ * Side Public License, v 1. */ -// TODO: https://github.com/elastic/kibana/issues/110893 -/* eslint-disable @kbn/eslint/no_export_all */ +export { + PLUGIN_ID, + PLUGIN_NAME, + SVG, + CSS, + FONT_FAMILY, + FONT_WEIGHT, + BOOLEAN_TRUE, + BOOLEAN_FALSE, +} from './constants'; -export * from './constants'; -export * from './types'; +export type { + Output, + ExpressionShapeFunction, + ProgressArguments, + ProgressOutput, + ExpressionProgressFunction, + OriginString, + ShapeRendererConfig, + NodeDimensions, + ParentNodeParams, + ViewBoxParams, + ProgressRendererConfig, +} from './types'; + +export { Progress, Shape } from './types'; export { getAvailableShapes, getAvailableProgressShapes } from './lib/available_shapes'; diff --git a/src/plugins/expression_shape/common/types/index.ts b/src/plugins/expression_shape/common/types/index.ts index ec934e7affe88b..ef45082ac2d96c 100644 --- a/src/plugins/expression_shape/common/types/index.ts +++ b/src/plugins/expression_shape/common/types/index.ts @@ -5,5 +5,21 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -export * from './expression_functions'; -export * from './expression_renderers'; + +export type { + Output, + ExpressionShapeFunction, + ProgressArguments, + ProgressOutput, + ExpressionProgressFunction, +} from './expression_functions'; +export { Progress, Shape } from './expression_functions'; + +export type { + OriginString, + ShapeRendererConfig, + NodeDimensions, + ParentNodeParams, + ViewBoxParams, + ProgressRendererConfig, +} from './expression_renderers'; diff --git a/src/plugins/expression_shape/kibana.json b/src/plugins/expression_shape/kibana.json index adf95689e271b3..5d831f8e98f605 100755 --- a/src/plugins/expression_shape/kibana.json +++ b/src/plugins/expression_shape/kibana.json @@ -12,5 +12,5 @@ "extraPublicDirs": ["common"], "requiredPlugins": ["expressions", "presentationUtil"], "optionalPlugins": [], - "requiredBundles": [] + "requiredBundles": ["kibanaReact"] } diff --git a/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx b/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx index dcf2daaafcfc10..862718f775c5eb 100644 --- a/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { storiesOf } from '@storybook/react'; import { Render } from '../../../../presentation_util/public/__stories__'; -import { progressRenderer } from '../progress_renderer'; +import { getProgressRenderer } from '../progress_renderer'; import { Progress } from '../../../common'; storiesOf('renderers/progress', module).add('default', () => { @@ -29,5 +29,5 @@ storiesOf('renderers/progress', module).add('default', () => { valueWeight: 15, }; - return ; + return ; }); diff --git a/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx b/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx index 10ac3df88e81cd..d7098e8378c605 100644 --- a/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { storiesOf } from '@storybook/react'; -import { shapeRenderer as shape } from '../'; +import { getShapeRenderer } from '../'; import { Render } from '../../../../presentation_util/public/__stories__'; import { Shape } from '../../../common/types'; @@ -22,5 +22,5 @@ storiesOf('renderers/shape', module).add('default', () => { maintainAspect: true, }; - return ; + return ; }); diff --git a/src/plugins/expression_shape/public/expression_renderers/index.ts b/src/plugins/expression_shape/public/expression_renderers/index.ts index fc031c4a03c8a5..59d98e7bd6f8ff 100644 --- a/src/plugins/expression_shape/public/expression_renderers/index.ts +++ b/src/plugins/expression_shape/public/expression_renderers/index.ts @@ -6,9 +6,5 @@ * Side Public License, v 1. */ -import { shapeRenderer } from './shape_renderer'; -import { progressRenderer } from './progress_renderer'; - -export const renderers = [shapeRenderer, progressRenderer]; - -export { shapeRenderer, progressRenderer }; +export { getShapeRenderer, shapeRendererFactory } from './shape_renderer'; +export { getProgressRenderer, progressRendererFactory } from './progress_renderer'; diff --git a/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx b/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx index 5f81ffcffd3d90..b618d24d26fb04 100644 --- a/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx @@ -7,11 +7,16 @@ */ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; +import { Observable } from 'rxjs'; +import { CoreTheme } from 'kibana/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers } from 'src/plugins/expressions'; import { i18n } from '@kbn/i18n'; +import { I18nProvider } from '@kbn/i18n-react'; +import { KibanaThemeProvider } from '../../../kibana_react/public'; +import { CoreSetup } from '../../../../core/public'; import { ProgressRendererConfig } from '../../common/types'; import { LazyProgressComponent } from '../components/progress'; -import { withSuspense } from '../../../presentation_util/public'; +import { withSuspense, defaultTheme$ } from '../../../presentation_util/public'; const ProgressComponent = withSuspense(LazyProgressComponent); @@ -26,23 +31,31 @@ const strings = { }), }; -export const progressRenderer = (): ExpressionRenderDefinition => ({ - name: 'progress', - displayName: strings.getDisplayName(), - help: strings.getHelpDescription(), - reuseDomNode: true, - render: async ( - domNode: HTMLElement, - config: ProgressRendererConfig, - handlers: IInterpreterRenderHandlers - ) => { - handlers.onDestroy(() => { - unmountComponentAtNode(domNode); - }); +export const getProgressRenderer = + (theme$: Observable = defaultTheme$) => + (): ExpressionRenderDefinition => ({ + name: 'progress', + displayName: strings.getDisplayName(), + help: strings.getHelpDescription(), + reuseDomNode: true, + render: async ( + domNode: HTMLElement, + config: ProgressRendererConfig, + handlers: IInterpreterRenderHandlers + ) => { + handlers.onDestroy(() => { + unmountComponentAtNode(domNode); + }); - render( - , - domNode - ); - }, -}); + render( + + + + + , + domNode + ); + }, + }); + +export const progressRendererFactory = (core: CoreSetup) => getProgressRenderer(core.theme.theme$); diff --git a/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx b/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx index d6fc7c4d27107a..fb2a32884d03b7 100644 --- a/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx @@ -7,10 +7,14 @@ */ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; +import { Observable } from 'rxjs'; +import { CoreTheme } from 'kibana/public'; import { I18nProvider } from '@kbn/i18n-react'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers } from 'src/plugins/expressions'; import { i18n } from '@kbn/i18n'; -import { withSuspense } from '../../../presentation_util/public'; +import { CoreSetup } from '../../../../core/public'; +import { KibanaThemeProvider } from '../../../kibana_react/public'; +import { withSuspense, defaultTheme$ } from '../../../presentation_util/public'; import { ShapeRendererConfig } from '../../common/types'; import { LazyShapeComponent } from '../components/shape'; @@ -27,25 +31,31 @@ const strings = { const ShapeComponent = withSuspense(LazyShapeComponent); -export const shapeRenderer = (): ExpressionRenderDefinition => ({ - name: 'shape', - displayName: strings.getDisplayName(), - help: strings.getHelpDescription(), - reuseDomNode: true, - render: async ( - domNode: HTMLElement, - config: ShapeRendererConfig, - handlers: IInterpreterRenderHandlers - ) => { - handlers.onDestroy(() => { - unmountComponentAtNode(domNode); - }); +export const getShapeRenderer = + (theme$: Observable = defaultTheme$) => + (): ExpressionRenderDefinition => ({ + name: 'shape', + displayName: strings.getDisplayName(), + help: strings.getHelpDescription(), + reuseDomNode: true, + render: async ( + domNode: HTMLElement, + config: ShapeRendererConfig, + handlers: IInterpreterRenderHandlers + ) => { + handlers.onDestroy(() => { + unmountComponentAtNode(domNode); + }); - render( - - - , - domNode - ); - }, -}); + render( + + + + + , + domNode + ); + }, + }); + +export const shapeRendererFactory = (core: CoreSetup) => getShapeRenderer(core.theme.theme$); diff --git a/src/plugins/expression_shape/public/index.ts b/src/plugins/expression_shape/public/index.ts index 21276d3fb4df9d..be260c4c8c80bb 100755 --- a/src/plugins/expression_shape/public/index.ts +++ b/src/plugins/expression_shape/public/index.ts @@ -6,9 +6,6 @@ * Side Public License, v 1. */ -// TODO: https://github.com/elastic/kibana/issues/110893 -/* eslint-disable @kbn/eslint/no_export_all */ - import { ExpressionShapePlugin } from './plugin'; export type { ExpressionShapePluginSetup, ExpressionShapePluginStart } from './plugin'; @@ -17,10 +14,50 @@ export function plugin() { return new ExpressionShapePlugin(); } -export * from './expression_renderers'; +export { + getShapeRenderer, + shapeRendererFactory, + getProgressRenderer, + progressRendererFactory, +} from './expression_renderers'; + export { LazyShapeDrawer } from './components/shape'; export { LazyProgressDrawer } from './components/progress'; export { getDefaultShapeData } from './components/reusable'; -export * from './components/shape/types'; -export * from './components/reusable/types'; -export * from '../common/types'; + +export type { + ShapeProps, + ShapeAttributes, + ShapeContentAttributes, + SvgConfig, + SvgTextAttributes, + CircleParams, + RectParams, + PathParams, + PolygonParams, + SpecificShapeContentAttributes, + ShapeDrawerProps, + ShapeDrawerComponentProps, + ShapeRef, + ShapeType, +} from './components/reusable/types'; + +export { SvgElementTypes } from './components/reusable/types'; + +export type { + Output, + ExpressionShapeFunction, + ProgressArguments, + ProgressOutput, + ExpressionProgressFunction, + OriginString, + ShapeRendererConfig, + NodeDimensions, + ParentNodeParams, + ViewBoxParams, + ProgressRendererConfig, +} from '../common/types'; + +export { Progress, Shape } from '../common/types'; + +export type { ShapeComponentProps, Dimensions } from './components/shape/types'; diff --git a/src/plugins/expression_shape/public/plugin.ts b/src/plugins/expression_shape/public/plugin.ts index 9403bce0af728f..5728b92e97f94d 100755 --- a/src/plugins/expression_shape/public/plugin.ts +++ b/src/plugins/expression_shape/public/plugin.ts @@ -8,7 +8,7 @@ import { CoreSetup, CoreStart, Plugin } from '../../../core/public'; import { ExpressionsStart, ExpressionsSetup } from '../../expressions/public'; -import { shapeRenderer, progressRenderer } from './expression_renderers'; +import { shapeRendererFactory, progressRendererFactory } from './expression_renderers'; import { shapeFunction, progressFunction } from '../common/expression_functions'; interface SetupDeps { @@ -28,8 +28,8 @@ export class ExpressionShapePlugin public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionShapePluginSetup { expressions.registerFunction(shapeFunction); expressions.registerFunction(progressFunction); - expressions.registerRenderer(shapeRenderer); - expressions.registerRenderer(progressRenderer); + expressions.registerRenderer(shapeRendererFactory(core)); + expressions.registerRenderer(progressRendererFactory(core)); } public start(core: CoreStart): ExpressionShapePluginStart {} diff --git a/x-pack/plugins/canvas/canvas_plugin_src/renderers/external.ts b/x-pack/plugins/canvas/canvas_plugin_src/renderers/external.ts index 569669032cb0b1..f7012984a21827 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/renderers/external.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/renderers/external.ts @@ -14,15 +14,17 @@ import { import { revealImageRendererFactory } from '../../../../../src/plugins/expression_reveal_image/public'; import { repeatImageRendererFactory } from '../../../../../src/plugins/expression_repeat_image/public'; import { - shapeRenderer, - progressRenderer, + shapeRendererFactory, + progressRendererFactory, } from '../../../../../src/plugins/expression_shape/public'; -export const renderFunctions = [imageRenderer, shapeRenderer, progressRenderer]; +export const renderFunctions = [imageRenderer]; export const renderFunctionFactories = [ debugRendererFactory, errorRendererFactory, + shapeRendererFactory, + progressRendererFactory, revealImageRendererFactory, repeatImageRendererFactory, metricRendererFactory, diff --git a/x-pack/plugins/canvas/shareable_runtime/supported_renderers.js b/x-pack/plugins/canvas/shareable_runtime/supported_renderers.js index 01b8cc98ba5ecd..83f8e6f290b412 100644 --- a/x-pack/plugins/canvas/shareable_runtime/supported_renderers.js +++ b/x-pack/plugins/canvas/shareable_runtime/supported_renderers.js @@ -18,8 +18,8 @@ import { import { getRevealImageRenderer } from '../../../../src/plugins/expression_reveal_image/public'; import { getRepeatImageRenderer } from '../../../../src/plugins/expression_repeat_image/public'; import { - shapeRenderer as shape, - progressRenderer as progress, + getShapeRenderer, + getProgressRenderer, } from '../../../../src/plugins/expression_shape/public'; import { getMetricRenderer } from '../../../../src/plugins/expression_metric/public'; @@ -31,6 +31,8 @@ const renderFunctionsFactories = [ getTableRenderer, getErrorRenderer, getDebugRenderer, + getShapeRenderer, + getProgressRenderer, getRevealImageRenderer, getRepeatImageRenderer, getMetricRenderer, @@ -41,13 +43,6 @@ const renderFunctionsFactories = [ * a renderer is not listed here, but is used by the Shared Workpad, it will * not render. This includes any plugins. */ -export const renderFunctions = [ - image, - pie, - plot, - progress, - shape, - ...renderFunctionsFactories.map(unboxFactory), -]; +export const renderFunctions = [image, pie, plot, ...renderFunctionsFactories.map(unboxFactory)]; export const renderFunctionNames = [...renderFunctions.map((fn) => fn().name)];