import React from 'react' ; import ReactDOM from 'react-dom' ; import { I18nProvider } from '@osd/i18n/react' ; import { NewVisModal } from './new_vis_modal' ; import { getHttp , getSavedObjects , getTypes , getUISettings , getUsageCollector , getApplication , getEmbeddable , } from '../services' ; export interface ShowNewVisModalParams { editorParams ? : string [ ] ; onClose ? : ( ) => void ; originatingApp ? : string ; outsideVisualizeApp ? : boolean ; createByValue ? : boolean ; } param { string [ ] } editorParams param { function } onClose export function showNewVisModal ( { editorParams = [ ] , onClose , originatingApp , outsideVisualizeApp , } = { } ) { const container = document . createElement ( 'div' ) ; let isClosed = false ; const handleClose = ( ) => { if ( isClosed ) return ; ReactDOM . unmountComponentAtNode ( container ) ; document . body . removeChild ( container ) ; if ( onClose ) { onClose ( ) ; } isClosed = true ; } ; document . body . appendChild ( container ) ; const element = ( < I18nProvider > < NewVisModal isOpen = { true } onClose = { handleClose } originatingApp = { originatingApp } stateTransfer = { getEmbeddable ( ) . getStateTransfer ( ) } outsideVisualizeApp = { outsideVisualizeApp } editorParams = { editorParams } visTypesRegistry = { getTypes ( ) } addBasePath = { getHttp ( ) . basePath . prepend } uiSettings = { getUISettings ( ) } savedObjects = { getSavedObjects ( ) } usageCollection = { getUsageCollector ( ) } application = { getApplication ( ) } / > < /I18nProvider>); ReactDOM . render ( element , container ) ; return ( ) => handleClose ( ) ; }