import { URI } from "../../../../base/common/uri.js"; import { Event } from "../../../../base/common/event.js"; import { IDisposable } from "../../../../base/common/lifecycle.js"; import { Command } from "../../../../editor/common/languages.js"; import { IAction } from "../../../../base/common/actions.js"; import { IMenu } from "../../../../platform/actions/common/actions.js"; import { ThemeIcon } from "../../../../base/common/themables.js"; import { IMarkdownString } from "../../../../base/common/htmlContent.js"; import { ResourceTree } from "../../../../base/common/resourceTree.js"; import { ISCMHistoryProvider } from "./history.js"; import { ITextModel } from "../../../../editor/common/model.js"; import { IObservable } from "../../../../base/common/observable.js"; import { ISCMArtifact, ISCMArtifactGroup, ISCMArtifactProvider } from "./artifact.js"; export declare const VIEWLET_ID = "workbench.view.scm"; export declare const VIEW_PANE_ID = "workbench.scm"; export declare const REPOSITORIES_VIEW_PANE_ID = "workbench.scm.repositories"; export declare const HISTORY_VIEW_PANE_ID = "workbench.scm.history"; export declare enum ViewMode { List = "list", Tree = "tree" } export interface IBaselineResourceProvider { getBaselineResource(resource: URI): Promise; } export interface ISCMResourceDecorations { icon?: URI | ThemeIcon; iconDark?: URI | ThemeIcon; tooltip?: string; strikeThrough?: boolean; faded?: boolean; } export interface ISCMResource { readonly resourceGroup: ISCMResourceGroup; readonly sourceUri: URI; readonly decorations: ISCMResourceDecorations; readonly contextValue: string | undefined; readonly command: Command | undefined; readonly multiDiffEditorOriginalUri: URI | undefined; readonly multiDiffEditorModifiedUri: URI | undefined; open(preserveFocus: boolean): Promise; } export interface ISCMResourceGroup { readonly id: string; readonly provider: ISCMProvider; readonly resources: readonly ISCMResource[]; readonly resourceTree: ResourceTree; readonly onDidChangeResources: Event; readonly label: string; contextValue: string | undefined; readonly hideWhenEmpty: boolean; readonly onDidChange: Event; readonly multiDiffEditorEnableViewChanges: boolean; } export interface ISCMProvider extends IDisposable { readonly id: string; readonly parentId?: string; readonly providerId: string; readonly label: string; readonly name: string; readonly groups: readonly ISCMResourceGroup[]; readonly onDidChangeResourceGroups: Event; readonly onDidChangeResources: Event; readonly rootUri?: URI; readonly iconPath?: URI | { light: URI; dark: URI; } | ThemeIcon; readonly isHidden?: boolean; readonly inputBoxTextModel: ITextModel; readonly contextValue: IObservable; readonly count: IObservable; readonly commitTemplate: IObservable; readonly artifactProvider: IObservable; readonly historyProvider: IObservable; readonly acceptInputCommand?: Command; readonly actionButton: IObservable; readonly statusBarCommands: IObservable; getOriginalResource(uri: URI): Promise; } export interface ISCMInputValueProviderContext { readonly resourceGroupId: string; readonly resources: readonly URI[]; } export declare enum InputValidationType { Error = 0, Warning = 1, Information = 2 } export interface IInputValidation { message: string | IMarkdownString; type: InputValidationType; } export interface IInputValidator { (value: string, cursorPosition: number): Promise; } export declare enum SCMInputChangeReason { HistoryPrevious = 0, HistoryNext = 1 } export interface ISCMInputChangeEvent { readonly value: string; readonly reason?: SCMInputChangeReason; } export interface ISCMActionButtonDescriptor { command: Command & { shortTitle?: string; }; secondaryCommands?: Command[][]; enabled: boolean; } export interface ISCMActionButton { readonly type: "actionButton"; readonly repository: ISCMRepository; readonly button: ISCMActionButtonDescriptor; } export interface ISCMInput { readonly repository: ISCMRepository; readonly value: string; setValue(value: string, fromKeyboard: boolean): void; readonly onDidChange: Event; placeholder: string; readonly onDidChangePlaceholder: Event; validateInput: IInputValidator; readonly onDidChangeValidateInput: Event; enabled: boolean; readonly onDidChangeEnablement: Event; visible: boolean; readonly onDidChangeVisibility: Event; setFocus(): void; readonly onDidChangeFocus: Event; showValidationMessage(message: string | IMarkdownString, type: InputValidationType): void; readonly onDidChangeValidationMessage: Event; clearValidation(): void; readonly onDidClearValidation: Event; showNextHistoryValue(): void; showPreviousHistoryValue(): void; } export interface ISCMRepository extends IDisposable { readonly id: string; readonly provider: ISCMProvider; readonly input: ISCMInput; } export interface ISCMTitleMenu { readonly actions: IAction[]; readonly secondaryActions: IAction[]; readonly onDidChangeTitle: Event; readonly menu: IMenu; } export interface ISCMRepositoryMenus { readonly titleMenu: ISCMTitleMenu; getRepositoryMenu(repository: ISCMRepository): IMenu; getRepositoryContextMenu(repository: ISCMRepository): IMenu; getResourceGroupMenu(group: ISCMResourceGroup): IMenu; getResourceMenu(resource: ISCMResource): IMenu; getResourceFolderMenu(group: ISCMResourceGroup): IMenu; getArtifactGroupMenu(artifactGroup: ISCMArtifactGroup): IMenu; getArtifactMenu(artifactGroup: ISCMArtifactGroup, artifact: ISCMArtifact): IMenu; } export interface ISCMMenus { getRepositoryMenus(provider: ISCMProvider): ISCMRepositoryMenus; } export declare enum ISCMRepositorySortKey { DiscoveryTime = "discoveryTime", Name = "name", Path = "path" } export declare enum ISCMRepositorySelectionMode { Single = "single", Multiple = "multiple" } export interface ISCMViewVisibleRepositoryChangeEvent { readonly added: Iterable; readonly removed: Iterable; }