@codingame/monaco-vscode-api 32.0.0 → 32.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/package.json +8 -8
  2. package/services.js +3 -3
  3. package/vscode/src/vs/base/common/paging.js +66 -2
  4. package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.d.ts +14 -0
  5. package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.js +145 -0
  6. package/vscode/src/vs/platform/extensionRecommendations/common/extensionRecommendations.d.ts +19 -0
  7. package/vscode/src/vs/platform/extensionRecommendations/common/extensionRecommendations.js +25 -0
  8. package/vscode/src/vs/platform/extensionRecommendations/common/extensionRecommendations.service.d.ts +1 -1
  9. package/vscode/src/vs/platform/product/common/product.js +1 -1
  10. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +12 -12
  11. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.js +1 -1
  12. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +3 -3
  13. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatScreenshotContext.js +1 -1
  14. package/vscode/src/vs/workbench/contrib/chat/browser/chat.js +3 -2
  15. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorContextKeys.js +7 -7
  16. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionDescription.js +2 -2
  17. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +43 -43
  18. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  19. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditorInput.js +9 -9
  20. package/vscode/src/vs/workbench/contrib/chat/common/actions/chatContextKeys.js +86 -86
  21. package/vscode/src/vs/workbench/contrib/chat/common/attachments/chatVariableEntries.js +2 -2
  22. package/vscode/src/vs/workbench/contrib/chat/common/chatModes.js +3 -3
  23. package/vscode/src/vs/workbench/contrib/chat/common/customizationHarnessService.js +1 -1
  24. package/vscode/src/vs/workbench/contrib/chat/common/editing/chatEditingService.js +2 -2
  25. package/vscode/src/vs/workbench/contrib/chat/common/languageModelStats.js +3 -3
  26. package/vscode/src/vs/workbench/contrib/chat/common/languageModels.js +23 -23
  27. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModel.js +7 -7
  28. package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +1 -1
  29. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.js +13 -13
  30. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookSchema.js +18 -18
  31. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookTypes.js +20 -20
  32. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptFileAttributes.js +79 -79
  33. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptTypes.js +10 -10
  34. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +3 -3
  35. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +1 -1
  36. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/askQuestionsTool.js +8 -8
  37. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/manageTodoListTool.js +10 -10
  38. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/reviewPlanTool.js +7 -7
  39. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.js +2 -2
  40. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactRulesTool.js +3 -3
  41. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactsTool.js +4 -4
  42. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +22 -22
  43. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsService.js +3 -3
  44. package/vscode/src/vs/workbench/contrib/chat/common/widget/input/modelPickerWidget.js +1 -1
  45. package/vscode/src/vs/workbench/contrib/codeActions/browser/codeActionsContribution.js +11 -11
  46. package/vscode/src/vs/workbench/contrib/codeEditor/browser/dictation/editorDictation.js +4 -4
  47. package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorAccessibilityHelp.js +5 -5
  48. package/vscode/src/vs/workbench/contrib/codeEditor/browser/diffEditorHelper.js +3 -3
  49. package/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.js +10 -10
  50. package/vscode/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.js +2 -2
  51. package/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations.js +3 -3
  52. package/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js +6 -6
  53. package/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants.js +4 -4
  54. package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.js +2 -2
  55. package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.js +3 -3
  56. package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.js +2 -2
  57. package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.js +12 -12
  58. package/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap.js +5 -5
  59. package/vscode/src/vs/workbench/contrib/codeEditor/common/languageConfigurationExtensionPoint.js +65 -65
  60. package/vscode/src/vs/workbench/contrib/comments/browser/commentColors.js +7 -7
  61. package/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.js +7 -7
  62. package/vscode/src/vs/workbench/contrib/comments/browser/commentNode.js +2 -2
  63. package/vscode/src/vs/workbench/contrib/comments/browser/commentReply.js +3 -3
  64. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadBody.js +3 -3
  65. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadHeader.js +3 -3
  66. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.js +3 -3
  67. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadZoneWidget.js +3 -3
  68. package/vscode/src/vs/workbench/contrib/comments/browser/commentsAccessibility.js +12 -12
  69. package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +7 -7
  70. package/vscode/src/vs/workbench/contrib/comments/browser/commentsModel.js +1 -1
  71. package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +9 -9
  72. package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +14 -14
  73. package/vscode/src/vs/workbench/contrib/comments/browser/commentsViewActions.js +16 -16
  74. package/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.js +7 -7
  75. package/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys.js +12 -12
  76. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorDiffInput.js +2 -2
  77. package/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInput.js +3 -3
  78. package/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView.js +1 -1
  79. package/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.js +29 -29
  80. package/vscode/src/vs/workbench/contrib/debug/browser/breakpointWidget.js +14 -14
  81. package/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView.js +75 -75
  82. package/vscode/src/vs/workbench/contrib/debug/browser/callStackEditorContribution.js +2 -2
  83. package/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.js +6 -6
  84. package/vscode/src/vs/workbench/contrib/debug/browser/debugColors.js +12 -12
  85. package/vscode/src/vs/workbench/contrib/debug/browser/debugCommands.js +38 -38
  86. package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.js +2 -2
  87. package/vscode/src/vs/workbench/contrib/debug/browser/debugHover.js +3 -3
  88. package/vscode/src/vs/workbench/contrib/debug/browser/debugIcons.js +57 -57
  89. package/vscode/src/vs/workbench/contrib/debug/browser/debugSessionPicker.js +3 -3
  90. package/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.js +4 -4
  91. package/vscode/src/vs/workbench/contrib/debug/browser/linkDetector.js +2 -2
  92. package/vscode/src/vs/workbench/contrib/debug/browser/repl.js +18 -18
  93. package/vscode/src/vs/workbench/contrib/debug/browser/replViewer.js +5 -5
  94. package/vscode/src/vs/workbench/contrib/debug/browser/variablesView.js +9 -9
  95. package/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter.js +1 -1
  96. package/vscode/src/vs/workbench/contrib/debug/common/debug.js +65 -65
  97. package/vscode/src/vs/workbench/contrib/debug/common/debugModel.js +6 -6
  98. package/vscode/src/vs/workbench/contrib/debug/common/debugSource.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/debug/common/disassemblyViewInput.js +2 -2
  100. package/vscode/src/vs/workbench/contrib/debug/common/loadedScriptsPicker.js +1 -1
  101. package/vscode/src/vs/workbench/contrib/debug/common/replModel.js +1 -1
  102. package/vscode/src/vs/workbench/contrib/dropOrPasteInto/browser/commands.js +2 -2
  103. package/vscode/src/vs/workbench/contrib/dropOrPasteInto/browser/configurationSchema.js +4 -4
  104. package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.d.ts +76 -0
  105. package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +470 -0
  106. package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.d.ts +25 -0
  107. package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js +83 -0
  108. package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.d.ts +20 -0
  109. package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js +66 -0
  110. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.d.ts +83 -0
  111. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +1353 -0
  112. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.d.ts +11 -0
  113. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.js +49 -0
  114. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.d.ts +22 -0
  115. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.js +728 -0
  116. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.d.ts +63 -0
  117. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js +522 -0
  118. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.d.ts +19 -0
  119. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.js +18 -0
  120. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.d.ts +71 -0
  121. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js +263 -0
  122. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.d.ts +5 -0
  123. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +2227 -0
  124. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.js +179 -179
  125. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.d.ts +9 -0
  126. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js +40 -0
  127. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.d.ts +9 -0
  128. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.js +77 -0
  129. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.d.ts +16 -0
  130. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js +93 -0
  131. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsIcons.js +25 -25
  132. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.d.ts +27 -0
  133. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js +100 -0
  134. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.js +7 -7
  135. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.d.ts +151 -0
  136. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +1031 -0
  137. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.d.ts +235 -0
  138. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +1600 -0
  139. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.js +30 -30
  140. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.d.ts +314 -0
  141. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +3449 -0
  142. package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.d.ts +44 -0
  143. package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js +368 -0
  144. package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.d.ts +9 -0
  145. package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.js +30 -0
  146. package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.d.ts +9 -0
  147. package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.js +30 -0
  148. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css +910 -0
  149. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionManagement.css +12 -0
  150. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css +229 -0
  151. package/vscode/src/vs/workbench/contrib/extensions/browser/media/loading-dark.svg +31 -0
  152. package/vscode/src/vs/workbench/contrib/extensions/browser/media/loading-hc.svg +31 -0
  153. package/vscode/src/vs/workbench/contrib/extensions/browser/media/loading.svg +31 -0
  154. package/vscode/src/vs/workbench/contrib/extensions/browser/media/runtimeExtensionsEditor.css +86 -0
  155. package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.d.ts +9 -0
  156. package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.js +38 -0
  157. package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.d.ts +9 -0
  158. package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.js +41 -0
  159. package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.d.ts +11 -0
  160. package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.js +38 -0
  161. package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.d.ts +33 -0
  162. package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js +179 -0
  163. package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.d.ts +11 -0
  164. package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.js +90 -0
  165. package/vscode/src/vs/workbench/contrib/extensions/common/extensions.js +1 -1
  166. package/vscode/src/vs/workbench/contrib/extensions/common/extensions.service.d.ts +1 -1
  167. package/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js +5 -5
  168. package/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.d.ts +24 -0
  169. package/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.js +50 -0
  170. package/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils.js +3 -3
  171. package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.d.ts +15 -0
  172. package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.js +47 -0
  173. package/vscode/src/vs/workbench/contrib/extensions/common/searchExtensionsTool.js +3 -3
  174. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/configuration.js +4 -4
  175. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/externalUriOpenerService.js +3 -3
  176. package/vscode/src/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js +1 -1
  177. package/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditor.js +8 -8
  178. package/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js +18 -18
  179. package/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet.js +14 -14
  180. package/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution.js +39 -39
  181. package/vscode/src/vs/workbench/contrib/files/browser/fileActions.js +84 -84
  182. package/vscode/src/vs/workbench/contrib/files/browser/fileCommands._save.js +4 -4
  183. package/vscode/src/vs/workbench/contrib/files/browser/fileCommands.js +2 -2
  184. package/vscode/src/vs/workbench/contrib/files/browser/fileConstants.js +6 -6
  185. package/vscode/src/vs/workbench/contrib/files/browser/fileImportExport.js +28 -28
  186. package/vscode/src/vs/workbench/contrib/files/browser/files.contribution._configuration.js +50 -50
  187. package/vscode/src/vs/workbench/contrib/files/browser/files.contribution._editorPane.js +2 -2
  188. package/vscode/src/vs/workbench/contrib/files/browser/views/emptyView.js +1 -1
  189. package/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider.js +4 -4
  190. package/vscode/src/vs/workbench/contrib/files/browser/views/explorerView.js +7 -7
  191. package/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer.js +17 -17
  192. package/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView.js +7 -7
  193. package/vscode/src/vs/workbench/contrib/files/browser/workspaceWatcher.js +4 -4
  194. package/vscode/src/vs/workbench/contrib/files/common/dirtyFilesIndicator.js +1 -1
  195. package/vscode/src/vs/workbench/contrib/files/common/files.js +16 -16
  196. package/vscode/src/vs/workbench/contrib/folding/browser/folding.contribution.js +3 -3
  197. package/vscode/src/vs/workbench/contrib/format/browser/formatActionsMultiple.js +20 -20
  198. package/vscode/src/vs/workbench/contrib/format/browser/formatActionsNone.js +4 -4
  199. package/vscode/src/vs/workbench/contrib/format/browser/formatModified.js +1 -1
  200. package/vscode/src/vs/workbench/contrib/inlayHints/browser/inlayHintsAccessibilty.js +4 -4
  201. package/vscode/src/vs/workbench/contrib/list/browser/listResizeColumnAction.js +2 -2
  202. package/vscode/src/vs/workbench/contrib/list/browser/tableColumnResizeQuickPick.js +5 -5
  203. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommandsAddConfiguration.js +66 -66
  204. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerActions.js +40 -40
  205. package/vscode/src/vs/workbench/contrib/mcp/common/mcpConfiguration.js +42 -42
  206. package/vscode/src/vs/workbench/contrib/mcp/common/mcpServer.js +16 -16
  207. package/vscode/src/vs/workbench/contrib/mcp/common/mcpTypes.js +4 -4
  208. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +4 -4
  209. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +23 -23
  210. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +2 -2
  211. package/vscode/src/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +8 -8
  212. package/vscode/src/vs/workbench/contrib/meteredConnection/browser/meteredConnection.contribution.js +8 -8
  213. package/vscode/src/vs/workbench/contrib/meteredConnection/browser/meteredConnectionStatus.js +4 -4
  214. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/icons.contribution.js +1 -1
  215. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditorInput.js +3 -3
  216. package/vscode/src/vs/workbench/contrib/multiDiffEditor/browser/scmMultiDiffSourceResolver.js +1 -1
  217. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.js +17 -17
  218. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOutputActions.js +6 -6
  219. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/coreActions.js +4 -4
  220. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/foldingController.js +3 -3
  221. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookAccessibilityProvider.js +3 -3
  222. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor.js +7 -7
  223. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.js +24 -24
  224. package/vscode/src/vs/workbench/contrib/notebook/browser/notebookIcons.js +29 -29
  225. package/vscode/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellEditorOptions.js +5 -5
  226. package/vscode/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellOutput.js +7 -7
  227. package/vscode/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCell.js +2 -2
  228. package/vscode/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCellExecutionIcon.js +4 -4
  229. package/vscode/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCellRunToolbar.js +1 -1
  230. package/vscode/src/vs/workbench/contrib/notebook/browser/view/cellParts/collapsedCellOutput.js +3 -3
  231. package/vscode/src/vs/workbench/contrib/notebook/browser/view/cellParts/foldedCellHint.js +1 -1
  232. package/vscode/src/vs/workbench/contrib/notebook/browser/view/cellParts/markupCell.js +2 -2
  233. package/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.js +4 -4
  234. package/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.js +1 -1
  235. package/vscode/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelQuickPickStrategy.js +14 -14
  236. package/vscode/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelView.js +2 -2
  237. package/vscode/src/vs/workbench/contrib/notebook/browser/viewParts/notebookViewZones.js +1 -1
  238. package/vscode/src/vs/workbench/contrib/notebook/common/notebookEditorInput.js +2 -2
  239. package/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets.js +3 -3
  240. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesIcons.js +13 -13
  241. package/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets.js +10 -10
  242. package/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout.js +60 -60
  243. package/vscode/src/vs/workbench/contrib/preferences/common/preferences.js +3 -3
  244. package/vscode/src/vs/workbench/contrib/preferences/common/settingsEditorColorRegistry.js +21 -21
  245. package/vscode/src/vs/workbench/contrib/remote/browser/remoteExplorer.js +15 -15
  246. package/vscode/src/vs/workbench/contrib/remote/browser/remoteIcons.js +17 -17
  247. package/vscode/src/vs/workbench/contrib/remote/browser/tunnelView.js +59 -59
  248. package/vscode/src/vs/workbench/contrib/scm/browser/scmHistory.js +11 -11
  249. package/vscode/src/vs/workbench/contrib/scm/browser/scmHistoryChatContext.js +6 -6
  250. package/vscode/src/vs/workbench/contrib/scm/common/quickDiff.js +14 -14
  251. package/vscode/src/vs/workbench/contrib/search/browser/anythingQuickAccess.js +9 -9
  252. package/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget.js +3 -3
  253. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsBase.js +1 -1
  254. package/vscode/src/vs/workbench/contrib/search/browser/searchActionsTopBar.js +9 -9
  255. package/vscode/src/vs/workbench/contrib/search/browser/searchChatContext.js +5 -5
  256. package/vscode/src/vs/workbench/contrib/search/browser/searchFindInput.js +1 -1
  257. package/vscode/src/vs/workbench/contrib/search/browser/searchIcons.js +20 -20
  258. package/vscode/src/vs/workbench/contrib/search/browser/searchMessage.js +2 -2
  259. package/vscode/src/vs/workbench/contrib/search/browser/searchResultsView.js +14 -14
  260. package/vscode/src/vs/workbench/contrib/search/browser/searchView.js +55 -55
  261. package/vscode/src/vs/workbench/contrib/search/browser/searchWidget.js +11 -11
  262. package/vscode/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.js +2 -2
  263. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js +4 -4
  264. package/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js +5 -5
  265. package/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.js +3 -3
  266. package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile.js +3 -3
  267. package/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService.js +9 -9
  268. package/vscode/src/vs/workbench/contrib/speech/common/speechService.js +29 -29
  269. package/vscode/src/vs/workbench/contrib/tasks/common/constants.js +1 -1
  270. package/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry.js +6 -6
  271. package/vscode/src/vs/workbench/contrib/tasks/common/taskService.js +6 -6
  272. package/vscode/src/vs/workbench/contrib/tasks/common/tasks.js +4 -4
  273. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +3 -3
  274. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalIcons.js +13 -13
  275. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalMenus.js +40 -40
  276. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/decorationStyles.js +15 -15
  277. package/vscode/src/vs/workbench/contrib/terminal/common/terminal.js +10 -10
  278. package/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry.js +23 -23
  279. package/vscode/src/vs/workbench/contrib/terminal/common/terminalContextKey.js +17 -17
  280. package/vscode/src/vs/workbench/contrib/terminal/common/terminalStrings.js +26 -26
  281. package/vscode/src/vs/workbench/contrib/terminalContrib/accessibility/common/terminalAccessibilityConfiguration.js +2 -2
  282. package/vscode/src/vs/workbench/contrib/terminalContrib/autoReplies/common/terminalAutoRepliesConfiguration.js +2 -2
  283. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.js +9 -9
  284. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration.js +72 -72
  285. package/vscode/src/vs/workbench/contrib/terminalContrib/commandGuide/common/terminalCommandGuideConfiguration.js +1 -1
  286. package/vscode/src/vs/workbench/contrib/terminalContrib/history/common/terminal.history.js +1 -1
  287. package/vscode/src/vs/workbench/contrib/terminalContrib/inlineHint/common/terminalInitialHintConfiguration.js +2 -2
  288. package/vscode/src/vs/workbench/contrib/terminalContrib/notification/common/terminalNotificationConfiguration.js +1 -1
  289. package/vscode/src/vs/workbench/contrib/terminalContrib/stickyScroll/common/terminalStickyScrollConfiguration.js +3 -3
  290. package/vscode/src/vs/workbench/contrib/terminalContrib/suggest/common/terminalSuggestConfiguration.js +30 -30
  291. package/vscode/src/vs/workbench/contrib/terminalContrib/typeAhead/common/terminalTypeAheadConfiguration.js +5 -5
  292. package/vscode/src/vs/workbench/contrib/terminalContrib/zoom/common/terminal.zoom.js +2 -2
  293. package/vscode/src/vs/workbench/contrib/testing/common/constants.js +11 -11
  294. package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +2 -2
  295. package/vscode/src/vs/workbench/contrib/testing/common/testTypes.js +3 -3
  296. package/vscode/src/vs/workbench/contrib/url/browser/trustedDomains.js +6 -6
  297. package/vscode/src/vs/workbench/contrib/webview/browser/webview.contribution.js +3 -3
  298. package/vscode/src/vs/workbench/contrib/webview/browser/webviewFindAccessibilityHelp.js +30 -30
  299. package/vscode/src/vs/workbench/contrib/webviewPanel/browser/webviewEditor.js +1 -1
  300. package/vscode/src/vs/workbench/contrib/welcomeOnboarding/common/onboardingTypes.js +14 -14
  301. package/vscode/src/vs/workbench/contrib/workspace/common/workspace.js +2 -2
  302. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.d.ts +35 -0
  303. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.js +876 -0
  304. package/vscode/src/vs/workbench/services/authentication/browser/authenticationService.js +11 -11
  305. package/vscode/src/vs/workbench/services/auxiliaryWindow/browser/auxiliaryWindowService.js +5 -5
  306. package/vscode/src/vs/workbench/services/chat/common/chatEntitlementService.js +16 -16
  307. package/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverSchema.js +16 -16
  308. package/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverUtils.js +1 -1
  309. package/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver.js +16 -16
  310. package/vscode/src/vs/workbench/services/editor/common/editorResolverService.js +2 -2
  311. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionsIcons.js +3 -3
  312. package/vscode/src/vs/workbench/services/extensionRecommendations/common/workspaceExtensionsConfig.js +6 -6
  313. package/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.js +10 -10
  314. package/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry.js +88 -88
  315. package/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js +5 -5
  316. package/vscode/src/vs/workbench/services/language/common/languageService.js +24 -24
  317. package/vscode/src/vs/workbench/services/log/common/logConstants.js +1 -1
  318. package/vscode/src/vs/workbench/services/policies/common/accountPolicyService.js +1 -1
  319. package/vscode/src/vs/workbench/services/preferences/browser/keybindingsEditorInput.js +2 -2
  320. package/vscode/src/vs/workbench/services/preferences/browser/keybindingsEditorModel.js +7 -7
  321. package/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput.js +4 -4
  322. package/vscode/src/vs/workbench/services/preferences/common/preferencesModels.js +2 -2
  323. package/vscode/src/vs/workbench/services/preferences/common/preferencesValidation.js +30 -30
  324. package/vscode/src/vs/workbench/services/remote/common/remoteExplorerService.js +8 -8
  325. package/vscode/src/vs/workbench/services/remote/common/tunnelModel.js +6 -6
  326. package/vscode/src/vs/workbench/services/search/common/queryBuilder.js +1 -1
  327. package/vscode/src/vs/workbench/services/textMate/common/TMGrammars.js +9 -9
  328. package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel.js +3 -3
  329. package/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint.js +18 -18
  330. package/vscode/src/vs/workbench/services/themes/common/colorThemeData.js +8 -8
  331. package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +13 -13
  332. package/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.js +24 -24
  333. package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfile.js +3 -3
  334. package/vscode/src/vs/workbench/services/userDataProfile/common/userDataProfileIcons.js +1 -1
  335. package/vscode/src/vs/workbench/services/userDataSync/common/userDataSync.js +13 -13
  336. package/vscode/src/vs/workbench/services/workingCopy/common/storedFileWorkingCopy.js +16 -16
@@ -0,0 +1,1353 @@
1
+
2
+ import { registerCss } from '../../../../../../../css.js';
3
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
4
+ import { append, $, show, hide, setParentFlowTo } from '../../../../base/browser/dom.js';
5
+ import { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';
6
+ import { getDefaultHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';
7
+ import { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';
8
+ import { CheckboxActionViewItem } from '../../../../base/browser/ui/toggle/toggle.js';
9
+ import { Action } from '../../../../base/common/actions.js';
10
+ import { insert, isFalsyOrEmpty } from '../../../../base/common/arrays.js';
11
+ import { Cache } from '../../../../base/common/cache.js';
12
+ import { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';
13
+ import { isCancellationError } from '../../../../base/common/errors.js';
14
+ import { Emitter, Event } from '../../../../base/common/event.js';
15
+ import { KeyMod as KeyMod$1, KeyCode } from '../../../../base/common/keyCodes.js';
16
+ import { Disposable, dispose, MutableDisposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';
17
+ import { matchesScheme, Schemas } from '../../../../base/common/network.js';
18
+ import { isNative } from '../../../../base/common/platform.js';
19
+ import { isUndefined } from '../../../../base/common/types.js';
20
+ import { URI } from '../../../../base/common/uri.js';
21
+ import { generateUuid } from '../../../../base/common/uuid.js';
22
+ import * as extensionEditor from './media/extensionEditor.css';
23
+ import { EditorContextKeys } from '../../../../editor/common/editorContextKeys.js';
24
+ import { TokenizationRegistry } from '../../../../editor/common/languages.js';
25
+ import { ILanguageService } from '../../../../editor/common/languages/language.service.js';
26
+ import { generateTokensCSSForColorMap } from '../../../../editor/common/languages/supports/tokenization.js';
27
+ import { localize } from '../../../../nls.js';
28
+ import { registerAction2, Action2 } from '../../../../platform/actions/common/actions.js';
29
+ import { RawContextKey, ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
30
+ import { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.service.js';
31
+ import { IContextMenuService } from '../../../../platform/contextview/browser/contextView.service.js';
32
+ import { FilterType, computeSize } from '../../../../platform/extensionManagement/common/extensionManagement.js';
33
+ import { IExtensionGalleryService } from '../../../../platform/extensionManagement/common/extensionManagement.service.js';
34
+ import { areSameExtensions } from '../../../../platform/extensionManagement/common/extensionManagementUtil.js';
35
+ import { ExtensionType } from '../../../../platform/extensions/common/extensions.js';
36
+ import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
37
+ import { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';
38
+ import { INotificationService } from '../../../../platform/notification/common/notification.service.js';
39
+ import { IOpenerService } from '../../../../platform/opener/common/opener.service.js';
40
+ import { IStorageService } from '../../../../platform/storage/common/storage.service.js';
41
+ import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.service.js';
42
+ import { defaultCheckboxStyles } from '../../../../platform/theme/browser/defaultStyles.js';
43
+ import '../../../../platform/theme/common/colorUtils.js';
44
+ import { textLinkForeground, textLinkActiveForeground } from '../../../../platform/theme/common/colors/baseColors.js';
45
+ import '../../../../platform/theme/common/colors/chartsColors.js';
46
+ import { editorBackground } from '../../../../platform/theme/common/colors/editorColors.js';
47
+ import { buttonHoverBackground, buttonForeground } from '../../../../platform/theme/common/colors/inputColors.js';
48
+ import '../../../../platform/theme/common/colors/listColors.js';
49
+ import '../../../../platform/theme/common/colors/menuColors.js';
50
+ import '../../../../platform/theme/common/colors/minimapColors.js';
51
+ import '../../../../platform/theme/common/colors/miscColors.js';
52
+ import '../../../../platform/theme/common/colors/quickpickColors.js';
53
+ import '../../../../platform/theme/common/colors/searchColors.js';
54
+ import { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';
55
+ import { IThemeService } from '../../../../platform/theme/common/themeService.service.js';
56
+ import { EditorPane } from '../../../browser/parts/editor/editorPane.js';
57
+ import { ExtensionFeaturesTab } from './extensionFeaturesTab.js';
58
+ import { InstallDropdownAction, ExtensionEditorManageExtensionAction, ExtensionRuntimeStateAction, ExtensionStatusLabelAction, UpdateAction, SetColorThemeAction, SetFileIconThemeAction, SetProductIconThemeAction, SetLanguageAction, ClearLanguageAction, EnableDropDownAction, TogglePreReleaseExtensionAction, DisableDropDownAction, RemoteInstallAction, LocalInstallAction, WebInstallAction, InstallingLabelAction, ButtonWithDropDownExtensionAction, UninstallAction, MigrateDeprecatedExtensionAction, InstallAnotherVersionAction, ToggleAutoUpdateForExtensionAction, DropDownExtensionAction, ButtonWithDropdownExtensionActionViewItem, ExtensionStatusAction } from './extensionsActions.js';
59
+ import { Delegate } from './extensionsList.js';
60
+ import { ExtensionsTree, ExtensionData, ExtensionsGridView, getExtensions } from './extensionsViewer.js';
61
+ import { ExtensionWidget, ExtensionIconWidget, RemoteBadgeWidget, PublisherWidget, ExtensionKindIndicatorWidget, InstallCountWidget, RatingsWidget, SponsorWidget, ExtensionStatusWidget, ExtensionRecommendationWidget, onClick } from './extensionsWidgets.js';
62
+ import { ExtensionState, ExtensionContainers, ExtensionEditorTab } from '../common/extensions.js';
63
+ import { IExtensionsWorkbenchService } from '../common/extensions.service.js';
64
+ import { renderMarkdownDocument, DEFAULT_MARKDOWN_STYLES } from '../../markdown/browser/markdownDocumentRenderer.js';
65
+ import { KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_FOCUSED } from '../../webview/browser/webview.js';
66
+ import { IWebviewService } from '../../webview/browser/webview.service.js';
67
+ import { IEditorService } from '../../../services/editor/common/editorService.service.js';
68
+ import { IExtensionRecommendationsService } from '../../../services/extensionRecommendations/common/extensionRecommendations.service.js';
69
+ import { IExtensionService } from '../../../services/extensions/common/extensions.service.js';
70
+ import { IUriIdentityService } from '../../../../platform/uriIdentity/common/uriIdentity.service.js';
71
+ import { IHoverService } from '../../../../platform/hover/browser/hover.service.js';
72
+ import { ByteSize } from '../../../../platform/files/common/files.js';
73
+ import { IFileService } from '../../../../platform/files/common/files.service.js';
74
+ import { IUserDataProfilesService } from '../../../../platform/userDataProfile/common/userDataProfile.service.js';
75
+ import { IRemoteAgentService } from '../../../services/remote/common/remoteAgentService.service.js';
76
+ import { IExtensionGalleryManifestService } from '../../../../platform/extensionManagement/common/extensionGalleryManifest.service.js';
77
+ import { ShowCurrentReleaseNotesActionId } from '../../update/common/update.js';
78
+ import { ThemeIcon } from '../../../../base/common/themables.js';
79
+ import { Codicon } from '../../../../base/common/codicons.js';
80
+ import { fromNow } from '../../../../base/common/date.js';
81
+
82
+ var ExtensionEditor_1;
83
+ registerCss(extensionEditor);
84
+ class NavBar extends Disposable {
85
+ get currentId() {
86
+ return this._currentId;
87
+ }
88
+ constructor(container) {
89
+ super();
90
+ this._onChange = this._register(( new Emitter()));
91
+ this.onChange = this._onChange.event;
92
+ this._currentId = null;
93
+ const element = append(container, $(".navbar"));
94
+ this.actions = [];
95
+ this.actionbar = this._register(( new ActionBar(element)));
96
+ }
97
+ push(id, label, tooltip) {
98
+ const action = ( new Action(id, label, undefined, true, () => this.update(id, true)));
99
+ action.tooltip = tooltip;
100
+ this.actions.push(action);
101
+ this.actionbar.push(action);
102
+ if (this.actions.length === 1) {
103
+ this.update(id);
104
+ }
105
+ }
106
+ clear() {
107
+ this.actions = dispose(this.actions);
108
+ this.actionbar.clear();
109
+ }
110
+ switch(id) {
111
+ const action = this.actions.find(action => action.id === id);
112
+ if (action) {
113
+ action.run();
114
+ return true;
115
+ }
116
+ return false;
117
+ }
118
+ update(id, focus) {
119
+ this._currentId = id;
120
+ this._onChange.fire({
121
+ id,
122
+ focus: !!focus
123
+ });
124
+ this.actions.forEach(a => a.checked = a.id === id);
125
+ }
126
+ dispose() {
127
+ this.clear();
128
+ super.dispose();
129
+ }
130
+ }
131
+ var WebviewIndex;
132
+ (function(WebviewIndex) {
133
+ WebviewIndex[WebviewIndex["Readme"] = 0] = "Readme";
134
+ WebviewIndex[WebviewIndex["Changelog"] = 1] = "Changelog";
135
+ })(WebviewIndex || (WebviewIndex = {}));
136
+ const CONTEXT_SHOW_PRE_RELEASE_VERSION = ( new RawContextKey("showPreReleaseVersion", false));
137
+ class ExtensionWithDifferentGalleryVersionWidget extends ExtensionWidget {
138
+ constructor() {
139
+ super(...arguments);
140
+ this._gallery = null;
141
+ }
142
+ get gallery() {
143
+ return this._gallery;
144
+ }
145
+ set gallery(gallery) {
146
+ if (this.extension && gallery && !areSameExtensions(this.extension.identifier, gallery.identifier)) {
147
+ return;
148
+ }
149
+ this._gallery = gallery;
150
+ this.update();
151
+ }
152
+ }
153
+ class VersionWidget extends ExtensionWithDifferentGalleryVersionWidget {
154
+ constructor(container, hoverService) {
155
+ super();
156
+ this.element = append(container, $("code.version", undefined, "pre-release"));
157
+ this._register(
158
+ hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), this.element, ( localize(9374, "Extension Version")))
159
+ );
160
+ this.render();
161
+ }
162
+ render() {
163
+ if (this.extension?.preRelease) {
164
+ show(this.element);
165
+ } else {
166
+ hide(this.element);
167
+ }
168
+ }
169
+ }
170
+ let ExtensionEditor = class ExtensionEditor extends EditorPane {
171
+ static {
172
+ ExtensionEditor_1 = this;
173
+ }
174
+ static {
175
+ this.ID = "workbench.editor.extension";
176
+ }
177
+ constructor(
178
+ group,
179
+ telemetryService,
180
+ instantiationService,
181
+ extensionsWorkbenchService,
182
+ extensionGalleryService,
183
+ themeService,
184
+ notificationService,
185
+ openerService,
186
+ extensionRecommendationsService,
187
+ storageService,
188
+ extensionService,
189
+ webviewService,
190
+ languageService,
191
+ contextMenuService,
192
+ contextKeyService,
193
+ hoverService
194
+ ) {
195
+ super(
196
+ ExtensionEditor_1.ID,
197
+ group,
198
+ telemetryService,
199
+ themeService,
200
+ storageService
201
+ );
202
+ this.instantiationService = instantiationService;
203
+ this.extensionsWorkbenchService = extensionsWorkbenchService;
204
+ this.extensionGalleryService = extensionGalleryService;
205
+ this.notificationService = notificationService;
206
+ this.openerService = openerService;
207
+ this.extensionRecommendationsService = extensionRecommendationsService;
208
+ this.extensionService = extensionService;
209
+ this.webviewService = webviewService;
210
+ this.languageService = languageService;
211
+ this.contextMenuService = contextMenuService;
212
+ this.contextKeyService = contextKeyService;
213
+ this.hoverService = hoverService;
214
+ this._scopedContextKeyService = this._register(( new MutableDisposable()));
215
+ this.initialScrollProgress = ( new Map());
216
+ this.currentIdentifier = "";
217
+ this.layoutParticipants = [];
218
+ this.contentDisposables = this._register(( new DisposableStore()));
219
+ this.transientDisposables = this._register(( new DisposableStore()));
220
+ this.activeElement = null;
221
+ this.extensionReadme = null;
222
+ this.extensionChangelog = null;
223
+ this.extensionManifest = null;
224
+ }
225
+ get scopedContextKeyService() {
226
+ return this._scopedContextKeyService.value;
227
+ }
228
+ createEditor(parent) {
229
+ const root = append(parent, $(".extension-editor"));
230
+ this._scopedContextKeyService.value = this.contextKeyService.createScoped(root);
231
+ this._scopedContextKeyService.value.createKey("inExtensionEditor", true);
232
+ this.showPreReleaseVersionContextKey = CONTEXT_SHOW_PRE_RELEASE_VERSION.bindTo(this._scopedContextKeyService.value);
233
+ root.tabIndex = 0;
234
+ root.style.outline = "none";
235
+ root.setAttribute("role", "document");
236
+ const header = append(root, $(".header"));
237
+ const iconContainer = append(header, $(".icon-container"));
238
+ const iconWidget = this.instantiationService.createInstance(ExtensionIconWidget, iconContainer);
239
+ const remoteBadge = this.instantiationService.createInstance(RemoteBadgeWidget, iconContainer, true);
240
+ const details = append(header, $(".details"));
241
+ const title = append(details, $(".title"));
242
+ const name = append(title, $("span.name.clickable", {
243
+ role: "heading",
244
+ tabIndex: 0
245
+ }));
246
+ this._register(
247
+ this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), name, ( localize(9375, "Extension name")))
248
+ );
249
+ const versionWidget = ( new VersionWidget(title, this.hoverService));
250
+ const preview = append(title, $("span.preview"));
251
+ this._register(
252
+ this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), preview, ( localize(9376, "Preview")))
253
+ );
254
+ preview.textContent = ( localize(9376, "Preview"));
255
+ const builtin = append(title, $("span.builtin"));
256
+ builtin.textContent = ( localize(9377, "Built-in"));
257
+ const subtitle = append(details, $(".subtitle"));
258
+ const subTitleEntryContainers = [];
259
+ const publisherContainer = append(subtitle, $(".subtitle-entry"));
260
+ subTitleEntryContainers.push(publisherContainer);
261
+ const publisherWidget = this.instantiationService.createInstance(PublisherWidget, publisherContainer, false);
262
+ const extensionKindContainer = append(subtitle, $(".subtitle-entry"));
263
+ subTitleEntryContainers.push(extensionKindContainer);
264
+ const extensionKindWidget = this.instantiationService.createInstance(ExtensionKindIndicatorWidget, extensionKindContainer, false);
265
+ const installCountContainer = append(subtitle, $(".subtitle-entry"));
266
+ subTitleEntryContainers.push(installCountContainer);
267
+ const installCountWidget = this.instantiationService.createInstance(InstallCountWidget, installCountContainer, false);
268
+ const ratingsContainer = append(subtitle, $(".subtitle-entry"));
269
+ subTitleEntryContainers.push(ratingsContainer);
270
+ const ratingsWidget = this.instantiationService.createInstance(RatingsWidget, ratingsContainer, false);
271
+ const sponsorContainer = append(subtitle, $(".subtitle-entry"));
272
+ subTitleEntryContainers.push(sponsorContainer);
273
+ const sponsorWidget = this.instantiationService.createInstance(SponsorWidget, sponsorContainer);
274
+ const widgets = [
275
+ iconWidget,
276
+ remoteBadge,
277
+ versionWidget,
278
+ publisherWidget,
279
+ extensionKindWidget,
280
+ installCountWidget,
281
+ ratingsWidget,
282
+ sponsorWidget
283
+ ];
284
+ const description = append(details, $(".description"));
285
+ const installAction = this.instantiationService.createInstance(InstallDropdownAction);
286
+ const actions = [
287
+ this.instantiationService.createInstance(ExtensionRuntimeStateAction),
288
+ this.instantiationService.createInstance(ExtensionStatusLabelAction),
289
+ this.instantiationService.createInstance(UpdateAction, true),
290
+ this.instantiationService.createInstance(SetColorThemeAction),
291
+ this.instantiationService.createInstance(SetFileIconThemeAction),
292
+ this.instantiationService.createInstance(SetProductIconThemeAction),
293
+ this.instantiationService.createInstance(SetLanguageAction),
294
+ this.instantiationService.createInstance(ClearLanguageAction),
295
+ this.instantiationService.createInstance(EnableDropDownAction),
296
+ this.instantiationService.createInstance(TogglePreReleaseExtensionAction),
297
+ this.instantiationService.createInstance(DisableDropDownAction),
298
+ this.instantiationService.createInstance(RemoteInstallAction, false),
299
+ this.instantiationService.createInstance(LocalInstallAction),
300
+ this.instantiationService.createInstance(WebInstallAction),
301
+ installAction,
302
+ this.instantiationService.createInstance(InstallingLabelAction),
303
+ this.instantiationService.createInstance(
304
+ ButtonWithDropDownExtensionAction,
305
+ "extensions.uninstall",
306
+ UninstallAction.UninstallClass,
307
+ [[
308
+ this.instantiationService.createInstance(MigrateDeprecatedExtensionAction, false),
309
+ this.instantiationService.createInstance(UninstallAction),
310
+ this.instantiationService.createInstance(InstallAnotherVersionAction, null, true)
311
+ ]]
312
+ ),
313
+ this.instantiationService.createInstance(ToggleAutoUpdateForExtensionAction),
314
+ ( new ExtensionEditorManageExtensionAction(
315
+ this.scopedContextKeyService || this.contextKeyService,
316
+ this.instantiationService
317
+ ))
318
+ ];
319
+ const actionsAndStatusContainer = append(details, $(".actions-status-container"));
320
+ const extensionActionBar = this._register(( new ActionBar(actionsAndStatusContainer, {
321
+ actionViewItemProvider: (action, options) => {
322
+ if (action instanceof DropDownExtensionAction) {
323
+ return action.createActionViewItem(options);
324
+ }
325
+ if (action instanceof ButtonWithDropDownExtensionAction) {
326
+ return ( new ButtonWithDropdownExtensionActionViewItem(action, {
327
+ ...options,
328
+ icon: true,
329
+ label: true,
330
+ menuActionsOrProvider: {
331
+ getActions: () => action.menuActions
332
+ },
333
+ menuActionClassNames: action.menuActionClassNames
334
+ }, this.contextMenuService));
335
+ }
336
+ if (action instanceof ToggleAutoUpdateForExtensionAction) {
337
+ return ( new CheckboxActionViewItem(undefined, action, {
338
+ ...options,
339
+ icon: true,
340
+ label: true,
341
+ checkboxStyles: defaultCheckboxStyles
342
+ }));
343
+ }
344
+ return undefined;
345
+ },
346
+ focusOnlyEnabledItems: true
347
+ })));
348
+ extensionActionBar.push(actions, {
349
+ icon: true,
350
+ label: true
351
+ });
352
+ extensionActionBar.setFocusable(true);
353
+ this._register(Event.any(...( actions.map(a => Event.filter(a.onDidChange, e => e.enabled !== undefined))))(() => {
354
+ extensionActionBar.setFocusable(false);
355
+ extensionActionBar.setFocusable(true);
356
+ }));
357
+ const otherExtensionContainers = [];
358
+ const extensionStatusAction = this.instantiationService.createInstance(ExtensionStatusAction);
359
+ const extensionStatusWidget = this._register(this.instantiationService.createInstance(
360
+ ExtensionStatusWidget,
361
+ append(actionsAndStatusContainer, $(".status")),
362
+ extensionStatusAction
363
+ ));
364
+ otherExtensionContainers.push(extensionStatusAction, new (class extends ExtensionWidget {
365
+ render() {
366
+ actionsAndStatusContainer.classList.toggle("list-layout", this.extension?.state === ExtensionState.Installed);
367
+ }
368
+ })());
369
+ const recommendationWidget = this.instantiationService.createInstance(ExtensionRecommendationWidget, append(details, $(".recommendation")));
370
+ widgets.push(recommendationWidget);
371
+ this._register(
372
+ Event.any(extensionStatusWidget.onDidRender, recommendationWidget.onDidRender)(() => {
373
+ if (this.dimension) {
374
+ this.layout(this.dimension);
375
+ }
376
+ })
377
+ );
378
+ const extensionContainers = this.instantiationService.createInstance(ExtensionContainers, [...actions, ...widgets, ...otherExtensionContainers]);
379
+ for (const disposable of [...actions, ...widgets, ...otherExtensionContainers, extensionContainers]) {
380
+ this._register(disposable);
381
+ }
382
+ const onError = Event.chain(extensionActionBar.onDidRun, $ => ( $.map((
383
+ {
384
+ error
385
+ }
386
+ ) => error)).filter(error => !!error));
387
+ this._register(onError(this.onError, this));
388
+ const body = append(root, $(".body"));
389
+ const navbar = this._register(( new NavBar(body)));
390
+ const content = append(body, $(".content"));
391
+ content.id = generateUuid();
392
+ this.template = {
393
+ builtin,
394
+ content,
395
+ description,
396
+ header,
397
+ name,
398
+ navbar,
399
+ preview,
400
+ actionsAndStatusContainer,
401
+ extensionActionBar,
402
+ set extension(extension) {
403
+ extensionContainers.extension = extension;
404
+ let lastNonEmptySubtitleEntryContainer;
405
+ for (const subTitleEntryElement of subTitleEntryContainers) {
406
+ subTitleEntryElement.classList.remove("last-non-empty");
407
+ if (subTitleEntryElement.children.length > 0) {
408
+ lastNonEmptySubtitleEntryContainer = subTitleEntryElement;
409
+ }
410
+ }
411
+ if (lastNonEmptySubtitleEntryContainer) {
412
+ lastNonEmptySubtitleEntryContainer.classList.add("last-non-empty");
413
+ }
414
+ },
415
+ set gallery(gallery) {
416
+ versionWidget.gallery = gallery;
417
+ },
418
+ set manifest(manifest) {
419
+ installAction.manifest = manifest;
420
+ }
421
+ };
422
+ }
423
+ async setInput(input, options, context, token) {
424
+ await super.setInput(input, options, context, token);
425
+ this.updatePreReleaseVersionContext();
426
+ if (this.template) {
427
+ await this.render(input.extension, this.template, !!options?.preserveFocus);
428
+ }
429
+ }
430
+ setOptions(options) {
431
+ const currentOptions = this.options;
432
+ super.setOptions(options);
433
+ this.updatePreReleaseVersionContext();
434
+ if (this.input && this.template && currentOptions?.showPreReleaseVersion !== options?.showPreReleaseVersion) {
435
+ this.render(this.input.extension, this.template, !!options?.preserveFocus);
436
+ return;
437
+ }
438
+ if (options?.tab) {
439
+ this.template?.navbar.switch(options.tab);
440
+ }
441
+ }
442
+ updatePreReleaseVersionContext() {
443
+ let showPreReleaseVersion = this.options?.showPreReleaseVersion;
444
+ if (isUndefined(showPreReleaseVersion)) {
445
+ showPreReleaseVersion = !!this.input.extension.gallery?.properties.isPreReleaseVersion;
446
+ }
447
+ this.showPreReleaseVersionContextKey?.set(showPreReleaseVersion);
448
+ }
449
+ async openTab(tab) {
450
+ if (!this.input || !this.template) {
451
+ return;
452
+ }
453
+ if (this.template.navbar.switch(tab)) {
454
+ return;
455
+ }
456
+ if (tab === ExtensionEditorTab.ExtensionPack) {
457
+ this.template.navbar.switch(ExtensionEditorTab.Readme);
458
+ }
459
+ }
460
+ async getGalleryVersionToShow(extension, preRelease) {
461
+ if (extension.resourceExtension) {
462
+ return null;
463
+ }
464
+ if (extension.local?.source === "resource") {
465
+ return null;
466
+ }
467
+ if (isUndefined(preRelease)) {
468
+ return null;
469
+ }
470
+ if (preRelease === extension.gallery?.properties.isPreReleaseVersion) {
471
+ return null;
472
+ }
473
+ if (preRelease && !extension.hasPreReleaseVersion) {
474
+ return null;
475
+ }
476
+ if (!preRelease && !extension.hasReleaseVersion) {
477
+ return null;
478
+ }
479
+ return (await this.extensionGalleryService.getExtensions([{
480
+ ...extension.identifier,
481
+ preRelease,
482
+ hasPreRelease: extension.hasPreReleaseVersion
483
+ }], CancellationToken.None))[0] || null;
484
+ }
485
+ async render(extension, template, preserveFocus) {
486
+ this.activeElement = null;
487
+ this.transientDisposables.clear();
488
+ const token = this.transientDisposables.add(( new CancellationTokenSource())).token;
489
+ const gallery = await this.getGalleryVersionToShow(extension, this.options?.showPreReleaseVersion);
490
+ if (token.isCancellationRequested) {
491
+ return;
492
+ }
493
+ this.extensionReadme = ( new Cache(
494
+ () => gallery ? this.extensionGalleryService.getReadme(gallery, token) : extension.getReadme(token)
495
+ ));
496
+ this.extensionChangelog = ( new Cache(
497
+ () => gallery ? this.extensionGalleryService.getChangelog(gallery, token) : extension.getChangelog(token)
498
+ ));
499
+ this.extensionManifest = ( new Cache(
500
+ () => gallery ? this.extensionGalleryService.getManifest(gallery, token) : extension.getManifest(token)
501
+ ));
502
+ template.extension = extension;
503
+ template.gallery = gallery;
504
+ template.manifest = null;
505
+ template.name.textContent = extension.displayName;
506
+ template.name.classList.toggle("clickable", !!extension.url);
507
+ template.name.classList.toggle("deprecated", !!extension.deprecationInfo);
508
+ template.preview.style.display = extension.preview ? "inherit" : "none";
509
+ template.builtin.style.display = extension.isBuiltin ? "inherit" : "none";
510
+ template.description.textContent = extension.description;
511
+ if (extension.url) {
512
+ this.transientDisposables.add(onClick(template.name, () => this.openerService.open(( URI.parse(extension.url)))));
513
+ }
514
+ const manifest = await this.extensionManifest.get().promise;
515
+ if (token.isCancellationRequested) {
516
+ return;
517
+ }
518
+ if (manifest) {
519
+ template.manifest = manifest;
520
+ }
521
+ this.renderNavbar(extension, manifest, template, preserveFocus);
522
+ const extRecommendations = this.extensionRecommendationsService.getAllRecommendationsWithReason();
523
+ let recommendationsData = {};
524
+ if (extRecommendations[extension.identifier.id.toLowerCase()]) {
525
+ recommendationsData = {
526
+ recommendationReason: extRecommendations[extension.identifier.id.toLowerCase()].reasonId
527
+ };
528
+ }
529
+ this.telemetryService.publicLog("extensionGallery:openExtension", {
530
+ ...extension.telemetryData,
531
+ ...recommendationsData
532
+ });
533
+ }
534
+ renderNavbar(extension, manifest, template, preserveFocus) {
535
+ template.content.innerText = "";
536
+ template.navbar.clear();
537
+ if (this.currentIdentifier !== extension.identifier.id) {
538
+ this.initialScrollProgress.clear();
539
+ this.currentIdentifier = extension.identifier.id;
540
+ }
541
+ template.navbar.push(ExtensionEditorTab.Readme, ( localize(9378, "Details")), ( localize(9379, "Extension details, rendered from the extension's 'README.md' file")));
542
+ if (manifest) {
543
+ template.navbar.push(ExtensionEditorTab.Features, ( localize(9380, "Features")), ( localize(9381, "Lists features contributed by this extension")));
544
+ }
545
+ if (extension.hasChangelog()) {
546
+ template.navbar.push(ExtensionEditorTab.Changelog, ( localize(9382, "Changelog")), ( localize(
547
+ 9383,
548
+ "Extension update history, rendered from the extension's 'CHANGELOG.md' file"
549
+ )));
550
+ }
551
+ if (extension.dependencies.length) {
552
+ template.navbar.push(ExtensionEditorTab.Dependencies, ( localize(9384, "Dependencies")), ( localize(9385, "Lists extensions this extension depends on")));
553
+ }
554
+ if (manifest && manifest.extensionPack?.length && !this.shallRenderAsExtensionPack(manifest)) {
555
+ template.navbar.push(ExtensionEditorTab.ExtensionPack, ( localize(9386, "Extension Pack")), ( localize(
556
+ 9387,
557
+ "Lists extensions those will be installed together with this extension"
558
+ )));
559
+ }
560
+ if (this.options?.tab) {
561
+ template.navbar.switch(this.options.tab);
562
+ }
563
+ if (template.navbar.currentId) {
564
+ this.onNavbarChange(extension, {
565
+ id: template.navbar.currentId,
566
+ focus: !preserveFocus
567
+ }, template);
568
+ }
569
+ template.navbar.onChange(
570
+ e => this.onNavbarChange(extension, e, template),
571
+ this,
572
+ this.transientDisposables
573
+ );
574
+ }
575
+ clearInput() {
576
+ this.contentDisposables.clear();
577
+ this.transientDisposables.clear();
578
+ super.clearInput();
579
+ }
580
+ focus() {
581
+ super.focus();
582
+ this.activeElement?.focus();
583
+ }
584
+ showFind() {
585
+ this.activeWebview?.showFind();
586
+ }
587
+ runFindAction(previous) {
588
+ this.activeWebview?.runFindAction(previous);
589
+ }
590
+ get activeWebview() {
591
+ if (!this.activeElement || !this.activeElement.runFindAction) {
592
+ return undefined;
593
+ }
594
+ return this.activeElement;
595
+ }
596
+ onNavbarChange(
597
+ extension,
598
+ {
599
+ id,
600
+ focus
601
+ },
602
+ template
603
+ ) {
604
+ this.contentDisposables.clear();
605
+ template.content.innerText = "";
606
+ this.activeElement = null;
607
+ if (id) {
608
+ const cts = ( new CancellationTokenSource());
609
+ this.contentDisposables.add(toDisposable(() => cts.dispose(true)));
610
+ this.open(id, extension, template, cts.token).then(activeElement => {
611
+ if (cts.token.isCancellationRequested) {
612
+ return;
613
+ }
614
+ this.activeElement = activeElement;
615
+ if (focus) {
616
+ this.focus();
617
+ }
618
+ });
619
+ }
620
+ }
621
+ open(id, extension, template, token) {
622
+ const details = append(template.content, $(".details"));
623
+ const contentContainer = append(details, $(".content-container"));
624
+ const additionalDetailsContainer = append(details, $(".additional-details-container"));
625
+ const layout = () => details.classList.toggle("narrow", this.dimension && this.dimension.width < 500);
626
+ layout();
627
+ this.contentDisposables.add(toDisposable(insert(this.layoutParticipants, {
628
+ layout
629
+ })));
630
+ this.renderAdditionalDetails(additionalDetailsContainer, extension);
631
+ switch (id) {
632
+ case ExtensionEditorTab.Readme:
633
+ return this.openDetails(extension, contentContainer, token);
634
+ case ExtensionEditorTab.Features:
635
+ return this.openFeatures(extension, contentContainer, token);
636
+ case ExtensionEditorTab.Changelog:
637
+ return this.openChangelog(extension, contentContainer, token);
638
+ case ExtensionEditorTab.Dependencies:
639
+ return this.openExtensionDependencies(extension, contentContainer, token);
640
+ case ExtensionEditorTab.ExtensionPack:
641
+ return this.openExtensionPack(extension, contentContainer, token);
642
+ }
643
+ return Promise.resolve(null);
644
+ }
645
+ async openMarkdown(
646
+ extension,
647
+ cacheResult,
648
+ noContentCopy,
649
+ container,
650
+ webviewIndex,
651
+ title,
652
+ token
653
+ ) {
654
+ try {
655
+ const body = await this.renderMarkdown(extension, cacheResult, container, token);
656
+ if (token.isCancellationRequested) {
657
+ return Promise.resolve(null);
658
+ }
659
+ const webview = this.contentDisposables.add(this.webviewService.createWebviewOverlay({
660
+ title,
661
+ options: {
662
+ enableFindWidget: true,
663
+ tryRestoreScrollPosition: true,
664
+ disableServiceWorker: true
665
+ },
666
+ contentOptions: {},
667
+ extension: undefined
668
+ }));
669
+ webview.initialScrollProgress = this.initialScrollProgress.get(webviewIndex) || 0;
670
+ webview.claim(this, this.window, this.scopedContextKeyService);
671
+ setParentFlowTo(webview.container, container);
672
+ webview.setAnchorElement(container);
673
+ webview.setHtml(body);
674
+ webview.claim(this, this.window, undefined);
675
+ this.contentDisposables.add(webview.onDidFocus(() => this._onDidFocus?.fire()));
676
+ this.contentDisposables.add(webview.onDidScroll(
677
+ () => this.initialScrollProgress.set(webviewIndex, webview.initialScrollProgress)
678
+ ));
679
+ let isDisposed = false;
680
+ this.contentDisposables.add(toDisposable(() => {
681
+ isDisposed = true;
682
+ }));
683
+ this.contentDisposables.add(this.themeService.onDidColorThemeChange(async () => {
684
+ const body = await this.renderMarkdown(extension, cacheResult, container);
685
+ if (!isDisposed) {
686
+ webview.setHtml(body);
687
+ }
688
+ }));
689
+ this.contentDisposables.add(webview.onDidClickLink(link => {
690
+ if (!link) {
691
+ return;
692
+ }
693
+ if (matchesScheme(link, Schemas.http) || matchesScheme(link, Schemas.https) || matchesScheme(link, Schemas.mailto)) {
694
+ this.openerService.open(link);
695
+ } else if (matchesScheme(link, Schemas.command) && extension.type === ExtensionType.System) {
696
+ this.openerService.open(link, {
697
+ allowCommands: [ShowCurrentReleaseNotesActionId]
698
+ });
699
+ }
700
+ }));
701
+ return webview;
702
+ } catch (e) {
703
+ const p = append(container, $("p.nocontent"));
704
+ p.textContent = noContentCopy;
705
+ return p;
706
+ }
707
+ }
708
+ async renderMarkdown(extension, cacheResult, container, token) {
709
+ const contents = await this.loadContents(() => cacheResult, container);
710
+ if (token?.isCancellationRequested) {
711
+ return "";
712
+ }
713
+ const allowedLinkProtocols = [Schemas.http, Schemas.https, Schemas.mailto];
714
+ const content = await renderMarkdownDocument(contents, this.extensionService, this.languageService, {
715
+ sanitizerConfig: {
716
+ allowedLinkProtocols: {
717
+ override: extension.type === ExtensionType.System ? [...allowedLinkProtocols, Schemas.command] : allowedLinkProtocols
718
+ }
719
+ }
720
+ }, token);
721
+ if (token?.isCancellationRequested) {
722
+ return "";
723
+ }
724
+ return this.renderBody(content);
725
+ }
726
+ renderBody(body) {
727
+ const nonce = generateUuid();
728
+ const colorMap = TokenizationRegistry.getColorMap();
729
+ const css = colorMap ? generateTokensCSSForColorMap(colorMap) : "";
730
+ return `<!DOCTYPE html>
731
+ <html>
732
+ <head>
733
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
734
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src https: data:; media-src https:; script-src 'none'; style-src 'nonce-${nonce}';">
735
+ <style nonce="${nonce}">
736
+ ${DEFAULT_MARKDOWN_STYLES}
737
+
738
+ /* prevent scroll-to-top button from blocking the body text */
739
+ body {
740
+ padding-bottom: 75px;
741
+ }
742
+
743
+ #scroll-to-top {
744
+ position: fixed;
745
+ width: 32px;
746
+ height: 32px;
747
+ right: 25px;
748
+ bottom: 25px;
749
+ background-color: var(--vscode-button-secondaryBackground);
750
+ border-color: var(--vscode-button-border);
751
+ border-radius: 50%;
752
+ cursor: pointer;
753
+ box-shadow: 1px 1px 1px rgba(0,0,0,.25);
754
+ outline: none;
755
+ display: flex;
756
+ justify-content: center;
757
+ align-items: center;
758
+ }
759
+
760
+ #scroll-to-top:hover {
761
+ background-color: var(--vscode-button-secondaryHoverBackground);
762
+ box-shadow: 2px 2px 2px rgba(0,0,0,.25);
763
+ }
764
+
765
+ body.vscode-high-contrast #scroll-to-top {
766
+ border-width: 2px;
767
+ border-style: solid;
768
+ box-shadow: none;
769
+ }
770
+
771
+ #scroll-to-top span.icon::before {
772
+ content: "";
773
+ display: block;
774
+ background: var(--vscode-button-secondaryForeground);
775
+ /* Chevron up icon */
776
+ webkit-mask-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxNiAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTYgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZGRkZGO30KCS5zdDF7ZmlsbDpub25lO30KPC9zdHlsZT4KPHRpdGxlPnVwY2hldnJvbjwvdGl0bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik04LDUuMWwtNy4zLDcuM0wwLDExLjZsOC04bDgsOGwtMC43LDAuN0w4LDUuMXoiLz4KPHJlY3QgY2xhc3M9InN0MSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+Cjwvc3ZnPgo=');
777
+ -webkit-mask-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxNiAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTYgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZGRkZGO30KCS5zdDF7ZmlsbDpub25lO30KPC9zdHlsZT4KPHRpdGxlPnVwY2hldnJvbjwvdGl0bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik04LDUuMWwtNy4zLDcuM0wwLDExLjZsOC04bDgsOGwtMC43LDAuN0w4LDUuMXoiLz4KPHJlY3QgY2xhc3M9InN0MSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+Cjwvc3ZnPgo=');
778
+ width: 16px;
779
+ height: 16px;
780
+ }
781
+ ${css}
782
+ </style>
783
+ </head>
784
+ <body>
785
+ <a id="scroll-to-top" role="button" aria-label="scroll to top" href="#"><span class="icon"></span></a>
786
+ ${body}
787
+ </body>
788
+ </html>`;
789
+ }
790
+ async openDetails(extension, contentContainer, token) {
791
+ let activeElement = null;
792
+ const manifest = await this.extensionManifest.get().promise;
793
+ if (manifest && manifest.extensionPack?.length && this.shallRenderAsExtensionPack(manifest)) {
794
+ activeElement = await this.openExtensionPackReadme(extension, manifest, contentContainer, token);
795
+ } else {
796
+ activeElement = await this.openMarkdown(extension, this.extensionReadme.get(), ( localize(9388, "No README available.")), contentContainer, WebviewIndex.Readme, ( localize(9389, "Readme")), token);
797
+ }
798
+ return activeElement;
799
+ }
800
+ shallRenderAsExtensionPack(manifest) {
801
+ return !!(manifest.categories?.some(category => category.toLowerCase() === "extension packs"));
802
+ }
803
+ async openExtensionPackReadme(extension, manifest, container, token) {
804
+ if (token.isCancellationRequested) {
805
+ return Promise.resolve(null);
806
+ }
807
+ const extensionPackReadme = append(container, $("div", {
808
+ class: "extension-pack-readme"
809
+ }));
810
+ extensionPackReadme.style.margin = "0 auto";
811
+ extensionPackReadme.style.maxWidth = "882px";
812
+ const extensionPack = append(extensionPackReadme, $("div", {
813
+ class: "extension-pack"
814
+ }));
815
+ const packCount = manifest.extensionPack.length;
816
+ const headerHeight = 37;
817
+ const contentMinHeight = 200;
818
+ const layout = () => {
819
+ extensionPackReadme.classList.remove("one-row", "two-rows", "three-rows", "more-rows");
820
+ const availableHeight = container.clientHeight;
821
+ const availableForPack = Math.max(availableHeight - headerHeight - contentMinHeight, 0);
822
+ let rowClass = "one-row";
823
+ if (availableForPack >= 302 && packCount > 6) {
824
+ rowClass = "more-rows";
825
+ } else if (availableForPack >= 282 && packCount > 4) {
826
+ rowClass = "three-rows";
827
+ } else if (availableForPack >= 200 && packCount > 2) {
828
+ rowClass = "two-rows";
829
+ } else {
830
+ rowClass = "one-row";
831
+ }
832
+ extensionPackReadme.classList.add(rowClass);
833
+ };
834
+ layout();
835
+ this.contentDisposables.add(toDisposable(insert(this.layoutParticipants, {
836
+ layout
837
+ })));
838
+ const extensionPackHeader = append(extensionPack, $("div.header"));
839
+ extensionPackHeader.textContent = ( localize(9390, "Extension Pack ({0})", manifest.extensionPack.length));
840
+ const extensionPackContent = append(extensionPack, $("div", {
841
+ class: "extension-pack-content"
842
+ }));
843
+ extensionPackContent.setAttribute("tabindex", "0");
844
+ const readmeContent = append(extensionPackReadme, $("div.readme-content"));
845
+ await Promise.all([
846
+ this.renderExtensionPack(manifest, extensionPackContent, token),
847
+ this.openMarkdown(extension, this.extensionReadme.get(), ( localize(9388, "No README available.")), readmeContent, WebviewIndex.Readme, ( localize(9389, "Readme")), token)
848
+ ]);
849
+ return {
850
+ focus: () => extensionPackContent.focus()
851
+ };
852
+ }
853
+ renderAdditionalDetails(container, extension) {
854
+ const content = $("div", {
855
+ class: "additional-details-content",
856
+ tabindex: "0"
857
+ });
858
+ const scrollableContent = ( new DomScrollableElement(content, {}));
859
+ const layout = () => scrollableContent.scanDomNode();
860
+ const removeLayoutParticipant = insert(this.layoutParticipants, {
861
+ layout
862
+ });
863
+ this.contentDisposables.add(toDisposable(removeLayoutParticipant));
864
+ this.contentDisposables.add(scrollableContent);
865
+ this.contentDisposables.add(
866
+ this.instantiationService.createInstance(AdditionalDetailsWidget, content, extension)
867
+ );
868
+ append(container, scrollableContent.getDomNode());
869
+ scrollableContent.scanDomNode();
870
+ }
871
+ async openChangelog(extension, contentContainer, token) {
872
+ const activeElement = await this.openMarkdown(extension, this.extensionChangelog.get(), ( localize(9391, "No Changelog available.")), contentContainer, WebviewIndex.Changelog, ( localize(9392, "Changelog")), token);
873
+ return activeElement;
874
+ }
875
+ async openFeatures(extension, contentContainer, token) {
876
+ const manifest = await this.loadContents(() => this.extensionManifest.get(), contentContainer);
877
+ if (token.isCancellationRequested) {
878
+ return null;
879
+ }
880
+ if (!manifest) {
881
+ return null;
882
+ }
883
+ const extensionFeaturesTab = this.contentDisposables.add(
884
+ this.instantiationService.createInstance(ExtensionFeaturesTab, manifest, this.options?.feature)
885
+ );
886
+ const featureLayout = () => extensionFeaturesTab.layout(contentContainer.clientHeight, contentContainer.clientWidth);
887
+ const removeLayoutParticipant = insert(this.layoutParticipants, {
888
+ layout: featureLayout
889
+ });
890
+ this.contentDisposables.add(toDisposable(removeLayoutParticipant));
891
+ append(contentContainer, extensionFeaturesTab.domNode);
892
+ featureLayout();
893
+ return extensionFeaturesTab.domNode;
894
+ }
895
+ openExtensionDependencies(extension, contentContainer, token) {
896
+ if (token.isCancellationRequested) {
897
+ return Promise.resolve(null);
898
+ }
899
+ if (isFalsyOrEmpty(extension.dependencies)) {
900
+ append(contentContainer, $("p.nocontent")).textContent = ( localize(9393, "No Dependencies"));
901
+ return Promise.resolve(contentContainer);
902
+ }
903
+ const content = $("div", {
904
+ class: "subcontent"
905
+ });
906
+ const scrollableContent = ( new DomScrollableElement(content, {}));
907
+ append(contentContainer, scrollableContent.getDomNode());
908
+ this.contentDisposables.add(scrollableContent);
909
+ const dependenciesTree = this.instantiationService.createInstance(ExtensionsTree, ( new ExtensionData(
910
+ extension,
911
+ null,
912
+ extension => extension.dependencies || [],
913
+ this.extensionsWorkbenchService
914
+ )), content, {
915
+ listBackground: editorBackground
916
+ });
917
+ const depLayout = () => {
918
+ scrollableContent.scanDomNode();
919
+ const scrollDimensions = scrollableContent.getScrollDimensions();
920
+ dependenciesTree.layout(scrollDimensions.height);
921
+ };
922
+ const removeLayoutParticipant = insert(this.layoutParticipants, {
923
+ layout: depLayout
924
+ });
925
+ this.contentDisposables.add(toDisposable(removeLayoutParticipant));
926
+ this.contentDisposables.add(dependenciesTree);
927
+ depLayout();
928
+ return Promise.resolve({
929
+ focus() {
930
+ dependenciesTree.domFocus();
931
+ }
932
+ });
933
+ }
934
+ async openExtensionPack(extension, contentContainer, token) {
935
+ if (token.isCancellationRequested) {
936
+ return Promise.resolve(null);
937
+ }
938
+ const manifest = await this.loadContents(() => this.extensionManifest.get(), contentContainer);
939
+ if (token.isCancellationRequested) {
940
+ return null;
941
+ }
942
+ if (!manifest) {
943
+ return null;
944
+ }
945
+ return this.renderExtensionPack(manifest, contentContainer, token);
946
+ }
947
+ async renderExtensionPack(manifest, parent, token) {
948
+ if (token.isCancellationRequested) {
949
+ return null;
950
+ }
951
+ const content = $("div", {
952
+ class: "subcontent"
953
+ });
954
+ const scrollableContent = ( new DomScrollableElement(content, {
955
+ useShadows: false
956
+ }));
957
+ append(parent, scrollableContent.getDomNode());
958
+ const extensionsGridView = this.instantiationService.createInstance(ExtensionsGridView, content, ( new Delegate()));
959
+ const extensions = await getExtensions(manifest.extensionPack, this.extensionsWorkbenchService);
960
+ extensionsGridView.setExtensions(extensions);
961
+ scrollableContent.scanDomNode();
962
+ this.contentDisposables.add(scrollableContent);
963
+ this.contentDisposables.add(extensionsGridView);
964
+ this.contentDisposables.add(toDisposable(insert(this.layoutParticipants, {
965
+ layout: () => scrollableContent.scanDomNode()
966
+ })));
967
+ return content;
968
+ }
969
+ loadContents(loadingTask, container) {
970
+ container.classList.add("loading");
971
+ const result = this.contentDisposables.add(loadingTask());
972
+ const onDone = () => container.classList.remove("loading");
973
+ result.promise.then(onDone, onDone);
974
+ return result.promise;
975
+ }
976
+ layout(dimension) {
977
+ this.dimension = dimension;
978
+ this.layoutParticipants.forEach(p => p.layout());
979
+ }
980
+ onError(err) {
981
+ if (isCancellationError(err)) {
982
+ return;
983
+ }
984
+ this.notificationService.error(err);
985
+ }
986
+ };
987
+ ExtensionEditor = ExtensionEditor_1 = ( __decorate([( __param(1, ITelemetryService)), ( __param(2, IInstantiationService)), ( __param(3, IExtensionsWorkbenchService)), ( __param(4, IExtensionGalleryService)), ( __param(5, IThemeService)), ( __param(6, INotificationService)), ( __param(7, IOpenerService)), ( __param(8, IExtensionRecommendationsService)), ( __param(9, IStorageService)), ( __param(10, IExtensionService)), ( __param(11, IWebviewService)), ( __param(12, ILanguageService)), ( __param(13, IContextMenuService)), ( __param(14, IContextKeyService)), ( __param(15, IHoverService))], ExtensionEditor));
988
+ let AdditionalDetailsWidget = class AdditionalDetailsWidget extends Disposable {
989
+ constructor(
990
+ container,
991
+ extension,
992
+ hoverService,
993
+ openerService,
994
+ userDataProfilesService,
995
+ remoteAgentService,
996
+ fileService,
997
+ uriIdentityService,
998
+ extensionsWorkbenchService,
999
+ extensionGalleryManifestService
1000
+ ) {
1001
+ super();
1002
+ this.container = container;
1003
+ this.hoverService = hoverService;
1004
+ this.openerService = openerService;
1005
+ this.userDataProfilesService = userDataProfilesService;
1006
+ this.remoteAgentService = remoteAgentService;
1007
+ this.fileService = fileService;
1008
+ this.uriIdentityService = uriIdentityService;
1009
+ this.extensionsWorkbenchService = extensionsWorkbenchService;
1010
+ this.extensionGalleryManifestService = extensionGalleryManifestService;
1011
+ this.disposables = this._register(( new DisposableStore()));
1012
+ this.render(extension);
1013
+ this._register(this.extensionsWorkbenchService.onChange(e => {
1014
+ if (e && areSameExtensions(e.identifier, extension.identifier) && e.server === extension.server) {
1015
+ this.render(e);
1016
+ }
1017
+ }));
1018
+ }
1019
+ render(extension) {
1020
+ this.container.innerText = "";
1021
+ this.disposables.clear();
1022
+ if (extension.local) {
1023
+ this.renderInstallInfo(this.container, extension.local);
1024
+ }
1025
+ if (extension.gallery) {
1026
+ this.renderMarketplaceInfo(this.container, extension);
1027
+ }
1028
+ this.renderCategories(this.container, extension);
1029
+ this.renderExtensionResources(this.container, extension);
1030
+ }
1031
+ renderCategories(container, extension) {
1032
+ if (extension.categories.length) {
1033
+ const categoriesContainer = append(container, $(".categories-container.additional-details-element"));
1034
+ append(
1035
+ categoriesContainer,
1036
+ $(".additional-details-title", undefined, ( localize(9394, "Categories")))
1037
+ );
1038
+ const categoriesElement = append(categoriesContainer, $(".categories"));
1039
+ this.extensionGalleryManifestService.getExtensionGalleryManifest().then(manifest => {
1040
+ const hasCategoryFilter = manifest?.capabilities.extensionQuery.filtering?.some((
1041
+ {
1042
+ name
1043
+ }
1044
+ ) => name === FilterType.Category);
1045
+ for (const category of extension.categories) {
1046
+ const categoryElement = append(categoriesElement, $("span.category", {
1047
+ tabindex: "0"
1048
+ }, category));
1049
+ if (hasCategoryFilter) {
1050
+ categoryElement.classList.add("clickable");
1051
+ this.disposables.add(onClick(
1052
+ categoryElement,
1053
+ () => this.extensionsWorkbenchService.openSearch(`@category:"${category}"`)
1054
+ ));
1055
+ }
1056
+ }
1057
+ });
1058
+ }
1059
+ }
1060
+ renderExtensionResources(container, extension) {
1061
+ const resources = [];
1062
+ if (extension.repository) {
1063
+ try {
1064
+ resources.push([( localize(9395, "Repository")), ThemeIcon.fromId(Codicon.repo.id), ( URI.parse(extension.repository))]);
1065
+ } catch (error) {}
1066
+ }
1067
+ if (extension.supportUrl) {
1068
+ try {
1069
+ resources.push([( localize(9396, "Issues")), ThemeIcon.fromId(Codicon.issues.id), ( URI.parse(extension.supportUrl))]);
1070
+ } catch (error) {}
1071
+ }
1072
+ if (extension.licenseUrl) {
1073
+ try {
1074
+ resources.push([( localize(9397, "License")), ThemeIcon.fromId(Codicon.linkExternal.id), ( URI.parse(extension.licenseUrl))]);
1075
+ } catch (error) {}
1076
+ }
1077
+ if (extension.publisherUrl) {
1078
+ resources.push([
1079
+ extension.publisherDisplayName,
1080
+ ThemeIcon.fromId(Codicon.linkExternal.id),
1081
+ extension.publisherUrl
1082
+ ]);
1083
+ }
1084
+ if (extension.url) {
1085
+ resources.push([( localize(9398, "Marketplace")), ThemeIcon.fromId(Codicon.linkExternal.id), ( URI.parse(extension.url))]);
1086
+ }
1087
+ if (resources.length || extension.publisherSponsorLink) {
1088
+ const extensionResourcesContainer = append(container, $(".resources-container.additional-details-element"));
1089
+ append(
1090
+ extensionResourcesContainer,
1091
+ $(".additional-details-title", undefined, ( localize(9399, "Resources")))
1092
+ );
1093
+ const resourcesElement = append(extensionResourcesContainer, $(".resources"));
1094
+ for (const [label, icon, uri] of resources) {
1095
+ const resourceElement = append(resourcesElement, $(".resource"));
1096
+ append(resourceElement, $(ThemeIcon.asCSSSelector(icon)));
1097
+ append(resourceElement, $("a", {
1098
+ tabindex: "0"
1099
+ }, label));
1100
+ this.disposables.add(onClick(resourceElement, () => this.openerService.open(uri)));
1101
+ this.disposables.add(
1102
+ this.hoverService.setupManagedHover(getDefaultHoverDelegate("mouse"), resourceElement, ( uri.toString()))
1103
+ );
1104
+ }
1105
+ }
1106
+ }
1107
+ renderInstallInfo(container, extension) {
1108
+ const installInfoContainer = append(container, $(".more-info-container.additional-details-element"));
1109
+ append(
1110
+ installInfoContainer,
1111
+ $(".additional-details-title", undefined, ( localize(9400, "Installation")))
1112
+ );
1113
+ const installInfo = append(installInfoContainer, $(".more-info"));
1114
+ append(installInfo, $(
1115
+ ".more-info-entry",
1116
+ undefined,
1117
+ $("div.more-info-entry-name", undefined, ( localize(9401, "Identifier"))),
1118
+ $("code", undefined, extension.identifier.id)
1119
+ ));
1120
+ if (extension.type !== ExtensionType.System) {
1121
+ append(installInfo, $(
1122
+ ".more-info-entry",
1123
+ undefined,
1124
+ $("div.more-info-entry-name", undefined, ( localize(9402, "Version"))),
1125
+ $("code", undefined, extension.manifest.version)
1126
+ ));
1127
+ }
1128
+ if (extension.installedTimestamp) {
1129
+ append(installInfo, $(
1130
+ ".more-info-entry",
1131
+ undefined,
1132
+ $("div.more-info-entry-name", undefined, ( localize(9403, "Last Updated"))),
1133
+ $("div", {
1134
+ "title": ( ( new Date(extension.installedTimestamp)).toString())
1135
+ }, fromNow(extension.installedTimestamp, true, true, true))
1136
+ ));
1137
+ }
1138
+ if (!extension.isBuiltin && extension.source !== "gallery") {
1139
+ const element = $("div", undefined, extension.source === "vsix" ? ( localize(9404, "VSIX")) : ( localize(9405, "Local")));
1140
+ append(installInfo, $(
1141
+ ".more-info-entry",
1142
+ undefined,
1143
+ $("div.more-info-entry-name", undefined, ( localize(9406, "Source"))),
1144
+ element
1145
+ ));
1146
+ if (isNative && extension.source === "resource" && extension.location.scheme === Schemas.file) {
1147
+ element.classList.add("link");
1148
+ element.tabIndex = 0;
1149
+ element.setAttribute("role", "link");
1150
+ element.title = extension.location.fsPath;
1151
+ this.disposables.add(onClick(element, () => this.openerService.open(extension.location, {
1152
+ openExternal: true
1153
+ })));
1154
+ }
1155
+ }
1156
+ if (extension.size) {
1157
+ const element = $("div", undefined, ByteSize.formatSize(extension.size));
1158
+ append(
1159
+ installInfo,
1160
+ $(".more-info-entry", undefined, $("div.more-info-entry-name", {
1161
+ title: ( localize(9407, "Size when installed"))
1162
+ }, ( localize(9408, "Size"))), element)
1163
+ );
1164
+ if (isNative && extension.location.scheme === Schemas.file) {
1165
+ element.classList.add("link");
1166
+ element.tabIndex = 0;
1167
+ element.setAttribute("role", "link");
1168
+ element.title = extension.location.fsPath;
1169
+ this.disposables.add(onClick(element, () => this.openerService.open(extension.location, {
1170
+ openExternal: true
1171
+ })));
1172
+ }
1173
+ }
1174
+ this.getCacheLocation(extension).then(cacheLocation => {
1175
+ if (!cacheLocation) {
1176
+ return;
1177
+ }
1178
+ computeSize(cacheLocation, this.fileService).then(cacheSize => {
1179
+ if (!cacheSize) {
1180
+ return;
1181
+ }
1182
+ const element = $("div", undefined, ByteSize.formatSize(cacheSize));
1183
+ append(
1184
+ installInfo,
1185
+ $(".more-info-entry", undefined, $("div.more-info-entry-name", {
1186
+ title: ( localize(9409, "Cache size"))
1187
+ }, ( localize(9410, "Cache"))), element)
1188
+ );
1189
+ if (isNative && extension.location.scheme === Schemas.file) {
1190
+ element.classList.add("link");
1191
+ element.tabIndex = 0;
1192
+ element.setAttribute("role", "link");
1193
+ element.title = cacheLocation.fsPath;
1194
+ this.disposables.add(onClick(element, () => this.openerService.open(cacheLocation.with({
1195
+ scheme: Schemas.file
1196
+ }), {
1197
+ openExternal: true
1198
+ })));
1199
+ }
1200
+ });
1201
+ });
1202
+ }
1203
+ async getCacheLocation(extension) {
1204
+ let extensionCacheLocation = this.uriIdentityService.extUri.joinPath(
1205
+ this.userDataProfilesService.defaultProfile.globalStorageHome,
1206
+ extension.identifier.id.toLowerCase()
1207
+ );
1208
+ if (extension.location.scheme === Schemas.vscodeRemote) {
1209
+ const environment = await this.remoteAgentService.getEnvironment();
1210
+ if (!environment) {
1211
+ return undefined;
1212
+ }
1213
+ extensionCacheLocation = this.uriIdentityService.extUri.joinPath(environment.globalStorageHome, extension.identifier.id.toLowerCase());
1214
+ }
1215
+ return extensionCacheLocation;
1216
+ }
1217
+ renderMarketplaceInfo(container, extension) {
1218
+ const gallery = extension.gallery;
1219
+ const moreInfoContainer = append(container, $(".more-info-container.additional-details-element"));
1220
+ append(
1221
+ moreInfoContainer,
1222
+ $(".additional-details-title", undefined, ( localize(9411, "Marketplace")))
1223
+ );
1224
+ const moreInfo = append(moreInfoContainer, $(".more-info"));
1225
+ if (gallery) {
1226
+ if (!extension.local) {
1227
+ append(moreInfo, $(
1228
+ ".more-info-entry",
1229
+ undefined,
1230
+ $("div.more-info-entry-name", undefined, ( localize(9401, "Identifier"))),
1231
+ $("code", undefined, extension.identifier.id)
1232
+ ));
1233
+ append(moreInfo, $(
1234
+ ".more-info-entry",
1235
+ undefined,
1236
+ $("div.more-info-entry-name", undefined, ( localize(9402, "Version"))),
1237
+ $("code", undefined, gallery.version)
1238
+ ));
1239
+ }
1240
+ append(moreInfo, $(
1241
+ ".more-info-entry",
1242
+ undefined,
1243
+ $("div.more-info-entry-name", undefined, ( localize(9412, "Published"))),
1244
+ $("div", {
1245
+ "title": ( ( new Date(gallery.releaseDate)).toString())
1246
+ }, fromNow(gallery.releaseDate, true, true, true))
1247
+ ), $(
1248
+ ".more-info-entry",
1249
+ undefined,
1250
+ $("div.more-info-entry-name", undefined, ( localize(9413, "Last Released"))),
1251
+ $("div", {
1252
+ "title": ( ( new Date(gallery.lastUpdated)).toString())
1253
+ }, fromNow(gallery.lastUpdated, true, true, true))
1254
+ ));
1255
+ }
1256
+ }
1257
+ };
1258
+ AdditionalDetailsWidget = ( __decorate([( __param(2, IHoverService)), ( __param(3, IOpenerService)), ( __param(4, IUserDataProfilesService)), ( __param(5, IRemoteAgentService)), ( __param(6, IFileService)), ( __param(7, IUriIdentityService)), ( __param(8, IExtensionsWorkbenchService)), ( __param(9, IExtensionGalleryManifestService))], AdditionalDetailsWidget));
1259
+ const contextKeyExpr = ( ContextKeyExpr.and(( ContextKeyExpr.equals("activeEditor", ExtensionEditor.ID)), ( EditorContextKeys.focus.toNegated())));
1260
+ registerAction2(class ShowExtensionEditorFindAction extends Action2 {
1261
+ constructor() {
1262
+ super({
1263
+ id: "editor.action.extensioneditor.showfind",
1264
+ title: ( localize(9414, "Find")),
1265
+ keybinding: {
1266
+ when: contextKeyExpr,
1267
+ weight: KeybindingWeight.EditorContrib,
1268
+ primary: KeyMod$1.CtrlCmd | KeyCode.KeyF
1269
+ }
1270
+ });
1271
+ }
1272
+ run(accessor) {
1273
+ const extensionEditor = getExtensionEditor(accessor);
1274
+ extensionEditor?.showFind();
1275
+ }
1276
+ });
1277
+ registerAction2(class StartExtensionEditorFindNextAction extends Action2 {
1278
+ constructor() {
1279
+ super({
1280
+ id: "editor.action.extensioneditor.findNext",
1281
+ title: ( localize(9415, "Find Next")),
1282
+ keybinding: {
1283
+ when: ( ContextKeyExpr.and(contextKeyExpr, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_FOCUSED)),
1284
+ primary: KeyCode.Enter,
1285
+ weight: KeybindingWeight.EditorContrib
1286
+ }
1287
+ });
1288
+ }
1289
+ run(accessor) {
1290
+ const extensionEditor = getExtensionEditor(accessor);
1291
+ extensionEditor?.runFindAction(false);
1292
+ }
1293
+ });
1294
+ registerAction2(class StartExtensionEditorFindPreviousAction extends Action2 {
1295
+ constructor() {
1296
+ super({
1297
+ id: "editor.action.extensioneditor.findPrevious",
1298
+ title: ( localize(9416, "Find Previous")),
1299
+ keybinding: {
1300
+ when: ( ContextKeyExpr.and(contextKeyExpr, KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_FOCUSED)),
1301
+ primary: KeyMod$1.Shift | KeyCode.Enter,
1302
+ weight: KeybindingWeight.EditorContrib
1303
+ }
1304
+ });
1305
+ }
1306
+ run(accessor) {
1307
+ const extensionEditor = getExtensionEditor(accessor);
1308
+ extensionEditor?.runFindAction(true);
1309
+ }
1310
+ });
1311
+ registerThemingParticipant((theme, collector) => {
1312
+ const link = theme.getColor(textLinkForeground);
1313
+ if (link) {
1314
+ collector.addRule(
1315
+ `.monaco-workbench .extension-editor .content .details .additional-details-container .resources-container a.resource { color: ${link}; }`
1316
+ );
1317
+ collector.addRule(
1318
+ `.monaco-workbench .extension-editor .content .feature-contributions a { color: ${link}; }`
1319
+ );
1320
+ }
1321
+ const activeLink = theme.getColor(textLinkActiveForeground);
1322
+ if (activeLink) {
1323
+ collector.addRule(
1324
+ `.monaco-workbench .extension-editor .content .details .additional-details-container .resources-container a.resource:hover,
1325
+ .monaco-workbench .extension-editor .content .details .additional-details-container .resources-container a.resource:active { color: ${activeLink}; }`
1326
+ );
1327
+ collector.addRule(
1328
+ `.monaco-workbench .extension-editor .content .feature-contributions a:hover,
1329
+ .monaco-workbench .extension-editor .content .feature-contributions a:active { color: ${activeLink}; }`
1330
+ );
1331
+ }
1332
+ const buttonHoverBackgroundColor = theme.getColor(buttonHoverBackground);
1333
+ if (buttonHoverBackgroundColor) {
1334
+ collector.addRule(
1335
+ `.monaco-workbench .extension-editor .content > .details > .additional-details-container .categories-container > .categories > .category.clickable:hover { background-color: ${buttonHoverBackgroundColor}; border-color: ${buttonHoverBackgroundColor}; }`
1336
+ );
1337
+ }
1338
+ const buttonForegroundColor = theme.getColor(buttonForeground);
1339
+ if (buttonForegroundColor) {
1340
+ collector.addRule(
1341
+ `.monaco-workbench .extension-editor .content > .details > .additional-details-container .categories-container > .categories > .category.clickable:hover { color: ${buttonForegroundColor}; }`
1342
+ );
1343
+ }
1344
+ });
1345
+ function getExtensionEditor(accessor) {
1346
+ const activeEditorPane = accessor.get(IEditorService).activeEditorPane;
1347
+ if (activeEditorPane instanceof ExtensionEditor) {
1348
+ return activeEditorPane;
1349
+ }
1350
+ return null;
1351
+ }
1352
+
1353
+ export { ExtensionEditor };