Path: blob/main/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.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*--------------------------------------------------------------------------------------------*/45import { InlineChatController } from './inlineChatController.js';6import { CTX_INLINE_CHAT_FOCUSED, CTX_INLINE_CHAT_RESPONSE_FOCUSED } from '../common/inlineChat.js';7import { ICodeEditorService } from '../../../../editor/browser/services/codeEditorService.js';8import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';9import { AccessibleViewProviderId, AccessibleViewType, AccessibleContentProvider } from '../../../../platform/accessibility/browser/accessibleView.js';10import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';11import { IAccessibleViewImplementation } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';12import { MarkdownString } from '../../../../base/common/htmlContent.js';13import { renderAsPlaintext } from '../../../../base/browser/markdownRenderer.js';14import { AccessibilityVerbositySettingId } from '../../accessibility/browser/accessibilityConfiguration.js';1516export class InlineChatAccessibleView implements IAccessibleViewImplementation {17readonly priority = 100;18readonly name = 'inlineChat';19readonly when = ContextKeyExpr.or(CTX_INLINE_CHAT_FOCUSED, CTX_INLINE_CHAT_RESPONSE_FOCUSED);20readonly type = AccessibleViewType.View;21getProvider(accessor: ServicesAccessor) {22const codeEditorService = accessor.get(ICodeEditorService);2324const editor = (codeEditorService.getActiveCodeEditor() || codeEditorService.getFocusedCodeEditor());25if (!editor) {26return;27}28const controller = InlineChatController.get(editor);29if (!controller) {30return;31}32const responseContent = controller.widget.responseContent;33if (!responseContent) {34return;35}36return new AccessibleContentProvider(37AccessibleViewProviderId.InlineChat,38{ type: AccessibleViewType.View },39() => renderAsPlaintext(new MarkdownString(responseContent), { includeCodeBlocksFences: true }),40() => controller.focus(),41AccessibilityVerbositySettingId.InlineChat42);43}44}454647