import { IListVirtualDelegate } from "../../../../base/browser/ui/list/list.js";
import { IDataSource, ITreeRenderer } from "../../../../base/browser/ui/tree/tree.js";
import { CancellationToken } from "../../../../base/common/cancellation.js";
import { Event } from "../../../../base/common/event.js";
import { FuzzyScore } from "../../../../base/common/filters.js";
import { IDisposable } from "../../../../base/common/lifecycle.js";
import { URI } from "../../../../base/common/uri.js";
import { IEditorOptions } from "../../../../platform/editor/common/editor.js";
import { IWorkbenchDataTreeOptions } from "../../../../platform/list/browser/listService.js";
import { IEditorPane } from "../../../common/editor.js";
export declare enum OutlineTarget {
OutlinePane = 1,
Breadcrumbs = 2,
QuickPick = 4
}
export interface IOutlineCreator
{
matches(candidate: IEditorPane): candidate is P;
createOutline(editor: P, target: OutlineTarget, token: CancellationToken): Promise | undefined>;
}
export interface IBreadcrumbsOutlineElement {
readonly element: E;
readonly label: string;
}
export interface IBreadcrumbsDataSource {
getBreadcrumbElements(): readonly IBreadcrumbsOutlineElement[];
}
export interface IOutlineComparator {
compareByPosition(a: E, b: E): number;
compareByType(a: E, b: E): number;
compareByName(a: E, b: E): number;
}
export interface IQuickPickOutlineElement {
readonly element: E;
readonly label: string;
readonly iconClasses?: string[];
readonly ariaLabel?: string;
readonly description?: string;
}
export interface IQuickPickDataSource {
getQuickPickElements(): IQuickPickOutlineElement[];
}
export interface IOutlineListConfig {
readonly breadcrumbsDataSource: IBreadcrumbsDataSource;
readonly treeDataSource: IDataSource, E>;
readonly delegate: IListVirtualDelegate;
readonly renderers: ITreeRenderer[];
readonly comparator: IOutlineComparator;
readonly options: IWorkbenchDataTreeOptions;
readonly quickPickDataSource: IQuickPickDataSource;
}
export interface OutlineChangeEvent {
affectOnlyActiveElement?: true;
}
export interface IOutline {
readonly uri: URI | undefined;
readonly config: IOutlineListConfig;
readonly outlineKind: string;
readonly isEmpty: boolean;
readonly activeElement: E | undefined;
readonly onDidChange: Event;
reveal(entry: E, options: IEditorOptions, sideBySide: boolean, select: boolean): Promise | void;
preview(entry: E): IDisposable;
captureViewState(): IDisposable;
dispose(): void;
}
export declare enum OutlineConfigKeys {
"icons" = "outline.icons",
"collapseItems" = "outline.collapseItems",
"problemsEnabled" = "outline.problems.enabled",
"problemsColors" = "outline.problems.colors",
"problemsBadges" = "outline.problems.badges"
}
export declare enum OutlineConfigCollapseItemsValues {
Collapsed = "alwaysCollapse",
Expanded = "alwaysExpand"
}