/* * 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 { AppMountParameters, CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; import { AppPluginSetupDependencies, AppPluginStartDependencies, SearchExamplesPluginSetup, SearchExamplesPluginStart, } from './types'; import { SearchSessionsExamplesAppLocatorDefinition } from './search_sessions/app_locator'; import { PLUGIN_NAME } from '../common'; import img from './search_examples.png'; export class SearchExamplesPlugin implements Plugin< SearchExamplesPluginSetup, SearchExamplesPluginStart, AppPluginSetupDependencies, AppPluginStartDependencies > { public setup( core: CoreSetup, { developerExamples, share }: AppPluginSetupDependencies ): SearchExamplesPluginSetup { // Register an application into the side navigation menu core.application.register({ id: 'searchExamples', title: PLUGIN_NAME, visibleIn: [], mount: async (params: AppMountParameters) => { // Load application bundle const { renderApp } = await import('./application'); // Get start services as specified in kibana.json const [coreStart, depsStart] = await core.getStartServices(); // Render the application return renderApp(coreStart, depsStart, params); }, }); developerExamples.register({ appId: 'searchExamples', title: 'Search Examples', description: `Examples on searching elasticsearch using data plugin: low-level search client (data.search.search), high-level search client (SearchSource), search sessions (data.search.sessions)`, image: img, links: [ { label: 'README', href: 'https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/data/README.mdx', iconType: 'logoGithub', target: '_blank', size: 's', }, ], }); // we need an locator for search session examples for restoring a search session const getAppBasePath = () => core.getStartServices().then(([coreStart]) => coreStart.http.basePath.get()); share.url.locators.create(new SearchSessionsExamplesAppLocatorDefinition(getAppBasePath)); return {}; } public start(core: CoreStart): SearchExamplesPluginStart { return {}; } public stop() {} }