monaco-editor-core 0.56.0-dev-20260119 → 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 (91) 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/base/browser/ui/actionbar/actionViewItems.js +4 -1
  19. package/esm/vs/base/browser/ui/actionbar/actionViewItems.js.map +1 -1
  20. package/esm/vs/base/browser/ui/actionbar/actionbar.css +8 -5
  21. package/esm/vs/base/browser/ui/contextview/contextview.js +1 -1
  22. package/esm/vs/base/browser/ui/contextview/contextview.js.map +1 -1
  23. package/esm/vs/base/browser/ui/hover/hover.js.map +1 -1
  24. package/esm/vs/base/browser/ui/list/list.js +1 -0
  25. package/esm/vs/base/browser/ui/list/list.js.map +1 -1
  26. package/esm/vs/base/browser/ui/list/listWidget.js +62 -5
  27. package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
  28. package/esm/vs/base/browser/ui/tree/abstractTree.js +4 -1
  29. package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
  30. package/esm/vs/base/browser/ui/tree/asyncDataTree.js +4 -1
  31. package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
  32. package/esm/vs/base/common/defaultAccount.js +0 -4
  33. package/esm/vs/base/common/defaultAccount.js.map +1 -1
  34. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +81 -35
  35. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  36. package/esm/vs/editor/browser/controller/editContext/editContext.js +11 -0
  37. package/esm/vs/editor/browser/controller/editContext/editContext.js.map +1 -1
  38. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +38 -18
  39. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  40. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +4 -0
  41. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  42. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +39 -16
  43. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
  44. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  45. package/esm/vs/editor/browser/view.js +21 -1
  46. package/esm/vs/editor/browser/view.js.map +1 -1
  47. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +18 -0
  48. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  49. package/esm/vs/editor/common/model/bracketPairsTextModelPart/colorizedBracketPairsDecorationProvider.js +3 -3
  50. package/esm/vs/editor/common/model/bracketPairsTextModelPart/colorizedBracketPairsDecorationProvider.js.map +1 -1
  51. package/esm/vs/editor/common/model/textModel.js +7 -5
  52. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  53. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +21 -17
  54. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -1
  55. package/esm/vs/editor/common/model.js.map +1 -1
  56. package/esm/vs/editor/common/viewModel/viewModelDecorations.js +11 -4
  57. package/esm/vs/editor/common/viewModel/viewModelDecorations.js.map +1 -1
  58. package/esm/vs/editor/common/viewModel/viewModelImpl.js +25 -14
  59. package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
  60. package/esm/vs/editor/common/viewModel.js.map +1 -1
  61. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +3 -3
  62. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  63. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +28 -64
  64. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  65. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +27 -20
  66. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js +37 -10
  67. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js.map +1 -1
  68. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +2 -2
  69. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  70. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.css +7 -0
  71. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +22 -3
  72. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  73. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +19 -13
  74. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  75. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +1 -0
  76. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
  77. package/esm/vs/editor/editor.api.d.ts +5 -1
  78. package/esm/vs/platform/actionWidget/browser/actionList.js +46 -6
  79. package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
  80. package/esm/vs/platform/actionWidget/browser/actionWidget.js +8 -1
  81. package/esm/vs/platform/actionWidget/browser/actionWidget.js.map +1 -1
  82. package/esm/vs/platform/actions/common/actions.js +2 -1
  83. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  84. package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -1
  85. package/esm/vs/platform/hover/browser/hoverService.js +1 -0
  86. package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
  87. package/esm/vs/platform/product/common/product.js +16 -1
  88. package/esm/vs/platform/product/common/product.js.map +1 -1
  89. package/monaco.d.ts +5 -1
  90. package/package.json +2 -2
  91. package/version.txt +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/base/browser/ui/list/list.ts","vs/base/browser/ui/list/list.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AA8HhG,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEnC,YAAY,IAAY,EAAE,OAAe;QACxC,KAAK,CAAC,cAAc,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;CACD","file":"list.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 *--------------------------------------------------------------------------------------------*/\n\nimport { IDragAndDropData } from '../../dnd.js';\nimport { IKeyboardEvent } from '../../keyboardEvent.js';\nimport { IMouseEvent } from '../../mouseEvent.js';\nimport { GestureEvent } from '../../touch.js';\nimport { ListViewTargetSector } from './listView.js';\nimport { IDisposable } from '../../../common/lifecycle.js';\n\nexport interface IListVirtualDelegate<T> {\n\tgetHeight(element: T): number;\n\tgetTemplateId(element: T): string;\n\thasDynamicHeight?(element: T): boolean;\n\tgetDynamicHeight?(element: T): number | null;\n\tsetDynamicHeight?(element: T, height: number): void;\n}\n\nexport interface IListElementRenderDetails {\n\treadonly height?: number;\n\treadonly onScroll?: boolean;\n}\n\nexport interface IListRenderer<T, TTemplateData> {\n\treadonly templateId: string;\n\trenderTemplate(container: HTMLElement): TTemplateData;\n\trenderElement(element: T, index: number, templateData: TTemplateData, details?: IListElementRenderDetails): void;\n\tdisposeElement?(element: T, index: number, templateData: TTemplateData, details?: IListElementRenderDetails): void;\n\tdisposeTemplate(templateData: TTemplateData): void;\n}\n\nexport interface IListEvent<T> {\n\treadonly elements: readonly T[];\n\treadonly indexes: readonly number[];\n\treadonly browserEvent?: UIEvent;\n}\n\nexport interface IListBrowserMouseEvent extends MouseEvent {\n\tisHandledByList?: boolean;\n}\n\nexport interface IListMouseEvent<T> {\n\treadonly browserEvent: IListBrowserMouseEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListTouchEvent<T> {\n\treadonly browserEvent: TouchEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListGestureEvent<T> {\n\treadonly browserEvent: GestureEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListDragEvent<T> {\n\treadonly browserEvent: DragEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n\treadonly sector: ListViewTargetSector | undefined;\n}\n\nexport interface IListContextMenuEvent<T> {\n\treadonly browserEvent: UIEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n\treadonly anchor: HTMLElement | IMouseEvent;\n}\n\nexport interface IIdentityProvider<T> {\n\tgetId(element: T): { toString(): string };\n}\n\nexport interface IKeyboardNavigationLabelProvider<T> {\n\n\t/**\n\t * Return a keyboard navigation label(s) which will be used by\n\t * the list for filtering/navigating. Return `undefined` to make\n\t * an element always match.\n\t */\n\tgetKeyboardNavigationLabel(element: T): { toString(): string | undefined } | { toString(): string | undefined }[] | undefined;\n}\n\nexport interface IKeyboardNavigationDelegate {\n\tmightProducePrintableCharacter(event: IKeyboardEvent): boolean;\n}\n\nexport const enum ListDragOverEffectType {\n\tCopy,\n\tMove\n}\n\nexport const enum ListDragOverEffectPosition {\n\tOver = 'drop-target',\n\tBefore = 'drop-target-before',\n\tAfter = 'drop-target-after'\n}\n\nexport interface ListDragOverEffect {\n\ttype: ListDragOverEffectType;\n\tposition?: ListDragOverEffectPosition;\n}\n\nexport interface IListDragOverReaction {\n\taccept: boolean;\n\teffect?: ListDragOverEffect;\n\tfeedback?: number[]; // use -1 for entire list\n}\n\n/**\n * Warning: Once passed to a list, that list takes up\n * the responsibility of disposing it.\n */\nexport interface IListDragAndDrop<T> extends IDisposable {\n\tgetDragURI(element: T): string | null;\n\tgetDragLabel?(elements: T[], originalEvent: DragEvent): string | undefined;\n\tonDragStart?(data: IDragAndDropData, originalEvent: DragEvent): void;\n\tonDragOver(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, targetSector: ListViewTargetSector | undefined, originalEvent: DragEvent): boolean | IListDragOverReaction;\n\tonDragLeave?(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): void;\n\tdrop(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, targetSector: ListViewTargetSector | undefined, originalEvent: DragEvent): void;\n\tonDragEnd?(originalEvent: DragEvent): void;\n}\n\nexport class ListError extends Error {\n\n\tconstructor(user: string, message: string) {\n\t\tsuper(`ListError [${user}] ${message}`);\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\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 *--------------------------------------------------------------------------------------------*/\n\nimport { IDragAndDropData } from '../../dnd.js';\nimport { IKeyboardEvent } from '../../keyboardEvent.js';\nimport { IMouseEvent } from '../../mouseEvent.js';\nimport { GestureEvent } from '../../touch.js';\nimport { ListViewTargetSector } from './listView.js';\nimport { IDisposable } from '../../../common/lifecycle.js';\n\nexport interface IListVirtualDelegate<T> {\n\tgetHeight(element: T): number;\n\tgetTemplateId(element: T): string;\n\thasDynamicHeight?(element: T): boolean;\n\tgetDynamicHeight?(element: T): number | null;\n\tsetDynamicHeight?(element: T, height: number): void;\n}\n\nexport interface IListElementRenderDetails {\n\treadonly height?: number;\n\treadonly onScroll?: boolean;\n}\n\nexport interface IListRenderer<T, TTemplateData> {\n\treadonly templateId: string;\n\trenderTemplate(container: HTMLElement): TTemplateData;\n\trenderElement(element: T, index: number, templateData: TTemplateData, details?: IListElementRenderDetails): void;\n\tdisposeElement?(element: T, index: number, templateData: TTemplateData, details?: IListElementRenderDetails): void;\n\tdisposeTemplate(templateData: TTemplateData): void;\n}\n\nexport interface IListEvent<T> {\n\treadonly elements: readonly T[];\n\treadonly indexes: readonly number[];\n\treadonly browserEvent?: UIEvent;\n}\n\nexport interface IListBrowserMouseEvent extends MouseEvent {\n\tisHandledByList?: boolean;\n}\n\nexport interface IListMouseEvent<T> {\n\treadonly browserEvent: IListBrowserMouseEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListTouchEvent<T> {\n\treadonly browserEvent: TouchEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListGestureEvent<T> {\n\treadonly browserEvent: GestureEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListDragEvent<T> {\n\treadonly browserEvent: DragEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n\treadonly sector: ListViewTargetSector | undefined;\n}\n\nexport interface IListContextMenuEvent<T> {\n\treadonly browserEvent: UIEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n\treadonly anchor: HTMLElement | IMouseEvent;\n}\n\nexport interface IIdentityProvider<T> {\n\tgetId(element: T): { toString(): string };\n}\n\nexport interface IKeyboardNavigationLabelProvider<T> {\n\n\t/**\n\t * Return a keyboard navigation label(s) which will be used by\n\t * the list for filtering/navigating. Return `undefined` to make\n\t * an element always match.\n\t */\n\tgetKeyboardNavigationLabel(element: T): { toString(): string | undefined } | { toString(): string | undefined }[] | undefined;\n}\n\nexport interface IKeyboardNavigationDelegate {\n\tmightProducePrintableCharacter(event: IKeyboardEvent): boolean;\n}\n\nexport const enum ListDragOverEffectType {\n\tCopy,\n\tMove\n}\n\nexport const enum ListDragOverEffectPosition {\n\tOver = 'drop-target',\n\tBefore = 'drop-target-before',\n\tAfter = 'drop-target-after'\n}\n\nexport interface ListDragOverEffect {\n\ttype: ListDragOverEffectType;\n\tposition?: ListDragOverEffectPosition;\n}\n\nexport interface IListDragOverReaction {\n\taccept: boolean;\n\teffect?: ListDragOverEffect;\n\tfeedback?: number[]; // use -1 for entire list\n}\n\n/**\n * Warning: Once passed to a list, that list takes up\n * the responsibility of disposing it.\n */\nexport interface IListDragAndDrop<T> extends IDisposable {\n\tgetDragURI(element: T): string | null;\n\tgetDragLabel?(elements: T[], originalEvent: DragEvent): string | undefined;\n\tonDragStart?(data: IDragAndDropData, originalEvent: DragEvent): void;\n\tonDragOver(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, targetSector: ListViewTargetSector | undefined, originalEvent: DragEvent): boolean | IListDragOverReaction;\n\tonDragLeave?(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): void;\n\tdrop(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, targetSector: ListViewTargetSector | undefined, originalEvent: DragEvent): void;\n\tonDragEnd?(originalEvent: DragEvent): void;\n}\n\nexport class ListError extends Error {\n\n\tconstructor(user: string, message: string) {\n\t\tsuper(`ListError [${user}] ${message}`);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/base/browser/ui/list/list.ts","vs/base/browser/ui/list/list.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAwEhG,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;AA0DpD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEnC,YAAY,IAAY,EAAE,OAAe;QACxC,KAAK,CAAC,cAAc,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;CACD","file":"list.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 *--------------------------------------------------------------------------------------------*/\n\nimport { IDragAndDropData } from '../../dnd.js';\nimport { IKeyboardEvent } from '../../keyboardEvent.js';\nimport { IMouseEvent } from '../../mouseEvent.js';\nimport { GestureEvent } from '../../touch.js';\nimport { ListViewTargetSector } from './listView.js';\nimport { IDisposable } from '../../../common/lifecycle.js';\n\nexport interface IListVirtualDelegate<T> {\n\tgetHeight(element: T): number;\n\tgetTemplateId(element: T): string;\n\thasDynamicHeight?(element: T): boolean;\n\tgetDynamicHeight?(element: T): number | null;\n\tsetDynamicHeight?(element: T, height: number): void;\n}\n\nexport interface IListElementRenderDetails {\n\treadonly height?: number;\n\treadonly onScroll?: boolean;\n}\n\nexport interface IListRenderer<T, TTemplateData> {\n\treadonly templateId: string;\n\trenderTemplate(container: HTMLElement): TTemplateData;\n\trenderElement(element: T, index: number, templateData: TTemplateData, details?: IListElementRenderDetails): void;\n\tdisposeElement?(element: T, index: number, templateData: TTemplateData, details?: IListElementRenderDetails): void;\n\tdisposeTemplate(templateData: TTemplateData): void;\n}\n\nexport interface IListEvent<T> {\n\treadonly elements: readonly T[];\n\treadonly indexes: readonly number[];\n\treadonly browserEvent?: UIEvent;\n}\n\nexport interface IListBrowserMouseEvent extends MouseEvent {\n\tisHandledByList?: boolean;\n}\n\nexport interface IListMouseEvent<T> {\n\treadonly browserEvent: IListBrowserMouseEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListTouchEvent<T> {\n\treadonly browserEvent: TouchEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListGestureEvent<T> {\n\treadonly browserEvent: GestureEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListDragEvent<T> {\n\treadonly browserEvent: DragEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n\treadonly sector: ListViewTargetSector | undefined;\n}\n\nexport interface IListContextMenuEvent<T> {\n\treadonly browserEvent: UIEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n\treadonly anchor: HTMLElement | IMouseEvent;\n}\n\nexport const NotSelectableGroupId = 'notSelectable';\nexport type NotSelectableGroupIdType = typeof NotSelectableGroupId;\n\nexport interface IIdentityProvider<T> {\n\tgetId(element: T): { toString(): string };\n\tgetGroupId?(element: T): number | NotSelectableGroupIdType;\n}\n\nexport interface IKeyboardNavigationLabelProvider<T> {\n\n\t/**\n\t * Return a keyboard navigation label(s) which will be used by\n\t * the list for filtering/navigating. Return `undefined` to make\n\t * an element always match.\n\t */\n\tgetKeyboardNavigationLabel(element: T): { toString(): string | undefined } | { toString(): string | undefined }[] | undefined;\n}\n\nexport interface IKeyboardNavigationDelegate {\n\tmightProducePrintableCharacter(event: IKeyboardEvent): boolean;\n}\n\nexport const enum ListDragOverEffectType {\n\tCopy,\n\tMove\n}\n\nexport const enum ListDragOverEffectPosition {\n\tOver = 'drop-target',\n\tBefore = 'drop-target-before',\n\tAfter = 'drop-target-after'\n}\n\nexport interface ListDragOverEffect {\n\ttype: ListDragOverEffectType;\n\tposition?: ListDragOverEffectPosition;\n}\n\nexport interface IListDragOverReaction {\n\taccept: boolean;\n\teffect?: ListDragOverEffect;\n\tfeedback?: number[]; // use -1 for entire list\n}\n\n/**\n * Warning: Once passed to a list, that list takes up\n * the responsibility of disposing it.\n */\nexport interface IListDragAndDrop<T> extends IDisposable {\n\tgetDragURI(element: T): string | null;\n\tgetDragLabel?(elements: T[], originalEvent: DragEvent): string | undefined;\n\tonDragStart?(data: IDragAndDropData, originalEvent: DragEvent): void;\n\tonDragOver(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, targetSector: ListViewTargetSector | undefined, originalEvent: DragEvent): boolean | IListDragOverReaction;\n\tonDragLeave?(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): void;\n\tdrop(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, targetSector: ListViewTargetSector | undefined, originalEvent: DragEvent): void;\n\tonDragEnd?(originalEvent: DragEvent): void;\n}\n\nexport class ListError extends Error {\n\n\tconstructor(user: string, message: string) {\n\t\tsuper(`ListError [${user}] ${message}`);\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\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 *--------------------------------------------------------------------------------------------*/\n\nimport { IDragAndDropData } from '../../dnd.js';\nimport { IKeyboardEvent } from '../../keyboardEvent.js';\nimport { IMouseEvent } from '../../mouseEvent.js';\nimport { GestureEvent } from '../../touch.js';\nimport { ListViewTargetSector } from './listView.js';\nimport { IDisposable } from '../../../common/lifecycle.js';\n\nexport interface IListVirtualDelegate<T> {\n\tgetHeight(element: T): number;\n\tgetTemplateId(element: T): string;\n\thasDynamicHeight?(element: T): boolean;\n\tgetDynamicHeight?(element: T): number | null;\n\tsetDynamicHeight?(element: T, height: number): void;\n}\n\nexport interface IListElementRenderDetails {\n\treadonly height?: number;\n\treadonly onScroll?: boolean;\n}\n\nexport interface IListRenderer<T, TTemplateData> {\n\treadonly templateId: string;\n\trenderTemplate(container: HTMLElement): TTemplateData;\n\trenderElement(element: T, index: number, templateData: TTemplateData, details?: IListElementRenderDetails): void;\n\tdisposeElement?(element: T, index: number, templateData: TTemplateData, details?: IListElementRenderDetails): void;\n\tdisposeTemplate(templateData: TTemplateData): void;\n}\n\nexport interface IListEvent<T> {\n\treadonly elements: readonly T[];\n\treadonly indexes: readonly number[];\n\treadonly browserEvent?: UIEvent;\n}\n\nexport interface IListBrowserMouseEvent extends MouseEvent {\n\tisHandledByList?: boolean;\n}\n\nexport interface IListMouseEvent<T> {\n\treadonly browserEvent: IListBrowserMouseEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListTouchEvent<T> {\n\treadonly browserEvent: TouchEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListGestureEvent<T> {\n\treadonly browserEvent: GestureEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n}\n\nexport interface IListDragEvent<T> {\n\treadonly browserEvent: DragEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n\treadonly sector: ListViewTargetSector | undefined;\n}\n\nexport interface IListContextMenuEvent<T> {\n\treadonly browserEvent: UIEvent;\n\treadonly element: T | undefined;\n\treadonly index: number | undefined;\n\treadonly anchor: HTMLElement | IMouseEvent;\n}\n\nexport const NotSelectableGroupId = 'notSelectable';\nexport type NotSelectableGroupIdType = typeof NotSelectableGroupId;\n\nexport interface IIdentityProvider<T> {\n\tgetId(element: T): { toString(): string };\n\tgetGroupId?(element: T): number | NotSelectableGroupIdType;\n}\n\nexport interface IKeyboardNavigationLabelProvider<T> {\n\n\t/**\n\t * Return a keyboard navigation label(s) which will be used by\n\t * the list for filtering/navigating. Return `undefined` to make\n\t * an element always match.\n\t */\n\tgetKeyboardNavigationLabel(element: T): { toString(): string | undefined } | { toString(): string | undefined }[] | undefined;\n}\n\nexport interface IKeyboardNavigationDelegate {\n\tmightProducePrintableCharacter(event: IKeyboardEvent): boolean;\n}\n\nexport const enum ListDragOverEffectType {\n\tCopy,\n\tMove\n}\n\nexport const enum ListDragOverEffectPosition {\n\tOver = 'drop-target',\n\tBefore = 'drop-target-before',\n\tAfter = 'drop-target-after'\n}\n\nexport interface ListDragOverEffect {\n\ttype: ListDragOverEffectType;\n\tposition?: ListDragOverEffectPosition;\n}\n\nexport interface IListDragOverReaction {\n\taccept: boolean;\n\teffect?: ListDragOverEffect;\n\tfeedback?: number[]; // use -1 for entire list\n}\n\n/**\n * Warning: Once passed to a list, that list takes up\n * the responsibility of disposing it.\n */\nexport interface IListDragAndDrop<T> extends IDisposable {\n\tgetDragURI(element: T): string | null;\n\tgetDragLabel?(elements: T[], originalEvent: DragEvent): string | undefined;\n\tonDragStart?(data: IDragAndDropData, originalEvent: DragEvent): void;\n\tonDragOver(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, targetSector: ListViewTargetSector | undefined, originalEvent: DragEvent): boolean | IListDragOverReaction;\n\tonDragLeave?(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): void;\n\tdrop(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, targetSector: ListViewTargetSector | undefined, originalEvent: DragEvent): void;\n\tonDragEnd?(originalEvent: DragEvent): void;\n}\n\nexport class ListError extends Error {\n\n\tconstructor(user: string, message: string) {\n\t\tsuper(`ListError [${user}] ${message}`);\n\t}\n}\n"]}
@@ -27,7 +27,7 @@ import { clamp } from '../../../common/numbers.js';
27
27
  import * as platform from '../../../common/platform.js';
28
28
  import { isNumber } from '../../../common/types.js';
29
29
  import './list.css';
30
- import { ListError } from './list.js';
30
+ import { ListError, NotSelectableGroupId } from './list.js';
31
31
  import { ListView } from './listView.js';
32
32
  import { StandardMouseEvent } from '../../mouseEvent.js';
33
33
  import { autorun, constObservable } from '../../../common/observable.js';
@@ -316,7 +316,14 @@ class KeyboardController {
316
316
  onCtrlA(e) {
317
317
  e.preventDefault();
318
318
  e.stopPropagation();
319
- this.list.setSelection(range(this.list.length), e.browserEvent);
319
+ let selection = range(this.list.length);
320
+ // Filter by group if identity provider has getGroupId
321
+ const focusedElements = this.list.getFocus();
322
+ const referenceGroupId = focusedElements.length > 0 ? this.list.getElementGroupId(focusedElements[0]) : undefined;
323
+ if (referenceGroupId !== undefined) {
324
+ selection = this.list.filterIndicesByGroup(selection, referenceGroupId);
325
+ }
326
+ this.list.setSelection(selection, e.browserEvent);
320
327
  this.list.setAnchor(undefined);
321
328
  this.view.domNode.focus();
322
329
  }
@@ -611,7 +618,11 @@ export class MouseController {
611
618
  this.list.setFocus([focus], e.browserEvent);
612
619
  this.list.setAnchor(focus);
613
620
  if (!isMouseRightClick(e.browserEvent)) {
614
- this.list.setSelection([focus], e.browserEvent);
621
+ // Check if the element is selectable (getGroupId must not return undefined)
622
+ const focusGroupId = this.list.getElementGroupId(focus);
623
+ if (focusGroupId !== NotSelectableGroupId) {
624
+ this.list.setSelection([focus], e.browserEvent);
625
+ }
615
626
  }
616
627
  this._onPointer.fire(e);
617
628
  }
@@ -640,7 +651,14 @@ export class MouseController {
640
651
  }
641
652
  const min = Math.min(anchor, focus);
642
653
  const max = Math.max(anchor, focus);
643
- const rangeSelection = range(min, max + 1);
654
+ let rangeSelection = range(min, max + 1);
655
+ const selectedElement = this.list.getSelection()[0];
656
+ if (selectedElement !== undefined) {
657
+ const referenceGroupId = this.list.getElementGroupId(selectedElement);
658
+ if (referenceGroupId !== undefined) {
659
+ rangeSelection = this.list.filterIndicesByGroup(rangeSelection, referenceGroupId);
660
+ }
661
+ }
644
662
  const selection = this.list.getSelection();
645
663
  const contiguousRange = getContiguousRangeContaining(disjunction(selection, [anchor]), anchor);
646
664
  if (contiguousRange.length === 0) {
@@ -655,8 +673,15 @@ export class MouseController {
655
673
  const newSelection = selection.filter(i => i !== focus);
656
674
  this.list.setFocus([focus]);
657
675
  this.list.setAnchor(focus);
676
+ const focusGroupId = this.list.getElementGroupId(focus);
677
+ if (focusGroupId === NotSelectableGroupId) {
678
+ return; // Cannot select this element, do nothing
679
+ }
658
680
  if (selection.length === newSelection.length) {
659
- this.list.setSelection([...newSelection, focus], e.browserEvent);
681
+ const itemsToBeSelected = focusGroupId !== undefined ?
682
+ this.list.filterIndicesByGroup([...newSelection, focus], focusGroupId)
683
+ : [...newSelection, focus];
684
+ this.list.setSelection(itemsToBeSelected, e.browserEvent);
660
685
  }
661
686
  else {
662
687
  this.list.setSelection(newSelection, e.browserEvent);
@@ -1254,6 +1279,7 @@ export class List {
1254
1279
  throw new ListError(this.user, `Invalid index ${index}`);
1255
1280
  }
1256
1281
  }
1282
+ indexes = indexes.filter(i => this.getElementGroupId(i) !== NotSelectableGroupId);
1257
1283
  this.selection.set(indexes, browserEvent);
1258
1284
  }
1259
1285
  getSelection() {
@@ -1279,6 +1305,37 @@ export class List {
1279
1305
  const anchor = this.getAnchor();
1280
1306
  return typeof anchor === 'undefined' ? undefined : this.element(anchor);
1281
1307
  }
1308
+ /**
1309
+ * Gets the group ID for an element at the given index.
1310
+ * Returns undefined if no identity provider, no getGroupId method, or if the group ID is undefined.
1311
+ */
1312
+ getElementGroupId(index) {
1313
+ const identityProvider = this.options.identityProvider;
1314
+ if (!identityProvider?.getGroupId) {
1315
+ return undefined;
1316
+ }
1317
+ const element = this.element(index);
1318
+ return identityProvider.getGroupId(element);
1319
+ }
1320
+ /**
1321
+ * Filters the given indices to only include those with a matching group ID.
1322
+ * If no identity provider or getGroupId method exists, returns the original indices.
1323
+ * If referenceGroupId is undefined, returns an empty array (elements without group IDs are not selectable).
1324
+ */
1325
+ filterIndicesByGroup(indices, referenceGroupId) {
1326
+ const identityProvider = this.options.identityProvider;
1327
+ if (!identityProvider?.getGroupId) {
1328
+ return indices;
1329
+ }
1330
+ if (referenceGroupId === NotSelectableGroupId) {
1331
+ return [];
1332
+ }
1333
+ return indices.filter(index => {
1334
+ const element = this.element(index);
1335
+ const groupId = identityProvider.getGroupId(element);
1336
+ return groupId === referenceGroupId;
1337
+ });
1338
+ }
1282
1339
  setFocus(indexes, browserEvent) {
1283
1340
  for (const index of indexes) {
1284
1341
  if (index < 0 || index >= this.length) {