@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.
- package/lib/application/application-state-service.d.ts +1 -1
- package/lib/application/application-state-service.d.ts.map +1 -1
- package/lib/application/application-state-service.js.map +1 -1
- package/lib/application/application.service.js.map +1 -1
- package/lib/authentication/authentication.contribution.js.map +1 -1
- package/lib/authentication/authentication.service.js.map +1 -1
- package/lib/bootstrap/app.d.ts +2 -35
- package/lib/bootstrap/app.d.ts.map +1 -1
- package/lib/bootstrap/app.interface.d.ts +39 -0
- package/lib/bootstrap/app.interface.d.ts.map +1 -0
- package/lib/bootstrap/app.interface.js +3 -0
- package/lib/bootstrap/app.interface.js.map +1 -0
- package/lib/bootstrap/app.js +8 -8
- package/lib/bootstrap/app.js.map +1 -1
- package/lib/bootstrap/app.view.d.ts +1 -1
- package/lib/bootstrap/app.view.d.ts.map +1 -1
- package/lib/bootstrap/connection.d.ts +1 -1
- package/lib/bootstrap/connection.d.ts.map +1 -1
- package/lib/bootstrap/connection.js +4 -4
- package/lib/bootstrap/connection.js.map +1 -1
- package/lib/bootstrap/index.d.ts +1 -1
- package/lib/bootstrap/index.d.ts.map +1 -1
- package/lib/bootstrap/index.js +1 -1
- package/lib/bootstrap/index.js.map +1 -1
- package/lib/bootstrap/inner-providers.js +1 -1
- package/lib/bootstrap/inner-providers.js.map +1 -1
- package/lib/bootstrap/lifecycle.service.js.map +1 -1
- package/lib/browser-module.js.map +1 -1
- package/lib/common/common.command.d.ts +24 -1
- package/lib/common/common.command.d.ts.map +1 -1
- package/lib/common/common.command.js +42 -6
- package/lib/common/common.command.js.map +1 -1
- package/lib/common/common.contribution.js.map +1 -1
- package/lib/common/common.module.js.map +1 -1
- package/lib/common/common.storage.js.map +1 -1
- package/lib/components/actions/index.d.ts +2 -2
- package/lib/components/actions/index.d.ts.map +1 -1
- package/lib/components/actions/index.js +2 -22
- package/lib/components/actions/index.js.map +1 -1
- package/lib/components/index.d.ts +0 -4
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +0 -4
- package/lib/components/index.js.map +1 -1
- package/lib/components/layout/box-panel.d.ts +1 -1
- package/lib/components/layout/box-panel.d.ts.map +1 -1
- package/lib/components/layout/split-panel.d.ts +17 -1
- package/lib/components/layout/split-panel.d.ts.map +1 -1
- package/lib/components/layout/split-panel.js +16 -16
- package/lib/components/layout/split-panel.js.map +1 -1
- package/lib/components/layout/split-panel.service.js.map +1 -1
- package/lib/components/progressbar/index.d.ts +2 -2
- package/lib/components/progressbar/index.d.ts.map +1 -1
- package/lib/components/progressbar/index.js +2 -10
- package/lib/components/progressbar/index.js.map +1 -1
- package/lib/contextkey/resource.d.ts +1 -1
- package/lib/contextkey/resource.d.ts.map +1 -1
- package/lib/contextkey/search.d.ts +24 -0
- package/lib/contextkey/search.d.ts.map +1 -0
- package/lib/contextkey/search.js +29 -0
- package/lib/contextkey/search.js.map +1 -0
- package/lib/contextkey/testing.d.ts +1 -0
- package/lib/contextkey/testing.d.ts.map +1 -1
- package/lib/contextkey/testing.js +2 -1
- package/lib/contextkey/testing.js.map +1 -1
- package/lib/core-preferences.d.ts +4 -3
- package/lib/core-preferences.d.ts.map +1 -1
- package/lib/core-preferences.js +2 -2
- package/lib/core-preferences.js.map +1 -1
- package/lib/dom/index.d.ts +1 -1
- package/lib/dom/index.d.ts.map +1 -1
- package/lib/encoding-registry.js.map +1 -1
- package/lib/extensions/extensions-point.service.js.map +1 -1
- package/lib/file-decoration.d.ts +10 -0
- package/lib/file-decoration.d.ts.map +1 -0
- package/lib/file-decoration.js +3 -0
- package/lib/file-decoration.js.map +1 -0
- package/lib/hash-calculate/hash-calculate.contribution.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/keybinding/keybinding.js.map +1 -1
- package/lib/keyboard/keyboard-layout-provider.d.ts +2 -2
- package/lib/keyboard/keyboard-layout-provider.d.ts.map +1 -1
- package/lib/keyboard/keyboard-layout-provider.js +13 -13
- package/lib/keyboard/keyboard-layout-provider.js.map +1 -1
- package/lib/keyboard/keyboard-layout-service.js.map +1 -1
- package/lib/keyboard/keys.d.ts +2 -2
- package/lib/keyboard/keys.d.ts.map +1 -1
- package/lib/keyboard/layouts/_.contribution.js +3 -3
- package/lib/keyboard/layouts/_.contribution.js.map +1 -1
- package/lib/layout/accordion/tab-bar-toolbar.js.map +1 -1
- package/lib/layout/accordion/view-context-key.registry.js.map +1 -1
- package/lib/layout/layout-hooks.d.ts +1 -1
- package/lib/layout/layout-hooks.d.ts.map +1 -1
- package/lib/layout/layout-state.js.map +1 -1
- package/lib/layout/layout.interface.d.ts +1 -1
- package/lib/layout/layout.interface.d.ts.map +1 -1
- package/lib/layout/layout.js.map +1 -1
- package/lib/logger/browser-logger.js.map +1 -1
- package/lib/markdown/index.d.ts +1 -1
- package/lib/markdown/index.d.ts.map +1 -1
- package/lib/markdown/index.js +4 -31
- package/lib/markdown/index.js.map +1 -1
- package/lib/menu/next/base.d.ts +4 -4
- package/lib/menu/next/base.d.ts.map +1 -1
- package/lib/menu/next/base.js.map +1 -1
- package/lib/menu/next/ctxmenu-service.js +10 -10
- package/lib/menu/next/ctxmenu-service.js.map +1 -1
- package/lib/menu/next/menu-service.js +6 -6
- package/lib/menu/next/menu-service.js.map +1 -1
- package/lib/menu/next/menu.contrib.interface.d.ts +16 -15
- package/lib/menu/next/menu.contrib.interface.d.ts.map +1 -1
- package/lib/menu/next/menu.contrib.interface.js.map +1 -1
- package/lib/menu/next/menu.interface.d.ts +2 -2
- package/lib/menu/next/menu.interface.d.ts.map +1 -1
- package/lib/menu/next/menu.interface.js.map +1 -1
- package/lib/menu/next/menubar-service.js +10 -10
- package/lib/menu/next/menubar-service.js.map +1 -1
- package/lib/menu/next/renderer/ctxmenu/browser.js.map +1 -1
- package/lib/menu/next/renderer/ctxmenu/electron.js.map +1 -1
- package/lib/menu/next/toolbar-action.service.d.ts +1 -1
- package/lib/menu/next/toolbar-action.service.d.ts.map +1 -1
- package/lib/menu/next/toolbar-action.service.js.map +1 -1
- package/lib/monaco/index.d.ts +7 -3
- package/lib/monaco/index.d.ts.map +1 -1
- package/lib/monaco/index.js.map +1 -1
- package/lib/monaco/merge-editor-widget.d.ts +53 -0
- package/lib/monaco/merge-editor-widget.d.ts.map +1 -0
- package/lib/monaco/merge-editor-widget.js +107 -0
- package/lib/monaco/merge-editor-widget.js.map +1 -0
- package/lib/opener/command-opener.js.map +1 -1
- package/lib/opener/default-opener.js.map +1 -1
- package/lib/opener/http-opener.js.map +1 -1
- package/lib/opener/opener.contribution.js.map +1 -1
- package/lib/opener/opener.service.js.map +1 -1
- package/lib/preferences/early-preferences.js +4 -4
- package/lib/preferences/early-preferences.js.map +1 -1
- package/lib/preferences/preference-configurations.js +1 -1
- package/lib/preferences/preference-configurations.js.map +1 -1
- package/lib/preferences/preference-contribution.d.ts +1 -2
- package/lib/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/preferences/preference-contribution.js +26 -22
- package/lib/preferences/preference-contribution.js.map +1 -1
- package/lib/preferences/preference-provider.js.map +1 -1
- package/lib/preferences/preference-proxy.d.ts +2 -3
- package/lib/preferences/preference-proxy.d.ts.map +1 -1
- package/lib/preferences/preference-proxy.js.map +1 -1
- package/lib/preferences/preference-service.d.ts +1 -0
- package/lib/preferences/preference-service.d.ts.map +1 -1
- package/lib/preferences/preference-service.js +48 -3
- package/lib/preferences/preference-service.js.map +1 -1
- package/lib/preferences/settings.d.ts +44 -5
- package/lib/preferences/settings.d.ts.map +1 -1
- package/lib/preferences/settings.js.map +1 -1
- package/lib/preferences/types.d.ts +8 -1
- package/lib/preferences/types.d.ts.map +1 -1
- package/lib/preferences/types.js.map +1 -1
- package/lib/progress/progress-bar.d.ts +4 -1
- package/lib/progress/progress-bar.d.ts.map +1 -1
- package/lib/progress/progress-bar.js +11 -4
- package/lib/progress/progress-bar.js.map +1 -1
- package/lib/progress/progress-indicator.js.map +1 -1
- package/lib/progress/progress.service.js +6 -6
- package/lib/progress/progress.service.js.map +1 -1
- package/lib/quick-open/index.d.ts +1 -1
- package/lib/quick-open/index.d.ts.map +1 -1
- package/lib/quick-open/index.js.map +1 -1
- package/lib/quick-open/recent-files.js.map +1 -1
- package/lib/raw-context-key.d.ts +1 -1
- package/lib/raw-context-key.d.ts.map +1 -1
- package/lib/raw-context-key.js +4 -4
- package/lib/raw-context-key.js.map +1 -1
- package/lib/react-hooks/useThrottleFn/index.d.ts +13 -0
- package/lib/react-hooks/useThrottleFn/index.d.ts.map +1 -0
- package/lib/react-hooks/useThrottleFn/index.js +20 -0
- package/lib/react-hooks/useThrottleFn/index.js.map +1 -0
- package/lib/react-providers/config-provider.d.ts +6 -0
- package/lib/react-providers/config-provider.d.ts.map +1 -1
- package/lib/react-providers/config-provider.js.map +1 -1
- package/lib/react-providers/slot.d.ts +2 -2
- package/lib/react-providers/slot.d.ts.map +1 -1
- package/lib/services/clipboard.service.d.ts +1 -0
- package/lib/services/clipboard.service.d.ts.map +1 -1
- package/lib/services/clipboard.service.js +17 -30
- package/lib/services/clipboard.service.js.map +1 -1
- package/lib/services/credentials-service.js.map +1 -1
- package/lib/services/crypto-service.js.map +1 -1
- package/lib/services/external-uri.service.js.map +1 -1
- package/lib/services/label-service.js.map +1 -1
- package/lib/services/storage-service.d.ts +1 -0
- package/lib/services/storage-service.d.ts.map +1 -1
- package/lib/services/storage-service.js +13 -2
- package/lib/services/storage-service.js.map +1 -1
- package/lib/style/icon/icon.d.ts +3 -2
- package/lib/style/icon/icon.d.ts.map +1 -1
- package/lib/style/icon/icon.js +5 -1
- package/lib/style/icon/icon.js.map +1 -1
- package/lib/style/icon/ide-iconfont.d.ts +1 -1
- package/lib/style/icon/ide-iconfont.d.ts.map +1 -1
- package/lib/style/icon/ide-iconfont.js +1 -1
- package/lib/style/icon/ide-iconfont.js.map +1 -1
- package/lib/style/icon/index.less +13 -0
- package/lib/toolbar/components/button.js +12 -12
- package/lib/toolbar/components/button.js.map +1 -1
- package/lib/toolbar/toolbar.popover.registry.js.map +1 -1
- package/lib/toolbar/toolbar.registry.d.ts +1 -1
- package/lib/toolbar/toolbar.registry.d.ts.map +1 -1
- package/lib/toolbar/toolbar.registry.js.map +1 -1
- package/lib/toolbar/types.d.ts +1 -1
- package/lib/toolbar/types.d.ts.map +1 -1
- package/lib/utils/json.d.ts +5 -5
- package/lib/utils/json.d.ts.map +1 -1
- package/lib/utils/label.d.ts.map +1 -1
- package/lib/utils/label.js +16 -9
- package/lib/utils/label.js.map +1 -1
- package/lib/utils/parse.d.ts +2 -1
- package/lib/utils/parse.d.ts.map +1 -1
- package/lib/utils/parse.js +10 -1
- package/lib/utils/parse.js.map +1 -1
- package/lib/variable/variable.d.ts +1 -1
- package/lib/variable/variable.d.ts.map +1 -1
- package/lib/variable/variable.js.map +1 -1
- package/lib/window/window.service.js.map +1 -1
- package/package.json +9 -11
- package/src/application/application-state-service.ts +54 -0
- package/src/application/application.service.ts +51 -0
- package/src/application/index.ts +2 -0
- package/src/authentication/authentication.contribution.ts +35 -0
- package/src/authentication/authentication.service.ts +517 -0
- package/src/bootstrap/app.interface.ts +46 -0
- package/src/bootstrap/app.ts +710 -0
- package/src/bootstrap/app.view.tsx +88 -0
- package/src/bootstrap/connection.ts +116 -0
- package/src/bootstrap/index.ts +3 -0
- package/src/bootstrap/inner-providers.ts +297 -0
- package/src/bootstrap/lifecycle.service.ts +19 -0
- package/src/browser-module.ts +24 -0
- package/src/common/common.command.ts +1018 -0
- package/src/common/common.contribution.ts +343 -0
- package/src/common/common.define.ts +55 -0
- package/src/common/common.module.ts +33 -0
- package/src/common/common.storage.ts +22 -0
- package/src/common/container-id.ts +12 -0
- package/src/common/index.ts +4 -0
- package/src/components/actions/index.tsx +486 -0
- package/src/components/actions/placements.ts +47 -0
- package/src/components/actions/styles.module.less +144 -0
- package/src/components/badge/index.tsx +1 -0
- package/src/components/index.ts +22 -0
- package/src/components/layout/box-panel.tsx +88 -0
- package/src/components/layout/default-layout.tsx +61 -0
- package/src/components/layout/index.ts +4 -0
- package/src/components/layout/layout.ts +80 -0
- package/src/components/layout/split-panel.service.ts +56 -0
- package/src/components/layout/split-panel.tsx +315 -0
- package/src/components/layout/styles.module.less +21 -0
- package/src/components/loading/index.ts +1 -0
- package/src/components/loading/loading.less +14 -0
- package/src/components/loading/loading.view.tsx +7 -0
- package/src/components/loading/media/loading-dark.svg +52 -0
- package/src/components/loading/media/loading-hc.svg +52 -0
- package/src/components/loading/media/loading.svg +52 -0
- package/src/components/popover/styles.module.less +81 -0
- package/src/components/portal/index.tsx +13 -0
- package/src/components/progressbar/index.tsx +3 -0
- package/src/components/resize/resize.module.less +78 -0
- package/src/components/resize/resize.tsx +663 -0
- package/src/components/select/index.tsx +12 -0
- package/src/components/select/styles.less +6 -0
- package/src/context-key.ts +48 -0
- package/src/contextkey/dialog.ts +3 -0
- package/src/contextkey/explorer.ts +26 -0
- package/src/contextkey/index.ts +6 -0
- package/src/contextkey/outline.ts +4 -0
- package/src/contextkey/resource.ts +61 -0
- package/src/contextkey/search.ts +30 -0
- package/src/contextkey/terminal.ts +7 -0
- package/src/contextkey/testing.ts +9 -0
- package/src/contextkey/workspace.ts +7 -0
- package/src/core-preferences.ts +318 -0
- package/src/dom/index.ts +176 -0
- package/src/encoding-registry.ts +83 -0
- package/src/extensions/extensions-point.service.ts +78 -0
- package/src/extensions/index.ts +3 -0
- package/src/extensions/schema/browserViews.ts +96 -0
- package/src/extensions/schema/menu.ts +245 -0
- package/src/extensions/schema/opensumiExtensionPackageSchema.ts +12 -0
- package/src/extensions/schema/toolbar.ts +338 -0
- package/src/extensions/schema/vscodeExtensionPackageSchema.ts +330 -0
- package/src/file-decoration.ts +10 -0
- package/src/fs/index.ts +12 -0
- package/src/hash-calculate/hash-calculate.contribution.ts +19 -0
- package/src/index.ts +42 -0
- package/src/keybinding/index.ts +1 -0
- package/src/keybinding/keybinding.ts +908 -0
- package/src/keyboard/index.ts +3 -0
- package/src/keyboard/keyboard-layout-provider.ts +412 -0
- package/src/keyboard/keyboard-layout-service.ts +449 -0
- package/src/keyboard/keys.ts +748 -0
- package/src/keyboard/layouts/_.contribution.ts +24 -0
- package/src/keyboard/layouts/cz.win.ts +168 -0
- package/src/keyboard/layouts/de-swiss.win.ts +168 -0
- package/src/keyboard/layouts/de.darwin.ts +131 -0
- package/src/keyboard/layouts/de.linux.ts +186 -0
- package/src/keyboard/layouts/de.win.ts +168 -0
- package/src/keyboard/layouts/dk.win.ts +168 -0
- package/src/keyboard/layouts/dvorak.darwin.ts +131 -0
- package/src/keyboard/layouts/en-belgian.win.ts +168 -0
- package/src/keyboard/layouts/en-ext.darwin.ts +131 -0
- package/src/keyboard/layouts/en-in.win.ts +168 -0
- package/src/keyboard/layouts/en-intl.darwin.ts +131 -0
- package/src/keyboard/layouts/en-intl.win.ts +168 -0
- package/src/keyboard/layouts/en-uk.darwin.ts +131 -0
- package/src/keyboard/layouts/en-uk.win.ts +168 -0
- package/src/keyboard/layouts/en.darwin.ts +139 -0
- package/src/keyboard/layouts/en.linux.ts +186 -0
- package/src/keyboard/layouts/en.win.ts +173 -0
- package/src/keyboard/layouts/es-latin.win.ts +168 -0
- package/src/keyboard/layouts/es.darwin.ts +131 -0
- package/src/keyboard/layouts/es.linux.ts +186 -0
- package/src/keyboard/layouts/es.win.ts +168 -0
- package/src/keyboard/layouts/fr.darwin.ts +131 -0
- package/src/keyboard/layouts/fr.linux.ts +186 -0
- package/src/keyboard/layouts/fr.win.ts +168 -0
- package/src/keyboard/layouts/hu.win.ts +168 -0
- package/src/keyboard/layouts/it.darwin.ts +131 -0
- package/src/keyboard/layouts/it.win.ts +168 -0
- package/src/keyboard/layouts/jp-roman.darwin.ts +131 -0
- package/src/keyboard/layouts/jp.darwin.ts +131 -0
- package/src/keyboard/layouts/ko.darwin.ts +131 -0
- package/src/keyboard/layouts/layout.contribution.darwin.ts +23 -0
- package/src/keyboard/layouts/layout.contribution.linux.ts +12 -0
- package/src/keyboard/layouts/layout.contribution.ts +9 -0
- package/src/keyboard/layouts/layout.contribution.win.ts +29 -0
- package/src/keyboard/layouts/no.win.ts +168 -0
- package/src/keyboard/layouts/pl.darwin.ts +131 -0
- package/src/keyboard/layouts/pl.win.ts +168 -0
- package/src/keyboard/layouts/pt-br.win.ts +169 -0
- package/src/keyboard/layouts/pt.darwin.ts +131 -0
- package/src/keyboard/layouts/pt.win.ts +168 -0
- package/src/keyboard/layouts/ru.darwin.ts +131 -0
- package/src/keyboard/layouts/ru.linux.ts +186 -0
- package/src/keyboard/layouts/ru.win.ts +168 -0
- package/src/keyboard/layouts/sv.darwin.ts +131 -0
- package/src/keyboard/layouts/sv.win.ts +168 -0
- package/src/keyboard/layouts/thai.win.ts +168 -0
- package/src/keyboard/layouts/tr.win.ts +168 -0
- package/src/keyboard/layouts/zh-hans.darwin.ts +131 -0
- package/src/layout/accordion/tab-bar-toolbar.tsx +59 -0
- package/src/layout/accordion/view-context-key.registry.ts +34 -0
- package/src/layout/constants.ts +7 -0
- package/src/layout/index.ts +5 -0
- package/src/layout/layout-hooks.ts +70 -0
- package/src/layout/layout-state.ts +107 -0
- package/src/layout/layout.interface.ts +101 -0
- package/src/layout/layout.ts +80 -0
- package/src/layout/view-id.ts +18 -0
- package/src/logger/browser-logger.ts +51 -0
- package/src/logger/index.ts +1 -0
- package/src/markdown/index.tsx +30 -0
- package/src/menu/next/base.ts +513 -0
- package/src/menu/next/ctxmenu-service.ts +188 -0
- package/src/menu/next/index.ts +10 -0
- package/src/menu/next/menu-id.ts +86 -0
- package/src/menu/next/menu-service.ts +252 -0
- package/src/menu/next/menu-util.ts +77 -0
- package/src/menu/next/menu.contrib.interface.ts +79 -0
- package/src/menu/next/menu.interface.ts +253 -0
- package/src/menu/next/menubar-service.ts +211 -0
- package/src/menu/next/renderer/ctxmenu/base.ts +18 -0
- package/src/menu/next/renderer/ctxmenu/browser.ts +45 -0
- package/src/menu/next/renderer/ctxmenu/electron.ts +207 -0
- package/src/menu/next/toolbar-action.service.ts +132 -0
- package/src/monaco/index.ts +136 -0
- package/src/monaco/merge-editor-widget.ts +159 -0
- package/src/opener/command-opener.ts +42 -0
- package/src/opener/default-opener.ts +31 -0
- package/src/opener/http-opener.ts +25 -0
- package/src/opener/index.ts +19 -0
- package/src/opener/opener.contribution.ts +57 -0
- package/src/opener/opener.service.ts +66 -0
- package/src/preferences/early-preferences.ts +117 -0
- package/src/preferences/index.ts +9 -0
- package/src/preferences/preference-configurations.ts +77 -0
- package/src/preferences/preference-contribution.ts +397 -0
- package/src/preferences/preference-provider.ts +414 -0
- package/src/preferences/preference-proxy.ts +291 -0
- package/src/preferences/preference-scope.ts +3 -0
- package/src/preferences/preference-service.ts +621 -0
- package/src/preferences/settings.ts +90 -0
- package/src/preferences/types.ts +119 -0
- package/src/progress/index.ts +58 -0
- package/src/progress/progress-bar.tsx +34 -0
- package/src/progress/progress-indicator.ts +90 -0
- package/src/progress/progress.module.less +46 -0
- package/src/progress/progress.service.tsx +429 -0
- package/src/quick-open/index.ts +655 -0
- package/src/quick-open/recent-files.ts +68 -0
- package/src/raw-context-key.ts +116 -0
- package/src/react-hooks/event.tsx +80 -0
- package/src/react-hooks/hot-key.tsx +58 -0
- package/src/react-hooks/index.ts +3 -0
- package/src/react-hooks/injectable-hooks.tsx +35 -0
- package/src/react-hooks/portal-hooks.tsx +38 -0
- package/src/react-hooks/useThrottleFn/index.ts +34 -0
- package/src/react-providers/config-provider.tsx +269 -0
- package/src/react-providers/index.tsx +2 -0
- package/src/react-providers/slot.module.less +19 -0
- package/src/react-providers/slot.tsx +242 -0
- package/src/services/clipboard.service.ts +92 -0
- package/src/services/credentials-service.ts +91 -0
- package/src/services/crypto-service.ts +23 -0
- package/src/services/external-uri.service.ts +68 -0
- package/src/services/index.ts +7 -0
- package/src/services/label-service.ts +386 -0
- package/src/services/status-bar-service.ts +108 -0
- package/src/services/storage-service.ts +201 -0
- package/src/style/codicons/README.md +22 -0
- package/src/style/codicons/codicon-animations.css +15 -0
- package/src/style/codicons/generator.js +15 -0
- package/src/style/entry.less +25 -0
- package/src/style/icon/fileicons/file-default.svg +1 -0
- package/src/style/icon/fileicons/folder-default.svg +1 -0
- package/src/style/icon/fileicons.less +20 -0
- package/src/style/icon/icon.ts +547 -0
- package/src/style/icon/ide-iconfont.ts +13 -0
- package/src/style/icon/index.less +67 -0
- package/src/style/icon/seti.woff +0 -0
- package/src/style/icon/symbol-icons/boolean-dark.svg +3 -0
- package/src/style/icon/symbol-icons/boolean-light.svg +3 -0
- package/src/style/icon/symbol-icons/class-dark.svg +3 -0
- package/src/style/icon/symbol-icons/class-light.svg +3 -0
- package/src/style/icon/symbol-icons/constant-dark.svg +4 -0
- package/src/style/icon/symbol-icons/constant-light.svg +4 -0
- package/src/style/icon/symbol-icons/enumerator-dark.svg +3 -0
- package/src/style/icon/symbol-icons/enumerator-item-dark.svg +3 -0
- package/src/style/icon/symbol-icons/enumerator-item-light.svg +3 -0
- package/src/style/icon/symbol-icons/enumerator-light.svg +3 -0
- package/src/style/icon/symbol-icons/event-dark.svg +3 -0
- package/src/style/icon/symbol-icons/event-light.svg +3 -0
- package/src/style/icon/symbol-icons/field-dark.svg +3 -0
- package/src/style/icon/symbol-icons/field-light.svg +3 -0
- package/src/style/icon/symbol-icons/file-dark.svg +3 -0
- package/src/style/icon/symbol-icons/file-light.svg +3 -0
- package/src/style/icon/symbol-icons/indexer-dark.svg +3 -0
- package/src/style/icon/symbol-icons/indexer-light.svg +3 -0
- package/src/style/icon/symbol-icons/interface-dark.svg +3 -0
- package/src/style/icon/symbol-icons/interface-light.svg +3 -0
- package/src/style/icon/symbol-icons/keyword-dark.svg +3 -0
- package/src/style/icon/symbol-icons/keyword-light.svg +3 -0
- package/src/style/icon/symbol-icons/method-dark.svg +3 -0
- package/src/style/icon/symbol-icons/method-light.svg +3 -0
- package/src/style/icon/symbol-icons/namespace-dark.svg +3 -0
- package/src/style/icon/symbol-icons/namespace-light.svg +3 -0
- package/src/style/icon/symbol-icons/numeric-dark.svg +3 -0
- package/src/style/icon/symbol-icons/numeric-light.svg +3 -0
- package/src/style/icon/symbol-icons/operator-dark.svg +3 -0
- package/src/style/icon/symbol-icons/operator-light.svg +3 -0
- package/src/style/icon/symbol-icons/property-dark.svg +3 -0
- package/src/style/icon/symbol-icons/property-light.svg +3 -0
- package/src/style/icon/symbol-icons/snippet-dark.svg +3 -0
- package/src/style/icon/symbol-icons/snippet-light.svg +3 -0
- package/src/style/icon/symbol-icons/string-dark.svg +3 -0
- package/src/style/icon/symbol-icons/string-light.svg +3 -0
- package/src/style/icon/symbol-icons/structure-dark.svg +3 -0
- package/src/style/icon/symbol-icons/structure-light.svg +3 -0
- package/src/style/icon/symbol-icons/symbol-icons.css +284 -0
- package/src/style/icon/symbol-icons/template-dark.svg +3 -0
- package/src/style/icon/symbol-icons/template-light.svg +3 -0
- package/src/style/icon/symbol-icons/variable-dark.svg +3 -0
- package/src/style/icon/symbol-icons/variable-light.svg +3 -0
- package/src/style/icon.less +8 -0
- package/src/style/index.less +14 -0
- package/src/style/monaco-override.less +116 -0
- package/src/style/normalize.less +92 -0
- package/src/style/octicons/octicons-cdn.css +720 -0
- package/src/style/octicons/octicons.css +714 -0
- package/src/style/octicons/octicons.html +1882 -0
- package/src/style/octicons/octicons.svg +582 -0
- package/src/style/octicons/octicons.ttf +0 -0
- package/src/style/override.less +97 -0
- package/src/style/toolbar.less +199 -0
- package/src/style/utilities.less +8 -0
- package/src/style/variable.less +8 -0
- package/src/terminal/index.ts +7 -0
- package/src/toolbar/components/auto-complete.tsx +0 -0
- package/src/toolbar/components/button.tsx +440 -0
- package/src/toolbar/components/index.ts +2 -0
- package/src/toolbar/components/select.tsx +189 -0
- package/src/toolbar/index.ts +3 -0
- package/src/toolbar/toolbar.popover.registry.ts +32 -0
- package/src/toolbar/toolbar.registry.ts +352 -0
- package/src/toolbar/toolbar.tsx +710 -0
- package/src/toolbar/types.ts +383 -0
- package/src/utils/create-overlay.tsx +53 -0
- package/src/utils/electron.ts +92 -0
- package/src/utils/env.ts +26 -0
- package/src/utils/icon.ts +13 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/json.ts +251 -0
- package/src/utils/label.tsx +36 -0
- package/src/utils/parse.ts +82 -0
- package/src/utils/react-hooks.ts +118 -0
- package/src/variable/index.ts +1 -0
- package/src/variable/variable.ts +84 -0
- package/src/window/index.ts +34 -0
- package/src/window/window.service.ts +100 -0
- package/lib/components/progressbar/styles.module.less +0 -31
- package/lib/components/recycle-tree/index.d.ts +0 -2
- package/lib/components/recycle-tree/index.d.ts.map +0 -1
- package/lib/components/recycle-tree/index.js +0 -5
- package/lib/components/recycle-tree/index.js.map +0 -1
- package/lib/components/recycle-tree/recycle-tree.view.d.ts +0 -82
- package/lib/components/recycle-tree/recycle-tree.view.d.ts.map +0 -1
- package/lib/components/recycle-tree/recycle-tree.view.js +0 -188
- package/lib/components/recycle-tree/recycle-tree.view.js.map +0 -1
- package/lib/components/scroll/index.d.ts +0 -68
- package/lib/components/scroll/index.d.ts.map +0 -1
- package/lib/components/scroll/index.js +0 -279
- package/lib/components/scroll/index.js.map +0 -1
- package/lib/components/scroll/scroll.module.less +0 -108
- package/lib/components/scrollbar/index.d.ts +0 -2
- package/lib/components/scrollbar/index.d.ts.map +0 -1
- package/lib/components/scrollbar/index.js +0 -5
- package/lib/components/scrollbar/index.js.map +0 -1
- package/lib/components/scrollbar/scrollbar.less +0 -36
- package/lib/components/scrollbar/scrollbar.view.d.ts +0 -7
- package/lib/components/scrollbar/scrollbar.view.d.ts.map +0 -1
- package/lib/components/scrollbar/scrollbar.view.js +0 -11
- package/lib/components/scrollbar/scrollbar.view.js.map +0 -1
- package/lib/components/tree/index.d.ts +0 -4
- package/lib/components/tree/index.d.ts.map +0 -1
- package/lib/components/tree/index.js +0 -7
- package/lib/components/tree/index.js.map +0 -1
- package/lib/components/tree/tree-node.view.d.ts +0 -26
- package/lib/components/tree/tree-node.view.d.ts.map +0 -1
- package/lib/components/tree/tree-node.view.js +0 -350
- package/lib/components/tree/tree-node.view.js.map +0 -1
- package/lib/components/tree/tree.module.less +0 -296
- package/lib/components/tree/tree.view.d.ts +0 -132
- package/lib/components/tree/tree.view.d.ts.map +0 -1
- package/lib/components/tree/tree.view.js +0 -238
- package/lib/components/tree/tree.view.js.map +0 -1
- package/lib/tree/index.d.ts +0 -4
- package/lib/tree/index.d.ts.map +0 -1
- package/lib/tree/index.js +0 -7
- package/lib/tree/index.js.map +0 -1
- package/lib/tree/tree-expansion.d.ts +0 -16
- package/lib/tree/tree-expansion.d.ts.map +0 -1
- package/lib/tree/tree-expansion.js +0 -20
- package/lib/tree/tree-expansion.js.map +0 -1
- package/lib/tree/tree-selection.d.ts +0 -48
- package/lib/tree/tree-selection.d.ts.map +0 -1
- package/lib/tree/tree-selection.js +0 -64
- package/lib/tree/tree-selection.js.map +0 -1
- package/lib/tree/tree.d.ts +0 -195
- package/lib/tree/tree.d.ts.map +0 -1
- package/lib/tree/tree.js +0 -108
- 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
|
+
}
|