1// Copyright (C) 2024 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15import m from 'mithril'; 16import {DetailsPanel} from './details_panel'; 17 18export interface TabManager { 19 registerTab(tab: TabDescriptor): void; 20 registerDetailsPanel(detailsPanel: DetailsPanel): Disposable; 21 showTab(uri: string): void; 22 hideTab(uri: string): void; 23 addDefaultTab(uri: string): void; 24} 25 26export interface Tab { 27 render(): m.Children; 28 getTitle(): string; 29} 30 31export interface TabDescriptor { 32 uri: string; // TODO(stevegolton): Maybe optional for ephemeral tabs. 33 content: Tab; 34 isEphemeral?: boolean; // Defaults false 35 onHide?(): void; 36 onShow?(): void; 37} 38