@codingame/monaco-vscode-katex-common 26.1.0 → 26.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +45 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +23 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +31 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +33 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +47 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +96 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +15 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +83 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +26 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatDisabledClaudeHooksContent.css +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css +44 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +15 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +14 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +206 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +12 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPendingDragAndDrop.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPendingDragAndDrop.js +148 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +108 -51
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +14 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +59 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools.js +1 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +13 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +90 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +14 -14
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +32 -32
- package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveCommon.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveCommon.js +0 -11
- package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.d.ts +0 -20
- package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +0 -150
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.d.ts +0 -22
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +0 -338
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/notebookVisibleCellObserver.d.ts +0 -18
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/notebookVisibleCellObserver.js +0 -58
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.d.ts +0 -75
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +0 -364
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/interactiveEditor.css +0 -21
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/media/interactive.css +0 -36
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.d.ts +0 -110
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +0 -692
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.d.ts +0 -40
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +0 -158
package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
|
|
2
|
+
import { registerCss } from '@codingame/monaco-vscode-api/css';
|
|
3
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
4
|
+
import { $ } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
5
|
+
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
6
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
7
|
+
import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
|
|
8
|
+
import { HOOK_TYPES, HookType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
|
|
9
|
+
import { ChatCollapsibleContentPart } from './chatCollapsibleContentPart.js';
|
|
10
|
+
import * as chatHookContentPart from './media/chatHookContentPart.css';
|
|
11
|
+
|
|
12
|
+
registerCss(chatHookContentPart);
|
|
13
|
+
function getHookTypeLabel(hookType) {
|
|
14
|
+
return HOOK_TYPES.find(hook => hook.id === hookType)?.label ?? hookType;
|
|
15
|
+
}
|
|
16
|
+
let ChatHookContentPart = class ChatHookContentPart extends ChatCollapsibleContentPart {
|
|
17
|
+
constructor(hookPart, context, hoverService) {
|
|
18
|
+
const hookTypeLabel = getHookTypeLabel(hookPart.hookType);
|
|
19
|
+
const isStopped = !!hookPart.stopReason;
|
|
20
|
+
const isWarning = !!hookPart.systemMessage;
|
|
21
|
+
const toolName = hookPart.toolDisplayName;
|
|
22
|
+
const title = isStopped ? (toolName ? ( localize(5909, "Blocked {0} - {1} hook", toolName, hookTypeLabel)) : ( localize(5910, "Blocked by {0} hook", hookTypeLabel))) : (toolName ? ( localize(5911, "Warning for {0} - {1} hook", toolName, hookTypeLabel)) : ( localize(5912, "Warning from {0} hook", hookTypeLabel)));
|
|
23
|
+
super(title, context, undefined, hoverService);
|
|
24
|
+
this.hookPart = hookPart;
|
|
25
|
+
this.icon = isStopped ? Codicon.error : isWarning ? Codicon.warning : Codicon.check;
|
|
26
|
+
if (isStopped) {
|
|
27
|
+
this.domNode.classList.add("chat-hook-outcome-blocked");
|
|
28
|
+
} else if (isWarning) {
|
|
29
|
+
this.domNode.classList.add("chat-hook-outcome-warning");
|
|
30
|
+
}
|
|
31
|
+
this.setExpanded(false);
|
|
32
|
+
}
|
|
33
|
+
initContent() {
|
|
34
|
+
const content = $(".chat-hook-details.chat-used-context-list");
|
|
35
|
+
if (this.hookPart.stopReason) {
|
|
36
|
+
const reasonElement = $(".chat-hook-reason", undefined, this.hookPart.stopReason);
|
|
37
|
+
content.appendChild(reasonElement);
|
|
38
|
+
}
|
|
39
|
+
const isToolHook = this.hookPart.hookType === HookType.PreToolUse || this.hookPart.hookType === HookType.PostToolUse;
|
|
40
|
+
if (this.hookPart.systemMessage && (isToolHook || !this.hookPart.stopReason)) {
|
|
41
|
+
const messageElement = $(".chat-hook-message", undefined, this.hookPart.systemMessage);
|
|
42
|
+
content.appendChild(messageElement);
|
|
43
|
+
}
|
|
44
|
+
return content;
|
|
45
|
+
}
|
|
46
|
+
hasSameContent(other, _followingContent, _element) {
|
|
47
|
+
if (other.kind !== "hook") {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return other.hookType === this.hookPart.hookType && other.stopReason === this.hookPart.stopReason && other.systemMessage === this.hookPart.systemMessage && other.toolDisplayName === this.hookPart.toolDisplayName;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
ChatHookContentPart = ( __decorate([( __param(2, IHoverService))], ChatHookContentPart));
|
|
54
|
+
|
|
55
|
+
export { ChatHookContentPart };
|
|
@@ -220,10 +220,10 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
|
|
|
220
220
|
);
|
|
221
221
|
if (location.range) {
|
|
222
222
|
if (location.range.startLineNumber === location.range.endLineNumber) {
|
|
223
|
-
element.setAttribute("aria-label", ( localize(
|
|
223
|
+
element.setAttribute("aria-label", ( localize(5913, "{0} line {1}", filePathLabel, location.range.startLineNumber)));
|
|
224
224
|
} else {
|
|
225
225
|
element.setAttribute("aria-label", ( localize(
|
|
226
|
-
|
|
226
|
+
5914,
|
|
227
227
|
"{0} lines {1} to {2}",
|
|
228
228
|
filePathLabel,
|
|
229
229
|
location.range.startLineNumber,
|
|
@@ -302,7 +302,7 @@ registerAction2(class AddFileToChatAction extends Action2 {
|
|
|
302
302
|
constructor() {
|
|
303
303
|
super({
|
|
304
304
|
id: AddFileToChatAction.id,
|
|
305
|
-
title: ( localize2(
|
|
305
|
+
title: ( localize2(5915, "Add File to Chat")),
|
|
306
306
|
menu: [{
|
|
307
307
|
id: MenuId.ChatInlineResourceAnchorContext,
|
|
308
308
|
group: "chat",
|
|
@@ -326,7 +326,7 @@ registerAction2(class CopyResourceAction extends Action2 {
|
|
|
326
326
|
constructor() {
|
|
327
327
|
super({
|
|
328
328
|
id: CopyResourceAction.id,
|
|
329
|
-
title: ( localize2(
|
|
329
|
+
title: ( localize2(5916, "Copy")),
|
|
330
330
|
f1: false,
|
|
331
331
|
precondition: chatAttachmentResourceContextKey,
|
|
332
332
|
keybinding: {
|
|
@@ -353,7 +353,7 @@ registerAction2(class OpenToSideResourceAction extends Action2 {
|
|
|
353
353
|
constructor() {
|
|
354
354
|
super({
|
|
355
355
|
id: OpenToSideResourceAction.id,
|
|
356
|
-
title: ( localize2(
|
|
356
|
+
title: ( localize2(5917, "Open to the Side")),
|
|
357
357
|
f1: false,
|
|
358
358
|
precondition: chatAttachmentResourceContextKey,
|
|
359
359
|
keybinding: {
|
|
@@ -419,8 +419,8 @@ registerAction2(class GoToDefinitionAction extends Action2 {
|
|
|
419
419
|
super({
|
|
420
420
|
id: GoToDefinitionAction.id,
|
|
421
421
|
title: {
|
|
422
|
-
...( localize2(
|
|
423
|
-
mnemonicTitle: ( localize(
|
|
422
|
+
...( localize2(5918, "Go to Definition")),
|
|
423
|
+
mnemonicTitle: ( localize(5919, "Go to &&Definition"))
|
|
424
424
|
},
|
|
425
425
|
menu: ( [
|
|
426
426
|
MenuId.ChatInlineSymbolAnchorContext,
|
|
@@ -477,8 +477,8 @@ registerAction2(class GoToTypeDefinitionsAction extends Action2 {
|
|
|
477
477
|
super({
|
|
478
478
|
id: GoToTypeDefinitionsAction.id,
|
|
479
479
|
title: {
|
|
480
|
-
...( localize2(
|
|
481
|
-
mnemonicTitle: ( localize(
|
|
480
|
+
...( localize2(5920, "Go to Type Definitions")),
|
|
481
|
+
mnemonicTitle: ( localize(5921, "Go to &&Type Definitions"))
|
|
482
482
|
},
|
|
483
483
|
menu: ( [
|
|
484
484
|
MenuId.ChatInlineSymbolAnchorContext,
|
|
@@ -503,8 +503,8 @@ registerAction2(class GoToImplementations extends Action2 {
|
|
|
503
503
|
super({
|
|
504
504
|
id: GoToImplementations.id,
|
|
505
505
|
title: {
|
|
506
|
-
...( localize2(
|
|
507
|
-
mnemonicTitle: ( localize(
|
|
506
|
+
...( localize2(5922, "Go to Implementations")),
|
|
507
|
+
mnemonicTitle: ( localize(5923, "Go to &&Implementations"))
|
|
508
508
|
},
|
|
509
509
|
menu: ( [
|
|
510
510
|
MenuId.ChatInlineSymbolAnchorContext,
|
|
@@ -529,8 +529,8 @@ registerAction2(class GoToReferencesAction extends Action2 {
|
|
|
529
529
|
super({
|
|
530
530
|
id: GoToReferencesAction.id,
|
|
531
531
|
title: {
|
|
532
|
-
...( localize2(
|
|
533
|
-
mnemonicTitle: ( localize(
|
|
532
|
+
...( localize2(5924, "Go to References")),
|
|
533
|
+
mnemonicTitle: ( localize(5925, "Go to &&References"))
|
|
534
534
|
},
|
|
535
535
|
menu: ( [
|
|
536
536
|
MenuId.ChatInlineSymbolAnchorContext,
|
|
@@ -560,7 +560,7 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
|
|
|
560
560
|
statusIconEl.classList.add(...statusIconClasses);
|
|
561
561
|
const entry = editSession.readEntry(uri, r);
|
|
562
562
|
const rwRatio = Math.floor((entry?.rewriteRatio.read(r) || 0) * 100);
|
|
563
|
-
statusLabelEl.textContent = ( localize(
|
|
563
|
+
statusLabelEl.textContent = ( localize(5926, "Applying edits"));
|
|
564
564
|
const showAnimation = this.configurationService.getValue(ChatConfiguration.ShowCodeBlockProgressAnimation);
|
|
565
565
|
if (showAnimation) {
|
|
566
566
|
progressFill.style.width = `${rwRatio}%`;
|
|
@@ -569,13 +569,13 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
|
|
|
569
569
|
} else {
|
|
570
570
|
progressFill.style.width = "0%";
|
|
571
571
|
this.pillElement.classList.remove("progress-filling");
|
|
572
|
-
labelDetail.textContent = rwRatio === 0 || !rwRatio ? ( localize(
|
|
572
|
+
labelDetail.textContent = rwRatio === 0 || !rwRatio ? ( localize(5927, "Generating edits...")) : ( localize(5928, "({0}%)...", rwRatio));
|
|
573
573
|
}
|
|
574
574
|
} else {
|
|
575
575
|
const statusCodeicon = Codicon.check;
|
|
576
576
|
statusIconClasses = ThemeIcon.asClassNameArray(statusCodeicon);
|
|
577
577
|
statusIconEl.classList.add(...statusIconClasses);
|
|
578
|
-
statusLabelEl.textContent = ( localize(
|
|
578
|
+
statusLabelEl.textContent = ( localize(5929, "Edited"));
|
|
579
579
|
const fileKind = uri.path.endsWith("/") ? FileKind.FOLDER : FileKind.FILE;
|
|
580
580
|
pillIconClasses = getIconClasses(this.modelService, this.languageService, uri, fileKind);
|
|
581
581
|
iconEl.classList.add(...pillIconClasses);
|
|
@@ -595,10 +595,10 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
|
|
|
595
595
|
this.currentDiff = changes;
|
|
596
596
|
labelAdded.textContent = `+${changes.added}`;
|
|
597
597
|
labelRemoved.textContent = `-${changes.removed}`;
|
|
598
|
-
const insertionsFragment = changes.added === 1 ? ( localize(
|
|
599
|
-
const deletionsFragment = changes.removed === 1 ? ( localize(
|
|
598
|
+
const insertionsFragment = changes.added === 1 ? ( localize(5930, "1 insertion")) : ( localize(5931, "{0} insertions", changes.added));
|
|
599
|
+
const deletionsFragment = changes.removed === 1 ? ( localize(5932, "1 deletion")) : ( localize(5933, "{0} deletions", changes.removed));
|
|
600
600
|
const summary = ( localize(
|
|
601
|
-
|
|
601
|
+
5934,
|
|
602
602
|
"Edited {0}, {1}, {2}",
|
|
603
603
|
iconText,
|
|
604
604
|
insertionsFragment,
|
|
@@ -96,19 +96,19 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
|
|
|
96
96
|
}
|
|
97
97
|
updateDetailedProgress(state) {
|
|
98
98
|
const skipText = createMarkdownCommandLink({
|
|
99
|
-
title: ( localize(
|
|
99
|
+
title: ( localize(5935, "Skip?")),
|
|
100
100
|
id: McpCommandIds.SkipCurrentAutostart
|
|
101
101
|
});
|
|
102
102
|
let content;
|
|
103
103
|
if (state.starting.length === 0) {
|
|
104
104
|
content = ( new MarkdownString(undefined, {
|
|
105
105
|
isTrusted: true
|
|
106
|
-
})).appendText(( localize(
|
|
106
|
+
})).appendText(( localize(5936, "Activating MCP extensions...")) + " ").appendMarkdown(skipText);
|
|
107
107
|
} else {
|
|
108
108
|
const serverLinks = this.createServerCommandLinks(state.starting);
|
|
109
109
|
content = ( new MarkdownString(undefined, {
|
|
110
110
|
isTrusted: true
|
|
111
|
-
})).appendMarkdown(( localize(
|
|
111
|
+
})).appendMarkdown(( localize(5937, "Starting MCP servers {0}...", serverLinks)) + " ").appendMarkdown(skipText);
|
|
112
112
|
}
|
|
113
113
|
if (this.workingProgressPart) {
|
|
114
114
|
this.workingProgressPart.updateMessage(content);
|
|
@@ -146,12 +146,12 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
|
|
|
146
146
|
const count = serversRequiringInteraction.length;
|
|
147
147
|
const links = this.createServerCommandLinks(serversRequiringInteraction);
|
|
148
148
|
const content = count === 1 ? ( localize(
|
|
149
|
-
|
|
149
|
+
5938,
|
|
150
150
|
"The MCP server {0} may have new tools and requires interaction to start. [Start it now?]({1})",
|
|
151
151
|
links,
|
|
152
152
|
"#start"
|
|
153
153
|
)) : ( localize(
|
|
154
|
-
|
|
154
|
+
5939,
|
|
155
155
|
"The MCP servers {0} may have new tools and require interaction to start. [Start them now?]({1})",
|
|
156
156
|
links,
|
|
157
157
|
"#start"
|
|
@@ -193,7 +193,7 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
|
|
|
193
193
|
const serversToStart = state.serversRequiringInteraction;
|
|
194
194
|
for (let i = 0; i < serversToStart.length; i++) {
|
|
195
195
|
const serverInfo = serversToStart[i];
|
|
196
|
-
startLink.textContent = ( localize(
|
|
196
|
+
startLink.textContent = ( localize(5940, "Starting {0}...", serverInfo.label));
|
|
197
197
|
const server = this.mcpService.servers.get().find(s => s.definition.id === serverInfo.id);
|
|
198
198
|
if (server) {
|
|
199
199
|
await startServerAndWaitForLiveTools(server, {
|
|
@@ -64,7 +64,7 @@ let ChatMultiDiffContentPart = class ChatMultiDiffContentPart extends Disposable
|
|
|
64
64
|
const viewListButton = ( new ButtonWithIcon(viewListButtonContainer, {}));
|
|
65
65
|
this._register(autorun(reader => {
|
|
66
66
|
const fileCount = this.diffData.read(reader).resources.length;
|
|
67
|
-
viewListButton.label = fileCount === 1 ? ( localize(
|
|
67
|
+
viewListButton.label = fileCount === 1 ? ( localize(5941, "Changed 1 file")) : ( localize(5942, "Changed {0} files", fileCount));
|
|
68
68
|
}));
|
|
69
69
|
const setExpansionState = () => {
|
|
70
70
|
viewListButton.icon = this.isCollapsed ? Codicon.chevronRight : Codicon.chevronDown;
|
|
@@ -86,7 +86,7 @@ let ChatMultiDiffContentPart = class ChatMultiDiffContentPart extends Disposable
|
|
|
86
86
|
renderViewAllFileChangesButton(container) {
|
|
87
87
|
const button = container.appendChild($(".chat-view-changes-icon"));
|
|
88
88
|
button.classList.add(...ThemeIcon.asClassNameArray(Codicon.diffMultiple));
|
|
89
|
-
button.title = ( localize(
|
|
89
|
+
button.title = ( localize(5943, "Open Changes"));
|
|
90
90
|
return addDisposableListener(button, "click", e => {
|
|
91
91
|
const source = ( URI.parse(`multi-diff-editor:${( ( new Date()).getMilliseconds().toString()) + ( Math.random().toString())}`));
|
|
92
92
|
const {
|
|
@@ -143,7 +143,7 @@ let ChatMultiDiffContentPart = class ChatMultiDiffContentPart extends Disposable
|
|
|
143
143
|
alwaysConsumeMouseWheel: false,
|
|
144
144
|
accessibilityProvider: {
|
|
145
145
|
getAriaLabel: element => element.uri.path,
|
|
146
|
-
getWidgetAriaLabel: () => ( localize(
|
|
146
|
+
getWidgetAriaLabel: () => ( localize(5944, "File Changes"))
|
|
147
147
|
}
|
|
148
148
|
})
|
|
149
149
|
);
|
|
@@ -259,7 +259,7 @@ class ChatMultiDiffListRenderer {
|
|
|
259
259
|
const removedElement = changesSummary.appendChild($(".deletions"));
|
|
260
260
|
removedElement.textContent = `-${element.diff.removed}`;
|
|
261
261
|
changesSummary.setAttribute("aria-label", ( localize(
|
|
262
|
-
|
|
262
|
+
5945,
|
|
263
263
|
"{0} lines added, {1} lines removed",
|
|
264
264
|
element.diff.added,
|
|
265
265
|
element.diff.removed
|
|
@@ -133,7 +133,7 @@ let ChatWorkingProgressContentPart = class ChatWorkingProgressContentPart extend
|
|
|
133
133
|
) {
|
|
134
134
|
const progressMessage = {
|
|
135
135
|
kind: "progressMessage",
|
|
136
|
-
content: ( new MarkdownString()).appendText(( localize(
|
|
136
|
+
content: ( new MarkdownString()).appendText(( localize(5946, "Working...")))
|
|
137
137
|
};
|
|
138
138
|
super(
|
|
139
139
|
progressMessage,
|
|
@@ -150,7 +150,7 @@ let ChatWorkingProgressContentPart = class ChatWorkingProgressContentPart extend
|
|
|
150
150
|
this.domNode.classList.add("working-progress");
|
|
151
151
|
this._register(languageModelToolsService.onDidPrepareToolCallBecomeUnresponsive(e => {
|
|
152
152
|
if (isEqual(context.element.sessionResource, e.sessionResource)) {
|
|
153
|
-
this.updateMessage(( new MarkdownString(( localize(
|
|
153
|
+
this.updateMessage(( new MarkdownString(( localize(5947, "Waiting for tool '{0}' to respond...", e.toolData.displayName)))));
|
|
154
154
|
}
|
|
155
155
|
}));
|
|
156
156
|
}
|
|
@@ -4,13 +4,15 @@ import { IChatQuestionCarousel } from "@codingame/monaco-vscode-api/vscode/vs/wo
|
|
|
4
4
|
import { IChatContentPart, IChatContentPartRenderContext } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts";
|
|
5
5
|
import { IChatRendererContent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatViewModel";
|
|
6
6
|
import { ChatTreeItem } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
|
|
7
|
+
import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
|
|
7
8
|
export interface IChatQuestionCarouselOptions {
|
|
8
9
|
onSubmit: (answers: Map<string, unknown> | undefined) => void;
|
|
9
10
|
shouldAutoFocus?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export declare class ChatQuestionCarouselPart extends Disposable implements IChatContentPart {
|
|
12
|
-
|
|
13
|
+
readonly carousel: IChatQuestionCarousel;
|
|
13
14
|
private readonly _options;
|
|
15
|
+
private readonly _hoverService;
|
|
14
16
|
readonly domNode: HTMLElement;
|
|
15
17
|
private readonly _onDidChangeHeight;
|
|
16
18
|
readonly onDidChangeHeight: Event<void>;
|
|
@@ -23,6 +25,7 @@ export declare class ChatQuestionCarouselPart extends Disposable implements ICha
|
|
|
23
25
|
private _navigationButtons;
|
|
24
26
|
private _prevButton;
|
|
25
27
|
private _nextButton;
|
|
28
|
+
private readonly _nextButtonHover;
|
|
26
29
|
private _skipAllButton;
|
|
27
30
|
private _isSkipped;
|
|
28
31
|
private readonly _textInputBoxes;
|
|
@@ -35,7 +38,7 @@ export declare class ChatQuestionCarouselPart extends Disposable implements ICha
|
|
|
35
38
|
* that should be disposed when transitioning to summary view.
|
|
36
39
|
*/
|
|
37
40
|
private readonly _interactiveUIStore;
|
|
38
|
-
constructor(carousel: IChatQuestionCarousel, context: IChatContentPartRenderContext, _options: IChatQuestionCarouselOptions);
|
|
41
|
+
constructor(carousel: IChatQuestionCarousel, context: IChatContentPartRenderContext, _options: IChatQuestionCarouselOptions, _hoverService: IHoverService);
|
|
39
42
|
/**
|
|
40
43
|
* Saves the current question's answer to the answers map.
|
|
41
44
|
*/
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
|
|
2
2
|
import { registerCss } from '@codingame/monaco-vscode-api/css';
|
|
3
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
4
|
import { $, addDisposableListener, EventType, clearNode, runAtThisOrScheduleAtNextAnimationFrame, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
4
5
|
import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
|
|
5
|
-
import { getBaseLayerHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegate2';
|
|
6
|
-
import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
|
|
7
6
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
8
7
|
import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
|
|
9
|
-
import { Disposable,
|
|
8
|
+
import { Disposable, MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
10
9
|
import { hasKey } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
11
10
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
12
11
|
import { defaultButtonStyles, defaultInputBoxStyles, defaultCheckboxStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
|
|
@@ -15,18 +14,22 @@ import { InputBox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui
|
|
|
15
14
|
import { Checkbox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/toggle/toggle';
|
|
16
15
|
import { isResponseVM } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatViewModel';
|
|
17
16
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
17
|
+
import { HoverPosition } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverWidget';
|
|
18
|
+
import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
|
|
18
19
|
import * as chatQuestionCarousel from './media/chatQuestionCarousel.css';
|
|
19
20
|
|
|
20
21
|
registerCss(chatQuestionCarousel);
|
|
21
|
-
class ChatQuestionCarouselPart extends Disposable {
|
|
22
|
-
constructor(carousel, context, _options) {
|
|
22
|
+
let ChatQuestionCarouselPart = class ChatQuestionCarouselPart extends Disposable {
|
|
23
|
+
constructor(carousel, context, _options, _hoverService) {
|
|
23
24
|
super();
|
|
24
25
|
this.carousel = carousel;
|
|
25
26
|
this._options = _options;
|
|
27
|
+
this._hoverService = _hoverService;
|
|
26
28
|
this._onDidChangeHeight = this._register(( new Emitter()));
|
|
27
29
|
this.onDidChangeHeight = this._onDidChangeHeight.event;
|
|
28
30
|
this._currentIndex = 0;
|
|
29
31
|
this._answers = ( new Map());
|
|
32
|
+
this._nextButtonHover = this._register(( new MutableDisposable()));
|
|
30
33
|
this._isSkipped = false;
|
|
31
34
|
this._textInputBoxes = ( new Map());
|
|
32
35
|
this._singleSelectItems = ( new Map());
|
|
@@ -53,16 +56,18 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
53
56
|
this.domNode.append(this._questionContainer);
|
|
54
57
|
if (carousel.allowSkip) {
|
|
55
58
|
this._closeButtonContainer = $(".chat-question-close-container");
|
|
56
|
-
const skipAllTitle = ( localize(
|
|
59
|
+
const skipAllTitle = ( localize(5948, "Skip all questions"));
|
|
57
60
|
const skipAllButton = interactiveStore.add(( new Button(this._closeButtonContainer, {
|
|
58
61
|
...defaultButtonStyles,
|
|
59
62
|
secondary: true,
|
|
60
|
-
supportIcons: true
|
|
61
|
-
title: skipAllTitle
|
|
63
|
+
supportIcons: true
|
|
62
64
|
})));
|
|
63
65
|
skipAllButton.label = `$(${Codicon.close.id})`;
|
|
64
66
|
skipAllButton.element.classList.add("chat-question-nav-arrow", "chat-question-close");
|
|
65
67
|
skipAllButton.element.setAttribute("aria-label", skipAllTitle);
|
|
68
|
+
interactiveStore.add(this._hoverService.setupDelayedHover(skipAllButton.element, {
|
|
69
|
+
content: skipAllTitle
|
|
70
|
+
}));
|
|
66
71
|
this._skipAllButton = skipAllButton;
|
|
67
72
|
}
|
|
68
73
|
this._footerRow = $(".chat-question-footer-row");
|
|
@@ -70,25 +75,25 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
70
75
|
this._footerRow.appendChild(this._stepIndicator);
|
|
71
76
|
this._navigationButtons = $(".chat-question-carousel-nav");
|
|
72
77
|
this._navigationButtons.setAttribute("role", "navigation");
|
|
73
|
-
this._navigationButtons.setAttribute("aria-label", ( localize(
|
|
78
|
+
this._navigationButtons.setAttribute("aria-label", ( localize(5949, "Question navigation")));
|
|
74
79
|
const arrowsContainer = $(".chat-question-nav-arrows");
|
|
75
|
-
const previousLabel = ( localize(
|
|
80
|
+
const previousLabel = ( localize(5950, "Previous"));
|
|
76
81
|
const prevButton = interactiveStore.add(( new Button(arrowsContainer, {
|
|
77
82
|
...defaultButtonStyles,
|
|
78
83
|
secondary: true,
|
|
79
|
-
supportIcons: true
|
|
80
|
-
title: previousLabel
|
|
84
|
+
supportIcons: true
|
|
81
85
|
})));
|
|
82
86
|
prevButton.element.classList.add("chat-question-nav-arrow", "chat-question-nav-prev");
|
|
83
87
|
prevButton.label = `$(${Codicon.chevronLeft.id})`;
|
|
84
88
|
prevButton.element.setAttribute("aria-label", previousLabel);
|
|
89
|
+
interactiveStore.add(this._hoverService.setupDelayedHover(prevButton.element, {
|
|
90
|
+
content: previousLabel
|
|
91
|
+
}));
|
|
85
92
|
this._prevButton = prevButton;
|
|
86
|
-
const nextLabel = ( localize(5876, "Next"));
|
|
87
93
|
const nextButton = interactiveStore.add(( new Button(arrowsContainer, {
|
|
88
94
|
...defaultButtonStyles,
|
|
89
95
|
secondary: true,
|
|
90
|
-
supportIcons: true
|
|
91
|
-
title: nextLabel
|
|
96
|
+
supportIcons: true
|
|
92
97
|
})));
|
|
93
98
|
nextButton.element.classList.add("chat-question-nav-arrow", "chat-question-nav-next");
|
|
94
99
|
nextButton.label = `$(${Codicon.chevronRight.id})`;
|
|
@@ -282,18 +287,22 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
282
287
|
this._prevButton.enabled = this._currentIndex > 0;
|
|
283
288
|
this._prevButton.element.style.display = isSingleQuestion ? "none" : "";
|
|
284
289
|
const isLastQuestion = this._currentIndex === this.carousel.questions.length - 1;
|
|
285
|
-
const submitLabel = ( localize(
|
|
286
|
-
const nextLabel = ( localize(
|
|
290
|
+
const submitLabel = ( localize(5951, "Submit"));
|
|
291
|
+
const nextLabel = ( localize(5952, "Next"));
|
|
287
292
|
if (isLastQuestion) {
|
|
288
293
|
this._nextButton.label = submitLabel;
|
|
289
|
-
this._nextButton.element.title = submitLabel;
|
|
290
294
|
this._nextButton.element.setAttribute("aria-label", submitLabel);
|
|
291
295
|
this._nextButton.element.classList.add("chat-question-nav-submit");
|
|
296
|
+
this._nextButtonHover.value = this._hoverService.setupDelayedHover(this._nextButton.element, {
|
|
297
|
+
content: submitLabel
|
|
298
|
+
});
|
|
292
299
|
} else {
|
|
293
300
|
this._nextButton.label = `$(${Codicon.chevronRight.id})`;
|
|
294
|
-
this._nextButton.element.title = nextLabel;
|
|
295
301
|
this._nextButton.element.setAttribute("aria-label", nextLabel);
|
|
296
302
|
this._nextButton.element.classList.remove("chat-question-nav-submit");
|
|
303
|
+
this._nextButtonHover.value = this._hoverService.setupDelayedHover(this._nextButton.element, {
|
|
304
|
+
content: nextLabel
|
|
305
|
+
});
|
|
297
306
|
}
|
|
298
307
|
this._onDidChangeHeight.fire();
|
|
299
308
|
}
|
|
@@ -321,7 +330,7 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
321
330
|
}
|
|
322
331
|
renderTextInput(container, question) {
|
|
323
332
|
const inputBox = this._inputBoxes.add(( new InputBox(container, undefined, {
|
|
324
|
-
placeholder: ( localize(
|
|
333
|
+
placeholder: ( localize(5953, "Enter your answer")),
|
|
325
334
|
inputBoxStyles: defaultInputBoxStyles
|
|
326
335
|
})));
|
|
327
336
|
const previousAnswer = this._answers.get(question.id);
|
|
@@ -356,7 +365,7 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
356
365
|
options.forEach((option, index) => {
|
|
357
366
|
if (previousSelectedValue !== undefined && option.value === previousSelectedValue) {
|
|
358
367
|
selectedIndex = index;
|
|
359
|
-
} else if (selectedIndex === -1 && defaultOptionId !== undefined && option.id === defaultOptionId) {
|
|
368
|
+
} else if (selectedIndex === -1 && !previousFreeform && defaultOptionId !== undefined && option.id === defaultOptionId) {
|
|
360
369
|
selectedIndex = index;
|
|
361
370
|
}
|
|
362
371
|
});
|
|
@@ -384,7 +393,7 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
384
393
|
const listItem = $(".chat-question-list-item");
|
|
385
394
|
listItem.setAttribute("role", "option");
|
|
386
395
|
listItem.setAttribute("aria-selected", String(isSelected));
|
|
387
|
-
listItem.setAttribute("aria-label", ( localize(
|
|
396
|
+
listItem.setAttribute("aria-label", ( localize(5954, "Option {0}: {1}", index + 1, option.label)));
|
|
388
397
|
listItem.id = `option-${question.id}-${index}`;
|
|
389
398
|
listItem.tabIndex = -1;
|
|
390
399
|
const number = $(".chat-question-list-number");
|
|
@@ -412,13 +421,24 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
412
421
|
if (isSelected) {
|
|
413
422
|
listItem.classList.add("selected");
|
|
414
423
|
}
|
|
415
|
-
this._inputBoxes.add(
|
|
416
|
-
getBaseLayerHoverDelegate().setupManagedHover(getDefaultHoverDelegate("mouse"), listItem, option.label)
|
|
417
|
-
);
|
|
418
424
|
this._inputBoxes.add(addDisposableListener(listItem, EventType.CLICK, e => {
|
|
419
425
|
e.preventDefault();
|
|
420
426
|
e.stopPropagation();
|
|
421
427
|
updateSelection(index);
|
|
428
|
+
const freeform = this._freeformTextareas.get(question.id);
|
|
429
|
+
if (freeform) {
|
|
430
|
+
freeform.value = "";
|
|
431
|
+
}
|
|
432
|
+
this.handleNext();
|
|
433
|
+
}));
|
|
434
|
+
this._inputBoxes.add(this._hoverService.setupDelayedHover(listItem, {
|
|
435
|
+
content: option.label,
|
|
436
|
+
position: {
|
|
437
|
+
hoverPosition: HoverPosition.BELOW
|
|
438
|
+
},
|
|
439
|
+
appearance: {
|
|
440
|
+
showPointer: true
|
|
441
|
+
}
|
|
422
442
|
}));
|
|
423
443
|
selectContainer.appendChild(listItem);
|
|
424
444
|
listItems.push(listItem);
|
|
@@ -435,7 +455,7 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
435
455
|
freeformNumber.textContent = `${options.length + 1}`;
|
|
436
456
|
freeformContainer.appendChild(freeformNumber);
|
|
437
457
|
const freeformTextarea = $("textarea.chat-question-freeform-textarea");
|
|
438
|
-
freeformTextarea.placeholder = ( localize(
|
|
458
|
+
freeformTextarea.placeholder = ( localize(5955, "Enter custom answer"));
|
|
439
459
|
freeformTextarea.rows = 1;
|
|
440
460
|
if (previousFreeform !== undefined) {
|
|
441
461
|
freeformTextarea.value = previousFreeform;
|
|
@@ -488,16 +508,24 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
488
508
|
runAtThisOrScheduleAtNextAnimationFrame(getWindow(freeformTextarea), () => autoResize())
|
|
489
509
|
);
|
|
490
510
|
}
|
|
491
|
-
if (this._options.shouldAutoFocus !== false
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
511
|
+
if (this._options.shouldAutoFocus !== false) {
|
|
512
|
+
if (previousFreeform) {
|
|
513
|
+
this._inputBoxes.add(
|
|
514
|
+
runAtThisOrScheduleAtNextAnimationFrame(getWindow(freeformTextarea), () => {
|
|
515
|
+
freeformTextarea.focus();
|
|
516
|
+
})
|
|
517
|
+
);
|
|
518
|
+
} else if (listItems.length > 0) {
|
|
519
|
+
const focusIndex = selectedIndex >= 0 ? selectedIndex : 0;
|
|
520
|
+
if (selectedIndex < 0) {
|
|
521
|
+
updateSelection(0);
|
|
522
|
+
}
|
|
523
|
+
this._inputBoxes.add(
|
|
524
|
+
runAtThisOrScheduleAtNextAnimationFrame(getWindow(selectContainer), () => {
|
|
525
|
+
listItems[focusIndex]?.focus();
|
|
526
|
+
})
|
|
527
|
+
);
|
|
495
528
|
}
|
|
496
|
-
this._inputBoxes.add(
|
|
497
|
-
runAtThisOrScheduleAtNextAnimationFrame(getWindow(selectContainer), () => {
|
|
498
|
-
listItems[focusIndex]?.focus();
|
|
499
|
-
})
|
|
500
|
-
);
|
|
501
529
|
}
|
|
502
530
|
}
|
|
503
531
|
renderMultiSelect(container, question) {
|
|
@@ -524,13 +552,13 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
524
552
|
let isChecked = false;
|
|
525
553
|
if (previousSelectedValues && previousSelectedValues.length > 0) {
|
|
526
554
|
isChecked = previousSelectedValues.includes(option.value);
|
|
527
|
-
} else if (defaultOptionIds.includes(option.id)) {
|
|
555
|
+
} else if (!previousFreeform && defaultOptionIds.includes(option.id)) {
|
|
528
556
|
isChecked = true;
|
|
529
557
|
}
|
|
530
558
|
const listItem = $(".chat-question-list-item.multi-select");
|
|
531
559
|
listItem.setAttribute("role", "option");
|
|
532
560
|
listItem.setAttribute("aria-selected", String(isChecked));
|
|
533
|
-
listItem.setAttribute("aria-label", ( localize(
|
|
561
|
+
listItem.setAttribute("aria-label", ( localize(5954, "Option {0}: {1}", index + 1, option.label)));
|
|
534
562
|
listItem.id = `option-${question.id}-${index}`;
|
|
535
563
|
listItem.tabIndex = -1;
|
|
536
564
|
const number = $(".chat-question-list-number");
|
|
@@ -569,9 +597,15 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
569
597
|
checkbox.domNode.click();
|
|
570
598
|
}
|
|
571
599
|
}));
|
|
572
|
-
this._inputBoxes.add(
|
|
573
|
-
|
|
574
|
-
|
|
600
|
+
this._inputBoxes.add(this._hoverService.setupDelayedHover(listItem, {
|
|
601
|
+
content: option.label,
|
|
602
|
+
position: {
|
|
603
|
+
hoverPosition: HoverPosition.BELOW
|
|
604
|
+
},
|
|
605
|
+
appearance: {
|
|
606
|
+
showPointer: true
|
|
607
|
+
}
|
|
608
|
+
}));
|
|
575
609
|
selectContainer.appendChild(listItem);
|
|
576
610
|
checkboxes.push(checkbox);
|
|
577
611
|
listItems.push(listItem);
|
|
@@ -582,7 +616,7 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
582
616
|
freeformNumber.textContent = `${options.length + 1}`;
|
|
583
617
|
freeformContainer.appendChild(freeformNumber);
|
|
584
618
|
const freeformTextarea = $("textarea.chat-question-freeform-textarea");
|
|
585
|
-
freeformTextarea.placeholder = ( localize(
|
|
619
|
+
freeformTextarea.placeholder = ( localize(5955, "Enter custom answer"));
|
|
586
620
|
freeformTextarea.rows = 1;
|
|
587
621
|
if (previousFreeform !== undefined) {
|
|
588
622
|
freeformTextarea.value = previousFreeform;
|
|
@@ -629,14 +663,22 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
629
663
|
runAtThisOrScheduleAtNextAnimationFrame(getWindow(freeformTextarea), () => autoResize())
|
|
630
664
|
);
|
|
631
665
|
}
|
|
632
|
-
if (this._options.shouldAutoFocus !== false
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
)
|
|
666
|
+
if (this._options.shouldAutoFocus !== false) {
|
|
667
|
+
if (previousFreeform) {
|
|
668
|
+
this._inputBoxes.add(
|
|
669
|
+
runAtThisOrScheduleAtNextAnimationFrame(getWindow(freeformTextarea), () => {
|
|
670
|
+
freeformTextarea.focus();
|
|
671
|
+
})
|
|
672
|
+
);
|
|
673
|
+
} else if (listItems.length > 0) {
|
|
674
|
+
const initialFocusIndex = firstCheckedIndex >= 0 ? firstCheckedIndex : 0;
|
|
675
|
+
focusedIndex = initialFocusIndex;
|
|
676
|
+
this._inputBoxes.add(
|
|
677
|
+
runAtThisOrScheduleAtNextAnimationFrame(getWindow(selectContainer), () => {
|
|
678
|
+
listItems[initialFocusIndex]?.focus();
|
|
679
|
+
})
|
|
680
|
+
);
|
|
681
|
+
}
|
|
640
682
|
}
|
|
641
683
|
}
|
|
642
684
|
getCurrentAnswer() {
|
|
@@ -714,7 +756,7 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
714
756
|
renderSkippedMessage() {
|
|
715
757
|
const skippedContainer = $(".chat-question-carousel-summary");
|
|
716
758
|
const skippedMessage = $(".chat-question-summary-skipped");
|
|
717
|
-
skippedMessage.textContent = ( localize(
|
|
759
|
+
skippedMessage.textContent = ( localize(5956, "Skipped"));
|
|
718
760
|
skippedContainer.appendChild(skippedMessage);
|
|
719
761
|
this.domNode.appendChild(skippedContainer);
|
|
720
762
|
}
|
|
@@ -789,10 +831,10 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
789
831
|
if (freeformValue) {
|
|
790
832
|
labels.push(freeformValue);
|
|
791
833
|
}
|
|
792
|
-
return labels.join(( localize(
|
|
834
|
+
return labels.join(( localize(5957, ", ")));
|
|
793
835
|
}
|
|
794
836
|
if (Array.isArray(answer)) {
|
|
795
|
-
return ( answer.map(v => question.options?.find(opt => opt.value === v)?.label ?? String(v))).join(( localize(
|
|
837
|
+
return ( answer.map(v => question.options?.find(opt => opt.value === v)?.label ?? String(v))).join(( localize(5957, ", ")));
|
|
796
838
|
}
|
|
797
839
|
return String(answer);
|
|
798
840
|
}
|
|
@@ -809,6 +851,7 @@ class ChatQuestionCarouselPart extends Disposable {
|
|
|
809
851
|
addDisposable(disposable) {
|
|
810
852
|
this._register(disposable);
|
|
811
853
|
}
|
|
812
|
-
}
|
|
854
|
+
};
|
|
855
|
+
ChatQuestionCarouselPart = ( __decorate([( __param(3, IHoverService))], ChatQuestionCarouselPart));
|
|
813
856
|
|
|
814
857
|
export { ChatQuestionCarouselPart };
|