@difizen/libro-ai-native
Version:
37 lines (32 loc) • 1.22 kB
text/typescript
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';
({ contrib: [LibroExtensionSlotContribution] })
export class LibroAIChatSlotContribution implements LibroExtensionSlotContribution {
(ViewManager) viewManager: ViewManager;
(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',
};
}