monaco-editor-core 0.56.0-dev-20260120 → 0.56.0-dev-20260121

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 (64) hide show
  1. package/esm/nls.messages.cs.js +1 -1
  2. package/esm/nls.messages.de.js +1 -1
  3. package/esm/nls.messages.es.js +1 -1
  4. package/esm/nls.messages.fr.js +1 -1
  5. package/esm/nls.messages.it.js +1 -1
  6. package/esm/nls.messages.ja.js +1 -1
  7. package/esm/nls.messages.ko.js +1 -1
  8. package/esm/nls.messages.pl.js +1 -1
  9. package/esm/nls.messages.pt-br.js +1 -1
  10. package/esm/nls.messages.ru.js +1 -1
  11. package/esm/nls.messages.tr.js +1 -1
  12. package/esm/nls.messages.zh-cn.js +1 -1
  13. package/esm/nls.messages.zh-tw.js +1 -1
  14. package/esm/vs/base/browser/dom.js +8 -0
  15. package/esm/vs/base/browser/dom.js.map +1 -1
  16. package/esm/vs/base/browser/markdownRenderer.js +1 -0
  17. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  18. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +81 -35
  19. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  20. package/esm/vs/editor/browser/controller/editContext/editContext.js +11 -0
  21. package/esm/vs/editor/browser/controller/editContext/editContext.js.map +1 -1
  22. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +39 -32
  23. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  24. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +5 -16
  25. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  26. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +39 -16
  27. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
  28. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  29. package/esm/vs/editor/browser/view.js +21 -1
  30. package/esm/vs/editor/browser/view.js.map +1 -1
  31. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +18 -0
  32. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  33. package/esm/vs/editor/common/model/bracketPairsTextModelPart/colorizedBracketPairsDecorationProvider.js +3 -3
  34. package/esm/vs/editor/common/model/bracketPairsTextModelPart/colorizedBracketPairsDecorationProvider.js.map +1 -1
  35. package/esm/vs/editor/common/model/textModel.js +4 -4
  36. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  37. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +20 -16
  38. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -1
  39. package/esm/vs/editor/common/model.js.map +1 -1
  40. package/esm/vs/editor/common/viewModel/viewModelDecorations.js +11 -4
  41. package/esm/vs/editor/common/viewModel/viewModelDecorations.js.map +1 -1
  42. package/esm/vs/editor/common/viewModel/viewModelImpl.js +25 -14
  43. package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
  44. package/esm/vs/editor/common/viewModel.js.map +1 -1
  45. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +3 -3
  46. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  47. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +28 -64
  48. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  49. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +27 -20
  50. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js +37 -10
  51. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js.map +1 -1
  52. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.css +7 -0
  53. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +22 -3
  54. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  55. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +1 -0
  56. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
  57. package/esm/vs/editor/editor.api.d.ts +5 -1
  58. package/esm/vs/platform/actionWidget/browser/actionList.js +46 -6
  59. package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
  60. package/esm/vs/platform/actionWidget/browser/actionWidget.js +8 -1
  61. package/esm/vs/platform/actionWidget/browser/actionWidget.js.map +1 -1
  62. package/monaco.d.ts +5 -1
  63. package/package.json +2 -2
  64. package/version.txt +1 -1
@@ -16,7 +16,7 @@ import { KeybindingLabel } from '../../../base/browser/ui/keybindingLabel/keybin
16
16
  import { List } from '../../../base/browser/ui/list/listWidget.js';
17
17
  import { CancellationTokenSource } from '../../../base/common/cancellation.js';
18
18
  import { Codicon } from '../../../base/common/codicons.js';
19
- import { Disposable } from '../../../base/common/lifecycle.js';
19
+ import { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';
20
20
  import { OS } from '../../../base/common/platform.js';
21
21
  import { ThemeIcon } from '../../../base/common/themables.js';
22
22
  import './actionWidget.css';
@@ -26,6 +26,8 @@ import { IKeybindingService } from '../../keybinding/common/keybinding.js';
26
26
  import { defaultListStyles } from '../../theme/browser/defaultStyles.js';
27
27
  import { asCssVariable } from '../../theme/common/colorRegistry.js';
28
28
  import { ILayoutService } from '../../layout/browser/layoutService.js';
29
+ import { IHoverService } from '../../hover/browser/hover.js';
30
+ import { MarkdownString } from '../../../base/common/htmlContent.js';
29
31
  export const acceptSelectedActionCommand = 'acceptSelectedCodeAction';
30
32
  export const previewSelectedActionCommand = 'previewSelectedCodeAction';
31
33
  class HeaderRenderer {
@@ -117,6 +119,10 @@ let ActionItemRenderer = class ActionItemRenderer {
117
119
  else if (element.disabled) {
118
120
  data.container.title = element.label;
119
121
  }
122
+ else if (element.hover?.content) {
123
+ // Don't show tooltip when hover content is configured - the rich hover will show instead
124
+ data.container.title = '';
125
+ }
120
126
  else if (actionTitle && previewTitle) {
121
127
  if (this._supportsPreview && element.canPreview) {
122
128
  data.container.title = localize(1668, "{0} to Apply, {1} to Preview", actionTitle, previewTitle);
@@ -150,16 +156,18 @@ function getKeyboardNavigationLabel(item) {
150
156
  return undefined;
151
157
  }
152
158
  let ActionList = class ActionList extends Disposable {
153
- constructor(user, preview, items, _delegate, accessibilityProvider, _contextViewService, _keybindingService, _layoutService) {
159
+ constructor(user, preview, items, _delegate, accessibilityProvider, _contextViewService, _keybindingService, _layoutService, _hoverService) {
154
160
  super();
155
161
  this._delegate = _delegate;
156
162
  this._contextViewService = _contextViewService;
157
163
  this._keybindingService = _keybindingService;
158
164
  this._layoutService = _layoutService;
165
+ this._hoverService = _hoverService;
159
166
  this._actionLineHeight = 28;
160
167
  this._headerLineHeight = 28;
161
168
  this._separatorLineHeight = 8;
162
169
  this.cts = this._register(new CancellationTokenSource());
170
+ this._hover = this._register(new MutableDisposable());
163
171
  this.domNode = document.createElement('div');
164
172
  this.domNode.classList.add('actionList');
165
173
  const virtualDelegate = {
@@ -229,6 +237,7 @@ let ActionList = class ActionList extends Disposable {
229
237
  hide(didCancel) {
230
238
  this._delegate.onHide(didCancel);
231
239
  this.cts.cancel();
240
+ this._hover.clear();
232
241
  this._contextViewService.hideContextView();
233
242
  }
234
243
  layout(minWidth) {
@@ -246,8 +255,7 @@ let ActionList = class ActionList extends Disposable {
246
255
  else {
247
256
  // For finding width dynamically (not using resize observer)
248
257
  const itemWidths = this._allMenuItems.map((_, index) => {
249
- // eslint-disable-next-line no-restricted-syntax
250
- const element = this.domNode.ownerDocument.getElementById(this._list.getElementID(index));
258
+ const element = this._getRowElement(index);
251
259
  if (element) {
252
260
  element.style.width = 'auto';
253
261
  const width = element.getBoundingClientRect().width;
@@ -305,6 +313,37 @@ let ActionList = class ActionList extends Disposable {
305
313
  const focusIndex = focused[0];
306
314
  const element = this._list.element(focusIndex);
307
315
  this._delegate.onFocus?.(element.item);
316
+ // Show hover on focus change
317
+ this._showHoverForElement(element, focusIndex);
318
+ }
319
+ _getRowElement(index) {
320
+ // eslint-disable-next-line no-restricted-syntax
321
+ return this.domNode.ownerDocument.getElementById(this._list.getElementID(index));
322
+ }
323
+ _showHoverForElement(element, index) {
324
+ let newHover;
325
+ // Show hover if the element has hover content
326
+ if (element.hover?.content && this.focusCondition(element)) {
327
+ // The List widget separates data models from DOM elements, so we need to
328
+ // look up the actual DOM node to use as the hover target.
329
+ const rowElement = this._getRowElement(index);
330
+ if (rowElement) {
331
+ const markdown = element.hover.content ? new MarkdownString(element.hover.content) : undefined;
332
+ newHover = this._hoverService.showDelayedHover({
333
+ content: markdown ?? '',
334
+ target: rowElement,
335
+ additionalClasses: ['action-widget-hover'],
336
+ position: {
337
+ hoverPosition: 0 /* HoverPosition.LEFT */,
338
+ forcePosition: false,
339
+ },
340
+ appearance: {
341
+ showPointer: true,
342
+ },
343
+ }, { groupId: `actionListHover` });
344
+ }
345
+ }
346
+ this._hover.value = newHover;
308
347
  }
309
348
  async onListHover(e) {
310
349
  const element = e.element;
@@ -316,8 +355,8 @@ let ActionList = class ActionList extends Disposable {
316
355
  if (e.index) {
317
356
  this._list.splice(e.index, 1, [element]);
318
357
  }
358
+ this._list.setFocus(typeof e.index === 'number' ? [e.index] : []);
319
359
  }
320
- this._list.setFocus(typeof e.index === 'number' ? [e.index] : []);
321
360
  }
322
361
  onListClick(e) {
323
362
  if (e.element && this.focusCondition(e.element)) {
@@ -328,7 +367,8 @@ let ActionList = class ActionList extends Disposable {
328
367
  ActionList = __decorate([
329
368
  __param(5, IContextViewService),
330
369
  __param(6, IKeybindingService),
331
- __param(7, ILayoutService)
370
+ __param(7, ILayoutService),
371
+ __param(8, IHoverService)
332
372
  ], ActionList);
333
373
  export { ActionList };
334
374
  function stripNewlines(str) {
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/platform/actionWidget/browser/actionList.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;gGAGgG;AAChG,OAAO,KAAK,GAAG,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAE9F,OAAO,EAA8B,IAAI,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAqB,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,kCAAkC,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAEvE,MAAM,CAAC,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AACtE,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;AAyCxE,MAAM,cAAc;IAEnB,IAAI,UAAU,KAAa,gDAAiC,CAAC,CAAC;IAE9D,cAAc,CAAC,SAAsB;QACpC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,aAAa,CAAC,OAA2B,EAAE,MAAc,EAAE,YAAiC;QAC3F,YAAY,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7E,CAAC;IAED,eAAe,CAAC,aAAkC;QACjD,OAAO;IACR,CAAC;CACD;AAOD,MAAM,iBAAiB;IAEtB,IAAI,UAAU,KAAa,sDAAoC,CAAC,CAAC;IAEjE,cAAc,CAAC,SAAsB;QACpC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,aAAa,CAAC,OAA2B,EAAE,MAAc,EAAE,YAAoC;QAC9F,YAAY,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,eAAe,CAAC,aAAqC;QACpD,OAAO;IACR,CAAC;CACD;AAED,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAEvB,IAAI,UAAU,KAAa,gDAAiC,CAAC,CAAC;IAE9D,YACkB,gBAAyB,EACL,kBAAsC;QAD1D,qBAAgB,GAAhB,gBAAgB,CAAS;QACL,uBAAkB,GAAlB,kBAAkB,CAAoB;IACxE,CAAC;IAEL,cAAc,CAAC,SAAsB;QACpC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnD,WAAW,CAAC,SAAS,GAAG,aAAa,CAAC;QACtC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE9B,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEtD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC3D,CAAC;IAED,aAAa,CAAC,OAA2B,EAAE,MAAc,EAAE,IAA6B;QACvF,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,0CAA0C,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrC,OAAO;QACR,CAAC;QAED,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAErD,gEAAgE;QAChE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,WAAY,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC9D,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;YAC3C,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC;QACjD,CAAC;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,WAAY,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACnE,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,WAAY,CAAC,WAAW,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC1C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,CAAC;QACtG,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,CAAC;QACxG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;QACxC,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACtC,CAAC;aAAM,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,gBAAgB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACjD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAyG,CAAtG,CAAwG,CAAtG,eAAe,EAAE,OAAO,EAAE,CAAC,EAAyG,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,uCAAhE,CAAC;YAC1I,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,EAA2E,CAAxE,CAA0E,CAAxE,OAAO,EAAE,IAA6E,EAAE,CAAxE,EAAE,CAAC,OAAgF,CAAC,CAAC,uCAAlC,CAAC;YAC5G,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,CAAC;IACF,CAAC;IAED,eAAe,CAAC,YAAqC;QACpD,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;CACD,CAAA;AAlFK,kBAAkB;IAMrB,WAAA,kBAAkB,CAAA;GANf,kBAAkB,CAkFvB;AAED,MAAM,mBAAoB,SAAQ,OAAO;IACxC,gBAAgB,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,oBAAqB,SAAQ,OAAO;IACzC,gBAAgB,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;CACjD;AAED,SAAS,0BAA0B,CAAI,IAAwB;IAC9D,6CAA6C;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAEM,IAAM,UAAU,GAAhB,MAAM,UAAc,SAAQ,UAAU;IAc5C,YACC,IAAY,EACZ,OAAgB,EAChB,KAAoC,EACnB,SAAiC,EAClD,qBAA0F,EACrE,mBAAyD,EAC1D,kBAAuD,EAC3D,cAA+C;QAE/D,KAAK,EAAE,CAAC;QANS,cAAS,GAAT,SAAS,CAAwB;QAEZ,wBAAmB,GAAnB,mBAAmB,CAAqB;QACzC,uBAAkB,GAAlB,kBAAkB,CAAoB;QAC1C,mBAAc,GAAd,cAAc,CAAgB;QAhB/C,sBAAiB,GAAG,EAAE,CAAC;QACvB,sBAAiB,GAAG,EAAE,CAAC;QACvB,yBAAoB,GAAG,CAAC,CAAC;QAIzB,QAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;QAapE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,eAAe,GAA6C;YACjE,SAAS,EAAE,OAAO,CAAC,EAAE;gBACpB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACtB;wBACC,OAAO,IAAI,CAAC,iBAAiB,CAAC;oBAC/B;wBACC,OAAO,IAAI,CAAC,oBAAoB,CAAC;oBAClC;wBACC,OAAO,IAAI,CAAC,iBAAiB,CAAC;gBAChC,CAAC;YACF,CAAC;YACD,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;SACtC,CAAC;QAGF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE;YACzE,IAAI,kBAAkB,CAAqB,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;YAC5E,IAAI,cAAc,EAAE;YACpB,IAAI,iBAAiB,EAAE;SACvB,EAAE;YACF,eAAe,EAAE,KAAK;YACtB,qBAAqB,EAAE,IAAI;YAC3B,+BAA+B,EAAE,EAAE,0BAA0B,EAAE;YAC/D,qBAAqB,EAAE;gBACtB,YAAY,EAAE,OAAO,CAAC,EAAE;oBACvB,IAAI,OAAO,CAAC,IAAI,6CAA8B,EAAE,CAAC;wBAChD,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/D,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;4BACzB,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;wBAC3D,CAAC;wBACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;4BACtB,KAAK,GAAG,QAAQ,CAAC,EAAE,EAA0F,CAAvF,CAAyF,CAAvF,0BAAkH,EAAE,CAAvF,EAAE,EAA0F,EAAE,GAArF,EAAE,CAAC,CAAyF,CAAC,QAAQ,CAAC,CAAC,6BAA3D,CAAC;wBAC5G,CAAC;wBACD,OAAO,KAAK,CAAC;oBACd,CAAC;oBACD,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,kBAAkB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAmE,CAAhE,CAAkE,CAAhE,cAA+E,CAAC,OAA1D,EAAE,OAAO,EAAE,CAAC,yBAAyB,CAAC;gBACtG,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;wBAChB;4BACC,OAAO,QAAQ,CAAC;wBACjB;4BACC,OAAO,WAAW,CAAC;wBACpB;4BACC,OAAO,WAAW,CAAC;oBACrB,CAAC;gBACF,CAAC;gBACD,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;gBAC9B,GAAG,qBAAqB;aACxB;SACD,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9E,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE,CAAC;QAClB,CAAC;IACF,CAAC;IAEO,cAAc,CAAC,OAAiC;QACvD,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,6CAA8B,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,SAAmB;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,QAAgB;QACtB,gFAAgF;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QACpF,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvE,MAAM,iBAAiB,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAClH,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,aAAa,GAAG,IAAI,CAAC,oBAAoB,GAAG,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACpI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxC,IAAI,QAAQ,GAAG,QAAQ,CAAC;QAExB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACrC,QAAQ,GAAG,GAAG,CAAC;QAChB,CAAC;aAAM,CAAC;YACP,4DAA4D;YAC5D,MAAM,UAAU,GAAa,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAU,EAAE;gBACxE,gDAAgD;gBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1F,IAAI,OAAO,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;oBAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;oBACpD,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;oBACzB,OAAO,KAAK,CAAC;gBACd,CAAC;gBACD,OAAO,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;YAEH,sGAAsG;YACtG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,eAAe,GAAG,GAAG,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;QAC5I,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC;IAED,SAAS;QACR,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED,cAAc,CAAC,OAAiB;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO;QACR,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAC/E,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEO,eAAe,CAAC,CAAiC;QACxD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO;QACR,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,YAAY,oBAAoB,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;IAEO,OAAO;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,CAAsC;QAC/D,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,6CAA8B,EAAE,CAAC;gBAC/F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1E,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAEO,WAAW,CAAC,CAAsC;QACzD,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;CACD,CAAA;AApNY,UAAU;IAoBpB,WAAA,mBAAmB,CAAA;IACnB,WAAA,kBAAkB,CAAA;IAClB,WAAA,cAAc,CAAA;GAtBJ,UAAU,CAoNtB;;AAED,SAAS,aAAa,CAAC,GAAW;IACjC,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC","file":"actionList.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../base/browser/dom.js';\nimport { KeybindingLabel } from '../../../base/browser/ui/keybindingLabel/keybindingLabel.js';\nimport { IListEvent, IListMouseEvent, IListRenderer, IListVirtualDelegate } from '../../../base/browser/ui/list/list.js';\nimport { IListAccessibilityProvider, List } from '../../../base/browser/ui/list/listWidget.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../base/common/cancellation.js';\nimport { Codicon } from '../../../base/common/codicons.js';\nimport { ResolvedKeybinding } from '../../../base/common/keybindings.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { OS } from '../../../base/common/platform.js';\nimport { ThemeIcon } from '../../../base/common/themables.js';\nimport './actionWidget.css';\nimport { localize } from '../../../nls.js';\nimport { IContextViewService } from '../../contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { defaultListStyles } from '../../theme/browser/defaultStyles.js';\nimport { asCssVariable } from '../../theme/common/colorRegistry.js';\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\n\nexport const acceptSelectedActionCommand = 'acceptSelectedCodeAction';\nexport const previewSelectedActionCommand = 'previewSelectedCodeAction';\n\nexport interface IActionListDelegate<T> {\n\tonHide(didCancel?: boolean): void;\n\tonSelect(action: T, preview?: boolean): void;\n\tonHover?(action: T, cancellationToken: CancellationToken): Promise<{ canPreview: boolean } | void>;\n\tonFocus?(action: T | undefined): void;\n}\n\nexport interface IActionListItem<T> {\n\treadonly item?: T;\n\treadonly kind: ActionListItemKind;\n\treadonly group?: { kind?: unknown; icon?: ThemeIcon; title: string };\n\treadonly disabled?: boolean;\n\treadonly label?: string;\n\treadonly description?: string;\n\treadonly keybinding?: ResolvedKeybinding;\n\tcanPreview?: boolean | undefined;\n\treadonly hideIcon?: boolean;\n\treadonly tooltip?: string;\n}\n\ninterface IActionMenuTemplateData {\n\treadonly container: HTMLElement;\n\treadonly icon: HTMLElement;\n\treadonly text: HTMLElement;\n\treadonly description?: HTMLElement;\n\treadonly keybinding: KeybindingLabel;\n}\n\nexport const enum ActionListItemKind {\n\tAction = 'action',\n\tHeader = 'header',\n\tSeparator = 'separator'\n}\n\ninterface IHeaderTemplateData {\n\treadonly container: HTMLElement;\n\treadonly text: HTMLElement;\n}\n\nclass HeaderRenderer<T> implements IListRenderer<IActionListItem<T>, IHeaderTemplateData> {\n\n\tget templateId(): string { return ActionListItemKind.Header; }\n\n\trenderTemplate(container: HTMLElement): IHeaderTemplateData {\n\t\tcontainer.classList.add('group-header');\n\n\t\tconst text = document.createElement('span');\n\t\tcontainer.append(text);\n\n\t\treturn { container, text };\n\t}\n\n\trenderElement(element: IActionListItem<T>, _index: number, templateData: IHeaderTemplateData): void {\n\t\ttemplateData.text.textContent = element.group?.title ?? element.label ?? '';\n\t}\n\n\tdisposeTemplate(_templateData: IHeaderTemplateData): void {\n\t\t// noop\n\t}\n}\n\ninterface ISeparatorTemplateData {\n\treadonly container: HTMLElement;\n\treadonly text: HTMLElement;\n}\n\nclass SeparatorRenderer<T> implements IListRenderer<IActionListItem<T>, ISeparatorTemplateData> {\n\n\tget templateId(): string { return ActionListItemKind.Separator; }\n\n\trenderTemplate(container: HTMLElement): ISeparatorTemplateData {\n\t\tcontainer.classList.add('separator');\n\n\t\tconst text = document.createElement('span');\n\t\tcontainer.append(text);\n\n\t\treturn { container, text };\n\t}\n\n\trenderElement(element: IActionListItem<T>, _index: number, templateData: ISeparatorTemplateData): void {\n\t\ttemplateData.text.textContent = element.label ?? '';\n\t}\n\n\tdisposeTemplate(_templateData: ISeparatorTemplateData): void {\n\t\t// noop\n\t}\n}\n\nclass ActionItemRenderer<T> implements IListRenderer<IActionListItem<T>, IActionMenuTemplateData> {\n\n\tget templateId(): string { return ActionListItemKind.Action; }\n\n\tconstructor(\n\t\tprivate readonly _supportsPreview: boolean,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService\n\t) { }\n\n\trenderTemplate(container: HTMLElement): IActionMenuTemplateData {\n\t\tcontainer.classList.add(this.templateId);\n\n\t\tconst icon = document.createElement('div');\n\t\ticon.className = 'icon';\n\t\tcontainer.append(icon);\n\n\t\tconst text = document.createElement('span');\n\t\ttext.className = 'title';\n\t\tcontainer.append(text);\n\n\t\tconst description = document.createElement('span');\n\t\tdescription.className = 'description';\n\t\tcontainer.append(description);\n\n\t\tconst keybinding = new KeybindingLabel(container, OS);\n\n\t\treturn { container, icon, text, description, keybinding };\n\t}\n\n\trenderElement(element: IActionListItem<T>, _index: number, data: IActionMenuTemplateData): void {\n\t\tif (element.group?.icon) {\n\t\t\tdata.icon.className = ThemeIcon.asClassName(element.group.icon);\n\t\t\tif (element.group.icon.color) {\n\t\t\t\tdata.icon.style.color = asCssVariable(element.group.icon.color.id);\n\t\t\t}\n\t\t} else {\n\t\t\tdata.icon.className = ThemeIcon.asClassName(Codicon.lightBulb);\n\t\t\tdata.icon.style.color = 'var(--vscode-editorLightBulb-foreground)';\n\t\t}\n\n\t\tif (!element.item || !element.label) {\n\t\t\treturn;\n\t\t}\n\n\t\tdom.setVisibility(!element.hideIcon, data.icon);\n\n\t\tdata.text.textContent = stripNewlines(element.label);\n\n\t\t// if there is a keybinding, prioritize over description for now\n\t\tif (element.keybinding) {\n\t\t\tdata.description!.textContent = element.keybinding.getLabel();\n\t\t\tdata.description!.style.display = 'inline';\n\t\t\tdata.description!.style.letterSpacing = '0.5px';\n\t\t} else if (element.description) {\n\t\t\tdata.description!.textContent = stripNewlines(element.description);\n\t\t\tdata.description!.style.display = 'inline';\n\t\t} else {\n\t\t\tdata.description!.textContent = '';\n\t\t\tdata.description!.style.display = 'none';\n\t\t}\n\n\t\tconst actionTitle = this._keybindingService.lookupKeybinding(acceptSelectedActionCommand)?.getLabel();\n\t\tconst previewTitle = this._keybindingService.lookupKeybinding(previewSelectedActionCommand)?.getLabel();\n\t\tdata.container.classList.toggle('option-disabled', element.disabled);\n\t\tif (element.tooltip) {\n\t\t\tdata.container.title = element.tooltip;\n\t\t} else if (element.disabled) {\n\t\t\tdata.container.title = element.label;\n\t\t} else if (actionTitle && previewTitle) {\n\t\t\tif (this._supportsPreview && element.canPreview) {\n\t\t\t\tdata.container.title = localize({ key: 'label-preview', comment: ['placeholders are keybindings, e.g \"F2 to Apply, Shift+F2 to Preview\"'] }, \"{0} to Apply, {1} to Preview\", actionTitle, previewTitle);\n\t\t\t} else {\n\t\t\t\tdata.container.title = localize({ key: 'label', comment: ['placeholder is a keybinding, e.g \"F2 to Apply\"'] }, \"{0} to Apply\", actionTitle);\n\t\t\t}\n\t\t} else {\n\t\t\tdata.container.title = '';\n\t\t}\n\t}\n\n\tdisposeTemplate(templateData: IActionMenuTemplateData): void {\n\t\ttemplateData.keybinding.dispose();\n\t}\n}\n\nclass AcceptSelectedEvent extends UIEvent {\n\tconstructor() { super('acceptSelectedAction'); }\n}\n\nclass PreviewSelectedEvent extends UIEvent {\n\tconstructor() { super('previewSelectedAction'); }\n}\n\nfunction getKeyboardNavigationLabel<T>(item: IActionListItem<T>): string | undefined {\n\t// Filter out header vs. action vs. separator\n\tif (item.kind === 'action') {\n\t\treturn item.label;\n\t}\n\treturn undefined;\n}\n\nexport class ActionList<T> extends Disposable {\n\n\tpublic readonly domNode: HTMLElement;\n\n\tprivate readonly _list: List<IActionListItem<T>>;\n\n\tprivate readonly _actionLineHeight = 28;\n\tprivate readonly _headerLineHeight = 28;\n\tprivate readonly _separatorLineHeight = 8;\n\n\tprivate readonly _allMenuItems: readonly IActionListItem<T>[];\n\n\tprivate readonly cts = this._register(new CancellationTokenSource());\n\n\tconstructor(\n\t\tuser: string,\n\t\tpreview: boolean,\n\t\titems: readonly IActionListItem<T>[],\n\t\tprivate readonly _delegate: IActionListDelegate<T>,\n\t\taccessibilityProvider: Partial<IListAccessibilityProvider<IActionListItem<T>>> | undefined,\n\t\t@IContextViewService private readonly _contextViewService: IContextViewService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@ILayoutService private readonly _layoutService: ILayoutService,\n\t) {\n\t\tsuper();\n\t\tthis.domNode = document.createElement('div');\n\t\tthis.domNode.classList.add('actionList');\n\t\tconst virtualDelegate: IListVirtualDelegate<IActionListItem<T>> = {\n\t\t\tgetHeight: element => {\n\t\t\t\tswitch (element.kind) {\n\t\t\t\t\tcase ActionListItemKind.Header:\n\t\t\t\t\t\treturn this._headerLineHeight;\n\t\t\t\t\tcase ActionListItemKind.Separator:\n\t\t\t\t\t\treturn this._separatorLineHeight;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn this._actionLineHeight;\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetTemplateId: element => element.kind\n\t\t};\n\n\n\t\tthis._list = this._register(new List(user, this.domNode, virtualDelegate, [\n\t\t\tnew ActionItemRenderer<IActionListItem<T>>(preview, this._keybindingService),\n\t\t\tnew HeaderRenderer(),\n\t\t\tnew SeparatorRenderer(),\n\t\t], {\n\t\t\tkeyboardSupport: false,\n\t\t\ttypeNavigationEnabled: true,\n\t\t\tkeyboardNavigationLabelProvider: { getKeyboardNavigationLabel },\n\t\t\taccessibilityProvider: {\n\t\t\t\tgetAriaLabel: element => {\n\t\t\t\t\tif (element.kind === ActionListItemKind.Action) {\n\t\t\t\t\t\tlet label = element.label ? stripNewlines(element?.label) : '';\n\t\t\t\t\t\tif (element.description) {\n\t\t\t\t\t\t\tlabel = label + ', ' + stripNewlines(element.description);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (element.disabled) {\n\t\t\t\t\t\t\tlabel = localize({ key: 'customQuickFixWidget.labels', comment: [`Action widget labels for accessibility.`] }, \"{0}, Disabled Reason: {1}\", label, element.disabled);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn label;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t\tgetWidgetAriaLabel: () => localize({ key: 'customQuickFixWidget', comment: [`An action widget option`] }, \"Action Widget\"),\n\t\t\t\tgetRole: (e) => {\n\t\t\t\t\tswitch (e.kind) {\n\t\t\t\t\t\tcase ActionListItemKind.Action:\n\t\t\t\t\t\t\treturn 'option';\n\t\t\t\t\t\tcase ActionListItemKind.Separator:\n\t\t\t\t\t\t\treturn 'separator';\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn 'separator';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetWidgetRole: () => 'listbox',\n\t\t\t\t...accessibilityProvider\n\t\t\t},\n\t\t}));\n\n\t\tthis._list.style(defaultListStyles);\n\n\t\tthis._register(this._list.onMouseClick(e => this.onListClick(e)));\n\t\tthis._register(this._list.onMouseOver(e => this.onListHover(e)));\n\t\tthis._register(this._list.onDidChangeFocus(() => this.onFocus()));\n\t\tthis._register(this._list.onDidChangeSelection(e => this.onListSelection(e)));\n\n\t\tthis._allMenuItems = items;\n\t\tthis._list.splice(0, this._list.length, this._allMenuItems);\n\n\t\tif (this._list.length) {\n\t\t\tthis.focusNext();\n\t\t}\n\t}\n\n\tprivate focusCondition(element: IActionListItem<unknown>): boolean {\n\t\treturn !element.disabled && element.kind === ActionListItemKind.Action;\n\t}\n\n\thide(didCancel?: boolean): void {\n\t\tthis._delegate.onHide(didCancel);\n\t\tthis.cts.cancel();\n\t\tthis._contextViewService.hideContextView();\n\t}\n\n\tlayout(minWidth: number): number {\n\t\t// Updating list height, depending on how many separators and headers there are.\n\t\tconst numHeaders = this._allMenuItems.filter(item => item.kind === 'header').length;\n\t\tconst numSeparators = this._allMenuItems.filter(item => item.kind === 'separator').length;\n\t\tconst itemsHeight = this._allMenuItems.length * this._actionLineHeight;\n\t\tconst heightWithHeaders = itemsHeight + numHeaders * this._headerLineHeight - numHeaders * this._actionLineHeight;\n\t\tconst heightWithSeparators = heightWithHeaders + numSeparators * this._separatorLineHeight - numSeparators * this._actionLineHeight;\n\t\tthis._list.layout(heightWithSeparators);\n\t\tlet maxWidth = minWidth;\n\n\t\tif (this._allMenuItems.length >= 50) {\n\t\t\tmaxWidth = 380;\n\t\t} else {\n\t\t\t// For finding width dynamically (not using resize observer)\n\t\t\tconst itemWidths: number[] = this._allMenuItems.map((_, index): number => {\n\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\tconst element = this.domNode.ownerDocument.getElementById(this._list.getElementID(index));\n\t\t\t\tif (element) {\n\t\t\t\t\telement.style.width = 'auto';\n\t\t\t\t\tconst width = element.getBoundingClientRect().width;\n\t\t\t\t\telement.style.width = '';\n\t\t\t\t\treturn width;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t});\n\n\t\t\t// resize observer - can be used in the future since list widget supports dynamic height but not width\n\t\t\tmaxWidth = Math.max(...itemWidths, minWidth);\n\t\t}\n\n\t\tconst maxVhPrecentage = 0.7;\n\t\tconst height = Math.min(heightWithSeparators, this._layoutService.getContainer(dom.getWindow(this.domNode)).clientHeight * maxVhPrecentage);\n\t\tthis._list.layout(height, maxWidth);\n\n\t\tthis.domNode.style.height = `${height}px`;\n\n\t\tthis._list.domFocus();\n\t\treturn maxWidth;\n\t}\n\n\tfocusPrevious() {\n\t\tthis._list.focusPrevious(1, true, undefined, this.focusCondition);\n\t}\n\n\tfocusNext() {\n\t\tthis._list.focusNext(1, true, undefined, this.focusCondition);\n\t}\n\n\tacceptSelected(preview?: boolean) {\n\t\tconst focused = this._list.getFocus();\n\t\tif (focused.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst focusIndex = focused[0];\n\t\tconst element = this._list.element(focusIndex);\n\t\tif (!this.focusCondition(element)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = preview ? new PreviewSelectedEvent() : new AcceptSelectedEvent();\n\t\tthis._list.setSelection([focusIndex], event);\n\t}\n\n\tprivate onListSelection(e: IListEvent<IActionListItem<T>>): void {\n\t\tif (!e.elements.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst element = e.elements[0];\n\t\tif (element.item && this.focusCondition(element)) {\n\t\t\tthis._delegate.onSelect(element.item, e.browserEvent instanceof PreviewSelectedEvent);\n\t\t} else {\n\t\t\tthis._list.setSelection([]);\n\t\t}\n\t}\n\n\tprivate onFocus() {\n\t\tconst focused = this._list.getFocus();\n\t\tif (focused.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst focusIndex = focused[0];\n\t\tconst element = this._list.element(focusIndex);\n\t\tthis._delegate.onFocus?.(element.item);\n\t}\n\n\tprivate async onListHover(e: IListMouseEvent<IActionListItem<T>>) {\n\t\tconst element = e.element;\n\t\tif (element && element.item && this.focusCondition(element)) {\n\t\t\tif (this._delegate.onHover && !element.disabled && element.kind === ActionListItemKind.Action) {\n\t\t\t\tconst result = await this._delegate.onHover(element.item, this.cts.token);\n\t\t\t\telement.canPreview = result ? result.canPreview : undefined;\n\t\t\t}\n\t\t\tif (e.index) {\n\t\t\t\tthis._list.splice(e.index, 1, [element]);\n\t\t\t}\n\t\t}\n\n\t\tthis._list.setFocus(typeof e.index === 'number' ? [e.index] : []);\n\t}\n\n\tprivate onListClick(e: IListMouseEvent<IActionListItem<T>>): void {\n\t\tif (e.element && this.focusCondition(e.element)) {\n\t\t\tthis._list.setFocus([]);\n\t\t}\n\t}\n}\n\nfunction stripNewlines(str: string): string {\n\treturn str.replace(/\\r\\n|\\r|\\n/g, ' ');\n}\n"]}
1
+ {"version":3,"sources":["vs/platform/actionWidget/browser/actionList.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;gGAGgG;AAChG,OAAO,KAAK,GAAG,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAE9F,OAAO,EAA8B,IAAI,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAqB,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,EAAE,EAAE,MAAM,kCAAkC,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAIrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AACtE,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;AAuDxE,MAAM,cAAc;IAEnB,IAAI,UAAU,KAAa,gDAAiC,CAAC,CAAC;IAE9D,cAAc,CAAC,SAAsB;QACpC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAExC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,aAAa,CAAC,OAA2B,EAAE,MAAc,EAAE,YAAiC;QAC3F,YAAY,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7E,CAAC;IAED,eAAe,CAAC,aAAkC;QACjD,OAAO;IACR,CAAC;CACD;AAOD,MAAM,iBAAiB;IAEtB,IAAI,UAAU,KAAa,sDAAoC,CAAC,CAAC;IAEjE,cAAc,CAAC,SAAsB;QACpC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,aAAa,CAAC,OAA2B,EAAE,MAAc,EAAE,YAAoC;QAC9F,YAAY,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,eAAe,CAAC,aAAqC;QACpD,OAAO;IACR,CAAC;CACD;AAED,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAEvB,IAAI,UAAU,KAAa,gDAAiC,CAAC,CAAC;IAE9D,YACkB,gBAAyB,EACL,kBAAsC;QAD1D,qBAAgB,GAAhB,gBAAgB,CAAS;QACL,uBAAkB,GAAlB,kBAAkB,CAAoB;IACxE,CAAC;IAEL,cAAc,CAAC,SAAsB;QACpC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnD,WAAW,CAAC,SAAS,GAAG,aAAa,CAAC;QACtC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE9B,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEtD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC3D,CAAC;IAED,aAAa,CAAC,OAA2B,EAAE,MAAc,EAAE,IAA6B;QACvF,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,0CAA0C,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrC,OAAO;QACR,CAAC;QAED,GAAG,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAErD,gEAAgE;QAChE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,WAAY,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC9D,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;YAC3C,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC;QACjD,CAAC;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,WAAY,CAAC,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACnE,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,WAAY,CAAC,WAAW,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC1C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,EAAE,QAAQ,EAAE,CAAC;QACtG,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,CAAC;QACxG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;QACxC,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACtC,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACnC,yFAAyF;YACzF,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,gBAAgB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACjD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAyG,CAAtG,CAAwG,CAAtG,eAAe,EAAE,OAAO,EAAE,CAAC,EAAyG,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,uCAAhE,CAAC;YAC1I,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,EAA2E,CAAxE,CAA0E,CAAxE,OAAO,EAAE,IAA6E,EAAE,CAAxE,EAAE,CAAC,OAAgF,CAAC,CAAC,uCAAlC,CAAC;YAC5G,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,CAAC;IACF,CAAC;IAED,eAAe,CAAC,YAAqC;QACpD,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;CACD,CAAA;AArFK,kBAAkB;IAMrB,WAAA,kBAAkB,CAAA;GANf,kBAAkB,CAqFvB;AAED,MAAM,mBAAoB,SAAQ,OAAO;IACxC,gBAAgB,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,oBAAqB,SAAQ,OAAO;IACzC,gBAAgB,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;CACjD;AAED,SAAS,0BAA0B,CAAI,IAAwB;IAC9D,6CAA6C;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAEM,IAAM,UAAU,GAAhB,MAAM,UAAc,SAAQ,UAAU;IAgB5C,YACC,IAAY,EACZ,OAAgB,EAChB,KAAoC,EACnB,SAAiC,EAClD,qBAA0F,EACrE,mBAAyD,EAC1D,kBAAuD,EAC3D,cAA+C,EAChD,aAA6C;QAE5D,KAAK,EAAE,CAAC;QAPS,cAAS,GAAT,SAAS,CAAwB;QAEZ,wBAAmB,GAAnB,mBAAmB,CAAqB;QACzC,uBAAkB,GAAlB,kBAAkB,CAAoB;QAC1C,mBAAc,GAAd,cAAc,CAAgB;QAC/B,kBAAa,GAAb,aAAa,CAAe;QAnB5C,sBAAiB,GAAG,EAAE,CAAC;QACvB,sBAAiB,GAAG,EAAE,CAAC;QACvB,yBAAoB,GAAG,CAAC,CAAC;QAIzB,QAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;QAE7D,WAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,EAAgB,CAAC,CAAC;QActE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,eAAe,GAA6C;YACjE,SAAS,EAAE,OAAO,CAAC,EAAE;gBACpB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACtB;wBACC,OAAO,IAAI,CAAC,iBAAiB,CAAC;oBAC/B;wBACC,OAAO,IAAI,CAAC,oBAAoB,CAAC;oBAClC;wBACC,OAAO,IAAI,CAAC,iBAAiB,CAAC;gBAChC,CAAC;YACF,CAAC;YACD,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;SACtC,CAAC;QAGF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE;YACzE,IAAI,kBAAkB,CAAqB,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;YAC5E,IAAI,cAAc,EAAE;YACpB,IAAI,iBAAiB,EAAE;SACvB,EAAE;YACF,eAAe,EAAE,KAAK;YACtB,qBAAqB,EAAE,IAAI;YAC3B,+BAA+B,EAAE,EAAE,0BAA0B,EAAE;YAC/D,qBAAqB,EAAE;gBACtB,YAAY,EAAE,OAAO,CAAC,EAAE;oBACvB,IAAI,OAAO,CAAC,IAAI,6CAA8B,EAAE,CAAC;wBAChD,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/D,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;4BACzB,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;wBAC3D,CAAC;wBACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;4BACtB,KAAK,GAAG,QAAQ,CAAC,EAAE,EAA0F,CAAvF,CAAyF,CAAvF,0BAAkH,EAAE,CAAvF,EAAE,EAA0F,EAAE,GAArF,EAAE,CAAC,CAAyF,CAAC,QAAQ,CAAC,CAAC,6BAA3D,CAAC;wBAC5G,CAAC;wBACD,OAAO,KAAK,CAAC;oBACd,CAAC;oBACD,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,kBAAkB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAmE,CAAhE,CAAkE,CAAhE,cAA+E,CAAC,OAA1D,EAAE,OAAO,EAAE,CAAC,yBAAyB,CAAC;gBACtG,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;wBAChB;4BACC,OAAO,QAAQ,CAAC;wBACjB;4BACC,OAAO,WAAW,CAAC;wBACpB;4BACC,OAAO,WAAW,CAAC;oBACrB,CAAC;gBACF,CAAC;gBACD,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;gBAC9B,GAAG,qBAAqB;aACxB;SACD,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9E,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE,CAAC;QAClB,CAAC;IACF,CAAC;IAEO,cAAc,CAAC,OAAiC;QACvD,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,6CAA8B,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,SAAmB;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,QAAgB;QACtB,gFAAgF;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QACpF,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvE,MAAM,iBAAiB,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAClH,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,aAAa,GAAG,IAAI,CAAC,oBAAoB,GAAG,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACpI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACxC,IAAI,QAAQ,GAAG,QAAQ,CAAC;QAExB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACrC,QAAQ,GAAG,GAAG,CAAC;QAChB,CAAC;aAAM,CAAC;YACP,4DAA4D;YAC5D,MAAM,UAAU,GAAa,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAU,EAAE;gBACxE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3C,IAAI,OAAO,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;oBAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;oBACpD,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;oBACzB,OAAO,KAAK,CAAC;gBACd,CAAC;gBACD,OAAO,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;YAEH,sGAAsG;YACtG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,eAAe,GAAG,GAAG,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;QAC5I,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC;IAED,SAAS;QACR,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED,cAAc,CAAC,OAAiB;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO;QACR,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAC/E,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEO,eAAe,CAAC,CAAiC;QACxD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO;QACR,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,YAAY,oBAAoB,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;IAEO,OAAO;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEvC,6BAA6B;QAC7B,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAEO,cAAc,CAAC,KAAa;QACnC,gDAAgD;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IAEO,oBAAoB,CAAC,OAA2B,EAAE,KAAa;QACtE,IAAI,QAAkC,CAAC;QAEvC,8CAA8C;QAC9C,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,yEAAyE;YACzE,0DAA0D;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,UAAU,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/F,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;oBAC9C,OAAO,EAAE,QAAQ,IAAI,EAAE;oBACvB,MAAM,EAAE,UAAU;oBAClB,iBAAiB,EAAE,CAAC,qBAAqB,CAAC;oBAC1C,QAAQ,EAAE;wBACT,aAAa,4BAAoB;wBACjC,aAAa,EAAE,KAAK;qBACpB;oBACD,UAAU,EAAE;wBACX,WAAW,EAAE,IAAI;qBACjB;iBACD,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,CAAsC;QAC/D,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAE1B,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,6CAA8B,EAAE,CAAC;gBAC/F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1E,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACF,CAAC;IAEO,WAAW,CAAC,CAAsC;QACzD,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;CACD,CAAA;AA5PY,UAAU;IAsBpB,WAAA,mBAAmB,CAAA;IACnB,WAAA,kBAAkB,CAAA;IAClB,WAAA,cAAc,CAAA;IACd,WAAA,aAAa,CAAA;GAzBH,UAAU,CA4PtB;;AAED,SAAS,aAAa,CAAC,GAAW;IACjC,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC","file":"actionList.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../base/browser/dom.js';\nimport { KeybindingLabel } from '../../../base/browser/ui/keybindingLabel/keybindingLabel.js';\nimport { IListEvent, IListMouseEvent, IListRenderer, IListVirtualDelegate } from '../../../base/browser/ui/list/list.js';\nimport { IListAccessibilityProvider, List } from '../../../base/browser/ui/list/listWidget.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../base/common/cancellation.js';\nimport { Codicon } from '../../../base/common/codicons.js';\nimport { ResolvedKeybinding } from '../../../base/common/keybindings.js';\nimport { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\nimport { OS } from '../../../base/common/platform.js';\nimport { ThemeIcon } from '../../../base/common/themables.js';\nimport './actionWidget.css';\nimport { localize } from '../../../nls.js';\nimport { IContextViewService } from '../../contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { defaultListStyles } from '../../theme/browser/defaultStyles.js';\nimport { asCssVariable } from '../../theme/common/colorRegistry.js';\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\nimport { IHoverService } from '../../hover/browser/hover.js';\nimport { MarkdownString } from '../../../base/common/htmlContent.js';\nimport { HoverPosition } from '../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverWidget } from '../../../base/browser/ui/hover/hover.js';\n\nexport const acceptSelectedActionCommand = 'acceptSelectedCodeAction';\nexport const previewSelectedActionCommand = 'previewSelectedCodeAction';\n\nexport interface IActionListDelegate<T> {\n\tonHide(didCancel?: boolean): void;\n\tonSelect(action: T, preview?: boolean): void;\n\tonHover?(action: T, cancellationToken: CancellationToken): Promise<{ canPreview: boolean } | void>;\n\tonFocus?(action: T | undefined): void;\n}\n\n/**\n * Optional hover configuration shown when focusing/hovering over an action list item.\n */\nexport interface IActionListItemHover {\n\t/**\n\t * Content to display in the hover.\n\t */\n\treadonly content?: string;\n}\n\nexport interface IActionListItem<T> {\n\treadonly item?: T;\n\treadonly kind: ActionListItemKind;\n\treadonly group?: { kind?: unknown; icon?: ThemeIcon; title: string };\n\treadonly disabled?: boolean;\n\treadonly label?: string;\n\treadonly description?: string;\n\t/**\n\t * Optional hover configuration shown when focusing/hovering over the item.\n\t */\n\treadonly hover?: IActionListItemHover;\n\treadonly keybinding?: ResolvedKeybinding;\n\tcanPreview?: boolean | undefined;\n\treadonly hideIcon?: boolean;\n\treadonly tooltip?: string;\n}\n\ninterface IActionMenuTemplateData {\n\treadonly container: HTMLElement;\n\treadonly icon: HTMLElement;\n\treadonly text: HTMLElement;\n\treadonly description?: HTMLElement;\n\treadonly keybinding: KeybindingLabel;\n}\n\nexport const enum ActionListItemKind {\n\tAction = 'action',\n\tHeader = 'header',\n\tSeparator = 'separator'\n}\n\ninterface IHeaderTemplateData {\n\treadonly container: HTMLElement;\n\treadonly text: HTMLElement;\n}\n\nclass HeaderRenderer<T> implements IListRenderer<IActionListItem<T>, IHeaderTemplateData> {\n\n\tget templateId(): string { return ActionListItemKind.Header; }\n\n\trenderTemplate(container: HTMLElement): IHeaderTemplateData {\n\t\tcontainer.classList.add('group-header');\n\n\t\tconst text = document.createElement('span');\n\t\tcontainer.append(text);\n\n\t\treturn { container, text };\n\t}\n\n\trenderElement(element: IActionListItem<T>, _index: number, templateData: IHeaderTemplateData): void {\n\t\ttemplateData.text.textContent = element.group?.title ?? element.label ?? '';\n\t}\n\n\tdisposeTemplate(_templateData: IHeaderTemplateData): void {\n\t\t// noop\n\t}\n}\n\ninterface ISeparatorTemplateData {\n\treadonly container: HTMLElement;\n\treadonly text: HTMLElement;\n}\n\nclass SeparatorRenderer<T> implements IListRenderer<IActionListItem<T>, ISeparatorTemplateData> {\n\n\tget templateId(): string { return ActionListItemKind.Separator; }\n\n\trenderTemplate(container: HTMLElement): ISeparatorTemplateData {\n\t\tcontainer.classList.add('separator');\n\n\t\tconst text = document.createElement('span');\n\t\tcontainer.append(text);\n\n\t\treturn { container, text };\n\t}\n\n\trenderElement(element: IActionListItem<T>, _index: number, templateData: ISeparatorTemplateData): void {\n\t\ttemplateData.text.textContent = element.label ?? '';\n\t}\n\n\tdisposeTemplate(_templateData: ISeparatorTemplateData): void {\n\t\t// noop\n\t}\n}\n\nclass ActionItemRenderer<T> implements IListRenderer<IActionListItem<T>, IActionMenuTemplateData> {\n\n\tget templateId(): string { return ActionListItemKind.Action; }\n\n\tconstructor(\n\t\tprivate readonly _supportsPreview: boolean,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService\n\t) { }\n\n\trenderTemplate(container: HTMLElement): IActionMenuTemplateData {\n\t\tcontainer.classList.add(this.templateId);\n\n\t\tconst icon = document.createElement('div');\n\t\ticon.className = 'icon';\n\t\tcontainer.append(icon);\n\n\t\tconst text = document.createElement('span');\n\t\ttext.className = 'title';\n\t\tcontainer.append(text);\n\n\t\tconst description = document.createElement('span');\n\t\tdescription.className = 'description';\n\t\tcontainer.append(description);\n\n\t\tconst keybinding = new KeybindingLabel(container, OS);\n\n\t\treturn { container, icon, text, description, keybinding };\n\t}\n\n\trenderElement(element: IActionListItem<T>, _index: number, data: IActionMenuTemplateData): void {\n\t\tif (element.group?.icon) {\n\t\t\tdata.icon.className = ThemeIcon.asClassName(element.group.icon);\n\t\t\tif (element.group.icon.color) {\n\t\t\t\tdata.icon.style.color = asCssVariable(element.group.icon.color.id);\n\t\t\t}\n\t\t} else {\n\t\t\tdata.icon.className = ThemeIcon.asClassName(Codicon.lightBulb);\n\t\t\tdata.icon.style.color = 'var(--vscode-editorLightBulb-foreground)';\n\t\t}\n\n\t\tif (!element.item || !element.label) {\n\t\t\treturn;\n\t\t}\n\n\t\tdom.setVisibility(!element.hideIcon, data.icon);\n\n\t\tdata.text.textContent = stripNewlines(element.label);\n\n\t\t// if there is a keybinding, prioritize over description for now\n\t\tif (element.keybinding) {\n\t\t\tdata.description!.textContent = element.keybinding.getLabel();\n\t\t\tdata.description!.style.display = 'inline';\n\t\t\tdata.description!.style.letterSpacing = '0.5px';\n\t\t} else if (element.description) {\n\t\t\tdata.description!.textContent = stripNewlines(element.description);\n\t\t\tdata.description!.style.display = 'inline';\n\t\t} else {\n\t\t\tdata.description!.textContent = '';\n\t\t\tdata.description!.style.display = 'none';\n\t\t}\n\n\t\tconst actionTitle = this._keybindingService.lookupKeybinding(acceptSelectedActionCommand)?.getLabel();\n\t\tconst previewTitle = this._keybindingService.lookupKeybinding(previewSelectedActionCommand)?.getLabel();\n\t\tdata.container.classList.toggle('option-disabled', element.disabled);\n\t\tif (element.tooltip) {\n\t\t\tdata.container.title = element.tooltip;\n\t\t} else if (element.disabled) {\n\t\t\tdata.container.title = element.label;\n\t\t} else if (element.hover?.content) {\n\t\t\t// Don't show tooltip when hover content is configured - the rich hover will show instead\n\t\t\tdata.container.title = '';\n\t\t} else if (actionTitle && previewTitle) {\n\t\t\tif (this._supportsPreview && element.canPreview) {\n\t\t\t\tdata.container.title = localize({ key: 'label-preview', comment: ['placeholders are keybindings, e.g \"F2 to Apply, Shift+F2 to Preview\"'] }, \"{0} to Apply, {1} to Preview\", actionTitle, previewTitle);\n\t\t\t} else {\n\t\t\t\tdata.container.title = localize({ key: 'label', comment: ['placeholder is a keybinding, e.g \"F2 to Apply\"'] }, \"{0} to Apply\", actionTitle);\n\t\t\t}\n\t\t} else {\n\t\t\tdata.container.title = '';\n\t\t}\n\t}\n\n\tdisposeTemplate(templateData: IActionMenuTemplateData): void {\n\t\ttemplateData.keybinding.dispose();\n\t}\n}\n\nclass AcceptSelectedEvent extends UIEvent {\n\tconstructor() { super('acceptSelectedAction'); }\n}\n\nclass PreviewSelectedEvent extends UIEvent {\n\tconstructor() { super('previewSelectedAction'); }\n}\n\nfunction getKeyboardNavigationLabel<T>(item: IActionListItem<T>): string | undefined {\n\t// Filter out header vs. action vs. separator\n\tif (item.kind === 'action') {\n\t\treturn item.label;\n\t}\n\treturn undefined;\n}\n\nexport class ActionList<T> extends Disposable {\n\n\tpublic readonly domNode: HTMLElement;\n\n\tprivate readonly _list: List<IActionListItem<T>>;\n\n\tprivate readonly _actionLineHeight = 28;\n\tprivate readonly _headerLineHeight = 28;\n\tprivate readonly _separatorLineHeight = 8;\n\n\tprivate readonly _allMenuItems: readonly IActionListItem<T>[];\n\n\tprivate readonly cts = this._register(new CancellationTokenSource());\n\n\tprivate _hover = this._register(new MutableDisposable<IHoverWidget>());\n\n\tconstructor(\n\t\tuser: string,\n\t\tpreview: boolean,\n\t\titems: readonly IActionListItem<T>[],\n\t\tprivate readonly _delegate: IActionListDelegate<T>,\n\t\taccessibilityProvider: Partial<IListAccessibilityProvider<IActionListItem<T>>> | undefined,\n\t\t@IContextViewService private readonly _contextViewService: IContextViewService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@ILayoutService private readonly _layoutService: ILayoutService,\n\t\t@IHoverService private readonly _hoverService: IHoverService,\n\t) {\n\t\tsuper();\n\t\tthis.domNode = document.createElement('div');\n\t\tthis.domNode.classList.add('actionList');\n\t\tconst virtualDelegate: IListVirtualDelegate<IActionListItem<T>> = {\n\t\t\tgetHeight: element => {\n\t\t\t\tswitch (element.kind) {\n\t\t\t\t\tcase ActionListItemKind.Header:\n\t\t\t\t\t\treturn this._headerLineHeight;\n\t\t\t\t\tcase ActionListItemKind.Separator:\n\t\t\t\t\t\treturn this._separatorLineHeight;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn this._actionLineHeight;\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetTemplateId: element => element.kind\n\t\t};\n\n\n\t\tthis._list = this._register(new List(user, this.domNode, virtualDelegate, [\n\t\t\tnew ActionItemRenderer<IActionListItem<T>>(preview, this._keybindingService),\n\t\t\tnew HeaderRenderer(),\n\t\t\tnew SeparatorRenderer(),\n\t\t], {\n\t\t\tkeyboardSupport: false,\n\t\t\ttypeNavigationEnabled: true,\n\t\t\tkeyboardNavigationLabelProvider: { getKeyboardNavigationLabel },\n\t\t\taccessibilityProvider: {\n\t\t\t\tgetAriaLabel: element => {\n\t\t\t\t\tif (element.kind === ActionListItemKind.Action) {\n\t\t\t\t\t\tlet label = element.label ? stripNewlines(element?.label) : '';\n\t\t\t\t\t\tif (element.description) {\n\t\t\t\t\t\t\tlabel = label + ', ' + stripNewlines(element.description);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (element.disabled) {\n\t\t\t\t\t\t\tlabel = localize({ key: 'customQuickFixWidget.labels', comment: [`Action widget labels for accessibility.`] }, \"{0}, Disabled Reason: {1}\", label, element.disabled);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn label;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t\tgetWidgetAriaLabel: () => localize({ key: 'customQuickFixWidget', comment: [`An action widget option`] }, \"Action Widget\"),\n\t\t\t\tgetRole: (e) => {\n\t\t\t\t\tswitch (e.kind) {\n\t\t\t\t\t\tcase ActionListItemKind.Action:\n\t\t\t\t\t\t\treturn 'option';\n\t\t\t\t\t\tcase ActionListItemKind.Separator:\n\t\t\t\t\t\t\treturn 'separator';\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn 'separator';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetWidgetRole: () => 'listbox',\n\t\t\t\t...accessibilityProvider\n\t\t\t},\n\t\t}));\n\n\t\tthis._list.style(defaultListStyles);\n\n\t\tthis._register(this._list.onMouseClick(e => this.onListClick(e)));\n\t\tthis._register(this._list.onMouseOver(e => this.onListHover(e)));\n\t\tthis._register(this._list.onDidChangeFocus(() => this.onFocus()));\n\t\tthis._register(this._list.onDidChangeSelection(e => this.onListSelection(e)));\n\n\t\tthis._allMenuItems = items;\n\t\tthis._list.splice(0, this._list.length, this._allMenuItems);\n\n\t\tif (this._list.length) {\n\t\t\tthis.focusNext();\n\t\t}\n\t}\n\n\tprivate focusCondition(element: IActionListItem<unknown>): boolean {\n\t\treturn !element.disabled && element.kind === ActionListItemKind.Action;\n\t}\n\n\thide(didCancel?: boolean): void {\n\t\tthis._delegate.onHide(didCancel);\n\t\tthis.cts.cancel();\n\t\tthis._hover.clear();\n\t\tthis._contextViewService.hideContextView();\n\t}\n\n\tlayout(minWidth: number): number {\n\t\t// Updating list height, depending on how many separators and headers there are.\n\t\tconst numHeaders = this._allMenuItems.filter(item => item.kind === 'header').length;\n\t\tconst numSeparators = this._allMenuItems.filter(item => item.kind === 'separator').length;\n\t\tconst itemsHeight = this._allMenuItems.length * this._actionLineHeight;\n\t\tconst heightWithHeaders = itemsHeight + numHeaders * this._headerLineHeight - numHeaders * this._actionLineHeight;\n\t\tconst heightWithSeparators = heightWithHeaders + numSeparators * this._separatorLineHeight - numSeparators * this._actionLineHeight;\n\t\tthis._list.layout(heightWithSeparators);\n\t\tlet maxWidth = minWidth;\n\n\t\tif (this._allMenuItems.length >= 50) {\n\t\t\tmaxWidth = 380;\n\t\t} else {\n\t\t\t// For finding width dynamically (not using resize observer)\n\t\t\tconst itemWidths: number[] = this._allMenuItems.map((_, index): number => {\n\t\t\t\tconst element = this._getRowElement(index);\n\t\t\t\tif (element) {\n\t\t\t\t\telement.style.width = 'auto';\n\t\t\t\t\tconst width = element.getBoundingClientRect().width;\n\t\t\t\t\telement.style.width = '';\n\t\t\t\t\treturn width;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t});\n\n\t\t\t// resize observer - can be used in the future since list widget supports dynamic height but not width\n\t\t\tmaxWidth = Math.max(...itemWidths, minWidth);\n\t\t}\n\n\t\tconst maxVhPrecentage = 0.7;\n\t\tconst height = Math.min(heightWithSeparators, this._layoutService.getContainer(dom.getWindow(this.domNode)).clientHeight * maxVhPrecentage);\n\t\tthis._list.layout(height, maxWidth);\n\n\t\tthis.domNode.style.height = `${height}px`;\n\n\t\tthis._list.domFocus();\n\t\treturn maxWidth;\n\t}\n\n\tfocusPrevious() {\n\t\tthis._list.focusPrevious(1, true, undefined, this.focusCondition);\n\t}\n\n\tfocusNext() {\n\t\tthis._list.focusNext(1, true, undefined, this.focusCondition);\n\t}\n\n\tacceptSelected(preview?: boolean) {\n\t\tconst focused = this._list.getFocus();\n\t\tif (focused.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst focusIndex = focused[0];\n\t\tconst element = this._list.element(focusIndex);\n\t\tif (!this.focusCondition(element)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = preview ? new PreviewSelectedEvent() : new AcceptSelectedEvent();\n\t\tthis._list.setSelection([focusIndex], event);\n\t}\n\n\tprivate onListSelection(e: IListEvent<IActionListItem<T>>): void {\n\t\tif (!e.elements.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst element = e.elements[0];\n\t\tif (element.item && this.focusCondition(element)) {\n\t\t\tthis._delegate.onSelect(element.item, e.browserEvent instanceof PreviewSelectedEvent);\n\t\t} else {\n\t\t\tthis._list.setSelection([]);\n\t\t}\n\t}\n\n\tprivate onFocus() {\n\t\tconst focused = this._list.getFocus();\n\t\tif (focused.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst focusIndex = focused[0];\n\t\tconst element = this._list.element(focusIndex);\n\t\tthis._delegate.onFocus?.(element.item);\n\n\t\t// Show hover on focus change\n\t\tthis._showHoverForElement(element, focusIndex);\n\t}\n\n\tprivate _getRowElement(index: number): HTMLElement | null {\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\treturn this.domNode.ownerDocument.getElementById(this._list.getElementID(index));\n\t}\n\n\tprivate _showHoverForElement(element: IActionListItem<T>, index: number): void {\n\t\tlet newHover: IHoverWidget | undefined;\n\n\t\t// Show hover if the element has hover content\n\t\tif (element.hover?.content && this.focusCondition(element)) {\n\t\t\t// The List widget separates data models from DOM elements, so we need to\n\t\t\t// look up the actual DOM node to use as the hover target.\n\t\t\tconst rowElement = this._getRowElement(index);\n\t\t\tif (rowElement) {\n\t\t\t\tconst markdown = element.hover.content ? new MarkdownString(element.hover.content) : undefined;\n\t\t\t\tnewHover = this._hoverService.showDelayedHover({\n\t\t\t\t\tcontent: markdown ?? '',\n\t\t\t\t\ttarget: rowElement,\n\t\t\t\t\tadditionalClasses: ['action-widget-hover'],\n\t\t\t\t\tposition: {\n\t\t\t\t\t\thoverPosition: HoverPosition.LEFT,\n\t\t\t\t\t\tforcePosition: false,\n\t\t\t\t\t},\n\t\t\t\t\tappearance: {\n\t\t\t\t\t\tshowPointer: true,\n\t\t\t\t\t},\n\t\t\t\t}, { groupId: `actionListHover` });\n\t\t\t}\n\t\t}\n\n\t\tthis._hover.value = newHover;\n\t}\n\n\tprivate async onListHover(e: IListMouseEvent<IActionListItem<T>>) {\n\t\tconst element = e.element;\n\n\t\tif (element && element.item && this.focusCondition(element)) {\n\t\t\tif (this._delegate.onHover && !element.disabled && element.kind === ActionListItemKind.Action) {\n\t\t\t\tconst result = await this._delegate.onHover(element.item, this.cts.token);\n\t\t\t\telement.canPreview = result ? result.canPreview : undefined;\n\t\t\t}\n\t\t\tif (e.index) {\n\t\t\t\tthis._list.splice(e.index, 1, [element]);\n\t\t\t}\n\n\t\t\tthis._list.setFocus(typeof e.index === 'number' ? [e.index] : []);\n\t\t}\n\t}\n\n\tprivate onListClick(e: IListMouseEvent<IActionListItem<T>>): void {\n\t\tif (e.element && this.focusCondition(e.element)) {\n\t\t\tthis._list.setFocus([]);\n\t\t}\n\t}\n}\n\nfunction stripNewlines(str: string): string {\n\treturn str.replace(/\\r\\n|\\r|\\n/g, ' ');\n}\n"]}
@@ -104,7 +104,14 @@ let ActionWidgetService = class ActionWidgetService extends Disposable {
104
104
  const width = this._list.value?.layout(actionBarWidth);
105
105
  widget.style.width = `${width}px`;
106
106
  const focusTracker = renderDisposables.add(dom.trackFocus(element));
107
- renderDisposables.add(focusTracker.onDidBlur(() => this.hide(true)));
107
+ renderDisposables.add(focusTracker.onDidBlur(() => {
108
+ // Don't hide if focus moved to a hover that belongs to this action widget
109
+ const activeElement = dom.getActiveElement();
110
+ if (activeElement?.closest('.action-widget-hover')) {
111
+ return;
112
+ }
113
+ this.hide(true);
114
+ }));
108
115
  return renderDisposables;
109
116
  }
110
117
  _createActionBar(className, actions) {
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/platform/actionWidget/browser/actionWidget.ts"],"names":[],"mappings":"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","file":"actionWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../base/browser/dom.js';\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\nimport { IAnchor } from '../../../base/browser/ui/contextview/contextview.js';\nimport { IAction } from '../../../base/common/actions.js';\nimport { KeyCode, KeyMod } from '../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore, IDisposable, MutableDisposable } from '../../../base/common/lifecycle.js';\nimport './actionWidget.css';\nimport { localize, localize2 } from '../../../nls.js';\nimport { acceptSelectedActionCommand, ActionList, IActionListDelegate, IActionListItem, previewSelectedActionCommand } from './actionList.js';\nimport { Action2, registerAction2 } from '../../actions/common/actions.js';\nimport { IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { IContextViewService } from '../../contextview/browser/contextView.js';\nimport { InstantiationType, registerSingleton } from '../../instantiation/common/extensions.js';\nimport { createDecorator, IInstantiationService, ServicesAccessor } from '../../instantiation/common/instantiation.js';\nimport { KeybindingWeight } from '../../keybinding/common/keybindingsRegistry.js';\nimport { inputActiveOptionBackground, registerColor } from '../../theme/common/colorRegistry.js';\nimport { StandardMouseEvent } from '../../../base/browser/mouseEvent.js';\nimport { IListAccessibilityProvider } from '../../../base/browser/ui/list/listWidget.js';\n\nregisterColor(\n\t'actionBar.toggledBackground',\n\tinputActiveOptionBackground,\n\tlocalize('actionBar.toggledBackground', 'Background color for toggled action items in action bar.')\n);\n\nconst ActionWidgetContextKeys = {\n\tVisible: new RawContextKey<boolean>('codeActionMenuVisible', false, localize('codeActionMenuVisible', \"Whether the action widget list is visible\"))\n};\n\nexport const IActionWidgetService = createDecorator<IActionWidgetService>('actionWidgetService');\n\nexport interface IActionWidgetService {\n\treadonly _serviceBrand: undefined;\n\n\tshow<T>(user: string, supportsPreview: boolean, items: readonly IActionListItem<T>[], delegate: IActionListDelegate<T>, anchor: HTMLElement | StandardMouseEvent | IAnchor, container: HTMLElement | undefined, actionBarActions?: readonly IAction[], accessibilityProvider?: Partial<IListAccessibilityProvider<IActionListItem<T>>>): void;\n\n\thide(didCancel?: boolean): void;\n\n\treadonly isVisible: boolean;\n}\n\nclass ActionWidgetService extends Disposable implements IActionWidgetService {\n\tdeclare readonly _serviceBrand: undefined;\n\n\tget isVisible() {\n\t\treturn ActionWidgetContextKeys.Visible.getValue(this._contextKeyService) || false;\n\t}\n\n\tprivate readonly _list = this._register(new MutableDisposable<ActionList<unknown>>());\n\n\tconstructor(\n\t\t@IContextViewService private readonly _contextViewService: IContextViewService,\n\t\t@IContextKeyService private readonly _contextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService\n\t) {\n\t\tsuper();\n\t}\n\n\tshow<T>(user: string, supportsPreview: boolean, items: readonly IActionListItem<T>[], delegate: IActionListDelegate<T>, anchor: HTMLElement | StandardMouseEvent | IAnchor, container: HTMLElement | undefined, actionBarActions?: readonly IAction[], accessibilityProvider?: Partial<IListAccessibilityProvider<IActionListItem<T>>>): void {\n\t\tconst visibleContext = ActionWidgetContextKeys.Visible.bindTo(this._contextKeyService);\n\n\t\tconst list = this._instantiationService.createInstance(ActionList, user, supportsPreview, items, delegate, accessibilityProvider);\n\t\tthis._contextViewService.showContextView({\n\t\t\tgetAnchor: () => anchor,\n\t\t\trender: (container: HTMLElement) => {\n\t\t\t\tvisibleContext.set(true);\n\t\t\t\treturn this._renderWidget(container, list, actionBarActions ?? []);\n\t\t\t},\n\t\t\tonHide: (didCancel) => {\n\t\t\t\tvisibleContext.reset();\n\t\t\t\tthis._onWidgetClosed(didCancel);\n\t\t\t},\n\t\t}, container, false);\n\t}\n\n\tacceptSelected(preview?: boolean) {\n\t\tthis._list.value?.acceptSelected(preview);\n\t}\n\n\tfocusPrevious() {\n\t\tthis._list?.value?.focusPrevious();\n\t}\n\n\tfocusNext() {\n\t\tthis._list?.value?.focusNext();\n\t}\n\n\thide(didCancel?: boolean) {\n\t\tthis._list.value?.hide(didCancel);\n\t\tthis._list.clear();\n\t}\n\n\tprivate _renderWidget(element: HTMLElement, list: ActionList<unknown>, actionBarActions: readonly IAction[]): IDisposable {\n\t\tconst widget = document.createElement('div');\n\t\twidget.classList.add('action-widget');\n\t\telement.appendChild(widget);\n\n\t\tthis._list.value = list;\n\t\tif (this._list.value) {\n\t\t\twidget.appendChild(this._list.value.domNode);\n\t\t} else {\n\t\t\tthrow new Error('List has no value');\n\t\t}\n\t\tconst renderDisposables = new DisposableStore();\n\n\t\t// Invisible div to block mouse interaction in the rest of the UI\n\t\tconst menuBlock = document.createElement('div');\n\t\tconst block = element.appendChild(menuBlock);\n\t\tblock.classList.add('context-view-block');\n\t\trenderDisposables.add(dom.addDisposableListener(block, dom.EventType.MOUSE_DOWN, e => e.stopPropagation()));\n\n\t\t// Invisible div to block mouse interaction with the menu\n\t\tconst pointerBlockDiv = document.createElement('div');\n\t\tconst pointerBlock = element.appendChild(pointerBlockDiv);\n\t\tpointerBlock.classList.add('context-view-pointerBlock');\n\n\t\t// Removes block on click INSIDE widget or ANY mouse movement\n\t\trenderDisposables.add(dom.addDisposableListener(pointerBlock, dom.EventType.POINTER_MOVE, () => pointerBlock.remove()));\n\t\trenderDisposables.add(dom.addDisposableListener(pointerBlock, dom.EventType.MOUSE_DOWN, () => pointerBlock.remove()));\n\n\t\t// Action bar\n\t\tlet actionBarWidth = 0;\n\t\tif (actionBarActions.length) {\n\t\t\tconst actionBar = this._createActionBar('.action-widget-action-bar', actionBarActions);\n\t\t\tif (actionBar) {\n\t\t\t\twidget.appendChild(actionBar.getContainer().parentElement!);\n\t\t\t\trenderDisposables.add(actionBar);\n\t\t\t\tactionBarWidth = actionBar.getContainer().offsetWidth;\n\t\t\t}\n\t\t}\n\n\t\tconst width = this._list.value?.layout(actionBarWidth);\n\t\twidget.style.width = `${width}px`;\n\n\t\tconst focusTracker = renderDisposables.add(dom.trackFocus(element));\n\t\trenderDisposables.add(focusTracker.onDidBlur(() => this.hide(true)));\n\n\t\treturn renderDisposables;\n\t}\n\n\tprivate _createActionBar(className: string, actions: readonly IAction[]): ActionBar | undefined {\n\t\tif (!actions.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst container = dom.$(className);\n\t\tconst actionBar = new ActionBar(container);\n\t\tactionBar.push(actions, { icon: false, label: true });\n\t\treturn actionBar;\n\t}\n\n\tprivate _onWidgetClosed(didCancel?: boolean): void {\n\t\tthis._list.value?.hide(didCancel);\n\t}\n}\n\nregisterSingleton(IActionWidgetService, ActionWidgetService, InstantiationType.Delayed);\n\nconst weight = KeybindingWeight.EditorContrib + 1000;\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'hideCodeActionWidget',\n\t\t\ttitle: localize2('hideCodeActionWidget.title', \"Hide action widget\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyCode.Escape,\n\t\t\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t\t\t},\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\taccessor.get(IActionWidgetService).hide(true);\n\t}\n});\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'selectPrevCodeAction',\n\t\t\ttitle: localize2('selectPrevCodeAction.title', \"Select previous action\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyCode.UpArrow,\n\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.UpArrow],\n\t\t\t\tmac: { primary: KeyCode.UpArrow, secondary: [KeyMod.CtrlCmd | KeyCode.UpArrow, KeyMod.WinCtrl | KeyCode.KeyP] },\n\t\t\t}\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\tconst widgetService = accessor.get(IActionWidgetService);\n\t\tif (widgetService instanceof ActionWidgetService) {\n\t\t\twidgetService.focusPrevious();\n\t\t}\n\t}\n});\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'selectNextCodeAction',\n\t\t\ttitle: localize2('selectNextCodeAction.title', \"Select next action\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyCode.DownArrow,\n\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.DownArrow],\n\t\t\t\tmac: { primary: KeyCode.DownArrow, secondary: [KeyMod.CtrlCmd | KeyCode.DownArrow, KeyMod.WinCtrl | KeyCode.KeyN] }\n\t\t\t}\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\tconst widgetService = accessor.get(IActionWidgetService);\n\t\tif (widgetService instanceof ActionWidgetService) {\n\t\t\twidgetService.focusNext();\n\t\t}\n\t}\n});\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: acceptSelectedActionCommand,\n\t\t\ttitle: localize2('acceptSelected.title', \"Accept selected action\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyCode.Enter,\n\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.Period],\n\t\t\t}\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\tconst widgetService = accessor.get(IActionWidgetService);\n\t\tif (widgetService instanceof ActionWidgetService) {\n\t\t\twidgetService.acceptSelected();\n\t\t}\n\t}\n});\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: previewSelectedActionCommand,\n\t\t\ttitle: localize2('previewSelected.title', \"Preview selected action\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Enter,\n\t\t\t}\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\tconst widgetService = accessor.get(IActionWidgetService);\n\t\tif (widgetService instanceof ActionWidgetService) {\n\t\t\twidgetService.acceptSelected(true);\n\t\t}\n\t}\n});\n"]}
1
+ {"version":3,"sources":["vs/platform/actionWidget/browser/actionWidget.ts"],"names":[],"mappings":"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","file":"actionWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../base/browser/dom.js';\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\nimport { IAnchor } from '../../../base/browser/ui/contextview/contextview.js';\nimport { IAction } from '../../../base/common/actions.js';\nimport { KeyCode, KeyMod } from '../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore, IDisposable, MutableDisposable } from '../../../base/common/lifecycle.js';\nimport './actionWidget.css';\nimport { localize, localize2 } from '../../../nls.js';\nimport { acceptSelectedActionCommand, ActionList, IActionListDelegate, IActionListItem, previewSelectedActionCommand } from './actionList.js';\nimport { Action2, registerAction2 } from '../../actions/common/actions.js';\nimport { IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { IContextViewService } from '../../contextview/browser/contextView.js';\nimport { InstantiationType, registerSingleton } from '../../instantiation/common/extensions.js';\nimport { createDecorator, IInstantiationService, ServicesAccessor } from '../../instantiation/common/instantiation.js';\nimport { KeybindingWeight } from '../../keybinding/common/keybindingsRegistry.js';\nimport { inputActiveOptionBackground, registerColor } from '../../theme/common/colorRegistry.js';\nimport { StandardMouseEvent } from '../../../base/browser/mouseEvent.js';\nimport { IListAccessibilityProvider } from '../../../base/browser/ui/list/listWidget.js';\n\nregisterColor(\n\t'actionBar.toggledBackground',\n\tinputActiveOptionBackground,\n\tlocalize('actionBar.toggledBackground', 'Background color for toggled action items in action bar.')\n);\n\nconst ActionWidgetContextKeys = {\n\tVisible: new RawContextKey<boolean>('codeActionMenuVisible', false, localize('codeActionMenuVisible', \"Whether the action widget list is visible\"))\n};\n\nexport const IActionWidgetService = createDecorator<IActionWidgetService>('actionWidgetService');\n\nexport interface IActionWidgetService {\n\treadonly _serviceBrand: undefined;\n\n\tshow<T>(user: string, supportsPreview: boolean, items: readonly IActionListItem<T>[], delegate: IActionListDelegate<T>, anchor: HTMLElement | StandardMouseEvent | IAnchor, container: HTMLElement | undefined, actionBarActions?: readonly IAction[], accessibilityProvider?: Partial<IListAccessibilityProvider<IActionListItem<T>>>): void;\n\n\thide(didCancel?: boolean): void;\n\n\treadonly isVisible: boolean;\n}\n\nclass ActionWidgetService extends Disposable implements IActionWidgetService {\n\tdeclare readonly _serviceBrand: undefined;\n\n\tget isVisible() {\n\t\treturn ActionWidgetContextKeys.Visible.getValue(this._contextKeyService) || false;\n\t}\n\n\tprivate readonly _list = this._register(new MutableDisposable<ActionList<unknown>>());\n\n\tconstructor(\n\t\t@IContextViewService private readonly _contextViewService: IContextViewService,\n\t\t@IContextKeyService private readonly _contextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService\n\t) {\n\t\tsuper();\n\t}\n\n\tshow<T>(user: string, supportsPreview: boolean, items: readonly IActionListItem<T>[], delegate: IActionListDelegate<T>, anchor: HTMLElement | StandardMouseEvent | IAnchor, container: HTMLElement | undefined, actionBarActions?: readonly IAction[], accessibilityProvider?: Partial<IListAccessibilityProvider<IActionListItem<T>>>): void {\n\t\tconst visibleContext = ActionWidgetContextKeys.Visible.bindTo(this._contextKeyService);\n\n\t\tconst list = this._instantiationService.createInstance(ActionList, user, supportsPreview, items, delegate, accessibilityProvider);\n\t\tthis._contextViewService.showContextView({\n\t\t\tgetAnchor: () => anchor,\n\t\t\trender: (container: HTMLElement) => {\n\t\t\t\tvisibleContext.set(true);\n\t\t\t\treturn this._renderWidget(container, list, actionBarActions ?? []);\n\t\t\t},\n\t\t\tonHide: (didCancel) => {\n\t\t\t\tvisibleContext.reset();\n\t\t\t\tthis._onWidgetClosed(didCancel);\n\t\t\t},\n\t\t}, container, false);\n\t}\n\n\tacceptSelected(preview?: boolean) {\n\t\tthis._list.value?.acceptSelected(preview);\n\t}\n\n\tfocusPrevious() {\n\t\tthis._list?.value?.focusPrevious();\n\t}\n\n\tfocusNext() {\n\t\tthis._list?.value?.focusNext();\n\t}\n\n\thide(didCancel?: boolean) {\n\t\tthis._list.value?.hide(didCancel);\n\t\tthis._list.clear();\n\t}\n\n\tprivate _renderWidget(element: HTMLElement, list: ActionList<unknown>, actionBarActions: readonly IAction[]): IDisposable {\n\t\tconst widget = document.createElement('div');\n\t\twidget.classList.add('action-widget');\n\t\telement.appendChild(widget);\n\n\t\tthis._list.value = list;\n\t\tif (this._list.value) {\n\t\t\twidget.appendChild(this._list.value.domNode);\n\t\t} else {\n\t\t\tthrow new Error('List has no value');\n\t\t}\n\t\tconst renderDisposables = new DisposableStore();\n\n\t\t// Invisible div to block mouse interaction in the rest of the UI\n\t\tconst menuBlock = document.createElement('div');\n\t\tconst block = element.appendChild(menuBlock);\n\t\tblock.classList.add('context-view-block');\n\t\trenderDisposables.add(dom.addDisposableListener(block, dom.EventType.MOUSE_DOWN, e => e.stopPropagation()));\n\n\t\t// Invisible div to block mouse interaction with the menu\n\t\tconst pointerBlockDiv = document.createElement('div');\n\t\tconst pointerBlock = element.appendChild(pointerBlockDiv);\n\t\tpointerBlock.classList.add('context-view-pointerBlock');\n\n\t\t// Removes block on click INSIDE widget or ANY mouse movement\n\t\trenderDisposables.add(dom.addDisposableListener(pointerBlock, dom.EventType.POINTER_MOVE, () => pointerBlock.remove()));\n\t\trenderDisposables.add(dom.addDisposableListener(pointerBlock, dom.EventType.MOUSE_DOWN, () => pointerBlock.remove()));\n\n\t\t// Action bar\n\t\tlet actionBarWidth = 0;\n\t\tif (actionBarActions.length) {\n\t\t\tconst actionBar = this._createActionBar('.action-widget-action-bar', actionBarActions);\n\t\t\tif (actionBar) {\n\t\t\t\twidget.appendChild(actionBar.getContainer().parentElement!);\n\t\t\t\trenderDisposables.add(actionBar);\n\t\t\t\tactionBarWidth = actionBar.getContainer().offsetWidth;\n\t\t\t}\n\t\t}\n\n\t\tconst width = this._list.value?.layout(actionBarWidth);\n\t\twidget.style.width = `${width}px`;\n\n\t\tconst focusTracker = renderDisposables.add(dom.trackFocus(element));\n\t\trenderDisposables.add(focusTracker.onDidBlur(() => {\n\t\t\t// Don't hide if focus moved to a hover that belongs to this action widget\n\t\t\tconst activeElement = dom.getActiveElement();\n\t\t\tif (activeElement?.closest('.action-widget-hover')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.hide(true);\n\t\t}));\n\n\t\treturn renderDisposables;\n\t}\n\n\tprivate _createActionBar(className: string, actions: readonly IAction[]): ActionBar | undefined {\n\t\tif (!actions.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst container = dom.$(className);\n\t\tconst actionBar = new ActionBar(container);\n\t\tactionBar.push(actions, { icon: false, label: true });\n\t\treturn actionBar;\n\t}\n\n\tprivate _onWidgetClosed(didCancel?: boolean): void {\n\t\tthis._list.value?.hide(didCancel);\n\t}\n}\n\nregisterSingleton(IActionWidgetService, ActionWidgetService, InstantiationType.Delayed);\n\nconst weight = KeybindingWeight.EditorContrib + 1000;\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'hideCodeActionWidget',\n\t\t\ttitle: localize2('hideCodeActionWidget.title', \"Hide action widget\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyCode.Escape,\n\t\t\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t\t\t},\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\taccessor.get(IActionWidgetService).hide(true);\n\t}\n});\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'selectPrevCodeAction',\n\t\t\ttitle: localize2('selectPrevCodeAction.title', \"Select previous action\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyCode.UpArrow,\n\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.UpArrow],\n\t\t\t\tmac: { primary: KeyCode.UpArrow, secondary: [KeyMod.CtrlCmd | KeyCode.UpArrow, KeyMod.WinCtrl | KeyCode.KeyP] },\n\t\t\t}\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\tconst widgetService = accessor.get(IActionWidgetService);\n\t\tif (widgetService instanceof ActionWidgetService) {\n\t\t\twidgetService.focusPrevious();\n\t\t}\n\t}\n});\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'selectNextCodeAction',\n\t\t\ttitle: localize2('selectNextCodeAction.title', \"Select next action\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyCode.DownArrow,\n\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.DownArrow],\n\t\t\t\tmac: { primary: KeyCode.DownArrow, secondary: [KeyMod.CtrlCmd | KeyCode.DownArrow, KeyMod.WinCtrl | KeyCode.KeyN] }\n\t\t\t}\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\tconst widgetService = accessor.get(IActionWidgetService);\n\t\tif (widgetService instanceof ActionWidgetService) {\n\t\t\twidgetService.focusNext();\n\t\t}\n\t}\n});\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: acceptSelectedActionCommand,\n\t\t\ttitle: localize2('acceptSelected.title', \"Accept selected action\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyCode.Enter,\n\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.Period],\n\t\t\t}\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\tconst widgetService = accessor.get(IActionWidgetService);\n\t\tif (widgetService instanceof ActionWidgetService) {\n\t\t\twidgetService.acceptSelected();\n\t\t}\n\t}\n});\n\nregisterAction2(class extends Action2 {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: previewSelectedActionCommand,\n\t\t\ttitle: localize2('previewSelected.title', \"Preview selected action\"),\n\t\t\tprecondition: ActionWidgetContextKeys.Visible,\n\t\t\tkeybinding: {\n\t\t\t\tweight,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Enter,\n\t\t\t}\n\t\t});\n\t}\n\n\trun(accessor: ServicesAccessor): void {\n\t\tconst widgetService = accessor.get(IActionWidgetService);\n\t\tif (widgetService instanceof ActionWidgetService) {\n\t\t\twidgetService.acceptSelected(true);\n\t\t}\n\t}\n});\n"]}
package/monaco.d.ts CHANGED
@@ -1747,7 +1747,7 @@ declare namespace monaco.editor {
1747
1747
  */
1748
1748
  glyphMargin?: IModelDecorationGlyphMarginOptions | null;
1749
1749
  /**
1750
- * If set, the decoration will override the line height of the lines it spans. Maximum value is 300px.
1750
+ * If set, the decoration will override the line height of the lines it spans. This value is a multiplier to the default line height.
1751
1751
  */
1752
1752
  lineHeight?: number | null;
1753
1753
  /**
@@ -6389,6 +6389,10 @@ declare namespace monaco.editor {
6389
6389
  * Force an editor render now.
6390
6390
  */
6391
6391
  render(forceRedraw?: boolean): void;
6392
+ /**
6393
+ * Render the editor at the next animation frame.
6394
+ */
6395
+ renderAsync(forceRedraw?: boolean): void;
6392
6396
  /**
6393
6397
  * Get the hit test target at coordinates `clientX` and `clientY`.
6394
6398
  * The coordinates are relative to the top-left of the viewport.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "monaco-editor-core",
3
3
  "private": false,
4
- "version": "0.56.0-dev-20260120",
4
+ "version": "0.56.0-dev-20260121",
5
5
  "description": "A browser based code editor",
6
6
  "author": "Microsoft Corporation",
7
7
  "license": "MIT",
@@ -14,7 +14,7 @@
14
14
  "bugs": {
15
15
  "url": "https://github.com/microsoft/vscode/issues"
16
16
  },
17
- "vscodeCommitId": "d52522be26ca5048ac05c0a9760f56fe4bcda414",
17
+ "vscodeCommitId": "83a8d44fcf7dbdb6fdb0699da949e5deb39dad82",
18
18
  "dependencies": {
19
19
  "marked": "14.0.0",
20
20
  "dompurify": "3.2.7"
package/version.txt CHANGED
@@ -1 +1 @@
1
- monaco-editor-core: https://github.com/microsoft/vscode/tree/3f26219a3c6e5b21b6b5725327da71fbf25fbf12
1
+ monaco-editor-core: https://github.com/microsoft/vscode/tree/fe9dd23f49a64c1b2811d9eeec98f38876f93511