UNPKG

@difizen/libro-ai-native

Version:
37 lines (32 loc) 1.22 kB
import type { LibroView, LibroExtensionSlotFactory, LibroSlot, } from '@difizen/libro-jupyter'; import { LibroExtensionSlotContribution } from '@difizen/libro-jupyter'; import { ViewManager } from '@difizen/mana-app'; import { inject, singleton } from '@difizen/mana-app'; import { LibroAINativeService } from './ai-native-service.js'; import { LibroChatView } from './chat-view.js'; @singleton({ contrib: [LibroExtensionSlotContribution] }) export class LibroAIChatSlotContribution implements LibroExtensionSlotContribution { @inject(ViewManager) viewManager: ViewManager; @inject(LibroAINativeService) libroAINativeService: LibroAINativeService; public readonly slot: LibroSlot = 'right'; factory: LibroExtensionSlotFactory = async (libro: LibroView) => { const view = await this.viewManager.getOrCreateView(LibroChatView, { parentId: libro.id, }); view.parent = libro; this.libroAINativeService.chatViewMap.set(libro.id, view); this.libroAINativeService.showChatMap.set(libro.id, false); view.onDisposed(() => { this.libroAINativeService.chatViewMap.delete(libro.id); }); return view; }; viewOpenOption = { reveal: false, order: 'a', }; }