import * as ko from "knockout"; import * as ViewModels from "../../Contracts/ViewModels"; import * as DataModels from "../../Contracts/DataModels"; import TabsBase from "./TabsBase"; import * as React from "react"; import { ReactAdapter } from "../../Bindings/ReactBindingHandler"; import { NotebookViewerComponent } from "../Controls/NotebookViewer/NotebookViewerComponent"; /** * Notebook Viewer tab */ class NotebookViewerComponentAdapter implements ReactAdapter { // parameters: true: show, false: hide public parameters: ko.Computed; constructor( private notebookUrl: string, private notebookName: string, private container: ViewModels.Explorer, private notebookMetadata: DataModels.NotebookMetadata ) {} public renderComponent(): JSX.Element { return this.parameters() ? ( ) : ( <> ); } } export default class NotebookViewerTab extends TabsBase implements ViewModels.Tab { private container: ViewModels.Explorer; public notebookViewerComponentAdapter: NotebookViewerComponentAdapter; public notebookUrl: string; constructor(options: ViewModels.NotebookViewerTabOptions) { super(options); this.container = options.container; this.notebookUrl = options.notebookUrl; this.notebookViewerComponentAdapter = new NotebookViewerComponentAdapter( options.notebookUrl, options.notebookName, options.container, options.notebookMetadata ); this.notebookViewerComponentAdapter.parameters = ko.computed(() => { if (this.isTemplateReady() && this.container.isNotebookEnabled()) { return true; } return false; }); } protected getContainer(): ViewModels.Explorer { return this.container; } protected getTabsButtons(): ViewModels.NavbarButtonConfig[] { return []; } protected buildCommandBarOptions(): void { this.updateNavbarWithTabsButtons(); } }