diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index c4f46400dc464..a75d067a9bae7 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -195,5 +195,5 @@ pageLoadAssetSize: visTypeVega: 153573 visTypeVislib: 242838 visTypeXy: 46868 - visualizations: 90000 + visualizations: 41000 watcher: 43598 diff --git a/src/platform/plugins/shared/vis_types/timeseries/public/vis_state.test.ts b/src/platform/plugins/shared/vis_types/timeseries/public/vis_state.test.ts index b9e3e28f4c42b..b45a777a12467 100644 --- a/src/platform/plugins/shared/vis_types/timeseries/public/vis_state.test.ts +++ b/src/platform/plugins/shared/vis_types/timeseries/public/vis_state.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { updateOldState } from '@kbn/visualizations-plugin/public'; +import { updateOldState } from '@kbn/visualizations-plugin/public/legacy/vis_update_state'; /** * The reason we add this test is to ensure that `convertNumIdsToStringsForTSVB` of the updateOldState runs correctly diff --git a/src/platform/plugins/shared/visualizations/public/actions/add_agg_vis_action.test.ts b/src/platform/plugins/shared/visualizations/public/actions/add_agg_vis_action.test.ts index e8311224ce32c..f97ed7e4c9e41 100644 --- a/src/platform/plugins/shared/visualizations/public/actions/add_agg_vis_action.test.ts +++ b/src/platform/plugins/shared/visualizations/public/actions/add_agg_vis_action.test.ts @@ -9,7 +9,6 @@ import { AddAggVisualizationPanelAction, - ADD_AGG_VIS_ACTION_ID, type AddAggVisualizationPanelActionApi, } from './add_agg_vis_action'; import type { BaseVisType } from '../vis_types/base_vis_type'; @@ -17,7 +16,7 @@ import { VisGroups } from '../vis_types/vis_groups_enum'; import { TypesService, type TypesStart } from '../vis_types/types_service'; const mockCompatibleEmbeddableAPI: AddAggVisualizationPanelActionApi = { - type: ADD_AGG_VIS_ACTION_ID, + type: 'anyEmbeddable', addNewPanel: jest.fn(), getAppContext: jest.fn(), }; diff --git a/src/platform/plugins/shared/visualizations/public/actions/add_agg_vis_action.ts b/src/platform/plugins/shared/visualizations/public/actions/add_agg_vis_action.ts index cd3faa92d7787..f4379a97a0c62 100644 --- a/src/platform/plugins/shared/visualizations/public/actions/add_agg_vis_action.ts +++ b/src/platform/plugins/shared/visualizations/public/actions/add_agg_vis_action.ts @@ -21,8 +21,7 @@ import { apiCanAddNewPanel, CanAddNewPanel } from '@kbn/presentation-containers' import { VisGroups } from '../vis_types/vis_groups_enum'; import type { TypesStart } from '../vis_types/types_service'; import { showNewVisModal } from '../wizard/show_new_vis'; - -export const ADD_AGG_VIS_ACTION_ID = 'ADD_AGG_VIS'; +import { ADD_AGG_VIS_ACTION_ID } from './constants'; export type AddAggVisualizationPanelActionApi = HasType & CanAddNewPanel & HasAppContext; diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/index.ts b/src/platform/plugins/shared/visualizations/public/actions/constants.ts similarity index 76% rename from src/platform/plugins/shared/visualizations/public/embeddable/index.ts rename to src/platform/plugins/shared/visualizations/public/actions/constants.ts index 6d1649771c8ef..77ea107e7a867 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/index.ts +++ b/src/platform/plugins/shared/visualizations/public/actions/constants.ts @@ -7,5 +7,5 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { getVisualizeEmbeddableFactoryLazy } from './get_visualize_embeddable_factory_lazy'; -export { VIS_EVENT_TO_TRIGGER } from './events'; +export const ADD_AGG_VIS_ACTION_ID = 'ADD_AGG_VIS'; +export const ACTION_EDIT_IN_LENS = 'ACTION_EDIT_IN_LENS'; diff --git a/src/platform/plugins/shared/visualizations/public/actions/edit_in_lens_action.tsx b/src/platform/plugins/shared/visualizations/public/actions/edit_in_lens_action.tsx index 4049c6669341e..666a29b7de04f 100644 --- a/src/platform/plugins/shared/visualizations/public/actions/edit_in_lens_action.tsx +++ b/src/platform/plugins/shared/visualizations/public/actions/edit_in_lens_action.tsx @@ -42,8 +42,7 @@ import { getUsageCollection, } from '../services'; import { DASHBOARD_VISUALIZATION_PANEL_TRIGGER } from '../triggers'; - -export const ACTION_EDIT_IN_LENS = 'ACTION_EDIT_IN_LENS'; +import { ACTION_EDIT_IN_LENS } from './constants'; const displayName = i18n.translate('visualizations.actions.editInLens.displayName', { defaultMessage: 'Convert to Lens', diff --git a/src/platform/plugins/shared/visualizations/public/actions/register_actions.ts b/src/platform/plugins/shared/visualizations/public/actions/register_actions.ts new file mode 100644 index 0000000000000..3aacb75597870 --- /dev/null +++ b/src/platform/plugins/shared/visualizations/public/actions/register_actions.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import { CONTEXT_MENU_TRIGGER } from '@kbn/embeddable-plugin/public'; +import { ADD_PANEL_TRIGGER, type UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import { ACTION_EDIT_IN_LENS, ADD_AGG_VIS_ACTION_ID } from './constants'; +import { TypesStart } from '../vis_types/types_service'; + +export function registerActions( + uiActions: UiActionsStart, + data: DataPublicPluginStart, + types: TypesStart +) { + uiActions.addTriggerActionAsync(CONTEXT_MENU_TRIGGER, ACTION_EDIT_IN_LENS, async () => { + const { EditInLensAction } = await import('./edit_in_lens_action'); + return new EditInLensAction(data.query.timefilter.timefilter); + }); + + uiActions.addTriggerActionAsync(ADD_PANEL_TRIGGER, ADD_AGG_VIS_ACTION_ID, async () => { + const { AddAggVisualizationPanelAction } = await import('./add_agg_vis_action'); + return new AddAggVisualizationPanelAction(types); + }); +} diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/initialize_edit_api.ts b/src/platform/plugins/shared/visualizations/public/embeddable/initialize_edit_api.ts index 818847a6e92d6..5884d8d0cd155 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/initialize_edit_api.ts +++ b/src/platform/plugins/shared/visualizations/public/embeddable/initialize_edit_api.ts @@ -15,7 +15,7 @@ import { } from '@kbn/presentation-publishing'; import { TimeRange } from '@kbn/es-query'; import type { Vis } from '../vis'; -import { urlFor } from '../utils/saved_visualize_utils'; +import { urlFor } from '..'; import { getCapabilities, getEmbeddable } from '../services'; export function initializeEditApi({ diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/interfaces/has_visualize_config.ts b/src/platform/plugins/shared/visualizations/public/embeddable/interfaces/has_visualize_config.ts index 5de80db0346cd..cb1b16095846c 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/interfaces/has_visualize_config.ts +++ b/src/platform/plugins/shared/visualizations/public/embeddable/interfaces/has_visualize_config.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { type HasType, apiIsOfType } from '@kbn/presentation-publishing'; +import type { HasType } from '@kbn/presentation-publishing'; import { VisParams } from '../../types'; import Vis from '../../vis'; @@ -18,7 +18,7 @@ export type HasVisualizeConfig = HasType<'visualization'> & { export const apiHasVisualizeConfig = (api: unknown): api is HasVisualizeConfig => { return Boolean( api && - apiIsOfType(api, 'visualization') && + (api as HasType)?.type === 'visualization' && typeof (api as HasVisualizeConfig).getVis === 'function' ); }; diff --git a/src/platform/plugins/shared/visualizations/public/index.ts b/src/platform/plugins/shared/visualizations/public/index.ts index 4c3dc07a9eb5d..58b30592ee29e 100644 --- a/src/platform/plugins/shared/visualizations/public/index.ts +++ b/src/platform/plugins/shared/visualizations/public/index.ts @@ -18,11 +18,14 @@ export function plugin(initializerContext: PluginInitializerContext) { /** @public static code */ export { TypesService } from './vis_types/types_service'; -export { VIS_EVENT_TO_TRIGGER } from './embeddable'; +export { VIS_EVENT_TO_TRIGGER } from './embeddable/events'; export { apiHasVisualizeConfig } from './embeddable/interfaces/has_visualize_config'; export { COMMON_VISUALIZATION_GROUPING } from './legacy/embeddable/constants'; export { VisualizationContainer } from './components'; export { getVisSchemas } from './vis_schemas'; +export { prepareLogTable } from '../common/utils/prepare_log_table'; +export { XYCurveTypes } from '../common/convert_to_lens/constants'; +export { urlFor, getFullPath } from './utils/url_utils'; /** @public types */ export type { VisualizationsSetup, VisualizationsStart }; @@ -40,7 +43,7 @@ export type { VisualizeEditorInput } from './embeddable/types'; export type { Vis, SerializedVis, SerializedVisData, VisData } from './vis'; export type VisualizeEmbeddableContract = PublicContract; export type { SchemaConfig } from '../common/types'; -export { updateOldState } from './legacy/vis_update_state'; + export type { VisualizeInput, VisualizeEmbeddable } from './legacy/embeddable'; export type { HasVisualizeConfig } from './embeddable/interfaces/has_visualize_config'; export type { PersistedState } from './persisted_state'; @@ -65,7 +68,6 @@ export { VISUALIZE_EMBEDDABLE_TYPE, } from '../common/constants'; export type { SavedVisState, VisParams, Dimension } from '../common'; -export { prepareLogTable, XYCurveTypes } from '../common'; export type { ExpressionValueVisDimension } from '../common/expression_functions/vis_dimension'; export type { ExpressionValueXYDimension, @@ -73,7 +75,6 @@ export type { FakeParams, HistogramParams, } from '../common/expression_functions/xy_dimension'; -export { urlFor, getFullPath } from './utils/saved_visualize_utils'; export type { IEditorController, EditorRenderProps } from './visualize_app/types'; diff --git a/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts b/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts index 843aa51731abc..774c3851dab3d 100644 --- a/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts +++ b/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts @@ -18,7 +18,7 @@ import type { VisualizeEmbeddableDeps, } from './visualize_embeddable'; import { getHttp, getTimeFilter, getCapabilities } from '../../services'; -import { urlFor } from '../../utils/saved_visualize_utils'; +import { urlFor } from '../..'; import { createVisualizeEmbeddableAsync } from './visualize_embeddable_async'; import { AttributeService } from './attribute_service'; import { ErrorEmbeddable } from './error_embeddable'; diff --git a/src/platform/plugins/shared/visualizations/public/plugin.ts b/src/platform/plugins/shared/visualizations/public/plugin.ts index 0dcbf78c399da..ca4634fdefe93 100644 --- a/src/platform/plugins/shared/visualizations/public/plugin.ts +++ b/src/platform/plugins/shared/visualizations/public/plugin.ts @@ -37,7 +37,7 @@ import type { ApplicationStart, SavedObjectsClientContract, } from '@kbn/core/public'; -import { UiActionsStart, UiActionsSetup, ADD_PANEL_TRIGGER } from '@kbn/ui-actions-plugin/public'; +import { UiActionsStart, UiActionsSetup } from '@kbn/ui-actions-plugin/public'; import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import type { Setup as InspectorSetup, @@ -47,11 +47,7 @@ import type { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import type { ExpressionsSetup, ExpressionsStart } from '@kbn/expressions-plugin/public'; -import { - CONTEXT_MENU_TRIGGER, - EmbeddableSetup, - EmbeddableStart, -} from '@kbn/embeddable-plugin/public'; +import { EmbeddableSetup, EmbeddableStart } from '@kbn/embeddable-plugin/public'; import type { SavedObjectTaggingOssPluginStart } from '@kbn/saved-objects-tagging-oss-plugin/public'; import type { NavigationPublicPluginStart as NavigationStart } from '@kbn/navigation-plugin/public'; import type { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; @@ -119,16 +115,14 @@ import { setNotifications, } from './services'; import { VisualizeConstants, VISUALIZE_EMBEDDABLE_TYPE } from '../common/constants'; -import { EditInLensAction } from './actions/edit_in_lens_action'; import { ListingViewRegistry } from './types'; import { LATEST_VERSION, CONTENT_ID, VisualizationSavedObjectAttributes, } from '../common/content_management'; -import { AddAggVisualizationPanelAction } from './actions/add_agg_vis_action'; import type { VisualizeSerializedState } from './embeddable/types'; -import { getVisualizeEmbeddableFactoryLazy } from './embeddable'; +import { registerActions } from './actions/register_actions'; /** * Interface for this plugin's returned setup/start contracts. @@ -403,14 +397,12 @@ export class VisualizationsPlugin uiActions.registerTrigger(aggBasedVisualizationTrigger); uiActions.registerTrigger(visualizeEditorTrigger); uiActions.registerTrigger(dashboardVisualizationPanelTrigger); - const editInLensAction = new EditInLensAction(data.query.timefilter.timefilter); - uiActions.addTriggerAction(CONTEXT_MENU_TRIGGER, editInLensAction); embeddable.registerReactEmbeddableFactory(VISUALIZE_EMBEDDABLE_TYPE, async () => { const { plugins: { embeddable: embeddableStart, embeddableEnhanced: embeddableEnhancedStart }, } = start(); - const getVisualizeEmbeddableFactory = await getVisualizeEmbeddableFactoryLazy(); + const { getVisualizeEmbeddableFactory } = await import('./embeddable/visualize_embeddable'); return getVisualizeEmbeddableFactory({ embeddableStart, embeddableEnhancedStart }); }); embeddable.registerAddFromLibraryType({ @@ -498,8 +490,7 @@ export class VisualizationsPlugin setSavedObjectTagging(savedObjectsTaggingOss); } - const addAggVisAction = new AddAggVisualizationPanelAction(types); - uiActions.addTriggerAction(ADD_PANEL_TRIGGER, addAggVisAction); + registerActions(uiActions, data, types); return { ...types, diff --git a/src/platform/plugins/shared/visualizations/public/utils/saved_visualize_utils.ts b/src/platform/plugins/shared/visualizations/public/utils/saved_visualize_utils.ts index 3c8f17f49e397..eed204988d11b 100644 --- a/src/platform/plugins/shared/visualizations/public/utils/saved_visualize_utils.ts +++ b/src/platform/plugins/shared/visualizations/public/utils/saved_visualize_utils.ts @@ -36,6 +36,7 @@ import { injectReferences, extractReferences } from './saved_visualization_refer import { OVERWRITE_REJECTED, SAVE_DUPLICATE_REJECTED } from './saved_objects_utils/constants'; import { visualizationsClient } from '../content_management'; import { VisualizationSavedObjectAttributes } from '../../common'; +import { urlFor } from './url_utils'; export const SAVED_VIS_TYPE = 'visualization'; @@ -48,14 +49,6 @@ const getDefaults = (opts: GetVisOptions) => ({ version: 1, }); -export function getFullPath(id: string) { - return `/app/visualize#/edit/${id}`; -} - -export function urlFor(id: string) { - return `#/edit/${encodeURIComponent(id)}`; -} - export function mapHitSource( visTypes: Pick, { diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/get_visualize_embeddable_factory_lazy.ts b/src/platform/plugins/shared/visualizations/public/utils/url_utils.ts similarity index 71% rename from src/platform/plugins/shared/visualizations/public/embeddable/get_visualize_embeddable_factory_lazy.ts rename to src/platform/plugins/shared/visualizations/public/utils/url_utils.ts index b14d03ec5030c..3a39b4126cebd 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/get_visualize_embeddable_factory_lazy.ts +++ b/src/platform/plugins/shared/visualizations/public/utils/url_utils.ts @@ -7,7 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const getVisualizeEmbeddableFactoryLazy = async () => { - const { getVisualizeEmbeddableFactory } = await import('./visualize_embeddable'); - return getVisualizeEmbeddableFactory; -}; +export function getFullPath(id: string) { + return `/app/visualize#/edit/${id}`; +} + +export function urlFor(id: string) { + return `#/edit/${encodeURIComponent(id)}`; +} diff --git a/x-pack/platform/plugins/shared/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx b/x-pack/platform/plugins/shared/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx index e44e528e5a33c..b57d5dc022a53 100644 --- a/x-pack/platform/plugins/shared/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx +++ b/x-pack/platform/plugins/shared/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx @@ -28,7 +28,7 @@ import { DataView } from '@kbn/data-views-plugin/public'; import type { FieldSpec } from '@kbn/data-plugin/common'; import { uiActionsPluginMock } from '@kbn/ui-actions-plugin/public/mocks'; import { TriggerContract } from '@kbn/ui-actions-plugin/public/triggers'; -import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public/embeddable'; +import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public/embeddable/events'; import { applyChanges, setState,