@opensumi/ide-debug 2.21.13 → 2.22.0

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 (338) hide show
  1. package/lib/browser/breakpoint/breakpoint-manager.js.map +1 -1
  2. package/lib/browser/breakpoint/breakpoint-marker.d.ts +1 -1
  3. package/lib/browser/breakpoint/breakpoint-marker.d.ts.map +1 -1
  4. package/lib/browser/breakpoint/breakpoint-marker.js +3 -2
  5. package/lib/browser/breakpoint/breakpoint-marker.js.map +1 -1
  6. package/lib/browser/contextkeys/debug-call-stack-item-type-key.d.ts +1 -1
  7. package/lib/browser/contextkeys/debug-call-stack-item-type-key.d.ts.map +1 -1
  8. package/lib/browser/contextkeys/debug-contextkey.service.js.map +1 -1
  9. package/lib/browser/debug-configuration-manager.d.ts +2 -2
  10. package/lib/browser/debug-configuration-manager.d.ts.map +1 -1
  11. package/lib/browser/debug-configuration-manager.js +2 -2
  12. package/lib/browser/debug-configuration-manager.js.map +1 -1
  13. package/lib/browser/debug-contribution.d.ts +2 -147
  14. package/lib/browser/debug-contribution.d.ts.map +1 -1
  15. package/lib/browser/debug-contribution.js +50 -200
  16. package/lib/browser/debug-contribution.js.map +1 -1
  17. package/lib/browser/debug-exception-widget.js.map +1 -1
  18. package/lib/browser/debug-link-detector.js.map +1 -1
  19. package/lib/browser/debug-memory.js +4 -4
  20. package/lib/browser/debug-memory.js.map +1 -1
  21. package/lib/browser/debug-preferences.d.ts +1 -1
  22. package/lib/browser/debug-preferences.d.ts.map +1 -1
  23. package/lib/browser/debug-progress.service.js.map +1 -1
  24. package/lib/browser/debug-schema-updater.js.map +1 -1
  25. package/lib/browser/debug-service.js.map +1 -1
  26. package/lib/browser/debug-session-connection.d.ts +2 -3
  27. package/lib/browser/debug-session-connection.d.ts.map +1 -1
  28. package/lib/browser/debug-session-connection.js.map +1 -1
  29. package/lib/browser/debug-session-contribution.js.map +1 -1
  30. package/lib/browser/debug-session-manager.d.ts +3 -4
  31. package/lib/browser/debug-session-manager.d.ts.map +1 -1
  32. package/lib/browser/debug-session-manager.js +7 -8
  33. package/lib/browser/debug-session-manager.js.map +1 -1
  34. package/lib/browser/debug-session.d.ts +3 -4
  35. package/lib/browser/debug-session.d.ts.map +1 -1
  36. package/lib/browser/debug-session.js +15 -11
  37. package/lib/browser/debug-session.js.map +1 -1
  38. package/lib/browser/debugUtils.js +4 -4
  39. package/lib/browser/debugUtils.js.map +1 -1
  40. package/lib/browser/editor/debug-breakpoint-widget.js.map +1 -1
  41. package/lib/browser/editor/debug-breakpoint-zone-widget.js +7 -7
  42. package/lib/browser/editor/debug-breakpoint-zone-widget.js.map +1 -1
  43. package/lib/browser/editor/debug-breakpoint.module.less +3 -4
  44. package/lib/browser/editor/debug-editor-contribution.d.ts +2 -2
  45. package/lib/browser/editor/debug-editor-contribution.d.ts.map +1 -1
  46. package/lib/browser/editor/debug-editor-contribution.js +3 -4
  47. package/lib/browser/editor/debug-editor-contribution.js.map +1 -1
  48. package/lib/browser/editor/debug-expression-provider.js.map +1 -1
  49. package/lib/browser/editor/debug-hover-model.js.map +1 -1
  50. package/lib/browser/editor/debug-hover-source.d.ts +1 -1
  51. package/lib/browser/editor/debug-hover-source.d.ts.map +1 -1
  52. package/lib/browser/editor/debug-hover-source.js.map +1 -1
  53. package/lib/browser/editor/debug-hover-tree.model.service.js.map +1 -1
  54. package/lib/browser/editor/debug-hover-widget.js.map +1 -1
  55. package/lib/browser/editor/debug-model-manager.d.ts +2 -9
  56. package/lib/browser/editor/debug-model-manager.d.ts.map +1 -1
  57. package/lib/browser/editor/debug-model-manager.js +8 -15
  58. package/lib/browser/editor/debug-model-manager.js.map +1 -1
  59. package/lib/browser/editor/debug-model.d.ts +2 -2
  60. package/lib/browser/editor/debug-model.d.ts.map +1 -1
  61. package/lib/browser/editor/debug-model.js +27 -27
  62. package/lib/browser/editor/debug-model.js.map +1 -1
  63. package/lib/browser/editor/debug-run-to-cursor.service.js +7 -7
  64. package/lib/browser/editor/debug-run-to-cursor.service.js.map +1 -1
  65. package/lib/browser/editor/evaluatable-expression.js.map +1 -1
  66. package/lib/browser/index.d.ts +0 -14
  67. package/lib/browser/index.d.ts.map +1 -1
  68. package/lib/browser/index.js +8 -24
  69. package/lib/browser/index.js.map +1 -1
  70. package/lib/browser/markers/marker-manager.js.map +1 -1
  71. package/lib/browser/model/debug-source.d.ts +3 -3
  72. package/lib/browser/model/debug-source.d.ts.map +1 -1
  73. package/lib/browser/model/debug-source.js.map +1 -1
  74. package/lib/browser/model/debug-thread.d.ts +1 -1
  75. package/lib/browser/model/debug-thread.d.ts.map +1 -1
  76. package/lib/browser/model/debug-watch.d.ts.map +1 -1
  77. package/lib/browser/model/debug-watch.js +1 -2
  78. package/lib/browser/model/debug-watch.js.map +1 -1
  79. package/lib/browser/preferences/launch-folder-preference-provider.d.ts +2 -2
  80. package/lib/browser/preferences/launch-folder-preference-provider.d.ts.map +1 -1
  81. package/lib/browser/preferences/launch-folder-preference-provider.js +2 -2
  82. package/lib/browser/preferences/launch-folder-preference-provider.js.map +1 -1
  83. package/lib/browser/preferences/launch-preferences-contribution.js.map +1 -1
  84. package/lib/browser/tree/debug-console-tree-node.define.js +6 -6
  85. package/lib/browser/tree/debug-console-tree-node.define.js.map +1 -1
  86. package/lib/browser/tree/debug-tree-node.define.js +18 -18
  87. package/lib/browser/tree/debug-tree-node.define.js.map +1 -1
  88. package/lib/browser/view/breakpoints/debug-breakpoints.service.js +3 -3
  89. package/lib/browser/view/breakpoints/debug-breakpoints.service.js.map +1 -1
  90. package/lib/browser/view/configuration/debug-configuration.module.less +5 -5
  91. package/lib/browser/view/configuration/debug-configuration.service.d.ts +1 -2
  92. package/lib/browser/view/configuration/debug-configuration.service.d.ts.map +1 -1
  93. package/lib/browser/view/configuration/debug-configuration.service.js.map +1 -1
  94. package/lib/browser/view/configuration/debug-configuration.view.d.ts.map +1 -1
  95. package/lib/browser/view/configuration/debug-configuration.view.js +1 -1
  96. package/lib/browser/view/configuration/debug-configuration.view.js.map +1 -1
  97. package/lib/browser/view/configuration/debug-toolbar.service.js.map +1 -1
  98. package/lib/browser/view/configuration/debug-toolbar.view.js +2 -2
  99. package/lib/browser/view/configuration/debug-toolbar.view.js.map +1 -1
  100. package/lib/browser/view/console/debug-console-filter.model.js.map +1 -1
  101. package/lib/browser/view/console/debug-console-filter.service.js.map +1 -1
  102. package/lib/browser/view/console/debug-console-model.js.map +1 -1
  103. package/lib/browser/view/console/debug-console-session.d.ts +3 -2
  104. package/lib/browser/view/console/debug-console-session.d.ts.map +1 -1
  105. package/lib/browser/view/console/debug-console-session.js.map +1 -1
  106. package/lib/browser/view/console/debug-console-tree.model.service.d.ts +1 -1
  107. package/lib/browser/view/console/debug-console-tree.model.service.d.ts.map +1 -1
  108. package/lib/browser/view/console/debug-console-tree.model.service.js +5 -3
  109. package/lib/browser/view/console/debug-console-tree.model.service.js.map +1 -1
  110. package/lib/browser/view/console/debug-console.contribution.d.ts.map +1 -1
  111. package/lib/browser/view/console/debug-console.contribution.js +21 -23
  112. package/lib/browser/view/console/debug-console.contribution.js.map +1 -1
  113. package/lib/browser/view/console/debug-console.module.less +2 -3
  114. package/lib/browser/view/console/debug-console.service.js +7 -7
  115. package/lib/browser/view/console/debug-console.service.js.map +1 -1
  116. package/lib/browser/view/console/debug-console.view.d.ts +1 -1
  117. package/lib/browser/view/console/debug-console.view.d.ts.map +1 -1
  118. package/lib/browser/view/console/debug-console.view.js +15 -3
  119. package/lib/browser/view/console/debug-console.view.js.map +1 -1
  120. package/lib/browser/view/debug-view-model.js.map +1 -1
  121. package/lib/browser/view/frames/debug-call-stack-frame.view.d.ts.map +1 -1
  122. package/lib/browser/view/frames/debug-call-stack-frame.view.js +25 -24
  123. package/lib/browser/view/frames/debug-call-stack-frame.view.js.map +1 -1
  124. package/lib/browser/view/frames/debug-call-stack-session.view.d.ts.map +1 -1
  125. package/lib/browser/view/frames/debug-call-stack-session.view.js +8 -5
  126. package/lib/browser/view/frames/debug-call-stack-session.view.js.map +1 -1
  127. package/lib/browser/view/frames/debug-call-stack-thread.view.d.ts.map +1 -1
  128. package/lib/browser/view/frames/debug-call-stack-thread.view.js +12 -7
  129. package/lib/browser/view/frames/debug-call-stack-thread.view.js.map +1 -1
  130. package/lib/browser/view/frames/debug-call-stack.contribution.js +5 -5
  131. package/lib/browser/view/frames/debug-call-stack.contribution.js.map +1 -1
  132. package/lib/browser/view/frames/debug-call-stack.service.js.map +1 -1
  133. package/lib/browser/view/variables/debug-variables-model.js.map +1 -1
  134. package/lib/browser/view/variables/debug-variables-tree.model.service.d.ts +1 -1
  135. package/lib/browser/view/variables/debug-variables-tree.model.service.d.ts.map +1 -1
  136. package/lib/browser/view/variables/debug-variables-tree.model.service.js +5 -3
  137. package/lib/browser/view/variables/debug-variables-tree.model.service.js.map +1 -1
  138. package/lib/browser/view/variables/debug-variables.contribution.d.ts.map +1 -1
  139. package/lib/browser/view/variables/debug-variables.contribution.js +13 -14
  140. package/lib/browser/view/variables/debug-variables.contribution.js.map +1 -1
  141. package/lib/browser/view/variables/debug-variables.module.less +2 -11
  142. package/lib/browser/view/variables/debug-variables.view.d.ts +1 -1
  143. package/lib/browser/view/variables/debug-variables.view.d.ts.map +1 -1
  144. package/lib/browser/view/variables/debug-variables.view.js +1 -1
  145. package/lib/browser/view/variables/debug-variables.view.js.map +1 -1
  146. package/lib/browser/view/watch/debug-watch-model.js.map +1 -1
  147. package/lib/browser/view/watch/debug-watch-tree.model.service.d.ts +2 -2
  148. package/lib/browser/view/watch/debug-watch-tree.model.service.d.ts.map +1 -1
  149. package/lib/browser/view/watch/debug-watch-tree.model.service.js +5 -3
  150. package/lib/browser/view/watch/debug-watch-tree.model.service.js.map +1 -1
  151. package/lib/browser/view/watch/debug-watch.contribution.d.ts.map +1 -1
  152. package/lib/browser/view/watch/debug-watch.contribution.js +21 -19
  153. package/lib/browser/view/watch/debug-watch.contribution.js.map +1 -1
  154. package/lib/browser/view/watch/debug-watch.module.less +2 -12
  155. package/lib/browser/view/watch/debug-watch.view.d.ts +1 -1
  156. package/lib/browser/view/watch/debug-watch.view.d.ts.map +1 -1
  157. package/lib/browser/view/watch/debug-watch.view.js +1 -1
  158. package/lib/browser/view/watch/debug-watch.view.js.map +1 -1
  159. package/lib/common/commands.d.ts +46 -0
  160. package/lib/common/commands.d.ts.map +1 -0
  161. package/lib/common/commands.js +149 -0
  162. package/lib/common/commands.js.map +1 -0
  163. package/lib/common/debug-breakpoint.d.ts +3 -3
  164. package/lib/common/debug-breakpoint.d.ts.map +1 -1
  165. package/lib/common/debug-configuration.d.ts +1 -1
  166. package/lib/common/debug-configuration.d.ts.map +1 -1
  167. package/lib/common/debug-console.d.ts +18 -0
  168. package/lib/common/debug-console.d.ts.map +1 -0
  169. package/lib/common/debug-console.js +5 -0
  170. package/lib/common/debug-console.js.map +1 -0
  171. package/lib/common/debug-editor.d.ts +1 -1
  172. package/lib/common/debug-editor.d.ts.map +1 -1
  173. package/lib/common/debug-model.d.ts +19 -4
  174. package/lib/common/debug-model.d.ts.map +1 -1
  175. package/lib/common/debug-model.js +14 -6
  176. package/lib/common/debug-model.js.map +1 -1
  177. package/lib/common/debug-schema-updater.d.ts +2 -1
  178. package/lib/common/debug-schema-updater.d.ts.map +1 -1
  179. package/lib/common/debug-schema-updater.js +1 -1
  180. package/lib/common/debug-schema-updater.js.map +1 -1
  181. package/lib/common/debug-service.d.ts +1 -1
  182. package/lib/common/debug-service.d.ts.map +1 -1
  183. package/lib/common/debug-session.d.ts +1 -1
  184. package/lib/common/debug-session.d.ts.map +1 -1
  185. package/lib/common/index.d.ts +2 -0
  186. package/lib/common/index.d.ts.map +1 -1
  187. package/lib/common/index.js +2 -0
  188. package/lib/common/index.js.map +1 -1
  189. package/lib/common/inline-values.d.ts +1 -1
  190. package/lib/common/inline-values.d.ts.map +1 -1
  191. package/lib/common/terminal.js +10 -10
  192. package/lib/common/terminal.js.map +1 -1
  193. package/package.json +27 -26
  194. package/src/browser/assets/breakpoint-conditional-disabled.svg +4 -0
  195. package/src/browser/assets/breakpoint-conditional-unverified.svg +4 -0
  196. package/src/browser/assets/breakpoint-conditional.svg +4 -0
  197. package/src/browser/assets/breakpoint-disabled.svg +4 -0
  198. package/src/browser/assets/breakpoint-hint.svg +4 -0
  199. package/src/browser/assets/breakpoint-log-disabled.svg +4 -0
  200. package/src/browser/assets/breakpoint-log-unverified.svg +4 -0
  201. package/src/browser/assets/breakpoint-log.svg +4 -0
  202. package/src/browser/assets/breakpoint-unsupported.svg +4 -0
  203. package/src/browser/assets/breakpoint-unverified.svg +4 -0
  204. package/src/browser/assets/breakpoint.svg +4 -0
  205. package/src/browser/assets/breakpoints-activate-inverse.svg +4 -0
  206. package/src/browser/assets/breakpoints-activate.svg +4 -0
  207. package/src/browser/assets/configure-inverse.svg +4 -0
  208. package/src/browser/assets/configure.svg +4 -0
  209. package/src/browser/assets/continue-inverse.svg +4 -0
  210. package/src/browser/assets/current-and-breakpoint.svg +4 -0
  211. package/src/browser/assets/current-arrow.svg +4 -0
  212. package/src/browser/assets/remove-all-inverse.svg +4 -0
  213. package/src/browser/assets/remove-all.svg +4 -0
  214. package/src/browser/assets/repl-inverse.svg +4 -0
  215. package/src/browser/assets/repl.svg +4 -0
  216. package/src/browser/assets/restart-inverse.svg +4 -0
  217. package/src/browser/assets/stackframe-and-breakpoint.svg +4 -0
  218. package/src/browser/assets/stackframe-arrow.svg +4 -0
  219. package/src/browser/assets/start-inverse.svg +4 -0
  220. package/src/browser/breakpoint/breakpoint-decoration.ts +57 -0
  221. package/src/browser/breakpoint/breakpoint-manager.ts +348 -0
  222. package/src/browser/breakpoint/breakpoint-marker.ts +70 -0
  223. package/src/browser/breakpoint/index.ts +3 -0
  224. package/src/browser/components/debug-action/index.module.less +73 -0
  225. package/src/browser/components/debug-action/index.tsx +40 -0
  226. package/src/browser/components/debug-exception-widget.less +42 -0
  227. package/src/browser/components/floating-click-widget/index.module.less +5 -0
  228. package/src/browser/components/floating-click-widget/index.tsx +21 -0
  229. package/src/browser/components/index.ts +1 -0
  230. package/src/browser/contextkeys/debug-call-stack-item-type-key.ts +4 -0
  231. package/src/browser/contextkeys/debug-contextkey.service.ts +54 -0
  232. package/src/browser/contextkeys/index.ts +1 -0
  233. package/src/browser/debug-ansi-handle.ts +521 -0
  234. package/src/browser/debug-configuration-manager.ts +514 -0
  235. package/src/browser/debug-configuration-model.ts +66 -0
  236. package/src/browser/debug-contribution.ts +756 -0
  237. package/src/browser/debug-exception-widget.tsx +89 -0
  238. package/src/browser/debug-link-detector.ts +234 -0
  239. package/src/browser/debug-memory.ts +220 -0
  240. package/src/browser/debug-preferences.ts +70 -0
  241. package/src/browser/debug-progress.service.ts +122 -0
  242. package/src/browser/debug-schema-updater.ts +67 -0
  243. package/src/browser/debug-service.ts +42 -0
  244. package/src/browser/debug-session-connection.ts +331 -0
  245. package/src/browser/debug-session-contribution.ts +57 -0
  246. package/src/browser/debug-session-manager.ts +622 -0
  247. package/src/browser/debug-session.ts +1181 -0
  248. package/src/browser/debug-style.less +128 -0
  249. package/src/browser/debugUtils.ts +110 -0
  250. package/src/browser/editor/debug-breakpoint-widget.ts +99 -0
  251. package/src/browser/editor/debug-breakpoint-zone-widget.tsx +262 -0
  252. package/src/browser/editor/debug-breakpoint.module.less +30 -0
  253. package/src/browser/editor/debug-editor-contribution.ts +589 -0
  254. package/src/browser/editor/debug-expression-provider.ts +101 -0
  255. package/src/browser/editor/debug-hover-model.ts +38 -0
  256. package/src/browser/editor/debug-hover-source.ts +107 -0
  257. package/src/browser/editor/debug-hover-tree.model.service.ts +332 -0
  258. package/src/browser/editor/debug-hover-widget.tsx +200 -0
  259. package/src/browser/editor/debug-hover.module.less +29 -0
  260. package/src/browser/editor/debug-hover.view.tsx +147 -0
  261. package/src/browser/editor/debug-model-manager.ts +219 -0
  262. package/src/browser/editor/debug-model.ts +853 -0
  263. package/src/browser/editor/debug-run-to-cursor.service.ts +180 -0
  264. package/src/browser/editor/debug-styles.ts +66 -0
  265. package/src/browser/editor/evaluatable-expression.ts +47 -0
  266. package/src/browser/editor/index.ts +6 -0
  267. package/src/browser/index.ts +119 -0
  268. package/src/browser/markers/index.ts +2 -0
  269. package/src/browser/markers/marker-manager.ts +201 -0
  270. package/src/browser/markers/marker.ts +20 -0
  271. package/src/browser/model/debug-source.ts +144 -0
  272. package/src/browser/model/debug-stack-frame.ts +111 -0
  273. package/src/browser/model/debug-thread.ts +186 -0
  274. package/src/browser/model/debug-watch.ts +129 -0
  275. package/src/browser/model/index.ts +4 -0
  276. package/src/browser/preferences/launch-folder-preference-provider.ts +23 -0
  277. package/src/browser/preferences/launch-preferences-contribution.ts +9 -0
  278. package/src/browser/preferences/launch-preferences.ts +16 -0
  279. package/src/browser/tree/debug-console-tree-node.define.tsx +76 -0
  280. package/src/browser/tree/debug-tree-node.define.ts +768 -0
  281. package/src/browser/tree/index.ts +2 -0
  282. package/src/browser/view/breakpoints/debug-breakpoints.module.less +72 -0
  283. package/src/browser/view/breakpoints/debug-breakpoints.service.ts +217 -0
  284. package/src/browser/view/breakpoints/debug-breakpoints.view.tsx +174 -0
  285. package/src/browser/view/configuration/debug-configuration.module.less +110 -0
  286. package/src/browser/view/configuration/debug-configuration.service.ts +170 -0
  287. package/src/browser/view/configuration/debug-configuration.view.tsx +252 -0
  288. package/src/browser/view/configuration/debug-toolbar.service.ts +167 -0
  289. package/src/browser/view/configuration/debug-toolbar.view.tsx +335 -0
  290. package/src/browser/view/console/debug-console-filter.model.ts +49 -0
  291. package/src/browser/view/console/debug-console-filter.service.ts +81 -0
  292. package/src/browser/view/console/debug-console-filter.view.tsx +78 -0
  293. package/src/browser/view/console/debug-console-model.ts +48 -0
  294. package/src/browser/view/console/debug-console-session.ts +165 -0
  295. package/src/browser/view/console/debug-console-toolbar.view.tsx +28 -0
  296. package/src/browser/view/console/debug-console-tree.model.service.ts +553 -0
  297. package/src/browser/view/console/debug-console.contribution.ts +179 -0
  298. package/src/browser/view/console/debug-console.module.less +371 -0
  299. package/src/browser/view/console/debug-console.service.ts +433 -0
  300. package/src/browser/view/console/debug-console.view.tsx +511 -0
  301. package/src/browser/view/debug-view-model.ts +182 -0
  302. package/src/browser/view/frames/debug-call-stack-frame.view.tsx +230 -0
  303. package/src/browser/view/frames/debug-call-stack-session.view.tsx +253 -0
  304. package/src/browser/view/frames/debug-call-stack-thread.view.tsx +103 -0
  305. package/src/browser/view/frames/debug-call-stack.contribution.ts +88 -0
  306. package/src/browser/view/frames/debug-call-stack.module.less +193 -0
  307. package/src/browser/view/frames/debug-call-stack.operation.tsx +97 -0
  308. package/src/browser/view/frames/debug-call-stack.service.ts +105 -0
  309. package/src/browser/view/frames/debug-call-stack.view.tsx +43 -0
  310. package/src/browser/view/variables/debug-variables-model.ts +38 -0
  311. package/src/browser/view/variables/debug-variables-tree.model.service.ts +470 -0
  312. package/src/browser/view/variables/debug-variables.contribution.ts +244 -0
  313. package/src/browser/view/variables/debug-variables.module.less +139 -0
  314. package/src/browser/view/variables/debug-variables.view.tsx +303 -0
  315. package/src/browser/view/watch/debug-watch-model.ts +38 -0
  316. package/src/browser/view/watch/debug-watch-tree.model.service.ts +570 -0
  317. package/src/browser/view/watch/debug-watch.contribution.ts +170 -0
  318. package/src/browser/view/watch/debug-watch.module.less +178 -0
  319. package/src/browser/view/watch/debug-watch.view.tsx +337 -0
  320. package/src/common/commands.ts +146 -0
  321. package/src/common/constants.ts +81 -0
  322. package/src/common/debug-breakpoint.ts +43 -0
  323. package/src/common/debug-configuration.ts +68 -0
  324. package/src/common/debug-console.ts +20 -0
  325. package/src/common/debug-editor.ts +4 -0
  326. package/src/common/debug-hover.ts +31 -0
  327. package/src/common/debug-model.ts +272 -0
  328. package/src/common/debug-progress.ts +8 -0
  329. package/src/common/debug-schema-updater.ts +3 -0
  330. package/src/common/debug-service.ts +176 -0
  331. package/src/common/debug-session-options.ts +19 -0
  332. package/src/common/debug-session.ts +200 -0
  333. package/src/common/evaluatable-expression.ts +43 -0
  334. package/src/common/index.ts +16 -0
  335. package/src/common/inline-values.ts +77 -0
  336. package/src/common/terminal.ts +163 -0
  337. package/src/common/types.ts +86 -0
  338. package/src/index.ts +1 -0
@@ -0,0 +1,38 @@
1
+ import { Injectable, Optional } from '@opensumi/di';
2
+ import { TreeModel, TreeNodeEvent, CompositeTreeNode } from '@opensumi/ide-components';
3
+ import { ThrottledDelayer, Emitter, Event } from '@opensumi/ide-core-browser';
4
+
5
+ import { ExpressionContainer } from '../tree/debug-tree-node.define';
6
+
7
+ @Injectable({ multiple: true })
8
+ export class DebugHoverModel extends TreeModel {
9
+ static DEFAULT_FLUSH_DELAY = 100;
10
+
11
+ private flushDispatchChangeDelayer = new ThrottledDelayer<void>(DebugHoverModel.DEFAULT_FLUSH_DELAY);
12
+ private onWillUpdateEmitter: Emitter<void> = new Emitter();
13
+
14
+ constructor(@Optional() root: ExpressionContainer) {
15
+ super();
16
+ this.init(root);
17
+ }
18
+
19
+ get onWillUpdate(): Event<void> {
20
+ return this.onWillUpdateEmitter.event;
21
+ }
22
+
23
+ init(root: CompositeTreeNode) {
24
+ this.root = root;
25
+ // 分支更新时通知树刷新, 不是立即更新,而是延迟更新,待树稳定后再更新
26
+ // 100ms的延迟并不能保证树稳定,特别是在node_modules展开的情况下
27
+ // 但在普通使用上已经足够可用,即不会有渲染闪烁问题
28
+ this.root.watcher.on(TreeNodeEvent.BranchDidUpdate, () => {
29
+ if (!this.flushDispatchChangeDelayer.isTriggered()) {
30
+ this.flushDispatchChangeDelayer.cancel();
31
+ }
32
+ this.flushDispatchChangeDelayer.trigger(async () => {
33
+ await this.onWillUpdateEmitter.fireAndAwait();
34
+ this.dispatchChange();
35
+ });
36
+ });
37
+ }
38
+ }
@@ -0,0 +1,107 @@
1
+ import { Injectable, Autowired } from '@opensumi/di';
2
+ import { Event, Emitter } from '@opensumi/ide-core-browser';
3
+
4
+ import { IDebugSessionManager } from '../../common';
5
+ import { DebugSessionManager } from '../debug-session-manager';
6
+ import {
7
+ DebugVariable,
8
+ DebugScope,
9
+ DebugVariableContainer,
10
+ DebugHoverVariableRoot,
11
+ } from '../tree/debug-tree-node.define';
12
+
13
+
14
+ export type ExpressionVariable = DebugHoverVariableRoot | DebugVariable | DebugVariableContainer | undefined;
15
+
16
+ @Injectable()
17
+ export class DebugHoverSource {
18
+ @Autowired(IDebugSessionManager)
19
+ protected readonly sessions: DebugSessionManager;
20
+
21
+ private onDidChangeEmitter: Emitter<ExpressionVariable> = new Emitter();
22
+ onDidChange: Event<ExpressionVariable> = this.onDidChangeEmitter.event;
23
+
24
+ dispose(): void {
25
+ this._expression = undefined;
26
+ }
27
+
28
+ protected _expression: ExpressionVariable;
29
+ get expression(): ExpressionVariable {
30
+ return this._expression;
31
+ }
32
+
33
+ public clearEvaluate(): void {
34
+ this.onDidChangeEmitter.fire(undefined);
35
+ }
36
+
37
+ async evaluate(expression: string): Promise<ExpressionVariable> {
38
+ const evaluated = await this.doEvaluate(expression);
39
+ this._expression = evaluated;
40
+ this.onDidChangeEmitter.fire(evaluated);
41
+ return evaluated;
42
+ }
43
+
44
+ protected async doEvaluate(expression: string): Promise<ExpressionVariable> {
45
+ const { currentSession } = this.sessions;
46
+ if (!currentSession) {
47
+ return undefined;
48
+ }
49
+ if (currentSession.capabilities.supportsEvaluateForHovers) {
50
+ const item = new DebugHoverVariableRoot(expression, currentSession);
51
+ await item.evaluate('hover');
52
+ return (item.available && item) || undefined;
53
+ }
54
+ return this.findVariable(
55
+ expression
56
+ .split('.')
57
+ .map((word) => word.trim())
58
+ .filter((word) => !!word),
59
+ );
60
+ }
61
+
62
+ protected async findVariable(namesToFind: string[]): Promise<DebugVariable | DebugVariableContainer | undefined> {
63
+ const { currentFrame } = this.sessions;
64
+ if (!currentFrame) {
65
+ return undefined;
66
+ }
67
+ let variable: DebugVariable | undefined;
68
+ const scopes = await currentFrame.getScopes();
69
+ for (const scope of scopes) {
70
+ const found = await this.doFindVariable(scope, namesToFind);
71
+ if (!variable) {
72
+ variable = found;
73
+ } else if (found && found.value !== variable.value) {
74
+ // 仅显示找到的所有表达式是否具有相同的值
75
+ return undefined;
76
+ }
77
+ }
78
+ return variable;
79
+ }
80
+
81
+ protected async doFindVariable(
82
+ owner: DebugScope | DebugVariableContainer,
83
+ namesToFind: string[],
84
+ ): Promise<DebugVariable | undefined> {
85
+ await owner.ensureLoaded();
86
+ const elements = owner.children;
87
+ const variables: (DebugVariable | DebugVariableContainer)[] = [];
88
+ if (!elements) {
89
+ return;
90
+ }
91
+ for (const element of elements) {
92
+ if (element instanceof DebugVariableContainer || element instanceof DebugVariable) {
93
+ if (element.name === namesToFind[0]) {
94
+ variables.push(element);
95
+ }
96
+ }
97
+ }
98
+ if (variables.length !== 1) {
99
+ return undefined;
100
+ }
101
+ if (namesToFind.length === 1) {
102
+ return variables[0] as DebugVariable;
103
+ } else {
104
+ return this.doFindVariable(variables[0] as DebugVariableContainer, namesToFind.slice(1));
105
+ }
106
+ }
107
+ }
@@ -0,0 +1,332 @@
1
+ import { Injectable, Autowired, INJECTOR_TOKEN, Injector } from '@opensumi/di';
2
+ import {
3
+ DecorationsManager,
4
+ Decoration,
5
+ IRecycleTreeHandle,
6
+ WatchEvent,
7
+ TreeNodeEvent,
8
+ } from '@opensumi/ide-components';
9
+ import { Emitter, Deferred, Event, DisposableCollection, path, pSeries } from '@opensumi/ide-core-browser';
10
+
11
+ import { DebugVariable, ExpressionContainer, ExpressionNode } from '../tree/debug-tree-node.define';
12
+ import styles from '../view/variables/debug-variables.module.less';
13
+
14
+ import { DebugHoverModel } from './debug-hover-model';
15
+ import { ExpressionVariable, DebugHoverSource } from './debug-hover-source';
16
+
17
+ const { Path } = path;
18
+
19
+ export interface IDebugVariablesHandle extends IRecycleTreeHandle {
20
+ hasDirectFocus: () => boolean;
21
+ }
22
+
23
+ export interface IDebugHoverUpdateData {
24
+ treeModel?: DebugHoverModel;
25
+ variable?: DebugVariable;
26
+ }
27
+
28
+ @Injectable()
29
+ export class DebugHoverTreeModelService {
30
+ private static DEFAULT_FLUSH_FILE_EVENT_DELAY = 100;
31
+
32
+ @Autowired(INJECTOR_TOKEN)
33
+ private readonly injector: Injector;
34
+
35
+ @Autowired(DebugHoverSource)
36
+ private readonly debugHoverSource: DebugHoverSource;
37
+
38
+ private _treeModel: DebugHoverModel;
39
+ private _whenReady: Promise<void>;
40
+
41
+ private _decorations: DecorationsManager;
42
+ private _debugHoverTreeHandle: IDebugVariablesHandle;
43
+
44
+ public flushEventQueueDeferred: Deferred<void> | null;
45
+ private _eventFlushTimeout: number;
46
+ private _changeEventDispatchQueue: string[] = [];
47
+
48
+ // 装饰器
49
+ private selectedDecoration: Decoration = new Decoration(styles.mod_selected); // 选中态
50
+ private focusedDecoration: Decoration = new Decoration(styles.mod_focused); // 焦点态
51
+ private loadingDecoration: Decoration = new Decoration(styles.mod_loading); // 加载态
52
+
53
+ // 即使选中态也是焦点态的节点
54
+ private _focusedNode: ExpressionContainer | ExpressionNode | undefined;
55
+ // 选中态的节点
56
+ private _selectedNodes: (ExpressionContainer | ExpressionNode)[] = [];
57
+
58
+ private preContextMenuFocusedNode: ExpressionContainer | ExpressionNode | null;
59
+
60
+ private onDidRefreshedEmitter: Emitter<void> = new Emitter();
61
+ private onDidUpdateTreeModelOrVariableEmitter: Emitter<IDebugHoverUpdateData | void> = new Emitter();
62
+
63
+ private disposableCollection: DisposableCollection = new DisposableCollection();
64
+
65
+ constructor() {
66
+ this.debugHoverSource.onDidChange(async (expression: ExpressionVariable | DebugVariable | undefined) => {
67
+ if (!expression) {
68
+ this.onDidUpdateTreeModelOrVariableEmitter.fire({ treeModel: undefined, variable: undefined });
69
+ return;
70
+ }
71
+
72
+ if (expression instanceof DebugVariable) {
73
+ this.dispose();
74
+ this.onDidUpdateTreeModelOrVariableEmitter.fire({ variable: expression });
75
+ } else {
76
+ await this.initTreeModel(expression);
77
+ this.onDidUpdateTreeModelOrVariableEmitter.fire({ treeModel: this.treeModel });
78
+ }
79
+ });
80
+ }
81
+
82
+ get onDidRefreshed(): Event<void> {
83
+ return this.onDidRefreshedEmitter.event;
84
+ }
85
+
86
+ get onDidUpdateTreeModelOrVariable(): Event<IDebugHoverUpdateData | void> {
87
+ return this.onDidUpdateTreeModelOrVariableEmitter.event;
88
+ }
89
+
90
+ get flushEventQueuePromise() {
91
+ return this.flushEventQueueDeferred && this.flushEventQueueDeferred.promise;
92
+ }
93
+
94
+ get treeHandle() {
95
+ return this._debugHoverTreeHandle;
96
+ }
97
+
98
+ get decorations() {
99
+ return this._decorations;
100
+ }
101
+
102
+ get treeModel() {
103
+ return this._treeModel;
104
+ }
105
+
106
+ get whenReady() {
107
+ return this._whenReady;
108
+ }
109
+
110
+ // 既是选中态,也是焦点态节点
111
+ get focusedNode() {
112
+ return this._focusedNode;
113
+ }
114
+ // 是选中态,非焦点态节点
115
+ get selectedNodes() {
116
+ return this._selectedNodes;
117
+ }
118
+
119
+ dispose() {
120
+ if (!this.disposableCollection.disposed) {
121
+ this.disposableCollection.dispose();
122
+ }
123
+ }
124
+
125
+ listenTreeViewChange() {
126
+ this.dispose();
127
+ this.disposableCollection.push(
128
+ this.treeModel?.root.watcher.on(TreeNodeEvent.WillResolveChildren, (target) => {
129
+ this.loadingDecoration.addTarget(target);
130
+ }),
131
+ );
132
+ this.disposableCollection.push(
133
+ this.treeModel?.root.watcher.on(TreeNodeEvent.DidResolveChildren, (target) => {
134
+ this.loadingDecoration.removeTarget(target);
135
+ }),
136
+ );
137
+ this.disposableCollection.push(
138
+ this.treeModel!.onWillUpdate(() => {
139
+ // 更新树前更新下选中节点
140
+ if (this.selectedNodes.length !== 0) {
141
+ // 仅处理一下单选情况
142
+ const node = this.treeModel?.root.getTreeNodeByPath(this.selectedNodes[0].path);
143
+ this.selectedDecoration.addTarget(node as ExpressionNode);
144
+ }
145
+ }),
146
+ );
147
+ }
148
+
149
+ async initTreeModel(root: ExpressionVariable) {
150
+ if (!root) {
151
+ return;
152
+ }
153
+ this._treeModel = this.injector.get<any>(DebugHoverModel, [root]);
154
+
155
+ this.initDecorations(root);
156
+ this.listenTreeViewChange();
157
+ return this._treeModel;
158
+ }
159
+
160
+ initDecorations(root) {
161
+ this._decorations = new DecorationsManager(root as any);
162
+ this._decorations.addDecoration(this.selectedDecoration);
163
+ this._decorations.addDecoration(this.focusedDecoration);
164
+ this._decorations.addDecoration(this.loadingDecoration);
165
+ }
166
+
167
+ // 清空其他选中/焦点态节点,更新当前焦点节点
168
+ activeNodeDecoration = (target: ExpressionContainer | ExpressionNode, dispatchChange = true) => {
169
+ if (this.preContextMenuFocusedNode) {
170
+ this.focusedDecoration.removeTarget(this.preContextMenuFocusedNode);
171
+ this.selectedDecoration.removeTarget(this.preContextMenuFocusedNode);
172
+ this.preContextMenuFocusedNode = null;
173
+ }
174
+ if (target) {
175
+ if (this.selectedNodes.length > 0) {
176
+ // 因为选择装饰器可能通过其他方式添加而不能及时在selectedNodes上更新
177
+ // 故这里遍历所有选中装饰器的节点进行一次统一清理
178
+ for (const target of this.selectedDecoration.appliedTargets.keys()) {
179
+ this.selectedDecoration.removeTarget(target);
180
+ }
181
+ }
182
+ if (this.focusedNode) {
183
+ this.focusedDecoration.removeTarget(this.focusedNode);
184
+ }
185
+ this.selectedDecoration.addTarget(target);
186
+ this.focusedDecoration.addTarget(target);
187
+ this._focusedNode = target;
188
+ this._selectedNodes = [target];
189
+
190
+ if (dispatchChange) {
191
+ // 通知视图更新
192
+ this.treeModel.dispatchChange();
193
+ }
194
+ }
195
+ };
196
+
197
+ // 清空其他焦点态节点,更新当前焦点节点,
198
+ // removePreFocusedDecoration 表示更新焦点节点时如果此前已存在焦点节点,之前的节点装饰器将会被移除
199
+ activeNodeFocusedDecoration = (target: ExpressionContainer | ExpressionNode, removePreFocusedDecoration = false) => {
200
+ if (this.focusedNode !== target) {
201
+ if (removePreFocusedDecoration) {
202
+ // 当存在上一次右键菜单激活的文件时,需要把焦点态的文件节点的装饰器全部移除
203
+ if (this.preContextMenuFocusedNode) {
204
+ this.focusedDecoration.removeTarget(this.preContextMenuFocusedNode);
205
+ this.selectedDecoration.removeTarget(this.preContextMenuFocusedNode);
206
+ } else if (this.focusedNode) {
207
+ // 多选情况下第一次切换焦点文件
208
+ this.focusedDecoration.removeTarget(this.focusedNode);
209
+ }
210
+ this.preContextMenuFocusedNode = target;
211
+ } else if (this.focusedNode) {
212
+ this.preContextMenuFocusedNode = null;
213
+ this.focusedDecoration.removeTarget(this.focusedNode);
214
+ }
215
+ if (target) {
216
+ this.selectedDecoration.addTarget(target);
217
+ this.focusedDecoration.addTarget(target);
218
+ this._focusedNode = target;
219
+ this._selectedNodes.push(target);
220
+ }
221
+ }
222
+ // 通知视图更新
223
+ this.treeModel.dispatchChange();
224
+ };
225
+
226
+ // 取消选中节点焦点
227
+ enactiveNodeDecoration = () => {
228
+ if (this.focusedNode) {
229
+ this.focusedDecoration.removeTarget(this.focusedNode);
230
+ this.treeModel.dispatchChange();
231
+ }
232
+ this._focusedNode = undefined;
233
+ };
234
+
235
+ removeNodeDecoration() {
236
+ if (!this.decorations) {
237
+ return;
238
+ }
239
+ this.decorations.removeDecoration(this.selectedDecoration);
240
+ this.decorations.removeDecoration(this.focusedDecoration);
241
+ }
242
+
243
+ handleTreeHandler(handle: IDebugVariablesHandle) {
244
+ this._debugHoverTreeHandle = handle;
245
+ }
246
+
247
+ handleTreeBlur = () => {
248
+ // 清空焦点状态
249
+ this.enactiveNodeDecoration();
250
+ };
251
+
252
+ handleTwistierClick = (item: ExpressionContainer | ExpressionNode) => {
253
+ // 单选操作默认先更新选中状态
254
+ if (!ExpressionContainer.is(item)) {
255
+ this.activeNodeDecoration(item);
256
+ } else {
257
+ this.activeNodeDecoration(item, false);
258
+ this.toggleDirectory(item as ExpressionContainer);
259
+ }
260
+ };
261
+
262
+ toggleDirectory = async (item: ExpressionContainer) => {
263
+ if (item.expanded) {
264
+ this.treeHandle.collapseNode(item);
265
+ } else {
266
+ this.treeHandle.expandNode(item);
267
+ }
268
+ };
269
+
270
+ /**
271
+ * 刷新指定下的所有子节点
272
+ */
273
+ async refresh(node: ExpressionContainer = this.treeModel.root as ExpressionContainer) {
274
+ if (!ExpressionContainer.is(node) && (node as ExpressionContainer).parent) {
275
+ node = (node as ExpressionContainer).parent as ExpressionContainer;
276
+ }
277
+ // 这里也可以直接调用node.refresh,但由于文件树刷新事件可能会较多
278
+ // 队列化刷新动作减少更新成本
279
+ this.queueChangeEvent(node.path, () => {
280
+ this.onDidRefreshedEmitter.fire();
281
+ });
282
+ }
283
+
284
+ // 队列化Changed事件
285
+ private queueChangeEvent(path: string, callback: any) {
286
+ if (!this.flushEventQueueDeferred) {
287
+ this.flushEventQueueDeferred = new Deferred<void>();
288
+ clearTimeout(this._eventFlushTimeout);
289
+ this._eventFlushTimeout = setTimeout(async () => {
290
+ await this.flushEventQueue()!;
291
+ this.flushEventQueueDeferred?.resolve();
292
+ this.flushEventQueueDeferred = null;
293
+ callback();
294
+ }, DebugHoverTreeModelService.DEFAULT_FLUSH_FILE_EVENT_DELAY) as any;
295
+ }
296
+ if (this._changeEventDispatchQueue.indexOf(path) === -1) {
297
+ this._changeEventDispatchQueue.push(path);
298
+ }
299
+ }
300
+
301
+ public flushEventQueue = () => {
302
+ let promise: Promise<any>;
303
+ if (!this._changeEventDispatchQueue || this._changeEventDispatchQueue.length === 0) {
304
+ return;
305
+ }
306
+ this._changeEventDispatchQueue.sort((pathA, pathB) => {
307
+ const pathADepth = Path.pathDepth(pathA);
308
+ const pathBDepth = Path.pathDepth(pathB);
309
+ return pathADepth - pathBDepth;
310
+ });
311
+ const roots = [this._changeEventDispatchQueue[0]];
312
+ for (const path of this._changeEventDispatchQueue) {
313
+ if (roots.some((root) => path.indexOf(root) === 0)) {
314
+ continue;
315
+ } else {
316
+ roots.push(path);
317
+ }
318
+ }
319
+ promise = pSeries(
320
+ roots.map((path) => async () => {
321
+ const watcher = this.treeModel.root?.watchEvents.get(path);
322
+ if (watcher && typeof watcher.callback === 'function') {
323
+ await watcher.callback({ type: WatchEvent.Changed, path });
324
+ }
325
+ return null;
326
+ }),
327
+ );
328
+ // 重置更新队列
329
+ this._changeEventDispatchQueue = [];
330
+ return promise;
331
+ };
332
+ }
@@ -0,0 +1,200 @@
1
+ import debounce from 'lodash/debounce';
2
+ import React from 'react';
3
+ import ReactDOM from 'react-dom';
4
+
5
+ import { Injectable, Autowired } from '@opensumi/di';
6
+ import {
7
+ DisposableCollection,
8
+ Disposable,
9
+ AppConfig,
10
+ ConfigProvider,
11
+ IReporterService,
12
+ } from '@opensumi/ide-core-browser';
13
+ import type { ITextModel } from '@opensumi/monaco-editor-core/esm/vs/editor/common/model';
14
+ import * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
15
+
16
+ import {
17
+ DebugEditor,
18
+ IDebugSessionManager,
19
+ DEBUG_REPORT_NAME,
20
+ IDebugHoverWidget,
21
+ ShowDebugHoverOptions,
22
+ HideDebugHoverOptions,
23
+ } from '../../common';
24
+ import { DebugSessionManager } from '../debug-session-manager';
25
+
26
+ import { DebugExpressionProvider } from './debug-expression-provider';
27
+ import { DebugHoverSource } from './debug-hover-source';
28
+ import { DebugHoverView } from './debug-hover.view';
29
+
30
+ @Injectable()
31
+ export class DebugHoverWidget implements IDebugHoverWidget {
32
+ static ID = 'debug-hover-widget';
33
+
34
+ protected readonly toDispose = new DisposableCollection();
35
+
36
+ public allowEditorOverflow = true;
37
+
38
+ @Autowired(DebugEditor)
39
+ protected readonly editor: DebugEditor;
40
+
41
+ @Autowired(IDebugSessionManager)
42
+ protected readonly sessions: DebugSessionManager;
43
+
44
+ @Autowired(DebugExpressionProvider)
45
+ protected readonly expressionProvider: DebugExpressionProvider;
46
+
47
+ @Autowired(DebugHoverSource)
48
+ protected readonly hoverSource: DebugHoverSource;
49
+
50
+ @Autowired(AppConfig)
51
+ private configContext: AppConfig;
52
+
53
+ @Autowired(IReporterService)
54
+ protected readonly reporterService: IReporterService;
55
+
56
+ protected domNode: HTMLElement;
57
+
58
+ constructor() {
59
+ this.init();
60
+ }
61
+
62
+ protected init(): void {
63
+ this.toDispose.pushAll([
64
+ Disposable.create(() => this.editor.removeContentWidget(this)),
65
+ Disposable.create(() => this.hide()),
66
+ this.sessions.onDidChange(() => {
67
+ if (!this.isEditorFrame()) {
68
+ this.hide();
69
+ }
70
+ }),
71
+ ]);
72
+ this.renderView();
73
+ }
74
+
75
+ handleWindowWheel(event) {
76
+ event.stopPropagation();
77
+ }
78
+
79
+ getId(): string {
80
+ return DebugHoverWidget.ID;
81
+ }
82
+
83
+ getDomNode() {
84
+ if (!this.domNode) {
85
+ this.domNode = document.createElement('div');
86
+ this.domNode.classList.add(DebugHoverWidget.ID);
87
+ }
88
+ return this.domNode;
89
+ }
90
+
91
+ getPosition(): monaco.editor.IContentWidgetPosition | null {
92
+ const position = this.options && this.options.selection.getStartPosition();
93
+ const word = position && this.editor.getModel()?.getWordAtPosition(position);
94
+ return position && word
95
+ ? {
96
+ position: new monaco.Position(position.lineNumber, word.startColumn),
97
+ preference: [
98
+ monaco.editor.ContentWidgetPositionPreference.BELOW,
99
+ monaco.editor.ContentWidgetPositionPreference.ABOVE,
100
+ ],
101
+ }
102
+ : null;
103
+ }
104
+
105
+ dispose(): void {
106
+ this.toDispose.dispose();
107
+ }
108
+
109
+ show(options?: ShowDebugHoverOptions): void {
110
+ this.schedule(() => this.doShow(options), options && options.immediate);
111
+ }
112
+
113
+ hide(options?: HideDebugHoverOptions): void {
114
+ this.schedule(() => this.doHide(), options && options.immediate);
115
+ }
116
+
117
+ protected options: ShowDebugHoverOptions | undefined;
118
+
119
+ protected schedule(fn: () => void, immediate = true): void {
120
+ if (immediate) {
121
+ this.doSchedule.cancel();
122
+ fn();
123
+ } else {
124
+ this.doSchedule(fn);
125
+ }
126
+ }
127
+ protected readonly doSchedule: any = debounce((fn: () => void) => fn(), 300);
128
+
129
+ protected isEditorFrame(): boolean {
130
+ const { currentFrame } = this.sessions;
131
+ return (
132
+ !!currentFrame &&
133
+ !!currentFrame.source &&
134
+ !!this.editor.getModel() &&
135
+ this.editor.getModel()!.uri.toString() === currentFrame.source.uri.toString()
136
+ );
137
+ }
138
+
139
+ protected doHide(): void {
140
+ window.removeEventListener('mousewheel', this.handleWindowWheel, true);
141
+ if (this.getDomNode().contains(document.activeElement)) {
142
+ this.editor.focus();
143
+ }
144
+ this.hoverSource.dispose();
145
+ this.hoverSource.clearEvaluate();
146
+ this.options = undefined;
147
+ this.editor.removeContentWidget(this);
148
+ }
149
+
150
+ protected layoutContentWidget(): void {
151
+ this.editor.layoutContentWidget(this);
152
+ }
153
+
154
+ private renderView(): void {
155
+ ReactDOM.render(
156
+ <ConfigProvider value={this.configContext}>
157
+ <DebugHoverView />
158
+ </ConfigProvider>,
159
+ this.getDomNode(),
160
+ () => {
161
+ this.layoutContentWidget();
162
+ },
163
+ );
164
+ }
165
+
166
+ protected async doShow(options: ShowDebugHoverOptions | undefined = this.options): Promise<void> {
167
+ if (!this.isEditorFrame()) {
168
+ return;
169
+ }
170
+
171
+ if (!options) {
172
+ return;
173
+ }
174
+
175
+ if (this.options && this.options.selection.equalsRange(options.selection)) {
176
+ return;
177
+ }
178
+
179
+ this.options = options;
180
+ const expression = await this.expressionProvider.get(
181
+ this.editor.getModel()! as unknown as ITextModel,
182
+ options.selection,
183
+ );
184
+ if (!expression) {
185
+ return;
186
+ }
187
+
188
+ this.hoverSource.clearEvaluate();
189
+
190
+ if (!(await this.hoverSource.evaluate(expression))) {
191
+ return;
192
+ }
193
+
194
+ this.reporterService.point(DEBUG_REPORT_NAME?.DEBUG_VARIABLES, 'hover', expression);
195
+
196
+ this.editor.addContentWidget(this);
197
+ // 展示变量面板时临时屏蔽滚轮事件
198
+ window.addEventListener('mousewheel', this.handleWindowWheel, true);
199
+ }
200
+ }
@@ -0,0 +1,29 @@
1
+ /** Hover */
2
+ .debug_hover {
3
+ font-family: 'Menlo for Powerline', Menlo, Monaco, 'Courier New', monospace;
4
+ font-weight: normal;
5
+ font-size: 12px;
6
+ line-height: 21px;
7
+ letter-spacing: 0px;
8
+ background-color: var(--editor-background);
9
+ border: 1px solid rgb(79, 180, 216);
10
+ position: relative;
11
+ }
12
+
13
+ .debug_hover_title {
14
+ padding-left: 10px;
15
+ padding-right: 10px;
16
+ line-height: 18px;
17
+ font-size: 12px;
18
+ word-break: normal;
19
+ text-overflow: ellipsis;
20
+ height: 18px;
21
+ overflow: hidden;
22
+ white-space: pre;
23
+ &.has_complex_value {
24
+ max-width: 700px;
25
+ min-width: 400px;
26
+ border-bottom: 1px solid hsla(0, 0%, 50%, 0.35);
27
+ padding-left: 16px;
28
+ }
29
+ }