monaco-editor 0.56.0-dev-20260119 → 0.56.0-dev-20260121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dev/vs/basic-languages/monaco.contribution.js +18 -18
  2. package/dev/vs/{cssMode-VP5J4n2d.js → cssMode-B0VkNrib.js} +1 -1
  3. package/dev/vs/editor/editor.main.css +42 -25
  4. package/dev/vs/editor/editor.main.js +1 -1
  5. package/dev/vs/{editor-ML6zs6Go.js → editor-CR18QzPP.js} +633 -162
  6. package/dev/vs/editor.js +1 -1
  7. package/dev/vs/{freemarker2-DOuHb9T9.js → freemarker2-Byr9HmH9.js} +1 -1
  8. package/dev/vs/{handlebars-CEHZxVsE.js → handlebars-BEVXeROF.js} +1 -1
  9. package/dev/vs/{html-CHMe_cBk.js → html-CetHjWIf.js} +1 -1
  10. package/dev/vs/{htmlMode-D7MQf6Yp.js → htmlMode-BNKYUVNo.js} +1 -1
  11. package/dev/vs/{index-KO0Jv4kb.js → index-g_7JbDIY.js} +1 -1
  12. package/dev/vs/index.js +1 -1
  13. package/dev/vs/{javascript-hfXEMgFg.js → javascript-BEgEU725.js} +1 -1
  14. package/dev/vs/{jsonMode-Dp9qexJG.js → jsonMode-CT2UkfFE.js} +1 -1
  15. package/dev/vs/language/css/monaco.contribution.js +1 -1
  16. package/dev/vs/language/html/monaco.contribution.js +1 -1
  17. package/dev/vs/language/json/monaco.contribution.js +1 -1
  18. package/dev/vs/language/typescript/monaco.contribution.js +1 -1
  19. package/dev/vs/{liquid-C5xy2cvN.js → liquid-D-aiCb1P.js} +1 -1
  20. package/dev/vs/{lspLanguageFeatures-D6ykJL1B.js → lspLanguageFeatures-CE9Occyu.js} +1 -1
  21. package/dev/vs/{mdx-DTsW_-Y_.js → mdx-DchJ8pbq.js} +1 -1
  22. package/dev/vs/{monaco.contribution-DuzmV_VZ.js → monaco.contribution-CHqb1dWh.js} +2 -2
  23. package/dev/vs/{monaco.contribution-t7Hz4wVA.js → monaco.contribution-CVBrIlxn.js} +2 -2
  24. package/dev/vs/{monaco.contribution-CcoogmES.js → monaco.contribution-CZxuzvA9.js} +2 -2
  25. package/dev/vs/{monaco.contribution-CQ8dNY-Q.js → monaco.contribution-Cw4OdERZ.js} +2 -2
  26. package/dev/vs/nls/lang/cs.js +1 -1
  27. package/dev/vs/nls/lang/de.js +1 -1
  28. package/dev/vs/nls/lang/es.js +1 -1
  29. package/dev/vs/nls/lang/fr.js +1 -1
  30. package/dev/vs/nls/lang/it.js +1 -1
  31. package/dev/vs/nls/lang/ja.js +1 -1
  32. package/dev/vs/nls/lang/ko.js +1 -1
  33. package/dev/vs/nls/lang/pl.js +1 -1
  34. package/dev/vs/nls/lang/pt-br.js +1 -1
  35. package/dev/vs/nls/lang/ru.js +1 -1
  36. package/dev/vs/nls/lang/tr.js +1 -1
  37. package/dev/vs/nls/lang/zh-cn.js +1 -1
  38. package/dev/vs/nls/lang/zh-tw.js +1 -1
  39. package/dev/vs/{python-1ZtmJ8bh.js → python-BCOSaCC8.js} +1 -1
  40. package/dev/vs/{razor-D7Pdon_S.js → razor-BM2tZCwj.js} +1 -1
  41. package/dev/vs/{toggleHighContrast-Btd2ryZF.js → toggleHighContrast-CLgtrrIB.js} +148 -315
  42. package/dev/vs/{tsMode-Dy3ckMs8.js → tsMode-jpkv3SbL.js} +1 -1
  43. package/dev/vs/{typescript-BBL8N09V.js → typescript-f8pt88eA.js} +1 -1
  44. package/dev/vs/{workers-B9Ao1ciR.js → workers-zrUx_2Gw.js} +1 -1
  45. package/dev/vs/{xml-7BH7GgP4.js → xml-CmSjtiR0.js} +1 -1
  46. package/dev/vs/{yaml-DvwGvgS8.js → yaml-PRriLGdw.js} +1 -1
  47. package/esm/vs/base/browser/markdownRenderer.js +1 -0
  48. package/esm/vs/base/browser/ui/actionbar/actionViewItems.js +4 -1
  49. package/esm/vs/base/browser/ui/actionbar/actionbar.css +8 -5
  50. package/esm/vs/base/browser/ui/contextview/contextview.js +1 -1
  51. package/esm/vs/base/browser/ui/list/list.js +2 -1
  52. package/esm/vs/base/browser/ui/list/listWidget.js +62 -5
  53. package/esm/vs/base/browser/ui/tree/abstractTree.js +4 -1
  54. package/esm/vs/base/browser/ui/tree/asyncDataTree.js +4 -1
  55. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +81 -35
  56. package/esm/vs/editor/browser/controller/editContext/editContext.js +11 -0
  57. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +38 -18
  58. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +4 -0
  59. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +39 -16
  60. package/esm/vs/editor/browser/dataTransfer.js +1 -1
  61. package/esm/vs/editor/browser/view.js +21 -1
  62. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +18 -0
  63. package/esm/vs/editor/common/model/bracketPairsTextModelPart/colorizedBracketPairsDecorationProvider.js +3 -3
  64. package/esm/vs/editor/common/model/textModel.js +7 -5
  65. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +21 -17
  66. package/esm/vs/editor/common/viewModel/viewModelDecorations.js +11 -4
  67. package/esm/vs/editor/common/viewModel/viewModelImpl.js +25 -14
  68. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +3 -3
  69. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +28 -64
  70. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +27 -20
  71. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js +37 -9
  72. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +2 -2
  73. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.css +7 -0
  74. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +22 -3
  75. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +20 -14
  76. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +1 -0
  77. package/esm/vs/editor/editor.api.d.ts +5 -1
  78. package/esm/vs/nls/lang/cs.js +1 -1
  79. package/esm/vs/nls/lang/de.js +1 -1
  80. package/esm/vs/nls/lang/es.js +1 -1
  81. package/esm/vs/nls/lang/fr.js +1 -1
  82. package/esm/vs/nls/lang/it.js +1 -1
  83. package/esm/vs/nls/lang/ja.js +1 -1
  84. package/esm/vs/nls/lang/ko.js +1 -1
  85. package/esm/vs/nls/lang/pl.js +1 -1
  86. package/esm/vs/nls/lang/pt-br.js +1 -1
  87. package/esm/vs/nls/lang/ru.js +1 -1
  88. package/esm/vs/nls/lang/tr.js +1 -1
  89. package/esm/vs/nls/lang/zh-cn.js +1 -1
  90. package/esm/vs/nls/lang/zh-tw.js +1 -1
  91. package/esm/vs/platform/actionWidget/browser/actionList.js +46 -6
  92. package/esm/vs/platform/actionWidget/browser/actionWidget.js +9 -2
  93. package/esm/vs/platform/actions/common/actions.js +2 -1
  94. package/esm/vs/platform/hover/browser/hoverService.js +1 -0
  95. package/esm/vs/platform/product/common/product.js +16 -1
  96. package/min/vs/basic-languages/monaco.contribution.js +1 -1
  97. package/min/vs/{cssMode-CxJ_Cr_Z.js → cssMode-CheCY05R.js} +1 -1
  98. package/min/vs/editor/editor.main.css +1 -1
  99. package/min/vs/editor/editor.main.js +1 -1
  100. package/min/vs/{editor-CyVlw8K4.js → editor-DxYWA3-X.js} +112 -110
  101. package/min/vs/editor.js +1 -1
  102. package/min/vs/{freemarker2-CJcSu3nc.js → freemarker2-C7J7V1Hp.js} +1 -1
  103. package/min/vs/{handlebars-DPLjS6oj.js → handlebars-DsCar5Ix.js} +1 -1
  104. package/min/vs/{html-DUmbFRY-.js → html-BGLIaUZV.js} +1 -1
  105. package/min/vs/{htmlMode-DfUvYWkE.js → htmlMode-BB6WOoy3.js} +1 -1
  106. package/min/vs/{index-DOycyDud.js → index-BdR0nSqf.js} +1 -1
  107. package/min/vs/index.js +1 -1
  108. package/min/vs/{javascript-CQpB78Gy.js → javascript-CXE3i1eX.js} +1 -1
  109. package/min/vs/{jsonMode-B1E1R3KS.js → jsonMode-rtaE9alu.js} +1 -1
  110. package/min/vs/language/css/monaco.contribution.js +1 -1
  111. package/min/vs/language/html/monaco.contribution.js +1 -1
  112. package/min/vs/language/json/monaco.contribution.js +1 -1
  113. package/min/vs/language/typescript/monaco.contribution.js +1 -1
  114. package/min/vs/{liquid-Bh_nhvai.js → liquid-CEdn0ovR.js} +1 -1
  115. package/min/vs/{lspLanguageFeatures-CAWBopti.js → lspLanguageFeatures-CRAjJmzF.js} +1 -1
  116. package/min/vs/{mdx-CvpAYI3X.js → mdx-DLDMIqnu.js} +1 -1
  117. package/min/vs/{monaco.contribution-QIm8iN-Y.js → monaco.contribution-BrRAk-VA.js} +1 -1
  118. package/min/vs/{monaco.contribution-C3jTRlbI.js → monaco.contribution-C67XgReK.js} +1 -1
  119. package/min/vs/{monaco.contribution-Cmckd8EG.js → monaco.contribution-CYT-Sx3l.js} +1 -1
  120. package/min/vs/{monaco.contribution-6Rc9eWJ0.js → monaco.contribution-DjiQkKLa.js} +1 -1
  121. package/min/vs/nls/lang/cs.js +1 -1
  122. package/min/vs/nls/lang/de.js +1 -1
  123. package/min/vs/nls/lang/es.js +1 -1
  124. package/min/vs/nls/lang/fr.js +1 -1
  125. package/min/vs/nls/lang/it.js +1 -1
  126. package/min/vs/nls/lang/ja.js +1 -1
  127. package/min/vs/nls/lang/ko.js +1 -1
  128. package/min/vs/nls/lang/pl.js +1 -1
  129. package/min/vs/nls/lang/pt-br.js +1 -1
  130. package/min/vs/nls/lang/ru.js +1 -1
  131. package/min/vs/nls/lang/tr.js +1 -1
  132. package/min/vs/nls/lang/zh-cn.js +1 -1
  133. package/min/vs/nls/lang/zh-tw.js +1 -1
  134. package/min/vs/{python-BuY3uazV.js → python-CKbl_I3e.js} +1 -1
  135. package/min/vs/{razor-DQBMGsJX.js → razor--RjiPxbd.js} +1 -1
  136. package/min/vs/{toggleHighContrast-BTse4XBl.js → toggleHighContrast-BKDMxisH.js} +31 -33
  137. package/min/vs/{tsMode-C8sInOMc.js → tsMode-C48d5M22.js} +1 -1
  138. package/min/vs/{typescript-DMigl3F4.js → typescript-e7oUhPyX.js} +1 -1
  139. package/min/vs/{workers-BznOw4bL.js → workers-CtpYUoCo.js} +1 -1
  140. package/min/vs/{xml-C2bHWkWJ.js → xml-tOyfgws7.js} +1 -1
  141. package/min/vs/{yaml-gtjQmyMa.js → yaml-Cmf9NYDf.js} +1 -1
  142. package/monaco.d.ts +5 -1
  143. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-"], (function(require, exports, editorWorkerHost) {
1
+ define("vs/editor-CR18QzPP", ["require", "exports", "./editorWorkerHost--0eDLpc-"], (function(require, exports, editorWorkerHost) {
2
2
  "use strict";
3
3
  var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
4
4
  const EditorZoom = new class {
@@ -10710,10 +10710,10 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
10710
10710
  }
10711
10711
  }
10712
10712
  const KeybindingsRegistry = new KeybindingsRegistryImpl();
10713
- const Extensions$8 = {
10713
+ const Extensions$9 = {
10714
10714
  EditorModes: "platform.keybindingsRegistry"
10715
10715
  };
10716
- Registry.add(Extensions$8.EditorModes, KeybindingsRegistry);
10716
+ Registry.add(Extensions$9.EditorModes, KeybindingsRegistry);
10717
10717
  function sorter(a, b) {
10718
10718
  if (a.weight1 !== b.weight1) {
10719
10719
  return a.weight1 - b.weight1;
@@ -10971,6 +10971,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
10971
10971
  _MenuId.ChatToolOutputResourceContext = new _MenuId("ChatToolOutputResourceContext");
10972
10972
  _MenuId.ChatMultiDiffContext = new _MenuId("ChatMultiDiffContext");
10973
10973
  _MenuId.ChatConfirmationMenu = new _MenuId("ChatConfirmationMenu");
10974
+ _MenuId.ChatEditorInlineGutter = new _MenuId("ChatEditorInlineGutter");
10974
10975
  _MenuId.ChatEditorInlineExecute = new _MenuId("ChatEditorInputExecute");
10975
10976
  _MenuId.ChatEditorInlineInputSide = new _MenuId("ChatEditorInputSide");
10976
10977
  _MenuId.AccessibleView = new _MenuId("AccessibleView");
@@ -10987,7 +10988,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
10987
10988
  _MenuId.AgentSessionsToolbar = new _MenuId("AgentSessionsToolbar");
10988
10989
  _MenuId.AgentSessionItemToolbar = new _MenuId("AgentSessionItemToolbar");
10989
10990
  _MenuId.AgentSessionSectionToolbar = new _MenuId("AgentSessionSectionToolbar");
10990
- _MenuId.AgentsControlMenu = new _MenuId("AgentsControlMenu");
10991
+ _MenuId.AgentsTitleBarControlMenu = new _MenuId("AgentsTitleBarControlMenu");
10991
10992
  _MenuId.ChatViewSessionTitleNavigationToolbar = new _MenuId("ChatViewSessionTitleNavigationToolbar");
10992
10993
  _MenuId.ChatViewSessionTitleToolbar = new _MenuId("ChatViewSessionTitleToolbar");
10993
10994
  let MenuId = _MenuId;
@@ -12095,7 +12096,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
12095
12096
  }
12096
12097
  EditorExtensionsRegistry2.getDiffEditorContributions = getDiffEditorContributions;
12097
12098
  })(EditorExtensionsRegistry || (EditorExtensionsRegistry = {}));
12098
- const Extensions$7 = {
12099
+ const Extensions$8 = {
12099
12100
  EditorCommonContributions: "editor.contributions"
12100
12101
  };
12101
12102
  const _EditorContributionRegistry = class _EditorContributionRegistry {
@@ -12131,7 +12132,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
12131
12132
  };
12132
12133
  _EditorContributionRegistry.INSTANCE = new _EditorContributionRegistry();
12133
12134
  let EditorContributionRegistry = _EditorContributionRegistry;
12134
- Registry.add(Extensions$7.EditorCommonContributions, EditorContributionRegistry.INSTANCE);
12135
+ Registry.add(Extensions$8.EditorCommonContributions, EditorContributionRegistry.INSTANCE);
12135
12136
  function registerCommand$2(command) {
12136
12137
  command.register();
12137
12138
  return command;
@@ -13093,7 +13094,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
13093
13094
  uriList: "text/uri-list",
13094
13095
  html: "text/html"
13095
13096
  });
13096
- const Extensions$6 = {
13097
+ const Extensions$7 = {
13097
13098
  JSONContribution: "base.contributions.json"
13098
13099
  };
13099
13100
  function normalizeId(id) {
@@ -13124,7 +13125,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
13124
13125
  }
13125
13126
  }
13126
13127
  const jsonContributionRegistry = new JSONContributionRegistry();
13127
- Registry.add(Extensions$6.JSONContribution, jsonContributionRegistry);
13128
+ Registry.add(Extensions$7.JSONContribution, jsonContributionRegistry);
13128
13129
  let product;
13129
13130
  const vscodeGlobal = globalThis.vscode;
13130
13131
  if (typeof vscodeGlobal !== "undefined" && typeof vscodeGlobal.context !== "undefined") {
@@ -13165,16 +13166,31 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
13165
13166
  reportIssueUrl: "https://github.com/microsoft/vscode/issues/new",
13166
13167
  licenseName: "MIT",
13167
13168
  licenseUrl: "https://github.com/microsoft/vscode/blob/main/LICENSE.txt",
13168
- serverLicenseUrl: "https://github.com/microsoft/vscode/blob/main/LICENSE.txt"
13169
+ serverLicenseUrl: "https://github.com/microsoft/vscode/blob/main/LICENSE.txt",
13170
+ defaultChatAgent: {
13171
+ extensionId: "GitHub.copilot",
13172
+ chatExtensionId: "GitHub.copilot-chat",
13173
+ provider: {
13174
+ default: {
13175
+ id: "github",
13176
+ name: "GitHub"
13177
+ },
13178
+ enterprise: {
13179
+ id: "github-enterprise",
13180
+ name: "GitHub Enterprise"
13181
+ }
13182
+ },
13183
+ providerScopes: []
13184
+ }
13169
13185
  });
13170
13186
  }
13171
13187
  }
13172
13188
  const product$1 = product;
13173
- const Extensions$5 = {
13189
+ const Extensions$6 = {
13174
13190
  Configuration: "base.contributions.configuration"
13175
13191
  };
13176
13192
  const resourceLanguageSettingsSchemaId = "vscode://schemas/settings/resourceLanguage";
13177
- const contributionRegistry = Registry.as(Extensions$6.JSONContribution);
13193
+ const contributionRegistry = Registry.as(Extensions$7.JSONContribution);
13178
13194
  class ConfigurationRegistry extends editorWorkerHost.Disposable {
13179
13195
  constructor() {
13180
13196
  super();
@@ -13514,7 +13530,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
13514
13530
  }
13515
13531
  }
13516
13532
  const configurationRegistry$2 = new ConfigurationRegistry();
13517
- Registry.add(Extensions$5.Configuration, configurationRegistry$2);
13533
+ Registry.add(Extensions$6.Configuration, configurationRegistry$2);
13518
13534
  function validateProperty(property, schema, extensionId) {
13519
13535
  if (!property.trim()) {
13520
13536
  return editorWorkerHost.localize(1685, "Cannot register an empty property");
@@ -13531,7 +13547,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
13531
13547
  return null;
13532
13548
  }
13533
13549
  const EXTENSION_UNIFICATION_EXTENSION_IDS = new Set(product$1.defaultChatAgent ? [product$1.defaultChatAgent.extensionId, product$1.defaultChatAgent.chatExtensionId].map((id) => id.toLowerCase()) : []);
13534
- const Extensions$4 = {
13550
+ const Extensions$5 = {
13535
13551
  ModesRegistry: "editor.modesRegistry"
13536
13552
  };
13537
13553
  class EditorModesRegistry extends editorWorkerHost.Disposable {
@@ -13560,7 +13576,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
13560
13576
  }
13561
13577
  }
13562
13578
  const ModesRegistry = new EditorModesRegistry();
13563
- Registry.add(Extensions$4.ModesRegistry, ModesRegistry);
13579
+ Registry.add(Extensions$5.ModesRegistry, ModesRegistry);
13564
13580
  const PLAINTEXT_LANGUAGE_ID = "plaintext";
13565
13581
  const PLAINTEXT_EXTENSION = ".txt";
13566
13582
  ModesRegistry.registerLanguage({
@@ -13569,7 +13585,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
13569
13585
  aliases: [editorWorkerHost.localize(792, "Plain Text"), "text"],
13570
13586
  mimetypes: [Mimes.text]
13571
13587
  });
13572
- Registry.as(Extensions$5.Configuration).registerDefaultConfigurations([{
13588
+ Registry.as(Extensions$6.Configuration).registerDefaultConfigurations([{
13573
13589
  overrides: {
13574
13590
  "[plaintext]": {
13575
13591
  "editor.unicodeHighlight.ambiguousCharacters": false,
@@ -17954,7 +17970,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
17954
17970
  function isColorDefaults(value) {
17955
17971
  return value !== null && typeof value === "object" && "light" in value && "dark" in value;
17956
17972
  }
17957
- const Extensions$3 = {
17973
+ const Extensions$4 = {
17958
17974
  ColorContribution: "base.contributions.colors"
17959
17975
  };
17960
17976
  const DEFAULT_COLOR_CONFIG_VALUE = "default";
@@ -18017,7 +18033,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
18017
18033
  }
18018
18034
  }
18019
18035
  const colorRegistry$1 = new ColorRegistry();
18020
- Registry.add(Extensions$3.ColorContribution, colorRegistry$1);
18036
+ Registry.add(Extensions$4.ColorContribution, colorRegistry$1);
18021
18037
  function registerColor(id, defaults, description, needsTransparency, deprecationMessage) {
18022
18038
  return colorRegistry$1.registerColor(id, defaults, description, needsTransparency, deprecationMessage);
18023
18039
  }
@@ -18100,7 +18116,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
18100
18116
  return void 0;
18101
18117
  }
18102
18118
  const workbenchColorsSchemaId = "vscode://schemas/workbench-colors";
18103
- const schemaRegistry$1 = Registry.as(Extensions$6.JSONContribution);
18119
+ const schemaRegistry$1 = Registry.as(Extensions$7.JSONContribution);
18104
18120
  schemaRegistry$1.registerSchema(workbenchColorsSchemaId, colorRegistry$1.getColorSchema());
18105
18121
  const delayer$1 = new editorWorkerHost.RunOnceScheduler(() => schemaRegistry$1.notifySchemaChanged(workbenchColorsSchemaId), 200);
18106
18122
  colorRegistry$1.onDidChangeSchema(() => {
@@ -23183,56 +23199,278 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
23183
23199
  function prefixedUuid(namespace) {
23184
23200
  return `${namespace}-${generateUuid()}`;
23185
23201
  }
23186
- function ensureClipboardGetsEditorSelection(e, context, logService, isFirefox2) {
23187
- const viewModel = context.viewModel;
23188
- const options = context.configuration.options;
23189
- let id = void 0;
23190
- if (logService.getLevel() === exports.LogLevel.Trace) {
23191
- id = generateUuid();
23202
+ const DataTransfers = {
23203
+ /**
23204
+ * Application specific resource transfer type
23205
+ */
23206
+ RESOURCES: "ResourceURLs",
23207
+ /**
23208
+ * Typically transfer type for copy/paste transfers.
23209
+ */
23210
+ TEXT: Mimes.text,
23211
+ /**
23212
+ * Internal type used to pass around text/uri-list data.
23213
+ *
23214
+ * This is needed to work around https://bugs.chromium.org/p/chromium/issues/detail?id=239745.
23215
+ */
23216
+ INTERNAL_URI_LIST: "application/vnd.code.uri-list"
23217
+ };
23218
+ function createStringDataTransferItem(stringOrPromise, id) {
23219
+ return {
23220
+ id,
23221
+ asString: async () => stringOrPromise,
23222
+ asFile: () => void 0,
23223
+ value: typeof stringOrPromise === "string" ? stringOrPromise : void 0
23224
+ };
23225
+ }
23226
+ function createFileDataTransferItem(fileName, uri, data, id) {
23227
+ const file = { id: generateUuid(), name: fileName, uri, data };
23228
+ return {
23229
+ id,
23230
+ asString: async () => "",
23231
+ asFile: () => file,
23232
+ value: void 0
23233
+ };
23234
+ }
23235
+ class VSDataTransfer {
23236
+ constructor() {
23237
+ this._entries = /* @__PURE__ */ new Map();
23192
23238
  }
23193
- const { dataToCopy, storedMetadata } = generateDataToCopyAndStoreInMemory(viewModel, options, id, isFirefox2);
23194
- CopyOptions.electronBugWorkaroundCopyEventHasFired = true;
23195
- e.preventDefault();
23196
- if (e.clipboardData) {
23197
- ClipboardEventUtils.setTextData(e.clipboardData, dataToCopy.text, dataToCopy.html, storedMetadata);
23239
+ get size() {
23240
+ let size2 = 0;
23241
+ for (const _ of this._entries) {
23242
+ size2++;
23243
+ }
23244
+ return size2;
23245
+ }
23246
+ has(mimeType) {
23247
+ return this._entries.has(this.toKey(mimeType));
23248
+ }
23249
+ matches(pattern) {
23250
+ const mimes = [...this._entries.keys()];
23251
+ if (editorWorkerHost.Iterable.some(this, ([_, item]) => item.asFile())) {
23252
+ mimes.push("files");
23253
+ }
23254
+ return matchesMimeType_normalized(normalizeMimeType(pattern), mimes);
23198
23255
  }
23199
- logService.trace("ensureClipboardGetsEditorSelection with id : ", id, " with text.length: ", dataToCopy.text.length);
23256
+ get(mimeType) {
23257
+ return this._entries.get(this.toKey(mimeType))?.[0];
23258
+ }
23259
+ /**
23260
+ * Add a new entry to this data transfer.
23261
+ *
23262
+ * This does not replace existing entries for `mimeType`.
23263
+ */
23264
+ append(mimeType, value) {
23265
+ const existing = this._entries.get(mimeType);
23266
+ if (existing) {
23267
+ existing.push(value);
23268
+ } else {
23269
+ this._entries.set(this.toKey(mimeType), [value]);
23270
+ }
23271
+ }
23272
+ /**
23273
+ * Set the entry for a given mime type.
23274
+ *
23275
+ * This replaces all existing entries for `mimeType`.
23276
+ */
23277
+ replace(mimeType, value) {
23278
+ this._entries.set(this.toKey(mimeType), [value]);
23279
+ }
23280
+ /**
23281
+ * Remove all entries for `mimeType`.
23282
+ */
23283
+ delete(mimeType) {
23284
+ this._entries.delete(this.toKey(mimeType));
23285
+ }
23286
+ /**
23287
+ * Iterate over all `[mime, item]` pairs in this data transfer.
23288
+ *
23289
+ * There may be multiple entries for each mime type.
23290
+ */
23291
+ *[Symbol.iterator]() {
23292
+ for (const [mine, items] of this._entries) {
23293
+ for (const item of items) {
23294
+ yield [mine, item];
23295
+ }
23296
+ }
23297
+ }
23298
+ toKey(mimeType) {
23299
+ return normalizeMimeType(mimeType);
23300
+ }
23301
+ }
23302
+ function normalizeMimeType(mimeType) {
23303
+ return mimeType.toLowerCase();
23200
23304
  }
23201
- function generateDataToCopyAndStoreInMemory(viewModel, options, id, isFirefox2) {
23202
- const emptySelectionClipboard = options.get(
23305
+ function matchesMimeType(pattern, mimeTypes) {
23306
+ return matchesMimeType_normalized(normalizeMimeType(pattern), mimeTypes.map(normalizeMimeType));
23307
+ }
23308
+ function matchesMimeType_normalized(normalizedPattern, normalizedMimeTypes) {
23309
+ if (normalizedPattern === "*/*") {
23310
+ return normalizedMimeTypes.length > 0;
23311
+ }
23312
+ if (normalizedMimeTypes.includes(normalizedPattern)) {
23313
+ return true;
23314
+ }
23315
+ const wildcard = normalizedPattern.match(/^([a-z]+)\/([a-z]+|\*)$/i);
23316
+ if (!wildcard) {
23317
+ return false;
23318
+ }
23319
+ const [_, type, subtype] = wildcard;
23320
+ if (subtype === "*") {
23321
+ return normalizedMimeTypes.some((mime) => mime.startsWith(type + "/"));
23322
+ }
23323
+ return false;
23324
+ }
23325
+ const UriList = Object.freeze({
23326
+ // http://amundsen.com/hypermedia/urilist/
23327
+ create: (entries2) => {
23328
+ return editorWorkerHost.distinct(entries2.map((x) => x.toString())).join("\r\n");
23329
+ },
23330
+ split: (str) => {
23331
+ return str.split("\r\n");
23332
+ },
23333
+ parse: (str) => {
23334
+ return UriList.split(str).filter((value) => !value.startsWith("#"));
23335
+ }
23336
+ });
23337
+ const CodeDataTransfers = {
23338
+ EDITORS: "CodeEditors",
23339
+ FILES: "CodeFiles"
23340
+ };
23341
+ class DragAndDropContributionRegistry {
23342
+ }
23343
+ const Extensions$3 = {
23344
+ DragAndDropContribution: "workbench.contributions.dragAndDrop"
23345
+ };
23346
+ Registry.add(Extensions$3.DragAndDropContribution, new DragAndDropContributionRegistry());
23347
+ const _LocalSelectionTransfer = class _LocalSelectionTransfer {
23348
+ constructor() {
23349
+ }
23350
+ static getInstance() {
23351
+ return _LocalSelectionTransfer.INSTANCE;
23352
+ }
23353
+ hasData(proto) {
23354
+ return proto && proto === this.proto;
23355
+ }
23356
+ getData(proto) {
23357
+ if (this.hasData(proto)) {
23358
+ return this.data;
23359
+ }
23360
+ return void 0;
23361
+ }
23362
+ };
23363
+ _LocalSelectionTransfer.INSTANCE = new _LocalSelectionTransfer();
23364
+ let LocalSelectionTransfer = _LocalSelectionTransfer;
23365
+ function getPathForFile(file) {
23366
+ if (editorWorkerHost.isNative && typeof globalThis.vscode?.webUtils?.getPathForFile === "function") {
23367
+ return globalThis.vscode?.webUtils?.getPathForFile(file);
23368
+ }
23369
+ return void 0;
23370
+ }
23371
+ function toVSDataTransfer(dataTransfer) {
23372
+ const vsDataTransfer = new VSDataTransfer();
23373
+ for (const item of dataTransfer.items) {
23374
+ const type = item.type;
23375
+ if (item.kind === "string") {
23376
+ const asStringValue = new Promise((resolve2) => item.getAsString(resolve2));
23377
+ vsDataTransfer.append(type, createStringDataTransferItem(asStringValue));
23378
+ } else if (item.kind === "file") {
23379
+ const file = item.getAsFile();
23380
+ if (file) {
23381
+ vsDataTransfer.append(type, createFileDataTransferItemFromFile(file));
23382
+ }
23383
+ }
23384
+ }
23385
+ return vsDataTransfer;
23386
+ }
23387
+ function createFileDataTransferItemFromFile(file) {
23388
+ const path = getPathForFile(file);
23389
+ const uri = path ? editorWorkerHost.URI.parse(path) : void 0;
23390
+ return createFileDataTransferItem(file.name, uri, async () => {
23391
+ return new Uint8Array(await file.arrayBuffer());
23392
+ });
23393
+ }
23394
+ const INTERNAL_DND_MIME_TYPES = Object.freeze([
23395
+ CodeDataTransfers.EDITORS,
23396
+ CodeDataTransfers.FILES,
23397
+ DataTransfers.RESOURCES,
23398
+ DataTransfers.INTERNAL_URI_LIST
23399
+ ]);
23400
+ function toExternalVSDataTransfer(sourceDataTransfer, overwriteUriList = false) {
23401
+ const vsDataTransfer = toVSDataTransfer(sourceDataTransfer);
23402
+ const uriList = vsDataTransfer.get(DataTransfers.INTERNAL_URI_LIST);
23403
+ if (uriList) {
23404
+ vsDataTransfer.replace(Mimes.uriList, uriList);
23405
+ } else {
23406
+ if (overwriteUriList || !vsDataTransfer.has(Mimes.uriList)) {
23407
+ const editorData = [];
23408
+ for (const item of sourceDataTransfer.items) {
23409
+ const file = item.getAsFile();
23410
+ if (file) {
23411
+ const path = getPathForFile(file);
23412
+ try {
23413
+ if (path) {
23414
+ editorData.push(editorWorkerHost.URI.file(path).toString());
23415
+ } else {
23416
+ editorData.push(editorWorkerHost.URI.parse(file.name, true).toString());
23417
+ }
23418
+ } catch {
23419
+ }
23420
+ }
23421
+ }
23422
+ if (editorData.length) {
23423
+ vsDataTransfer.replace(Mimes.uriList, createStringDataTransferItem(UriList.create(editorData)));
23424
+ }
23425
+ }
23426
+ }
23427
+ for (const internal of INTERNAL_DND_MIME_TYPES) {
23428
+ vsDataTransfer.delete(internal);
23429
+ }
23430
+ return vsDataTransfer;
23431
+ }
23432
+ function generateDataToCopyAndStoreInMemory(viewModel, id, isFirefox2) {
23433
+ const { dataToCopy, metadata } = generateDataToCopy(viewModel);
23434
+ storeMetadataInMemory(dataToCopy.text, metadata, isFirefox2);
23435
+ return { dataToCopy, metadata };
23436
+ }
23437
+ function storeMetadataInMemory(textToCopy, metadata, isFirefox2) {
23438
+ InMemoryClipboardMetadataManager.INSTANCE.set(
23439
+ // When writing "LINE\r\n" to the clipboard and then pasting,
23440
+ // Firefox pastes "LINE\n", so let's work around this quirk
23441
+ isFirefox2 ? textToCopy.replace(/\r\n/g, "\n") : textToCopy,
23442
+ metadata
23443
+ );
23444
+ }
23445
+ function generateDataToCopy(viewModel) {
23446
+ const emptySelectionClipboard = viewModel.getEditorOption(
23203
23447
  45
23204
23448
  /* EditorOption.emptySelectionClipboard */
23205
23449
  );
23206
- const copyWithSyntaxHighlighting = options.get(
23450
+ const copyWithSyntaxHighlighting = viewModel.getEditorOption(
23207
23451
  31
23208
23452
  /* EditorOption.copyWithSyntaxHighlighting */
23209
23453
  );
23210
23454
  const selections = viewModel.getCursorStates().map((cursorState) => cursorState.modelState.selection);
23211
23455
  const dataToCopy = getDataToCopy(viewModel, selections, emptySelectionClipboard, copyWithSyntaxHighlighting);
23212
- const storedMetadata = {
23456
+ const metadata = {
23213
23457
  version: 1,
23214
- id,
23458
+ id: generateUuid(),
23215
23459
  isFromEmptySelection: dataToCopy.isFromEmptySelection,
23216
23460
  multicursorText: dataToCopy.multicursorText,
23217
23461
  mode: dataToCopy.mode
23218
23462
  };
23219
- InMemoryClipboardMetadataManager.INSTANCE.set(
23220
- // When writing "LINE\r\n" to the clipboard and then pasting,
23221
- // Firefox pastes "LINE\n", so let's work around this quirk
23222
- isFirefox2 ? dataToCopy.text.replace(/\r\n/g, "\n") : dataToCopy.text,
23223
- storedMetadata
23224
- );
23225
- return { dataToCopy, storedMetadata };
23463
+ return { dataToCopy, metadata };
23226
23464
  }
23227
23465
  function getDataToCopy(viewModel, modelSelections, emptySelectionClipboard, copyWithSyntaxHighlighting) {
23228
- const rawTextToCopy = viewModel.getPlainTextToCopy(modelSelections, emptySelectionClipboard, editorWorkerHost.isWindows);
23466
+ const { sourceRanges, sourceText } = viewModel.getPlainTextToCopy(modelSelections, emptySelectionClipboard, editorWorkerHost.isWindows);
23229
23467
  const newLineCharacter = viewModel.model.getEOL();
23230
23468
  const isFromEmptySelection = emptySelectionClipboard && modelSelections.length === 1 && modelSelections[0].isEmpty();
23231
- const multicursorText = Array.isArray(rawTextToCopy) ? rawTextToCopy : null;
23232
- const text2 = Array.isArray(rawTextToCopy) ? rawTextToCopy.join(newLineCharacter) : rawTextToCopy;
23469
+ const multicursorText = Array.isArray(sourceText) ? sourceText : null;
23470
+ const text2 = Array.isArray(sourceText) ? sourceText.join(newLineCharacter) : sourceText;
23233
23471
  let html2 = void 0;
23234
23472
  let mode = null;
23235
- if (CopyOptions.forceCopyWithSyntaxHighlighting || copyWithSyntaxHighlighting && text2.length < 65536) {
23473
+ if (CopyOptions.forceCopyWithSyntaxHighlighting || copyWithSyntaxHighlighting && sourceText.length < 65536) {
23236
23474
  const richText = viewModel.getRichTextToCopy(modelSelections, emptySelectionClipboard);
23237
23475
  if (richText) {
23238
23476
  html2 = richText.html;
@@ -23241,6 +23479,7 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
23241
23479
  }
23242
23480
  const dataToCopy = {
23243
23481
  isFromEmptySelection,
23482
+ sourceRanges,
23244
23483
  multicursorText,
23245
23484
  text: text2,
23246
23485
  html: html2,
@@ -23297,6 +23536,62 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
23297
23536
  clipboardData.setData("vscode-editor-data", JSON.stringify(metadata));
23298
23537
  }
23299
23538
  };
23539
+ function createClipboardCopyEvent(e, isCut, context, logService, isFirefox2) {
23540
+ const { dataToCopy, metadata } = generateDataToCopy(context.viewModel);
23541
+ let handled = false;
23542
+ return {
23543
+ isCut,
23544
+ clipboardData: {
23545
+ setData: (type, value) => {
23546
+ e.clipboardData?.setData(type, value);
23547
+ }
23548
+ },
23549
+ dataToCopy,
23550
+ ensureClipboardGetsEditorData: () => {
23551
+ e.preventDefault();
23552
+ if (e.clipboardData) {
23553
+ ClipboardEventUtils.setTextData(e.clipboardData, dataToCopy.text, dataToCopy.html, metadata);
23554
+ }
23555
+ storeMetadataInMemory(dataToCopy.text, metadata, isFirefox2);
23556
+ logService.trace("ensureClipboardGetsEditorSelection with id : ", metadata.id, " with text.length: ", dataToCopy.text.length);
23557
+ },
23558
+ setHandled: () => {
23559
+ handled = true;
23560
+ e.preventDefault();
23561
+ e.stopImmediatePropagation();
23562
+ },
23563
+ get isHandled() {
23564
+ return handled;
23565
+ }
23566
+ };
23567
+ }
23568
+ function createClipboardPasteEvent(e) {
23569
+ let handled = false;
23570
+ let [text2, metadata] = e.clipboardData ? ClipboardEventUtils.getTextData(e.clipboardData) : ["", null];
23571
+ metadata = metadata || InMemoryClipboardMetadataManager.INSTANCE.get(text2);
23572
+ return {
23573
+ clipboardData: createReadableClipboardData(e.clipboardData),
23574
+ metadata,
23575
+ text: text2,
23576
+ toExternalVSDataTransfer: () => e.clipboardData ? toExternalVSDataTransfer(e.clipboardData) : void 0,
23577
+ browserEvent: e,
23578
+ setHandled: () => {
23579
+ handled = true;
23580
+ e.preventDefault();
23581
+ e.stopImmediatePropagation();
23582
+ },
23583
+ get isHandled() {
23584
+ return handled;
23585
+ }
23586
+ };
23587
+ }
23588
+ function createReadableClipboardData(dataTransfer) {
23589
+ return {
23590
+ types: Array.from(dataTransfer?.types ?? []),
23591
+ files: Array.prototype.slice.call(dataTransfer?.files ?? [], 0),
23592
+ getData: (type) => dataTransfer?.getData(type) ?? ""
23593
+ };
23594
+ }
23300
23595
  const _TextAreaState = class _TextAreaState {
23301
23596
  constructor(value, selectionStart, selectionEnd, selection, newlineCountBeforeSelection) {
23302
23597
  this.value = value;
@@ -23506,6 +23801,12 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
23506
23801
  this.onCut = this._onCut.event;
23507
23802
  this._onPaste = this._register(new editorWorkerHost.Emitter());
23508
23803
  this.onPaste = this._onPaste.event;
23804
+ this._onWillCopy = this._register(new editorWorkerHost.Emitter());
23805
+ this.onWillCopy = this._onWillCopy.event;
23806
+ this._onWillCut = this._register(new editorWorkerHost.Emitter());
23807
+ this.onWillCut = this._onWillCut.event;
23808
+ this._onWillPaste = this._register(new editorWorkerHost.Emitter());
23809
+ this.onWillPaste = this._onWillPaste.event;
23509
23810
  this._onType = this._register(new editorWorkerHost.Emitter());
23510
23811
  this.onType = this._onType.event;
23511
23812
  this._onCompositionStart = this._register(new editorWorkerHost.Emitter());
@@ -23641,35 +23942,56 @@ define("vs/editor-ML6zs6Go", ["require", "exports", "./editorWorkerHost--0eDLpc-
23641
23942
  }));
23642
23943
  this._register(this._textArea.onCut((e) => {
23643
23944
  this._logService.trace(`TextAreaInput#onCut`, e);
23644
- this._textArea.setIgnoreSelectionChangeTime("received cut event");
23645
- if (this._host.context) {
23646
- ensureClipboardGetsEditorSelection(e, this._host.context, this._logService, this._browser.isFirefox);
23945
+ const cutEvent = createClipboardCopyEvent(
23946
+ e,
23947
+ /* isCut */
23948
+ true,
23949
+ this._host.context,
23950
+ this._logService,
23951
+ this._browser.isFirefox
23952
+ );
23953
+ this._onWillCut.fire(cutEvent);
23954
+ if (cutEvent.isHandled) {
23955
+ return;
23647
23956
  }
23957
+ this._textArea.setIgnoreSelectionChangeTime("received cut event");
23958
+ cutEvent.ensureClipboardGetsEditorData();
23648
23959
  this._asyncTriggerCut.schedule();
23649
23960
  }));
23650
23961
  this._register(this._textArea.onCopy((e) => {
23651
23962
  this._logService.trace(`TextAreaInput#onCopy`, e);
23652
- if (this._host.context) {
23653
- ensureClipboardGetsEditorSelection(e, this._host.context, this._logService, this._browser.isFirefox);
23963
+ CopyOptions.electronBugWorkaroundCopyEventHasFired = true;
23964
+ const copyEvent = createClipboardCopyEvent(
23965
+ e,
23966
+ /* isCut */
23967
+ false,
23968
+ this._host.context,
23969
+ this._logService,
23970
+ this._browser.isFirefox
23971
+ );
23972
+ this._onWillCopy.fire(copyEvent);
23973
+ if (copyEvent.isHandled) {
23974
+ return;
23654
23975
  }
23976
+ copyEvent.ensureClipboardGetsEditorData();
23655
23977
  }));
23656
23978
  this._register(this._textArea.onPaste((e) => {
23657
23979
  this._logService.trace(`TextAreaInput#onPaste`, e);
23658
- this._textArea.setIgnoreSelectionChangeTime("received paste event");
23659
- e.preventDefault();
23660
- if (!e.clipboardData) {
23980
+ const pasteEvent = createClipboardPasteEvent(e);
23981
+ this._onWillPaste.fire(pasteEvent);
23982
+ if (pasteEvent.isHandled) {
23661
23983
  return;
23662
23984
  }
23663
- let [text2, metadata] = ClipboardEventUtils.getTextData(e.clipboardData);
23664
- this._logService.trace(`TextAreaInput#onPaste with id : `, metadata?.id, " with text.length: ", text2.length);
23665
- if (!text2) {
23985
+ this._textArea.setIgnoreSelectionChangeTime("received paste event");
23986
+ e.preventDefault();
23987
+ this._logService.trace(`TextAreaInput#onPaste with id : `, pasteEvent.metadata?.id, " with text.length: ", pasteEvent.text.length);
23988
+ if (!pasteEvent.text) {
23666
23989
  return;
23667
23990
  }
23668
- metadata = metadata || InMemoryClipboardMetadataManager.INSTANCE.get(text2);
23669
23991
  this._logService.trace(`TextAreaInput#onPaste (before onPaste)`);
23670
23992
  this._onPaste.fire({
23671
- text: text2,
23672
- metadata
23993
+ text: pasteEvent.text,
23994
+ metadata: pasteEvent.metadata
23673
23995
  });
23674
23996
  }));
23675
23997
  this._register(this._textArea.onFocus(() => {
@@ -42317,6 +42639,15 @@ struct VSOutput {
42317
42639
  const IME = new IMEImpl();
42318
42640
  const IKeybindingService = createDecorator("keybindingService");
42319
42641
  class AbstractEditContext extends ViewPart {
42642
+ constructor() {
42643
+ super(...arguments);
42644
+ this._onWillCopy = this._register(new editorWorkerHost.Emitter());
42645
+ this.onWillCopy = this._onWillCopy.event;
42646
+ this._onWillCut = this._register(new editorWorkerHost.Emitter());
42647
+ this.onWillCut = this._onWillCut.event;
42648
+ this._onWillPaste = this._register(new editorWorkerHost.Emitter());
42649
+ this.onWillPaste = this._onWillPaste.event;
42650
+ }
42320
42651
  }
42321
42652
  class SimplePagedScreenReaderStrategy {
42322
42653
  _getPageOfLine(lineNumber, linesPerPage) {
@@ -42646,6 +42977,9 @@ struct VSOutput {
42646
42977
  isFirefox,
42647
42978
  isSafari
42648
42979
  }));
42980
+ this._register(this._textAreaInput.onWillCopy((e) => this._onWillCopy.fire(e)));
42981
+ this._register(this._textAreaInput.onWillCut((e) => this._onWillCut.fire(e)));
42982
+ this._register(this._textAreaInput.onWillPaste((e) => this._onWillPaste.fire(e)));
42649
42983
  this._register(this._textAreaInput.onKeyDown((e) => {
42650
42984
  this._viewController.emitKeyDown(e);
42651
42985
  }));
@@ -44342,12 +44676,37 @@ struct VSOutput {
44342
44676
  this._screenReaderSupport = this._register(instantiationService.createInstance(ScreenReaderSupport, this.domNode, context, this._viewController));
44343
44677
  this._register(addDisposableListener(this.domNode.domNode, "copy", (e) => {
44344
44678
  this.logService.trace("NativeEditContext#copy");
44345
- ensureClipboardGetsEditorSelection(e, this._context, this.logService, isFirefox);
44679
+ CopyOptions.electronBugWorkaroundCopyEventHasFired = true;
44680
+ const copyEvent = createClipboardCopyEvent(
44681
+ e,
44682
+ /* isCut */
44683
+ false,
44684
+ this._context,
44685
+ this.logService,
44686
+ isFirefox
44687
+ );
44688
+ this._onWillCopy.fire(copyEvent);
44689
+ if (copyEvent.isHandled) {
44690
+ return;
44691
+ }
44692
+ copyEvent.ensureClipboardGetsEditorData();
44346
44693
  }));
44347
44694
  this._register(addDisposableListener(this.domNode.domNode, "cut", (e) => {
44348
44695
  this.logService.trace("NativeEditContext#cut");
44696
+ const cutEvent = createClipboardCopyEvent(
44697
+ e,
44698
+ /* isCut */
44699
+ true,
44700
+ this._context,
44701
+ this.logService,
44702
+ isFirefox
44703
+ );
44704
+ this._onWillCut.fire(cutEvent);
44705
+ if (cutEvent.isHandled) {
44706
+ return;
44707
+ }
44349
44708
  this._screenReaderSupport.onWillCut();
44350
- ensureClipboardGetsEditorSelection(e, this._context, this.logService, isFirefox);
44709
+ cutEvent.ensureClipboardGetsEditorData();
44351
44710
  this.logService.trace("NativeEditContext#cut (before viewController.cut)");
44352
44711
  this._viewController.cut();
44353
44712
  }));
@@ -44366,31 +44725,35 @@ struct VSOutput {
44366
44725
  }));
44367
44726
  this._register(addDisposableListener(this.domNode.domNode, "paste", (e) => {
44368
44727
  this.logService.trace("NativeEditContext#paste");
44728
+ const pasteEvent = createClipboardPasteEvent(e);
44729
+ this._onWillPaste.fire(pasteEvent);
44730
+ if (pasteEvent.isHandled) {
44731
+ e.preventDefault();
44732
+ return;
44733
+ }
44369
44734
  e.preventDefault();
44370
44735
  if (!e.clipboardData) {
44371
44736
  return;
44372
44737
  }
44373
- let [text2, metadata] = ClipboardEventUtils.getTextData(e.clipboardData);
44374
- this.logService.trace("NativeEditContext#paste with id : ", metadata?.id, " with text.length: ", text2.length);
44375
- if (!text2) {
44738
+ this.logService.trace("NativeEditContext#paste with id : ", pasteEvent.metadata?.id, " with text.length: ", pasteEvent.text.length);
44739
+ if (!pasteEvent.text) {
44376
44740
  return;
44377
44741
  }
44378
- metadata = metadata || InMemoryClipboardMetadataManager.INSTANCE.get(text2);
44379
44742
  let pasteOnNewLine = false;
44380
44743
  let multicursorText = null;
44381
44744
  let mode = null;
44382
- if (metadata) {
44745
+ if (pasteEvent.metadata) {
44383
44746
  const options = this._context.configuration.options;
44384
44747
  const emptySelectionClipboard = options.get(
44385
44748
  45
44386
44749
  /* EditorOption.emptySelectionClipboard */
44387
44750
  );
44388
- pasteOnNewLine = emptySelectionClipboard && !!metadata.isFromEmptySelection;
44389
- multicursorText = typeof metadata.multicursorText !== "undefined" ? metadata.multicursorText : null;
44390
- mode = metadata.mode;
44751
+ pasteOnNewLine = emptySelectionClipboard && !!pasteEvent.metadata.isFromEmptySelection;
44752
+ multicursorText = typeof pasteEvent.metadata.multicursorText !== "undefined" ? pasteEvent.metadata.multicursorText : null;
44753
+ mode = pasteEvent.metadata.mode;
44391
44754
  }
44392
44755
  this.logService.trace("NativeEditContext#paste (before viewController.paste)");
44393
- this._viewController.paste(text2, pasteOnNewLine, multicursorText, mode);
44756
+ this._viewController.paste(pasteEvent.text, pasteOnNewLine, multicursorText, mode);
44394
44757
  }));
44395
44758
  this._register(editContextAddDisposableListener(this._editContext, "textformatupdate", (e) => this._handleTextFormatUpdate(e)));
44396
44759
  this._register(editContextAddDisposableListener(this._editContext, "characterboundsupdate", (e) => this._updateCharacterBounds(e)));
@@ -44513,15 +44876,15 @@ struct VSOutput {
44513
44876
  onZonesChanged(e) {
44514
44877
  return true;
44515
44878
  }
44516
- onWillPaste() {
44517
- this.logService.trace("NativeEditContext#onWillPaste");
44518
- this._onWillPaste();
44879
+ handleWillPaste() {
44880
+ this.logService.trace("NativeEditContext#handleWillPaste");
44881
+ this._prepareScreenReaderForPaste();
44519
44882
  }
44520
- _onWillPaste() {
44883
+ _prepareScreenReaderForPaste() {
44521
44884
  this._screenReaderSupport.onWillPaste();
44522
44885
  }
44523
- onWillCopy() {
44524
- this.logService.trace("NativeEditContext#onWillCopy");
44886
+ handleWillCopy() {
44887
+ this.logService.trace("NativeEditContext#handleWillCopy");
44525
44888
  this.logService.trace("NativeEditContext#isFocused : ", this.domNode.domNode === getActiveElement());
44526
44889
  }
44527
44890
  writeScreenReaderContent() {
@@ -44893,6 +45256,13 @@ struct VSOutput {
44893
45256
  constructor(editorContainer, ownerID, commandDelegate, configuration, colorTheme, model, userInputEvents, overflowWidgetsDomNode, _instantiationService) {
44894
45257
  super();
44895
45258
  this._instantiationService = _instantiationService;
45259
+ this._editContextClipboardListeners = new editorWorkerHost.DisposableStore();
45260
+ this._onWillCopy = this._register(new editorWorkerHost.Emitter());
45261
+ this.onWillCopy = this._onWillCopy.event;
45262
+ this._onWillCut = this._register(new editorWorkerHost.Emitter());
45263
+ this.onWillCut = this._onWillCut.event;
45264
+ this._onWillPaste = this._register(new editorWorkerHost.Emitter());
45265
+ this.onWillPaste = this._onWillPaste.event;
44896
45266
  this._shouldRecomputeGlyphMarginLanes = false;
44897
45267
  this._ownerID = ownerID;
44898
45268
  this._widgetFocusTracker = this._register(new CodeEditorWidgetFocusTracker(editorContainer, overflowWidgetsDomNode));
@@ -44921,6 +45291,7 @@ struct VSOutput {
44921
45291
  /* EditorOption.accessibilitySupport */
44922
45292
  );
44923
45293
  this._editContext = this._instantiateEditContext();
45294
+ this._connectEditContextClipboardEvents();
44924
45295
  this._viewParts.push(this._editContext);
44925
45296
  this._linesContent = createFastDomNode(document.createElement("div"));
44926
45297
  this._linesContent.setClassName("lines-content monaco-editor-background");
@@ -45042,6 +45413,7 @@ struct VSOutput {
45042
45413
  const indexOfEditContext = this._viewParts.indexOf(this._editContext);
45043
45414
  this._editContext.dispose();
45044
45415
  this._editContext = this._instantiateEditContext();
45416
+ this._connectEditContextClipboardEvents();
45045
45417
  if (isEditContextFocused) {
45046
45418
  this._editContext.focus();
45047
45419
  }
@@ -45049,6 +45421,12 @@ struct VSOutput {
45049
45421
  this._viewParts.splice(indexOfEditContext, 1, this._editContext);
45050
45422
  }
45051
45423
  }
45424
+ _connectEditContextClipboardEvents() {
45425
+ this._editContextClipboardListeners.clear();
45426
+ this._editContextClipboardListeners.add(this._editContext.onWillCopy((e) => this._onWillCopy.fire(e)));
45427
+ this._editContextClipboardListeners.add(this._editContext.onWillCut((e) => this._onWillCut.fire(e)));
45428
+ this._editContextClipboardListeners.add(this._editContext.onWillPaste((e) => this._onWillPaste.fire(e)));
45429
+ }
45052
45430
  _computeGlyphMarginLanes() {
45053
45431
  const model = this._context.viewModel.model;
45054
45432
  const laneModel = this._context.viewModel.glyphLanes;
@@ -45186,6 +45564,7 @@ struct VSOutput {
45186
45564
  this._renderAnimationFrame.dispose();
45187
45565
  this._renderAnimationFrame = null;
45188
45566
  }
45567
+ this._editContextClipboardListeners.dispose();
45189
45568
  this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove();
45190
45569
  this._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode.remove();
45191
45570
  this._context.removeEventHandler(this);
@@ -49130,7 +49509,7 @@ struct VSOutput {
49130
49509
  this.colorizationOptions = this.textModel.getOptions().bracketPairColorizationOptions;
49131
49510
  }
49132
49511
  //#endregion
49133
- getDecorationsInRange(range, ownerId2, filterOutValidation, onlyMinimapDecorations) {
49512
+ getDecorationsInRange(range, ownerId2, filterOutValidation, filterFontDecorations2, onlyMinimapDecorations) {
49134
49513
  if (onlyMinimapDecorations) {
49135
49514
  return [];
49136
49515
  }
@@ -49151,14 +49530,14 @@ struct VSOutput {
49151
49530
  })).toArray();
49152
49531
  return result;
49153
49532
  }
49154
- getAllDecorations(ownerId2, filterOutValidation) {
49533
+ getAllDecorations(ownerId2, filterOutValidation, filterFontDecorations2) {
49155
49534
  if (ownerId2 === void 0) {
49156
49535
  return [];
49157
49536
  }
49158
49537
  if (!this.colorizationOptions.enabled) {
49159
49538
  return [];
49160
49539
  }
49161
- return this.getDecorationsInRange(new editorWorkerHost.Range(1, 1, this.textModel.getLineCount(), 1), ownerId2, filterOutValidation);
49540
+ return this.getDecorationsInRange(new editorWorkerHost.Range(1, 1, this.textModel.getLineCount(), 1), ownerId2, filterOutValidation, filterFontDecorations2);
49162
49541
  }
49163
49542
  }
49164
49543
  class ColorProvider {
@@ -53752,34 +54131,38 @@ struct VSOutput {
53752
54131
  this._onDidChangeLineHeight.fire(affectedLineHeights);
53753
54132
  this._onDidChangeFont.fire(affectedLineFonts);
53754
54133
  }
53755
- getDecorationsInRange(range, ownerId2, filterOutValidation, onlyMinimapDecorations) {
54134
+ getDecorationsInRange(range, ownerId2, filterOutValidation, filterFontDecorations2, onlyMinimapDecorations) {
53756
54135
  const startOffsetOfRange = this.textModel.getOffsetAt(range.getStartPosition());
53757
54136
  const endOffsetOfRange = this.textModel.getOffsetAt(range.getEndPosition());
53758
54137
  const annotations = this._fontAnnotatedString.getAnnotationsIntersecting(new editorWorkerHost.OffsetRange(startOffsetOfRange, endOffsetOfRange));
53759
54138
  const decorations = [];
53760
54139
  for (const annotation of annotations) {
53761
- const annotationStartPosition = this.textModel.getPositionAt(annotation.range.start);
53762
- const annotationEndPosition = this.textModel.getPositionAt(annotation.range.endExclusive);
53763
- const range2 = editorWorkerHost.Range.fromPositions(annotationStartPosition, annotationEndPosition);
53764
54140
  const anno = annotation.annotation;
53765
- const className2 = classNameForFontTokenDecorations(anno.fontToken.fontFamily ?? "", anno.fontToken.fontSizeMultiplier ?? 0);
53766
54141
  const affectsFont = !!(anno.fontToken.fontFamily || anno.fontToken.fontSizeMultiplier);
53767
- const id = anno.decorationId;
53768
- decorations.push({
53769
- id,
53770
- options: {
53771
- description: "FontOptionDecoration",
53772
- inlineClassName: className2,
53773
- affectsFont
53774
- },
53775
- ownerId: 0,
53776
- range: range2
53777
- });
54142
+ if (!(affectsFont && filterFontDecorations2)) {
54143
+ const annotationStartPosition = this.textModel.getPositionAt(annotation.range.start);
54144
+ const annotationEndPosition = this.textModel.getPositionAt(annotation.range.endExclusive);
54145
+ const range2 = editorWorkerHost.Range.fromPositions(annotationStartPosition, annotationEndPosition);
54146
+ const anno2 = annotation.annotation;
54147
+ const className2 = classNameForFontTokenDecorations(anno2.fontToken.fontFamily ?? "", anno2.fontToken.fontSizeMultiplier ?? 0);
54148
+ const id = anno2.decorationId;
54149
+ decorations.push({
54150
+ id,
54151
+ options: {
54152
+ description: "FontOptionDecoration",
54153
+ inlineClassName: className2,
54154
+ lineHeight: anno2.fontToken.lineHeightMultiplier,
54155
+ affectsFont
54156
+ },
54157
+ ownerId: 0,
54158
+ range: range2
54159
+ });
54160
+ }
53778
54161
  }
53779
54162
  return decorations;
53780
54163
  }
53781
54164
  getAllDecorations(ownerId2, filterOutValidation) {
53782
- return this.getDecorationsInRange(new editorWorkerHost.Range(1, 1, this.textModel.getLineCount(), 1), ownerId2, filterOutValidation);
54165
+ return this.getDecorationsInRange(new editorWorkerHost.Range(1, 1, this.textModel.getLineCount(), this.textModel.getLineMaxColumn(this.textModel.getLineCount())), ownerId2, filterOutValidation);
53783
54166
  }
53784
54167
  };
53785
54168
  _TokenizationFontDecorationProvider.DECORATION_COUNT = 0;
@@ -58076,15 +58459,15 @@ struct VSOutput {
58076
58459
  const endColumn = this.getLineMaxColumn(endLineNumber);
58077
58460
  const range = new editorWorkerHost.Range(startLineNumber, 1, endLineNumber, endColumn);
58078
58461
  const decorations = this._getDecorationsInRange(range, ownerId2, filterOutValidation, filterFontDecorations2, onlyMarginDecorations);
58079
- editorWorkerHost.pushMany(decorations, this._decorationProvider.getDecorationsInRange(range, ownerId2, filterOutValidation));
58080
- editorWorkerHost.pushMany(decorations, this._fontTokenDecorationsProvider.getDecorationsInRange(range, ownerId2, filterOutValidation));
58462
+ editorWorkerHost.pushMany(decorations, this._decorationProvider.getDecorationsInRange(range, ownerId2, filterOutValidation, filterFontDecorations2));
58463
+ editorWorkerHost.pushMany(decorations, this._fontTokenDecorationsProvider.getDecorationsInRange(range, ownerId2, filterOutValidation, filterFontDecorations2));
58081
58464
  return decorations;
58082
58465
  }
58083
58466
  getDecorationsInRange(range, ownerId2 = 0, filterOutValidation = false, filterFontDecorations2 = false, onlyMinimapDecorations = false, onlyMarginDecorations = false) {
58084
58467
  const validatedRange = this.validateRange(range);
58085
58468
  const decorations = this._getDecorationsInRange(validatedRange, ownerId2, filterOutValidation, filterFontDecorations2, onlyMarginDecorations);
58086
- editorWorkerHost.pushMany(decorations, this._decorationProvider.getDecorationsInRange(validatedRange, ownerId2, filterOutValidation, onlyMinimapDecorations));
58087
- editorWorkerHost.pushMany(decorations, this._fontTokenDecorationsProvider.getDecorationsInRange(validatedRange, ownerId2, filterOutValidation, onlyMinimapDecorations));
58469
+ editorWorkerHost.pushMany(decorations, this._decorationProvider.getDecorationsInRange(validatedRange, ownerId2, filterOutValidation, filterFontDecorations2, onlyMinimapDecorations));
58470
+ editorWorkerHost.pushMany(decorations, this._fontTokenDecorationsProvider.getDecorationsInRange(validatedRange, ownerId2, filterOutValidation, filterFontDecorations2, onlyMinimapDecorations));
58088
58471
  return decorations;
58089
58472
  }
58090
58473
  getOverviewRulerDecorations(ownerId2 = 0, filterOutValidation = false, filterFontDecorations2 = false) {
@@ -58094,7 +58477,9 @@ struct VSOutput {
58094
58477
  return this._decorationsTree.getAllInjectedText(this, ownerId2);
58095
58478
  }
58096
58479
  getCustomLineHeightsDecorations(ownerId2 = 0) {
58097
- return this._decorationsTree.getAllCustomLineHeights(this, ownerId2);
58480
+ const decs = this._decorationsTree.getAllCustomLineHeights(this, ownerId2);
58481
+ editorWorkerHost.pushMany(decs, this._fontTokenDecorationsProvider.getAllDecorations(ownerId2));
58482
+ return decs;
58098
58483
  }
58099
58484
  _getInjectedTextInLine(lineNumber) {
58100
58485
  const startOffset = this._buffer.getOffsetAt(lineNumber, 1);
@@ -62496,10 +62881,11 @@ struct VSOutput {
62496
62881
  const decorationsInViewport = [];
62497
62882
  let decorationsInViewportLen = 0;
62498
62883
  const inlineDecorations = [];
62884
+ const hasVariableFonts = [];
62499
62885
  for (let j = startLineNumber; j <= endLineNumber; j++) {
62500
62886
  inlineDecorations[j - startLineNumber] = [];
62887
+ hasVariableFonts[j - startLineNumber] = false;
62501
62888
  }
62502
- let hasVariableFonts = false;
62503
62889
  for (let i = 0, len = modelDecorations.length; i < len; i++) {
62504
62890
  const modelDecoration = modelDecorations[i];
62505
62891
  const decorationOptions = modelDecoration.options;
@@ -62520,6 +62906,9 @@ struct VSOutput {
62520
62906
  const intersectedEndLineNumber = Math.min(endLineNumber, viewRange2.endLineNumber);
62521
62907
  for (let j = intersectedStartLineNumber; j <= intersectedEndLineNumber; j++) {
62522
62908
  inlineDecorations[j - startLineNumber].push(inlineDecoration);
62909
+ if (decorationOptions.affectsFont) {
62910
+ hasVariableFonts[j - startLineNumber] = true;
62911
+ }
62523
62912
  }
62524
62913
  }
62525
62914
  if (decorationOptions.beforeContentClassName) {
@@ -62531,6 +62920,9 @@ struct VSOutput {
62531
62920
  /* InlineDecorationType.Before */
62532
62921
  );
62533
62922
  inlineDecorations[viewRange2.startLineNumber - startLineNumber].push(inlineDecoration);
62923
+ if (decorationOptions.affectsFont) {
62924
+ hasVariableFonts[viewRange2.startLineNumber - startLineNumber] = true;
62925
+ }
62534
62926
  }
62535
62927
  }
62536
62928
  if (decorationOptions.afterContentClassName) {
@@ -62542,11 +62934,11 @@ struct VSOutput {
62542
62934
  /* InlineDecorationType.After */
62543
62935
  );
62544
62936
  inlineDecorations[viewRange2.endLineNumber - startLineNumber].push(inlineDecoration);
62937
+ if (decorationOptions.affectsFont) {
62938
+ hasVariableFonts[viewRange2.endLineNumber - startLineNumber] = true;
62939
+ }
62545
62940
  }
62546
62941
  }
62547
- if (decorationOptions.affectsFont) {
62548
- hasVariableFonts = true;
62549
- }
62550
62942
  }
62551
62943
  return {
62552
62944
  decorations: decorationsInViewport,
@@ -63925,6 +64317,9 @@ struct VSOutput {
63925
64317
  this._viewportStart.dispose();
63926
64318
  this._eventDispatcher.dispose();
63927
64319
  }
64320
+ getEditorOption(id) {
64321
+ return this._configuration.options.get(id);
64322
+ }
63928
64323
  createLineBreaksComputer() {
63929
64324
  return this._lines.createLineBreaksComputer();
63930
64325
  }
@@ -63942,6 +64337,10 @@ struct VSOutput {
63942
64337
  if (!allowVariableLineHeights) {
63943
64338
  return [];
63944
64339
  }
64340
+ const defaultLineHeight = this._configuration.options.get(
64341
+ 75
64342
+ /* EditorOption.lineHeight */
64343
+ );
63945
64344
  const decorations = this.model.getCustomLineHeightsDecorations(this._editorId);
63946
64345
  return decorations.map((d) => {
63947
64346
  const lineNumber = d.range.startLineNumber;
@@ -63950,7 +64349,7 @@ struct VSOutput {
63950
64349
  decorationId: d.id,
63951
64350
  startLineNumber: viewRange.startLineNumber,
63952
64351
  endLineNumber: viewRange.endLineNumber,
63953
- lineHeight: d.options.lineHeight || 0
64352
+ lineHeight: d.options.lineHeight ? d.options.lineHeight * defaultLineHeight : 0
63954
64353
  };
63955
64354
  });
63956
64355
  }
@@ -64522,12 +64921,14 @@ struct VSOutput {
64522
64921
  }
64523
64922
  getViewportViewLineRenderingData(visibleRange, lineNumber) {
64524
64923
  const viewportDecorationsCollection = this._decorations.getDecorationsViewportData(visibleRange);
64525
- const inlineDecorations = viewportDecorationsCollection.inlineDecorations[lineNumber - visibleRange.startLineNumber];
64526
- return this._getViewLineRenderingData(lineNumber, inlineDecorations, viewportDecorationsCollection.hasVariableFonts, viewportDecorationsCollection.decorations);
64924
+ const relativeLineNumber = lineNumber - visibleRange.startLineNumber;
64925
+ const inlineDecorations = viewportDecorationsCollection.inlineDecorations[relativeLineNumber];
64926
+ const hasVariableFonts = viewportDecorationsCollection.hasVariableFonts[relativeLineNumber];
64927
+ return this._getViewLineRenderingData(lineNumber, inlineDecorations, hasVariableFonts, viewportDecorationsCollection.decorations);
64527
64928
  }
64528
64929
  getViewLineRenderingData(lineNumber) {
64529
64930
  const decorationsCollection = this._decorations.getDecorationsOnLine(lineNumber);
64530
- return this._getViewLineRenderingData(lineNumber, decorationsCollection.inlineDecorations[0], decorationsCollection.hasVariableFonts, decorationsCollection.decorations);
64931
+ return this._getViewLineRenderingData(lineNumber, decorationsCollection.inlineDecorations[0], decorationsCollection.hasVariableFonts[0], decorationsCollection.decorations);
64531
64932
  }
64532
64933
  _getViewLineRenderingData(lineNumber, inlineDecorations, hasVariableFonts, decorations) {
64533
64934
  const mightContainRTL = this.model.mightContainRTL();
@@ -64618,39 +65019,39 @@ struct VSOutput {
64618
65019
  }
64619
65020
  }
64620
65021
  if (!hasNonEmptyRange && !emptySelectionClipboard) {
64621
- return "";
65022
+ return { sourceRanges: [], sourceText: "" };
64622
65023
  }
65024
+ const ranges = [];
65025
+ const result = [];
65026
+ const pushRange = (modelRange, append2 = "") => {
65027
+ ranges.push(modelRange);
65028
+ result.push(this.model.getValueInRange(
65029
+ modelRange,
65030
+ forceCRLF ? 2 : 0
65031
+ /* EndOfLinePreference.TextDefined */
65032
+ ) + append2);
65033
+ };
64623
65034
  if (hasEmptyRange && emptySelectionClipboard) {
64624
- const result2 = [];
64625
65035
  let prevModelLineNumber = 0;
64626
65036
  for (const modelRange of modelRanges) {
64627
65037
  const modelLineNumber = modelRange.startLineNumber;
64628
65038
  if (modelRange.isEmpty()) {
64629
65039
  if (modelLineNumber !== prevModelLineNumber) {
64630
- result2.push(this.model.getLineContent(modelLineNumber) + newLineCharacter);
65040
+ pushRange(new editorWorkerHost.Range(modelLineNumber, this.model.getLineMinColumn(modelLineNumber), modelLineNumber, this.model.getLineMaxColumn(modelLineNumber)), newLineCharacter);
64631
65041
  }
64632
65042
  } else {
64633
- result2.push(this.model.getValueInRange(
64634
- modelRange,
64635
- forceCRLF ? 2 : 0
64636
- /* EndOfLinePreference.TextDefined */
64637
- ));
65043
+ pushRange(modelRange);
64638
65044
  }
64639
65045
  prevModelLineNumber = modelLineNumber;
64640
65046
  }
64641
- return result2.length === 1 ? result2[0] : result2;
64642
- }
64643
- const result = [];
64644
- for (const modelRange of modelRanges) {
64645
- if (!modelRange.isEmpty()) {
64646
- result.push(this.model.getValueInRange(
64647
- modelRange,
64648
- forceCRLF ? 2 : 0
64649
- /* EndOfLinePreference.TextDefined */
64650
- ));
65047
+ } else {
65048
+ for (const modelRange of modelRanges) {
65049
+ if (!modelRange.isEmpty()) {
65050
+ pushRange(modelRange);
65051
+ }
64651
65052
  }
64652
65053
  }
64653
- return result.length === 1 ? result[0] : result;
65054
+ return { sourceRanges: ranges, sourceText: result.length === 1 ? result[0] : result };
64654
65055
  }
64655
65056
  getRichTextToCopy(modelRanges, emptySelectionClipboard) {
64656
65057
  const languageId = this.model.getLanguageId();
@@ -65159,6 +65560,12 @@ struct VSOutput {
65159
65560
  this.onDidCompositionEnd = this._onDidCompositionEnd.event;
65160
65561
  this._onDidPaste = this._register(new InteractionEmitter(this._contributions, this._deliveryQueue));
65161
65562
  this.onDidPaste = this._onDidPaste.event;
65563
+ this._onWillCopy = this._register(new InteractionEmitter(this._contributions, this._deliveryQueue));
65564
+ this.onWillCopy = this._onWillCopy.event;
65565
+ this._onWillCut = this._register(new InteractionEmitter(this._contributions, this._deliveryQueue));
65566
+ this.onWillCut = this._onWillCut.event;
65567
+ this._onWillPaste = this._register(new InteractionEmitter(this._contributions, this._deliveryQueue));
65568
+ this.onWillPaste = this._onWillPaste.event;
65162
65569
  this._onMouseUp = this._register(new InteractionEmitter(this._contributions, this._deliveryQueue));
65163
65570
  this.onMouseUp = this._onMouseUp.event;
65164
65571
  this._onMouseDown = this._register(new InteractionEmitter(this._contributions, this._deliveryQueue));
@@ -66283,6 +66690,14 @@ struct VSOutput {
66283
66690
  this._modelData.view.render(true, forceRedraw);
66284
66691
  });
66285
66692
  }
66693
+ renderAsync(forceRedraw = false) {
66694
+ if (!this._modelData || !this._modelData.hasRealView) {
66695
+ return;
66696
+ }
66697
+ this._modelData.viewModel.batchEvents(() => {
66698
+ this._modelData.view.render(false, forceRedraw);
66699
+ });
66700
+ }
66286
66701
  setAriaOptions(options) {
66287
66702
  if (!this._modelData || !this._modelData.hasRealView) {
66288
66703
  return;
@@ -66443,6 +66858,9 @@ struct VSOutput {
66443
66858
  }
66444
66859
  view.render(false, true);
66445
66860
  view.domNode.domNode.setAttribute("data-uri", model.uri.toString());
66861
+ listenersToRemove.push(view.onWillCopy((e) => this._onWillCopy.fire(e)));
66862
+ listenersToRemove.push(view.onWillCut((e) => this._onWillCut.fire(e)));
66863
+ listenersToRemove.push(view.onWillPaste((e) => this._onWillPaste.fire(e)));
66446
66864
  }
66447
66865
  this._modelData = new ModelData$1(model, viewModel, view, hasRealView, listenersToRemove, attachedView);
66448
66866
  }
@@ -75139,6 +75557,7 @@ ${text2}</tr>
75139
75557
  exports.Schemas.vscodeRemote,
75140
75558
  exports.Schemas.vscodeRemoteResource,
75141
75559
  exports.Schemas.vscodeNotebookCell,
75560
+ exports.Schemas.vscodeChatPrompt,
75142
75561
  // For links that are handled entirely by the action handler
75143
75562
  exports.Schemas.internal
75144
75563
  ];
@@ -76151,7 +76570,7 @@ ${text2}</tr>
76151
76570
  if (viewSize <= layoutBeforeAnchorBoundary) {
76152
76571
  return layoutBeforeAnchorBoundary - viewSize;
76153
76572
  }
76154
- if (viewSize <= viewportSize - layoutAfterAnchorBoundary) {
76573
+ if (viewSize <= viewportSize - layoutAfterAnchorBoundary && layoutBeforeAnchorBoundary < viewSize / 2) {
76155
76574
  return layoutAfterAnchorBoundary;
76156
76575
  }
76157
76576
  return 0;
@@ -76778,6 +77197,7 @@ ${text2}</tr>
76778
77197
  }
76779
77198
  _showHover(hover, options, focus) {
76780
77199
  this._contextViewHandler.showContextView(new HoverContextViewDelegate(hover, focus), options.container);
77200
+ options.onDidShow?.();
76781
77201
  }
76782
77202
  hideHover(force) {
76783
77203
  if (!force && this._currentHover?.isLocked || !this._currentHoverOptions) {
@@ -78065,7 +78485,7 @@ ${text2}</tr>
78065
78485
  const editorConfigurationKeys = getEditorConfigurationKeys();
78066
78486
  return editorConfigurationKeys[`diffEditor.${key}`] || false;
78067
78487
  }
78068
- const configurationRegistry$1 = Registry.as(Extensions$5.Configuration);
78488
+ const configurationRegistry$1 = Registry.as(Extensions$6.Configuration);
78069
78489
  configurationRegistry$1.registerConfiguration(editorConfiguration);
78070
78490
  class EditOperation {
78071
78491
  static insert(position, text2) {
@@ -78333,7 +78753,7 @@ ${text2}</tr>
78333
78753
  this._restrictedConfigurations = restricted || [];
78334
78754
  }
78335
78755
  doParseRaw(raw, options) {
78336
- const registry = Registry.as(Extensions$5.Configuration);
78756
+ const registry = Registry.as(Extensions$6.Configuration);
78337
78757
  const configurationProperties = registry.getConfigurationProperties();
78338
78758
  const excludedConfigurationProperties = registry.getExcludedConfigurationProperties();
78339
78759
  const filtered = this.filter(raw, configurationProperties, excludedConfigurationProperties, true, options);
@@ -80572,7 +80992,7 @@ ${text2}</tr>
80572
80992
  this._mimeTypesMap[mimetype] = language.identifier;
80573
80993
  });
80574
80994
  });
80575
- Registry.as(Extensions$5.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds());
80995
+ Registry.as(Extensions$6.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds());
80576
80996
  this._onDidChange.fire();
80577
80997
  }
80578
80998
  _registerLanguage(lang) {
@@ -80844,22 +81264,6 @@ ${text2}</tr>
80844
81264
  return asFragment(this._parts.join(joiner));
80845
81265
  }
80846
81266
  }
80847
- const DataTransfers = {
80848
- /**
80849
- * Application specific resource transfer type
80850
- */
80851
- RESOURCES: "ResourceURLs",
80852
- /**
80853
- * Typically transfer type for copy/paste transfers.
80854
- */
80855
- TEXT: Mimes.text,
80856
- /**
80857
- * Internal type used to pass around text/uri-list data.
80858
- *
80859
- * This is needed to work around https://bugs.chromium.org/p/chromium/issues/detail?id=239745.
80860
- */
80861
- INTERNAL_URI_LIST: "application/vnd.code.uri-list"
80862
- };
80863
81267
  const nullHoverDelegateFactory = () => ({
80864
81268
  get delay() {
80865
81269
  return -1;
@@ -80914,6 +81318,7 @@ ${text2}</tr>
80914
81318
  this.spliceables.forEach((s) => s.splice(start, deleteCount, elements));
80915
81319
  }
80916
81320
  }
81321
+ const NotSelectableGroupId = "notSelectable";
80917
81322
  class ListError extends Error {
80918
81323
  constructor(user, message) {
80919
81324
  super(`ListError [${user}] ${message}`);
@@ -82592,7 +82997,13 @@ ${text2}</tr>
82592
82997
  onCtrlA(e) {
82593
82998
  e.preventDefault();
82594
82999
  e.stopPropagation();
82595
- this.list.setSelection(editorWorkerHost.range(this.list.length), e.browserEvent);
83000
+ let selection = editorWorkerHost.range(this.list.length);
83001
+ const focusedElements = this.list.getFocus();
83002
+ const referenceGroupId = focusedElements.length > 0 ? this.list.getElementGroupId(focusedElements[0]) : void 0;
83003
+ if (referenceGroupId !== void 0) {
83004
+ selection = this.list.filterIndicesByGroup(selection, referenceGroupId);
83005
+ }
83006
+ this.list.setSelection(selection, e.browserEvent);
82596
83007
  this.list.setAnchor(void 0);
82597
83008
  this.view.domNode.focus();
82598
83009
  }
@@ -82870,7 +83281,10 @@ ${text2}</tr>
82870
83281
  this.list.setFocus([focus], e.browserEvent);
82871
83282
  this.list.setAnchor(focus);
82872
83283
  if (!isMouseRightClick(e.browserEvent)) {
82873
- this.list.setSelection([focus], e.browserEvent);
83284
+ const focusGroupId = this.list.getElementGroupId(focus);
83285
+ if (focusGroupId !== NotSelectableGroupId) {
83286
+ this.list.setSelection([focus], e.browserEvent);
83287
+ }
82874
83288
  }
82875
83289
  this._onPointer.fire(e);
82876
83290
  }
@@ -82899,7 +83313,14 @@ ${text2}</tr>
82899
83313
  }
82900
83314
  const min = Math.min(anchor, focus);
82901
83315
  const max = Math.max(anchor, focus);
82902
- const rangeSelection = editorWorkerHost.range(min, max + 1);
83316
+ let rangeSelection = editorWorkerHost.range(min, max + 1);
83317
+ const selectedElement = this.list.getSelection()[0];
83318
+ if (selectedElement !== void 0) {
83319
+ const referenceGroupId = this.list.getElementGroupId(selectedElement);
83320
+ if (referenceGroupId !== void 0) {
83321
+ rangeSelection = this.list.filterIndicesByGroup(rangeSelection, referenceGroupId);
83322
+ }
83323
+ }
82903
83324
  const selection = this.list.getSelection();
82904
83325
  const contiguousRange = getContiguousRangeContaining(disjunction(selection, [anchor]), anchor);
82905
83326
  if (contiguousRange.length === 0) {
@@ -82913,8 +83334,13 @@ ${text2}</tr>
82913
83334
  const newSelection = selection.filter((i) => i !== focus);
82914
83335
  this.list.setFocus([focus]);
82915
83336
  this.list.setAnchor(focus);
83337
+ const focusGroupId = this.list.getElementGroupId(focus);
83338
+ if (focusGroupId === NotSelectableGroupId) {
83339
+ return;
83340
+ }
82916
83341
  if (selection.length === newSelection.length) {
82917
- this.list.setSelection([...newSelection, focus], e.browserEvent);
83342
+ const itemsToBeSelected = focusGroupId !== void 0 ? this.list.filterIndicesByGroup([...newSelection, focus], focusGroupId) : [...newSelection, focus];
83343
+ this.list.setSelection(itemsToBeSelected, e.browserEvent);
82918
83344
  } else {
82919
83345
  this.list.setSelection(newSelection, e.browserEvent);
82920
83346
  }
@@ -83499,6 +83925,7 @@ ${text2}</tr>
83499
83925
  throw new ListError(this.user, `Invalid index ${index}`);
83500
83926
  }
83501
83927
  }
83928
+ indexes = indexes.filter((i) => this.getElementGroupId(i) !== NotSelectableGroupId);
83502
83929
  this.selection.set(indexes, browserEvent);
83503
83930
  }
83504
83931
  getSelection() {
@@ -83524,6 +83951,37 @@ ${text2}</tr>
83524
83951
  const anchor = this.getAnchor();
83525
83952
  return typeof anchor === "undefined" ? void 0 : this.element(anchor);
83526
83953
  }
83954
+ /**
83955
+ * Gets the group ID for an element at the given index.
83956
+ * Returns undefined if no identity provider, no getGroupId method, or if the group ID is undefined.
83957
+ */
83958
+ getElementGroupId(index) {
83959
+ const identityProvider = this.options.identityProvider;
83960
+ if (!identityProvider?.getGroupId) {
83961
+ return void 0;
83962
+ }
83963
+ const element = this.element(index);
83964
+ return identityProvider.getGroupId(element);
83965
+ }
83966
+ /**
83967
+ * Filters the given indices to only include those with a matching group ID.
83968
+ * If no identity provider or getGroupId method exists, returns the original indices.
83969
+ * If referenceGroupId is undefined, returns an empty array (elements without group IDs are not selectable).
83970
+ */
83971
+ filterIndicesByGroup(indices, referenceGroupId) {
83972
+ const identityProvider = this.options.identityProvider;
83973
+ if (!identityProvider?.getGroupId) {
83974
+ return indices;
83975
+ }
83976
+ if (referenceGroupId === NotSelectableGroupId) {
83977
+ return [];
83978
+ }
83979
+ return indices.filter((index) => {
83980
+ const element = this.element(index);
83981
+ const groupId = identityProvider.getGroupId(element);
83982
+ return groupId === referenceGroupId;
83983
+ });
83984
+ }
83527
83985
  setFocus(indexes, browserEvent) {
83528
83986
  for (const index of indexes) {
83529
83987
  if (index < 0 || index >= this.length) {
@@ -84911,7 +85369,9 @@ ${text2}</tr>
84911
85369
  if (this.cssClass && this.label) {
84912
85370
  this.label.classList.remove(...this.cssClass.split(" "));
84913
85371
  }
84914
- if (this.options.icon) {
85372
+ if (this.action.id === Separator.ID && this.action.class) {
85373
+ this.label?.classList.add(this.action.class);
85374
+ } else if (this.options.icon) {
84915
85375
  this.cssClass = this.getClass();
84916
85376
  if (this.label) {
84917
85377
  this.label.classList.add("codicon");
@@ -93068,7 +93528,10 @@ ${formatRule(editorWorkerHost.Codicon.menuSubmenu)}
93068
93528
  identityProvider: options.identityProvider && {
93069
93529
  getId(el) {
93070
93530
  return options.identityProvider.getId(el.element);
93071
- }
93531
+ },
93532
+ getGroupId: options.identityProvider.getGroupId ? (el) => {
93533
+ return options.identityProvider.getGroupId(el.element);
93534
+ } : void 0
93072
93535
  },
93073
93536
  dnd: options.dnd && disposableStore.add(new TreeNodeListDragAndDrop(modelProvider, options.dnd)),
93074
93537
  multipleSelectionController: options.multipleSelectionController && {
@@ -97500,7 +97963,10 @@ ${formatRule(editorWorkerHost.Codicon.menuSubmenu)}
97500
97963
  identityProvider: options.identityProvider && {
97501
97964
  getId(el) {
97502
97965
  return options.identityProvider.getId(el.element);
97503
- }
97966
+ },
97967
+ getGroupId: options.identityProvider.getGroupId ? (el) => {
97968
+ return options.identityProvider.getGroupId(el.element);
97969
+ } : void 0
97504
97970
  },
97505
97971
  dnd: options.dnd && new AsyncDataTreeNodeListDragAndDrop(options.dnd),
97506
97972
  multipleSelectionController: options.multipleSelectionController && {
@@ -99120,7 +99586,7 @@ ${formatRule(editorWorkerHost.Codicon.menuSubmenu)}
99120
99586
  __param$r(5, IListService),
99121
99587
  __param$r(6, IConfigurationService)
99122
99588
  ], WorkbenchTreeInternals);
99123
- const configurationRegistry = Registry.as(Extensions$5.Configuration);
99589
+ const configurationRegistry = Registry.as(Extensions$6.Configuration);
99124
99590
  configurationRegistry.registerConfiguration({
99125
99591
  id: "workbench",
99126
99592
  order: 7,
@@ -102934,7 +103400,7 @@ ${formatRule(editorWorkerHost.Codicon.menuSubmenu)}
102934
103400
  }
102935
103401
  initialize();
102936
103402
  const iconsSchemaId = "vscode://schemas/icons";
102937
- const schemaRegistry = Registry.as(Extensions$6.JSONContribution);
103403
+ const schemaRegistry = Registry.as(Extensions$7.JSONContribution);
102938
103404
  schemaRegistry.registerSchema(iconsSchemaId, iconRegistry.getIconSchema());
102939
103405
  const delayer = new editorWorkerHost.RunOnceScheduler(() => schemaRegistry.notifySchemaChanged(iconsSchemaId), 200);
102940
103406
  iconRegistry.onDidChange(() => {
@@ -103013,7 +103479,7 @@ ${formatRule(editorWorkerHost.Codicon.menuSubmenu)}
103013
103479
  const VS_DARK_THEME_NAME = "vs-dark";
103014
103480
  const HC_BLACK_THEME_NAME = "hc-black";
103015
103481
  const HC_LIGHT_THEME_NAME = "hc-light";
103016
- const colorRegistry = Registry.as(Extensions$3.ColorContribution);
103482
+ const colorRegistry = Registry.as(Extensions$4.ColorContribution);
103017
103483
  const themingRegistry = Registry.as(Extensions$2.ThemingContribution);
103018
103484
  class StandaloneTheme {
103019
103485
  constructor(name, standaloneThemeData) {
@@ -105169,7 +105635,7 @@ ${graph.toString()}`;
105169
105635
  }
105170
105636
  resetConfigurationModel() {
105171
105637
  this._configurationModel = ConfigurationModel.createEmptyModel(this.logService);
105172
- const properties = Registry.as(Extensions$5.Configuration).getConfigurationProperties();
105638
+ const properties = Registry.as(Extensions$6.Configuration).getConfigurationProperties();
105173
105639
  this.updateConfigurationModel(Object.keys(properties), properties);
105174
105640
  }
105175
105641
  updateConfigurationModel(properties, configurationProperties) {
@@ -115235,7 +115701,6 @@ Ensure your bundler properly bundles modules referenced by "new URL("...?esm", i
115235
115701
  exports.CancellationTokenSource = CancellationTokenSource;
115236
115702
  exports.CaseSensitiveToggle = CaseSensitiveToggle;
115237
115703
  exports.ClickAction = ClickAction;
115238
- exports.ClipboardEventUtils = ClipboardEventUtils;
115239
115704
  exports.CommandsRegistry = CommandsRegistry;
115240
115705
  exports.ContextKeyEqualsExpr = ContextKeyEqualsExpr;
115241
115706
  exports.ContextKeyExpr = ContextKeyExpr;
@@ -115270,7 +115735,7 @@ Ensure your bundler properly bundles modules referenced by "new URL("...?esm", i
115270
115735
  exports.EnterOperation = EnterOperation;
115271
115736
  exports.EventHelper = EventHelper;
115272
115737
  exports.EventType = EventType;
115273
- exports.Extensions = Extensions$5;
115738
+ exports.Extensions = Extensions$6;
115274
115739
  exports.Extensions$1 = Extensions$1;
115275
115740
  exports.FindInput = FindInput;
115276
115741
  exports.FormattingEdit = FormattingEdit;
@@ -115348,6 +115813,7 @@ Ensure your bundler properly bundles modules referenced by "new URL("...?esm", i
115348
115813
  exports.LineSource = LineSource;
115349
115814
  exports.LineTokens = LineTokens;
115350
115815
  exports.List = List;
115816
+ exports.LocalSelectionTransfer = LocalSelectionTransfer;
115351
115817
  exports.MarkdownString = MarkdownString;
115352
115818
  exports.MarkerSeverity = MarkerSeverity;
115353
115819
  exports.MarkerTag = MarkerTag;
@@ -115408,6 +115874,8 @@ Ensure your bundler properly bundles modules referenced by "new URL("...?esm", i
115408
115874
  exports.TriggerInlineEditCommandsRegistry = TriggerInlineEditCommandsRegistry;
115409
115875
  exports.TypeOperations = TypeOperations;
115410
115876
  exports.Uri = Uri;
115877
+ exports.UriList = UriList;
115878
+ exports.VSDataTransfer = VSDataTransfer;
115411
115879
  exports.VS_DARK_THEME_NAME = VS_DARK_THEME_NAME;
115412
115880
  exports.VS_LIGHT_THEME_NAME = VS_LIGHT_THEME_NAME;
115413
115881
  exports.WORKSPACE_EXTENSION = WORKSPACE_EXTENSION;
@@ -115455,6 +115923,7 @@ Ensure your bundler properly bundles modules referenced by "new URL("...?esm", i
115455
115923
  exports.createDecorator = createDecorator;
115456
115924
  exports.createHotClass = createHotClass;
115457
115925
  exports.createMatches = createMatches;
115926
+ exports.createStringDataTransferItem = createStringDataTransferItem;
115458
115927
  exports.createStyleSheetFromObservable = createStyleSheetFromObservable;
115459
115928
  exports.createTrustedTypesPolicy = createTrustedTypesPolicy;
115460
115929
  exports.darken = darken;
@@ -115587,6 +116056,7 @@ Ensure your bundler properly bundles modules referenced by "new URL("...?esm", i
115587
116056
  exports.mainWindow = mainWindow;
115588
116057
  exports.mapObservableArrayCached = mapObservableArrayCached;
115589
116058
  exports.matchesBaseContiguousSubString = matchesBaseContiguousSubString;
116059
+ exports.matchesMimeType = matchesMimeType;
115590
116060
  exports.matchesScheme = matchesScheme;
115591
116061
  exports.matchesSomeScheme = matchesSomeScheme;
115592
116062
  exports.matchesSubString = matchesSubString;
@@ -115658,6 +116128,7 @@ Ensure your bundler properly bundles modules referenced by "new URL("...?esm", i
115658
116128
  exports.subtransaction = subtransaction;
115659
116129
  exports.themeColorFromId = themeColorFromId;
115660
116130
  exports.thisEqualsC = thisEqualsC;
116131
+ exports.toExternalVSDataTransfer = toExternalVSDataTransfer;
115661
116132
  exports.toMultilineTokens2 = toMultilineTokens2;
115662
116133
  exports.toWorkspaceIdentifier = toWorkspaceIdentifier;
115663
116134
  exports.trackFocus = trackFocus;