├── .eslintrc.js ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── question.md ├── pull_request_template.md └── workflows │ ├── deploy.yml │ ├── main.yml │ └── test-deploy.yml ├── .gitignore ├── .npmignore ├── .prettierignore ├── .prettierrc.json ├── .storybook └── main.js ├── .stylelintrc.json ├── .vscode └── settings.json ├── .yarnrc ├── .yarnrc.yml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── MIGRATION.md ├── README-koKR.md ├── README-zhCN.md ├── README.md ├── babel.config.json ├── build ├── gulpfile.js ├── preinstall.js ├── variables.js ├── web.js ├── web │ ├── app.js │ ├── favicon.png │ └── index.html └── webpack.base.js ├── codecov.yml ├── commitlint.config.js ├── jest.config.js ├── mock ├── fileMock.js ├── monacoMock.js └── styleMock.js ├── package.json ├── pnpm-lock.yaml ├── scripts └── release.mjs ├── src ├── common │ ├── __tests__ │ │ ├── dom.test.ts │ │ ├── treeUtil.test.ts │ │ └── utils.test.ts │ ├── className.ts │ ├── const.ts │ ├── css.ts │ ├── dom.ts │ ├── error.ts │ ├── event │ │ ├── __tests__ │ │ │ ├── eventBus.test.ts │ │ │ └── eventEmitter.test.ts │ │ ├── decorator.ts │ │ ├── eventBus.ts │ │ ├── eventEmitter.ts │ │ └── index.ts │ ├── id.ts │ ├── keyCodes.ts │ ├── logger.ts │ ├── observable.ts │ ├── treeUtil.ts │ ├── types.ts │ └── utils.ts ├── components │ ├── README.md │ ├── actionBar │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── actionBar.test.tsx.snap │ │ │ └── actionBar.test.tsx │ │ ├── index.tsx │ │ └── style.scss │ ├── breadcrumb │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── breadcrumb.test.tsx.snap │ │ │ └── breadcrumb.test.tsx │ │ ├── base.ts │ │ ├── index.tsx │ │ └── style.scss │ ├── button │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── button.test.tsx.snap │ │ │ └── button.test.tsx │ │ ├── index.tsx │ │ └── style.scss │ ├── checkbox │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── checkbox.test.tsx.snap │ │ │ └── checkbox.test.tsx │ │ ├── checkbox.tsx │ │ ├── index.tsx │ │ └── style.scss │ ├── collapse │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── index.test.tsx.snap │ │ │ └── index.test.tsx │ │ ├── base.tsx │ │ ├── index.tsx │ │ └── style.scss │ ├── contextMenu │ │ ├── __tests__ │ │ │ └── contextMenu.test.tsx │ │ └── index.tsx │ ├── contextView │ │ ├── __tests__ │ │ │ └── contextView.test.tsx │ │ ├── base.tsx │ │ ├── index.tsx │ │ └── style.scss │ ├── dialog │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── actionbutton.test.tsx.snap │ │ │ ├── actionbutton.test.tsx │ │ │ ├── confirm.test.tsx │ │ │ ├── confirmDialog.test.tsx │ │ │ └── dialog.test.tsx │ │ ├── actionButton.tsx │ │ ├── base.ts │ │ ├── confirm.tsx │ │ ├── confirmDialog.tsx │ │ ├── index.tsx │ │ ├── modal.tsx │ │ └── style.scss │ ├── display │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── display.test.tsx.snap │ │ │ └── display.test.tsx │ │ └── index.tsx │ ├── dropdown │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── dropdown.test.tsx.snap │ │ │ └── dropdown.test.tsx │ │ ├── index.tsx │ │ └── style.scss │ ├── icon │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── icon.test.tsx.snap │ │ │ └── icon.test.tsx │ │ └── index.tsx │ ├── index.ts │ ├── input │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── input.test.tsx.snap │ │ │ └── input.test.tsx │ │ ├── index.tsx │ │ ├── input.tsx │ │ ├── style.scss │ │ └── textArea.tsx │ ├── list │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── list.test.tsx.snap │ │ │ └── list.test.tsx │ │ ├── index.tsx │ │ ├── item.tsx │ │ ├── list.tsx │ │ └── style.scss │ ├── menu │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── menu.test.tsx.snap │ │ │ ├── menu.test.tsx │ │ │ ├── menuItem.test.tsx │ │ │ └── submenu.test.tsx │ │ ├── base.ts │ │ ├── divider.tsx │ │ ├── index.tsx │ │ ├── menu.tsx │ │ ├── menuItem.tsx │ │ ├── style.scss │ │ └── subMenu.tsx │ ├── monaco │ │ └── index.tsx │ ├── scrollBar │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── scrollBar.test.tsx.snap │ │ │ └── scrollBar.test.tsx │ │ ├── base.ts │ │ ├── index.tsx │ │ └── style.scss │ ├── search │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── search.test.tsx.snap │ │ │ └── search.test.tsx │ │ ├── base.ts │ │ ├── index.tsx │ │ ├── input.tsx │ │ └── style.scss │ ├── select │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ ├── option.test.tsx.snap │ │ │ │ └── select.test.tsx.snap │ │ │ ├── option.test.tsx │ │ │ └── select.test.tsx │ │ ├── index.tsx │ │ ├── option.tsx │ │ ├── select.tsx │ │ └── style.scss │ ├── split │ │ ├── SplitPane.tsx │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── index.test.tsx.snap │ │ │ └── index.test.tsx │ │ ├── base.ts │ │ ├── index.ts │ │ ├── pane.tsx │ │ ├── sash.tsx │ │ └── style.scss │ ├── tabs │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── tabs.test.tsx.snap │ │ │ ├── tab.test.tsx │ │ │ ├── tabExtra.test.tsx │ │ │ └── tabs.test.tsx │ │ ├── index.tsx │ │ ├── style.scss │ │ ├── tab.tsx │ │ └── tabExtra.tsx │ ├── toolbar │ │ ├── __tests__ │ │ │ ├── __snapshots__ │ │ │ │ └── toolbar.test.tsx.snap │ │ │ └── toolbar.test.tsx │ │ ├── index.tsx │ │ └── style.scss │ ├── tooltip │ │ ├── __tests__ │ │ │ └── tooltip.test.tsx │ │ ├── index.tsx │ │ └── style.scss │ └── tree │ │ ├── __tests__ │ │ └── tree.test.tsx │ │ ├── base.ts │ │ ├── index.tsx │ │ ├── style.scss │ │ └── treeNode.tsx ├── controller │ ├── __tests__ │ │ ├── activityBar.test.ts │ │ ├── auxiliaryBar.test.ts │ │ ├── editor.test.ts │ │ ├── editorTree.test.ts │ │ ├── explorer.test.ts │ │ ├── extension.test.ts │ │ ├── folderTree.test.ts │ │ ├── layout.test.ts │ │ ├── menuBar.test.ts │ │ ├── notification.test.ts │ │ ├── outline.test.ts │ │ ├── panel.test.ts │ │ ├── problems.test.ts │ │ ├── search.test.ts │ │ ├── setting.test.ts │ │ ├── sidebar.test.ts │ │ └── statusBar.test.ts │ ├── activityBar.ts │ ├── auxiliaryBar.ts │ ├── editor.tsx │ ├── explorer │ │ ├── editorTree.tsx │ │ ├── explorer.tsx │ │ ├── folderTree.tsx │ │ └── outline.tsx │ ├── extension.ts │ ├── index.ts │ ├── layout.ts │ ├── menuBar.ts │ ├── notification.tsx │ ├── panel.tsx │ ├── problems.tsx │ ├── search │ │ └── search.tsx │ ├── settings.tsx │ ├── sidebar.ts │ └── statusBar.tsx ├── extensions │ ├── activityBar │ │ └── index.ts │ ├── editor │ │ └── index.ts │ ├── editorTree │ │ └── index.ts │ ├── explorer │ │ └── index.ts │ ├── folderTree │ │ └── index.tsx │ ├── github-plus-theme-master │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── icon.png │ │ ├── index.ts │ │ ├── package.json │ │ ├── screenshot.jpg │ │ └── themes │ │ │ └── github-plus-theme.json │ ├── index.ts │ ├── locales-defaults │ │ ├── index.ts │ │ └── locales │ │ │ ├── en.json │ │ │ ├── ko-KR.json │ │ │ └── zh-CN.json │ ├── panel │ │ └── index.ts │ ├── theme-defaults │ │ ├── fileicons │ │ │ ├── images │ │ │ │ ├── document-dark.svg │ │ │ │ ├── document-light.svg │ │ │ │ ├── folder-dark.svg │ │ │ │ ├── folder-light.svg │ │ │ │ ├── folder-open-dark.svg │ │ │ │ ├── folder-open-light.svg │ │ │ │ ├── root-folder-dark.svg │ │ │ │ ├── root-folder-light.svg │ │ │ │ ├── root-folder-open-dark.svg │ │ │ │ └── root-folder-open-light.svg │ │ │ └── vs_minimal-icon-theme.json │ │ ├── index.ts │ │ ├── package.json │ │ ├── package.nls.json │ │ ├── target │ │ │ └── npmlist.json │ │ └── themes │ │ │ ├── dark_defaults.json │ │ │ ├── dark_plus.json │ │ │ ├── dark_vs.json │ │ │ ├── hc_black.json │ │ │ ├── hc_black_defaults.json │ │ │ ├── light_defaults.json │ │ │ ├── light_plus.json │ │ │ └── light_vs.json │ ├── theme-monokai │ │ ├── .vscodeignore │ │ ├── cgmanifest.json │ │ ├── index.ts │ │ ├── package.json │ │ ├── package.nls.json │ │ └── themes │ │ │ └── monokai-color-theme.json │ ├── vscode-intellij-darcula-theme-master │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .vscodeignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── index.ts │ │ ├── package.json │ │ ├── themes │ │ │ └── darcula-color-theme.json │ │ └── view.png │ └── vscode-palenight-theme │ │ ├── .editorconfig │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .vscodeignore │ │ ├── README.md │ │ ├── changelog.md │ │ ├── contributing.md │ │ ├── icon.png │ │ ├── index.ts │ │ ├── license.md │ │ ├── package.json │ │ └── themes │ │ ├── palenight-italic.json │ │ ├── palenight-mild-contrast.json │ │ ├── palenight-operator.json │ │ └── palenight.json ├── i18n │ ├── __tests__ │ │ └── localeService.test.ts │ ├── index.ts │ ├── localeService.ts │ ├── localization.ts │ ├── localize.tsx │ └── selectLocaleAction.ts ├── icons │ └── README.md ├── index.ts ├── model │ ├── colorTheme.ts │ ├── extension.ts │ ├── iconTheme.ts │ ├── index.ts │ ├── keybinding.ts │ ├── notification.tsx │ ├── problems.tsx │ ├── settings.ts │ ├── ui.ts │ └── workbench │ │ ├── activityBar.ts │ │ ├── auxiliaryBar.ts │ │ ├── editor.ts │ │ ├── explorer │ │ ├── editorTree.ts │ │ ├── explorer.tsx │ │ └── folderTree.tsx │ │ ├── index.ts │ │ ├── layout.ts │ │ ├── menuBar.ts │ │ ├── panel.tsx │ │ ├── search.tsx │ │ ├── sidebar.ts │ │ └── statusBar.tsx ├── molecule.api.ts ├── monaco │ ├── __tests__ │ │ └── action.test.ts │ ├── action.ts │ ├── api.ts │ ├── common.ts │ ├── index.ts │ ├── monacoService.ts │ ├── quickAccessProvider.ts │ ├── quickAccessSettingsAction.ts │ ├── quickAccessViewAction.ts │ ├── quickCopyLineUp.ts │ ├── quickCreateFile.ts │ ├── quickRedo.ts │ ├── quickSelectAllAction.ts │ ├── quickTogglePanelAction.ts │ ├── quickToggleSideBarAction.ts │ ├── quickUndo.ts │ └── selectColorThemeAction.ts ├── provider │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ └── molecule.test.tsx.snap │ │ └── molecule.test.tsx │ ├── create.ts │ ├── index.tsx │ └── molecule.tsx ├── react │ ├── __tests__ │ │ ├── component.test.ts │ │ ├── connector.test.tsx │ │ ├── helper.test.tsx │ │ ├── render-react.test.tsx │ │ └── render.test.tsx │ ├── component.ts │ ├── connector.tsx │ ├── controller.ts │ ├── helper.ts │ ├── index.ts │ └── render.ts ├── services │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ ├── instanceService.test.tsx.snap │ │ │ └── settingsService.test.ts.snap │ │ ├── activityBarService.test.ts │ │ ├── auxiliaryBarService.test.ts │ │ ├── builtinService.test.ts │ │ ├── colorThemeHelper.test.ts │ │ ├── colorThemeService.test.ts │ │ ├── explorerService.test.ts │ │ ├── extensionService.test.ts │ │ ├── instanceService.test.tsx │ │ ├── keybinding.test.ts │ │ ├── layoutService.test.ts │ │ ├── menuBarService.test.ts │ │ ├── notificationService.test.ts │ │ ├── panelService.test.ts │ │ ├── problemsService.test.ts │ │ ├── settingsService.test.ts │ │ ├── sidebarService.test.ts │ │ └── statusBarService.test.ts │ ├── baseService.ts │ ├── builtinService │ │ ├── const.ts │ │ └── index.ts │ ├── extensionService.ts │ ├── index.ts │ ├── instanceService.tsx │ ├── keybinding.ts │ ├── notificationService.ts │ ├── problemsService.ts │ ├── settingsService.ts │ ├── theme │ │ ├── colorRegistry.ts │ │ ├── colorThemeService.ts │ │ └── helper.ts │ └── workbench │ │ ├── __tests__ │ │ ├── editorService.test.tsx │ │ ├── editorTreeService.test.ts │ │ ├── folderTreeService.test.tsx │ │ └── searchService.test.ts │ │ ├── activityBarService.ts │ │ ├── auxiliaryBarService.ts │ │ ├── editorService.ts │ │ ├── explorer │ │ ├── editorTreeService.ts │ │ ├── explorerService.ts │ │ └── folderTreeService.ts │ │ ├── index.ts │ │ ├── layoutService.ts │ │ ├── menuBarService.ts │ │ ├── panelService.ts │ │ ├── searchService.ts │ │ ├── sidebarService.ts │ │ └── statusBarService.ts ├── style │ ├── animation.scss │ ├── common.scss │ └── mo.scss ├── typings │ └── index.d.ts └── workbench │ ├── __tests__ │ ├── __snapshots__ │ │ └── workbench.test.tsx.snap │ └── workbench.test.tsx │ ├── activityBar │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ ├── activityBar.test.tsx.snap │ │ │ └── activityBarItem.test.tsx.snap │ │ ├── activityBar.test.tsx │ │ └── activityBarItem.test.tsx │ ├── activityBar.tsx │ ├── activityBarItem.tsx │ ├── base.ts │ ├── index.tsx │ └── style.scss │ ├── auxiliaryBar │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ ├── auxiliaryBar.test.tsx.snap │ │ │ └── auxiliaryBarTab.test.tsx.snap │ │ ├── auxiliaryBar.test.tsx │ │ └── auxiliaryBarTab.test.tsx │ ├── auxiliaryBar.tsx │ ├── auxiliaryBarTab.tsx │ ├── base.ts │ ├── index.ts │ └── style.scss │ ├── editor │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ └── editor.test.tsx.snap │ │ ├── action.test.tsx │ │ ├── breadcrumb.test.tsx │ │ ├── editor.test.tsx │ │ └── group.test.tsx │ ├── action.tsx │ ├── base.ts │ ├── breadcrumb.tsx │ ├── editor.tsx │ ├── group.tsx │ ├── index.tsx │ ├── statusBarView │ │ └── index.tsx │ ├── style.scss │ └── welcome │ │ ├── hooks.ts │ │ ├── index.tsx │ │ ├── logo.tsx │ │ ├── name.tsx │ │ └── style.scss │ ├── index.tsx │ ├── menuBar │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ └── menubar.test.tsx.snap │ │ └── menubar.test.tsx │ ├── horizontalView.tsx │ ├── index.tsx │ ├── logo.tsx │ ├── menuBar.tsx │ └── style.scss │ ├── notification │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ ├── localeNotification.test.tsx.snap │ │ │ ├── notificationPane.test.tsx.snap │ │ │ └── statusBarView.test.tsx.snap │ │ ├── localeNotification.test.tsx │ │ ├── notificationPane.test.tsx │ │ └── statusBarView.test.tsx │ ├── index.tsx │ ├── notificationPane │ │ ├── index.tsx │ │ └── localeNotification.tsx │ ├── statusBarView │ │ ├── index.tsx │ │ └── style.scss │ └── style.scss │ ├── panel │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ ├── output.test.tsx.snap │ │ │ └── panel.test.tsx.snap │ │ ├── output.test.tsx │ │ └── panel.test.tsx │ ├── index.tsx │ ├── output.tsx │ ├── panel.tsx │ └── style.scss │ ├── problems │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ ├── paneView.test.tsx.snap │ │ │ └── statusBarView.test.tsx.snap │ │ ├── paneView.test.tsx │ │ └── statusBarView.test.tsx │ ├── index.tsx │ ├── paneView │ │ └── index.tsx │ ├── statusBarView │ │ └── index.tsx │ └── style.scss │ ├── settings │ ├── index.tsx │ ├── settings.tsx │ └── style.scss │ ├── sidebar │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ ├── editorTree.test.tsx.snap │ │ │ ├── explore.test.tsx.snap │ │ │ └── siderbar.test.tsx.snap │ │ ├── editorTree.test.tsx │ │ ├── explore.test.tsx │ │ ├── folderTree.test.tsx │ │ ├── searchPanel.test.tsx │ │ └── siderbar.test.tsx │ ├── explore │ │ ├── base.ts │ │ ├── editorTree.tsx │ │ ├── explore.tsx │ │ ├── folderTree.tsx │ │ ├── index.tsx │ │ └── style.scss │ ├── index.tsx │ ├── search │ │ ├── base.ts │ │ ├── index.tsx │ │ ├── searchPanel.tsx │ │ └── searchTree.tsx │ ├── sidebar.tsx │ └── style.scss │ ├── statusBar │ ├── __tests__ │ │ ├── __snapshots__ │ │ │ ├── status.test.tsx.snap │ │ │ └── statusItem.test.tsx.snap │ │ ├── status.test.tsx │ │ └── statusItem.test.tsx │ ├── base.ts │ ├── index.tsx │ ├── item.tsx │ ├── statusBar.tsx │ └── style.scss │ ├── style.scss │ └── workbench.tsx ├── stories ├── 0-Welcome.stories.tsx ├── common │ └── propsTable │ │ ├── index.tsx │ │ └── style.scss ├── components │ ├── 10-Menu.stories.tsx │ ├── 11-DownDown.stories.tsx │ ├── 12-Button.stories.tsx │ ├── 13-Icon.stories.tsx │ ├── 14-Scrollbar.stories.tsx │ ├── 15-Input.stories.tsx │ ├── 15-Select.stories.tsx │ ├── 16-Checkbox.stories.tsx │ ├── 17-Dialog.stories.tsx │ ├── 18-Breadcrumb.stories.tsx │ ├── 19-Split.stories.tsx │ ├── 2-Collapse.stories.tsx │ ├── 3-Tabs.stories.tsx │ ├── 4-Tree.stories.tsx │ ├── 5-Monaco.stories.tsx │ ├── 6-ActionBar.stories.tsx │ ├── 7-ContextMenu.stories.tsx │ ├── 8-ContextView.stories.tsx │ └── 9-List.stories.tsx ├── demo.scss ├── extensions │ ├── actions │ │ └── quickOpen.ts │ ├── data-sync │ │ └── index.tsx │ ├── extend-panel │ │ ├── index.tsx │ │ └── pane.tsx │ ├── index.ts │ ├── locales-plus │ │ ├── index.tsx │ │ └── locale │ │ │ └── jp.json │ ├── problems │ │ └── index.tsx │ └── test │ │ ├── index.tsx │ │ └── testPane.tsx └── workbench │ └── 0-Workbench.stories.tsx ├── test ├── example.test.ts ├── setupTests.tsx └── utils.ts ├── tsconfig.base.json ├── tsconfig.build.json ├── tsconfig.json ├── website ├── README.md ├── babel.config.js ├── docs │ ├── advanced │ │ ├── customize-workbench.md │ │ └── event.md │ ├── contributing.md │ ├── examples │ │ └── index.md │ ├── guides │ │ ├── builtin.md │ │ ├── extend-builtin-ui.md │ │ ├── extend-color-theme.md │ │ ├── extend-keybinding.md │ │ ├── extend-locales.md │ │ ├── extend-quick-access.md │ │ ├── extend-settings.md │ │ ├── extend-workbench.md │ │ ├── extension.md │ │ └── icons.md │ ├── introduction.md │ ├── overview.md │ ├── quick-start.md │ └── the-first-extension.md ├── docusaurus.config.js ├── i18n │ └── zh-CN │ │ ├── code.json │ │ ├── docusaurus-plugin-content-docs │ │ ├── current.json │ │ ├── current │ │ │ ├── advanced │ │ │ │ ├── customize-builtin.md │ │ │ │ ├── customize-workbench.md │ │ │ │ └── event.md │ │ │ ├── contributing.md │ │ │ ├── guides │ │ │ │ ├── builtin.md │ │ │ │ ├── extend-builtin-ui.md │ │ │ │ ├── extend-color-theme.md │ │ │ │ ├── extend-keybinding.md │ │ │ │ ├── extend-locales.md │ │ │ │ ├── extend-quick-access.md │ │ │ │ ├── extend-settings.md │ │ │ │ ├── extend-workbench.md │ │ │ │ ├── extension.md │ │ │ │ └── icons.md │ │ │ ├── introduction.md │ │ │ ├── overview.md │ │ │ ├── quick-start.md │ │ │ └── the-first-extension.md │ │ ├── version-0.9.0-beta.2 │ │ │ ├── advanced │ │ │ │ ├── customize-builtin.md │ │ │ │ └── customize-workbench.md │ │ │ ├── contributing.md │ │ │ ├── guides │ │ │ │ ├── extend-builtin-ui.md │ │ │ │ ├── extend-color-theme.md │ │ │ │ ├── extend-keybinding.md │ │ │ │ ├── extend-locales.md │ │ │ │ ├── extend-quick-access.md │ │ │ │ ├── extend-settings.md │ │ │ │ ├── extend-workbench.md │ │ │ │ ├── extension.md │ │ │ │ └── icons.md │ │ │ ├── introduction.md │ │ │ ├── overview.md │ │ │ ├── quick-start.md │ │ │ └── the-first-extension.md │ │ └── version-1.x │ │ │ ├── advanced │ │ │ ├── customize-builtin.md │ │ │ ├── customize-workbench.md │ │ │ └── event.md │ │ │ ├── contributing.md │ │ │ ├── guides │ │ │ ├── builtin.md │ │ │ ├── extend-builtin-ui.md │ │ │ ├── extend-color-theme.md │ │ │ ├── extend-keybinding.md │ │ │ ├── extend-locales.md │ │ │ ├── extend-quick-access.md │ │ │ ├── extend-settings.md │ │ │ ├── extend-workbench.md │ │ │ ├── extension.md │ │ │ └── icons.md │ │ │ ├── introduction.md │ │ │ ├── overview.md │ │ │ ├── quick-start.md │ │ │ └── the-first-extension.md │ │ ├── docusaurus-plugin-content-pages │ │ └── case │ │ │ └── index.js │ │ └── docusaurus-theme-classic │ │ ├── footer.json │ │ └── navbar.json ├── package.json ├── sidebars.js ├── src │ ├── components │ │ ├── HomepageFeatures.js │ │ ├── HomepageFeatures.module.css │ │ └── ShowCase │ │ │ ├── index.js │ │ │ └── index.module.css │ ├── css │ │ └── custom.css │ └── pages │ │ ├── case │ │ └── index.js │ │ ├── index.js │ │ ├── index.module.css │ │ └── markdown-page.md ├── static │ ├── .nojekyll │ └── img │ │ ├── advanced │ │ └── custom-workbench.png │ │ ├── docusaurus.png │ │ ├── easyToUse.svg │ │ ├── extensible.svg │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── guides │ │ ├── builtin-ui.png │ │ ├── colorThemePalette.jpg │ │ ├── custom-workbench.png │ │ ├── extend-language.png │ │ ├── extend-language2.png │ │ ├── extend-quickAccess-1.png │ │ ├── extend-quickAccess.png │ │ ├── extend-settings.png │ │ ├── extend-workbench.png │ │ ├── quick-access.jpg │ │ └── workbench-ui.png │ │ ├── logo.svg │ │ ├── logo@1x.png │ │ ├── logo@2x.png │ │ ├── logo@3x.png │ │ ├── molecule.png │ │ ├── qrcode-chat.jpg │ │ ├── react.svg │ │ ├── the-first-extension.png │ │ ├── tutorial │ │ ├── docsVersionDropdown.png │ │ └── localeDropdown.png │ │ ├── undraw_docusaurus_mountain.svg │ │ ├── undraw_docusaurus_react.svg │ │ └── undraw_docusaurus_tree.svg ├── versioned_docs │ ├── version-0.9.0-beta.2 │ │ ├── advanced │ │ │ └── customize-workbench.md │ │ ├── api │ │ │ ├── _category_.yml │ │ │ ├── classes │ │ │ │ ├── MoleculeProvider.md │ │ │ │ ├── _category_.yml │ │ │ │ ├── molecule.ActivityBarService.md │ │ │ │ ├── molecule.BuiltinService.md │ │ │ │ ├── molecule.ColorThemeService.md │ │ │ │ ├── molecule.EditorService.md │ │ │ │ ├── molecule.EditorTreeService.md │ │ │ │ ├── molecule.ExplorerService.md │ │ │ │ ├── molecule.ExtensionService.md │ │ │ │ ├── molecule.FolderTreeService.md │ │ │ │ ├── molecule.LayoutService.md │ │ │ │ ├── molecule.LocaleService.md │ │ │ │ ├── molecule.MenuBarService.md │ │ │ │ ├── molecule.NotificationService.md │ │ │ │ ├── molecule.PanelService.md │ │ │ │ ├── molecule.ProblemsService.md │ │ │ │ ├── molecule.SearchService.md │ │ │ │ ├── molecule.SettingsService.md │ │ │ │ ├── molecule.SidebarService.md │ │ │ │ ├── molecule.StatusBarService.md │ │ │ │ ├── molecule.component.Input.md │ │ │ │ ├── molecule.component.MonacoEditor.md │ │ │ │ ├── molecule.component.Select.md │ │ │ │ ├── molecule.event.EventEmitter.md │ │ │ │ ├── molecule.event.GlobalEvent.md │ │ │ │ ├── molecule.model.ActivityBarModel.md │ │ │ │ ├── molecule.model.EditorGroupModel.md │ │ │ │ ├── molecule.model.EditorModel.md │ │ │ │ ├── molecule.model.EditorTree.md │ │ │ │ ├── molecule.model.IExplorerModel.md │ │ │ │ ├── molecule.model.IFolderTreeModel.md │ │ │ │ ├── molecule.model.MenuBarModel.md │ │ │ │ ├── molecule.model.NotificationModel.md │ │ │ │ ├── molecule.model.PanelModel.md │ │ │ │ ├── molecule.model.ProblemsModel.md │ │ │ │ ├── molecule.model.SearchModel.md │ │ │ │ ├── molecule.model.SettingsModel.md │ │ │ │ ├── molecule.model.SidebarModel.md │ │ │ │ ├── molecule.model.StatusBarModel.md │ │ │ │ ├── molecule.model.TreeNodeModel.md │ │ │ │ ├── molecule.monaco.Action2.md │ │ │ │ ├── molecule.react.Component.md │ │ │ │ └── molecule.react.Controller.md │ │ │ ├── enums │ │ │ │ ├── _category_.yml │ │ │ │ ├── molecule.component.MenuMode.md │ │ │ │ ├── molecule.model.ActivityBarEvent.md │ │ │ │ ├── molecule.model.ColorScheme.md │ │ │ │ ├── molecule.model.EditorEvent.md │ │ │ │ ├── molecule.model.EditorTreeEvent.md │ │ │ │ ├── molecule.model.ExplorerEvent.md │ │ │ │ ├── molecule.model.FileTypes.md │ │ │ │ ├── molecule.model.Float.md │ │ │ │ ├── molecule.model.FolderTreeEvent.md │ │ │ │ ├── molecule.model.IContributeType.md │ │ │ │ ├── molecule.model.IExtensionType.md │ │ │ │ ├── molecule.model.MarkerSeverity.md │ │ │ │ ├── molecule.model.MenuBarEvent.md │ │ │ │ ├── molecule.model.NotificationStatus.md │ │ │ │ ├── molecule.model.PanelEvent.md │ │ │ │ ├── molecule.model.SearchEvent.md │ │ │ │ ├── molecule.model.SettingsEvent.md │ │ │ │ ├── molecule.model.StatusBarEvent.md │ │ │ │ ├── molecule.monaco.KeybindingWeight.md │ │ │ │ └── molecule.react.ComponentEvents.md │ │ │ ├── index.md │ │ │ ├── interfaces │ │ │ │ ├── IMoleculeProps.md │ │ │ │ ├── _category_.yml │ │ │ │ ├── molecule.IActivityBarController.md │ │ │ │ ├── molecule.IActivityBarService.md │ │ │ │ ├── molecule.IBuiltinService.md │ │ │ │ ├── molecule.IColorThemeService.md │ │ │ │ ├── molecule.IEditorController.md │ │ │ │ ├── molecule.IEditorService.md │ │ │ │ ├── molecule.IEditorTreeService.md │ │ │ │ ├── molecule.IExplorerService.md │ │ │ │ ├── molecule.IExtensionService.md │ │ │ │ ├── molecule.IFolderTreeService.md │ │ │ │ ├── molecule.ILayoutController.md │ │ │ │ ├── molecule.ILayoutService.md │ │ │ │ ├── molecule.ILocale.md │ │ │ │ ├── molecule.ILocaleService.md │ │ │ │ ├── molecule.ILocalizeProps.md │ │ │ │ ├── molecule.IMenuBarController.md │ │ │ │ ├── molecule.IMenuBarService.md │ │ │ │ ├── molecule.INotificationController.md │ │ │ │ ├── molecule.INotificationService.md │ │ │ │ ├── molecule.IPanelController.md │ │ │ │ ├── molecule.IPanelService.md │ │ │ │ ├── molecule.IProblemsController.md │ │ │ │ ├── molecule.IProblemsService.md │ │ │ │ ├── molecule.ISearchService.md │ │ │ │ ├── molecule.ISettingsController.md │ │ │ │ ├── molecule.ISettingsService.md │ │ │ │ ├── molecule.ISideBarController.md │ │ │ │ ├── molecule.ISidebarService.md │ │ │ │ ├── molecule.IStatusBarController.md │ │ │ │ ├── molecule.IStatusBarService.md │ │ │ │ ├── molecule.component.IActionBarItemProps.md │ │ │ │ ├── molecule.component.IActionBarProps.md │ │ │ │ ├── molecule.component.IBreadcrumbItemProps.md │ │ │ │ ├── molecule.component.IBreadcrumbProps.md │ │ │ │ ├── molecule.component.IButtonProps.md │ │ │ │ ├── molecule.component.ICheckboxProps.md │ │ │ │ ├── molecule.component.ICollapseProps.md │ │ │ │ ├── molecule.component.IContextMenuProps.md │ │ │ │ ├── molecule.component.IContextView.md │ │ │ │ ├── molecule.component.IContextViewProps.md │ │ │ │ ├── molecule.component.IDisplayProps.md │ │ │ │ ├── molecule.component.IDropDownProps.md │ │ │ │ ├── molecule.component.IIconProps.md │ │ │ │ ├── molecule.component.IInputProps.md │ │ │ │ ├── molecule.component.IItemProps.md │ │ │ │ ├── molecule.component.IListProps.md │ │ │ │ ├── molecule.component.IMenuItemProps.md │ │ │ │ ├── molecule.component.IModalFuncProps.md │ │ │ │ ├── molecule.component.IModalProps.md │ │ │ │ ├── molecule.component.IMonacoEditorProps.md │ │ │ │ ├── molecule.component.IScrollbarProps.md │ │ │ │ ├── molecule.component.ISearchProps.md │ │ │ │ ├── molecule.component.ISelectOptionProps.md │ │ │ │ ├── molecule.component.ISelectProps.md │ │ │ │ ├── molecule.component.ISubMenuProps.md │ │ │ │ ├── molecule.component.ITabProps.md │ │ │ │ ├── molecule.component.ITabsProps.md │ │ │ │ ├── molecule.component.ITextAreaProps.md │ │ │ │ ├── molecule.component.IToolTipProps.md │ │ │ │ ├── molecule.component.IToolbarProps.md │ │ │ │ ├── molecule.component.ITreeNodeItemProps.md │ │ │ │ ├── molecule.component.ITreeProps.md │ │ │ │ ├── molecule.model.IActivityBar.md │ │ │ │ ├── molecule.model.IActivityBarItem.md │ │ │ │ ├── molecule.model.IActivityMenuItemProps.md │ │ │ │ ├── molecule.model.IColorTheme.md │ │ │ │ ├── molecule.model.IColors.md │ │ │ │ ├── molecule.model.IContribute.md │ │ │ │ ├── molecule.model.IEditor.md │ │ │ │ ├── molecule.model.IEditorAction.md │ │ │ │ ├── molecule.model.IEditorActionsProps.md │ │ │ │ ├── molecule.model.IEditorGroup.md │ │ │ │ ├── molecule.model.IEditorTab.md │ │ │ │ ├── molecule.model.IExplorer.md │ │ │ │ ├── molecule.model.IExplorerPanelItem.md │ │ │ │ ├── molecule.model.IExtension.md │ │ │ │ ├── molecule.model.IFolderInputEvent.md │ │ │ │ ├── molecule.model.IFolderTree.md │ │ │ │ ├── molecule.model.IFolderTreeNodeProps.md │ │ │ │ ├── molecule.model.IFolderTreeSubItem.md │ │ │ │ ├── molecule.model.IIconTheme.md │ │ │ │ ├── molecule.model.IMenuBar.md │ │ │ │ ├── molecule.model.IMenuBarItem.md │ │ │ │ ├── molecule.model.INotification.md │ │ │ │ ├── molecule.model.INotificationItem.md │ │ │ │ ├── molecule.model.IOutput.md │ │ │ │ ├── molecule.model.IPanel.md │ │ │ │ ├── molecule.model.IPanelItem.md │ │ │ │ ├── molecule.model.IProblems.md │ │ │ │ ├── molecule.model.IProblemsItem.md │ │ │ │ ├── molecule.model.IRelatedInformation.md │ │ │ │ ├── molecule.model.ISearchProps.md │ │ │ │ ├── molecule.model.ISettings.md │ │ │ │ ├── molecule.model.ISidebar.md │ │ │ │ ├── molecule.model.ISidebarPane.md │ │ │ │ ├── molecule.model.ISimpleKeybinding.md │ │ │ │ ├── molecule.model.IStatusBar.md │ │ │ │ ├── molecule.model.IStatusBarItem.md │ │ │ │ ├── molecule.model.IWorkbench.md │ │ │ │ ├── molecule.model.TokenColor.md │ │ │ │ └── molecule.react.IComponent.md │ │ │ └── namespaces │ │ │ │ ├── _category_.yml │ │ │ │ ├── molecule.component.md │ │ │ │ ├── molecule.event.md │ │ │ │ ├── molecule.md │ │ │ │ ├── molecule.model.md │ │ │ │ ├── molecule.monaco.md │ │ │ │ └── molecule.react.md │ │ ├── contributing.md │ │ ├── examples │ │ │ └── index.md │ │ ├── guides │ │ │ ├── extend-builtin-ui.md │ │ │ ├── extend-color-theme.md │ │ │ ├── extend-keybinding.md │ │ │ ├── extend-locales.md │ │ │ ├── extend-quick-access.md │ │ │ ├── extend-settings.md │ │ │ ├── extend-workbench.md │ │ │ ├── extension.md │ │ │ └── icons.md │ │ ├── introduction.md │ │ ├── overview.md │ │ ├── quick-start.md │ │ └── the-first-extension.md │ └── version-1.x │ │ ├── advanced │ │ ├── customize-workbench.md │ │ └── event.md │ │ ├── api │ │ ├── _category_.yml │ │ ├── classes │ │ │ ├── _category_.yml │ │ │ ├── molecule.ActivityBarService.md │ │ │ ├── molecule.AuxiliaryBarService.md │ │ │ ├── molecule.BuiltinService.md │ │ │ ├── molecule.ColorThemeService.md │ │ │ ├── molecule.EditorService.md │ │ │ ├── molecule.EditorTreeService.md │ │ │ ├── molecule.ExplorerService.md │ │ │ ├── molecule.ExtensionService.md │ │ │ ├── molecule.FolderTreeService.md │ │ │ ├── molecule.LayoutService.md │ │ │ ├── molecule.LocaleService.md │ │ │ ├── molecule.MenuBarService.md │ │ │ ├── molecule.NotificationService.md │ │ │ ├── molecule.PanelService.md │ │ │ ├── molecule.ProblemsService.md │ │ │ ├── molecule.SearchService.md │ │ │ ├── molecule.SettingsService.md │ │ │ ├── molecule.SidebarService.md │ │ │ ├── molecule.StatusBarService.md │ │ │ ├── molecule.component.Input.md │ │ │ ├── molecule.component.MonacoEditor.md │ │ │ ├── molecule.component.Select.md │ │ │ ├── molecule.event.EventEmitter.md │ │ │ ├── molecule.event.GlobalEvent.md │ │ │ ├── molecule.model.ActivityBarModel.md │ │ │ ├── molecule.model.AuxiliaryModel.md │ │ │ ├── molecule.model.EditorGroupModel.md │ │ │ ├── molecule.model.EditorModel.md │ │ │ ├── molecule.model.EditorTree.md │ │ │ ├── molecule.model.IExplorerModel.md │ │ │ ├── molecule.model.IFolderTreeModel.md │ │ │ ├── molecule.model.MenuBarModel.md │ │ │ ├── molecule.model.NotificationModel.md │ │ │ ├── molecule.model.PanelModel.md │ │ │ ├── molecule.model.ProblemsModel.md │ │ │ ├── molecule.model.SearchModel.md │ │ │ ├── molecule.model.SettingsModel.md │ │ │ ├── molecule.model.SidebarModel.md │ │ │ ├── molecule.model.StatusBarModel.md │ │ │ ├── molecule.model.TreeNodeModel.md │ │ │ ├── molecule.monaco.Action2.md │ │ │ ├── molecule.react.Component.md │ │ │ └── molecule.react.Controller.md │ │ ├── enums │ │ │ ├── _category_.yml │ │ │ ├── molecule.component.DirectionKind.md │ │ │ ├── molecule.component.MenuMode.md │ │ │ ├── molecule.model.ActivityBarEvent.md │ │ │ ├── molecule.model.AuxiliaryEventKind.md │ │ │ ├── molecule.model.ColorScheme.md │ │ │ ├── molecule.model.ColorThemeEvent.md │ │ │ ├── molecule.model.ColorThemeMode.md │ │ │ ├── molecule.model.EditorEvent.md │ │ │ ├── molecule.model.EditorTreeEvent.md │ │ │ ├── molecule.model.ExplorerEvent.md │ │ │ ├── molecule.model.FileTypes.md │ │ │ ├── molecule.model.Float.md │ │ │ ├── molecule.model.FolderTreeEvent.md │ │ │ ├── molecule.model.IContributeType.md │ │ │ ├── molecule.model.IExtensionType.md │ │ │ ├── molecule.model.MarkerSeverity.md │ │ │ ├── molecule.model.MenuBarEvent.md │ │ │ ├── molecule.model.NotificationStatus.md │ │ │ ├── molecule.model.PanelEvent.md │ │ │ ├── molecule.model.ProblemsEvent.md │ │ │ ├── molecule.model.SearchEvent.md │ │ │ ├── molecule.model.SettingsEvent.md │ │ │ ├── molecule.model.StatusBarEvent.md │ │ │ ├── molecule.monaco.KeybindingWeight.md │ │ │ └── molecule.react.ComponentEvents.md │ │ ├── index.md │ │ ├── interfaces │ │ │ ├── _category_.yml │ │ │ ├── molecule.IActivityBarController.md │ │ │ ├── molecule.IActivityBarService.md │ │ │ ├── molecule.IAuxiliaryBarService.md │ │ │ ├── molecule.IBuiltinService.md │ │ │ ├── molecule.IColorThemeService.md │ │ │ ├── molecule.IEditorController.md │ │ │ ├── molecule.IEditorService.md │ │ │ ├── molecule.IEditorTreeService.md │ │ │ ├── molecule.IExplorerService.md │ │ │ ├── molecule.IExtensionService.md │ │ │ ├── molecule.IFolderTreeService.md │ │ │ ├── molecule.ILayoutController.md │ │ │ ├── molecule.ILayoutService.md │ │ │ ├── molecule.ILocale.md │ │ │ ├── molecule.ILocaleService.md │ │ │ ├── molecule.ILocalizeProps.md │ │ │ ├── molecule.IMenuBarController.md │ │ │ ├── molecule.IMenuBarService.md │ │ │ ├── molecule.INotificationController.md │ │ │ ├── molecule.INotificationService.md │ │ │ ├── molecule.IPanelController.md │ │ │ ├── molecule.IPanelService.md │ │ │ ├── molecule.IProblemsController.md │ │ │ ├── molecule.IProblemsService.md │ │ │ ├── molecule.ISearchService.md │ │ │ ├── molecule.ISettingsController.md │ │ │ ├── molecule.ISettingsService.md │ │ │ ├── molecule.ISideBarController.md │ │ │ ├── molecule.ISidebarService.md │ │ │ ├── molecule.IStatusBarController.md │ │ │ ├── molecule.IStatusBarService.md │ │ │ ├── molecule.component.IActionBarItemProps.md │ │ │ ├── molecule.component.IActionBarProps.md │ │ │ ├── molecule.component.IBreadcrumbItemProps.md │ │ │ ├── molecule.component.IBreadcrumbProps.md │ │ │ ├── molecule.component.IButtonProps.md │ │ │ ├── molecule.component.ICheckboxProps.md │ │ │ ├── molecule.component.ICollapseProps.md │ │ │ ├── molecule.component.IContextMenuProps.md │ │ │ ├── molecule.component.IContextView.md │ │ │ ├── molecule.component.IContextViewProps.md │ │ │ ├── molecule.component.IDisplayProps.md │ │ │ ├── molecule.component.IDropDownProps.md │ │ │ ├── molecule.component.IIconProps.md │ │ │ ├── molecule.component.IInputProps.md │ │ │ ├── molecule.component.IItemProps.md │ │ │ ├── molecule.component.IListProps.md │ │ │ ├── molecule.component.IMenuItemProps.md │ │ │ ├── molecule.component.IModalFuncProps.md │ │ │ ├── molecule.component.IModalProps.md │ │ │ ├── molecule.component.IMonacoEditorProps.md │ │ │ ├── molecule.component.IPaneConfigs.md │ │ │ ├── molecule.component.IScrollEvent.md │ │ │ ├── molecule.component.IScrollRef.md │ │ │ ├── molecule.component.IScrollbarProps.md │ │ │ ├── molecule.component.ISearchProps.md │ │ │ ├── molecule.component.ISelectOptionProps.md │ │ │ ├── molecule.component.ISelectProps.md │ │ │ ├── molecule.component.ISplitProps.md │ │ │ ├── molecule.component.ISubMenuProps.md │ │ │ ├── molecule.component.ITabProps.md │ │ │ ├── molecule.component.ITabsProps.md │ │ │ ├── molecule.component.ITextAreaProps.md │ │ │ ├── molecule.component.IToolTipProps.md │ │ │ ├── molecule.component.IToolbarProps.md │ │ │ ├── molecule.component.ITreeNodeItemProps.md │ │ │ ├── molecule.component.ITreeProps.md │ │ │ ├── molecule.event.ListenerEventContext.md │ │ │ ├── molecule.model.BuiltInEditorTabDataType.md │ │ │ ├── molecule.model.IActivityBar.md │ │ │ ├── molecule.model.IActivityBarItem.md │ │ │ ├── molecule.model.IActivityMenuItemProps.md │ │ │ ├── molecule.model.IAuxiliaryBar.md │ │ │ ├── molecule.model.IColorTheme.md │ │ │ ├── molecule.model.IColors.md │ │ │ ├── molecule.model.IContribute.md │ │ │ ├── molecule.model.IEditor.md │ │ │ ├── molecule.model.IEditorAction.md │ │ │ ├── molecule.model.IEditorActionsProps.md │ │ │ ├── molecule.model.IEditorGroup.md │ │ │ ├── molecule.model.IEditorTab.md │ │ │ ├── molecule.model.IExplorer.md │ │ │ ├── molecule.model.IExplorerPanelItem.md │ │ │ ├── molecule.model.IExtension.md │ │ │ ├── molecule.model.IFolderInputEvent.md │ │ │ ├── molecule.model.IFolderTree.md │ │ │ ├── molecule.model.IFolderTreeNodeProps.md │ │ │ ├── molecule.model.IFolderTreeSubItem.md │ │ │ ├── molecule.model.IIconTheme.md │ │ │ ├── molecule.model.IMenuBar.md │ │ │ ├── molecule.model.IMenuBarItem.md │ │ │ ├── molecule.model.INotification.md │ │ │ ├── molecule.model.INotificationItem.md │ │ │ ├── molecule.model.IOutput.md │ │ │ ├── molecule.model.IPanel.md │ │ │ ├── molecule.model.IPanelItem.md │ │ │ ├── molecule.model.IProblems.md │ │ │ ├── molecule.model.IProblemsItem.md │ │ │ ├── molecule.model.IProblemsTreeNode.md │ │ │ ├── molecule.model.IRelatedInformation.md │ │ │ ├── molecule.model.ISearchProps.md │ │ │ ├── molecule.model.ISettings.md │ │ │ ├── molecule.model.ISidebar.md │ │ │ ├── molecule.model.ISidebarPane.md │ │ │ ├── molecule.model.ISimpleKeybinding.md │ │ │ ├── molecule.model.IStatusBar.md │ │ │ ├── molecule.model.IStatusBarItem.md │ │ │ ├── molecule.model.IWorkbench.md │ │ │ ├── molecule.model.TokenColor.md │ │ │ └── molecule.react.IComponent.md │ │ └── namespaces │ │ │ ├── _category_.yml │ │ │ ├── molecule.component.md │ │ │ ├── molecule.event.md │ │ │ ├── molecule.md │ │ │ ├── molecule.model.md │ │ │ ├── molecule.monaco.md │ │ │ └── molecule.react.md │ │ ├── contributing.md │ │ ├── examples │ │ └── index.md │ │ ├── guides │ │ ├── builtin.md │ │ ├── extend-builtin-ui.md │ │ ├── extend-color-theme.md │ │ ├── extend-keybinding.md │ │ ├── extend-locales.md │ │ ├── extend-quick-access.md │ │ ├── extend-settings.md │ │ ├── extend-workbench.md │ │ ├── extension.md │ │ └── icons.md │ │ ├── introduction.md │ │ ├── overview.md │ │ ├── quick-start.md │ │ └── the-first-extension.md ├── versioned_sidebars │ ├── version-0.9.0-beta.2-sidebars.json │ └── version-1.x-sidebars.json ├── versions.json └── yarn.lock └── yarn.lock /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: 'bug: ' 5 | labels: 'bug' 6 | assignees: '' 7 | --- 8 | 9 | ### Describe the bug 10 | 11 | 12 | 13 | ### Versions 14 | 15 | 16 | 17 | - OS: 18 | - Browser: 19 | - Molecule: 20 | 21 | ### To reproduce 22 | 23 | ### Expected 24 | 25 | 26 | 27 | ### Actually happening 28 | 29 | 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for molecule 4 | title: 'feat: ' 5 | labels: 'enhancement' 6 | assignees: '' 7 | --- 8 | 9 | ### Description 10 | 11 | 12 | 13 | ### Solution 14 | 15 | 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question 3 | about: Need help during use molecule 4 | labels: 'help wanted' 5 | --- 6 | 7 | ### Question 8 | 9 | 10 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. 4 | 5 | Fixes # (issue) 6 | 7 | ## Changes 8 | 9 | Please describe the changes, help the reviewer to read your code. 10 | 11 | - Change A 12 | - Change B 13 | 14 | ## How Has This Been Tested? 15 | 16 | Please describe the tests that you ran to verify your changes. Please also note any relevant details for your test configuration. 17 | 18 | - [ ] Test A 19 | - [ ] Test B 20 | 21 | ## Checklist 22 | 23 | - [ ] My code follows the style guidelines of this project 24 | - [ ] I have performed a self-review of my own code 25 | - [ ] I have commented my code, particularly in hard-to-understand areas 26 | - [ ] I have made corresponding changes to the documentation 27 | - [ ] My changes generate no new warnings 28 | - [ ] Any dependent changes have been merged and published in downstream modules 29 | -------------------------------------------------------------------------------- /.github/workflows/test-deploy.yml: -------------------------------------------------------------------------------- 1 | name: Test GitHub Pages Deployment 2 | 3 | on: 4 | pull_request: 5 | branches: [main] 6 | paths: [website/**] 7 | 8 | jobs: 9 | test-deploy: 10 | name: Test deployment 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - uses: actions/setup-node@v2 15 | with: 16 | node-version: 16.x 17 | cache: yarn 18 | cache-dependency-path: website/yarn.lock 19 | - name: Install dependencies 20 | run: yarn 21 | - name: Test build 22 | working-directory: website 23 | run: | 24 | yarn install --frozen-lockfile 25 | yarn build 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .history 2 | node_modules 3 | umd 4 | esm 5 | coverage 6 | .DS_Store 7 | storybook-static 8 | .yarn-error.log 9 | .yarn 10 | lib 11 | docs/api 12 | 13 | # Website 14 | 15 | # Dependencies 16 | website/node_modules 17 | 18 | # Production 19 | website/build 20 | 21 | # Generated files 22 | website/.docusaurus 23 | website/.cache-loader 24 | website/docs/api 25 | 26 | # Misc 27 | website/.DS_Store 28 | website/.env.local 29 | website/.env.development.local 30 | website/.env.test.local 31 | website/.env.production.local 32 | 33 | website/npm-debug.log* 34 | website/yarn-debug.log* 35 | website/yarn-error.log* 36 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .github 2 | .history 3 | .storybook 4 | .vscode 5 | .yarn 6 | coverage 7 | mock 8 | node_modules 9 | scripts 10 | src 11 | stories 12 | test 13 | website 14 | 15 | .eslintrc.js 16 | .gitignore 17 | .prettierignore 18 | .prettierrc.json 19 | .stylelintrc.json 20 | .yarnrc 21 | .yarnrc.yml 22 | babel.config.json 23 | CODE_OF_CONDUCT.md 24 | commitlint.config.js 25 | CONTRIBUTING.md 26 | jest.config.js 27 | MIGRATION.md 28 | pnpm-lock.yaml 29 | yarn.lock -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore artifacts: 2 | esm 3 | umd 4 | .history 5 | node_modules 6 | yarn.lock 7 | coverage 8 | storybook-static 9 | docs/api 10 | website/build 11 | website/docs/api 12 | website/.docusaurus 13 | website/node_modules 14 | lib 15 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "singleQuote": true 4 | } 5 | -------------------------------------------------------------------------------- /.storybook/main.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const { merge } = require('webpack-merge'); 3 | const baseConf = require('../build/webpack.base'); 4 | module.exports = { 5 | stories: ['../stories/**/*.stories.tsx'], 6 | addons: ['@storybook/addon-actions', '@storybook/addon-links'], 7 | webpackFinal: async (config) => { 8 | return merge(config, baseConf); 9 | }, 10 | typescript: { 11 | reactDocgen: 'none', 12 | }, 13 | features: { 14 | postcss: false, 15 | babelModeV7: true, 16 | }, 17 | core: { 18 | builder: 'webpack5', 19 | }, 20 | }; 21 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["stylelint-config-sass-guidelines"], 3 | "rules": { 4 | "indentation": 4, 5 | "scss/dollar-variable-pattern": null, 6 | "max-nesting-depth": 4, 7 | "no-missing-end-of-source-newline": null 8 | }, 9 | "ignoreFiles": [ 10 | "coverage/**/*.css", 11 | "esm/**/*.css", 12 | "umd/**/*.css", 13 | "website/**/*.css" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true, 3 | "editor.formatOnSave": true, 4 | "editor.codeActionsOnSave": { 5 | "source.fixAll": true, 6 | "source.fixAll.eslint": true, 7 | "source.fixAll.markdownlint": false, 8 | "source.fixAll.stylelint": true 9 | }, 10 | "markdownlint.ignore": ["**/*.md"], 11 | "typescript.tsdk": "node_modules/typescript/lib" 12 | } 13 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | # Set default registry: yarn config set registry https://registry.yarnpkg.com 2 | # registry "http://registry.npm.dtstack.com/" 3 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT -------------------------------------------------------------------------------- /MIGRATION.md: -------------------------------------------------------------------------------- 1 |

Migration

2 | 3 | - [From version 1.0.x to 1.1.0](#from-version-10x-to-110) 4 | - [React18 upgrade](#react18-upgrade) 5 | 6 | ## From version 1.0.x to 1.1.0 7 | 8 | ### React18 upgrade 9 | 10 | React 18 introduced a [new root API](https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html#updates-to-client-rendering-apis). Starting from 1.1.0, Molecule itself will auto-detect your version of react and use the new root API automatically if you're on React18. But It's attentioned that there are several dependencies of Molecule still incompatible of React18's strict mode. So Molecule now still not compatible with `React.StrictMode` in React@18.x. For exmaple: [react-scrollbars-custom](https://github.com/xobotyi/react-scrollbars-custom/issues/234). 11 | -------------------------------------------------------------------------------- /babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["@babel/preset-env"], 4 | "@babel/preset-react", 5 | "@babel/preset-typescript" 6 | ], 7 | "plugins": [ 8 | "@babel/plugin-transform-runtime", 9 | ["@babel/plugin-proposal-decorators", { "legacy": true }], 10 | ["@babel/plugin-proposal-class-properties", { "loose": true }], 11 | [ 12 | "@babel/plugin-proposal-private-property-in-object", 13 | { "loose": true } 14 | ], 15 | ["@babel/plugin-proposal-private-methods", { "loose": true }] 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /build/preinstall.js: -------------------------------------------------------------------------------- 1 | let err = false; 2 | 3 | const majorNodeVersion = parseInt(/^(\d+)\./.exec(process.versions.node)[1]); 4 | 5 | if (majorNodeVersion < 10) { 6 | console.error('\033[1;31m*** Please use node >=10.\033[0;0m\n'); 7 | err = true; 8 | } 9 | 10 | if (err) { 11 | process.exit(1); 12 | } 13 | -------------------------------------------------------------------------------- /build/variables.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | __DEVELOPMENT__: true, 3 | }; 4 | -------------------------------------------------------------------------------- /build/web.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const { merge } = require('webpack-merge'); 3 | const HtmlWebPackPlugin = require('html-webpack-plugin'); 4 | const webpackConf = require('./webpack.base'); 5 | 6 | module.exports = function (env) { 7 | return merge(webpackConf, { 8 | devtool: 'inline-source-map', 9 | devServer: { 10 | hot: true, 11 | port: 8888, 12 | }, 13 | entry: [path.resolve(__dirname, './web/app.js')], 14 | module: { 15 | rules: [ 16 | { 17 | test: /\.css$/, 18 | use: ['style-loader', 'css-loader'], 19 | }, 20 | { 21 | test: /\.(jpg|png|gif|eot|woff|svg|ttf|woff2|gif|appcache|webp)(\?|$)/, 22 | use: ['file-loader'], 23 | }, 24 | ], 25 | }, 26 | plugins: [ 27 | new HtmlWebPackPlugin({ 28 | template: path.resolve(__dirname, './web/index.html'), 29 | }), 30 | ].filter(Boolean), 31 | }); 32 | }; 33 | -------------------------------------------------------------------------------- /build/web/app.js: -------------------------------------------------------------------------------- 1 | import React, { StrictMode } from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { create, Workbench } from '../../esm'; 4 | import '../../esm/style/mo.css'; 5 | 6 | const moInstance = create({ 7 | extensions: [], 8 | }); 9 | 10 | export const App = () => moInstance.render(); 11 | 12 | ReactDOM.render( 13 | 14 | 15 | , 16 | document.getElementById('root') 17 | ); 18 | -------------------------------------------------------------------------------- /build/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DTStack/molecule/69e4f3bc8b6f2028571d92e76ee49ba3eb88ba94/build/web/favicon.png -------------------------------------------------------------------------------- /build/web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Molecule Sample 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | ignore: 2 | - 'website' 3 | - 'stories' 4 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@commitlint/config-conventional'], 3 | }; 4 | -------------------------------------------------------------------------------- /mock/fileMock.js: -------------------------------------------------------------------------------- 1 | module.exports = 'test-file-stub'; 2 | -------------------------------------------------------------------------------- /mock/monacoMock.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | languages: { 3 | register: function (language) {}, 4 | setMonarchTokensProvider: function (name, tokens) {}, 5 | registerCompletionItemProvider: function (name, provider) {}, 6 | }, 7 | editor: { 8 | defineTheme: function (name, theme) {}, 9 | setTheme: function (theme) {}, 10 | create: function (dom, options, override) {}, 11 | }, 12 | Uri: { 13 | parse: function () {}, 14 | }, 15 | KeyMod: {}, 16 | KeyCode: {}, 17 | }; 18 | -------------------------------------------------------------------------------- /mock/styleMock.js: -------------------------------------------------------------------------------- 1 | module.exports = {}; 2 | -------------------------------------------------------------------------------- /src/common/const.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Default App prefix 3 | */ 4 | export const APP_PREFIX = 'mo'; 5 | -------------------------------------------------------------------------------- /src/common/css.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * px = em * parentElementFontSize 3 | * @param em em value 4 | */ 5 | export function em2Px(em: number, fontSize: number): number { 6 | return em * fontSize; 7 | } 8 | 9 | /** 10 | * Apply css content to workbench 11 | * @param styleSheetContent CSS sheet content 12 | * @param rulesClassName Style tag class Name 13 | */ 14 | export function applyStyleSheetRules( 15 | styleSheetContent: string, 16 | rulesClassName: string 17 | ) { 18 | const themeStyles = document.head.getElementsByClassName(rulesClassName); 19 | if (themeStyles.length === 0) { 20 | const elStyle = document.createElement('style'); 21 | elStyle.type = 'text/css'; 22 | elStyle.className = rulesClassName; 23 | elStyle.innerHTML = styleSheetContent; 24 | document.head.appendChild(elStyle); 25 | } else { 26 | (themeStyles[0]).innerHTML = styleSheetContent; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/common/error.ts: -------------------------------------------------------------------------------- 1 | export const ErrorMsg = { 2 | LoadExtensionFail: 'Load Extension failed', 3 | NotFoundActivateMethod: 4 | 'Not found activate function, the extension must export an activate function as entry.', 5 | }; 6 | -------------------------------------------------------------------------------- /src/common/event/__tests__/eventBus.test.ts: -------------------------------------------------------------------------------- 1 | import { GlobalEvent } from '../index'; 2 | 3 | class Test extends GlobalEvent {} 4 | 5 | describe('Test the event class', () => { 6 | const event = new Test(); 7 | const ID_TEST = 'test'; 8 | const mockFn = jest.fn(); 9 | 10 | test('Count the subscribed events', () => { 11 | expect(event.count(ID_TEST)).toBe(0); 12 | }); 13 | 14 | test('Subscribe the event', () => { 15 | event.subscribe(ID_TEST, mockFn); 16 | expect(event.count(ID_TEST)).toBe(1); 17 | event.subscribe(ID_TEST, mockFn); 18 | expect(event.count(ID_TEST)).toBe(2); 19 | }); 20 | 21 | test('Emit the event', () => { 22 | event.emit(ID_TEST, 'test'); 23 | expect(mockFn).toBeCalledTimes(2); 24 | expect(mockFn.mock.calls[0][0]).toEqual('test'); 25 | }); 26 | 27 | test('Unsubscribe the event', () => { 28 | event.unsubscribe(ID_TEST); 29 | expect(event.count(ID_TEST)).toBe(0); 30 | }); 31 | }); 32 | -------------------------------------------------------------------------------- /src/common/event/index.ts: -------------------------------------------------------------------------------- 1 | export * from './decorator'; 2 | export * from './eventBus'; 3 | export * from './eventEmitter'; 4 | -------------------------------------------------------------------------------- /src/common/id.ts: -------------------------------------------------------------------------------- 1 | export const ID_APP = 'molecule'; 2 | export const ID_ACTIVITY_BAR = 'activityBar'; 3 | export const ID_MENU_BAR = 'menuBar'; 4 | export const ID_SIDE_BAR = 'sidebar'; 5 | export const ID_EXPLORER = 'explorer'; 6 | export const ID_STATUS_BAR = 'statusBar'; 7 | export const ID_FOLDER_TREE = 'folderTree'; 8 | export const ID_EDITOR_TREE = 'editorTree'; 9 | -------------------------------------------------------------------------------- /src/common/keyCodes.ts: -------------------------------------------------------------------------------- 1 | export enum KeyCodes { 2 | ENTER = 'Enter', 3 | } 4 | -------------------------------------------------------------------------------- /src/common/logger.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | info(...args) { 3 | // The blow codes just for development 4 | if (__DEVELOPMENT__) { 5 | console.group(`Logger.info:`, ...args); 6 | console.groupEnd(); 7 | } 8 | }, 9 | 10 | error(...args) { 11 | console.error(...args); 12 | }, 13 | 14 | warn(...args) { 15 | console.warn(...args); 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /src/common/types.ts: -------------------------------------------------------------------------------- 1 | export interface HTMLElementProps { 2 | title?: string; 3 | style?: React.CSSProperties; 4 | className?: string; 5 | role?: string; 6 | } 7 | 8 | export type UniqueId = string | number; 9 | -------------------------------------------------------------------------------- /src/components/README.md: -------------------------------------------------------------------------------- 1 | # Atomic React.js components 2 | 3 | ## Basic component 4 | 5 | - actionbar 6 | - button 7 | - collapse 8 | - contextview 9 | - dialog 10 | - dropdown 11 | - list 12 | - menu 13 | - scrollbar 14 | - tabs 15 | - toolbar 16 | - tree 17 | - form 18 | - input 19 | - select 20 | -------------------------------------------------------------------------------- /src/components/actionBar/__tests__/__snapshots__/actionBar.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Test ActionBar Component The ActionBar snapshot 1`] = ` 4 |
7 |
    10 |
  • 16 | 21 |
  • 22 |
23 |
24 | `; 25 | -------------------------------------------------------------------------------- /src/components/breadcrumb/__tests__/__snapshots__/breadcrumb.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Test Breadcrumb Component Should render Breadcrumb multiply levels 1`] = ` 4 |
7 | 13 | 16 | name0 17 | 18 | 21 | 22 | 28 | 31 | name1 32 | 33 | 36 | 37 | 43 | 46 | name2 47 | 48 | 49 |
50 | `; 51 | -------------------------------------------------------------------------------- /src/components/breadcrumb/base.ts: -------------------------------------------------------------------------------- 1 | import { prefixClaName, getBEMElement } from 'mo/common/className'; 2 | 3 | export const defaultBreadcrumbClassName = prefixClaName('breadcrumb'); 4 | export const breadcrumbItemClassName = getBEMElement( 5 | defaultBreadcrumbClassName, 6 | 'item' 7 | ); 8 | export const breadcrumbLabelClassName = getBEMElement( 9 | defaultBreadcrumbClassName, 10 | 'label' 11 | ); 12 | -------------------------------------------------------------------------------- /src/components/breadcrumb/style.scss: -------------------------------------------------------------------------------- 1 | @import 'mo/style/common'; 2 | 3 | #{$breadcrumb} { 4 | display: flex; 5 | overflow: auto; 6 | white-space: nowrap; 7 | 8 | &__item { 9 | align-items: center; 10 | background-color: var(--breadcrumb-background); 11 | color: var(--breadcrumb-foreground); 12 | cursor: pointer; 13 | display: flex; 14 | justify-content: left; 15 | text-decoration: none; 16 | 17 | &:focus { 18 | color: var(--breadcrumb-focusForeground); 19 | outline: 1px solid var(--list-focusOutline); 20 | outline-offset: -1px; 21 | } 22 | 23 | &:hover { 24 | opacity: 0.8; 25 | } 26 | } 27 | 28 | &__label { 29 | align-items: center; 30 | background-position: center center; 31 | background-repeat: no-repeat; 32 | background-size: 16px; 33 | display: flex; 34 | height: 100%; 35 | justify-content: center; 36 | text-decoration: none; 37 | width: 100%; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/components/button/__tests__/__snapshots__/button.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Test Button Component The Button Snapshot 1`] = ` 4 |