import REPL from '../models/repl'; import TabState from '../models/tab-state'; import ExecOptions from '../models/execOptions'; export interface Tab extends HTMLDivElement { uuid: string; REPL: REPL; state: TabState; queueListener: EventListener; _kui_session: Promise; /** Update the displayed title for this Tab */ setTitle(title: string): void; onActivate(handler: (isActive: boolean) => void): void; offActivate(handler: (isActive: boolean) => void): void; /** Add a class to the nearest enclosing tab-like (e.g. Split) */ addClass(cls: string): void; /** Add a class to the top-level enclosing tab-like (e.g. Tab) */ addTopClass(cls: string): void; /** Remove a class from the nearest enclosing tab-like (e.g. Split) */ removeClass(cls: string): void; /** Remove a class from the top-level enclosing tab-like (e.g. Tab) */ removeTopClass(cls: string): void; scrollToTop(): void; /** * If given the optional parameter, only scroll into view if the * specified block (identified by its execUUID) is the last block in * this tab * */ scrollToBottom(execUUID?: string): void; show(selector: string): void; getSize(): { width: number; height: number; }; splitCount(): number; hasSideBySideTerminals(): boolean; } export declare function isTab(node: Element | Tab): node is Tab; /** * Return the unique identifier for the given tab * */ export declare function getTabId(tab: Pick): string; export declare function getTabIds(tab: Pick): string[]; export declare function getPrimaryTabId(tab: Pick): string; export declare function isTopLevelTab(tab: Pick): boolean; export declare const sameTab: (tab1: Tab, tab2: Tab) => boolean; export declare const getCurrentTab: () => Tab; export declare const getTab: (idx: Tab | number) => Tab; /** * We need to find the instance of the Split that has a REPL controller * - if given a `topLevelTab` that is already a Split, then we're "good to go" * - if we are given an actual top-level tab (i.e. not a split), then we need to find the first Split child of that given tab * - if we aren't given a tab as input, then we search from `document` * */ export declare function splitFor(topLevelTab: Tab): Tab; /** * Execute the given command in the current (or given) tab. * * @param isInternalCallPath This is one plugin calling another * @param incognito Execute the command quietly but do not display the result in the Terminal * */ export declare function pexecInCurrentTab(command: string, topLevelTab?: Tab, isInternalCallpath?: boolean, incognito?: boolean, execUUID?: string, execOptions?: ExecOptions): Promise>; export default Tab;