@opensumi/ide-core-browser 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 (560) hide show
  1. package/lib/application/application-state-service.d.ts +1 -1
  2. package/lib/application/application-state-service.d.ts.map +1 -1
  3. package/lib/application/application-state-service.js.map +1 -1
  4. package/lib/application/application.service.js.map +1 -1
  5. package/lib/authentication/authentication.contribution.js.map +1 -1
  6. package/lib/authentication/authentication.service.js.map +1 -1
  7. package/lib/bootstrap/app.d.ts +2 -35
  8. package/lib/bootstrap/app.d.ts.map +1 -1
  9. package/lib/bootstrap/app.interface.d.ts +39 -0
  10. package/lib/bootstrap/app.interface.d.ts.map +1 -0
  11. package/lib/bootstrap/app.interface.js +3 -0
  12. package/lib/bootstrap/app.interface.js.map +1 -0
  13. package/lib/bootstrap/app.js +8 -8
  14. package/lib/bootstrap/app.js.map +1 -1
  15. package/lib/bootstrap/app.view.d.ts +1 -1
  16. package/lib/bootstrap/app.view.d.ts.map +1 -1
  17. package/lib/bootstrap/connection.d.ts +1 -1
  18. package/lib/bootstrap/connection.d.ts.map +1 -1
  19. package/lib/bootstrap/connection.js +4 -4
  20. package/lib/bootstrap/connection.js.map +1 -1
  21. package/lib/bootstrap/index.d.ts +1 -1
  22. package/lib/bootstrap/index.d.ts.map +1 -1
  23. package/lib/bootstrap/index.js +1 -1
  24. package/lib/bootstrap/index.js.map +1 -1
  25. package/lib/bootstrap/inner-providers.js +1 -1
  26. package/lib/bootstrap/inner-providers.js.map +1 -1
  27. package/lib/bootstrap/lifecycle.service.js.map +1 -1
  28. package/lib/browser-module.js.map +1 -1
  29. package/lib/common/common.command.d.ts +24 -1
  30. package/lib/common/common.command.d.ts.map +1 -1
  31. package/lib/common/common.command.js +42 -6
  32. package/lib/common/common.command.js.map +1 -1
  33. package/lib/common/common.contribution.js.map +1 -1
  34. package/lib/common/common.module.js.map +1 -1
  35. package/lib/common/common.storage.js.map +1 -1
  36. package/lib/components/actions/index.d.ts +2 -2
  37. package/lib/components/actions/index.d.ts.map +1 -1
  38. package/lib/components/actions/index.js +2 -22
  39. package/lib/components/actions/index.js.map +1 -1
  40. package/lib/components/index.d.ts +0 -4
  41. package/lib/components/index.d.ts.map +1 -1
  42. package/lib/components/index.js +0 -4
  43. package/lib/components/index.js.map +1 -1
  44. package/lib/components/layout/box-panel.d.ts +1 -1
  45. package/lib/components/layout/box-panel.d.ts.map +1 -1
  46. package/lib/components/layout/split-panel.d.ts +17 -1
  47. package/lib/components/layout/split-panel.d.ts.map +1 -1
  48. package/lib/components/layout/split-panel.js +16 -16
  49. package/lib/components/layout/split-panel.js.map +1 -1
  50. package/lib/components/layout/split-panel.service.js.map +1 -1
  51. package/lib/components/progressbar/index.d.ts +2 -2
  52. package/lib/components/progressbar/index.d.ts.map +1 -1
  53. package/lib/components/progressbar/index.js +2 -10
  54. package/lib/components/progressbar/index.js.map +1 -1
  55. package/lib/contextkey/resource.d.ts +1 -1
  56. package/lib/contextkey/resource.d.ts.map +1 -1
  57. package/lib/contextkey/search.d.ts +24 -0
  58. package/lib/contextkey/search.d.ts.map +1 -0
  59. package/lib/contextkey/search.js +29 -0
  60. package/lib/contextkey/search.js.map +1 -0
  61. package/lib/contextkey/testing.d.ts +1 -0
  62. package/lib/contextkey/testing.d.ts.map +1 -1
  63. package/lib/contextkey/testing.js +2 -1
  64. package/lib/contextkey/testing.js.map +1 -1
  65. package/lib/core-preferences.d.ts +4 -3
  66. package/lib/core-preferences.d.ts.map +1 -1
  67. package/lib/core-preferences.js +2 -2
  68. package/lib/core-preferences.js.map +1 -1
  69. package/lib/dom/index.d.ts +1 -1
  70. package/lib/dom/index.d.ts.map +1 -1
  71. package/lib/encoding-registry.js.map +1 -1
  72. package/lib/extensions/extensions-point.service.js.map +1 -1
  73. package/lib/file-decoration.d.ts +10 -0
  74. package/lib/file-decoration.d.ts.map +1 -0
  75. package/lib/file-decoration.js +3 -0
  76. package/lib/file-decoration.js.map +1 -0
  77. package/lib/hash-calculate/hash-calculate.contribution.js.map +1 -1
  78. package/lib/index.d.ts +1 -1
  79. package/lib/index.d.ts.map +1 -1
  80. package/lib/index.js +1 -1
  81. package/lib/index.js.map +1 -1
  82. package/lib/keybinding/keybinding.js.map +1 -1
  83. package/lib/keyboard/keyboard-layout-provider.d.ts +2 -2
  84. package/lib/keyboard/keyboard-layout-provider.d.ts.map +1 -1
  85. package/lib/keyboard/keyboard-layout-provider.js +13 -13
  86. package/lib/keyboard/keyboard-layout-provider.js.map +1 -1
  87. package/lib/keyboard/keyboard-layout-service.js.map +1 -1
  88. package/lib/keyboard/keys.d.ts +2 -2
  89. package/lib/keyboard/keys.d.ts.map +1 -1
  90. package/lib/keyboard/layouts/_.contribution.js +3 -3
  91. package/lib/keyboard/layouts/_.contribution.js.map +1 -1
  92. package/lib/layout/accordion/tab-bar-toolbar.js.map +1 -1
  93. package/lib/layout/accordion/view-context-key.registry.js.map +1 -1
  94. package/lib/layout/layout-hooks.d.ts +1 -1
  95. package/lib/layout/layout-hooks.d.ts.map +1 -1
  96. package/lib/layout/layout-state.js.map +1 -1
  97. package/lib/layout/layout.interface.d.ts +1 -1
  98. package/lib/layout/layout.interface.d.ts.map +1 -1
  99. package/lib/layout/layout.js.map +1 -1
  100. package/lib/logger/browser-logger.js.map +1 -1
  101. package/lib/markdown/index.d.ts +1 -1
  102. package/lib/markdown/index.d.ts.map +1 -1
  103. package/lib/markdown/index.js +4 -31
  104. package/lib/markdown/index.js.map +1 -1
  105. package/lib/menu/next/base.d.ts +4 -4
  106. package/lib/menu/next/base.d.ts.map +1 -1
  107. package/lib/menu/next/base.js.map +1 -1
  108. package/lib/menu/next/ctxmenu-service.js +10 -10
  109. package/lib/menu/next/ctxmenu-service.js.map +1 -1
  110. package/lib/menu/next/menu-service.js +6 -6
  111. package/lib/menu/next/menu-service.js.map +1 -1
  112. package/lib/menu/next/menu.contrib.interface.d.ts +16 -15
  113. package/lib/menu/next/menu.contrib.interface.d.ts.map +1 -1
  114. package/lib/menu/next/menu.contrib.interface.js.map +1 -1
  115. package/lib/menu/next/menu.interface.d.ts +2 -2
  116. package/lib/menu/next/menu.interface.d.ts.map +1 -1
  117. package/lib/menu/next/menu.interface.js.map +1 -1
  118. package/lib/menu/next/menubar-service.js +10 -10
  119. package/lib/menu/next/menubar-service.js.map +1 -1
  120. package/lib/menu/next/renderer/ctxmenu/browser.js.map +1 -1
  121. package/lib/menu/next/renderer/ctxmenu/electron.js.map +1 -1
  122. package/lib/menu/next/toolbar-action.service.d.ts +1 -1
  123. package/lib/menu/next/toolbar-action.service.d.ts.map +1 -1
  124. package/lib/menu/next/toolbar-action.service.js.map +1 -1
  125. package/lib/monaco/index.d.ts +7 -3
  126. package/lib/monaco/index.d.ts.map +1 -1
  127. package/lib/monaco/index.js.map +1 -1
  128. package/lib/monaco/merge-editor-widget.d.ts +53 -0
  129. package/lib/monaco/merge-editor-widget.d.ts.map +1 -0
  130. package/lib/monaco/merge-editor-widget.js +107 -0
  131. package/lib/monaco/merge-editor-widget.js.map +1 -0
  132. package/lib/opener/command-opener.js.map +1 -1
  133. package/lib/opener/default-opener.js.map +1 -1
  134. package/lib/opener/http-opener.js.map +1 -1
  135. package/lib/opener/opener.contribution.js.map +1 -1
  136. package/lib/opener/opener.service.js.map +1 -1
  137. package/lib/preferences/early-preferences.js +4 -4
  138. package/lib/preferences/early-preferences.js.map +1 -1
  139. package/lib/preferences/preference-configurations.js +1 -1
  140. package/lib/preferences/preference-configurations.js.map +1 -1
  141. package/lib/preferences/preference-contribution.d.ts +1 -2
  142. package/lib/preferences/preference-contribution.d.ts.map +1 -1
  143. package/lib/preferences/preference-contribution.js +26 -22
  144. package/lib/preferences/preference-contribution.js.map +1 -1
  145. package/lib/preferences/preference-provider.js.map +1 -1
  146. package/lib/preferences/preference-proxy.d.ts +2 -3
  147. package/lib/preferences/preference-proxy.d.ts.map +1 -1
  148. package/lib/preferences/preference-proxy.js.map +1 -1
  149. package/lib/preferences/preference-service.d.ts +1 -0
  150. package/lib/preferences/preference-service.d.ts.map +1 -1
  151. package/lib/preferences/preference-service.js +48 -3
  152. package/lib/preferences/preference-service.js.map +1 -1
  153. package/lib/preferences/settings.d.ts +44 -5
  154. package/lib/preferences/settings.d.ts.map +1 -1
  155. package/lib/preferences/settings.js.map +1 -1
  156. package/lib/preferences/types.d.ts +8 -1
  157. package/lib/preferences/types.d.ts.map +1 -1
  158. package/lib/preferences/types.js.map +1 -1
  159. package/lib/progress/progress-bar.d.ts +4 -1
  160. package/lib/progress/progress-bar.d.ts.map +1 -1
  161. package/lib/progress/progress-bar.js +11 -4
  162. package/lib/progress/progress-bar.js.map +1 -1
  163. package/lib/progress/progress-indicator.js.map +1 -1
  164. package/lib/progress/progress.service.js +6 -6
  165. package/lib/progress/progress.service.js.map +1 -1
  166. package/lib/quick-open/index.d.ts +1 -1
  167. package/lib/quick-open/index.d.ts.map +1 -1
  168. package/lib/quick-open/index.js.map +1 -1
  169. package/lib/quick-open/recent-files.js.map +1 -1
  170. package/lib/raw-context-key.d.ts +1 -1
  171. package/lib/raw-context-key.d.ts.map +1 -1
  172. package/lib/raw-context-key.js +4 -4
  173. package/lib/raw-context-key.js.map +1 -1
  174. package/lib/react-hooks/useThrottleFn/index.d.ts +13 -0
  175. package/lib/react-hooks/useThrottleFn/index.d.ts.map +1 -0
  176. package/lib/react-hooks/useThrottleFn/index.js +20 -0
  177. package/lib/react-hooks/useThrottleFn/index.js.map +1 -0
  178. package/lib/react-providers/config-provider.d.ts +6 -0
  179. package/lib/react-providers/config-provider.d.ts.map +1 -1
  180. package/lib/react-providers/config-provider.js.map +1 -1
  181. package/lib/react-providers/slot.d.ts +2 -2
  182. package/lib/react-providers/slot.d.ts.map +1 -1
  183. package/lib/services/clipboard.service.d.ts +1 -0
  184. package/lib/services/clipboard.service.d.ts.map +1 -1
  185. package/lib/services/clipboard.service.js +17 -30
  186. package/lib/services/clipboard.service.js.map +1 -1
  187. package/lib/services/credentials-service.js.map +1 -1
  188. package/lib/services/crypto-service.js.map +1 -1
  189. package/lib/services/external-uri.service.js.map +1 -1
  190. package/lib/services/label-service.js.map +1 -1
  191. package/lib/services/storage-service.d.ts +1 -0
  192. package/lib/services/storage-service.d.ts.map +1 -1
  193. package/lib/services/storage-service.js +13 -2
  194. package/lib/services/storage-service.js.map +1 -1
  195. package/lib/style/icon/icon.d.ts +3 -2
  196. package/lib/style/icon/icon.d.ts.map +1 -1
  197. package/lib/style/icon/icon.js +5 -1
  198. package/lib/style/icon/icon.js.map +1 -1
  199. package/lib/style/icon/ide-iconfont.d.ts +1 -1
  200. package/lib/style/icon/ide-iconfont.d.ts.map +1 -1
  201. package/lib/style/icon/ide-iconfont.js +1 -1
  202. package/lib/style/icon/ide-iconfont.js.map +1 -1
  203. package/lib/style/icon/index.less +13 -0
  204. package/lib/toolbar/components/button.js +12 -12
  205. package/lib/toolbar/components/button.js.map +1 -1
  206. package/lib/toolbar/toolbar.popover.registry.js.map +1 -1
  207. package/lib/toolbar/toolbar.registry.d.ts +1 -1
  208. package/lib/toolbar/toolbar.registry.d.ts.map +1 -1
  209. package/lib/toolbar/toolbar.registry.js.map +1 -1
  210. package/lib/toolbar/types.d.ts +1 -1
  211. package/lib/toolbar/types.d.ts.map +1 -1
  212. package/lib/utils/json.d.ts +5 -5
  213. package/lib/utils/json.d.ts.map +1 -1
  214. package/lib/utils/label.d.ts.map +1 -1
  215. package/lib/utils/label.js +16 -9
  216. package/lib/utils/label.js.map +1 -1
  217. package/lib/utils/parse.d.ts +2 -1
  218. package/lib/utils/parse.d.ts.map +1 -1
  219. package/lib/utils/parse.js +10 -1
  220. package/lib/utils/parse.js.map +1 -1
  221. package/lib/variable/variable.d.ts +1 -1
  222. package/lib/variable/variable.d.ts.map +1 -1
  223. package/lib/variable/variable.js.map +1 -1
  224. package/lib/window/window.service.js.map +1 -1
  225. package/package.json +9 -11
  226. package/src/application/application-state-service.ts +54 -0
  227. package/src/application/application.service.ts +51 -0
  228. package/src/application/index.ts +2 -0
  229. package/src/authentication/authentication.contribution.ts +35 -0
  230. package/src/authentication/authentication.service.ts +517 -0
  231. package/src/bootstrap/app.interface.ts +46 -0
  232. package/src/bootstrap/app.ts +710 -0
  233. package/src/bootstrap/app.view.tsx +88 -0
  234. package/src/bootstrap/connection.ts +116 -0
  235. package/src/bootstrap/index.ts +3 -0
  236. package/src/bootstrap/inner-providers.ts +297 -0
  237. package/src/bootstrap/lifecycle.service.ts +19 -0
  238. package/src/browser-module.ts +24 -0
  239. package/src/common/common.command.ts +1018 -0
  240. package/src/common/common.contribution.ts +343 -0
  241. package/src/common/common.define.ts +55 -0
  242. package/src/common/common.module.ts +33 -0
  243. package/src/common/common.storage.ts +22 -0
  244. package/src/common/container-id.ts +12 -0
  245. package/src/common/index.ts +4 -0
  246. package/src/components/actions/index.tsx +486 -0
  247. package/src/components/actions/placements.ts +47 -0
  248. package/src/components/actions/styles.module.less +144 -0
  249. package/src/components/badge/index.tsx +1 -0
  250. package/src/components/index.ts +22 -0
  251. package/src/components/layout/box-panel.tsx +88 -0
  252. package/src/components/layout/default-layout.tsx +61 -0
  253. package/src/components/layout/index.ts +4 -0
  254. package/src/components/layout/layout.ts +80 -0
  255. package/src/components/layout/split-panel.service.ts +56 -0
  256. package/src/components/layout/split-panel.tsx +315 -0
  257. package/src/components/layout/styles.module.less +21 -0
  258. package/src/components/loading/index.ts +1 -0
  259. package/src/components/loading/loading.less +14 -0
  260. package/src/components/loading/loading.view.tsx +7 -0
  261. package/src/components/loading/media/loading-dark.svg +52 -0
  262. package/src/components/loading/media/loading-hc.svg +52 -0
  263. package/src/components/loading/media/loading.svg +52 -0
  264. package/src/components/popover/styles.module.less +81 -0
  265. package/src/components/portal/index.tsx +13 -0
  266. package/src/components/progressbar/index.tsx +3 -0
  267. package/src/components/resize/resize.module.less +78 -0
  268. package/src/components/resize/resize.tsx +663 -0
  269. package/src/components/select/index.tsx +12 -0
  270. package/src/components/select/styles.less +6 -0
  271. package/src/context-key.ts +48 -0
  272. package/src/contextkey/dialog.ts +3 -0
  273. package/src/contextkey/explorer.ts +26 -0
  274. package/src/contextkey/index.ts +6 -0
  275. package/src/contextkey/outline.ts +4 -0
  276. package/src/contextkey/resource.ts +61 -0
  277. package/src/contextkey/search.ts +30 -0
  278. package/src/contextkey/terminal.ts +7 -0
  279. package/src/contextkey/testing.ts +9 -0
  280. package/src/contextkey/workspace.ts +7 -0
  281. package/src/core-preferences.ts +318 -0
  282. package/src/dom/index.ts +176 -0
  283. package/src/encoding-registry.ts +83 -0
  284. package/src/extensions/extensions-point.service.ts +78 -0
  285. package/src/extensions/index.ts +3 -0
  286. package/src/extensions/schema/browserViews.ts +96 -0
  287. package/src/extensions/schema/menu.ts +245 -0
  288. package/src/extensions/schema/opensumiExtensionPackageSchema.ts +12 -0
  289. package/src/extensions/schema/toolbar.ts +338 -0
  290. package/src/extensions/schema/vscodeExtensionPackageSchema.ts +330 -0
  291. package/src/file-decoration.ts +10 -0
  292. package/src/fs/index.ts +12 -0
  293. package/src/hash-calculate/hash-calculate.contribution.ts +19 -0
  294. package/src/index.ts +42 -0
  295. package/src/keybinding/index.ts +1 -0
  296. package/src/keybinding/keybinding.ts +908 -0
  297. package/src/keyboard/index.ts +3 -0
  298. package/src/keyboard/keyboard-layout-provider.ts +412 -0
  299. package/src/keyboard/keyboard-layout-service.ts +449 -0
  300. package/src/keyboard/keys.ts +748 -0
  301. package/src/keyboard/layouts/_.contribution.ts +24 -0
  302. package/src/keyboard/layouts/cz.win.ts +168 -0
  303. package/src/keyboard/layouts/de-swiss.win.ts +168 -0
  304. package/src/keyboard/layouts/de.darwin.ts +131 -0
  305. package/src/keyboard/layouts/de.linux.ts +186 -0
  306. package/src/keyboard/layouts/de.win.ts +168 -0
  307. package/src/keyboard/layouts/dk.win.ts +168 -0
  308. package/src/keyboard/layouts/dvorak.darwin.ts +131 -0
  309. package/src/keyboard/layouts/en-belgian.win.ts +168 -0
  310. package/src/keyboard/layouts/en-ext.darwin.ts +131 -0
  311. package/src/keyboard/layouts/en-in.win.ts +168 -0
  312. package/src/keyboard/layouts/en-intl.darwin.ts +131 -0
  313. package/src/keyboard/layouts/en-intl.win.ts +168 -0
  314. package/src/keyboard/layouts/en-uk.darwin.ts +131 -0
  315. package/src/keyboard/layouts/en-uk.win.ts +168 -0
  316. package/src/keyboard/layouts/en.darwin.ts +139 -0
  317. package/src/keyboard/layouts/en.linux.ts +186 -0
  318. package/src/keyboard/layouts/en.win.ts +173 -0
  319. package/src/keyboard/layouts/es-latin.win.ts +168 -0
  320. package/src/keyboard/layouts/es.darwin.ts +131 -0
  321. package/src/keyboard/layouts/es.linux.ts +186 -0
  322. package/src/keyboard/layouts/es.win.ts +168 -0
  323. package/src/keyboard/layouts/fr.darwin.ts +131 -0
  324. package/src/keyboard/layouts/fr.linux.ts +186 -0
  325. package/src/keyboard/layouts/fr.win.ts +168 -0
  326. package/src/keyboard/layouts/hu.win.ts +168 -0
  327. package/src/keyboard/layouts/it.darwin.ts +131 -0
  328. package/src/keyboard/layouts/it.win.ts +168 -0
  329. package/src/keyboard/layouts/jp-roman.darwin.ts +131 -0
  330. package/src/keyboard/layouts/jp.darwin.ts +131 -0
  331. package/src/keyboard/layouts/ko.darwin.ts +131 -0
  332. package/src/keyboard/layouts/layout.contribution.darwin.ts +23 -0
  333. package/src/keyboard/layouts/layout.contribution.linux.ts +12 -0
  334. package/src/keyboard/layouts/layout.contribution.ts +9 -0
  335. package/src/keyboard/layouts/layout.contribution.win.ts +29 -0
  336. package/src/keyboard/layouts/no.win.ts +168 -0
  337. package/src/keyboard/layouts/pl.darwin.ts +131 -0
  338. package/src/keyboard/layouts/pl.win.ts +168 -0
  339. package/src/keyboard/layouts/pt-br.win.ts +169 -0
  340. package/src/keyboard/layouts/pt.darwin.ts +131 -0
  341. package/src/keyboard/layouts/pt.win.ts +168 -0
  342. package/src/keyboard/layouts/ru.darwin.ts +131 -0
  343. package/src/keyboard/layouts/ru.linux.ts +186 -0
  344. package/src/keyboard/layouts/ru.win.ts +168 -0
  345. package/src/keyboard/layouts/sv.darwin.ts +131 -0
  346. package/src/keyboard/layouts/sv.win.ts +168 -0
  347. package/src/keyboard/layouts/thai.win.ts +168 -0
  348. package/src/keyboard/layouts/tr.win.ts +168 -0
  349. package/src/keyboard/layouts/zh-hans.darwin.ts +131 -0
  350. package/src/layout/accordion/tab-bar-toolbar.tsx +59 -0
  351. package/src/layout/accordion/view-context-key.registry.ts +34 -0
  352. package/src/layout/constants.ts +7 -0
  353. package/src/layout/index.ts +5 -0
  354. package/src/layout/layout-hooks.ts +70 -0
  355. package/src/layout/layout-state.ts +107 -0
  356. package/src/layout/layout.interface.ts +101 -0
  357. package/src/layout/layout.ts +80 -0
  358. package/src/layout/view-id.ts +18 -0
  359. package/src/logger/browser-logger.ts +51 -0
  360. package/src/logger/index.ts +1 -0
  361. package/src/markdown/index.tsx +30 -0
  362. package/src/menu/next/base.ts +513 -0
  363. package/src/menu/next/ctxmenu-service.ts +188 -0
  364. package/src/menu/next/index.ts +10 -0
  365. package/src/menu/next/menu-id.ts +86 -0
  366. package/src/menu/next/menu-service.ts +252 -0
  367. package/src/menu/next/menu-util.ts +77 -0
  368. package/src/menu/next/menu.contrib.interface.ts +79 -0
  369. package/src/menu/next/menu.interface.ts +253 -0
  370. package/src/menu/next/menubar-service.ts +211 -0
  371. package/src/menu/next/renderer/ctxmenu/base.ts +18 -0
  372. package/src/menu/next/renderer/ctxmenu/browser.ts +45 -0
  373. package/src/menu/next/renderer/ctxmenu/electron.ts +207 -0
  374. package/src/menu/next/toolbar-action.service.ts +132 -0
  375. package/src/monaco/index.ts +136 -0
  376. package/src/monaco/merge-editor-widget.ts +159 -0
  377. package/src/opener/command-opener.ts +42 -0
  378. package/src/opener/default-opener.ts +31 -0
  379. package/src/opener/http-opener.ts +25 -0
  380. package/src/opener/index.ts +19 -0
  381. package/src/opener/opener.contribution.ts +57 -0
  382. package/src/opener/opener.service.ts +66 -0
  383. package/src/preferences/early-preferences.ts +117 -0
  384. package/src/preferences/index.ts +9 -0
  385. package/src/preferences/preference-configurations.ts +77 -0
  386. package/src/preferences/preference-contribution.ts +397 -0
  387. package/src/preferences/preference-provider.ts +414 -0
  388. package/src/preferences/preference-proxy.ts +291 -0
  389. package/src/preferences/preference-scope.ts +3 -0
  390. package/src/preferences/preference-service.ts +621 -0
  391. package/src/preferences/settings.ts +90 -0
  392. package/src/preferences/types.ts +119 -0
  393. package/src/progress/index.ts +58 -0
  394. package/src/progress/progress-bar.tsx +34 -0
  395. package/src/progress/progress-indicator.ts +90 -0
  396. package/src/progress/progress.module.less +46 -0
  397. package/src/progress/progress.service.tsx +429 -0
  398. package/src/quick-open/index.ts +655 -0
  399. package/src/quick-open/recent-files.ts +68 -0
  400. package/src/raw-context-key.ts +116 -0
  401. package/src/react-hooks/event.tsx +80 -0
  402. package/src/react-hooks/hot-key.tsx +58 -0
  403. package/src/react-hooks/index.ts +3 -0
  404. package/src/react-hooks/injectable-hooks.tsx +35 -0
  405. package/src/react-hooks/portal-hooks.tsx +38 -0
  406. package/src/react-hooks/useThrottleFn/index.ts +34 -0
  407. package/src/react-providers/config-provider.tsx +269 -0
  408. package/src/react-providers/index.tsx +2 -0
  409. package/src/react-providers/slot.module.less +19 -0
  410. package/src/react-providers/slot.tsx +242 -0
  411. package/src/services/clipboard.service.ts +92 -0
  412. package/src/services/credentials-service.ts +91 -0
  413. package/src/services/crypto-service.ts +23 -0
  414. package/src/services/external-uri.service.ts +68 -0
  415. package/src/services/index.ts +7 -0
  416. package/src/services/label-service.ts +386 -0
  417. package/src/services/status-bar-service.ts +108 -0
  418. package/src/services/storage-service.ts +201 -0
  419. package/src/style/codicons/README.md +22 -0
  420. package/src/style/codicons/codicon-animations.css +15 -0
  421. package/src/style/codicons/generator.js +15 -0
  422. package/src/style/entry.less +25 -0
  423. package/src/style/icon/fileicons/file-default.svg +1 -0
  424. package/src/style/icon/fileicons/folder-default.svg +1 -0
  425. package/src/style/icon/fileicons.less +20 -0
  426. package/src/style/icon/icon.ts +547 -0
  427. package/src/style/icon/ide-iconfont.ts +13 -0
  428. package/src/style/icon/index.less +67 -0
  429. package/src/style/icon/seti.woff +0 -0
  430. package/src/style/icon/symbol-icons/boolean-dark.svg +3 -0
  431. package/src/style/icon/symbol-icons/boolean-light.svg +3 -0
  432. package/src/style/icon/symbol-icons/class-dark.svg +3 -0
  433. package/src/style/icon/symbol-icons/class-light.svg +3 -0
  434. package/src/style/icon/symbol-icons/constant-dark.svg +4 -0
  435. package/src/style/icon/symbol-icons/constant-light.svg +4 -0
  436. package/src/style/icon/symbol-icons/enumerator-dark.svg +3 -0
  437. package/src/style/icon/symbol-icons/enumerator-item-dark.svg +3 -0
  438. package/src/style/icon/symbol-icons/enumerator-item-light.svg +3 -0
  439. package/src/style/icon/symbol-icons/enumerator-light.svg +3 -0
  440. package/src/style/icon/symbol-icons/event-dark.svg +3 -0
  441. package/src/style/icon/symbol-icons/event-light.svg +3 -0
  442. package/src/style/icon/symbol-icons/field-dark.svg +3 -0
  443. package/src/style/icon/symbol-icons/field-light.svg +3 -0
  444. package/src/style/icon/symbol-icons/file-dark.svg +3 -0
  445. package/src/style/icon/symbol-icons/file-light.svg +3 -0
  446. package/src/style/icon/symbol-icons/indexer-dark.svg +3 -0
  447. package/src/style/icon/symbol-icons/indexer-light.svg +3 -0
  448. package/src/style/icon/symbol-icons/interface-dark.svg +3 -0
  449. package/src/style/icon/symbol-icons/interface-light.svg +3 -0
  450. package/src/style/icon/symbol-icons/keyword-dark.svg +3 -0
  451. package/src/style/icon/symbol-icons/keyword-light.svg +3 -0
  452. package/src/style/icon/symbol-icons/method-dark.svg +3 -0
  453. package/src/style/icon/symbol-icons/method-light.svg +3 -0
  454. package/src/style/icon/symbol-icons/namespace-dark.svg +3 -0
  455. package/src/style/icon/symbol-icons/namespace-light.svg +3 -0
  456. package/src/style/icon/symbol-icons/numeric-dark.svg +3 -0
  457. package/src/style/icon/symbol-icons/numeric-light.svg +3 -0
  458. package/src/style/icon/symbol-icons/operator-dark.svg +3 -0
  459. package/src/style/icon/symbol-icons/operator-light.svg +3 -0
  460. package/src/style/icon/symbol-icons/property-dark.svg +3 -0
  461. package/src/style/icon/symbol-icons/property-light.svg +3 -0
  462. package/src/style/icon/symbol-icons/snippet-dark.svg +3 -0
  463. package/src/style/icon/symbol-icons/snippet-light.svg +3 -0
  464. package/src/style/icon/symbol-icons/string-dark.svg +3 -0
  465. package/src/style/icon/symbol-icons/string-light.svg +3 -0
  466. package/src/style/icon/symbol-icons/structure-dark.svg +3 -0
  467. package/src/style/icon/symbol-icons/structure-light.svg +3 -0
  468. package/src/style/icon/symbol-icons/symbol-icons.css +284 -0
  469. package/src/style/icon/symbol-icons/template-dark.svg +3 -0
  470. package/src/style/icon/symbol-icons/template-light.svg +3 -0
  471. package/src/style/icon/symbol-icons/variable-dark.svg +3 -0
  472. package/src/style/icon/symbol-icons/variable-light.svg +3 -0
  473. package/src/style/icon.less +8 -0
  474. package/src/style/index.less +14 -0
  475. package/src/style/monaco-override.less +116 -0
  476. package/src/style/normalize.less +92 -0
  477. package/src/style/octicons/octicons-cdn.css +720 -0
  478. package/src/style/octicons/octicons.css +714 -0
  479. package/src/style/octicons/octicons.html +1882 -0
  480. package/src/style/octicons/octicons.svg +582 -0
  481. package/src/style/octicons/octicons.ttf +0 -0
  482. package/src/style/override.less +97 -0
  483. package/src/style/toolbar.less +199 -0
  484. package/src/style/utilities.less +8 -0
  485. package/src/style/variable.less +8 -0
  486. package/src/terminal/index.ts +7 -0
  487. package/src/toolbar/components/auto-complete.tsx +0 -0
  488. package/src/toolbar/components/button.tsx +440 -0
  489. package/src/toolbar/components/index.ts +2 -0
  490. package/src/toolbar/components/select.tsx +189 -0
  491. package/src/toolbar/index.ts +3 -0
  492. package/src/toolbar/toolbar.popover.registry.ts +32 -0
  493. package/src/toolbar/toolbar.registry.ts +352 -0
  494. package/src/toolbar/toolbar.tsx +710 -0
  495. package/src/toolbar/types.ts +383 -0
  496. package/src/utils/create-overlay.tsx +53 -0
  497. package/src/utils/electron.ts +92 -0
  498. package/src/utils/env.ts +26 -0
  499. package/src/utils/icon.ts +13 -0
  500. package/src/utils/index.ts +7 -0
  501. package/src/utils/json.ts +251 -0
  502. package/src/utils/label.tsx +36 -0
  503. package/src/utils/parse.ts +82 -0
  504. package/src/utils/react-hooks.ts +118 -0
  505. package/src/variable/index.ts +1 -0
  506. package/src/variable/variable.ts +84 -0
  507. package/src/window/index.ts +34 -0
  508. package/src/window/window.service.ts +100 -0
  509. package/lib/components/progressbar/styles.module.less +0 -31
  510. package/lib/components/recycle-tree/index.d.ts +0 -2
  511. package/lib/components/recycle-tree/index.d.ts.map +0 -1
  512. package/lib/components/recycle-tree/index.js +0 -5
  513. package/lib/components/recycle-tree/index.js.map +0 -1
  514. package/lib/components/recycle-tree/recycle-tree.view.d.ts +0 -82
  515. package/lib/components/recycle-tree/recycle-tree.view.d.ts.map +0 -1
  516. package/lib/components/recycle-tree/recycle-tree.view.js +0 -188
  517. package/lib/components/recycle-tree/recycle-tree.view.js.map +0 -1
  518. package/lib/components/scroll/index.d.ts +0 -68
  519. package/lib/components/scroll/index.d.ts.map +0 -1
  520. package/lib/components/scroll/index.js +0 -279
  521. package/lib/components/scroll/index.js.map +0 -1
  522. package/lib/components/scroll/scroll.module.less +0 -108
  523. package/lib/components/scrollbar/index.d.ts +0 -2
  524. package/lib/components/scrollbar/index.d.ts.map +0 -1
  525. package/lib/components/scrollbar/index.js +0 -5
  526. package/lib/components/scrollbar/index.js.map +0 -1
  527. package/lib/components/scrollbar/scrollbar.less +0 -36
  528. package/lib/components/scrollbar/scrollbar.view.d.ts +0 -7
  529. package/lib/components/scrollbar/scrollbar.view.d.ts.map +0 -1
  530. package/lib/components/scrollbar/scrollbar.view.js +0 -11
  531. package/lib/components/scrollbar/scrollbar.view.js.map +0 -1
  532. package/lib/components/tree/index.d.ts +0 -4
  533. package/lib/components/tree/index.d.ts.map +0 -1
  534. package/lib/components/tree/index.js +0 -7
  535. package/lib/components/tree/index.js.map +0 -1
  536. package/lib/components/tree/tree-node.view.d.ts +0 -26
  537. package/lib/components/tree/tree-node.view.d.ts.map +0 -1
  538. package/lib/components/tree/tree-node.view.js +0 -350
  539. package/lib/components/tree/tree-node.view.js.map +0 -1
  540. package/lib/components/tree/tree.module.less +0 -296
  541. package/lib/components/tree/tree.view.d.ts +0 -132
  542. package/lib/components/tree/tree.view.d.ts.map +0 -1
  543. package/lib/components/tree/tree.view.js +0 -238
  544. package/lib/components/tree/tree.view.js.map +0 -1
  545. package/lib/tree/index.d.ts +0 -4
  546. package/lib/tree/index.d.ts.map +0 -1
  547. package/lib/tree/index.js +0 -7
  548. package/lib/tree/index.js.map +0 -1
  549. package/lib/tree/tree-expansion.d.ts +0 -16
  550. package/lib/tree/tree-expansion.d.ts.map +0 -1
  551. package/lib/tree/tree-expansion.js +0 -20
  552. package/lib/tree/tree-expansion.js.map +0 -1
  553. package/lib/tree/tree-selection.d.ts +0 -48
  554. package/lib/tree/tree-selection.d.ts.map +0 -1
  555. package/lib/tree/tree-selection.js +0 -64
  556. package/lib/tree/tree-selection.js.map +0 -1
  557. package/lib/tree/tree.d.ts +0 -195
  558. package/lib/tree/tree.d.ts.map +0 -1
  559. package/lib/tree/tree.js +0 -108
  560. package/lib/tree/tree.js.map +0 -1
@@ -0,0 +1,655 @@
1
+ import { observable } from 'mobx';
2
+ import React from 'react';
3
+
4
+ import type { VALIDATE_TYPE } from '@opensumi/ide-components';
5
+ import type { URI, MaybePromise, IDisposable, Event } from '@opensumi/ide-core-common';
6
+
7
+ import type { Keybinding } from '../keybinding';
8
+
9
+ export enum Mode {
10
+ /**
11
+ * select 状态时触发
12
+ */
13
+ PREVIEW = 0,
14
+ /**
15
+ * 鼠标选择或者回车选择会触发
16
+ */
17
+ OPEN = 1,
18
+ /**
19
+ * 键盘 → 键或者鼠标中键会触发
20
+ */
21
+ OPEN_IN_BACKGROUND = 2,
22
+ }
23
+
24
+ /**
25
+ * 高亮显示的范围
26
+ */
27
+ export interface Highlight {
28
+ start: number;
29
+ end: number;
30
+ }
31
+
32
+ /**
33
+ * QuickOpen 执行的模式
34
+ * @deprecated
35
+ * 该类型使用 monaco-editor-core/esm 中导入的版本
36
+ */
37
+ export { Mode as QuickOpenMode };
38
+
39
+ export interface IKeyMods {
40
+ readonly ctrlCmd: boolean;
41
+ readonly alt: boolean;
42
+ }
43
+
44
+ export interface QuickTitleButton {
45
+ iconPath: URI | { light: string | URI; dark: string | URI } | ThemeIcon;
46
+ icon?: string; // a background image coming from a url
47
+ iconClass?: string; // a class such as one coming from font awesome
48
+ tooltip?: string;
49
+ // undefined 在 QuickTitleBar 中视为为右侧
50
+ side?: QuickTitleButtonSide;
51
+ }
52
+
53
+ /**
54
+ * Button for an action in a {@link QuickPick} or {@link InputBox}.
55
+ */
56
+ export interface QuickInputButton {
57
+ /**
58
+ * Icon for the button.
59
+ */
60
+ readonly iconPath: URI | { light: URI; dark: URI } | ThemeIcon;
61
+
62
+ /**
63
+ * An optional tooltip.
64
+ */
65
+ readonly tooltip?: string | undefined;
66
+
67
+ /**
68
+ * a class such as one coming from font awesome
69
+ */
70
+ readonly iconClass?: string;
71
+
72
+ /**
73
+ * An optional id for the button.
74
+ */
75
+ handle?: number;
76
+ }
77
+
78
+ export interface IQuickPickItemButtonEvent {
79
+ button: QuickInputButton;
80
+ item: {
81
+ handle: number;
82
+ };
83
+ }
84
+
85
+ /**
86
+ * QuickOpen Item 参数
87
+ */
88
+ export interface QuickOpenItemOptions {
89
+ /**
90
+ * 屏幕阅读器字段,对应 vscode
91
+ */
92
+ tooltip?: string;
93
+ /**
94
+ * 标签文案
95
+ */
96
+ label?: string;
97
+ /**
98
+ * 高亮标签的范围
99
+ */
100
+ labelHighlights?: Highlight[];
101
+ /**
102
+ * 显示描述
103
+ */
104
+ description?: string;
105
+ /**
106
+ * 高亮描述的范围
107
+ */
108
+ descriptionHighlights?: Highlight[];
109
+ /**
110
+ * 显示详情
111
+ */
112
+ detail?: string;
113
+ /**
114
+ * 描述高亮范围
115
+ */
116
+ detailHighlights?: Highlight[];
117
+ /**
118
+ * 是否隐藏
119
+ */
120
+ hidden?: boolean;
121
+ /**
122
+ * 打开资源,对应 vscode getResource
123
+ */
124
+ uri?: URI;
125
+ /**
126
+ * 图标
127
+ */
128
+ iconClass?: string;
129
+ /**
130
+ * 对应绑定的快捷键
131
+ */
132
+ keybinding?: Keybinding;
133
+ /**
134
+ * 分组文案
135
+ */
136
+ groupLabel?: string;
137
+ /**
138
+ * 是否显示 border
139
+ */
140
+ showBorder?: boolean;
141
+ /**
142
+ * 是否选中
143
+ */
144
+ checked?: boolean;
145
+ /**
146
+ * 点击 QuickOpen 要执行的方法
147
+ * @param mode
148
+ * @returns 执行后是否要隐藏面板, mode 为 PREVIEW 时不判断该值
149
+ */
150
+ run?(mode: Mode): boolean;
151
+
152
+ value?: any;
153
+
154
+ buttons?: QuickInputButton[];
155
+ }
156
+
157
+ export class QuickOpenItem {
158
+ private labelHighlights?: Highlight[];
159
+
160
+ private descriptionHighlights?: Highlight[];
161
+
162
+ private detailHighlights?: Highlight[];
163
+
164
+ @observable
165
+ public checked = false;
166
+
167
+ constructor(protected options: QuickOpenItemOptions) {
168
+ this.checked = options.checked || false;
169
+ }
170
+
171
+ getTooltip(): string | undefined {
172
+ return this.options.tooltip || this.getLabel();
173
+ }
174
+ getLabel(): string | undefined {
175
+ return this.options.label;
176
+ }
177
+ getLabelHighlights(): Highlight[] {
178
+ return this.options.labelHighlights || [];
179
+ }
180
+ getDescription(): string | undefined {
181
+ return this.options.description;
182
+ }
183
+ getDescriptionHighlights(): Highlight[] | undefined {
184
+ return this.options.descriptionHighlights;
185
+ }
186
+ getDetail(): string | undefined {
187
+ return this.options.detail;
188
+ }
189
+ getDetailHighlights(): Highlight[] | undefined {
190
+ return this.options.detailHighlights;
191
+ }
192
+ isHidden(): boolean {
193
+ return this.options.hidden || false;
194
+ }
195
+ getUri(): URI | undefined {
196
+ return this.options.uri;
197
+ }
198
+ getIconClass(): string | undefined {
199
+ return this.options.iconClass;
200
+ }
201
+ getKeybinding(): Keybinding | undefined {
202
+ return this.options.keybinding;
203
+ }
204
+ setHighlights(labelHighlights?: Highlight[], descriptionHighlights?: Highlight[], detailHighlights?: Highlight[]) {
205
+ this.labelHighlights = labelHighlights;
206
+ this.descriptionHighlights = descriptionHighlights;
207
+ this.detailHighlights = detailHighlights;
208
+ }
209
+ getHighlights(): [Highlight[] | undefined, Highlight[] | undefined, Highlight[] | undefined] {
210
+ return [this.labelHighlights, this.descriptionHighlights, this.detailHighlights];
211
+ }
212
+ run(mode: Mode): boolean {
213
+ if (!this.options.run) {
214
+ return false;
215
+ }
216
+ return this.options.run(mode);
217
+ }
218
+ getGroupLabel(): string | undefined {
219
+ return this.options.groupLabel;
220
+ }
221
+ showBorder(): boolean {
222
+ return this.options.showBorder || false;
223
+ }
224
+ getValue(): any {
225
+ return this.options.value;
226
+ }
227
+ getButtons(): QuickInputButton[] {
228
+ return this.options.buttons || [];
229
+ }
230
+ }
231
+
232
+ export enum HideReason {
233
+ ELEMENT_SELECTED = 0,
234
+ FOCUS_LOST = 1,
235
+ CANCELED = 2,
236
+ }
237
+
238
+ export interface QuickOpenModel {
239
+ onType(lookFor: string, acceptor: (items: QuickOpenItem[], actionProvider?: QuickOpenActionProvider) => void): void;
240
+ }
241
+
242
+ export const QuickOpenService = Symbol('QuickOpenService');
243
+
244
+ export interface QuickOpenService {
245
+ open(model: QuickOpenModel, options?: QuickOpenOptions): void;
246
+ hide(reason?: HideReason): void;
247
+ showDecoration(type: VALIDATE_TYPE): void;
248
+ hideDecoration(): void;
249
+ refresh(): void;
250
+ }
251
+
252
+ export type QuickOpenOptions = Partial<QuickOpenOptions.Resolved>;
253
+ export namespace QuickOpenOptions {
254
+ export interface FuzzyMatchOptions {
255
+ /**
256
+ * 是否开启分离式模糊搜索
257
+ * 比如 `13` 会匹配到 `123`
258
+ * 默认: `false`
259
+ */
260
+ enableSeparateSubstringMatching?: boolean;
261
+ }
262
+ export interface Resolved extends QuickOpenTabOptions {
263
+ /**
264
+ * 启用状态
265
+ */
266
+ readonly enabled: boolean;
267
+
268
+ /**
269
+ * 显示前缀
270
+ */
271
+ readonly prefix: string;
272
+ /**
273
+ * 占位符
274
+ */
275
+ readonly placeholder: string;
276
+ readonly valueSelection: [number, number];
277
+ /**
278
+ * 关闭回调
279
+ * @param canceled 是否是取消关闭
280
+ */
281
+ onClose(canceled: boolean): void;
282
+
283
+ /**
284
+ * select 状态时触发回调
285
+ * @param item
286
+ * @param index
287
+ */
288
+ onSelect(item: QuickOpenItem, index: number): void;
289
+
290
+ /**
291
+ * select 状态时触发回调
292
+ * @param item
293
+ * @param index
294
+ */
295
+ onConfirm(items: QuickOpenItem[]): void;
296
+ /**
297
+ * 在输入框修改文字时触发
298
+ * @param value
299
+ */
300
+ onChangeValue: (value: string) => void;
301
+ /**
302
+ * 在 quick pick 时监听是否有 modifer 按下
303
+ */
304
+ onKeyMods?: (mods: IKeyMods) => void;
305
+ /**
306
+ * 是否模糊匹配标签
307
+ * 使用 vscode filter matchesFuzzy 方法
308
+ */
309
+ readonly fuzzyMatchLabel: boolean | FuzzyMatchOptions;
310
+ /**
311
+ * 是否模糊匹配详情
312
+ * 使用 vscode filter matchesFuzzy 方法
313
+ */
314
+ readonly fuzzyMatchDetail: boolean | FuzzyMatchOptions;
315
+ /**
316
+ * 是否模糊匹配描述
317
+ * 使用 vscode filter matchesFuzzy 方法
318
+ */
319
+ readonly fuzzyMatchDescription: boolean | FuzzyMatchOptions;
320
+ /**
321
+ * 是否模糊排序
322
+ * 使用 vscode filter compareEntries 方法
323
+ */
324
+ readonly fuzzySort: boolean;
325
+ /**
326
+ * 前缀的截取长度
327
+ */
328
+ readonly skipPrefix: number;
329
+
330
+ /**
331
+ * 点击空白处是否收起 QuickOpen
332
+ */
333
+ readonly ignoreFocusOut: boolean;
334
+ /**
335
+ * 如果为 true,则输入内容会隐藏
336
+ */
337
+ readonly password: boolean;
338
+ /**
339
+ * 是否为多选
340
+ */
341
+ canPickMany?: boolean;
342
+ /**
343
+ * 如果没有高亮也显示 item
344
+ */
345
+ readonly showItemsWithoutHighlight: boolean;
346
+
347
+ selectIndex(lookFor: string): number;
348
+
349
+ /**
350
+ * 结果为空显示的 item,应该用此方法实现空占位,不用 accept,accept 结果可能会被 fuzzy 处理导致高亮
351
+ */
352
+ getPlaceholderItem?: (lookFor: string, originLookFor: string) => QuickOpenItem;
353
+
354
+ /**
355
+ * 内容更新后保持滚动区域不变
356
+ */
357
+ keepScrollPosition?: boolean;
358
+ }
359
+ export const defaultOptions: Resolved = Object.freeze({
360
+ enabled: true,
361
+ prefix: '',
362
+ placeholder: '',
363
+ onClose: () => {
364
+ /* no-op*/
365
+ },
366
+ onSelect: () => {
367
+ /* no-op*/
368
+ },
369
+ onChangeValue: () => {
370
+ /* no-op*/
371
+ },
372
+ onConfirm: () => {
373
+ /* no-op*/
374
+ },
375
+ valueSelection: [-1, -1] as [number, number],
376
+ fuzzyMatchLabel: false,
377
+ fuzzyMatchDetail: false,
378
+ fuzzyMatchDescription: false,
379
+ fuzzySort: false,
380
+ skipPrefix: 0,
381
+ ignoreFocusOut: false,
382
+ password: false,
383
+ showItemsWithoutHighlight: false,
384
+ selectIndex: () => -1,
385
+ title: '',
386
+ });
387
+ export function resolve(options: QuickOpenOptions = {}, source: Resolved = defaultOptions): Resolved {
388
+ return Object.assign({}, source, options);
389
+ }
390
+ }
391
+
392
+ export interface QuickPickItem<T> {
393
+ label: string;
394
+ groupLabel?: string;
395
+ showBorder?: boolean;
396
+ value: T;
397
+ description?: string;
398
+ detail?: string;
399
+ iconClass?: string;
400
+ buttons?: QuickInputButton[];
401
+ }
402
+
403
+ export interface QuickPickOptions extends QuickOpenOptions {
404
+ placeholder?: string;
405
+ /**
406
+ * default: true
407
+ */
408
+ fuzzyMatchLabel?: boolean;
409
+ /**
410
+ * default: true
411
+ */
412
+ fuzzyMatchDescription?: boolean;
413
+
414
+ /**
415
+ * Current step count
416
+ */
417
+ step?: number | undefined;
418
+
419
+ /**
420
+ * The title of the input
421
+ */
422
+ title?: string | undefined;
423
+
424
+ /**
425
+ * Total number of steps
426
+ */
427
+ totalSteps?: number | undefined;
428
+
429
+ /**
430
+ * Buttons that are displayed on the title panel
431
+ */
432
+ buttons?: QuickTitleButton[];
433
+
434
+ /**
435
+ * Set to `true` to keep the input box open when focus moves to another part of the editor or to another window.
436
+ */
437
+ ignoreFocusOut?: boolean;
438
+
439
+ /**
440
+ * The prefill value.
441
+ */
442
+ value?: string;
443
+
444
+ /*
445
+ * An optional flag to maintain the scroll position of the quick pick when the quick pick items are updated. Defaults to false.
446
+ */
447
+ keepScrollPosition?: boolean;
448
+ }
449
+
450
+ export const QuickPickService = Symbol('QuickPickService');
451
+
452
+ export interface QuickPickService {
453
+ show(elements: string[], options?: QuickPickOptions): Promise<string | undefined>;
454
+ show<T>(elements: QuickPickItem<T>[], options?: QuickPickOptions): Promise<T | undefined>;
455
+ show<T>(elements: (string | QuickPickItem<T>)[], options?: QuickPickOptions): Promise<T | string | undefined>;
456
+ hide(reason?: HideReason): void;
457
+ readonly onDidAccept: Event<void>;
458
+ readonly onDidChangeActiveItems: Event<QuickOpenItem[]>;
459
+ }
460
+
461
+ export const PrefixQuickOpenService = Symbol('PrefixQuickOpenService');
462
+ export interface PrefixQuickOpenService {
463
+ open(prefix: string): void;
464
+ }
465
+
466
+ export const IQuickInputService = Symbol('IQuickInputService');
467
+ export interface IQuickInputService {
468
+ open(options?: QuickInputOptions): Promise<string | undefined>;
469
+ hide(): void;
470
+ }
471
+
472
+ export interface QuickInputOptions {
473
+ /**
474
+ * Show the progress indicator if true
475
+ */
476
+ busy?: boolean;
477
+
478
+ /**
479
+ * Allow user input
480
+ */
481
+ enabled?: boolean;
482
+
483
+ /**
484
+ * Current step count
485
+ */
486
+ step?: number | undefined;
487
+
488
+ /**
489
+ * The title of the input
490
+ */
491
+ title?: string | undefined;
492
+
493
+ /**
494
+ * Total number of steps
495
+ */
496
+ totalSteps?: number | undefined;
497
+
498
+ /**
499
+ * Buttons that are displayed on the title panel
500
+ */
501
+ buttons?: QuickTitleButton[];
502
+
503
+ /**
504
+ * Text for when there is a problem with the current input value
505
+ */
506
+ validationMessage?: string | undefined;
507
+ validationType?: VALIDATE_TYPE;
508
+ /**
509
+ * The prefill value.
510
+ */
511
+ value?: string;
512
+
513
+ /**
514
+ * The text to display under the input box.
515
+ */
516
+ prompt?: string;
517
+
518
+ /**
519
+ * The place holder in the input box to guide the user what to type.
520
+ */
521
+ placeHolder?: string;
522
+
523
+ /**
524
+ * Set to `true` to show a password prompt that will not show the typed value.
525
+ */
526
+ password?: boolean;
527
+
528
+ /**
529
+ * Set to `true` to keep the input box open when focus moves to another part of the editor or to another window.
530
+ */
531
+ ignoreFocusOut?: boolean;
532
+
533
+ /**
534
+ * Selection of the prefilled [`value`](#InputBoxOptions.value). Defined as tuple of two number where the
535
+ * first is the inclusive start index and the second the exclusive end index. When `undefined` the whole
536
+ * word will be selected, when empty (start equals end) only the cursor will be set,
537
+ * otherwise the defined range will be selected.
538
+ */
539
+ valueSelection?: [number, number];
540
+
541
+ /**
542
+ * An optional function that will be called to validate input and to give a hint
543
+ * to the user.
544
+ *
545
+ * @param value The current value of the input box.
546
+ * @return Return `undefined`, or the empty string when 'value' is valid.
547
+ */
548
+ validateInput?(value: string): MaybePromise<string | { message: string; type: VALIDATE_TYPE } | null | undefined>;
549
+ }
550
+
551
+ export interface QuickOpenActionProvider {
552
+ hasActions(item: QuickOpenItem): boolean;
553
+ getActions(item: QuickOpenItem): QuickOpenAction[];
554
+ getValidateInput?(lookFor: string): string;
555
+ }
556
+
557
+ export interface QuickOpenActionOptions {
558
+ id: string;
559
+ label?: string;
560
+ tooltip?: string;
561
+ class?: string | undefined;
562
+ enabled?: boolean;
563
+ checked?: boolean;
564
+ radio?: boolean;
565
+ }
566
+
567
+ export interface QuickOpenAction extends QuickOpenActionOptions, IDisposable {
568
+ run(item?: QuickOpenItem): Promise<void>;
569
+ }
570
+
571
+ export enum QuickTitleButtonSide {
572
+ LEFT = 0,
573
+ RIGHT = 1,
574
+ }
575
+
576
+ /**
577
+ * @deprecated
578
+ */
579
+ export class ThemeIcon {
580
+ static readonly File: ThemeIcon = new ThemeIcon('file');
581
+
582
+ static readonly Folder: ThemeIcon = new ThemeIcon('folder');
583
+
584
+ private constructor(public id: string) {}
585
+ }
586
+
587
+ export const QuickOpenContribution = Symbol('QuickOpenContribution');
588
+
589
+ export interface QuickOpenContribution {
590
+ registerQuickOpenHandlers(handlers: IQuickOpenHandlerRegistry): void;
591
+ }
592
+
593
+ export interface QuickOpenHandler {
594
+ /** 是否是默认的面板处理函数 */
595
+ default?: boolean;
596
+ /**
597
+ * 命令面板中的处理函数
598
+ */
599
+ prefix: string;
600
+ /**
601
+ * 在帮助面板中显示的描述
602
+ */
603
+ description: string;
604
+ /**
605
+ * 初始化函数,一般做展示数据的收集
606
+ */
607
+ init?(): MaybePromise<void>;
608
+ /**
609
+ * 获取 QuickOpenModel,用于提供 Items
610
+ */
611
+ getModel(): QuickOpenModel;
612
+ /**
613
+ * 获取面板的参数,用于额外设置 QuickOpen
614
+ */
615
+ getOptions(): Omit<QuickOpenOptions, keyof QuickOpenTabOptions>;
616
+ /** quick-open 内部切换不会执行,最终关闭才会执行 */
617
+ onClose?: (canceled: boolean) => void;
618
+ /**
619
+ * 切换时执行
620
+ */
621
+ onToggle?: () => void;
622
+ }
623
+
624
+ export interface QuickOpenTabOptions {
625
+ /**
626
+ * render tab
627
+ */
628
+ renderTab?(): React.ReactNode;
629
+ /**
630
+ * 切换 tab
631
+ */
632
+ toggleTab?(): void;
633
+ }
634
+
635
+ interface QuickOpenTabBase {
636
+ title: string;
637
+ order: number;
638
+ commandId: string;
639
+ // 不在 Tab 栏展示(但是功能都可以使用,用户按下 tab 时也不会切换到该功能)
640
+ hideTab?: boolean;
641
+ }
642
+
643
+ export interface QuickOpenTab extends QuickOpenTabBase {
644
+ prefix: string;
645
+ }
646
+
647
+ export interface QuickOpenTabConfig extends QuickOpenTabBase {
648
+ sub?: Record<string, QuickOpenTabBase>;
649
+ }
650
+
651
+ export interface IQuickOpenHandlerRegistry {
652
+ registerHandler(handler: QuickOpenHandler, tab?: QuickOpenTabConfig): IDisposable;
653
+ }
654
+
655
+ export * from './recent-files';
@@ -0,0 +1,68 @@
1
+ import { Injectable, Autowired } from '@opensumi/di';
2
+ import { OnEvent, FileChangeType, IPosition } from '@opensumi/ide-core-common';
3
+ import { WithEventBus } from '@opensumi/ide-core-common/lib/event-bus';
4
+
5
+ import { RecentStorage } from '../common/common.storage';
6
+ import { FilesChangeEvent } from '../fs';
7
+
8
+ const OPENED_FILE = 'OPENED_FILE';
9
+
10
+ const FILES_POSITION = 'OPENED_FILES_POSITION';
11
+
12
+ @Injectable()
13
+ export class RecentFilesManager extends WithEventBus {
14
+ @Autowired(RecentStorage)
15
+ private recentStorage: RecentStorage;
16
+
17
+ async updateMostRecentlyOpenedFile(url: string, position: IPosition) {
18
+ const recentStorage = await this.recentStorage.getScopeStorage();
19
+ const openedFilesPosition = recentStorage.get<{ [prop: string]: string }>(FILES_POSITION) || {};
20
+ openedFilesPosition[url] = `#${position.lineNumber},${position.column}`;
21
+ recentStorage.set(FILES_POSITION, openedFilesPosition);
22
+ }
23
+
24
+ async setMostRecentlyOpenedFile(uriString: string, isDelete?: boolean) {
25
+ const recentStorage = await this.recentStorage.getScopeStorage();
26
+
27
+ let fileList = await this.getMostRecentlyOpenedFiles();
28
+ const existIdx = fileList.findIndex((file) => file === uriString);
29
+ if (existIdx > -1) {
30
+ fileList.splice(existIdx, 1);
31
+ }
32
+ if (!isDelete) {
33
+ fileList.unshift(uriString);
34
+ }
35
+
36
+ // 仅存储50个最近文件
37
+ if (fileList.length > 50) {
38
+ fileList = fileList.slice(0, 50);
39
+ }
40
+ recentStorage.set(OPENED_FILE, fileList);
41
+ }
42
+
43
+ async getMostRecentlyOpenedFiles(includingRange?: boolean) {
44
+ const recentStorage = await this.recentStorage.getScopeStorage();
45
+ const fileList: string[] = recentStorage.get<string[]>(OPENED_FILE) || [];
46
+ const openedFilesPosition = recentStorage.get<{ [prop: string]: string }>(FILES_POSITION) || {};
47
+ if (includingRange) {
48
+ return fileList.map((url) => {
49
+ if (openedFilesPosition[url]) {
50
+ return url + openedFilesPosition[url];
51
+ }
52
+ return url;
53
+ });
54
+ }
55
+ return fileList;
56
+ }
57
+
58
+ @OnEvent(FilesChangeEvent)
59
+ protected handleFilesDelete(event: FilesChangeEvent) {
60
+ event.payload.forEach((change) => {
61
+ if (change.type === FileChangeType.DELETED) {
62
+ if (change.uri) {
63
+ this.setMostRecentlyOpenedFile(change.uri, true);
64
+ }
65
+ }
66
+ });
67
+ }
68
+ }