Path: blob/main/src/vs/workbench/contrib/notebook/browser/notebookAccessibleView.ts
3296 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*--------------------------------------------------------------------------------------------*/4import { AccessibleViewProviderId, AccessibleViewType, AccessibleContentProvider } from '../../../../platform/accessibility/browser/accessibleView.js';5import { IAccessibleViewImplementation } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';6import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';7import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';8import { AccessibilityVerbositySettingId } from '../../accessibility/browser/accessibilityConfiguration.js';9import { getNotebookEditorFromEditorPane } from './notebookBrowser.js';10import { NOTEBOOK_CELL_LIST_FOCUSED } from '../common/notebookContextKeys.js';11import { IEditorService } from '../../../services/editor/common/editorService.js';12import { InputFocusedContext } from '../../../../platform/contextkey/common/contextkeys.js';13import { getAllOutputsText } from './viewModel/cellOutputTextHelper.js';1415export class NotebookAccessibleView implements IAccessibleViewImplementation {16readonly priority = 100;17readonly name = 'notebook';18readonly type = AccessibleViewType.View;19readonly when = ContextKeyExpr.and(NOTEBOOK_CELL_LIST_FOCUSED, InputFocusedContext.toNegated());20getProvider(accessor: ServicesAccessor) {21const editorService = accessor.get(IEditorService);22return getAccessibleOutputProvider(editorService);23}24}2526export function getAccessibleOutputProvider(editorService: IEditorService) {27const activePane = editorService.activeEditorPane;28const notebookEditor = getNotebookEditorFromEditorPane(activePane);29const notebookViewModel = notebookEditor?.getViewModel();30const selections = notebookViewModel?.getSelections();31const notebookDocument = notebookViewModel?.notebookDocument;3233if (!selections || !notebookDocument || !notebookEditor?.textModel) {34return;35}3637const viewCell = notebookViewModel.viewCells[selections[0].start];38const outputContent = getAllOutputsText(notebookDocument, viewCell);3940if (!outputContent) {41return;42}4344return new AccessibleContentProvider(45AccessibleViewProviderId.Notebook,46{ type: AccessibleViewType.View },47() => { return outputContent; },48() => {49notebookEditor?.setFocus(selections[0]);50notebookEditor.focus();51},52AccessibilityVerbositySettingId.Notebook,53);54}55565758