import { i18n } from '@kbn/i18n' ; import { createAction , IncompatibleActionError } from '../../../../src/plugins/ui_actions/public' ; import { BookEmbeddable , BOOK_EMBEDDABLE } from './book_embeddable' ; import { ViewMode , isReferenceOrValueEmbeddable } from '../../../../src/plugins/embeddable/public' ; import { DASHBOARD_CONTAINER_TYPE } from '../../../../src/plugins/dashboard/public' ; interface ActionContext { embeddable : BookEmbeddable ; } export const ACTION_ADD_BOOK_TO_LIBRARY = 'ACTION_ADD_BOOK_TO_LIBRARY' ; export const createAddBookToLibraryAction = ( ) => createAction ( { getDisplayName : ( ) => i18n . translate ( 'embeddableExamples.book.addToLibrary' , { defaultMessage : 'Add Book To Library' , } ) , id : ACTION_ADD_BOOK_TO_LIBRARY , type : ACTION_ADD_BOOK_TO_LIBRARY , order : 100 , getIconType : ( ) => 'folderCheck' , isCompatible : async ( { embeddable } ) => { return ( embeddable . type === BOOK_EMBEDDABLE && embeddable . getInput ( ) . viewMode === ViewMode . EDIT && embeddable . getRoot ( ) . isContainer && embeddable . getRoot ( ) . type !== DASHBOARD_CONTAINER_TYPE && isReferenceOrValueEmbeddable ( embeddable ) && ! embeddable . inputIsRefType ( embeddable . getInput ( ) ) ) ; } , execute : async ( { embeddable } ) => { if ( ! isReferenceOrValueEmbeddable ( embeddable ) ) { throw new IncompatibleActionError ( ) ; } const newInput = await embeddable . getInputAsRefType ( ) ; embeddable . updateInput ( newInput ) ; } , } ) ;