monaco-editor 0.54.0 → 0.55.0-dev-20251007

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 (507) hide show
  1. package/dev/vs/assets/{css.worker-UBouhlx6.js → css.worker-BPWFUJr8.js} +21 -13
  2. package/dev/vs/assets/{editor.worker-Dt-rrJKL.js → editor.worker-BNmK7__C.js} +21 -13
  3. package/dev/vs/assets/{html.worker-z9P_0-Yg.js → html.worker-DArI7VaB.js} +21 -13
  4. package/dev/vs/assets/{json.worker-DL8PoUrj.js → json.worker-CWecjvZJ.js} +21 -13
  5. package/dev/vs/assets/{ts.worker-CcnreaRY.js → ts.worker-OSpMT55a.js} +21 -13
  6. package/dev/vs/basic-languages/monaco.contribution.js +18 -18
  7. package/dev/vs/{cssMode-YNsTpAl9.js → cssMode-iRwIbB8J.js} +1 -1
  8. package/dev/vs/editor/editor.main.css +18 -14
  9. package/dev/vs/editor/editor.main.js +6 -6
  10. package/dev/vs/{editor.api-BhD7pWdi.js → editor.api-BgcxwOJR.js} +619 -331
  11. package/dev/vs/{freemarker2-Ci5s7p-k.js → freemarker2-BcA-FoEq.js} +1 -1
  12. package/dev/vs/{handlebars-Cpd6mzVL.js → handlebars-CFCe3CTT.js} +1 -1
  13. package/dev/vs/{html-L3fuhF-c.js → html-C2k_b3vV.js} +1 -1
  14. package/dev/vs/{htmlMode-BL74tky3.js → htmlMode-B6H3nvmZ.js} +1 -1
  15. package/dev/vs/{javascript-DtYAOqDf.js → javascript-Ci3a-NjL.js} +1 -1
  16. package/dev/vs/{jsonMode-KHMzkiG2.js → jsonMode-PBs-6YJq.js} +1 -1
  17. package/dev/vs/language/css/monaco.contribution.js +2 -2
  18. package/dev/vs/language/html/monaco.contribution.js +2 -2
  19. package/dev/vs/language/json/monaco.contribution.js +2 -2
  20. package/dev/vs/language/typescript/monaco.contribution.js +2 -2
  21. package/dev/vs/{liquid-CDz0dGHZ.js → liquid-xiAvFKY7.js} +1 -1
  22. package/dev/vs/{lspLanguageFeatures-C8J-56s2.js → lspLanguageFeatures-Bn27dcIU.js} +1 -1
  23. package/dev/vs/{mdx-CRukMuk2.js → mdx-DI_S5KNw.js} +1 -1
  24. package/dev/vs/nls.messages.de.js +1 -1
  25. package/dev/vs/nls.messages.es.js +1 -1
  26. package/dev/vs/nls.messages.fr.js +1 -1
  27. package/dev/vs/nls.messages.it.js +1 -1
  28. package/dev/vs/nls.messages.ja.js +1 -1
  29. package/dev/vs/nls.messages.ko.js +1 -1
  30. package/dev/vs/nls.messages.ru.js +1 -1
  31. package/dev/vs/nls.messages.zh-cn.js +1 -1
  32. package/dev/vs/nls.messages.zh-tw.js +1 -1
  33. package/dev/vs/{python-CSlobbnO.js → python-Dygfp6S4.js} +1 -1
  34. package/dev/vs/{razor-CcKFJPeA.js → razor-DRuwtGaR.js} +1 -1
  35. package/dev/vs/{tsMode-DOj38qML.js → tsMode-Blwumg5f.js} +1 -1
  36. package/dev/vs/{typescript-qRP7tyf4.js → typescript-Bn0Trwe9.js} +1 -1
  37. package/dev/vs/{workers-CJWv4CcA.js → workers-Blx_hD2K.js} +1 -1
  38. package/dev/vs/{xml-CSLddLaW.js → xml-BfLQO-V6.js} +1 -1
  39. package/dev/vs/{yaml-TB97xlnI.js → yaml-DdSHCspc.js} +1 -1
  40. package/esm/nls.messages.de.js +1 -1
  41. package/esm/nls.messages.es.js +1 -1
  42. package/esm/nls.messages.fr.js +1 -1
  43. package/esm/nls.messages.it.js +1 -1
  44. package/esm/nls.messages.ja.js +1 -1
  45. package/esm/nls.messages.ko.js +1 -1
  46. package/esm/nls.messages.ru.js +1 -1
  47. package/esm/nls.messages.zh-cn.js +1 -1
  48. package/esm/nls.messages.zh-tw.js +1 -1
  49. package/esm/vs/base/browser/canIUse.js +1 -0
  50. package/esm/vs/base/browser/canIUse.js.map +1 -1
  51. package/esm/vs/base/browser/dom.js +9 -0
  52. package/esm/vs/base/browser/dom.js.map +1 -1
  53. package/esm/vs/base/browser/fastDomNode.js.map +1 -1
  54. package/esm/vs/base/browser/mouseEvent.js +3 -0
  55. package/esm/vs/base/browser/mouseEvent.js.map +1 -1
  56. package/esm/vs/base/browser/trustedTypes.js +2 -0
  57. package/esm/vs/base/browser/trustedTypes.js.map +1 -1
  58. package/esm/vs/base/browser/ui/list/listWidget.js +5 -5
  59. package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
  60. package/esm/vs/base/browser/ui/sash/sash.css +1 -1
  61. package/esm/vs/base/browser/ui/sash/sash.js +4 -0
  62. package/esm/vs/base/browser/ui/sash/sash.js.map +1 -1
  63. package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +1 -1
  64. package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
  65. package/esm/vs/base/browser/ui/table/table.css +2 -2
  66. package/esm/vs/base/browser/ui/tree/abstractTree.js +7 -3
  67. package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
  68. package/esm/vs/base/browser/ui/tree/asyncDataTree.js +4 -0
  69. package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
  70. package/esm/vs/base/browser/ui/tree/indexTreeModel.js +1 -0
  71. package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
  72. package/esm/vs/base/browser/ui/tree/media/tree.css +2 -2
  73. package/esm/vs/base/browser/webWorkerFactory.js +3 -0
  74. package/esm/vs/base/browser/webWorkerFactory.js.map +1 -1
  75. package/esm/vs/base/common/buffer.js.map +1 -1
  76. package/esm/vs/base/common/decorators.js +1 -0
  77. package/esm/vs/base/common/decorators.js.map +1 -1
  78. package/esm/vs/base/common/errors.js +1 -0
  79. package/esm/vs/base/common/errors.js.map +1 -1
  80. package/esm/vs/base/common/glob.js +1 -1
  81. package/esm/vs/base/common/glob.js.map +1 -1
  82. package/esm/vs/base/common/hash.js.map +1 -1
  83. package/esm/vs/base/common/hotReload.js +2 -0
  84. package/esm/vs/base/common/hotReload.js.map +1 -1
  85. package/esm/vs/base/common/hotReloadHelpers.js +1 -0
  86. package/esm/vs/base/common/hotReloadHelpers.js.map +1 -1
  87. package/esm/vs/base/common/lifecycle.js +19 -0
  88. package/esm/vs/base/common/lifecycle.js.map +1 -1
  89. package/esm/vs/base/common/map.js.map +1 -1
  90. package/esm/vs/base/common/marshalling.js +4 -0
  91. package/esm/vs/base/common/marshalling.js.map +1 -1
  92. package/esm/vs/base/common/network.js +1 -0
  93. package/esm/vs/base/common/network.js.map +1 -1
  94. package/esm/vs/base/common/objects.js +1 -0
  95. package/esm/vs/base/common/objects.js.map +1 -1
  96. package/esm/vs/base/common/observableInternal/changeTracker.js +4 -0
  97. package/esm/vs/base/common/observableInternal/changeTracker.js.map +1 -1
  98. package/esm/vs/base/common/observableInternal/debugLocation.js +1 -0
  99. package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
  100. package/esm/vs/base/common/observableInternal/debugName.js +1 -0
  101. package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
  102. package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js +1 -0
  103. package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js.map +1 -1
  104. package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js +1 -0
  105. package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js.map +1 -1
  106. package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js +1 -0
  107. package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js.map +1 -1
  108. package/esm/vs/base/common/observableInternal/observables/derived.js +7 -1
  109. package/esm/vs/base/common/observableInternal/observables/derived.js.map +1 -1
  110. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +2 -0
  111. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
  112. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -0
  113. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
  114. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +1 -0
  115. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
  116. package/esm/vs/base/common/process.js +1 -0
  117. package/esm/vs/base/common/process.js.map +1 -1
  118. package/esm/vs/base/common/product.js.map +1 -1
  119. package/esm/vs/base/common/types.js +2 -0
  120. package/esm/vs/base/common/types.js.map +1 -1
  121. package/esm/vs/base/common/worker/webWorker.js +26 -14
  122. package/esm/vs/base/common/worker/webWorker.js.map +1 -1
  123. package/esm/vs/base/parts/sandbox/common/sandboxTypes.js +2 -0
  124. package/esm/vs/base/parts/sandbox/common/sandboxTypes.js.map +1 -0
  125. package/esm/vs/basic-languages/_.contribution.js +1 -1
  126. package/esm/vs/basic-languages/abap/abap.contribution.js +1 -1
  127. package/esm/vs/basic-languages/abap/abap.js +1 -1
  128. package/esm/vs/basic-languages/apex/apex.contribution.js +1 -1
  129. package/esm/vs/basic-languages/apex/apex.js +1 -1
  130. package/esm/vs/basic-languages/azcli/azcli.contribution.js +1 -1
  131. package/esm/vs/basic-languages/azcli/azcli.js +1 -1
  132. package/esm/vs/basic-languages/bat/bat.contribution.js +1 -1
  133. package/esm/vs/basic-languages/bat/bat.js +1 -1
  134. package/esm/vs/basic-languages/bicep/bicep.contribution.js +1 -1
  135. package/esm/vs/basic-languages/bicep/bicep.js +1 -1
  136. package/esm/vs/basic-languages/cameligo/cameligo.contribution.js +1 -1
  137. package/esm/vs/basic-languages/cameligo/cameligo.js +1 -1
  138. package/esm/vs/basic-languages/clojure/clojure.contribution.js +1 -1
  139. package/esm/vs/basic-languages/clojure/clojure.js +1 -1
  140. package/esm/vs/basic-languages/coffee/coffee.contribution.js +1 -1
  141. package/esm/vs/basic-languages/coffee/coffee.js +1 -1
  142. package/esm/vs/basic-languages/cpp/cpp.contribution.js +1 -1
  143. package/esm/vs/basic-languages/cpp/cpp.js +1 -1
  144. package/esm/vs/basic-languages/csharp/csharp.contribution.js +1 -1
  145. package/esm/vs/basic-languages/csharp/csharp.js +1 -1
  146. package/esm/vs/basic-languages/csp/csp.contribution.js +1 -1
  147. package/esm/vs/basic-languages/csp/csp.js +1 -1
  148. package/esm/vs/basic-languages/css/css.contribution.js +1 -1
  149. package/esm/vs/basic-languages/css/css.js +1 -1
  150. package/esm/vs/basic-languages/cypher/cypher.contribution.js +1 -1
  151. package/esm/vs/basic-languages/cypher/cypher.js +1 -1
  152. package/esm/vs/basic-languages/dart/dart.contribution.js +1 -1
  153. package/esm/vs/basic-languages/dart/dart.js +1 -1
  154. package/esm/vs/basic-languages/dockerfile/dockerfile.contribution.js +1 -1
  155. package/esm/vs/basic-languages/dockerfile/dockerfile.js +1 -1
  156. package/esm/vs/basic-languages/ecl/ecl.contribution.js +1 -1
  157. package/esm/vs/basic-languages/ecl/ecl.js +1 -1
  158. package/esm/vs/basic-languages/elixir/elixir.contribution.js +1 -1
  159. package/esm/vs/basic-languages/elixir/elixir.js +1 -1
  160. package/esm/vs/basic-languages/flow9/flow9.contribution.js +1 -1
  161. package/esm/vs/basic-languages/flow9/flow9.js +1 -1
  162. package/esm/vs/basic-languages/freemarker2/freemarker2.contribution.js +1 -1
  163. package/esm/vs/basic-languages/freemarker2/freemarker2.js +1 -1
  164. package/esm/vs/basic-languages/fsharp/fsharp.contribution.js +1 -1
  165. package/esm/vs/basic-languages/fsharp/fsharp.js +1 -1
  166. package/esm/vs/basic-languages/go/go.contribution.js +1 -1
  167. package/esm/vs/basic-languages/go/go.js +1 -1
  168. package/esm/vs/basic-languages/graphql/graphql.contribution.js +1 -1
  169. package/esm/vs/basic-languages/graphql/graphql.js +1 -1
  170. package/esm/vs/basic-languages/handlebars/handlebars.contribution.js +1 -1
  171. package/esm/vs/basic-languages/handlebars/handlebars.js +1 -1
  172. package/esm/vs/basic-languages/hcl/hcl.contribution.js +1 -1
  173. package/esm/vs/basic-languages/hcl/hcl.js +1 -1
  174. package/esm/vs/basic-languages/html/html.contribution.js +1 -1
  175. package/esm/vs/basic-languages/html/html.js +1 -1
  176. package/esm/vs/basic-languages/ini/ini.contribution.js +1 -1
  177. package/esm/vs/basic-languages/ini/ini.js +1 -1
  178. package/esm/vs/basic-languages/java/java.contribution.js +1 -1
  179. package/esm/vs/basic-languages/java/java.js +1 -1
  180. package/esm/vs/basic-languages/javascript/javascript.contribution.js +1 -1
  181. package/esm/vs/basic-languages/javascript/javascript.js +1 -1
  182. package/esm/vs/basic-languages/julia/julia.contribution.js +1 -1
  183. package/esm/vs/basic-languages/julia/julia.js +1 -1
  184. package/esm/vs/basic-languages/kotlin/kotlin.contribution.js +1 -1
  185. package/esm/vs/basic-languages/kotlin/kotlin.js +1 -1
  186. package/esm/vs/basic-languages/less/less.contribution.js +1 -1
  187. package/esm/vs/basic-languages/less/less.js +1 -1
  188. package/esm/vs/basic-languages/lexon/lexon.contribution.js +1 -1
  189. package/esm/vs/basic-languages/lexon/lexon.js +1 -1
  190. package/esm/vs/basic-languages/liquid/liquid.contribution.js +1 -1
  191. package/esm/vs/basic-languages/liquid/liquid.js +1 -1
  192. package/esm/vs/basic-languages/lua/lua.contribution.js +1 -1
  193. package/esm/vs/basic-languages/lua/lua.js +1 -1
  194. package/esm/vs/basic-languages/m3/m3.contribution.js +1 -1
  195. package/esm/vs/basic-languages/m3/m3.js +1 -1
  196. package/esm/vs/basic-languages/markdown/markdown.contribution.js +1 -1
  197. package/esm/vs/basic-languages/markdown/markdown.js +1 -1
  198. package/esm/vs/basic-languages/mdx/mdx.contribution.js +1 -1
  199. package/esm/vs/basic-languages/mdx/mdx.js +1 -1
  200. package/esm/vs/basic-languages/mips/mips.contribution.js +1 -1
  201. package/esm/vs/basic-languages/mips/mips.js +1 -1
  202. package/esm/vs/basic-languages/monaco.contribution.js +1 -1
  203. package/esm/vs/basic-languages/msdax/msdax.contribution.js +1 -1
  204. package/esm/vs/basic-languages/msdax/msdax.js +1 -1
  205. package/esm/vs/basic-languages/mysql/mysql.contribution.js +1 -1
  206. package/esm/vs/basic-languages/mysql/mysql.js +1 -1
  207. package/esm/vs/basic-languages/objective-c/objective-c.contribution.js +1 -1
  208. package/esm/vs/basic-languages/objective-c/objective-c.js +1 -1
  209. package/esm/vs/basic-languages/pascal/pascal.contribution.js +1 -1
  210. package/esm/vs/basic-languages/pascal/pascal.js +1 -1
  211. package/esm/vs/basic-languages/pascaligo/pascaligo.contribution.js +1 -1
  212. package/esm/vs/basic-languages/pascaligo/pascaligo.js +1 -1
  213. package/esm/vs/basic-languages/perl/perl.contribution.js +1 -1
  214. package/esm/vs/basic-languages/perl/perl.js +1 -1
  215. package/esm/vs/basic-languages/pgsql/pgsql.contribution.js +1 -1
  216. package/esm/vs/basic-languages/pgsql/pgsql.js +1 -1
  217. package/esm/vs/basic-languages/php/php.contribution.js +1 -1
  218. package/esm/vs/basic-languages/php/php.js +1 -1
  219. package/esm/vs/basic-languages/pla/pla.contribution.js +1 -1
  220. package/esm/vs/basic-languages/pla/pla.js +1 -1
  221. package/esm/vs/basic-languages/postiats/postiats.contribution.js +1 -1
  222. package/esm/vs/basic-languages/postiats/postiats.js +1 -1
  223. package/esm/vs/basic-languages/powerquery/powerquery.contribution.js +1 -1
  224. package/esm/vs/basic-languages/powerquery/powerquery.js +1 -1
  225. package/esm/vs/basic-languages/powershell/powershell.contribution.js +1 -1
  226. package/esm/vs/basic-languages/powershell/powershell.js +1 -1
  227. package/esm/vs/basic-languages/protobuf/protobuf.contribution.js +1 -1
  228. package/esm/vs/basic-languages/protobuf/protobuf.js +1 -1
  229. package/esm/vs/basic-languages/pug/pug.contribution.js +1 -1
  230. package/esm/vs/basic-languages/pug/pug.js +1 -1
  231. package/esm/vs/basic-languages/python/python.contribution.js +1 -1
  232. package/esm/vs/basic-languages/python/python.js +1 -1
  233. package/esm/vs/basic-languages/qsharp/qsharp.contribution.js +1 -1
  234. package/esm/vs/basic-languages/qsharp/qsharp.js +1 -1
  235. package/esm/vs/basic-languages/r/r.contribution.js +1 -1
  236. package/esm/vs/basic-languages/r/r.js +1 -1
  237. package/esm/vs/basic-languages/razor/razor.contribution.js +1 -1
  238. package/esm/vs/basic-languages/razor/razor.js +1 -1
  239. package/esm/vs/basic-languages/redis/redis.contribution.js +1 -1
  240. package/esm/vs/basic-languages/redis/redis.js +1 -1
  241. package/esm/vs/basic-languages/redshift/redshift.contribution.js +1 -1
  242. package/esm/vs/basic-languages/redshift/redshift.js +1 -1
  243. package/esm/vs/basic-languages/restructuredtext/restructuredtext.contribution.js +1 -1
  244. package/esm/vs/basic-languages/restructuredtext/restructuredtext.js +1 -1
  245. package/esm/vs/basic-languages/ruby/ruby.contribution.js +1 -1
  246. package/esm/vs/basic-languages/ruby/ruby.js +1 -1
  247. package/esm/vs/basic-languages/rust/rust.contribution.js +1 -1
  248. package/esm/vs/basic-languages/rust/rust.js +1 -1
  249. package/esm/vs/basic-languages/sb/sb.contribution.js +1 -1
  250. package/esm/vs/basic-languages/sb/sb.js +1 -1
  251. package/esm/vs/basic-languages/scala/scala.contribution.js +1 -1
  252. package/esm/vs/basic-languages/scala/scala.js +1 -1
  253. package/esm/vs/basic-languages/scheme/scheme.contribution.js +1 -1
  254. package/esm/vs/basic-languages/scheme/scheme.js +1 -1
  255. package/esm/vs/basic-languages/scss/scss.contribution.js +1 -1
  256. package/esm/vs/basic-languages/scss/scss.js +1 -1
  257. package/esm/vs/basic-languages/shell/shell.contribution.js +1 -1
  258. package/esm/vs/basic-languages/shell/shell.js +1 -1
  259. package/esm/vs/basic-languages/solidity/solidity.contribution.js +1 -1
  260. package/esm/vs/basic-languages/solidity/solidity.js +1 -1
  261. package/esm/vs/basic-languages/sophia/sophia.contribution.js +1 -1
  262. package/esm/vs/basic-languages/sophia/sophia.js +1 -1
  263. package/esm/vs/basic-languages/sparql/sparql.contribution.js +1 -1
  264. package/esm/vs/basic-languages/sparql/sparql.js +1 -1
  265. package/esm/vs/basic-languages/sql/sql.contribution.js +1 -1
  266. package/esm/vs/basic-languages/sql/sql.js +1 -1
  267. package/esm/vs/basic-languages/st/st.contribution.js +1 -1
  268. package/esm/vs/basic-languages/st/st.js +1 -1
  269. package/esm/vs/basic-languages/swift/swift.contribution.js +1 -1
  270. package/esm/vs/basic-languages/swift/swift.js +1 -1
  271. package/esm/vs/basic-languages/systemverilog/systemverilog.contribution.js +1 -1
  272. package/esm/vs/basic-languages/systemverilog/systemverilog.js +1 -1
  273. package/esm/vs/basic-languages/tcl/tcl.contribution.js +1 -1
  274. package/esm/vs/basic-languages/tcl/tcl.js +1 -1
  275. package/esm/vs/basic-languages/twig/twig.contribution.js +1 -1
  276. package/esm/vs/basic-languages/twig/twig.js +1 -1
  277. package/esm/vs/basic-languages/typescript/typescript.contribution.js +1 -1
  278. package/esm/vs/basic-languages/typescript/typescript.js +1 -1
  279. package/esm/vs/basic-languages/typespec/typespec.contribution.js +1 -1
  280. package/esm/vs/basic-languages/typespec/typespec.js +1 -1
  281. package/esm/vs/basic-languages/vb/vb.contribution.js +1 -1
  282. package/esm/vs/basic-languages/vb/vb.js +1 -1
  283. package/esm/vs/basic-languages/wgsl/wgsl.contribution.js +1 -1
  284. package/esm/vs/basic-languages/wgsl/wgsl.js +1 -1
  285. package/esm/vs/basic-languages/xml/xml.contribution.js +1 -1
  286. package/esm/vs/basic-languages/xml/xml.js +1 -1
  287. package/esm/vs/basic-languages/yaml/yaml.contribution.js +1 -1
  288. package/esm/vs/basic-languages/yaml/yaml.js +1 -1
  289. package/esm/vs/editor/browser/config/editorConfiguration.js +3 -2
  290. package/esm/vs/editor/browser/config/editorConfiguration.js.map +1 -1
  291. package/esm/vs/editor/browser/config/migrateOptions.js +1 -1
  292. package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
  293. package/esm/vs/editor/browser/controller/editContext/native/editContextFactory.js.map +1 -1
  294. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js +2 -0
  295. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js.map +1 -1
  296. package/esm/vs/editor/browser/controller/mouseHandler.js +2 -1
  297. package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
  298. package/esm/vs/editor/browser/controller/mouseTarget.js +7 -0
  299. package/esm/vs/editor/browser/controller/mouseTarget.js.map +1 -1
  300. package/esm/vs/editor/browser/controller/pointerHandler.js.map +1 -1
  301. package/esm/vs/editor/browser/coreCommands.js.map +1 -1
  302. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  303. package/esm/vs/editor/browser/editorDom.js.map +1 -1
  304. package/esm/vs/editor/browser/editorExtensions.js.map +1 -1
  305. package/esm/vs/editor/browser/gpu/gpuUtils.js +1 -0
  306. package/esm/vs/editor/browser/gpu/gpuUtils.js.map +1 -1
  307. package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -0
  308. package/esm/vs/editor/browser/gpu/viewGpuContext.js.map +1 -1
  309. package/esm/vs/editor/browser/services/abstractCodeEditorService.js.map +1 -1
  310. package/esm/vs/editor/browser/services/bulkEditService.js.map +1 -1
  311. package/esm/vs/editor/browser/services/codeEditorService.js.map +1 -1
  312. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  313. package/esm/vs/editor/browser/services/hoverService/hover.css +2 -0
  314. package/esm/vs/editor/browser/services/hoverService/hoverService.js.map +1 -1
  315. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +1 -1
  316. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
  317. package/esm/vs/editor/browser/services/inlineCompletionsService.js +8 -8
  318. package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
  319. package/esm/vs/editor/browser/services/openerService.js.map +1 -1
  320. package/esm/vs/editor/browser/view/viewLayer.js +1 -1
  321. package/esm/vs/editor/browser/view/viewLayer.js.map +1 -1
  322. package/esm/vs/editor/browser/view.js.map +1 -1
  323. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +1 -0
  324. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  325. package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +1 -0
  326. package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js.map +1 -1
  327. package/esm/vs/editor/browser/widget/codeEditor/codeEditorContributions.js.map +1 -1
  328. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +4 -1
  329. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  330. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -0
  331. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js.map +1 -1
  332. package/esm/vs/editor/browser/widget/diffEditor/delegatingEditorImpl.js.map +1 -1
  333. package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js +1 -0
  334. package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js.map +1 -1
  335. package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js +1 -0
  336. package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js.map +1 -1
  337. package/esm/vs/editor/browser/widget/diffEditor/utils.js +2 -0
  338. package/esm/vs/editor/browser/widget/diffEditor/utils.js.map +1 -1
  339. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -0
  340. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
  341. package/esm/vs/editor/common/config/editorOptions.js +122 -68
  342. package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
  343. package/esm/vs/editor/common/config/fontInfo.js +32 -16
  344. package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
  345. package/esm/vs/editor/common/config/fontInfoFromSettings.js +16 -0
  346. package/esm/vs/editor/common/config/fontInfoFromSettings.js.map +1 -0
  347. package/esm/vs/editor/common/core/edits/edit.js +1 -0
  348. package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
  349. package/esm/vs/editor/common/core/edits/stringEdit.js +2 -0
  350. package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
  351. package/esm/vs/editor/common/core/position.js +1 -1
  352. package/esm/vs/editor/common/core/position.js.map +1 -1
  353. package/esm/vs/editor/common/core/range.js +1 -1
  354. package/esm/vs/editor/common/core/range.js.map +1 -1
  355. package/esm/vs/editor/common/core/selection.js +1 -1
  356. package/esm/vs/editor/common/core/selection.js.map +1 -1
  357. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  358. package/esm/vs/editor/common/editorCommon.js.map +1 -1
  359. package/esm/vs/editor/common/languages.js +1 -1
  360. package/esm/vs/editor/common/languages.js.map +1 -1
  361. package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js +14 -0
  362. package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js.map +1 -1
  363. package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js +2 -0
  364. package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js.map +1 -1
  365. package/esm/vs/editor/common/model/textModel.js +1 -1
  366. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  367. package/esm/vs/editor/common/model.js +1 -1
  368. package/esm/vs/editor/common/model.js.map +1 -1
  369. package/esm/vs/editor/common/services/editorBaseApi.js.map +1 -1
  370. package/esm/vs/editor/common/services/editorWebWorker.js +1 -0
  371. package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
  372. package/esm/vs/editor/common/services/editorWorkerHost.js.map +1 -1
  373. package/esm/vs/editor/common/services/modelService.js +14 -21
  374. package/esm/vs/editor/common/services/modelService.js.map +1 -1
  375. package/esm/vs/editor/common/textModelEditSource.js +2 -0
  376. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  377. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +40 -1
  378. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
  379. package/esm/vs/editor/common/viewModel/viewModelImpl.js +2 -1
  380. package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
  381. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +1 -1
  382. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js.map +1 -1
  383. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +1 -1
  384. package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
  385. package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +1 -0
  386. package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
  387. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +1 -0
  388. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
  389. package/esm/vs/editor/contrib/find/browser/findModel.js +1 -0
  390. package/esm/vs/editor/contrib/find/browser/findModel.js.map +1 -1
  391. package/esm/vs/editor/contrib/find/browser/findWidget.css +5 -5
  392. package/esm/vs/editor/contrib/folding/browser/folding.css +4 -4
  393. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
  394. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  395. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js.map +1 -1
  396. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +30 -14
  397. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
  398. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +4 -3
  399. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  400. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +56 -7
  401. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  402. package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js +1 -0
  403. package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js.map +1 -1
  404. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +2 -0
  405. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  406. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -0
  407. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  408. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +1 -1
  409. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
  410. package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
  411. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.css +2 -0
  412. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +2 -0
  413. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
  414. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js.map +1 -1
  415. package/esm/vs/editor/editor.api.d.ts +8 -8
  416. package/esm/vs/editor/editor.api.js +4 -0
  417. package/esm/vs/editor/editor.api.js.map +1 -1
  418. package/esm/vs/editor/editor.main.js +1 -1
  419. package/esm/vs/editor/editor.worker.js +1 -1
  420. package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
  421. package/esm/vs/editor/standalone/browser/standaloneEditor.js +37 -0
  422. package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
  423. package/esm/vs/editor/standalone/browser/standaloneLanguages.js +37 -0
  424. package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
  425. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  426. package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
  427. package/esm/vs/editor/standalone/common/monarch/monarchCompile.js +3 -0
  428. package/esm/vs/editor/standalone/common/monarch/monarchCompile.js.map +1 -1
  429. package/esm/vs/language/css/css.worker.js +1 -1
  430. package/esm/vs/language/css/cssMode.js +1 -1
  431. package/esm/vs/language/css/monaco.contribution.js +1 -1
  432. package/esm/vs/language/html/html.worker.js +1 -1
  433. package/esm/vs/language/html/htmlMode.js +1 -1
  434. package/esm/vs/language/html/monaco.contribution.js +1 -1
  435. package/esm/vs/language/json/json.worker.js +1 -1
  436. package/esm/vs/language/json/jsonMode.js +1 -1
  437. package/esm/vs/language/json/monaco.contribution.js +1 -1
  438. package/esm/vs/language/typescript/monaco.contribution.js +1 -1
  439. package/esm/vs/language/typescript/ts.worker.js +1 -1
  440. package/esm/vs/language/typescript/tsMode.js +1 -1
  441. package/esm/vs/platform/accessibility/browser/accessibilityService.js +2 -2
  442. package/esm/vs/platform/accessibility/browser/accessibilityService.js.map +1 -1
  443. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  444. package/esm/vs/platform/commands/common/commands.js.map +1 -1
  445. package/esm/vs/platform/contextkey/common/contextkey.js +5 -0
  446. package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
  447. package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js +1 -0
  448. package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js.map +1 -1
  449. package/esm/vs/platform/dnd/browser/dnd.js +2 -0
  450. package/esm/vs/platform/dnd/browser/dnd.js.map +1 -1
  451. package/esm/vs/platform/instantiation/common/descriptors.js.map +1 -1
  452. package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
  453. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -0
  454. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  455. package/esm/vs/platform/list/browser/listService.js +5 -0
  456. package/esm/vs/platform/list/browser/listService.js.map +1 -1
  457. package/esm/vs/platform/log/common/log.js.map +1 -1
  458. package/esm/vs/platform/log/common/logService.js.map +1 -1
  459. package/esm/vs/platform/observable/common/wrapInHotClass.js +2 -0
  460. package/esm/vs/platform/observable/common/wrapInHotClass.js.map +1 -1
  461. package/esm/vs/platform/observable/common/wrapInReloadableClass.js +3 -0
  462. package/esm/vs/platform/observable/common/wrapInReloadableClass.js.map +1 -1
  463. package/esm/vs/platform/product/common/product.js +69 -0
  464. package/esm/vs/platform/product/common/product.js.map +1 -0
  465. package/esm/vs/platform/quickinput/browser/quickInput.js +1 -1
  466. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  467. package/min/vs/assets/{css.worker-cO8rX8Iy.js → css.worker-BVuiDuBy.js} +2 -2
  468. package/min/vs/assets/{editor.worker-DM0G1eFj.js → editor.worker-jxNOmuJM.js} +9 -9
  469. package/min/vs/assets/{html.worker-BruuIJkK.js → html.worker-DjzoR3Nq.js} +12 -12
  470. package/min/vs/assets/{json.worker-DghZTZS7.js → json.worker-BHO4PP-I.js} +16 -16
  471. package/min/vs/assets/{ts.worker-C4E4vgbE.js → ts.worker-BbmlTFxS.js} +24 -24
  472. package/min/vs/basic-languages/monaco.contribution.js +1 -1
  473. package/min/vs/{cssMode-CGp6dFmI.js → cssMode-CihSYqKE.js} +1 -1
  474. package/min/vs/editor/editor.main.css +1 -1
  475. package/min/vs/editor/editor.main.js +1 -1
  476. package/min/vs/{editor.api-i0YVFWkl.js → editor.api-BBvXWtgc.js} +171 -171
  477. package/min/vs/{freemarker2-CJME-ah8.js → freemarker2-Ce3sL2WS.js} +1 -1
  478. package/min/vs/{handlebars-NccI6MVO.js → handlebars-Bb3ZjWAt.js} +1 -1
  479. package/min/vs/{html-K7M-xuod.js → html-CsBZo_Ud.js} +1 -1
  480. package/min/vs/{htmlMode-DtjCNH-N.js → htmlMode-BaDSxMv5.js} +1 -1
  481. package/min/vs/{javascript-CUpTMdAr.js → javascript-2_kuM68q.js} +1 -1
  482. package/min/vs/{jsonMode-CJjR_ECa.js → jsonMode-PX5jRR_L.js} +1 -1
  483. package/min/vs/language/css/monaco.contribution.js +1 -1
  484. package/min/vs/language/html/monaco.contribution.js +1 -1
  485. package/min/vs/language/json/monaco.contribution.js +1 -1
  486. package/min/vs/language/typescript/monaco.contribution.js +1 -1
  487. package/min/vs/{liquid-STktYroN.js → liquid-DREB9HpI.js} +1 -1
  488. package/min/vs/{lspLanguageFeatures-A02kBDb6.js → lspLanguageFeatures-D8gqdJoR.js} +1 -1
  489. package/min/vs/{mdx-C6mq4H94.js → mdx-BNAJfpzr.js} +1 -1
  490. package/min/vs/nls.messages.de.js +1 -1
  491. package/min/vs/nls.messages.es.js +1 -1
  492. package/min/vs/nls.messages.fr.js +1 -1
  493. package/min/vs/nls.messages.it.js +1 -1
  494. package/min/vs/nls.messages.ja.js +1 -1
  495. package/min/vs/nls.messages.ko.js +1 -1
  496. package/min/vs/nls.messages.ru.js +1 -1
  497. package/min/vs/nls.messages.zh-cn.js +1 -1
  498. package/min/vs/nls.messages.zh-tw.js +1 -1
  499. package/min/vs/{python-B-Y2SC3b.js → python-CLgnWbAg.js} +1 -1
  500. package/min/vs/{razor-JzN5FpSg.js → razor-pD9XaIj8.js} +1 -1
  501. package/min/vs/{tsMode-i88JHxDY.js → tsMode-DDFENmoA.js} +1 -1
  502. package/min/vs/{typescript-4zug7YwV.js → typescript-CWlXqxY6.js} +1 -1
  503. package/min/vs/{workers-CbP2cVmy.js → workers-Da5d5FZY.js} +1 -1
  504. package/min/vs/{xml-DRHZuZwg.js → xml-B8kusTdt.js} +1 -1
  505. package/min/vs/{yaml-CkWIGXBM.js → yaml-CxSYV94R.js} +1 -1
  506. package/monaco.d.ts +8 -8
  507. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/rename/browser/renameWidget.ts"],"names":[],"mappings":"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","file":"renameWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { StandardKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { getBaseLayerHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate2.js';\nimport { renderIcon } from '../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { IListRenderer, IListVirtualDelegate } from '../../../../base/browser/ui/list/list.js';\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isDefined } from '../../../../base/common/types.js';\nimport './renameWidget.css';\nimport * as domFontInfo from '../../../browser/config/domFontInfo.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { FontInfo } from '../../../common/config/fontInfo.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { ScrollType } from '../../../common/editorCommon.js';\nimport { NewSymbolName, NewSymbolNameTag, NewSymbolNameTriggerKind, ProviderResult } from '../../../common/languages.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { getListStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport {\n\teditorWidgetBackground,\n\tinputBackground,\n\tinputBorder,\n\tinputForeground,\n\tquickInputListFocusBackground,\n\tquickInputListFocusForeground,\n\twidgetBorder,\n\twidgetShadow } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IColorTheme, IThemeService } from '../../../../platform/theme/common/themeService.js';\n\n/** for debugging */\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\n\nexport const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey<boolean>('renameInputVisible', false, nls.localize('renameInputVisible', \"Whether the rename input widget is visible\"));\nexport const CONTEXT_RENAME_INPUT_FOCUSED = new RawContextKey<boolean>('renameInputFocused', false, nls.localize('renameInputFocused', \"Whether the rename input widget is focused\"));\n\n/**\n * \"Source\" of the new name:\n * - 'inputField' - user entered the new name\n * - 'renameSuggestion' - user picked from rename suggestions\n * - 'userEditedRenameSuggestion' - user _likely_ edited a rename suggestion (\"likely\" because when input started being edited, a rename suggestion had focus)\n */\nexport type NewNameSource =\n\t| { k: 'inputField' }\n\t| { k: 'renameSuggestion' }\n\t| { k: 'userEditedRenameSuggestion' };\n\n/**\n * Various statistics regarding rename input field\n */\nexport type RenameWidgetStats = {\n\tnRenameSuggestions: number;\n\tsource: NewNameSource;\n\ttimeBeforeFirstInputFieldEdit: number | undefined;\n\tnRenameSuggestionsInvocations: number;\n\thadAutomaticRenameSuggestionsInvocation: boolean;\n};\n\nexport type RenameWidgetResult = {\n\t/**\n\t * The new name to be used\n\t */\n\tnewName: string;\n\twantsPreview?: boolean;\n\tstats: RenameWidgetStats;\n};\n\ninterface IRenameWidget {\n}\n\nexport class RenameWidget implements IRenameWidget, IContentWidget, IDisposable {\n\n\t// implement IContentWidget\n\treadonly allowEditorOverflow: boolean = true;\n\n\t// UI state\n\n\tprivate _domNode?: HTMLElement;\n\tprivate _inputWithButton: InputWithButton;\n\tprivate _renameCandidateListView?: RenameCandidateListView;\n\tprivate _label?: HTMLDivElement;\n\n\tprivate _nPxAvailableAbove?: number;\n\tprivate _nPxAvailableBelow?: number;\n\n\t// Model state\n\n\tprivate _position?: Position;\n\tprivate _currentName?: string;\n\t/** Is true if input field got changes when a rename candidate was focused; otherwise, false */\n\tprivate _isEditingRenameCandidate: boolean;\n\n\tprivate readonly _candidates: Set<string>;\n\n\tprivate _visible?: boolean;\n\n\t/** must be reset at session start */\n\tprivate _beforeFirstInputFieldEditSW: StopWatch;\n\n\t/**\n\t * Milliseconds before user edits the input field for the first time\n\t * @remarks must be set once per session\n\t */\n\tprivate _timeBeforeFirstInputFieldEdit: number | undefined;\n\n\tprivate _nRenameSuggestionsInvocations: number;\n\n\tprivate _hadAutomaticRenameSuggestionsInvocation: boolean;\n\n\tprivate _renameCandidateProvidersCts: CancellationTokenSource | undefined;\n\tprivate _renameCts: CancellationTokenSource | undefined;\n\n\tprivate readonly _visibleContextKey: IContextKey<boolean>;\n\tprivate readonly _disposables = new DisposableStore();\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _acceptKeybindings: [string, string],\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t) {\n\t\tthis._visibleContextKey = CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tthis._candidates = new Set();\n\n\t\tthis._beforeFirstInputFieldEditSW = new StopWatch();\n\n\t\tthis._inputWithButton = new InputWithButton();\n\t\tthis._disposables.add(this._inputWithButton);\n\n\t\tthis._editor.addContentWidget(this);\n\n\t\tthis._disposables.add(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.add(_themeService.onDidColorThemeChange(this._updateStyles, this));\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t\tthis._editor.removeContentWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn '__renameInputWidget';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\tif (!this._domNode) {\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'monaco-editor rename-box';\n\n\t\t\tthis._domNode.appendChild(this._inputWithButton.domNode);\n\n\t\t\tthis._renameCandidateListView = this._disposables.add(\n\t\t\t\tnew RenameCandidateListView(this._domNode, {\n\t\t\t\t\tfontInfo: this._editor.getOption(EditorOption.fontInfo),\n\t\t\t\t\tonFocusChange: (newSymbolName: string) => {\n\t\t\t\t\t\tthis._inputWithButton.input.value = newSymbolName;\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: reset\n\t\t\t\t\t},\n\t\t\t\t\tonSelectionChange: () => {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: because user picked a rename suggestion\n\t\t\t\t\t\tthis.acceptInput(false); // we don't allow preview with mouse click for now\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._disposables.add(\n\t\t\t\tthis._inputWithButton.onDidInputChange(() => {\n\t\t\t\t\tif (this._renameCandidateListView?.focusedCandidate !== undefined) {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis._timeBeforeFirstInputFieldEdit ??= this._beforeFirstInputFieldEditSW.elapsed();\n\t\t\t\t\tif (this._renameCandidateProvidersCts?.token.isCancellationRequested === false) {\n\t\t\t\t\t\tthis._renameCandidateProvidersCts.cancel();\n\t\t\t\t\t}\n\t\t\t\t\tthis._renameCandidateListView?.clearFocus();\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._label = document.createElement('div');\n\t\t\tthis._label.className = 'rename-label';\n\t\t\tthis._domNode.appendChild(this._label);\n\n\t\t\tthis._updateFont();\n\t\t\tthis._updateStyles(this._themeService.getColorTheme());\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tprivate _updateStyles(theme: IColorTheme): void {\n\t\tif (!this._domNode) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst widgetShadowColor = theme.getColor(widgetShadow);\n\t\tconst widgetBorderColor = theme.getColor(widgetBorder);\n\t\tthis._domNode.style.backgroundColor = String(theme.getColor(editorWidgetBackground) ?? '');\n\t\tthis._domNode.style.boxShadow = widgetShadowColor ? ` 0 0 8px 2px ${widgetShadowColor}` : '';\n\t\tthis._domNode.style.border = widgetBorderColor ? `1px solid ${widgetBorderColor}` : '';\n\t\tthis._domNode.style.color = String(theme.getColor(inputForeground) ?? '');\n\n\t\tconst border = theme.getColor(inputBorder);\n\n\t\tthis._inputWithButton.domNode.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.input.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.domNode.style.borderWidth = border ? '1px' : '0px';\n\t\tthis._inputWithButton.domNode.style.borderStyle = border ? 'solid' : 'none';\n\t\tthis._inputWithButton.domNode.style.borderColor = border?.toString() ?? 'none';\n\t}\n\n\tprivate _updateFont(): void {\n\t\tif (this._domNode === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tassertType(this._label !== undefined, 'RenameWidget#_updateFont: _label must not be undefined given _domNode is defined');\n\n\t\tthis._editor.applyFontInfo(this._inputWithButton.input);\n\n\t\tconst fontInfo = this._editor.getOption(EditorOption.fontInfo);\n\t\tthis._label.style.fontSize = `${this._computeLabelFontSize(fontInfo.fontSize)}px`;\n\t}\n\n\tprivate _computeLabelFontSize(editorFontSize: number) {\n\t\treturn editorFontSize * 0.8;\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\tif (!this._visible) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // @ulugbekna: shouldn't happen\n\t\t\t!this._editor.getDomNode() // @ulugbekna: can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst bodyBox = dom.getClientArea(this.getDomNode().ownerDocument.body);\n\t\tconst editorBox = dom.getDomNodePagePosition(this._editor.getDomNode());\n\n\t\tconst cursorBoxTop = this._getTopForPosition();\n\n\t\tthis._nPxAvailableAbove = cursorBoxTop + editorBox.top;\n\t\tthis._nPxAvailableBelow = bodyBox.height - this._nPxAvailableAbove;\n\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst { totalHeight: candidateViewHeight } = RenameCandidateView.getLayoutInfo({ lineHeight });\n\n\t\tconst positionPreference = this._nPxAvailableBelow > candidateViewHeight * 6 /* approximate # of candidates to fit in (inclusive of rename input box & rename label) */\n\t\t\t? [ContentWidgetPositionPreference.BELOW, ContentWidgetPositionPreference.ABOVE]\n\t\t\t: [ContentWidgetPositionPreference.ABOVE, ContentWidgetPositionPreference.BELOW];\n\n\t\treturn {\n\t\t\tposition: this._position!,\n\t\t\tpreference: positionPreference,\n\t\t};\n\t}\n\n\tbeforeRender(): IDimension | null {\n\t\tconst [accept, preview] = this._acceptKeybindings;\n\t\tthis._label!.innerText = nls.localize({ key: 'label', comment: ['placeholders are keybindings, e.g \"F2 to Rename, Shift+F2 to Preview\"'] }, \"{0} to Rename, {1} to Preview\", this._keybindingService.lookupKeybinding(accept)?.getLabel(), this._keybindingService.lookupKeybinding(preview)?.getLabel());\n\n\t\tthis._domNode!.style.minWidth = `200px`; // to prevent from widening when candidates come in\n\n\t\treturn null;\n\t}\n\n\tafterRender(position: ContentWidgetPositionPreference | null): void {\n\t\t// FIXME@ulugbekna: commenting trace log out until we start unmounting the widget from editor properly - https://github.com/microsoft/vscode/issues/226975\n\t\t// this._trace('invoking afterRender, position: ', position ? 'not null' : 'null');\n\t\tif (position === null) {\n\t\t\t// cancel rename when input widget isn't rendered anymore\n\t\t\tthis.cancelInput(true, 'afterRender (because position is null)');\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // shouldn't happen\n\t\t\t!this._editor.getDomNode() // can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tassertType(this._renameCandidateListView);\n\t\tassertType(this._nPxAvailableAbove !== undefined);\n\t\tassertType(this._nPxAvailableBelow !== undefined);\n\n\t\tconst inputBoxHeight = dom.getTotalHeight(this._inputWithButton.domNode);\n\n\t\tconst labelHeight = dom.getTotalHeight(this._label!);\n\n\t\tlet totalHeightAvailable: number;\n\t\tif (position === ContentWidgetPositionPreference.BELOW) {\n\t\t\ttotalHeightAvailable = this._nPxAvailableBelow;\n\t\t} else {\n\t\t\ttotalHeightAvailable = this._nPxAvailableAbove;\n\t\t}\n\n\t\tthis._renameCandidateListView!.layout({\n\t\t\theight: totalHeightAvailable - labelHeight - inputBoxHeight,\n\t\t\twidth: dom.getTotalWidth(this._inputWithButton.domNode),\n\t\t});\n\t}\n\n\n\tprivate _currentAcceptInput?: (wantsPreview: boolean) => void;\n\tprivate _currentCancelInput?: (focusEditor: boolean) => void;\n\tprivate _requestRenameCandidatesOnce?: (triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[];\n\n\tacceptInput(wantsPreview: boolean): void {\n\t\tthis._trace(`invoking acceptInput`);\n\t\tthis._currentAcceptInput?.(wantsPreview);\n\t}\n\n\tcancelInput(focusEditor: boolean, caller: string): void {\n\t\t// this._trace(`invoking cancelInput, caller: ${caller}, _currentCancelInput: ${this._currentAcceptInput ? 'not undefined' : 'undefined'}`);\n\t\tthis._currentCancelInput?.(focusEditor);\n\t}\n\n\tfocusNextRenameSuggestion() {\n\t\tif (!this._renameCandidateListView?.focusNext()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\tfocusPreviousRenameSuggestion() { // TODO@ulugbekna: this and focusNext should set the original name if no candidate is focused\n\t\tif (!this._renameCandidateListView?.focusPrevious()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\t/**\n\t * @param requestRenameCandidates is `undefined` when there are no rename suggestion providers\n\t */\n\tgetInput(\n\t\twhere: IRange,\n\t\tcurrentName: string,\n\t\tsupportPreview: boolean,\n\t\trequestRenameCandidates: undefined | ((triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[]),\n\t\tcts: CancellationTokenSource\n\t): Promise<RenameWidgetResult | boolean> {\n\n\t\tconst { start: selectionStart, end: selectionEnd } = this._getSelection(where, currentName);\n\n\t\tthis._renameCts = cts;\n\n\t\tconst disposeOnDone = new DisposableStore();\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tif (requestRenameCandidates === undefined) {\n\t\t\tthis._inputWithButton.button.style.display = 'none';\n\t\t} else {\n\t\t\tthis._inputWithButton.button.style.display = 'flex';\n\n\t\t\tthis._requestRenameCandidatesOnce = requestRenameCandidates;\n\n\t\t\tthis._requestRenameCandidates(currentName, false);\n\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\t'click',\n\t\t\t\t() => this._requestRenameCandidates(currentName, true)\n\t\t\t));\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\tdom.EventType.KEY_DOWN,\n\t\t\t\t(e) => {\n\t\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\n\t\t\t\t\tif (keyEvent.equals(KeyCode.Enter) || keyEvent.equals(KeyCode.Space)) {\n\t\t\t\t\t\tkeyEvent.stopPropagation();\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t\tthis._requestRenameCandidates(currentName, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._domNode!.classList.toggle('preview', supportPreview);\n\n\t\tthis._position = new Position(where.startLineNumber, where.startColumn);\n\t\tthis._currentName = currentName;\n\n\t\tthis._inputWithButton.input.value = currentName;\n\t\tthis._inputWithButton.input.setAttribute('selectionStart', selectionStart.toString());\n\t\tthis._inputWithButton.input.setAttribute('selectionEnd', selectionEnd.toString());\n\t\tthis._inputWithButton.input.size = Math.max((where.endColumn - where.startColumn) * 1.1, 20); // determines width\n\n\t\tthis._beforeFirstInputFieldEditSW.reset();\n\n\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tthis._renameCts = undefined;\n\t\t\tcts.dispose(true);\n\t\t})); // @ulugbekna: this may result in `this.cancelInput` being called twice, but it should be safe since we set it to undefined after 1st call\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t\t\tthis._renameCandidateProvidersCts = undefined;\n\t\t\t}\n\t\t}));\n\n\t\tdisposeOnDone.add(toDisposable(() => this._candidates.clear()));\n\n\t\tconst inputResult = new DeferredPromise<RenameWidgetResult | boolean>();\n\n\t\tinputResult.p.finally(() => {\n\t\t\tdisposeOnDone.dispose();\n\t\t\tthis._hide();\n\t\t});\n\n\t\tthis._currentCancelInput = (focusEditor) => {\n\t\t\tthis._trace('invoking _currentCancelInput');\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\t// fixme session cleanup\n\t\t\tthis._renameCandidateListView?.clearCandidates();\n\t\t\tinputResult.complete(focusEditor);\n\t\t\treturn true;\n\t\t};\n\n\t\tthis._currentAcceptInput = (wantsPreview) => {\n\t\t\tthis._trace('invoking _currentAcceptInput');\n\t\t\tassertType(this._renameCandidateListView !== undefined);\n\n\t\t\tconst nRenameSuggestions = this._renameCandidateListView.nCandidates;\n\n\t\t\tlet newName: string;\n\t\t\tlet source: NewNameSource;\n\t\t\tconst focusedCandidate = this._renameCandidateListView.focusedCandidate;\n\t\t\tif (focusedCandidate !== undefined) {\n\t\t\t\tthis._trace('using new name from renameSuggestion');\n\t\t\t\tnewName = focusedCandidate;\n\t\t\t\tsource = { k: 'renameSuggestion' };\n\t\t\t} else {\n\t\t\t\tthis._trace('using new name from inputField');\n\t\t\t\tnewName = this._inputWithButton.input.value;\n\t\t\t\tsource = this._isEditingRenameCandidate ? { k: 'userEditedRenameSuggestion' } : { k: 'inputField' };\n\t\t\t}\n\n\t\t\tif (newName === currentName || newName.trim().length === 0 /* is just whitespace */) {\n\t\t\t\tthis.cancelInput(true, '_currentAcceptInput (because newName === value || newName.trim().length === 0)');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\tthis._renameCandidateListView.clearCandidates();\n\t\t\t// fixme session cleanup\n\n\t\t\tinputResult.complete({\n\t\t\t\tnewName,\n\t\t\t\twantsPreview: supportPreview && wantsPreview,\n\t\t\t\tstats: {\n\t\t\t\t\tsource,\n\t\t\t\t\tnRenameSuggestions,\n\t\t\t\t\ttimeBeforeFirstInputFieldEdit: this._timeBeforeFirstInputFieldEdit,\n\t\t\t\t\tnRenameSuggestionsInvocations: this._nRenameSuggestionsInvocations,\n\t\t\t\t\thadAutomaticRenameSuggestionsInvocation: this._hadAutomaticRenameSuggestionsInvocation,\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tdisposeOnDone.add(cts.token.onCancellationRequested(() => this.cancelInput(true, 'cts.token.onCancellationRequested')));\n\t\tif (!_sticky) {\n\t\t\tdisposeOnDone.add(this._editor.onDidBlurEditorWidget(() => this.cancelInput(!this._domNode?.ownerDocument.hasFocus(), 'editor.onDidBlurEditorWidget')));\n\t\t}\n\n\t\tthis._show();\n\n\t\treturn inputResult.p;\n\t}\n\n\tprivate _requestRenameCandidates(currentName: string, isManuallyTriggered: boolean) {\n\t\tif (this._requestRenameCandidatesOnce === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t}\n\n\t\tassertType(this._renameCts);\n\n\t\tif (this._inputWithButton.buttonState !== 'stop') {\n\n\t\t\tthis._renameCandidateProvidersCts = new CancellationTokenSource();\n\n\t\t\tconst triggerKind = isManuallyTriggered ? NewSymbolNameTriggerKind.Invoke : NewSymbolNameTriggerKind.Automatic;\n\t\t\tconst candidates = this._requestRenameCandidatesOnce(triggerKind, this._renameCandidateProvidersCts.token);\n\n\t\t\tif (candidates.length === 0) {\n\t\t\t\tthis._inputWithButton.setSparkleButton();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isManuallyTriggered) {\n\t\t\t\tthis._hadAutomaticRenameSuggestionsInvocation = true;\n\t\t\t}\n\n\t\t\tthis._nRenameSuggestionsInvocations += 1;\n\n\t\t\tthis._inputWithButton.setStopButton();\n\n\t\t\tthis._updateRenameCandidates(candidates, currentName, this._renameCts.token);\n\t\t}\n\t}\n\n\t/**\n\t * This allows selecting only part of the symbol name in the input field based on the selection in the editor\n\t */\n\tprivate _getSelection(where: IRange, currentName: string): { start: number; end: number } {\n\t\tassertType(this._editor.hasModel());\n\n\t\tconst selection = this._editor.getSelection();\n\t\tlet start = 0;\n\t\tlet end = currentName.length;\n\n\t\tif (!Range.isEmpty(selection) && !Range.spansMultipleLines(selection) && Range.containsRange(where, selection)) {\n\t\t\tstart = Math.max(0, selection.startColumn - where.startColumn);\n\t\t\tend = Math.min(where.endColumn, selection.endColumn) - where.startColumn;\n\t\t}\n\n\t\treturn { start, end };\n\t}\n\n\tprivate _show(): void {\n\t\tthis._trace('invoking _show');\n\t\tthis._editor.revealLineInCenterIfOutsideViewport(this._position!.lineNumber, ScrollType.Smooth);\n\t\tthis._visible = true;\n\t\tthis._visibleContextKey.set(true);\n\t\tthis._editor.layoutContentWidget(this);\n\n\t\t// TODO@ulugbekna: could this be simply run in `afterRender`?\n\t\tsetTimeout(() => {\n\t\t\tthis._inputWithButton.input.focus();\n\t\t\tthis._inputWithButton.input.setSelectionRange(\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionStart')!),\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionEnd')!)\n\t\t\t);\n\t\t}, 100);\n\t}\n\n\tprivate async _updateRenameCandidates(candidates: ProviderResult<NewSymbolName[]>[], currentName: string, token: CancellationToken) {\n\t\tconst trace = (...args: any[]) => this._trace('_updateRenameCandidates', ...args);\n\n\t\ttrace('start');\n\t\tconst namesListResults = await raceCancellation(Promise.allSettled(candidates), token);\n\n\t\tthis._inputWithButton.setSparkleButton();\n\n\t\tif (namesListResults === undefined) {\n\t\t\ttrace('returning early - received updateRenameCandidates results - undefined');\n\t\t\treturn;\n\t\t}\n\n\t\tconst newNames = namesListResults.flatMap(namesListResult =>\n\t\t\tnamesListResult.status === 'fulfilled' && isDefined(namesListResult.value)\n\t\t\t\t? namesListResult.value\n\t\t\t\t: []\n\t\t);\n\t\ttrace(`received updateRenameCandidates results - total (unfiltered) ${newNames.length} candidates.`);\n\n\t\t// deduplicate and filter out the current value\n\n\t\tconst distinctNames = arrays.distinct(newNames, v => v.newSymbolName);\n\t\ttrace(`distinct candidates - ${distinctNames.length} candidates.`);\n\n\t\tconst validDistinctNames = distinctNames.filter(({ newSymbolName }) => newSymbolName.trim().length > 0 && newSymbolName !== this._inputWithButton.input.value && newSymbolName !== currentName && !this._candidates.has(newSymbolName));\n\t\ttrace(`valid distinct candidates - ${newNames.length} candidates.`);\n\n\t\tvalidDistinctNames.forEach(n => this._candidates.add(n.newSymbolName));\n\n\t\tif (validDistinctNames.length < 1) {\n\t\t\ttrace('returning early - no valid distinct candidates');\n\t\t\treturn;\n\t\t}\n\n\t\t// show the candidates\n\t\ttrace('setting candidates');\n\t\tthis._renameCandidateListView!.setCandidates(validDistinctNames);\n\n\t\t// ask editor to re-layout given that the widget is now of a different size after rendering rename candidates\n\t\ttrace('asking editor to re-layout');\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _hide(): void {\n\t\tthis._trace('invoked _hide');\n\t\tthis._visible = false;\n\t\tthis._visibleContextKey.reset();\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _getTopForPosition(): number {\n\t\tconst visibleRanges = this._editor.getVisibleRanges();\n\t\tlet firstLineInViewport: number;\n\t\tif (visibleRanges.length > 0) {\n\t\t\tfirstLineInViewport = visibleRanges[0].startLineNumber;\n\t\t} else {\n\t\t\tthis._logService.warn('RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty');\n\t\t\tfirstLineInViewport = Math.max(1, this._position!.lineNumber - 5); // @ulugbekna: fallback to current line minus 5\n\t\t}\n\t\treturn this._editor.getTopForLineNumber(this._position!.lineNumber) - this._editor.getTopForLineNumber(firstLineInViewport);\n\t}\n\n\tprivate _trace(...args: unknown[]) {\n\t\tthis._logService.trace('RenameWidget', ...args);\n\t}\n}\n\nclass RenameCandidateListView {\n\n\t/** Parent node of the list widget; needed to control # of list elements visible */\n\tprivate readonly _listContainer: HTMLDivElement;\n\tprivate readonly _listWidget: List<NewSymbolName>;\n\n\tprivate _lineHeight: number;\n\tprivate _availableHeight: number;\n\tprivate _minimumWidth: number;\n\tprivate _typicalHalfwidthCharacterWidth: number;\n\n\tprivate readonly _disposables: DisposableStore;\n\n\t// FIXME@ulugbekna: rewrite using event emitters\n\tconstructor(parent: HTMLElement, opts: { fontInfo: FontInfo; onFocusChange: (newSymbolName: string) => void; onSelectionChange: () => void }) {\n\n\t\tthis._disposables = new DisposableStore();\n\n\t\tthis._availableHeight = 0;\n\t\tthis._minimumWidth = 0;\n\n\t\tthis._lineHeight = opts.fontInfo.lineHeight;\n\t\tthis._typicalHalfwidthCharacterWidth = opts.fontInfo.typicalHalfwidthCharacterWidth;\n\n\t\tthis._listContainer = document.createElement('div');\n\t\tthis._listContainer.className = 'rename-box rename-candidate-list-container';\n\t\tparent.appendChild(this._listContainer);\n\n\t\tthis._listWidget = RenameCandidateListView._createListWidget(this._listContainer, this._candidateViewHeight, opts.fontInfo);\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeFocus(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onFocusChange(e.elements[0].newSymbolName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeSelection(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onSelectionChange();\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(\n\t\t\tthis._listWidget.onDidBlur(e => { // @ulugbekna: because list widget otherwise remembers last focused element and returns it as focused element\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t})\n\t\t);\n\n\t\tthis._listWidget.style(getListStyles({\n\t\t\tlistInactiveFocusForeground: quickInputListFocusForeground,\n\t\t\tlistInactiveFocusBackground: quickInputListFocusBackground,\n\t\t}));\n\t}\n\n\tdispose() {\n\t\tthis._listWidget.dispose();\n\t\tthis._disposables.dispose();\n\t}\n\n\t// height - max height allowed by parent element\n\tpublic layout({ height, width }: { height: number; width: number }): void {\n\t\tthis._availableHeight = height;\n\t\tthis._minimumWidth = width;\n\t}\n\n\tpublic setCandidates(candidates: NewSymbolName[]): void {\n\n\t\t// insert candidates into list widget\n\t\tthis._listWidget.splice(0, 0, candidates);\n\n\t\t// adjust list widget layout\n\t\tconst height = this._pickListHeight(this._listWidget.length);\n\t\tconst width = this._pickListWidth(candidates);\n\n\t\tthis._listWidget.layout(height, width);\n\n\t\t// adjust list container layout\n\t\tthis._listContainer.style.height = `${height}px`;\n\t\tthis._listContainer.style.width = `${width}px`;\n\n\t\taria.status(nls.localize('renameSuggestionsReceivedAria', \"Received {0} rename suggestions\", candidates.length));\n\t}\n\n\tpublic clearCandidates(): void {\n\t\tthis._listContainer.style.height = '0px';\n\t\tthis._listContainer.style.width = '0px';\n\t\tthis._listWidget.splice(0, this._listWidget.length, []);\n\t}\n\n\tpublic get nCandidates() {\n\t\treturn this._listWidget.length;\n\t}\n\n\tpublic get focusedCandidate(): string | undefined {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst selectedElement = this._listWidget.getSelectedElements()[0];\n\t\tif (selectedElement !== undefined) {\n\t\t\treturn selectedElement.newSymbolName;\n\t\t}\n\t\tconst focusedElement = this._listWidget.getFocusedElements()[0];\n\t\tif (focusedElement !== undefined) {\n\t\t\treturn focusedElement.newSymbolName;\n\t\t}\n\t\treturn;\n\t}\n\n\tpublic focusNext(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusFirst();\n\t\t\tthis._listWidget.reveal(0);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === this._listWidget.length - 1) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\tthis._listWidget.reveal(0); // @ulugbekna: without this, it seems like focused element is obstructed\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusNext();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns true if focus is moved to previous element\n\t */\n\tpublic focusPrevious(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusLast();\n\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\tthis._listWidget.reveal(focused);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === 0) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusPrevious();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic clearFocus(): void {\n\t\tthis._listWidget.setFocus([]);\n\t}\n\n\tprivate get _candidateViewHeight(): number {\n\t\tconst { totalHeight } = RenameCandidateView.getLayoutInfo({ lineHeight: this._lineHeight });\n\t\treturn totalHeight;\n\t}\n\n\tprivate _pickListHeight(nCandidates: number) {\n\t\tconst heightToFitAllCandidates = this._candidateViewHeight * nCandidates;\n\t\tconst MAX_N_CANDIDATES = 7; // @ulugbekna: max # of candidates we want to show at once\n\t\tconst height = Math.min(heightToFitAllCandidates, this._availableHeight, this._candidateViewHeight * MAX_N_CANDIDATES);\n\t\treturn height;\n\t}\n\n\tprivate _pickListWidth(candidates: NewSymbolName[]): number {\n\t\tconst longestCandidateWidth = Math.ceil(Math.max(...candidates.map(c => c.newSymbolName.length)) * this._typicalHalfwidthCharacterWidth);\n\t\tconst width = Math.max(\n\t\t\tthis._minimumWidth,\n\t\t\t4 /* padding */ + 16 /* sparkle icon */ + 5 /* margin-left */ + longestCandidateWidth + 10 /* (possibly visible) scrollbar width */ // TODO@ulugbekna: approximate calc - clean this up\n\t\t);\n\t\treturn width;\n\t}\n\n\tprivate static _createListWidget(container: HTMLElement, candidateViewHeight: number, fontInfo: FontInfo) {\n\t\tconst virtualDelegate = new class implements IListVirtualDelegate<NewSymbolName> {\n\t\t\tgetTemplateId(element: NewSymbolName): string {\n\t\t\t\treturn 'candidate';\n\t\t\t}\n\n\t\t\tgetHeight(element: NewSymbolName): number {\n\t\t\t\treturn candidateViewHeight;\n\t\t\t}\n\t\t};\n\n\t\tconst renderer = new class implements IListRenderer<NewSymbolName, RenameCandidateView> {\n\t\t\treadonly templateId = 'candidate';\n\n\t\t\trenderTemplate(container: HTMLElement): RenameCandidateView {\n\t\t\t\treturn new RenameCandidateView(container, fontInfo);\n\t\t\t}\n\n\t\t\trenderElement(candidate: NewSymbolName, index: number, templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.populate(candidate);\n\t\t\t}\n\n\t\t\tdisposeTemplate(templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.dispose();\n\t\t\t}\n\t\t};\n\n\t\treturn new List(\n\t\t\t'NewSymbolNameCandidates',\n\t\t\tcontainer,\n\t\t\tvirtualDelegate,\n\t\t\t[renderer],\n\t\t\t{\n\t\t\t\tkeyboardSupport: false, // @ulugbekna: because we handle keyboard events through proper commands & keybinding service, see `rename.ts`\n\t\t\t\tmouseSupport: true,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t}\n\t\t);\n\t}\n}\n\nclass InputWithButton implements IDisposable {\n\n\tprivate _buttonState: 'sparkle' | 'stop' | undefined;\n\n\tprivate _domNode: HTMLDivElement | undefined;\n\tprivate _inputNode: HTMLInputElement | undefined;\n\tprivate _buttonNode: HTMLElement | undefined;\n\tprivate _buttonHoverContent: string = '';\n\tprivate _buttonGenHoverText: string | undefined;\n\tprivate _buttonCancelHoverText: string | undefined;\n\tprivate _sparkleIcon: HTMLElement | undefined;\n\tprivate _stopIcon: HTMLElement | undefined;\n\n\tprivate readonly _onDidInputChange = new Emitter<void>();\n\tpublic readonly onDidInputChange = this._onDidInputChange.event;\n\n\tprivate readonly _disposables = new DisposableStore();\n\n\tget domNode() {\n\t\tif (!this._domNode) {\n\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'rename-input-with-button';\n\t\t\tthis._domNode.style.display = 'flex';\n\t\t\tthis._domNode.style.flexDirection = 'row';\n\t\t\tthis._domNode.style.alignItems = 'center';\n\n\t\t\tthis._inputNode = document.createElement('input');\n\t\t\tthis._inputNode.className = 'rename-input';\n\t\t\tthis._inputNode.type = 'text';\n\t\t\tthis._inputNode.style.border = 'none';\n\t\t\tthis._inputNode.setAttribute('aria-label', nls.localize('renameAriaLabel', \"Rename input. Type new name and press Enter to commit.\"));\n\n\t\t\tthis._domNode.appendChild(this._inputNode);\n\n\t\t\tthis._buttonNode = document.createElement('div');\n\t\t\tthis._buttonNode.className = 'rename-suggestions-button';\n\t\t\tthis._buttonNode.setAttribute('tabindex', '0');\n\n\t\t\tthis._buttonGenHoverText = nls.localize('generateRenameSuggestionsButton', \"Generate new name suggestions\");\n\t\t\tthis._buttonCancelHoverText = nls.localize('cancelRenameSuggestionsButton', \"Cancel\");\n\t\t\tthis._buttonHoverContent = this._buttonGenHoverText;\n\t\t\tthis._disposables.add(getBaseLayerHoverDelegate().setupDelayedHover(this._buttonNode, () => ({\n\t\t\t\tcontent: this._buttonHoverContent,\n\t\t\t\tappearance: {\n\t\t\t\t\tshowPointer: true,\n\t\t\t\t\tcompact: true,\n\t\t\t\t}\n\t\t\t})));\n\n\t\t\tthis._domNode.appendChild(this._buttonNode);\n\n\t\t\t// notify if selection changes to cancel request to rename-suggestion providers\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.INPUT, () => this._onDidInputChange.fire()));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.KEY_DOWN, (e) => {\n\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\t\t\t\tif (keyEvent.keyCode === KeyCode.LeftArrow || keyEvent.keyCode === KeyCode.RightArrow) {\n\t\t\t\t\tthis._onDidInputChange.fire();\n\t\t\t\t}\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.CLICK, () => this._onDidInputChange.fire()));\n\n\t\t\t// focus \"container\" border instead of input box\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.FOCUS, () => {\n\t\t\t\tthis.domNode.style.outlineWidth = '1px';\n\t\t\t\tthis.domNode.style.outlineStyle = 'solid';\n\t\t\t\tthis.domNode.style.outlineOffset = '-1px';\n\t\t\t\tthis.domNode.style.outlineColor = 'var(--vscode-focusBorder)';\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.BLUR, () => {\n\t\t\t\tthis.domNode.style.outline = 'none';\n\t\t\t}));\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tget input() {\n\t\tassertType(this._inputNode);\n\t\treturn this._inputNode;\n\t}\n\n\tget button() {\n\t\tassertType(this._buttonNode);\n\t\treturn this._buttonNode;\n\t}\n\n\tget buttonState() {\n\t\treturn this._buttonState;\n\t}\n\n\tsetSparkleButton() {\n\t\tthis._buttonState = 'sparkle';\n\t\tthis._sparkleIcon ??= renderIcon(Codicon.sparkle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._sparkleIcon);\n\t\tthis.button.setAttribute('aria-label', 'Generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonGenHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tsetStopButton() {\n\t\tthis._buttonState = 'stop';\n\t\tthis._stopIcon ??= renderIcon(Codicon.stopCircle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._stopIcon);\n\t\tthis.button.setAttribute('aria-label', 'Cancel generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonCancelHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t}\n}\n\nclass RenameCandidateView {\n\n\tprivate static _PADDING: number = 2;\n\n\tprivate readonly _domNode: HTMLElement;\n\tprivate readonly _icon: HTMLElement;\n\tprivate readonly _label: HTMLElement;\n\n\tconstructor(parent: HTMLElement, fontInfo: FontInfo) {\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.className = 'rename-box rename-candidate';\n\t\tthis._domNode.style.display = `flex`;\n\t\tthis._domNode.style.columnGap = `5px`;\n\t\tthis._domNode.style.alignItems = `center`;\n\t\tthis._domNode.style.height = `${fontInfo.lineHeight}px`;\n\t\tthis._domNode.style.padding = `${RenameCandidateView._PADDING}px`;\n\n\t\t// @ulugbekna: needed to keep space when the `icon.style.display` is set to `none`\n\t\tconst iconContainer = document.createElement('div');\n\t\ticonContainer.style.display = `flex`;\n\t\ticonContainer.style.alignItems = `center`;\n\t\ticonContainer.style.width = iconContainer.style.height = `${fontInfo.lineHeight * 0.8}px`;\n\t\tthis._domNode.appendChild(iconContainer);\n\n\t\tthis._icon = renderIcon(Codicon.sparkle);\n\t\tthis._icon.style.display = `none`;\n\t\ticonContainer.appendChild(this._icon);\n\n\t\tthis._label = document.createElement('div');\n\t\tdomFontInfo.applyFontInfo(this._label, fontInfo);\n\t\tthis._domNode.appendChild(this._label);\n\n\t\tparent.appendChild(this._domNode);\n\t}\n\n\tpublic populate(value: NewSymbolName) {\n\t\tthis._updateIcon(value);\n\t\tthis._updateLabel(value);\n\t}\n\n\tprivate _updateIcon(value: NewSymbolName) {\n\t\tconst isAIGenerated = !!value.tags?.includes(NewSymbolNameTag.AIGenerated);\n\t\tthis._icon.style.display = isAIGenerated ? 'inherit' : 'none';\n\t}\n\n\tprivate _updateLabel(value: NewSymbolName) {\n\t\tthis._label.innerText = value.newSymbolName;\n\t}\n\n\tpublic static getLayoutInfo({ lineHeight }: { lineHeight: number }): { totalHeight: number } {\n\t\tconst totalHeight = lineHeight + RenameCandidateView._PADDING * 2 /* top & bottom padding */;\n\t\treturn { totalHeight };\n\t}\n\n\tpublic dispose() {\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/rename/browser/renameWidget.ts"],"names":[],"mappings":"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","file":"renameWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { StandardKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { getBaseLayerHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate2.js';\nimport { renderIcon } from '../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { IListRenderer, IListVirtualDelegate } from '../../../../base/browser/ui/list/list.js';\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isDefined } from '../../../../base/common/types.js';\nimport './renameWidget.css';\nimport * as domFontInfo from '../../../browser/config/domFontInfo.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { FontInfo } from '../../../common/config/fontInfo.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { ScrollType } from '../../../common/editorCommon.js';\nimport { NewSymbolName, NewSymbolNameTag, NewSymbolNameTriggerKind, ProviderResult } from '../../../common/languages.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { getListStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport {\n\teditorWidgetBackground,\n\tinputBackground,\n\tinputBorder,\n\tinputForeground,\n\tquickInputListFocusBackground,\n\tquickInputListFocusForeground,\n\twidgetBorder,\n\twidgetShadow } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IColorTheme, IThemeService } from '../../../../platform/theme/common/themeService.js';\n\n/** for debugging */\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\n\nexport const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey<boolean>('renameInputVisible', false, nls.localize('renameInputVisible', \"Whether the rename input widget is visible\"));\nexport const CONTEXT_RENAME_INPUT_FOCUSED = new RawContextKey<boolean>('renameInputFocused', false, nls.localize('renameInputFocused', \"Whether the rename input widget is focused\"));\n\n/**\n * \"Source\" of the new name:\n * - 'inputField' - user entered the new name\n * - 'renameSuggestion' - user picked from rename suggestions\n * - 'userEditedRenameSuggestion' - user _likely_ edited a rename suggestion (\"likely\" because when input started being edited, a rename suggestion had focus)\n */\nexport type NewNameSource =\n\t| { k: 'inputField' }\n\t| { k: 'renameSuggestion' }\n\t| { k: 'userEditedRenameSuggestion' };\n\n/**\n * Various statistics regarding rename input field\n */\nexport type RenameWidgetStats = {\n\tnRenameSuggestions: number;\n\tsource: NewNameSource;\n\ttimeBeforeFirstInputFieldEdit: number | undefined;\n\tnRenameSuggestionsInvocations: number;\n\thadAutomaticRenameSuggestionsInvocation: boolean;\n};\n\nexport type RenameWidgetResult = {\n\t/**\n\t * The new name to be used\n\t */\n\tnewName: string;\n\twantsPreview?: boolean;\n\tstats: RenameWidgetStats;\n};\n\ninterface IRenameWidget {\n}\n\nexport class RenameWidget implements IRenameWidget, IContentWidget, IDisposable {\n\n\t// implement IContentWidget\n\treadonly allowEditorOverflow: boolean = true;\n\n\t// UI state\n\n\tprivate _domNode?: HTMLElement;\n\tprivate _inputWithButton: InputWithButton;\n\tprivate _renameCandidateListView?: RenameCandidateListView;\n\tprivate _label?: HTMLDivElement;\n\n\tprivate _nPxAvailableAbove?: number;\n\tprivate _nPxAvailableBelow?: number;\n\n\t// Model state\n\n\tprivate _position?: Position;\n\tprivate _currentName?: string;\n\t/** Is true if input field got changes when a rename candidate was focused; otherwise, false */\n\tprivate _isEditingRenameCandidate: boolean;\n\n\tprivate readonly _candidates: Set<string>;\n\n\tprivate _visible?: boolean;\n\n\t/** must be reset at session start */\n\tprivate _beforeFirstInputFieldEditSW: StopWatch;\n\n\t/**\n\t * Milliseconds before user edits the input field for the first time\n\t * @remarks must be set once per session\n\t */\n\tprivate _timeBeforeFirstInputFieldEdit: number | undefined;\n\n\tprivate _nRenameSuggestionsInvocations: number;\n\n\tprivate _hadAutomaticRenameSuggestionsInvocation: boolean;\n\n\tprivate _renameCandidateProvidersCts: CancellationTokenSource | undefined;\n\tprivate _renameCts: CancellationTokenSource | undefined;\n\n\tprivate readonly _visibleContextKey: IContextKey<boolean>;\n\tprivate readonly _disposables = new DisposableStore();\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _acceptKeybindings: [string, string],\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t) {\n\t\tthis._visibleContextKey = CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tthis._candidates = new Set();\n\n\t\tthis._beforeFirstInputFieldEditSW = new StopWatch();\n\n\t\tthis._inputWithButton = new InputWithButton();\n\t\tthis._disposables.add(this._inputWithButton);\n\n\t\tthis._editor.addContentWidget(this);\n\n\t\tthis._disposables.add(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.add(_themeService.onDidColorThemeChange(this._updateStyles, this));\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t\tthis._editor.removeContentWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn '__renameInputWidget';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\tif (!this._domNode) {\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'monaco-editor rename-box';\n\n\t\t\tthis._domNode.appendChild(this._inputWithButton.domNode);\n\n\t\t\tthis._renameCandidateListView = this._disposables.add(\n\t\t\t\tnew RenameCandidateListView(this._domNode, {\n\t\t\t\t\tfontInfo: this._editor.getOption(EditorOption.fontInfo),\n\t\t\t\t\tonFocusChange: (newSymbolName: string) => {\n\t\t\t\t\t\tthis._inputWithButton.input.value = newSymbolName;\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: reset\n\t\t\t\t\t},\n\t\t\t\t\tonSelectionChange: () => {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: because user picked a rename suggestion\n\t\t\t\t\t\tthis.acceptInput(false); // we don't allow preview with mouse click for now\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._disposables.add(\n\t\t\t\tthis._inputWithButton.onDidInputChange(() => {\n\t\t\t\t\tif (this._renameCandidateListView?.focusedCandidate !== undefined) {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis._timeBeforeFirstInputFieldEdit ??= this._beforeFirstInputFieldEditSW.elapsed();\n\t\t\t\t\tif (this._renameCandidateProvidersCts?.token.isCancellationRequested === false) {\n\t\t\t\t\t\tthis._renameCandidateProvidersCts.cancel();\n\t\t\t\t\t}\n\t\t\t\t\tthis._renameCandidateListView?.clearFocus();\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._label = document.createElement('div');\n\t\t\tthis._label.className = 'rename-label';\n\t\t\tthis._domNode.appendChild(this._label);\n\n\t\t\tthis._updateFont();\n\t\t\tthis._updateStyles(this._themeService.getColorTheme());\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tprivate _updateStyles(theme: IColorTheme): void {\n\t\tif (!this._domNode) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst widgetShadowColor = theme.getColor(widgetShadow);\n\t\tconst widgetBorderColor = theme.getColor(widgetBorder);\n\t\tthis._domNode.style.backgroundColor = String(theme.getColor(editorWidgetBackground) ?? '');\n\t\tthis._domNode.style.boxShadow = widgetShadowColor ? ` 0 0 8px 2px ${widgetShadowColor}` : '';\n\t\tthis._domNode.style.border = widgetBorderColor ? `1px solid ${widgetBorderColor}` : '';\n\t\tthis._domNode.style.color = String(theme.getColor(inputForeground) ?? '');\n\n\t\tconst border = theme.getColor(inputBorder);\n\n\t\tthis._inputWithButton.domNode.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.input.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.domNode.style.borderWidth = border ? '1px' : '0px';\n\t\tthis._inputWithButton.domNode.style.borderStyle = border ? 'solid' : 'none';\n\t\tthis._inputWithButton.domNode.style.borderColor = border?.toString() ?? 'none';\n\t}\n\n\tprivate _updateFont(): void {\n\t\tif (this._domNode === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tassertType(this._label !== undefined, 'RenameWidget#_updateFont: _label must not be undefined given _domNode is defined');\n\n\t\tthis._editor.applyFontInfo(this._inputWithButton.input);\n\n\t\tconst fontInfo = this._editor.getOption(EditorOption.fontInfo);\n\t\tthis._label.style.fontSize = `${this._computeLabelFontSize(fontInfo.fontSize)}px`;\n\t}\n\n\tprivate _computeLabelFontSize(editorFontSize: number) {\n\t\treturn editorFontSize * 0.8;\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\tif (!this._visible) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // @ulugbekna: shouldn't happen\n\t\t\t!this._editor.getDomNode() // @ulugbekna: can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst bodyBox = dom.getClientArea(this.getDomNode().ownerDocument.body);\n\t\tconst editorBox = dom.getDomNodePagePosition(this._editor.getDomNode());\n\n\t\tconst cursorBoxTop = this._getTopForPosition();\n\n\t\tthis._nPxAvailableAbove = cursorBoxTop + editorBox.top;\n\t\tthis._nPxAvailableBelow = bodyBox.height - this._nPxAvailableAbove;\n\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst { totalHeight: candidateViewHeight } = RenameCandidateView.getLayoutInfo({ lineHeight });\n\n\t\tconst positionPreference = this._nPxAvailableBelow > candidateViewHeight * 6 /* approximate # of candidates to fit in (inclusive of rename input box & rename label) */\n\t\t\t? [ContentWidgetPositionPreference.BELOW, ContentWidgetPositionPreference.ABOVE]\n\t\t\t: [ContentWidgetPositionPreference.ABOVE, ContentWidgetPositionPreference.BELOW];\n\n\t\treturn {\n\t\t\tposition: this._position!,\n\t\t\tpreference: positionPreference,\n\t\t};\n\t}\n\n\tbeforeRender(): IDimension | null {\n\t\tconst [accept, preview] = this._acceptKeybindings;\n\t\tthis._label!.innerText = nls.localize({ key: 'label', comment: ['placeholders are keybindings, e.g \"F2 to Rename, Shift+F2 to Preview\"'] }, \"{0} to Rename, {1} to Preview\", this._keybindingService.lookupKeybinding(accept)?.getLabel(), this._keybindingService.lookupKeybinding(preview)?.getLabel());\n\n\t\tthis._domNode!.style.minWidth = `200px`; // to prevent from widening when candidates come in\n\n\t\treturn null;\n\t}\n\n\tafterRender(position: ContentWidgetPositionPreference | null): void {\n\t\t// FIXME@ulugbekna: commenting trace log out until we start unmounting the widget from editor properly - https://github.com/microsoft/vscode/issues/226975\n\t\t// this._trace('invoking afterRender, position: ', position ? 'not null' : 'null');\n\t\tif (position === null) {\n\t\t\t// cancel rename when input widget isn't rendered anymore\n\t\t\tthis.cancelInput(true, 'afterRender (because position is null)');\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // shouldn't happen\n\t\t\t!this._editor.getDomNode() // can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tassertType(this._renameCandidateListView);\n\t\tassertType(this._nPxAvailableAbove !== undefined);\n\t\tassertType(this._nPxAvailableBelow !== undefined);\n\n\t\tconst inputBoxHeight = dom.getTotalHeight(this._inputWithButton.domNode);\n\n\t\tconst labelHeight = dom.getTotalHeight(this._label!);\n\n\t\tlet totalHeightAvailable: number;\n\t\tif (position === ContentWidgetPositionPreference.BELOW) {\n\t\t\ttotalHeightAvailable = this._nPxAvailableBelow;\n\t\t} else {\n\t\t\ttotalHeightAvailable = this._nPxAvailableAbove;\n\t\t}\n\n\t\tthis._renameCandidateListView!.layout({\n\t\t\theight: totalHeightAvailable - labelHeight - inputBoxHeight,\n\t\t\twidth: dom.getTotalWidth(this._inputWithButton.domNode),\n\t\t});\n\t}\n\n\n\tprivate _currentAcceptInput?: (wantsPreview: boolean) => void;\n\tprivate _currentCancelInput?: (focusEditor: boolean) => void;\n\tprivate _requestRenameCandidatesOnce?: (triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[];\n\n\tacceptInput(wantsPreview: boolean): void {\n\t\tthis._trace(`invoking acceptInput`);\n\t\tthis._currentAcceptInput?.(wantsPreview);\n\t}\n\n\tcancelInput(focusEditor: boolean, caller: string): void {\n\t\t// this._trace(`invoking cancelInput, caller: ${caller}, _currentCancelInput: ${this._currentAcceptInput ? 'not undefined' : 'undefined'}`);\n\t\tthis._currentCancelInput?.(focusEditor);\n\t}\n\n\tfocusNextRenameSuggestion() {\n\t\tif (!this._renameCandidateListView?.focusNext()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\tfocusPreviousRenameSuggestion() { // TODO@ulugbekna: this and focusNext should set the original name if no candidate is focused\n\t\tif (!this._renameCandidateListView?.focusPrevious()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\t/**\n\t * @param requestRenameCandidates is `undefined` when there are no rename suggestion providers\n\t */\n\tgetInput(\n\t\twhere: IRange,\n\t\tcurrentName: string,\n\t\tsupportPreview: boolean,\n\t\trequestRenameCandidates: undefined | ((triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[]),\n\t\tcts: CancellationTokenSource\n\t): Promise<RenameWidgetResult | boolean> {\n\n\t\tconst { start: selectionStart, end: selectionEnd } = this._getSelection(where, currentName);\n\n\t\tthis._renameCts = cts;\n\n\t\tconst disposeOnDone = new DisposableStore();\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tif (requestRenameCandidates === undefined) {\n\t\t\tthis._inputWithButton.button.style.display = 'none';\n\t\t} else {\n\t\t\tthis._inputWithButton.button.style.display = 'flex';\n\n\t\t\tthis._requestRenameCandidatesOnce = requestRenameCandidates;\n\n\t\t\tthis._requestRenameCandidates(currentName, false);\n\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\t'click',\n\t\t\t\t() => this._requestRenameCandidates(currentName, true)\n\t\t\t));\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\tdom.EventType.KEY_DOWN,\n\t\t\t\t(e) => {\n\t\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\n\t\t\t\t\tif (keyEvent.equals(KeyCode.Enter) || keyEvent.equals(KeyCode.Space)) {\n\t\t\t\t\t\tkeyEvent.stopPropagation();\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t\tthis._requestRenameCandidates(currentName, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._domNode!.classList.toggle('preview', supportPreview);\n\n\t\tthis._position = new Position(where.startLineNumber, where.startColumn);\n\t\tthis._currentName = currentName;\n\n\t\tthis._inputWithButton.input.value = currentName;\n\t\tthis._inputWithButton.input.setAttribute('selectionStart', selectionStart.toString());\n\t\tthis._inputWithButton.input.setAttribute('selectionEnd', selectionEnd.toString());\n\t\tthis._inputWithButton.input.size = Math.max((where.endColumn - where.startColumn) * 1.1, 20); // determines width\n\n\t\tthis._beforeFirstInputFieldEditSW.reset();\n\n\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tthis._renameCts = undefined;\n\t\t\tcts.dispose(true);\n\t\t})); // @ulugbekna: this may result in `this.cancelInput` being called twice, but it should be safe since we set it to undefined after 1st call\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t\t\tthis._renameCandidateProvidersCts = undefined;\n\t\t\t}\n\t\t}));\n\n\t\tdisposeOnDone.add(toDisposable(() => this._candidates.clear()));\n\n\t\tconst inputResult = new DeferredPromise<RenameWidgetResult | boolean>();\n\n\t\tinputResult.p.finally(() => {\n\t\t\tdisposeOnDone.dispose();\n\t\t\tthis._hide();\n\t\t});\n\n\t\tthis._currentCancelInput = (focusEditor) => {\n\t\t\tthis._trace('invoking _currentCancelInput');\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\t// fixme session cleanup\n\t\t\tthis._renameCandidateListView?.clearCandidates();\n\t\t\tinputResult.complete(focusEditor);\n\t\t\treturn true;\n\t\t};\n\n\t\tthis._currentAcceptInput = (wantsPreview) => {\n\t\t\tthis._trace('invoking _currentAcceptInput');\n\t\t\tassertType(this._renameCandidateListView !== undefined);\n\n\t\t\tconst nRenameSuggestions = this._renameCandidateListView.nCandidates;\n\n\t\t\tlet newName: string;\n\t\t\tlet source: NewNameSource;\n\t\t\tconst focusedCandidate = this._renameCandidateListView.focusedCandidate;\n\t\t\tif (focusedCandidate !== undefined) {\n\t\t\t\tthis._trace('using new name from renameSuggestion');\n\t\t\t\tnewName = focusedCandidate;\n\t\t\t\tsource = { k: 'renameSuggestion' };\n\t\t\t} else {\n\t\t\t\tthis._trace('using new name from inputField');\n\t\t\t\tnewName = this._inputWithButton.input.value;\n\t\t\t\tsource = this._isEditingRenameCandidate ? { k: 'userEditedRenameSuggestion' } : { k: 'inputField' };\n\t\t\t}\n\n\t\t\tif (newName === currentName || newName.trim().length === 0 /* is just whitespace */) {\n\t\t\t\tthis.cancelInput(true, '_currentAcceptInput (because newName === value || newName.trim().length === 0)');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\tthis._renameCandidateListView.clearCandidates();\n\t\t\t// fixme session cleanup\n\n\t\t\tinputResult.complete({\n\t\t\t\tnewName,\n\t\t\t\twantsPreview: supportPreview && wantsPreview,\n\t\t\t\tstats: {\n\t\t\t\t\tsource,\n\t\t\t\t\tnRenameSuggestions,\n\t\t\t\t\ttimeBeforeFirstInputFieldEdit: this._timeBeforeFirstInputFieldEdit,\n\t\t\t\t\tnRenameSuggestionsInvocations: this._nRenameSuggestionsInvocations,\n\t\t\t\t\thadAutomaticRenameSuggestionsInvocation: this._hadAutomaticRenameSuggestionsInvocation,\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tdisposeOnDone.add(cts.token.onCancellationRequested(() => this.cancelInput(true, 'cts.token.onCancellationRequested')));\n\t\tif (!_sticky) {\n\t\t\tdisposeOnDone.add(this._editor.onDidBlurEditorWidget(() => this.cancelInput(!this._domNode?.ownerDocument.hasFocus(), 'editor.onDidBlurEditorWidget')));\n\t\t}\n\n\t\tthis._show();\n\n\t\treturn inputResult.p;\n\t}\n\n\tprivate _requestRenameCandidates(currentName: string, isManuallyTriggered: boolean) {\n\t\tif (this._requestRenameCandidatesOnce === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t}\n\n\t\tassertType(this._renameCts);\n\n\t\tif (this._inputWithButton.buttonState !== 'stop') {\n\n\t\t\tthis._renameCandidateProvidersCts = new CancellationTokenSource();\n\n\t\t\tconst triggerKind = isManuallyTriggered ? NewSymbolNameTriggerKind.Invoke : NewSymbolNameTriggerKind.Automatic;\n\t\t\tconst candidates = this._requestRenameCandidatesOnce(triggerKind, this._renameCandidateProvidersCts.token);\n\n\t\t\tif (candidates.length === 0) {\n\t\t\t\tthis._inputWithButton.setSparkleButton();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isManuallyTriggered) {\n\t\t\t\tthis._hadAutomaticRenameSuggestionsInvocation = true;\n\t\t\t}\n\n\t\t\tthis._nRenameSuggestionsInvocations += 1;\n\n\t\t\tthis._inputWithButton.setStopButton();\n\n\t\t\tthis._updateRenameCandidates(candidates, currentName, this._renameCts.token);\n\t\t}\n\t}\n\n\t/**\n\t * This allows selecting only part of the symbol name in the input field based on the selection in the editor\n\t */\n\tprivate _getSelection(where: IRange, currentName: string): { start: number; end: number } {\n\t\tassertType(this._editor.hasModel());\n\n\t\tconst selection = this._editor.getSelection();\n\t\tlet start = 0;\n\t\tlet end = currentName.length;\n\n\t\tif (!Range.isEmpty(selection) && !Range.spansMultipleLines(selection) && Range.containsRange(where, selection)) {\n\t\t\tstart = Math.max(0, selection.startColumn - where.startColumn);\n\t\t\tend = Math.min(where.endColumn, selection.endColumn) - where.startColumn;\n\t\t}\n\n\t\treturn { start, end };\n\t}\n\n\tprivate _show(): void {\n\t\tthis._trace('invoking _show');\n\t\tthis._editor.revealLineInCenterIfOutsideViewport(this._position!.lineNumber, ScrollType.Smooth);\n\t\tthis._visible = true;\n\t\tthis._visibleContextKey.set(true);\n\t\tthis._editor.layoutContentWidget(this);\n\n\t\t// TODO@ulugbekna: could this be simply run in `afterRender`?\n\t\tsetTimeout(() => {\n\t\t\tthis._inputWithButton.input.focus();\n\t\t\tthis._inputWithButton.input.setSelectionRange(\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionStart')!),\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionEnd')!)\n\t\t\t);\n\t\t}, 100);\n\t}\n\n\tprivate async _updateRenameCandidates(candidates: ProviderResult<NewSymbolName[]>[], currentName: string, token: CancellationToken) {\n\t\tconst trace = (...args: unknown[]) => this._trace('_updateRenameCandidates', ...args);\n\n\t\ttrace('start');\n\t\tconst namesListResults = await raceCancellation(Promise.allSettled(candidates), token);\n\n\t\tthis._inputWithButton.setSparkleButton();\n\n\t\tif (namesListResults === undefined) {\n\t\t\ttrace('returning early - received updateRenameCandidates results - undefined');\n\t\t\treturn;\n\t\t}\n\n\t\tconst newNames = namesListResults.flatMap(namesListResult =>\n\t\t\tnamesListResult.status === 'fulfilled' && isDefined(namesListResult.value)\n\t\t\t\t? namesListResult.value\n\t\t\t\t: []\n\t\t);\n\t\ttrace(`received updateRenameCandidates results - total (unfiltered) ${newNames.length} candidates.`);\n\n\t\t// deduplicate and filter out the current value\n\n\t\tconst distinctNames = arrays.distinct(newNames, v => v.newSymbolName);\n\t\ttrace(`distinct candidates - ${distinctNames.length} candidates.`);\n\n\t\tconst validDistinctNames = distinctNames.filter(({ newSymbolName }) => newSymbolName.trim().length > 0 && newSymbolName !== this._inputWithButton.input.value && newSymbolName !== currentName && !this._candidates.has(newSymbolName));\n\t\ttrace(`valid distinct candidates - ${newNames.length} candidates.`);\n\n\t\tvalidDistinctNames.forEach(n => this._candidates.add(n.newSymbolName));\n\n\t\tif (validDistinctNames.length < 1) {\n\t\t\ttrace('returning early - no valid distinct candidates');\n\t\t\treturn;\n\t\t}\n\n\t\t// show the candidates\n\t\ttrace('setting candidates');\n\t\tthis._renameCandidateListView!.setCandidates(validDistinctNames);\n\n\t\t// ask editor to re-layout given that the widget is now of a different size after rendering rename candidates\n\t\ttrace('asking editor to re-layout');\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _hide(): void {\n\t\tthis._trace('invoked _hide');\n\t\tthis._visible = false;\n\t\tthis._visibleContextKey.reset();\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _getTopForPosition(): number {\n\t\tconst visibleRanges = this._editor.getVisibleRanges();\n\t\tlet firstLineInViewport: number;\n\t\tif (visibleRanges.length > 0) {\n\t\t\tfirstLineInViewport = visibleRanges[0].startLineNumber;\n\t\t} else {\n\t\t\tthis._logService.warn('RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty');\n\t\t\tfirstLineInViewport = Math.max(1, this._position!.lineNumber - 5); // @ulugbekna: fallback to current line minus 5\n\t\t}\n\t\treturn this._editor.getTopForLineNumber(this._position!.lineNumber) - this._editor.getTopForLineNumber(firstLineInViewport);\n\t}\n\n\tprivate _trace(...args: unknown[]) {\n\t\tthis._logService.trace('RenameWidget', ...args);\n\t}\n}\n\nclass RenameCandidateListView {\n\n\t/** Parent node of the list widget; needed to control # of list elements visible */\n\tprivate readonly _listContainer: HTMLDivElement;\n\tprivate readonly _listWidget: List<NewSymbolName>;\n\n\tprivate _lineHeight: number;\n\tprivate _availableHeight: number;\n\tprivate _minimumWidth: number;\n\tprivate _typicalHalfwidthCharacterWidth: number;\n\n\tprivate readonly _disposables: DisposableStore;\n\n\t// FIXME@ulugbekna: rewrite using event emitters\n\tconstructor(parent: HTMLElement, opts: { fontInfo: FontInfo; onFocusChange: (newSymbolName: string) => void; onSelectionChange: () => void }) {\n\n\t\tthis._disposables = new DisposableStore();\n\n\t\tthis._availableHeight = 0;\n\t\tthis._minimumWidth = 0;\n\n\t\tthis._lineHeight = opts.fontInfo.lineHeight;\n\t\tthis._typicalHalfwidthCharacterWidth = opts.fontInfo.typicalHalfwidthCharacterWidth;\n\n\t\tthis._listContainer = document.createElement('div');\n\t\tthis._listContainer.className = 'rename-box rename-candidate-list-container';\n\t\tparent.appendChild(this._listContainer);\n\n\t\tthis._listWidget = RenameCandidateListView._createListWidget(this._listContainer, this._candidateViewHeight, opts.fontInfo);\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeFocus(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onFocusChange(e.elements[0].newSymbolName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeSelection(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onSelectionChange();\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(\n\t\t\tthis._listWidget.onDidBlur(e => { // @ulugbekna: because list widget otherwise remembers last focused element and returns it as focused element\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t})\n\t\t);\n\n\t\tthis._listWidget.style(getListStyles({\n\t\t\tlistInactiveFocusForeground: quickInputListFocusForeground,\n\t\t\tlistInactiveFocusBackground: quickInputListFocusBackground,\n\t\t}));\n\t}\n\n\tdispose() {\n\t\tthis._listWidget.dispose();\n\t\tthis._disposables.dispose();\n\t}\n\n\t// height - max height allowed by parent element\n\tpublic layout({ height, width }: { height: number; width: number }): void {\n\t\tthis._availableHeight = height;\n\t\tthis._minimumWidth = width;\n\t}\n\n\tpublic setCandidates(candidates: NewSymbolName[]): void {\n\n\t\t// insert candidates into list widget\n\t\tthis._listWidget.splice(0, 0, candidates);\n\n\t\t// adjust list widget layout\n\t\tconst height = this._pickListHeight(this._listWidget.length);\n\t\tconst width = this._pickListWidth(candidates);\n\n\t\tthis._listWidget.layout(height, width);\n\n\t\t// adjust list container layout\n\t\tthis._listContainer.style.height = `${height}px`;\n\t\tthis._listContainer.style.width = `${width}px`;\n\n\t\taria.status(nls.localize('renameSuggestionsReceivedAria', \"Received {0} rename suggestions\", candidates.length));\n\t}\n\n\tpublic clearCandidates(): void {\n\t\tthis._listContainer.style.height = '0px';\n\t\tthis._listContainer.style.width = '0px';\n\t\tthis._listWidget.splice(0, this._listWidget.length, []);\n\t}\n\n\tpublic get nCandidates() {\n\t\treturn this._listWidget.length;\n\t}\n\n\tpublic get focusedCandidate(): string | undefined {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst selectedElement = this._listWidget.getSelectedElements()[0];\n\t\tif (selectedElement !== undefined) {\n\t\t\treturn selectedElement.newSymbolName;\n\t\t}\n\t\tconst focusedElement = this._listWidget.getFocusedElements()[0];\n\t\tif (focusedElement !== undefined) {\n\t\t\treturn focusedElement.newSymbolName;\n\t\t}\n\t\treturn;\n\t}\n\n\tpublic focusNext(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusFirst();\n\t\t\tthis._listWidget.reveal(0);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === this._listWidget.length - 1) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\tthis._listWidget.reveal(0); // @ulugbekna: without this, it seems like focused element is obstructed\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusNext();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns true if focus is moved to previous element\n\t */\n\tpublic focusPrevious(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusLast();\n\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\tthis._listWidget.reveal(focused);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === 0) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusPrevious();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic clearFocus(): void {\n\t\tthis._listWidget.setFocus([]);\n\t}\n\n\tprivate get _candidateViewHeight(): number {\n\t\tconst { totalHeight } = RenameCandidateView.getLayoutInfo({ lineHeight: this._lineHeight });\n\t\treturn totalHeight;\n\t}\n\n\tprivate _pickListHeight(nCandidates: number) {\n\t\tconst heightToFitAllCandidates = this._candidateViewHeight * nCandidates;\n\t\tconst MAX_N_CANDIDATES = 7; // @ulugbekna: max # of candidates we want to show at once\n\t\tconst height = Math.min(heightToFitAllCandidates, this._availableHeight, this._candidateViewHeight * MAX_N_CANDIDATES);\n\t\treturn height;\n\t}\n\n\tprivate _pickListWidth(candidates: NewSymbolName[]): number {\n\t\tconst longestCandidateWidth = Math.ceil(Math.max(...candidates.map(c => c.newSymbolName.length)) * this._typicalHalfwidthCharacterWidth);\n\t\tconst width = Math.max(\n\t\t\tthis._minimumWidth,\n\t\t\t4 /* padding */ + 16 /* sparkle icon */ + 5 /* margin-left */ + longestCandidateWidth + 10 /* (possibly visible) scrollbar width */ // TODO@ulugbekna: approximate calc - clean this up\n\t\t);\n\t\treturn width;\n\t}\n\n\tprivate static _createListWidget(container: HTMLElement, candidateViewHeight: number, fontInfo: FontInfo) {\n\t\tconst virtualDelegate = new class implements IListVirtualDelegate<NewSymbolName> {\n\t\t\tgetTemplateId(element: NewSymbolName): string {\n\t\t\t\treturn 'candidate';\n\t\t\t}\n\n\t\t\tgetHeight(element: NewSymbolName): number {\n\t\t\t\treturn candidateViewHeight;\n\t\t\t}\n\t\t};\n\n\t\tconst renderer = new class implements IListRenderer<NewSymbolName, RenameCandidateView> {\n\t\t\treadonly templateId = 'candidate';\n\n\t\t\trenderTemplate(container: HTMLElement): RenameCandidateView {\n\t\t\t\treturn new RenameCandidateView(container, fontInfo);\n\t\t\t}\n\n\t\t\trenderElement(candidate: NewSymbolName, index: number, templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.populate(candidate);\n\t\t\t}\n\n\t\t\tdisposeTemplate(templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.dispose();\n\t\t\t}\n\t\t};\n\n\t\treturn new List(\n\t\t\t'NewSymbolNameCandidates',\n\t\t\tcontainer,\n\t\t\tvirtualDelegate,\n\t\t\t[renderer],\n\t\t\t{\n\t\t\t\tkeyboardSupport: false, // @ulugbekna: because we handle keyboard events through proper commands & keybinding service, see `rename.ts`\n\t\t\t\tmouseSupport: true,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t}\n\t\t);\n\t}\n}\n\nclass InputWithButton implements IDisposable {\n\n\tprivate _buttonState: 'sparkle' | 'stop' | undefined;\n\n\tprivate _domNode: HTMLDivElement | undefined;\n\tprivate _inputNode: HTMLInputElement | undefined;\n\tprivate _buttonNode: HTMLElement | undefined;\n\tprivate _buttonHoverContent: string = '';\n\tprivate _buttonGenHoverText: string | undefined;\n\tprivate _buttonCancelHoverText: string | undefined;\n\tprivate _sparkleIcon: HTMLElement | undefined;\n\tprivate _stopIcon: HTMLElement | undefined;\n\n\tprivate readonly _onDidInputChange = new Emitter<void>();\n\tpublic readonly onDidInputChange = this._onDidInputChange.event;\n\n\tprivate readonly _disposables = new DisposableStore();\n\n\tget domNode() {\n\t\tif (!this._domNode) {\n\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'rename-input-with-button';\n\t\t\tthis._domNode.style.display = 'flex';\n\t\t\tthis._domNode.style.flexDirection = 'row';\n\t\t\tthis._domNode.style.alignItems = 'center';\n\n\t\t\tthis._inputNode = document.createElement('input');\n\t\t\tthis._inputNode.className = 'rename-input';\n\t\t\tthis._inputNode.type = 'text';\n\t\t\tthis._inputNode.style.border = 'none';\n\t\t\tthis._inputNode.setAttribute('aria-label', nls.localize('renameAriaLabel', \"Rename input. Type new name and press Enter to commit.\"));\n\n\t\t\tthis._domNode.appendChild(this._inputNode);\n\n\t\t\tthis._buttonNode = document.createElement('div');\n\t\t\tthis._buttonNode.className = 'rename-suggestions-button';\n\t\t\tthis._buttonNode.setAttribute('tabindex', '0');\n\n\t\t\tthis._buttonGenHoverText = nls.localize('generateRenameSuggestionsButton', \"Generate new name suggestions\");\n\t\t\tthis._buttonCancelHoverText = nls.localize('cancelRenameSuggestionsButton', \"Cancel\");\n\t\t\tthis._buttonHoverContent = this._buttonGenHoverText;\n\t\t\tthis._disposables.add(getBaseLayerHoverDelegate().setupDelayedHover(this._buttonNode, () => ({\n\t\t\t\tcontent: this._buttonHoverContent,\n\t\t\t\tappearance: {\n\t\t\t\t\tshowPointer: true,\n\t\t\t\t\tcompact: true,\n\t\t\t\t}\n\t\t\t})));\n\n\t\t\tthis._domNode.appendChild(this._buttonNode);\n\n\t\t\t// notify if selection changes to cancel request to rename-suggestion providers\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.INPUT, () => this._onDidInputChange.fire()));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.KEY_DOWN, (e) => {\n\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\t\t\t\tif (keyEvent.keyCode === KeyCode.LeftArrow || keyEvent.keyCode === KeyCode.RightArrow) {\n\t\t\t\t\tthis._onDidInputChange.fire();\n\t\t\t\t}\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.CLICK, () => this._onDidInputChange.fire()));\n\n\t\t\t// focus \"container\" border instead of input box\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.FOCUS, () => {\n\t\t\t\tthis.domNode.style.outlineWidth = '1px';\n\t\t\t\tthis.domNode.style.outlineStyle = 'solid';\n\t\t\t\tthis.domNode.style.outlineOffset = '-1px';\n\t\t\t\tthis.domNode.style.outlineColor = 'var(--vscode-focusBorder)';\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.BLUR, () => {\n\t\t\t\tthis.domNode.style.outline = 'none';\n\t\t\t}));\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tget input() {\n\t\tassertType(this._inputNode);\n\t\treturn this._inputNode;\n\t}\n\n\tget button() {\n\t\tassertType(this._buttonNode);\n\t\treturn this._buttonNode;\n\t}\n\n\tget buttonState() {\n\t\treturn this._buttonState;\n\t}\n\n\tsetSparkleButton() {\n\t\tthis._buttonState = 'sparkle';\n\t\tthis._sparkleIcon ??= renderIcon(Codicon.sparkle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._sparkleIcon);\n\t\tthis.button.setAttribute('aria-label', 'Generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonGenHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tsetStopButton() {\n\t\tthis._buttonState = 'stop';\n\t\tthis._stopIcon ??= renderIcon(Codicon.stopCircle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._stopIcon);\n\t\tthis.button.setAttribute('aria-label', 'Cancel generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonCancelHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t}\n}\n\nclass RenameCandidateView {\n\n\tprivate static _PADDING: number = 2;\n\n\tprivate readonly _domNode: HTMLElement;\n\tprivate readonly _icon: HTMLElement;\n\tprivate readonly _label: HTMLElement;\n\n\tconstructor(parent: HTMLElement, fontInfo: FontInfo) {\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.className = 'rename-box rename-candidate';\n\t\tthis._domNode.style.display = `flex`;\n\t\tthis._domNode.style.columnGap = `5px`;\n\t\tthis._domNode.style.alignItems = `center`;\n\t\tthis._domNode.style.height = `${fontInfo.lineHeight}px`;\n\t\tthis._domNode.style.padding = `${RenameCandidateView._PADDING}px`;\n\n\t\t// @ulugbekna: needed to keep space when the `icon.style.display` is set to `none`\n\t\tconst iconContainer = document.createElement('div');\n\t\ticonContainer.style.display = `flex`;\n\t\ticonContainer.style.alignItems = `center`;\n\t\ticonContainer.style.width = iconContainer.style.height = `${fontInfo.lineHeight * 0.8}px`;\n\t\tthis._domNode.appendChild(iconContainer);\n\n\t\tthis._icon = renderIcon(Codicon.sparkle);\n\t\tthis._icon.style.display = `none`;\n\t\ticonContainer.appendChild(this._icon);\n\n\t\tthis._label = document.createElement('div');\n\t\tdomFontInfo.applyFontInfo(this._label, fontInfo);\n\t\tthis._domNode.appendChild(this._label);\n\n\t\tparent.appendChild(this._domNode);\n\t}\n\n\tpublic populate(value: NewSymbolName) {\n\t\tthis._updateIcon(value);\n\t\tthis._updateLabel(value);\n\t}\n\n\tprivate _updateIcon(value: NewSymbolName) {\n\t\tconst isAIGenerated = !!value.tags?.includes(NewSymbolNameTag.AIGenerated);\n\t\tthis._icon.style.display = isAIGenerated ? 'inherit' : 'none';\n\t}\n\n\tprivate _updateLabel(value: NewSymbolName) {\n\t\tthis._label.innerText = value.newSymbolName;\n\t}\n\n\tpublic static getLayoutInfo({ lineHeight }: { lineHeight: number }): { totalHeight: number } {\n\t\tconst totalHeight = lineHeight + RenameCandidateView._PADDING * 2 /* top & bottom padding */;\n\t\treturn { totalHeight };\n\t}\n\n\tpublic dispose() {\n\t}\n}\n"]}
@@ -3,6 +3,8 @@
3
3
  * Licensed under the MIT License. See License.txt in the project root for license information.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
 
6
+ /* stylelint-disable layer-checker */
7
+
6
8
  .monaco-editor .codicon.codicon-symbol-array,
7
9
  .monaco-workbench .codicon.codicon-symbol-array { color: var(--vscode-symbolIcon-arrayForeground); }
8
10
  .monaco-editor .codicon.codicon-symbol-boolean,
@@ -634,6 +634,7 @@ async function excludeCharFromBeingHighlighted(configurationService, charCodes)
634
634
  const existingValue = configurationService.getValue(unicodeHighlightConfigKeys.allowedCharacters);
635
635
  let value;
636
636
  if ((typeof existingValue === 'object') && existingValue) {
637
+ // eslint-disable-next-line local/code-no-any-casts
637
638
  value = existingValue;
638
639
  }
639
640
  else {
@@ -649,6 +650,7 @@ async function excludeLocaleFromBeingHighlighted(configurationService, locales)
649
650
  let value;
650
651
  if ((typeof existingValue === 'object') && existingValue) {
651
652
  // Copy value, as the existing value is read only
653
+ // eslint-disable-next-line local/code-no-any-casts
652
654
  value = Object.assign({}, existingValue);
653
655
  }
654
656
  else {