@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.
Files changed (113) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +4 -3
  3. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +45 -36
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  6. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  7. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +7 -7
  8. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  9. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +23 -23
  10. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +31 -31
  11. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +10 -10
  12. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +33 -33
  13. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  14. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  15. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  16. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  17. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +2 -1
  18. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +47 -45
  19. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
  20. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -4
  21. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  22. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  24. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  25. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +1 -1
  27. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +5 -3
  29. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.d.ts +13 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +55 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  33. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.d.ts +12 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +55 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +6 -6
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +6 -6
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +2 -2
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +5 -2
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +96 -53
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +15 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +83 -10
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +26 -10
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +16 -16
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +5 -5
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatDisabledClaudeHooksContent.css +14 -0
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css +44 -0
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +15 -22
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -15
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +18 -18
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +3 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +3 -3
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +14 -5
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +8 -0
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +206 -41
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +12 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPendingDragAndDrop.d.ts +27 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPendingDragAndDrop.js +148 -0
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +5 -2
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +108 -51
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +14 -2
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +59 -15
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatSelectedTools.js +1 -2
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +2 -1
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +12 -12
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +13 -13
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +13 -5
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +90 -7
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +6 -6
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +1 -1
  91. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +14 -14
  92. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
  93. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.js +1 -1
  94. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
  95. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  96. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  97. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +32 -32
  98. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveCommon.d.ts +0 -7
  99. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveCommon.js +0 -11
  100. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.d.ts +0 -20
  101. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +0 -150
  102. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.d.ts +0 -22
  103. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +0 -338
  104. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/notebookVisibleCellObserver.d.ts +0 -18
  105. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/notebookVisibleCellObserver.js +0 -58
  106. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.d.ts +0 -75
  107. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +0 -364
  108. package/vscode/src/vs/workbench/contrib/replNotebook/browser/interactiveEditor.css +0 -21
  109. package/vscode/src/vs/workbench/contrib/replNotebook/browser/media/interactive.css +0 -36
  110. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.d.ts +0 -110
  111. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +0 -692
  112. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.d.ts +0 -40
  113. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +0 -158
@@ -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(5838, "{0} line {1}", filePathLabel, location.range.startLineNumber)));
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
- 5839,
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(5840, "Add File to Chat")),
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(5841, "Copy")),
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(5842, "Open to the Side")),
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(5843, "Go to Definition")),
423
- mnemonicTitle: ( localize(5844, "Go to &&Definition"))
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(5845, "Go to Type Definitions")),
481
- mnemonicTitle: ( localize(5846, "Go to &&Type Definitions"))
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(5847, "Go to Implementations")),
507
- mnemonicTitle: ( localize(5848, "Go to &&Implementations"))
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(5849, "Go to References")),
533
- mnemonicTitle: ( localize(5850, "Go to &&References"))
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(5851, "Applying edits"));
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(5852, "Generating edits...")) : ( localize(5853, "({0}%)...", rwRatio));
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(5854, "Edited"));
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(5855, "1 insertion")) : ( localize(5856, "{0} insertions", changes.added));
599
- const deletionsFragment = changes.removed === 1 ? ( localize(5857, "1 deletion")) : ( localize(5858, "{0} deletions", changes.removed));
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
- 5859,
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(5860, "Skip?")),
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(5861, "Activating MCP extensions...")) + " ").appendMarkdown(skipText);
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(5862, "Starting MCP servers {0}...", serverLinks)) + " ").appendMarkdown(skipText);
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
- 5863,
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
- 5864,
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(5865, "Starting {0}...", serverInfo.label));
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(5866, "Changed 1 file")) : ( localize(5867, "Changed {0} files", fileCount));
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(5868, "Open Changes"));
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(5869, "File Changes"))
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
- 5870,
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(5871, "Working...")))
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(5872, "Waiting for tool '{0}' to respond...", e.toolData.displayName)))));
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
- private readonly carousel;
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, DisposableStore, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
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(5873, "Skip all questions"));
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(5874, "Question navigation")));
78
+ this._navigationButtons.setAttribute("aria-label", ( localize(5949, "Question navigation")));
74
79
  const arrowsContainer = $(".chat-question-nav-arrows");
75
- const previousLabel = ( localize(5875, "Previous"));
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(5877, "Submit"));
286
- const nextLabel = ( localize(5876, "Next"));
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(5878, "Enter your answer")),
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(5879, "Option {0}: {1}", index + 1, option.label)));
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(5880, "Enter custom answer"));
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 && listItems.length > 0) {
492
- const focusIndex = selectedIndex >= 0 ? selectedIndex : 0;
493
- if (selectedIndex < 0) {
494
- updateSelection(0);
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(5879, "Option {0}: {1}", index + 1, option.label)));
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
- getBaseLayerHoverDelegate().setupManagedHover(getDefaultHoverDelegate("mouse"), listItem, option.label)
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(5880, "Enter custom answer"));
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 && listItems.length > 0) {
633
- const initialFocusIndex = firstCheckedIndex >= 0 ? firstCheckedIndex : 0;
634
- focusedIndex = initialFocusIndex;
635
- this._inputBoxes.add(
636
- runAtThisOrScheduleAtNextAnimationFrame(getWindow(selectContainer), () => {
637
- listItems[initialFocusIndex]?.focus();
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(5881, "Skipped"));
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(5882, ", ")));
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(5882, ", ")));
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 };