Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/notebook/browser/view/notebookRenderingCommon.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { FastDomNode } from '../../../../../base/browser/fastDomNode.js';
7
import { IMouseWheelEvent } from '../../../../../base/browser/mouseEvent.js';
8
import { IListContextMenuEvent, IListEvent, IListMouseEvent } from '../../../../../base/browser/ui/list/list.js';
9
import { IListStyles } from '../../../../../base/browser/ui/list/listWidget.js';
10
import { Event } from '../../../../../base/common/event.js';
11
import { DisposableStore } from '../../../../../base/common/lifecycle.js';
12
import { ScrollEvent } from '../../../../../base/common/scrollable.js';
13
import { ICodeEditor } from '../../../../../editor/browser/editorBrowser.js';
14
import { Range } from '../../../../../editor/common/core/range.js';
15
import { Selection } from '../../../../../editor/common/core/selection.js';
16
import { IContextKeyService } from '../../../../../platform/contextkey/common/contextkey.js';
17
import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';
18
import { IWorkbenchListOptionsUpdate } from '../../../../../platform/list/browser/listService.js';
19
import { CellRevealRangeType, CellRevealType, ICellOutputViewModel, ICellViewModel, INotebookCellOverlayChangeAccessor, INotebookViewZoneChangeAccessor } from '../notebookBrowser.js';
20
import { CellPartsCollection } from './cellPart.js';
21
import { CellViewModel, NotebookViewModel } from '../viewModel/notebookViewModelImpl.js';
22
import { ICellRange } from '../../common/notebookRange.js';
23
import { createTrustedTypesPolicy } from '../../../../../base/browser/trustedTypes.js';
24
25
26
export interface INotebookCellList extends ICoordinatesConverter {
27
isDisposed: boolean;
28
inRenderingTransaction: boolean;
29
viewModel: NotebookViewModel | null;
30
webviewElement: FastDomNode<HTMLElement> | null;
31
readonly contextKeyService: IContextKeyService;
32
element(index: number): ICellViewModel | undefined;
33
elementAt(position: number): ICellViewModel | undefined;
34
elementHeight(element: ICellViewModel): number;
35
onWillScroll: Event<ScrollEvent>;
36
onDidScroll: Event<ScrollEvent>;
37
onDidChangeFocus: Event<IListEvent<ICellViewModel>>;
38
onDidChangeContentHeight: Event<number>;
39
onDidChangeVisibleRanges: Event<void>;
40
visibleRanges: ICellRange[];
41
scrollTop: number;
42
scrollHeight: number;
43
scrollLeft: number;
44
length: number;
45
rowsContainer: HTMLElement;
46
scrollableElement: HTMLElement;
47
ariaLabel: string;
48
readonly onDidRemoveOutputs: Event<readonly ICellOutputViewModel[]>;
49
readonly onDidHideOutputs: Event<readonly ICellOutputViewModel[]>;
50
readonly onDidRemoveCellsFromView: Event<readonly ICellViewModel[]>;
51
readonly onMouseUp: Event<IListMouseEvent<CellViewModel>>;
52
readonly onMouseDown: Event<IListMouseEvent<CellViewModel>>;
53
readonly onContextMenu: Event<IListContextMenuEvent<CellViewModel>>;
54
detachViewModel(): void;
55
attachViewModel(viewModel: NotebookViewModel): void;
56
attachWebview(element: HTMLElement): void;
57
clear(): void;
58
focusElement(element: ICellViewModel): void;
59
selectElements(elements: ICellViewModel[]): void;
60
getFocusedElements(): ICellViewModel[];
61
getSelectedElements(): ICellViewModel[];
62
scrollToBottom(): void;
63
revealCell(cell: ICellViewModel, revealType: CellRevealType): Promise<void>;
64
revealCells(range: ICellRange): void;
65
revealRangeInCell(cell: ICellViewModel, range: Selection | Range, revealType: CellRevealRangeType): Promise<void>;
66
revealCellOffsetInCenter(element: ICellViewModel, offset: number): void;
67
revealOffsetInCenterIfOutsideViewport(offset: number): void;
68
setHiddenAreas(_ranges: ICellRange[], triggerViewUpdate: boolean): boolean;
69
changeViewZones(callback: (accessor: INotebookViewZoneChangeAccessor) => void): void;
70
changeCellOverlays(callback: (accessor: INotebookCellOverlayChangeAccessor) => void): void;
71
getViewZoneLayoutInfo(viewZoneId: string): { height: number; top: number } | null;
72
domElementOfElement(element: ICellViewModel): HTMLElement | null;
73
focusView(): void;
74
triggerScrollFromMouseWheelEvent(browserEvent: IMouseWheelEvent): void;
75
updateElementHeight2(element: ICellViewModel, size: number, anchorElementIndex?: number | null): void;
76
domFocus(): void;
77
focusContainer(clearSelection: boolean): void;
78
setCellEditorSelection(element: ICellViewModel, range: Range): void;
79
style(styles: IListStyles): void;
80
getRenderHeight(): number;
81
getScrollHeight(): number;
82
updateOptions(options: IWorkbenchListOptionsUpdate): void;
83
layout(height?: number, width?: number): void;
84
dispose(): void;
85
}
86
87
export interface BaseCellRenderTemplate {
88
readonly rootContainer: HTMLElement;
89
readonly editorPart: HTMLElement;
90
readonly cellInputCollapsedContainer: HTMLElement;
91
readonly instantiationService: IInstantiationService;
92
readonly container: HTMLElement;
93
readonly cellContainer: HTMLElement;
94
readonly templateDisposables: DisposableStore;
95
readonly elementDisposables: DisposableStore;
96
currentRenderedCell?: ICellViewModel;
97
cellParts: CellPartsCollection;
98
toJSON: () => object;
99
}
100
101
export interface MarkdownCellRenderTemplate extends BaseCellRenderTemplate {
102
readonly editorContainer: HTMLElement;
103
readonly foldingIndicator: HTMLElement;
104
currentEditor?: ICodeEditor;
105
}
106
107
export interface CodeCellRenderTemplate extends BaseCellRenderTemplate {
108
outputContainer: FastDomNode<HTMLElement>;
109
cellOutputCollapsedContainer: HTMLElement;
110
outputShowMoreContainer: FastDomNode<HTMLElement>;
111
focusSinkElement: HTMLElement;
112
editor: ICodeEditor;
113
}
114
115
export interface ICoordinatesConverter {
116
getCellViewScrollTop(cell: ICellViewModel): number;
117
getCellViewScrollBottom(cell: ICellViewModel): number;
118
getViewIndex(cell: ICellViewModel): number | undefined;
119
getViewIndex2(modelIndex: number): number | undefined;
120
getModelIndex(cell: CellViewModel): number | undefined;
121
getModelIndex2(viewIndex: number): number | undefined;
122
getVisibleRangesPlusViewportAboveAndBelow(): ICellRange[];
123
modelIndexIsVisible(modelIndex: number): boolean;
124
convertModelIndexToViewIndex(modelIndex: number): number;
125
}
126
127
export const collapsedCellTTPolicy = createTrustedTypesPolicy('collapsedCellPreview', { createHTML: value => value });
128
129