import React from 'react' ; import ReactDOM from 'react-dom' ; import { Container , ContainerInput , EmbeddableStart , EmbeddableInput , } from '../../../../src/plugins/embeddable/public' ; import { SearchableListContainerComponent } from './searchable_list_container_component' ; export const SEARCHABLE_LIST_CONTAINER = 'SEARCHABLE_LIST_CONTAINER' ; export interface SearchableContainerInput extends ContainerInput { search ? : string ; } interface ChildInput extends EmbeddableInput { search ? : string ; } export class SearchableListContainer extends Container < ChildInput , SearchableContainerInput > { public readonly type = SEARCHABLE_LIST_CONTAINER ; private node ? : HTMLElement ; constructor ( input , private embeddableServices ) { super ( input , { embeddableLoaded : { } } , embeddableServices . getEmbeddableFactory ) ; } getInheritedInput ( id ) { return { id , search : this . getInput ( ) . search , viewMode : this . input . viewMode , } ; } public render ( node ) { if ( this . node ) { ReactDOM . unmountComponentAtNode ( this . node ) ; } this . node = node ; ReactDOM . render ( < SearchableListContainerComponent embeddable = { this } embeddableServices = { this . embeddableServices } / > , node ) ; } public destroy ( ) { super . destroy ( ) ; if ( this . node ) { ReactDOM . unmountComponentAtNode ( this . node ) ; } } }