Path: blob/main/src/vs/editor/standalone/browser/standaloneLayoutService.ts
3294 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import * as dom from '../../../base/browser/dom.js';6import { mainWindow } from '../../../base/browser/window.js';7import { coalesce } from '../../../base/common/arrays.js';8import { Event } from '../../../base/common/event.js';9import { ICodeEditorService } from '../../browser/services/codeEditorService.js';10import { InstantiationType, registerSingleton } from '../../../platform/instantiation/common/extensions.js';11import { ILayoutOffsetInfo, ILayoutService } from '../../../platform/layout/browser/layoutService.js';1213class StandaloneLayoutService implements ILayoutService {14declare readonly _serviceBrand: undefined;1516readonly onDidLayoutMainContainer = Event.None;17readonly onDidLayoutActiveContainer = Event.None;18readonly onDidLayoutContainer = Event.None;19readonly onDidChangeActiveContainer = Event.None;20readonly onDidAddContainer = Event.None;2122get mainContainer(): HTMLElement {23return this._codeEditorService.listCodeEditors().at(0)?.getContainerDomNode() ?? mainWindow.document.body;24}2526get activeContainer(): HTMLElement {27const activeCodeEditor = this._codeEditorService.getFocusedCodeEditor() ?? this._codeEditorService.getActiveCodeEditor();2829return activeCodeEditor?.getContainerDomNode() ?? this.mainContainer;30}3132get mainContainerDimension(): dom.IDimension {33return dom.getClientArea(this.mainContainer);34}3536get activeContainerDimension() {37return dom.getClientArea(this.activeContainer);38}3940readonly mainContainerOffset: ILayoutOffsetInfo = { top: 0, quickPickTop: 0 };41readonly activeContainerOffset: ILayoutOffsetInfo = { top: 0, quickPickTop: 0 };4243get containers(): Iterable<HTMLElement> {44return coalesce(this._codeEditorService.listCodeEditors().map(codeEditor => codeEditor.getContainerDomNode()));45}4647getContainer() {48return this.activeContainer;49}5051whenContainerStylesLoaded() { return undefined; }5253focus(): void {54this._codeEditorService.getFocusedCodeEditor()?.focus();55}5657constructor(58@ICodeEditorService private _codeEditorService: ICodeEditorService59) { }6061}6263export class EditorScopedLayoutService extends StandaloneLayoutService {64override get mainContainer(): HTMLElement {65return this._container;66}67constructor(68private _container: HTMLElement,69@ICodeEditorService codeEditorService: ICodeEditorService,70) {71super(codeEditorService);72}73}7475registerSingleton(ILayoutService, StandaloneLayoutService, InstantiationType.Delayed);767778