monaco-editor-core 0.56.0-dev-20251217 → 0.56.0-dev-20251219

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 (197) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +6 -2
  18. package/esm/vs/base/browser/ui/actionbar/actionViewItems.js.map +1 -1
  19. package/esm/vs/base/browser/ui/findinput/findInput.js +6 -1
  20. package/esm/vs/base/browser/ui/findinput/findInput.js.map +1 -1
  21. package/esm/vs/base/browser/ui/inputbox/inputBox.js +17 -1
  22. package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
  23. package/esm/vs/base/browser/ui/toggle/toggle.js +78 -6
  24. package/esm/vs/base/browser/ui/toggle/toggle.js.map +1 -1
  25. package/esm/vs/base/common/fuzzyScorer.js +3 -2
  26. package/esm/vs/base/common/fuzzyScorer.js.map +1 -1
  27. package/esm/vs/editor/browser/services/editorWorkerService.js +6 -2
  28. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  29. package/esm/vs/editor/common/config/editorConfigurationSchema.js +49 -47
  30. package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
  31. package/esm/vs/editor/common/config/editorOptions.js +410 -410
  32. package/esm/vs/editor/common/core/editorColorRegistry.js +70 -69
  33. package/esm/vs/editor/common/core/editorColorRegistry.js.map +1 -1
  34. package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js +3 -3
  35. package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js.map +1 -1
  36. package/esm/vs/editor/common/editorContextKeys.js +47 -47
  37. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  38. package/esm/vs/editor/common/languages.js +56 -56
  39. package/esm/vs/editor/common/model/editStack.js +1 -1
  40. package/esm/vs/editor/common/standaloneStrings.js +11 -11
  41. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  42. package/esm/vs/editor/common/viewModel/viewModelImpl.js +4 -15
  43. package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
  44. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  45. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +18 -9
  46. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js.map +1 -1
  47. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  48. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  49. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  50. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  51. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  52. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  53. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  54. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  55. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  56. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  57. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  58. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  59. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  60. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  61. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  62. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  63. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  64. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  65. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  66. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  67. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  68. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  69. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  70. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  71. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  72. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  73. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  74. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  75. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  76. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  77. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  78. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  79. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  80. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  81. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  82. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  83. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  84. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  85. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  86. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  87. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  88. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  89. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  90. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  91. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  92. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  93. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  94. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  95. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
  96. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
  97. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
  98. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  99. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  100. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +1 -1
  101. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  102. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +4 -4
  103. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
  104. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  105. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
  106. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
  107. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  108. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  109. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  110. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  111. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  112. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  113. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  114. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  115. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  116. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  117. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  118. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  119. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +25 -27
  120. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  121. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  122. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  123. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  124. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  125. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  126. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  127. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  128. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  129. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
  130. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +11 -11
  131. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  132. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  133. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  134. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  135. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  136. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  137. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  138. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  139. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  140. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  141. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  142. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  143. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +3 -3
  144. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  145. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  146. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  147. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  148. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  149. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  150. package/esm/vs/platform/actions/common/menuService.js +2 -2
  151. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  152. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  153. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  154. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  155. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  156. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  157. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  158. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  159. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  160. package/esm/vs/platform/list/browser/listService.js +27 -27
  161. package/esm/vs/platform/markers/common/markerService.js +2 -2
  162. package/esm/vs/platform/markers/common/markers.js +6 -6
  163. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  164. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  165. package/esm/vs/platform/quickinput/browser/media/quickInput.css +38 -4
  166. package/esm/vs/platform/quickinput/browser/quickInput.js +42 -14
  167. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  168. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  169. package/esm/vs/platform/quickinput/browser/quickInputBox.js +13 -1
  170. package/esm/vs/platform/quickinput/browser/quickInputBox.js.map +1 -1
  171. package/esm/vs/platform/quickinput/browser/quickInputController.js +22 -12
  172. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  173. package/esm/vs/platform/quickinput/browser/quickInputList.js +17 -12
  174. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  175. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +36 -8
  176. package/esm/vs/platform/quickinput/browser/quickInputUtils.js.map +1 -1
  177. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  178. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +3 -3
  179. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
  180. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +8 -4
  181. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
  182. package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
  183. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  184. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -18
  185. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  186. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  187. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  188. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  189. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  190. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  191. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  192. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  193. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  194. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  195. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  196. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  197. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/platform/quickinput/browser/quickInputUtils.ts"],"names":[],"mappings":"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","file":"quickInputUtils.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 * as dom from '../../../base/browser/dom.js';\nimport * as domStylesheetsJs from '../../../base/browser/domStylesheets.js';\nimport * as cssJs from '../../../base/browser/cssValue.js';\nimport { DomEmitter } from '../../../base/browser/event.js';\nimport { Event } from '../../../base/common/event.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { Gesture, EventType as GestureEventType } from '../../../base/browser/touch.js';\nimport { renderLabelWithIcons } from '../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { IdGenerator } from '../../../base/common/idGenerator.js';\nimport { KeyCode } from '../../../base/common/keyCodes.js';\nimport { parseLinkedText } from '../../../base/common/linkedText.js';\nimport { URI } from '../../../base/common/uri.js';\nimport './media/quickInput.css';\nimport { localize } from '../../../nls.js';\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\nimport { IQuickInputButton } from '../common/quickInput.js';\nimport { IAction } from '../../../base/common/actions.js';\n\nconst iconPathToClass: Record<string, string> = {};\nconst iconClassGenerator = new IdGenerator('quick-input-button-icon-');\n\nfunction getIconClass(iconPath: { dark: URI; light?: URI } | undefined): string | undefined {\n\tif (!iconPath) {\n\t\treturn undefined;\n\t}\n\tlet iconClass: string;\n\n\tconst key = iconPath.dark.toString();\n\tif (iconPathToClass[key]) {\n\t\ticonClass = iconPathToClass[key];\n\t} else {\n\t\ticonClass = iconClassGenerator.nextId();\n\t\tdomStylesheetsJs.createCSSRule(`.${iconClass}, .hc-light .${iconClass}`, `background-image: ${cssJs.asCSSUrl(iconPath.light || iconPath.dark)}`);\n\t\tdomStylesheetsJs.createCSSRule(`.vs-dark .${iconClass}, .hc-black .${iconClass}`, `background-image: ${cssJs.asCSSUrl(iconPath.dark)}`);\n\t\ticonPathToClass[key] = iconClass;\n\t}\n\n\treturn iconClass;\n}\n\nexport function quickInputButtonToAction(button: IQuickInputButton, id: string, run: () => unknown): IAction {\n\tlet cssClasses = button.iconClass || getIconClass(button.iconPath);\n\tif (button.alwaysVisible) {\n\t\tcssClasses = cssClasses ? `${cssClasses} always-visible` : 'always-visible';\n\t}\n\n\treturn {\n\t\tid,\n\t\tlabel: '',\n\t\ttooltip: button.tooltip || '',\n\t\tclass: cssClasses,\n\t\tenabled: true,\n\t\trun\n\t};\n}\n\nexport function renderQuickInputDescription(description: string, container: HTMLElement, actionHandler: { callback: (content: string) => void; disposables: DisposableStore }) {\n\tdom.reset(container);\n\tconst parsed = parseLinkedText(description);\n\tlet tabIndex = 0;\n\tfor (const node of parsed.nodes) {\n\t\tif (typeof node === 'string') {\n\t\t\tcontainer.append(...renderLabelWithIcons(node));\n\t\t} else {\n\t\t\tlet title = node.title;\n\n\t\t\tif (!title && node.href.startsWith('command:')) {\n\t\t\t\ttitle = localize('executeCommand', \"Click to execute command '{0}'\", node.href.substring('command:'.length));\n\t\t\t} else if (!title) {\n\t\t\t\ttitle = node.href;\n\t\t\t}\n\n\t\t\tconst anchor = dom.$('a', { href: node.href, title, tabIndex: tabIndex++ }, node.label);\n\t\t\tanchor.style.textDecoration = 'underline';\n\t\t\tconst handleOpen = (e: unknown) => {\n\t\t\t\tif (dom.isEventLike(e)) {\n\t\t\t\t\tdom.EventHelper.stop(e, true);\n\t\t\t\t}\n\n\t\t\t\tactionHandler.callback(node.href);\n\t\t\t};\n\n\t\t\tconst onClick = actionHandler.disposables.add(new DomEmitter(anchor, dom.EventType.CLICK)).event;\n\t\t\tconst onKeydown = actionHandler.disposables.add(new DomEmitter(anchor, dom.EventType.KEY_DOWN)).event;\n\t\t\tconst onSpaceOrEnter = Event.chain(onKeydown, $ => $.filter(e => {\n\t\t\t\tconst event = new StandardKeyboardEvent(e);\n\n\t\t\t\treturn event.equals(KeyCode.Space) || event.equals(KeyCode.Enter);\n\t\t\t}));\n\n\t\t\tactionHandler.disposables.add(Gesture.addTarget(anchor));\n\t\t\tconst onTap = actionHandler.disposables.add(new DomEmitter(anchor, GestureEventType.Tap)).event;\n\n\t\t\tEvent.any(onClick, onTap, onSpaceOrEnter)(handleOpen, null, actionHandler.disposables);\n\t\t\tcontainer.appendChild(anchor);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/platform/quickinput/browser/quickInputUtils.ts"],"names":[],"mappings":"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","file":"quickInputUtils.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 * as dom from '../../../base/browser/dom.js';\nimport * as domStylesheetsJs from '../../../base/browser/domStylesheets.js';\nimport * as cssJs from '../../../base/browser/cssValue.js';\nimport { DomEmitter } from '../../../base/browser/event.js';\nimport { Event } from '../../../base/common/event.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { Gesture, EventType as GestureEventType } from '../../../base/browser/touch.js';\nimport { renderLabelWithIcons } from '../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { IdGenerator } from '../../../base/common/idGenerator.js';\nimport { KeyCode } from '../../../base/common/keyCodes.js';\nimport { parseLinkedText } from '../../../base/common/linkedText.js';\nimport { URI } from '../../../base/common/uri.js';\nimport './media/quickInput.css';\nimport { localize } from '../../../nls.js';\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\nimport { IQuickInputButton } from '../common/quickInput.js';\nimport { IAction } from '../../../base/common/actions.js';\n\nconst iconPathToClass: Record<string, string> = {};\nconst iconClassGenerator = new IdGenerator('quick-input-button-icon-');\n\nfunction getIconClass(iconPath: { dark: URI; light?: URI } | undefined): string | undefined {\n\tif (!iconPath) {\n\t\treturn undefined;\n\t}\n\tlet iconClass: string;\n\n\tconst key = iconPath.dark.toString();\n\tif (iconPathToClass[key]) {\n\t\ticonClass = iconPathToClass[key];\n\t} else {\n\t\ticonClass = iconClassGenerator.nextId();\n\t\tdomStylesheetsJs.createCSSRule(`.${iconClass}, .hc-light .${iconClass}`, `background-image: ${cssJs.asCSSUrl(iconPath.light || iconPath.dark)}`);\n\t\tdomStylesheetsJs.createCSSRule(`.vs-dark .${iconClass}, .hc-black .${iconClass}`, `background-image: ${cssJs.asCSSUrl(iconPath.dark)}`);\n\t\ticonPathToClass[key] = iconClass;\n\t}\n\n\treturn iconClass;\n}\n\nclass QuickInputToggleButtonAction implements IAction {\n\tclass: string | undefined;\n\n\tconstructor(\n\t\tpublic readonly id: string,\n\t\tpublic label: string,\n\t\tpublic tooltip: string,\n\t\tclassName: string | undefined,\n\t\tpublic enabled: boolean,\n\t\tprivate _checked: boolean,\n\t\tpublic run: () => unknown\n\t) {\n\t\tthis.class = className;\n\t}\n\n\tget checked(): boolean {\n\t\treturn this._checked;\n\t}\n\n\tset checked(value: boolean) {\n\t\tthis._checked = value;\n\t\t// Toggles behave like buttons. When clicked, they run... the only difference is that their checked state also changes.\n\t\tthis.run();\n\t}\n}\n\nexport function quickInputButtonToAction(button: IQuickInputButton, id: string, run: () => unknown): IAction {\n\tlet cssClasses = button.iconClass || getIconClass(button.iconPath);\n\tif (button.alwaysVisible) {\n\t\tcssClasses = cssClasses ? `${cssClasses} always-visible` : 'always-visible';\n\t}\n\n\tconst handler = () => {\n\t\tif (button.toggle) {\n\t\t\tbutton.toggle.checked = !button.toggle.checked;\n\t\t}\n\t\treturn run();\n\t};\n\n\tconst action = button.toggle\n\t\t? new QuickInputToggleButtonAction(\n\t\t\tid,\n\t\t\tbutton.tooltip || '',\n\t\t\t'',\n\t\t\tcssClasses,\n\t\t\ttrue,\n\t\t\tbutton.toggle.checked,\n\t\t\thandler\n\t\t)\n\t\t: {\n\t\t\tid,\n\t\t\tlabel: '',\n\t\t\ttooltip: button.tooltip || '',\n\t\t\tclass: cssClasses,\n\t\t\tenabled: true,\n\t\t\trun: handler,\n\t\t};\n\n\treturn action;\n}\n\nexport function renderQuickInputDescription(description: string, container: HTMLElement, actionHandler: { callback: (content: string) => void; disposables: DisposableStore }) {\n\tdom.reset(container);\n\tconst parsed = parseLinkedText(description);\n\tlet tabIndex = 0;\n\tfor (const node of parsed.nodes) {\n\t\tif (typeof node === 'string') {\n\t\t\tcontainer.append(...renderLabelWithIcons(node));\n\t\t} else {\n\t\t\tlet title = node.title;\n\n\t\t\tif (!title && node.href.startsWith('command:')) {\n\t\t\t\ttitle = localize('executeCommand', \"Click to execute command '{0}'\", node.href.substring('command:'.length));\n\t\t\t} else if (!title) {\n\t\t\t\ttitle = node.href;\n\t\t\t}\n\n\t\t\tconst anchor = dom.$('a', { href: node.href, title, tabIndex: tabIndex++ }, node.label);\n\t\t\tanchor.style.textDecoration = 'underline';\n\t\t\tconst handleOpen = (e: unknown) => {\n\t\t\t\tif (dom.isEventLike(e)) {\n\t\t\t\t\tdom.EventHelper.stop(e, true);\n\t\t\t\t}\n\n\t\t\t\tactionHandler.callback(node.href);\n\t\t\t};\n\n\t\t\tconst onClick = actionHandler.disposables.add(new DomEmitter(anchor, dom.EventType.CLICK)).event;\n\t\t\tconst onKeydown = actionHandler.disposables.add(new DomEmitter(anchor, dom.EventType.KEY_DOWN)).event;\n\t\t\tconst onSpaceOrEnter = Event.chain(onKeydown, $ => $.filter(e => {\n\t\t\t\tconst event = new StandardKeyboardEvent(e);\n\n\t\t\t\treturn event.equals(KeyCode.Space) || event.equals(KeyCode.Enter);\n\t\t\t}));\n\n\t\t\tactionHandler.disposables.add(Gesture.addTarget(anchor));\n\t\t\tconst onTap = actionHandler.disposables.add(new DomEmitter(anchor, GestureEventType.Tap)).event;\n\n\t\t\tEvent.any(onClick, onTap, onSpaceOrEnter)(handleOpen, null, actionHandler.disposables);\n\t\t\tcontainer.appendChild(anchor);\n\t\t}\n\t}\n}\n"]}
@@ -13,7 +13,7 @@ export class QuickTreeAccessibilityProvider {
13
13
  this.onCheckedEvent = onCheckedEvent;
14
14
  }
15
15
  getWidgetAriaLabel() {
16
- return localize(1791, "Quick Tree");
16
+ return localize(1793, "Quick Tree");
17
17
  }
18
18
  getAriaLabel(element) {
19
19
  return element.ariaLabel || [element.label, element.description]
@@ -45,7 +45,7 @@ class QuickInputTreeIdentityProvider {
45
45
  }
46
46
  }
47
47
  let QuickInputTreeController = class QuickInputTreeController extends Disposable {
48
- constructor(container, hoverDelegate, instantiationService) {
48
+ constructor(container, hoverDelegate, styles, instantiationService) {
49
49
  super();
50
50
  this.instantiationService = instantiationService;
51
51
  this._onDidTriggerButton = this._register(new Emitter());
@@ -64,7 +64,7 @@ let QuickInputTreeController = class QuickInputTreeController extends Disposable
64
64
  this.onDidAccept = this._onDidAccept.event;
65
65
  this._container = dom.append(container, $('.quick-input-tree'));
66
66
  this._checkboxStateHandler = this._register(new QuickInputCheckboxStateHandler());
67
- this._renderer = this._register(this.instantiationService.createInstance(QuickInputTreeRenderer, hoverDelegate, this._onDidTriggerButton, this.onDidChangeCheckboxState, this._checkboxStateHandler));
67
+ this._renderer = this._register(this.instantiationService.createInstance(QuickInputTreeRenderer, hoverDelegate, this._onDidTriggerButton, this.onDidChangeCheckboxState, this._checkboxStateHandler, styles.toggle));
68
68
  this._filter = this.instantiationService.createInstance(QuickInputTreeFilter);
69
69
  this._sorter = this._register(new QuickInputTreeSorter());
70
70
  this._tree = this._register(this.instantiationService.createInstance((WorkbenchObjectTree), 'QuickInputTree', this._container, new QuickInputTreeDelegate(), [this._renderer], {
@@ -213,7 +213,7 @@ let QuickInputTreeController = class QuickInputTreeController extends Disposable
213
213
  }
214
214
  };
215
215
  QuickInputTreeController = __decorate([
216
- __param(2, IInstantiationService)
216
+ __param(3, IInstantiationService)
217
217
  ], QuickInputTreeController);
218
218
  export { QuickInputTreeController };
219
219
  //# sourceMappingURL=quickInputTreeController.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/quickinput/browser/tree/quickInputTreeController.ts","vs/platform/quickinput/browser/tree/quickInputTreeController.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;;;;;;;;;;AAEhG,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AAGtF,OAAO,EAAE,OAAO,EAAS,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAwB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAExE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAEhB,MAAM,8BAA8B;IAApC;QACkB,gBAAW,GAAG,IAAI,OAAO,EAA0B,CAAC;QAC7D,aAAQ,GAAG,CAAC,CAAC;IAiBtB,CAAC;IAfA,KAAK,CAAC,OAAuB;QAC5B,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACpB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACX,CAAC;QAED,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACX,CAAC;QAED,EAAE,GAAG,eAAe,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClC,OAAO,EAAE,CAAC;IACX,CAAC;CACD;AAEM,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,UAAU;IA4BvD,YACC,SAAsB,EACtB,aAAyC,EAClB,oBAA4D;QAEnF,KAAK,EAAE,CAAC;QAFgC,yBAAoB,GAApB,oBAAoB,CAAuB;QAxBnE,wBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAA6C,CAAC,CAAC;QAE/F,8BAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAA2C,CAAC,CAAC;QAC3G,6BAAwB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAExD,iCAA4B,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAiC,CAAC,CAAC;QAE5F,aAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QAChD;;UAEE;QACO,YAAO,GAAgB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAEnC,iBAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAQ,CAAC,CAAC;QACpE;;WAEG;QACM,gBAAW,GAAgB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAU3D,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,8BAA8B,EAAkB,CAAC,CAAC;QAClG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CACvE,sBAAsB,EACtB,aAAa,EACb,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,wBAAwB,EAC7B,IAAI,CAAC,qBAAqB,CAC1B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CACnE,CAAA,mBAAyD,CAAA,EACzD,gBAAgB,EAChB,IAAI,CAAC,UAAU,EACf,IAAI,sBAAsB,EAAE,EAC5B,CAAC,IAAI,CAAC,SAAS,CAAC,EAChB;YACC,qBAAqB,EAAE,IAAI,8BAA8B,CAAC,IAAI,CAAC,wBAAwB,CAAC;YACxF,mBAAmB,EAAE,KAAK;YAC1B,wBAAwB,EAAE,KAAK;YAC/B,iBAAiB,EAAE,KAAK;YACxB,uBAAuB,EAAE,IAAI;YAC7B,+BAA+B,EAAE,IAAI;YACrC,kBAAkB,EAAE,kBAAkB,CAAC,IAAI;YAC3C,mBAAmB,EAAE,IAAI;YACzB,wBAAwB,EAAE,IAAI;YAC9B,uBAAuB,EAAE,IAAI;YAC7B,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,gBAAgB,EAAE,IAAI,8BAA8B,EAAE;SACtD,CACD,CAAC,CAAC;QACH,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC;IACjD,CAAC;IAED,IAAI,SAAS,CAAC,KAAc;QAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACrD,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACjC,CAAC;IAED,IAAI,WAAW,CAAC,KAAc;QAC7B,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,mBAAmB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAC1E,CAAC;IAED,mBAAmB,CAAC,OAGnB;QACA,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,SAAkB;QACxB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG;QAC5D,iDAAiD;QACjD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,EAAE;YAC/B,kEAAkE;cAChE,CACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC;IAED,8BAA8B;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACvC,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;YACvB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,OAAO;YACR,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO;YACR,CAAC;YAED,oEAAoE;YACpE,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAC7B,8EAA8E;gBAC9E,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAiC,CAAC;YACjE,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9D,OAAO;YACR,CAAC;YAED,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;YACtE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,IAAoB,EAAE,QAAiB;QAClE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,CAAC,YAAY;QACrB,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE1B,sCAAsC;QACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;oBACrD,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;oBACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;QAED,qCAAqC;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,MAAM,EAAE,CAAC;YACf,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAEpD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC5C,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YACnC,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,wBAAwB;QACvB,sCAAsC;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;QAClB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,KAAK,EAAkB,CAAC;QACjD,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,SAAS;YACV,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAC9B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,YAAY,CAAC;IACrB,CAAC;CACD,CAAA;AA9NY,wBAAwB;IA+BlC,WAAA,qBAAqB,CAAA;GA/BX,wBAAwB,CA8NpC","file":"quickInputTreeController.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 * as dom from '../../../../base/browser/dom.js';\nimport { RenderIndentGuides } from '../../../../base/browser/ui/tree/abstractTree.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IIdentityProvider } from '../../../../base/browser/ui/list/list.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../../instantiation/common/instantiation.js';\nimport { WorkbenchObjectTree } from '../../../list/browser/listService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { QuickInputTreeDelegate } from './quickInputDelegate.js';\nimport { getParentNodeState, IQuickTreeFilterData } from './quickInputTree.js';\nimport { QuickTreeAccessibilityProvider } from './quickInputTreeAccessibilityProvider.js';\nimport { QuickInputTreeFilter } from './quickInputTreeFilter.js';\nimport { QuickInputCheckboxStateHandler, QuickInputTreeRenderer } from './quickInputTreeRenderer.js';\nimport { QuickInputTreeSorter } from './quickInputTreeSorter.js';\nimport { Checkbox } from '../../../../base/browser/ui/toggle/toggle.js';\n\nconst $ = dom.$;\n\nclass QuickInputTreeIdentityProvider implements IIdentityProvider<IQuickTreeItem> {\n\tprivate readonly _elementIds = new WeakMap<IQuickTreeItem, string>();\n\tprivate _counter = 0;\n\n\tgetId(element: IQuickTreeItem): { toString(): string } {\n\t\tlet id = element.id;\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = this._elementIds.get(element);\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = `__generated_${this._counter++}`;\n\t\tthis._elementIds.set(element, id);\n\t\treturn id;\n\t}\n}\n\nexport class QuickInputTreeController extends Disposable {\n\tprivate readonly _renderer: QuickInputTreeRenderer<IQuickTreeItem>;\n\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<IQuickTreeItem>;\n\tprivate readonly _filter: QuickInputTreeFilter;\n\tprivate readonly _sorter: QuickInputTreeSorter;\n\tprivate readonly _tree: WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>;\n\n\tprivate readonly _onDidTriggerButton = this._register(new Emitter<IQuickTreeItemButtonEvent<IQuickTreeItem>>());\n\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<IQuickTreeCheckboxEvent<IQuickTreeItem>>());\n\treadonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tprivate readonly _onDidCheckedLeafItemsChange = this._register(new Emitter<ReadonlyArray<IQuickTreeItem>>());\n\n\tprivate readonly _onLeave = new Emitter<void>();\n\t/**\n\t * Event that is fired when the tree would no longer have focus.\n\t*/\n\treadonly onLeave: Event<void> = this._onLeave.event;\n\n\tprivate readonly _onDidAccept = this._register(new Emitter<void>());\n\t/**\n\t * Event that is fired when a non-pickable item is clicked, indicating acceptance.\n\t */\n\treadonly onDidAccept: Event<void> = this._onDidAccept.event;\n\n\tprivate readonly _container: HTMLElement;\n\n\tconstructor(\n\t\tcontainer: HTMLElement,\n\t\thoverDelegate: IHoverDelegate | undefined,\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._container = dom.append(container, $('.quick-input-tree'));\n\t\tthis._checkboxStateHandler = this._register(new QuickInputCheckboxStateHandler<IQuickTreeItem>());\n\t\tthis._renderer = this._register(this.instantiationService.createInstance(\n\t\t\tQuickInputTreeRenderer,\n\t\t\thoverDelegate,\n\t\t\tthis._onDidTriggerButton,\n\t\t\tthis.onDidChangeCheckboxState,\n\t\t\tthis._checkboxStateHandler,\n\t\t));\n\t\tthis._filter = this.instantiationService.createInstance(QuickInputTreeFilter);\n\t\tthis._sorter = this._register(new QuickInputTreeSorter());\n\t\tthis._tree = this._register(this.instantiationService.createInstance(\n\t\t\tWorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>,\n\t\t\t'QuickInputTree',\n\t\t\tthis._container,\n\t\t\tnew QuickInputTreeDelegate(),\n\t\t\t[this._renderer],\n\t\t\t{\n\t\t\t\taccessibilityProvider: new QuickTreeAccessibilityProvider(this.onDidChangeCheckboxState),\n\t\t\t\thorizontalScrolling: false,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t\tfindWidgetEnabled: false,\n\t\t\t\talwaysConsumeMouseWheel: true,\n\t\t\t\thideTwistiesOfChildlessElements: true,\n\t\t\t\trenderIndentGuides: RenderIndentGuides.None,\n\t\t\t\texpandOnDoubleClick: true,\n\t\t\t\texpandOnlyOnTwistieClick: true,\n\t\t\t\tdisableExpandOnSpacebar: true,\n\t\t\t\tsorter: this._sorter,\n\t\t\t\tfilter: this._filter,\n\t\t\t\tidentityProvider: new QuickInputTreeIdentityProvider()\n\t\t\t}\n\t\t));\n\t\tthis.registerCheckboxStateListeners();\n\t\tthis.registerOnDidChangeFocus();\n\t}\n\n\tget tree(): WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData> {\n\t\treturn this._tree;\n\t}\n\n\tget displayed() {\n\t\treturn this._container.style.display !== 'none';\n\t}\n\n\tset displayed(value: boolean) {\n\t\tthis._container.style.display = value ? '' : 'none';\n\t}\n\n\tget sortByLabel() {\n\t\treturn this._sorter.sortByLabel;\n\t}\n\n\tset sortByLabel(value: boolean) {\n\t\tthis._sorter.sortByLabel = value;\n\t\tthis._tree.resort(null, true);\n\t}\n\n\tgetActiveDescendant() {\n\t\treturn this._tree.getHTMLElement().getAttribute('aria-activedescendant');\n\t}\n\n\tupdateFilterOptions(options: {\n\t\tmatchOnLabel?: boolean;\n\t\tmatchOnDescription?: boolean;\n\t}): void {\n\t\tif (options.matchOnLabel !== undefined) {\n\t\t\tthis._filter.matchOnLabel = options.matchOnLabel;\n\t\t}\n\t\tif (options.matchOnDescription !== undefined) {\n\t\t\tthis._filter.matchOnDescription = options.matchOnDescription;\n\t\t}\n\t\tthis._tree.refilter();\n\t}\n\n\tlayout(maxHeight?: number): void {\n\t\tthis._tree.getHTMLElement().style.maxHeight = maxHeight ? `${\n\t\t\t// Make sure height aligns with list item heights\n\t\t\tMath.floor(maxHeight / 44) * 44\n\t\t\t// Add some extra height so that it's clear there's more to scroll\n\t\t\t+ 6\n\t\t\t}px` : '';\n\t\tthis._tree.layout();\n\t}\n\n\tregisterCheckboxStateListeners() {\n\t\tthis._register(this._tree.onDidOpen(e => {\n\t\t\tconst item = e.element;\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (item.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if the item is pickable (defaults to true if not specified)\n\t\t\tif (item.pickable === false) {\n\t\t\t\t// For non-pickable items, set it as the active item and fire the accept event\n\t\t\t\tthis._tree.setFocus([item]);\n\t\t\t\tthis._onDidAccept.fire();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst target = e.browserEvent?.target as HTMLElement | undefined;\n\t\t\tif (target && target.classList.contains(Checkbox.CLASS_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.updateCheckboxState(item, item.checked === true);\n\t\t}));\n\n\t\tthis._register(this._checkboxStateHandler.onDidChangeCheckboxState(e => {\n\t\t\tthis.updateCheckboxState(e.item, e.checked === true);\n\t\t}));\n\t}\n\n\tprivate updateCheckboxState(item: IQuickTreeItem, newState: boolean): void {\n\t\tif ((item.checked ?? false) === newState) {\n\t\t\treturn; // No change\n\t\t}\n\n\t\t// Handle checked item\n\t\titem.checked = newState;\n\t\tthis._tree.rerender(item);\n\n\t\t// Handle children of the checked item\n\t\tconst updateSet = new Set<IQuickTreeItem>();\n\t\tconst toUpdate = [...this._tree.getNode(item).children];\n\t\twhile (toUpdate.length) {\n\t\t\tconst pop = toUpdate.shift();\n\t\t\tif (pop?.element && !updateSet.has(pop.element)) {\n\t\t\t\tupdateSet.add(pop.element);\n\t\t\t\tif ((pop.element.checked ?? false) !== item.checked) {\n\t\t\t\t\tpop.element.checked = item.checked;\n\t\t\t\t\tthis._tree.rerender(pop.element);\n\t\t\t\t}\n\t\t\t\ttoUpdate.push(...pop.children);\n\t\t\t}\n\t\t}\n\n\t\t// Handle parents of the checked item\n\t\tlet parent = this._tree.getParentElement(item);\n\t\twhile (parent) {\n\t\t\tconst parentChildren = [...this._tree.getNode(parent).children];\n\t\t\tconst newState = getParentNodeState(parentChildren);\n\n\t\t\tif ((parent.checked ?? false) !== newState) {\n\t\t\t\tparent.checked = newState;\n\t\t\t\tthis._tree.rerender(parent);\n\t\t\t}\n\t\t\tparent = this._tree.getParentElement(parent);\n\t\t}\n\n\t\tthis._onDidChangeCheckboxState.fire({\n\t\t\titem,\n\t\t\tchecked: item.checked ?? false\n\t\t});\n\t\tthis._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems());\n\t}\n\n\tregisterOnDidChangeFocus() {\n\t\t// Ensure that selection follows focus\n\t\tthis._register(this._tree.onDidChangeFocus(e => {\n\t\t\tconst item = this._tree.getFocus().findLast(item => item !== null);\n\t\t\tthis._tree.setSelection(item ? [item] : [], e.browserEvent);\n\t\t}));\n\t}\n\n\tgetCheckedLeafItems() {\n\t\tconst lookedAt = new Set<IQuickTreeItem>();\n\t\tconst toLookAt = [...this._tree.getNode().children];\n\t\tconst checkedItems = new Array<IQuickTreeItem>();\n\t\twhile (toLookAt.length) {\n\t\t\tconst lookAt = toLookAt.shift();\n\t\t\tif (!lookAt?.element || lookedAt.has(lookAt.element)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lookAt.element.checked) {\n\t\t\t\tlookedAt.add(lookAt.element);\n\t\t\t\ttoLookAt.push(...lookAt.children);\n\t\t\t\tif (!lookAt.element.children) {\n\t\t\t\t\tcheckedItems.push(lookAt.element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn checkedItems;\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 * as dom from '../../../../base/browser/dom.js';\nimport { RenderIndentGuides } from '../../../../base/browser/ui/tree/abstractTree.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IIdentityProvider } from '../../../../base/browser/ui/list/list.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../../instantiation/common/instantiation.js';\nimport { WorkbenchObjectTree } from '../../../list/browser/listService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { QuickInputTreeDelegate } from './quickInputDelegate.js';\nimport { getParentNodeState, IQuickTreeFilterData } from './quickInputTree.js';\nimport { QuickTreeAccessibilityProvider } from './quickInputTreeAccessibilityProvider.js';\nimport { QuickInputTreeFilter } from './quickInputTreeFilter.js';\nimport { QuickInputCheckboxStateHandler, QuickInputTreeRenderer } from './quickInputTreeRenderer.js';\nimport { QuickInputTreeSorter } from './quickInputTreeSorter.js';\nimport { Checkbox } from '../../../../base/browser/ui/toggle/toggle.js';\n\nconst $ = dom.$;\n\nclass QuickInputTreeIdentityProvider implements IIdentityProvider<IQuickTreeItem> {\n\tprivate readonly _elementIds = new WeakMap<IQuickTreeItem, string>();\n\tprivate _counter = 0;\n\n\tgetId(element: IQuickTreeItem): { toString(): string } {\n\t\tlet id = element.id;\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = this._elementIds.get(element);\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = `__generated_${this._counter++}`;\n\t\tthis._elementIds.set(element, id);\n\t\treturn id;\n\t}\n}\n\nexport class QuickInputTreeController extends Disposable {\n\tprivate readonly _renderer: QuickInputTreeRenderer<IQuickTreeItem>;\n\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<IQuickTreeItem>;\n\tprivate readonly _filter: QuickInputTreeFilter;\n\tprivate readonly _sorter: QuickInputTreeSorter;\n\tprivate readonly _tree: WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>;\n\n\tprivate readonly _onDidTriggerButton = this._register(new Emitter<IQuickTreeItemButtonEvent<IQuickTreeItem>>());\n\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<IQuickTreeCheckboxEvent<IQuickTreeItem>>());\n\treadonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tprivate readonly _onDidCheckedLeafItemsChange = this._register(new Emitter<ReadonlyArray<IQuickTreeItem>>());\n\n\tprivate readonly _onLeave = new Emitter<void>();\n\t/**\n\t * Event that is fired when the tree would no longer have focus.\n\t*/\n\treadonly onLeave: Event<void> = this._onLeave.event;\n\n\tprivate readonly _onDidAccept = this._register(new Emitter<void>());\n\t/**\n\t * Event that is fired when a non-pickable item is clicked, indicating acceptance.\n\t */\n\treadonly onDidAccept: Event<void> = this._onDidAccept.event;\n\n\tprivate readonly _container: HTMLElement;\n\n\tconstructor(\n\t\tcontainer: HTMLElement,\n\t\thoverDelegate: IHoverDelegate | undefined,\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._container = dom.append(container, $('.quick-input-tree'));\n\t\tthis._checkboxStateHandler = this._register(new QuickInputCheckboxStateHandler<IQuickTreeItem>());\n\t\tthis._renderer = this._register(this.instantiationService.createInstance(\n\t\t\tQuickInputTreeRenderer,\n\t\t\thoverDelegate,\n\t\t\tthis._onDidTriggerButton,\n\t\t\tthis.onDidChangeCheckboxState,\n\t\t\tthis._checkboxStateHandler,\n\t\t));\n\t\tthis._filter = this.instantiationService.createInstance(QuickInputTreeFilter);\n\t\tthis._sorter = this._register(new QuickInputTreeSorter());\n\t\tthis._tree = this._register(this.instantiationService.createInstance(\n\t\t\tWorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>,\n\t\t\t'QuickInputTree',\n\t\t\tthis._container,\n\t\t\tnew QuickInputTreeDelegate(),\n\t\t\t[this._renderer],\n\t\t\t{\n\t\t\t\taccessibilityProvider: new QuickTreeAccessibilityProvider(this.onDidChangeCheckboxState),\n\t\t\t\thorizontalScrolling: false,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t\tfindWidgetEnabled: false,\n\t\t\t\talwaysConsumeMouseWheel: true,\n\t\t\t\thideTwistiesOfChildlessElements: true,\n\t\t\t\trenderIndentGuides: RenderIndentGuides.None,\n\t\t\t\texpandOnDoubleClick: true,\n\t\t\t\texpandOnlyOnTwistieClick: true,\n\t\t\t\tdisableExpandOnSpacebar: true,\n\t\t\t\tsorter: this._sorter,\n\t\t\t\tfilter: this._filter,\n\t\t\t\tidentityProvider: new QuickInputTreeIdentityProvider()\n\t\t\t}\n\t\t));\n\t\tthis.registerCheckboxStateListeners();\n\t\tthis.registerOnDidChangeFocus();\n\t}\n\n\tget tree(): WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData> {\n\t\treturn this._tree;\n\t}\n\n\tget displayed() {\n\t\treturn this._container.style.display !== 'none';\n\t}\n\n\tset displayed(value: boolean) {\n\t\tthis._container.style.display = value ? '' : 'none';\n\t}\n\n\tget sortByLabel() {\n\t\treturn this._sorter.sortByLabel;\n\t}\n\n\tset sortByLabel(value: boolean) {\n\t\tthis._sorter.sortByLabel = value;\n\t\tthis._tree.resort(null, true);\n\t}\n\n\tgetActiveDescendant() {\n\t\treturn this._tree.getHTMLElement().getAttribute('aria-activedescendant');\n\t}\n\n\tupdateFilterOptions(options: {\n\t\tmatchOnLabel?: boolean;\n\t\tmatchOnDescription?: boolean;\n\t}): void {\n\t\tif (options.matchOnLabel !== undefined) {\n\t\t\tthis._filter.matchOnLabel = options.matchOnLabel;\n\t\t}\n\t\tif (options.matchOnDescription !== undefined) {\n\t\t\tthis._filter.matchOnDescription = options.matchOnDescription;\n\t\t}\n\t\tthis._tree.refilter();\n\t}\n\n\tlayout(maxHeight?: number): void {\n\t\tthis._tree.getHTMLElement().style.maxHeight = maxHeight ? `${\n\t\t\t// Make sure height aligns with list item heights\n\t\t\tMath.floor(maxHeight / 44) * 44\n\t\t\t// Add some extra height so that it's clear there's more to scroll\n\t\t\t+ 6\n\t\t\t}px` : '';\n\t\tthis._tree.layout();\n\t}\n\n\tregisterCheckboxStateListeners() {\n\t\tthis._register(this._tree.onDidOpen(e => {\n\t\t\tconst item = e.element;\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (item.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if the item is pickable (defaults to true if not specified)\n\t\t\tif (item.pickable === false) {\n\t\t\t\t// For non-pickable items, set it as the active item and fire the accept event\n\t\t\t\tthis._tree.setFocus([item]);\n\t\t\t\tthis._onDidAccept.fire();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst target = e.browserEvent?.target as HTMLElement | undefined;\n\t\t\tif (target && target.classList.contains(Checkbox.CLASS_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.updateCheckboxState(item, item.checked === true);\n\t\t}));\n\n\t\tthis._register(this._checkboxStateHandler.onDidChangeCheckboxState(e => {\n\t\t\tthis.updateCheckboxState(e.item, e.checked === true);\n\t\t}));\n\t}\n\n\tprivate updateCheckboxState(item: IQuickTreeItem, newState: boolean): void {\n\t\tif ((item.checked ?? false) === newState) {\n\t\t\treturn; // No change\n\t\t}\n\n\t\t// Handle checked item\n\t\titem.checked = newState;\n\t\tthis._tree.rerender(item);\n\n\t\t// Handle children of the checked item\n\t\tconst updateSet = new Set<IQuickTreeItem>();\n\t\tconst toUpdate = [...this._tree.getNode(item).children];\n\t\twhile (toUpdate.length) {\n\t\t\tconst pop = toUpdate.shift();\n\t\t\tif (pop?.element && !updateSet.has(pop.element)) {\n\t\t\t\tupdateSet.add(pop.element);\n\t\t\t\tif ((pop.element.checked ?? false) !== item.checked) {\n\t\t\t\t\tpop.element.checked = item.checked;\n\t\t\t\t\tthis._tree.rerender(pop.element);\n\t\t\t\t}\n\t\t\t\ttoUpdate.push(...pop.children);\n\t\t\t}\n\t\t}\n\n\t\t// Handle parents of the checked item\n\t\tlet parent = this._tree.getParentElement(item);\n\t\twhile (parent) {\n\t\t\tconst parentChildren = [...this._tree.getNode(parent).children];\n\t\t\tconst newState = getParentNodeState(parentChildren);\n\n\t\t\tif ((parent.checked ?? false) !== newState) {\n\t\t\t\tparent.checked = newState;\n\t\t\t\tthis._tree.rerender(parent);\n\t\t\t}\n\t\t\tparent = this._tree.getParentElement(parent);\n\t\t}\n\n\t\tthis._onDidChangeCheckboxState.fire({\n\t\t\titem,\n\t\t\tchecked: item.checked ?? false\n\t\t});\n\t\tthis._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems());\n\t}\n\n\tregisterOnDidChangeFocus() {\n\t\t// Ensure that selection follows focus\n\t\tthis._register(this._tree.onDidChangeFocus(e => {\n\t\t\tconst item = this._tree.getFocus().findLast(item => item !== null);\n\t\t\tthis._tree.setSelection(item ? [item] : [], e.browserEvent);\n\t\t}));\n\t}\n\n\tgetCheckedLeafItems() {\n\t\tconst lookedAt = new Set<IQuickTreeItem>();\n\t\tconst toLookAt = [...this._tree.getNode().children];\n\t\tconst checkedItems = new Array<IQuickTreeItem>();\n\t\twhile (toLookAt.length) {\n\t\t\tconst lookAt = toLookAt.shift();\n\t\t\tif (!lookAt?.element || lookedAt.has(lookAt.element)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lookAt.element.checked) {\n\t\t\t\tlookedAt.add(lookAt.element);\n\t\t\t\ttoLookAt.push(...lookAt.children);\n\t\t\t\tif (!lookAt.element.children) {\n\t\t\t\t\tcheckedItems.push(lookAt.element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn checkedItems;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/quickinput/browser/tree/quickInputTreeController.ts","vs/platform/quickinput/browser/tree/quickInputTreeController.ts"],"names":[],"mappings":"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","file":"quickInputTreeController.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 * as dom from '../../../../base/browser/dom.js';\nimport { RenderIndentGuides } from '../../../../base/browser/ui/tree/abstractTree.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IIdentityProvider } from '../../../../base/browser/ui/list/list.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../../instantiation/common/instantiation.js';\nimport { WorkbenchObjectTree } from '../../../list/browser/listService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { QuickInputTreeDelegate } from './quickInputDelegate.js';\nimport { getParentNodeState, IQuickTreeFilterData } from './quickInputTree.js';\nimport { QuickTreeAccessibilityProvider } from './quickInputTreeAccessibilityProvider.js';\nimport { QuickInputTreeFilter } from './quickInputTreeFilter.js';\nimport { QuickInputCheckboxStateHandler, QuickInputTreeRenderer } from './quickInputTreeRenderer.js';\nimport { QuickInputTreeSorter } from './quickInputTreeSorter.js';\nimport { Checkbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { IQuickInputStyles } from '../quickInput.js';\n\nconst $ = dom.$;\n\nclass QuickInputTreeIdentityProvider implements IIdentityProvider<IQuickTreeItem> {\n\tprivate readonly _elementIds = new WeakMap<IQuickTreeItem, string>();\n\tprivate _counter = 0;\n\n\tgetId(element: IQuickTreeItem): { toString(): string } {\n\t\tlet id = element.id;\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = this._elementIds.get(element);\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = `__generated_${this._counter++}`;\n\t\tthis._elementIds.set(element, id);\n\t\treturn id;\n\t}\n}\n\nexport class QuickInputTreeController extends Disposable {\n\tprivate readonly _renderer: QuickInputTreeRenderer<IQuickTreeItem>;\n\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<IQuickTreeItem>;\n\tprivate readonly _filter: QuickInputTreeFilter;\n\tprivate readonly _sorter: QuickInputTreeSorter;\n\tprivate readonly _tree: WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>;\n\n\tprivate readonly _onDidTriggerButton = this._register(new Emitter<IQuickTreeItemButtonEvent<IQuickTreeItem>>());\n\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<IQuickTreeCheckboxEvent<IQuickTreeItem>>());\n\treadonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tprivate readonly _onDidCheckedLeafItemsChange = this._register(new Emitter<ReadonlyArray<IQuickTreeItem>>());\n\n\tprivate readonly _onLeave = new Emitter<void>();\n\t/**\n\t * Event that is fired when the tree would no longer have focus.\n\t*/\n\treadonly onLeave: Event<void> = this._onLeave.event;\n\n\tprivate readonly _onDidAccept = this._register(new Emitter<void>());\n\t/**\n\t * Event that is fired when a non-pickable item is clicked, indicating acceptance.\n\t */\n\treadonly onDidAccept: Event<void> = this._onDidAccept.event;\n\n\tprivate readonly _container: HTMLElement;\n\n\tconstructor(\n\t\tcontainer: HTMLElement,\n\t\thoverDelegate: IHoverDelegate | undefined,\n\t\tstyles: IQuickInputStyles,\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._container = dom.append(container, $('.quick-input-tree'));\n\t\tthis._checkboxStateHandler = this._register(new QuickInputCheckboxStateHandler<IQuickTreeItem>());\n\t\tthis._renderer = this._register(this.instantiationService.createInstance(\n\t\t\tQuickInputTreeRenderer,\n\t\t\thoverDelegate,\n\t\t\tthis._onDidTriggerButton,\n\t\t\tthis.onDidChangeCheckboxState,\n\t\t\tthis._checkboxStateHandler,\n\t\t\tstyles.toggle\n\t\t));\n\t\tthis._filter = this.instantiationService.createInstance(QuickInputTreeFilter);\n\t\tthis._sorter = this._register(new QuickInputTreeSorter());\n\t\tthis._tree = this._register(this.instantiationService.createInstance(\n\t\t\tWorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>,\n\t\t\t'QuickInputTree',\n\t\t\tthis._container,\n\t\t\tnew QuickInputTreeDelegate(),\n\t\t\t[this._renderer],\n\t\t\t{\n\t\t\t\taccessibilityProvider: new QuickTreeAccessibilityProvider(this.onDidChangeCheckboxState),\n\t\t\t\thorizontalScrolling: false,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t\tfindWidgetEnabled: false,\n\t\t\t\talwaysConsumeMouseWheel: true,\n\t\t\t\thideTwistiesOfChildlessElements: true,\n\t\t\t\trenderIndentGuides: RenderIndentGuides.None,\n\t\t\t\texpandOnDoubleClick: true,\n\t\t\t\texpandOnlyOnTwistieClick: true,\n\t\t\t\tdisableExpandOnSpacebar: true,\n\t\t\t\tsorter: this._sorter,\n\t\t\t\tfilter: this._filter,\n\t\t\t\tidentityProvider: new QuickInputTreeIdentityProvider()\n\t\t\t}\n\t\t));\n\t\tthis.registerCheckboxStateListeners();\n\t\tthis.registerOnDidChangeFocus();\n\t}\n\n\tget tree(): WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData> {\n\t\treturn this._tree;\n\t}\n\n\tget displayed() {\n\t\treturn this._container.style.display !== 'none';\n\t}\n\n\tset displayed(value: boolean) {\n\t\tthis._container.style.display = value ? '' : 'none';\n\t}\n\n\tget sortByLabel() {\n\t\treturn this._sorter.sortByLabel;\n\t}\n\n\tset sortByLabel(value: boolean) {\n\t\tthis._sorter.sortByLabel = value;\n\t\tthis._tree.resort(null, true);\n\t}\n\n\tgetActiveDescendant() {\n\t\treturn this._tree.getHTMLElement().getAttribute('aria-activedescendant');\n\t}\n\n\tupdateFilterOptions(options: {\n\t\tmatchOnLabel?: boolean;\n\t\tmatchOnDescription?: boolean;\n\t}): void {\n\t\tif (options.matchOnLabel !== undefined) {\n\t\t\tthis._filter.matchOnLabel = options.matchOnLabel;\n\t\t}\n\t\tif (options.matchOnDescription !== undefined) {\n\t\t\tthis._filter.matchOnDescription = options.matchOnDescription;\n\t\t}\n\t\tthis._tree.refilter();\n\t}\n\n\tlayout(maxHeight?: number): void {\n\t\tthis._tree.getHTMLElement().style.maxHeight = maxHeight ? `${\n\t\t\t// Make sure height aligns with list item heights\n\t\t\tMath.floor(maxHeight / 44) * 44\n\t\t\t// Add some extra height so that it's clear there's more to scroll\n\t\t\t+ 6\n\t\t\t}px` : '';\n\t\tthis._tree.layout();\n\t}\n\n\tregisterCheckboxStateListeners() {\n\t\tthis._register(this._tree.onDidOpen(e => {\n\t\t\tconst item = e.element;\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (item.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if the item is pickable (defaults to true if not specified)\n\t\t\tif (item.pickable === false) {\n\t\t\t\t// For non-pickable items, set it as the active item and fire the accept event\n\t\t\t\tthis._tree.setFocus([item]);\n\t\t\t\tthis._onDidAccept.fire();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst target = e.browserEvent?.target as HTMLElement | undefined;\n\t\t\tif (target && target.classList.contains(Checkbox.CLASS_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.updateCheckboxState(item, item.checked === true);\n\t\t}));\n\n\t\tthis._register(this._checkboxStateHandler.onDidChangeCheckboxState(e => {\n\t\t\tthis.updateCheckboxState(e.item, e.checked === true);\n\t\t}));\n\t}\n\n\tprivate updateCheckboxState(item: IQuickTreeItem, newState: boolean): void {\n\t\tif ((item.checked ?? false) === newState) {\n\t\t\treturn; // No change\n\t\t}\n\n\t\t// Handle checked item\n\t\titem.checked = newState;\n\t\tthis._tree.rerender(item);\n\n\t\t// Handle children of the checked item\n\t\tconst updateSet = new Set<IQuickTreeItem>();\n\t\tconst toUpdate = [...this._tree.getNode(item).children];\n\t\twhile (toUpdate.length) {\n\t\t\tconst pop = toUpdate.shift();\n\t\t\tif (pop?.element && !updateSet.has(pop.element)) {\n\t\t\t\tupdateSet.add(pop.element);\n\t\t\t\tif ((pop.element.checked ?? false) !== item.checked) {\n\t\t\t\t\tpop.element.checked = item.checked;\n\t\t\t\t\tthis._tree.rerender(pop.element);\n\t\t\t\t}\n\t\t\t\ttoUpdate.push(...pop.children);\n\t\t\t}\n\t\t}\n\n\t\t// Handle parents of the checked item\n\t\tlet parent = this._tree.getParentElement(item);\n\t\twhile (parent) {\n\t\t\tconst parentChildren = [...this._tree.getNode(parent).children];\n\t\t\tconst newState = getParentNodeState(parentChildren);\n\n\t\t\tif ((parent.checked ?? false) !== newState) {\n\t\t\t\tparent.checked = newState;\n\t\t\t\tthis._tree.rerender(parent);\n\t\t\t}\n\t\t\tparent = this._tree.getParentElement(parent);\n\t\t}\n\n\t\tthis._onDidChangeCheckboxState.fire({\n\t\t\titem,\n\t\t\tchecked: item.checked ?? false\n\t\t});\n\t\tthis._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems());\n\t}\n\n\tregisterOnDidChangeFocus() {\n\t\t// Ensure that selection follows focus\n\t\tthis._register(this._tree.onDidChangeFocus(e => {\n\t\t\tconst item = this._tree.getFocus().findLast(item => item !== null);\n\t\t\tthis._tree.setSelection(item ? [item] : [], e.browserEvent);\n\t\t}));\n\t}\n\n\tgetCheckedLeafItems() {\n\t\tconst lookedAt = new Set<IQuickTreeItem>();\n\t\tconst toLookAt = [...this._tree.getNode().children];\n\t\tconst checkedItems = new Array<IQuickTreeItem>();\n\t\twhile (toLookAt.length) {\n\t\t\tconst lookAt = toLookAt.shift();\n\t\t\tif (!lookAt?.element || lookedAt.has(lookAt.element)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lookAt.element.checked) {\n\t\t\t\tlookedAt.add(lookAt.element);\n\t\t\t\ttoLookAt.push(...lookAt.children);\n\t\t\t\tif (!lookAt.element.children) {\n\t\t\t\t\tcheckedItems.push(lookAt.element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn checkedItems;\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 * as dom from '../../../../base/browser/dom.js';\nimport { RenderIndentGuides } from '../../../../base/browser/ui/tree/abstractTree.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IIdentityProvider } from '../../../../base/browser/ui/list/list.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../../instantiation/common/instantiation.js';\nimport { WorkbenchObjectTree } from '../../../list/browser/listService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { QuickInputTreeDelegate } from './quickInputDelegate.js';\nimport { getParentNodeState, IQuickTreeFilterData } from './quickInputTree.js';\nimport { QuickTreeAccessibilityProvider } from './quickInputTreeAccessibilityProvider.js';\nimport { QuickInputTreeFilter } from './quickInputTreeFilter.js';\nimport { QuickInputCheckboxStateHandler, QuickInputTreeRenderer } from './quickInputTreeRenderer.js';\nimport { QuickInputTreeSorter } from './quickInputTreeSorter.js';\nimport { Checkbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { IQuickInputStyles } from '../quickInput.js';\n\nconst $ = dom.$;\n\nclass QuickInputTreeIdentityProvider implements IIdentityProvider<IQuickTreeItem> {\n\tprivate readonly _elementIds = new WeakMap<IQuickTreeItem, string>();\n\tprivate _counter = 0;\n\n\tgetId(element: IQuickTreeItem): { toString(): string } {\n\t\tlet id = element.id;\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = this._elementIds.get(element);\n\t\tif (id !== undefined) {\n\t\t\treturn id;\n\t\t}\n\n\t\tid = `__generated_${this._counter++}`;\n\t\tthis._elementIds.set(element, id);\n\t\treturn id;\n\t}\n}\n\nexport class QuickInputTreeController extends Disposable {\n\tprivate readonly _renderer: QuickInputTreeRenderer<IQuickTreeItem>;\n\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<IQuickTreeItem>;\n\tprivate readonly _filter: QuickInputTreeFilter;\n\tprivate readonly _sorter: QuickInputTreeSorter;\n\tprivate readonly _tree: WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>;\n\n\tprivate readonly _onDidTriggerButton = this._register(new Emitter<IQuickTreeItemButtonEvent<IQuickTreeItem>>());\n\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<IQuickTreeCheckboxEvent<IQuickTreeItem>>());\n\treadonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tprivate readonly _onDidCheckedLeafItemsChange = this._register(new Emitter<ReadonlyArray<IQuickTreeItem>>());\n\n\tprivate readonly _onLeave = new Emitter<void>();\n\t/**\n\t * Event that is fired when the tree would no longer have focus.\n\t*/\n\treadonly onLeave: Event<void> = this._onLeave.event;\n\n\tprivate readonly _onDidAccept = this._register(new Emitter<void>());\n\t/**\n\t * Event that is fired when a non-pickable item is clicked, indicating acceptance.\n\t */\n\treadonly onDidAccept: Event<void> = this._onDidAccept.event;\n\n\tprivate readonly _container: HTMLElement;\n\n\tconstructor(\n\t\tcontainer: HTMLElement,\n\t\thoverDelegate: IHoverDelegate | undefined,\n\t\tstyles: IQuickInputStyles,\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._container = dom.append(container, $('.quick-input-tree'));\n\t\tthis._checkboxStateHandler = this._register(new QuickInputCheckboxStateHandler<IQuickTreeItem>());\n\t\tthis._renderer = this._register(this.instantiationService.createInstance(\n\t\t\tQuickInputTreeRenderer,\n\t\t\thoverDelegate,\n\t\t\tthis._onDidTriggerButton,\n\t\t\tthis.onDidChangeCheckboxState,\n\t\t\tthis._checkboxStateHandler,\n\t\t\tstyles.toggle\n\t\t));\n\t\tthis._filter = this.instantiationService.createInstance(QuickInputTreeFilter);\n\t\tthis._sorter = this._register(new QuickInputTreeSorter());\n\t\tthis._tree = this._register(this.instantiationService.createInstance(\n\t\t\tWorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData>,\n\t\t\t'QuickInputTree',\n\t\t\tthis._container,\n\t\t\tnew QuickInputTreeDelegate(),\n\t\t\t[this._renderer],\n\t\t\t{\n\t\t\t\taccessibilityProvider: new QuickTreeAccessibilityProvider(this.onDidChangeCheckboxState),\n\t\t\t\thorizontalScrolling: false,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t\tfindWidgetEnabled: false,\n\t\t\t\talwaysConsumeMouseWheel: true,\n\t\t\t\thideTwistiesOfChildlessElements: true,\n\t\t\t\trenderIndentGuides: RenderIndentGuides.None,\n\t\t\t\texpandOnDoubleClick: true,\n\t\t\t\texpandOnlyOnTwistieClick: true,\n\t\t\t\tdisableExpandOnSpacebar: true,\n\t\t\t\tsorter: this._sorter,\n\t\t\t\tfilter: this._filter,\n\t\t\t\tidentityProvider: new QuickInputTreeIdentityProvider()\n\t\t\t}\n\t\t));\n\t\tthis.registerCheckboxStateListeners();\n\t\tthis.registerOnDidChangeFocus();\n\t}\n\n\tget tree(): WorkbenchObjectTree<IQuickTreeItem, IQuickTreeFilterData> {\n\t\treturn this._tree;\n\t}\n\n\tget displayed() {\n\t\treturn this._container.style.display !== 'none';\n\t}\n\n\tset displayed(value: boolean) {\n\t\tthis._container.style.display = value ? '' : 'none';\n\t}\n\n\tget sortByLabel() {\n\t\treturn this._sorter.sortByLabel;\n\t}\n\n\tset sortByLabel(value: boolean) {\n\t\tthis._sorter.sortByLabel = value;\n\t\tthis._tree.resort(null, true);\n\t}\n\n\tgetActiveDescendant() {\n\t\treturn this._tree.getHTMLElement().getAttribute('aria-activedescendant');\n\t}\n\n\tupdateFilterOptions(options: {\n\t\tmatchOnLabel?: boolean;\n\t\tmatchOnDescription?: boolean;\n\t}): void {\n\t\tif (options.matchOnLabel !== undefined) {\n\t\t\tthis._filter.matchOnLabel = options.matchOnLabel;\n\t\t}\n\t\tif (options.matchOnDescription !== undefined) {\n\t\t\tthis._filter.matchOnDescription = options.matchOnDescription;\n\t\t}\n\t\tthis._tree.refilter();\n\t}\n\n\tlayout(maxHeight?: number): void {\n\t\tthis._tree.getHTMLElement().style.maxHeight = maxHeight ? `${\n\t\t\t// Make sure height aligns with list item heights\n\t\t\tMath.floor(maxHeight / 44) * 44\n\t\t\t// Add some extra height so that it's clear there's more to scroll\n\t\t\t+ 6\n\t\t\t}px` : '';\n\t\tthis._tree.layout();\n\t}\n\n\tregisterCheckboxStateListeners() {\n\t\tthis._register(this._tree.onDidOpen(e => {\n\t\t\tconst item = e.element;\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (item.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if the item is pickable (defaults to true if not specified)\n\t\t\tif (item.pickable === false) {\n\t\t\t\t// For non-pickable items, set it as the active item and fire the accept event\n\t\t\t\tthis._tree.setFocus([item]);\n\t\t\t\tthis._onDidAccept.fire();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst target = e.browserEvent?.target as HTMLElement | undefined;\n\t\t\tif (target && target.classList.contains(Checkbox.CLASS_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.updateCheckboxState(item, item.checked === true);\n\t\t}));\n\n\t\tthis._register(this._checkboxStateHandler.onDidChangeCheckboxState(e => {\n\t\t\tthis.updateCheckboxState(e.item, e.checked === true);\n\t\t}));\n\t}\n\n\tprivate updateCheckboxState(item: IQuickTreeItem, newState: boolean): void {\n\t\tif ((item.checked ?? false) === newState) {\n\t\t\treturn; // No change\n\t\t}\n\n\t\t// Handle checked item\n\t\titem.checked = newState;\n\t\tthis._tree.rerender(item);\n\n\t\t// Handle children of the checked item\n\t\tconst updateSet = new Set<IQuickTreeItem>();\n\t\tconst toUpdate = [...this._tree.getNode(item).children];\n\t\twhile (toUpdate.length) {\n\t\t\tconst pop = toUpdate.shift();\n\t\t\tif (pop?.element && !updateSet.has(pop.element)) {\n\t\t\t\tupdateSet.add(pop.element);\n\t\t\t\tif ((pop.element.checked ?? false) !== item.checked) {\n\t\t\t\t\tpop.element.checked = item.checked;\n\t\t\t\t\tthis._tree.rerender(pop.element);\n\t\t\t\t}\n\t\t\t\ttoUpdate.push(...pop.children);\n\t\t\t}\n\t\t}\n\n\t\t// Handle parents of the checked item\n\t\tlet parent = this._tree.getParentElement(item);\n\t\twhile (parent) {\n\t\t\tconst parentChildren = [...this._tree.getNode(parent).children];\n\t\t\tconst newState = getParentNodeState(parentChildren);\n\n\t\t\tif ((parent.checked ?? false) !== newState) {\n\t\t\t\tparent.checked = newState;\n\t\t\t\tthis._tree.rerender(parent);\n\t\t\t}\n\t\t\tparent = this._tree.getParentElement(parent);\n\t\t}\n\n\t\tthis._onDidChangeCheckboxState.fire({\n\t\t\titem,\n\t\t\tchecked: item.checked ?? false\n\t\t});\n\t\tthis._onDidCheckedLeafItemsChange.fire(this.getCheckedLeafItems());\n\t}\n\n\tregisterOnDidChangeFocus() {\n\t\t// Ensure that selection follows focus\n\t\tthis._register(this._tree.onDidChangeFocus(e => {\n\t\t\tconst item = this._tree.getFocus().findLast(item => item !== null);\n\t\t\tthis._tree.setSelection(item ? [item] : [], e.browserEvent);\n\t\t}));\n\t}\n\n\tgetCheckedLeafItems() {\n\t\tconst lookedAt = new Set<IQuickTreeItem>();\n\t\tconst toLookAt = [...this._tree.getNode().children];\n\t\tconst checkedItems = new Array<IQuickTreeItem>();\n\t\twhile (toLookAt.length) {\n\t\t\tconst lookAt = toLookAt.shift();\n\t\t\tif (!lookAt?.element || lookedAt.has(lookAt.element)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lookAt.element.checked) {\n\t\t\t\tlookedAt.add(lookAt.element);\n\t\t\t\ttoLookAt.push(...lookAt.children);\n\t\t\t\tif (!lookAt.element.children) {\n\t\t\t\t\tcheckedItems.push(lookAt.element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn checkedItems;\n\t}\n}\n"]}
@@ -16,7 +16,7 @@ import * as cssJs from '../../../../base/browser/cssValue.js';
16
16
  import * as dom from '../../../../base/browser/dom.js';
17
17
  import { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';
18
18
  import { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';
19
- import { TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';
19
+ import { createToggleActionViewItemProvider, TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';
20
20
  import { Emitter, Event } from '../../../../base/common/event.js';
21
21
  import { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';
22
22
  import { URI } from '../../../../base/common/uri.js';
@@ -39,12 +39,13 @@ export class QuickInputCheckboxStateHandler extends Disposable {
39
39
  let QuickInputTreeRenderer = class QuickInputTreeRenderer extends Disposable {
40
40
  static { QuickInputTreeRenderer_1 = this; }
41
41
  static { this.ID = 'quickInputTreeElement'; }
42
- constructor(_hoverDelegate, _buttonTriggeredEmitter, onCheckedEvent, _checkboxStateHandler, _themeService) {
42
+ constructor(_hoverDelegate, _buttonTriggeredEmitter, onCheckedEvent, _checkboxStateHandler, _toggleStyles, _themeService) {
43
43
  super();
44
44
  this._hoverDelegate = _hoverDelegate;
45
45
  this._buttonTriggeredEmitter = _buttonTriggeredEmitter;
46
46
  this.onCheckedEvent = onCheckedEvent;
47
47
  this._checkboxStateHandler = _checkboxStateHandler;
48
+ this._toggleStyles = _toggleStyles;
48
49
  this._themeService = _themeService;
49
50
  this.templateId = QuickInputTreeRenderer_1.ID;
50
51
  }
@@ -64,7 +65,10 @@ let QuickInputTreeRenderer = class QuickInputTreeRenderer extends Disposable {
64
65
  supportIcons: true,
65
66
  hoverDelegate: this._hoverDelegate
66
67
  }));
67
- const actionBar = store.add(new ActionBar(entry, this._hoverDelegate ? { hoverDelegate: this._hoverDelegate } : undefined));
68
+ const actionBar = store.add(new ActionBar(entry, {
69
+ actionViewItemProvider: createToggleActionViewItemProvider(this._toggleStyles),
70
+ hoverDelegate: this._hoverDelegate
71
+ }));
68
72
  actionBar.domNode.classList.add('quick-input-tree-entry-action-bar');
69
73
  return {
70
74
  toDisposeTemplate: store,
@@ -147,7 +151,7 @@ let QuickInputTreeRenderer = class QuickInputTreeRenderer extends Disposable {
147
151
  }
148
152
  };
149
153
  QuickInputTreeRenderer = QuickInputTreeRenderer_1 = __decorate([
150
- __param(4, IThemeService)
154
+ __param(5, IThemeService)
151
155
  ], QuickInputTreeRenderer);
152
156
  export { QuickInputTreeRenderer };
153
157
  //# sourceMappingURL=quickInputTreeRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.ts","vs/platform/quickinput/browser/tree/quickInputTreeRenderer.ts"],"names":[],"mappings":"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","file":"quickInputTreeRenderer.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 * as cssJs from '../../../../base/browser/cssValue.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { IManagedHoverTooltipMarkdownString } from '../../../../base/browser/ui/hover/hover.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { ITreeElementRenderDetails, ITreeNode, ITreeRenderer } from '../../../../base/browser/ui/tree/tree.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { defaultCheckboxStyles } from '../../../theme/browser/defaultStyles.js';\nimport { isDark } from '../../../theme/common/theme.js';\nimport { escape } from '../../../../base/common/strings.js';\nimport { IThemeService } from '../../../theme/common/themeService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { quickInputButtonToAction } from '../quickInputUtils.js';\nimport { IQuickTreeFilterData } from './quickInputTree.js';\n\nconst $ = dom.$;\n\nexport interface IQuickTreeTemplateData {\n\tentry: HTMLElement;\n\tcheckbox: TriStateCheckbox;\n\ticon: HTMLElement;\n\tlabel: IconLabel;\n\tactionBar: ActionBar;\n\ttoDisposeElement: DisposableStore;\n\ttoDisposeTemplate: DisposableStore;\n}\n\nexport class QuickInputCheckboxStateHandler<T> extends Disposable {\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<{ item: T; checked: boolean | 'mixed' }>());\n\tpublic readonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tpublic setCheckboxState(node: T, checked: boolean | 'mixed') {\n\t\tthis._onDidChangeCheckboxState.fire({ item: node, checked });\n\t}\n}\n\nexport class QuickInputTreeRenderer<T extends IQuickTreeItem> extends Disposable implements ITreeRenderer<T, IQuickTreeFilterData, IQuickTreeTemplateData> {\n\tstatic readonly ID = 'quickInputTreeElement';\n\ttemplateId = QuickInputTreeRenderer.ID;\n\n\tconstructor(\n\t\tprivate readonly _hoverDelegate: IHoverDelegate | undefined,\n\t\tprivate readonly _buttonTriggeredEmitter: Emitter<IQuickTreeItemButtonEvent<T>>,\n\t\tprivate readonly onCheckedEvent: Event<IQuickTreeCheckboxEvent<T>>,\n\t\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<T>,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t}\n\n\trenderTemplate(container: HTMLElement): IQuickTreeTemplateData {\n\t\tconst store = new DisposableStore();\n\n\t\t// Main entry container\n\t\tconst entry = dom.append(container, $('.quick-input-tree-entry'));\n\n\t\tconst checkbox = store.add(new TriStateCheckbox('', false, { ...defaultCheckboxStyles, size: 15 }));\n\t\tentry.appendChild(checkbox.domNode);\n\n\t\tconst checkboxLabel = dom.append(entry, $('label.quick-input-tree-label'));\n\t\tconst rows = dom.append(checkboxLabel, $('.quick-input-tree-rows'));\n\t\tconst row1 = dom.append(rows, $('.quick-input-tree-row'));\n\t\tconst icon = dom.prepend(row1, $('.quick-input-tree-icon'));\n\t\tconst label = store.add(new IconLabel(row1, {\n\t\t\tsupportHighlights: true,\n\t\t\tsupportDescriptionHighlights: true,\n\t\t\tsupportIcons: true,\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tconst actionBar = store.add(new ActionBar(entry, this._hoverDelegate ? { hoverDelegate: this._hoverDelegate } : undefined));\n\t\tactionBar.domNode.classList.add('quick-input-tree-entry-action-bar');\n\t\treturn {\n\t\t\ttoDisposeTemplate: store,\n\t\t\tentry,\n\t\t\tcheckbox,\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tactionBar,\n\t\t\ttoDisposeElement: new DisposableStore(),\n\t\t};\n\t}\n\n\trenderElement(node: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\tconst store = templateData.toDisposeElement;\n\t\tconst quickTreeItem = node.element;\n\n\t\t// Checkbox\n\t\tif (quickTreeItem.pickable === false) {\n\t\t\t// Hide checkbox for non-pickable items\n\t\t\ttemplateData.checkbox.domNode.style.display = 'none';\n\t\t} else {\n\t\t\tconst checkbox = templateData.checkbox;\n\t\t\tcheckbox.domNode.style.display = '';\n\t\t\tcheckbox.checked = quickTreeItem.checked ?? false;\n\t\t\tstore.add(Event.filter(this.onCheckedEvent, e => e.item === quickTreeItem)(e => checkbox.checked = e.checked));\n\t\t\tif (quickTreeItem.disabled) {\n\t\t\t\tcheckbox.disable();\n\t\t\t}\n\t\t\tstore.add(checkbox.onChange((e) => this._checkboxStateHandler.setCheckboxState(quickTreeItem, checkbox.checked)));\n\t\t}\n\n\t\t// Icon\n\t\tif (quickTreeItem.iconPath) {\n\t\t\tconst icon = isDark(this._themeService.getColorTheme().type) ? quickTreeItem.iconPath.dark : (quickTreeItem.iconPath.light ?? quickTreeItem.iconPath.dark);\n\t\t\tconst iconUrl = URI.revive(icon);\n\t\t\ttemplateData.icon.className = 'quick-input-tree-icon';\n\t\t\ttemplateData.icon.style.backgroundImage = cssJs.asCSSUrl(iconUrl);\n\t\t} else {\n\t\t\ttemplateData.icon.style.backgroundImage = '';\n\t\t\ttemplateData.icon.className = quickTreeItem.iconClass ? `quick-input-tree-icon ${quickTreeItem.iconClass}` : '';\n\t\t}\n\n\t\tconst { labelHighlights: matches, descriptionHighlights: descriptionMatches } = node.filterData || {};\n\n\t\t// Label and Description\n\t\tlet descriptionTitle: IManagedHoverTooltipMarkdownString | undefined;\n\t\t// NOTE: If we bring back quick tool tips, we need to check that here like we do in the QuickInputListRenderer\n\t\tif (quickTreeItem.description) {\n\t\t\tdescriptionTitle = {\n\t\t\t\tmarkdown: {\n\t\t\t\t\tvalue: escape(quickTreeItem.description),\n\t\t\t\t\tsupportThemeIcons: true\n\t\t\t\t},\n\t\t\t\tmarkdownNotSupportedFallback: quickTreeItem.description\n\t\t\t};\n\t\t}\n\t\ttemplateData.label.setLabel(\n\t\t\tquickTreeItem.label,\n\t\t\tquickTreeItem.description,\n\t\t\t{\n\t\t\t\tmatches,\n\t\t\t\tdescriptionMatches,\n\t\t\t\textraClasses: quickTreeItem.iconClasses,\n\t\t\t\titalic: quickTreeItem.italic,\n\t\t\t\tstrikethrough: quickTreeItem.strikethrough,\n\t\t\t\tlabelEscapeNewLines: true,\n\t\t\t\tdescriptionTitle\n\t\t\t}\n\t\t);\n\n\t\t// Action Bar\n\t\tconst buttons = quickTreeItem.buttons;\n\t\tif (buttons && buttons.length) {\n\t\t\ttemplateData.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(\n\t\t\t\tbutton,\n\t\t\t\t`tree-${index}`,\n\t\t\t\t() => this._buttonTriggeredEmitter.fire({ item: quickTreeItem, button })\n\t\t\t)), { icon: true, label: false });\n\t\t\ttemplateData.entry.classList.add('has-actions');\n\t\t} else {\n\t\t\ttemplateData.entry.classList.remove('has-actions');\n\t\t}\n\t}\n\n\tdisposeElement(_element: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\ttemplateData.toDisposeElement.clear();\n\t\ttemplateData.actionBar.clear();\n\t}\n\n\tdisposeTemplate(templateData: IQuickTreeTemplateData): void {\n\t\ttemplateData.toDisposeElement.dispose();\n\t\ttemplateData.toDisposeTemplate.dispose();\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 * as cssJs from '../../../../base/browser/cssValue.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { IManagedHoverTooltipMarkdownString } from '../../../../base/browser/ui/hover/hover.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { ITreeElementRenderDetails, ITreeNode, ITreeRenderer } from '../../../../base/browser/ui/tree/tree.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { defaultCheckboxStyles } from '../../../theme/browser/defaultStyles.js';\nimport { isDark } from '../../../theme/common/theme.js';\nimport { escape } from '../../../../base/common/strings.js';\nimport { IThemeService } from '../../../theme/common/themeService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { quickInputButtonToAction } from '../quickInputUtils.js';\nimport { IQuickTreeFilterData } from './quickInputTree.js';\n\nconst $ = dom.$;\n\nexport interface IQuickTreeTemplateData {\n\tentry: HTMLElement;\n\tcheckbox: TriStateCheckbox;\n\ticon: HTMLElement;\n\tlabel: IconLabel;\n\tactionBar: ActionBar;\n\ttoDisposeElement: DisposableStore;\n\ttoDisposeTemplate: DisposableStore;\n}\n\nexport class QuickInputCheckboxStateHandler<T> extends Disposable {\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<{ item: T; checked: boolean | 'mixed' }>());\n\tpublic readonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tpublic setCheckboxState(node: T, checked: boolean | 'mixed') {\n\t\tthis._onDidChangeCheckboxState.fire({ item: node, checked });\n\t}\n}\n\nexport class QuickInputTreeRenderer<T extends IQuickTreeItem> extends Disposable implements ITreeRenderer<T, IQuickTreeFilterData, IQuickTreeTemplateData> {\n\tstatic readonly ID = 'quickInputTreeElement';\n\ttemplateId = QuickInputTreeRenderer.ID;\n\n\tconstructor(\n\t\tprivate readonly _hoverDelegate: IHoverDelegate | undefined,\n\t\tprivate readonly _buttonTriggeredEmitter: Emitter<IQuickTreeItemButtonEvent<T>>,\n\t\tprivate readonly onCheckedEvent: Event<IQuickTreeCheckboxEvent<T>>,\n\t\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<T>,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t}\n\n\trenderTemplate(container: HTMLElement): IQuickTreeTemplateData {\n\t\tconst store = new DisposableStore();\n\n\t\t// Main entry container\n\t\tconst entry = dom.append(container, $('.quick-input-tree-entry'));\n\n\t\tconst checkbox = store.add(new TriStateCheckbox('', false, { ...defaultCheckboxStyles, size: 15 }));\n\t\tentry.appendChild(checkbox.domNode);\n\n\t\tconst checkboxLabel = dom.append(entry, $('label.quick-input-tree-label'));\n\t\tconst rows = dom.append(checkboxLabel, $('.quick-input-tree-rows'));\n\t\tconst row1 = dom.append(rows, $('.quick-input-tree-row'));\n\t\tconst icon = dom.prepend(row1, $('.quick-input-tree-icon'));\n\t\tconst label = store.add(new IconLabel(row1, {\n\t\t\tsupportHighlights: true,\n\t\t\tsupportDescriptionHighlights: true,\n\t\t\tsupportIcons: true,\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tconst actionBar = store.add(new ActionBar(entry, this._hoverDelegate ? { hoverDelegate: this._hoverDelegate } : undefined));\n\t\tactionBar.domNode.classList.add('quick-input-tree-entry-action-bar');\n\t\treturn {\n\t\t\ttoDisposeTemplate: store,\n\t\t\tentry,\n\t\t\tcheckbox,\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tactionBar,\n\t\t\ttoDisposeElement: new DisposableStore(),\n\t\t};\n\t}\n\n\trenderElement(node: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\tconst store = templateData.toDisposeElement;\n\t\tconst quickTreeItem = node.element;\n\n\t\t// Checkbox\n\t\tif (quickTreeItem.pickable === false) {\n\t\t\t// Hide checkbox for non-pickable items\n\t\t\ttemplateData.checkbox.domNode.style.display = 'none';\n\t\t} else {\n\t\t\tconst checkbox = templateData.checkbox;\n\t\t\tcheckbox.domNode.style.display = '';\n\t\t\tcheckbox.checked = quickTreeItem.checked ?? false;\n\t\t\tstore.add(Event.filter(this.onCheckedEvent, e => e.item === quickTreeItem)(e => checkbox.checked = e.checked));\n\t\t\tif (quickTreeItem.disabled) {\n\t\t\t\tcheckbox.disable();\n\t\t\t}\n\t\t\tstore.add(checkbox.onChange((e) => this._checkboxStateHandler.setCheckboxState(quickTreeItem, checkbox.checked)));\n\t\t}\n\n\t\t// Icon\n\t\tif (quickTreeItem.iconPath) {\n\t\t\tconst icon = isDark(this._themeService.getColorTheme().type) ? quickTreeItem.iconPath.dark : (quickTreeItem.iconPath.light ?? quickTreeItem.iconPath.dark);\n\t\t\tconst iconUrl = URI.revive(icon);\n\t\t\ttemplateData.icon.className = 'quick-input-tree-icon';\n\t\t\ttemplateData.icon.style.backgroundImage = cssJs.asCSSUrl(iconUrl);\n\t\t} else {\n\t\t\ttemplateData.icon.style.backgroundImage = '';\n\t\t\ttemplateData.icon.className = quickTreeItem.iconClass ? `quick-input-tree-icon ${quickTreeItem.iconClass}` : '';\n\t\t}\n\n\t\tconst { labelHighlights: matches, descriptionHighlights: descriptionMatches } = node.filterData || {};\n\n\t\t// Label and Description\n\t\tlet descriptionTitle: IManagedHoverTooltipMarkdownString | undefined;\n\t\t// NOTE: If we bring back quick tool tips, we need to check that here like we do in the QuickInputListRenderer\n\t\tif (quickTreeItem.description) {\n\t\t\tdescriptionTitle = {\n\t\t\t\tmarkdown: {\n\t\t\t\t\tvalue: escape(quickTreeItem.description),\n\t\t\t\t\tsupportThemeIcons: true\n\t\t\t\t},\n\t\t\t\tmarkdownNotSupportedFallback: quickTreeItem.description\n\t\t\t};\n\t\t}\n\t\ttemplateData.label.setLabel(\n\t\t\tquickTreeItem.label,\n\t\t\tquickTreeItem.description,\n\t\t\t{\n\t\t\t\tmatches,\n\t\t\t\tdescriptionMatches,\n\t\t\t\textraClasses: quickTreeItem.iconClasses,\n\t\t\t\titalic: quickTreeItem.italic,\n\t\t\t\tstrikethrough: quickTreeItem.strikethrough,\n\t\t\t\tlabelEscapeNewLines: true,\n\t\t\t\tdescriptionTitle\n\t\t\t}\n\t\t);\n\n\t\t// Action Bar\n\t\tconst buttons = quickTreeItem.buttons;\n\t\tif (buttons && buttons.length) {\n\t\t\ttemplateData.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(\n\t\t\t\tbutton,\n\t\t\t\t`tree-${index}`,\n\t\t\t\t() => this._buttonTriggeredEmitter.fire({ item: quickTreeItem, button })\n\t\t\t)), { icon: true, label: false });\n\t\t\ttemplateData.entry.classList.add('has-actions');\n\t\t} else {\n\t\t\ttemplateData.entry.classList.remove('has-actions');\n\t\t}\n\t}\n\n\tdisposeElement(_element: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\ttemplateData.toDisposeElement.clear();\n\t\ttemplateData.actionBar.clear();\n\t}\n\n\tdisposeTemplate(templateData: IQuickTreeTemplateData): void {\n\t\ttemplateData.toDisposeElement.dispose();\n\t\ttemplateData.toDisposeTemplate.dispose();\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.ts","vs/platform/quickinput/browser/tree/quickInputTreeRenderer.ts"],"names":[],"mappings":"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","file":"quickInputTreeRenderer.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 * as cssJs from '../../../../base/browser/cssValue.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { IManagedHoverTooltipMarkdownString } from '../../../../base/browser/ui/hover/hover.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { createToggleActionViewItemProvider, IToggleStyles, TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { ITreeElementRenderDetails, ITreeNode, ITreeRenderer } from '../../../../base/browser/ui/tree/tree.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { defaultCheckboxStyles } from '../../../theme/browser/defaultStyles.js';\nimport { isDark } from '../../../theme/common/theme.js';\nimport { escape } from '../../../../base/common/strings.js';\nimport { IThemeService } from '../../../theme/common/themeService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { quickInputButtonToAction } from '../quickInputUtils.js';\nimport { IQuickTreeFilterData } from './quickInputTree.js';\n\nconst $ = dom.$;\n\nexport interface IQuickTreeTemplateData {\n\tentry: HTMLElement;\n\tcheckbox: TriStateCheckbox;\n\ticon: HTMLElement;\n\tlabel: IconLabel;\n\tactionBar: ActionBar;\n\ttoDisposeElement: DisposableStore;\n\ttoDisposeTemplate: DisposableStore;\n}\n\nexport class QuickInputCheckboxStateHandler<T> extends Disposable {\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<{ item: T; checked: boolean | 'mixed' }>());\n\tpublic readonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tpublic setCheckboxState(node: T, checked: boolean | 'mixed') {\n\t\tthis._onDidChangeCheckboxState.fire({ item: node, checked });\n\t}\n}\n\nexport class QuickInputTreeRenderer<T extends IQuickTreeItem> extends Disposable implements ITreeRenderer<T, IQuickTreeFilterData, IQuickTreeTemplateData> {\n\tstatic readonly ID = 'quickInputTreeElement';\n\ttemplateId = QuickInputTreeRenderer.ID;\n\n\tconstructor(\n\t\tprivate readonly _hoverDelegate: IHoverDelegate | undefined,\n\t\tprivate readonly _buttonTriggeredEmitter: Emitter<IQuickTreeItemButtonEvent<T>>,\n\t\tprivate readonly onCheckedEvent: Event<IQuickTreeCheckboxEvent<T>>,\n\t\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<T>,\n\t\tprivate readonly _toggleStyles: IToggleStyles,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t}\n\n\trenderTemplate(container: HTMLElement): IQuickTreeTemplateData {\n\t\tconst store = new DisposableStore();\n\n\t\t// Main entry container\n\t\tconst entry = dom.append(container, $('.quick-input-tree-entry'));\n\n\t\tconst checkbox = store.add(new TriStateCheckbox('', false, { ...defaultCheckboxStyles, size: 15 }));\n\t\tentry.appendChild(checkbox.domNode);\n\n\t\tconst checkboxLabel = dom.append(entry, $('label.quick-input-tree-label'));\n\t\tconst rows = dom.append(checkboxLabel, $('.quick-input-tree-rows'));\n\t\tconst row1 = dom.append(rows, $('.quick-input-tree-row'));\n\t\tconst icon = dom.prepend(row1, $('.quick-input-tree-icon'));\n\t\tconst label = store.add(new IconLabel(row1, {\n\t\t\tsupportHighlights: true,\n\t\t\tsupportDescriptionHighlights: true,\n\t\t\tsupportIcons: true,\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tconst actionBar = store.add(new ActionBar(entry, {\n\t\t\tactionViewItemProvider: createToggleActionViewItemProvider(this._toggleStyles),\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tactionBar.domNode.classList.add('quick-input-tree-entry-action-bar');\n\t\treturn {\n\t\t\ttoDisposeTemplate: store,\n\t\t\tentry,\n\t\t\tcheckbox,\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tactionBar,\n\t\t\ttoDisposeElement: new DisposableStore(),\n\t\t};\n\t}\n\n\trenderElement(node: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\tconst store = templateData.toDisposeElement;\n\t\tconst quickTreeItem = node.element;\n\n\t\t// Checkbox\n\t\tif (quickTreeItem.pickable === false) {\n\t\t\t// Hide checkbox for non-pickable items\n\t\t\ttemplateData.checkbox.domNode.style.display = 'none';\n\t\t} else {\n\t\t\tconst checkbox = templateData.checkbox;\n\t\t\tcheckbox.domNode.style.display = '';\n\t\t\tcheckbox.checked = quickTreeItem.checked ?? false;\n\t\t\tstore.add(Event.filter(this.onCheckedEvent, e => e.item === quickTreeItem)(e => checkbox.checked = e.checked));\n\t\t\tif (quickTreeItem.disabled) {\n\t\t\t\tcheckbox.disable();\n\t\t\t}\n\t\t\tstore.add(checkbox.onChange((e) => this._checkboxStateHandler.setCheckboxState(quickTreeItem, checkbox.checked)));\n\t\t}\n\n\t\t// Icon\n\t\tif (quickTreeItem.iconPath) {\n\t\t\tconst icon = isDark(this._themeService.getColorTheme().type) ? quickTreeItem.iconPath.dark : (quickTreeItem.iconPath.light ?? quickTreeItem.iconPath.dark);\n\t\t\tconst iconUrl = URI.revive(icon);\n\t\t\ttemplateData.icon.className = 'quick-input-tree-icon';\n\t\t\ttemplateData.icon.style.backgroundImage = cssJs.asCSSUrl(iconUrl);\n\t\t} else {\n\t\t\ttemplateData.icon.style.backgroundImage = '';\n\t\t\ttemplateData.icon.className = quickTreeItem.iconClass ? `quick-input-tree-icon ${quickTreeItem.iconClass}` : '';\n\t\t}\n\n\t\tconst { labelHighlights: matches, descriptionHighlights: descriptionMatches } = node.filterData || {};\n\n\t\t// Label and Description\n\t\tlet descriptionTitle: IManagedHoverTooltipMarkdownString | undefined;\n\t\t// NOTE: If we bring back quick tool tips, we need to check that here like we do in the QuickInputListRenderer\n\t\tif (quickTreeItem.description) {\n\t\t\tdescriptionTitle = {\n\t\t\t\tmarkdown: {\n\t\t\t\t\tvalue: escape(quickTreeItem.description),\n\t\t\t\t\tsupportThemeIcons: true\n\t\t\t\t},\n\t\t\t\tmarkdownNotSupportedFallback: quickTreeItem.description\n\t\t\t};\n\t\t}\n\t\ttemplateData.label.setLabel(\n\t\t\tquickTreeItem.label,\n\t\t\tquickTreeItem.description,\n\t\t\t{\n\t\t\t\tmatches,\n\t\t\t\tdescriptionMatches,\n\t\t\t\textraClasses: quickTreeItem.iconClasses,\n\t\t\t\titalic: quickTreeItem.italic,\n\t\t\t\tstrikethrough: quickTreeItem.strikethrough,\n\t\t\t\tlabelEscapeNewLines: true,\n\t\t\t\tdescriptionTitle\n\t\t\t}\n\t\t);\n\n\t\t// Action Bar\n\t\tconst buttons = quickTreeItem.buttons;\n\t\tif (buttons && buttons.length) {\n\t\t\ttemplateData.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(\n\t\t\t\tbutton,\n\t\t\t\t`tree-${index}`,\n\t\t\t\t() => this._buttonTriggeredEmitter.fire({ item: quickTreeItem, button })\n\t\t\t)), { icon: true, label: false });\n\t\t\ttemplateData.entry.classList.add('has-actions');\n\t\t} else {\n\t\t\ttemplateData.entry.classList.remove('has-actions');\n\t\t}\n\t}\n\n\tdisposeElement(_element: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\ttemplateData.toDisposeElement.clear();\n\t\ttemplateData.actionBar.clear();\n\t}\n\n\tdisposeTemplate(templateData: IQuickTreeTemplateData): void {\n\t\ttemplateData.toDisposeElement.dispose();\n\t\ttemplateData.toDisposeTemplate.dispose();\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 * as cssJs from '../../../../base/browser/cssValue.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { IManagedHoverTooltipMarkdownString } from '../../../../base/browser/ui/hover/hover.js';\nimport { IHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { createToggleActionViewItemProvider, IToggleStyles, TriStateCheckbox } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { ITreeElementRenderDetails, ITreeNode, ITreeRenderer } from '../../../../base/browser/ui/tree/tree.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { defaultCheckboxStyles } from '../../../theme/browser/defaultStyles.js';\nimport { isDark } from '../../../theme/common/theme.js';\nimport { escape } from '../../../../base/common/strings.js';\nimport { IThemeService } from '../../../theme/common/themeService.js';\nimport { IQuickTreeCheckboxEvent, IQuickTreeItem, IQuickTreeItemButtonEvent } from '../../common/quickInput.js';\nimport { quickInputButtonToAction } from '../quickInputUtils.js';\nimport { IQuickTreeFilterData } from './quickInputTree.js';\n\nconst $ = dom.$;\n\nexport interface IQuickTreeTemplateData {\n\tentry: HTMLElement;\n\tcheckbox: TriStateCheckbox;\n\ticon: HTMLElement;\n\tlabel: IconLabel;\n\tactionBar: ActionBar;\n\ttoDisposeElement: DisposableStore;\n\ttoDisposeTemplate: DisposableStore;\n}\n\nexport class QuickInputCheckboxStateHandler<T> extends Disposable {\n\tprivate readonly _onDidChangeCheckboxState = this._register(new Emitter<{ item: T; checked: boolean | 'mixed' }>());\n\tpublic readonly onDidChangeCheckboxState = this._onDidChangeCheckboxState.event;\n\n\tpublic setCheckboxState(node: T, checked: boolean | 'mixed') {\n\t\tthis._onDidChangeCheckboxState.fire({ item: node, checked });\n\t}\n}\n\nexport class QuickInputTreeRenderer<T extends IQuickTreeItem> extends Disposable implements ITreeRenderer<T, IQuickTreeFilterData, IQuickTreeTemplateData> {\n\tstatic readonly ID = 'quickInputTreeElement';\n\ttemplateId = QuickInputTreeRenderer.ID;\n\n\tconstructor(\n\t\tprivate readonly _hoverDelegate: IHoverDelegate | undefined,\n\t\tprivate readonly _buttonTriggeredEmitter: Emitter<IQuickTreeItemButtonEvent<T>>,\n\t\tprivate readonly onCheckedEvent: Event<IQuickTreeCheckboxEvent<T>>,\n\t\tprivate readonly _checkboxStateHandler: QuickInputCheckboxStateHandler<T>,\n\t\tprivate readonly _toggleStyles: IToggleStyles,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t) {\n\t\tsuper();\n\t}\n\n\trenderTemplate(container: HTMLElement): IQuickTreeTemplateData {\n\t\tconst store = new DisposableStore();\n\n\t\t// Main entry container\n\t\tconst entry = dom.append(container, $('.quick-input-tree-entry'));\n\n\t\tconst checkbox = store.add(new TriStateCheckbox('', false, { ...defaultCheckboxStyles, size: 15 }));\n\t\tentry.appendChild(checkbox.domNode);\n\n\t\tconst checkboxLabel = dom.append(entry, $('label.quick-input-tree-label'));\n\t\tconst rows = dom.append(checkboxLabel, $('.quick-input-tree-rows'));\n\t\tconst row1 = dom.append(rows, $('.quick-input-tree-row'));\n\t\tconst icon = dom.prepend(row1, $('.quick-input-tree-icon'));\n\t\tconst label = store.add(new IconLabel(row1, {\n\t\t\tsupportHighlights: true,\n\t\t\tsupportDescriptionHighlights: true,\n\t\t\tsupportIcons: true,\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tconst actionBar = store.add(new ActionBar(entry, {\n\t\t\tactionViewItemProvider: createToggleActionViewItemProvider(this._toggleStyles),\n\t\t\thoverDelegate: this._hoverDelegate\n\t\t}));\n\t\tactionBar.domNode.classList.add('quick-input-tree-entry-action-bar');\n\t\treturn {\n\t\t\ttoDisposeTemplate: store,\n\t\t\tentry,\n\t\t\tcheckbox,\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tactionBar,\n\t\t\ttoDisposeElement: new DisposableStore(),\n\t\t};\n\t}\n\n\trenderElement(node: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\tconst store = templateData.toDisposeElement;\n\t\tconst quickTreeItem = node.element;\n\n\t\t// Checkbox\n\t\tif (quickTreeItem.pickable === false) {\n\t\t\t// Hide checkbox for non-pickable items\n\t\t\ttemplateData.checkbox.domNode.style.display = 'none';\n\t\t} else {\n\t\t\tconst checkbox = templateData.checkbox;\n\t\t\tcheckbox.domNode.style.display = '';\n\t\t\tcheckbox.checked = quickTreeItem.checked ?? false;\n\t\t\tstore.add(Event.filter(this.onCheckedEvent, e => e.item === quickTreeItem)(e => checkbox.checked = e.checked));\n\t\t\tif (quickTreeItem.disabled) {\n\t\t\t\tcheckbox.disable();\n\t\t\t}\n\t\t\tstore.add(checkbox.onChange((e) => this._checkboxStateHandler.setCheckboxState(quickTreeItem, checkbox.checked)));\n\t\t}\n\n\t\t// Icon\n\t\tif (quickTreeItem.iconPath) {\n\t\t\tconst icon = isDark(this._themeService.getColorTheme().type) ? quickTreeItem.iconPath.dark : (quickTreeItem.iconPath.light ?? quickTreeItem.iconPath.dark);\n\t\t\tconst iconUrl = URI.revive(icon);\n\t\t\ttemplateData.icon.className = 'quick-input-tree-icon';\n\t\t\ttemplateData.icon.style.backgroundImage = cssJs.asCSSUrl(iconUrl);\n\t\t} else {\n\t\t\ttemplateData.icon.style.backgroundImage = '';\n\t\t\ttemplateData.icon.className = quickTreeItem.iconClass ? `quick-input-tree-icon ${quickTreeItem.iconClass}` : '';\n\t\t}\n\n\t\tconst { labelHighlights: matches, descriptionHighlights: descriptionMatches } = node.filterData || {};\n\n\t\t// Label and Description\n\t\tlet descriptionTitle: IManagedHoverTooltipMarkdownString | undefined;\n\t\t// NOTE: If we bring back quick tool tips, we need to check that here like we do in the QuickInputListRenderer\n\t\tif (quickTreeItem.description) {\n\t\t\tdescriptionTitle = {\n\t\t\t\tmarkdown: {\n\t\t\t\t\tvalue: escape(quickTreeItem.description),\n\t\t\t\t\tsupportThemeIcons: true\n\t\t\t\t},\n\t\t\t\tmarkdownNotSupportedFallback: quickTreeItem.description\n\t\t\t};\n\t\t}\n\t\ttemplateData.label.setLabel(\n\t\t\tquickTreeItem.label,\n\t\t\tquickTreeItem.description,\n\t\t\t{\n\t\t\t\tmatches,\n\t\t\t\tdescriptionMatches,\n\t\t\t\textraClasses: quickTreeItem.iconClasses,\n\t\t\t\titalic: quickTreeItem.italic,\n\t\t\t\tstrikethrough: quickTreeItem.strikethrough,\n\t\t\t\tlabelEscapeNewLines: true,\n\t\t\t\tdescriptionTitle\n\t\t\t}\n\t\t);\n\n\t\t// Action Bar\n\t\tconst buttons = quickTreeItem.buttons;\n\t\tif (buttons && buttons.length) {\n\t\t\ttemplateData.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(\n\t\t\t\tbutton,\n\t\t\t\t`tree-${index}`,\n\t\t\t\t() => this._buttonTriggeredEmitter.fire({ item: quickTreeItem, button })\n\t\t\t)), { icon: true, label: false });\n\t\t\ttemplateData.entry.classList.add('has-actions');\n\t\t} else {\n\t\t\ttemplateData.entry.classList.remove('has-actions');\n\t\t}\n\t}\n\n\tdisposeElement(_element: ITreeNode<T, IQuickTreeFilterData>, _index: number, templateData: IQuickTreeTemplateData, _details?: ITreeElementRenderDetails): void {\n\t\ttemplateData.toDisposeElement.clear();\n\t\ttemplateData.actionBar.clear();\n\t}\n\n\tdisposeTemplate(templateData: IQuickTreeTemplateData): void {\n\t\ttemplateData.toDisposeElement.dispose();\n\t\ttemplateData.toDisposeTemplate.dispose();\n\t}\n}\n"]}