ydb-embedded-ui 14.3.1 → 14.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/components/AutoRefreshControl/i18n/index.d.ts +1 -1
  2. package/dist/components/DoughnutMetrics/utils.d.ts +1 -1
  3. package/dist/components/DoughnutMetrics/utils.js +1 -1
  4. package/dist/components/DoughnutMetrics/utils.js.map +1 -1
  5. package/dist/components/NodeHostWrapper/NodeHostWrapper.d.ts +1 -1
  6. package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
  7. package/dist/components/QueryResultTable/QueryResultTable.js +7 -1
  8. package/dist/components/QueryResultTable/QueryResultTable.js.map +1 -1
  9. package/dist/components/StorageGroupInfo/i18n/index.d.ts +1 -1
  10. package/dist/components/TenantNameWrapper/TenantNameWrapper.js +3 -3
  11. package/dist/components/TenantNameWrapper/TenantNameWrapper.js.map +1 -1
  12. package/dist/components/TenantNameWrapper/TenantNameWrapper.scss +8 -6
  13. package/dist/components/UptimeViewer/UptimeViewer.d.ts +2 -2
  14. package/dist/components/nodesColumns/i18n/index.d.ts +1 -1
  15. package/dist/containers/App/App.scss +1 -1
  16. package/dist/containers/Cluster/ClusterOverview/shared.d.ts +1 -0
  17. package/dist/containers/Cluster/ClusterOverview/utils.d.ts +1 -1
  18. package/dist/containers/Cluster/ClusterOverview/utils.js +2 -2
  19. package/dist/containers/Cluster/ClusterOverview/utils.js.map +1 -1
  20. package/dist/containers/Clusters/Clusters.js +3 -0
  21. package/dist/containers/Clusters/Clusters.js.map +1 -1
  22. package/dist/containers/Clusters/constants.d.ts +1 -1
  23. package/dist/containers/HomePage/HomePage.js +1 -1
  24. package/dist/containers/HomePage/HomePage.js.map +1 -1
  25. package/dist/containers/HomePage/useDatabasesPageEnvironment.js +17 -8
  26. package/dist/containers/HomePage/useDatabasesPageEnvironment.js.map +1 -1
  27. package/dist/containers/Node/Threads/ThreadStatesBar/ThreadStatesBar.d.ts +1 -1
  28. package/dist/containers/Node/i18n/index.d.ts +1 -1
  29. package/dist/containers/Nodes/i18n/index.d.ts +1 -1
  30. package/dist/containers/Operations/constants.d.ts +1 -1
  31. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/index.d.ts +1 -1
  32. package/dist/containers/Storage/i18n/index.d.ts +1 -1
  33. package/dist/containers/Storage/useStorageQueryParams.d.ts +2 -2
  34. package/dist/containers/Tablets/i18n/index.d.ts +1 -1
  35. package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/Credentials.d.ts +1 -1
  36. package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/UsageTabCard.js +1 -1
  37. package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/UsageTabCard.js.map +1 -1
  38. package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/UtilizationTabCard.js +1 -1
  39. package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/UtilizationTabCard.js.map +1 -1
  40. package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.d.ts +3 -3
  41. package/dist/containers/Tenant/Query/QueriesHistory/QueriesHistory.d.ts +1 -1
  42. package/dist/containers/Tenant/Query/QueriesHistory/QueriesHistory.js.map +1 -1
  43. package/dist/containers/Tenant/Query/Query.js +1 -1
  44. package/dist/containers/Tenant/Query/Query.js.map +1 -1
  45. package/dist/containers/Tenant/Query/QueryEditor/EditorTabs/EditorTabs.d.ts +1 -0
  46. package/dist/containers/Tenant/Query/QueryEditor/EditorTabs/EditorTabs.js +156 -0
  47. package/dist/containers/Tenant/Query/QueryEditor/EditorTabs/EditorTabs.js.map +1 -0
  48. package/dist/containers/Tenant/Query/QueryEditor/EditorTabs/RenameTabDialog.d.ts +7 -0
  49. package/dist/containers/Tenant/Query/QueryEditor/EditorTabs/RenameTabDialog.js +38 -0
  50. package/dist/containers/Tenant/Query/QueryEditor/EditorTabs/RenameTabDialog.js.map +1 -0
  51. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.d.ts +1 -1
  52. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +18 -11
  53. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js.map +1 -1
  54. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.scss +145 -1
  55. package/dist/containers/Tenant/Query/QueryEditor/{YqlEditor.d.ts → YqlEditor/YqlEditor.d.ts} +1 -1
  56. package/dist/containers/Tenant/Query/QueryEditor/{YqlEditor.js → YqlEditor/YqlEditor.js} +166 -17
  57. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/YqlEditor.js.map +1 -0
  58. package/dist/containers/Tenant/Query/QueryEditor/{keybindings.d.ts → YqlEditor/keybindings.d.ts} +8 -1
  59. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/keybindings.js +21 -0
  60. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/keybindings.js.map +1 -0
  61. package/dist/containers/Tenant/Query/QueryEditor/{helpers.d.ts → hooks/useCodeAssistHelpers.d.ts} +1 -14
  62. package/dist/containers/Tenant/Query/QueryEditor/{helpers.js → hooks/useCodeAssistHelpers.js} +4 -43
  63. package/dist/containers/Tenant/Query/QueryEditor/hooks/useCodeAssistHelpers.js.map +1 -0
  64. package/dist/containers/Tenant/Query/QueryEditor/hooks/useEditorOptions.d.ts +3 -0
  65. package/dist/containers/Tenant/Query/QueryEditor/hooks/useEditorOptions.js +26 -0
  66. package/dist/containers/Tenant/Query/QueryEditor/hooks/useEditorOptions.js.map +1 -0
  67. package/dist/containers/Tenant/Query/QueryEditor/hooks/useQueryTabsActions.d.ts +16 -0
  68. package/dist/containers/Tenant/Query/QueryEditor/hooks/useQueryTabsActions.js +89 -0
  69. package/dist/containers/Tenant/Query/QueryEditor/hooks/useQueryTabsActions.js.map +1 -0
  70. package/dist/containers/Tenant/Query/QueryEditor/utils/queryExecutionManager.d.ts +12 -0
  71. package/dist/containers/Tenant/Query/QueryEditor/utils/queryExecutionManager.js +29 -0
  72. package/dist/containers/Tenant/Query/QueryEditor/utils/queryExecutionManager.js.map +1 -0
  73. package/dist/containers/Tenant/Query/QueryEditor/utils/tabsManager.d.ts +17 -0
  74. package/dist/containers/Tenant/Query/QueryEditor/utils/tabsManager.js +71 -0
  75. package/dist/containers/Tenant/Query/QueryEditor/utils/tabsManager.js.map +1 -0
  76. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js +5 -4
  77. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js.map +1 -1
  78. package/dist/containers/Tenant/Query/SaveQuery/SaveQuery.d.ts +2 -1
  79. package/dist/containers/Tenant/Query/SaveQuery/SaveQuery.js +21 -8
  80. package/dist/containers/Tenant/Query/SaveQuery/SaveQuery.js.map +1 -1
  81. package/dist/containers/Tenant/Query/i18n/en.json +20 -0
  82. package/dist/containers/Tenant/Query/i18n/index.d.ts +1 -1
  83. package/dist/containers/Tenant/Query/utils/useSavedQueries.js +2 -1
  84. package/dist/containers/Tenant/Query/utils/useSavedQueries.js.map +1 -1
  85. package/dist/containers/Tenants/TenantsTable.js +1 -0
  86. package/dist/containers/Tenants/TenantsTable.js.map +1 -1
  87. package/dist/containers/VDiskPage/i18n/index.d.ts +1 -1
  88. package/dist/routes.d.ts +1 -1
  89. package/dist/routes.js +1 -1
  90. package/dist/routes.js.map +1 -1
  91. package/dist/store/configureStore.d.ts +8 -8
  92. package/dist/store/defaultStore.d.ts +4 -4
  93. package/dist/store/getUrlData.js +7 -0
  94. package/dist/store/getUrlData.js.map +1 -1
  95. package/dist/store/reducers/capabilities/capabilities.d.ts +16 -16
  96. package/dist/store/reducers/cluster/__test__/parseFields.test.js +5 -0
  97. package/dist/store/reducers/cluster/__test__/parseFields.test.js.map +1 -1
  98. package/dist/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +24 -24
  99. package/dist/store/reducers/index.d.ts +5 -5
  100. package/dist/store/reducers/nodesList.d.ts +6 -6
  101. package/dist/store/reducers/query/__test__/SessionStorageMigration.test.d.ts +1 -0
  102. package/dist/store/reducers/query/__test__/SessionStorageMigration.test.js +35 -0
  103. package/dist/store/reducers/query/__test__/SessionStorageMigration.test.js.map +1 -0
  104. package/dist/store/reducers/query/__test__/tabPersistence.test.js +12 -1
  105. package/dist/store/reducers/query/__test__/tabPersistence.test.js.map +1 -1
  106. package/dist/store/reducers/query/__test__/utils.test.js +85 -1
  107. package/dist/store/reducers/query/__test__/utils.test.js.map +1 -1
  108. package/dist/store/reducers/query/api.d.ts +22 -0
  109. package/dist/store/reducers/query/api.js +252 -0
  110. package/dist/store/reducers/query/api.js.map +1 -0
  111. package/dist/store/reducers/query/{useQueriesHistory.d.ts → hooks/useQueriesHistory.d.ts} +1 -1
  112. package/dist/store/reducers/query/{useQueriesHistory.js → hooks/useQueriesHistory.js} +4 -4
  113. package/dist/store/reducers/query/hooks/useQueriesHistory.js.map +1 -0
  114. package/dist/store/reducers/query/hooks.d.ts +1 -0
  115. package/dist/store/reducers/query/hooks.js +2 -0
  116. package/dist/store/reducers/query/hooks.js.map +1 -0
  117. package/dist/store/reducers/query/{preparePlanData.d.ts → parsers/preparePlanData.d.ts} +2 -2
  118. package/dist/store/reducers/query/{preparePlanData.js → parsers/preparePlanData.js} +2 -2
  119. package/dist/store/reducers/query/parsers/preparePlanData.js.map +1 -0
  120. package/dist/store/reducers/query/{prepareQueryData.d.ts → parsers/prepareQueryData.d.ts} +2 -2
  121. package/dist/store/reducers/query/{prepareQueryData.js → parsers/prepareQueryData.js} +1 -1
  122. package/dist/store/reducers/query/parsers/prepareQueryData.js.map +1 -0
  123. package/dist/store/reducers/query/query.d.ts +3 -107
  124. package/dist/store/reducers/query/query.js +3 -300
  125. package/dist/store/reducers/query/query.js.map +1 -1
  126. package/dist/store/reducers/query/slice.d.ts +134 -0
  127. package/dist/store/reducers/query/slice.js +309 -0
  128. package/dist/store/reducers/query/slice.js.map +1 -0
  129. package/dist/store/reducers/query/streaming/reducers.d.ts +15 -0
  130. package/dist/store/reducers/query/{streamingReducers.js → streaming/reducers.js} +33 -37
  131. package/dist/store/reducers/query/streaming/reducers.js.map +1 -0
  132. package/dist/store/reducers/query/types.d.ts +17 -2
  133. package/dist/store/reducers/query/utils.d.ts +16 -0
  134. package/dist/store/reducers/query/utils.js +36 -0
  135. package/dist/store/reducers/query/utils.js.map +1 -1
  136. package/dist/store/reducers/schema/schema.d.ts +6 -6
  137. package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +12 -12
  138. package/dist/store/reducers/settings/constants.d.ts +1 -1
  139. package/dist/store/reducers/settings/constants.js +1 -1
  140. package/dist/store/reducers/settings/constants.js.map +1 -1
  141. package/dist/store/reducers/settings/utils.d.ts +2 -2
  142. package/dist/store/reducers/topic.d.ts +18 -18
  143. package/dist/uiFactory/types.d.ts +1 -0
  144. package/dist/uiFactory/uiFactory.js +1 -0
  145. package/dist/uiFactory/uiFactory.js.map +1 -1
  146. package/dist/utils/hooks/useLastQueryExecutionSettings.d.ts +2 -2
  147. package/dist/utils/hooks/useQueryExecutionSettings.d.ts +1 -1
  148. package/dist/utils/hooks/useSelectedColumns.js +14 -9
  149. package/dist/utils/hooks/useSelectedColumns.js.map +1 -1
  150. package/dist/utils/query.d.ts +4 -4
  151. package/dist/utils/query.js +3 -2
  152. package/dist/utils/query.js.map +1 -1
  153. package/package.json +1 -1
  154. package/dist/containers/Tenant/Query/QueryEditor/YqlEditor.js.map +0 -1
  155. package/dist/containers/Tenant/Query/QueryEditor/helpers.js.map +0 -1
  156. package/dist/containers/Tenant/Query/QueryEditor/keybindings.js +0 -13
  157. package/dist/containers/Tenant/Query/QueryEditor/keybindings.js.map +0 -1
  158. package/dist/store/reducers/query/preparePlanData.js.map +0 -1
  159. package/dist/store/reducers/query/prepareQueryData.js.map +0 -1
  160. package/dist/store/reducers/query/streamingReducers.d.ts +0 -6
  161. package/dist/store/reducers/query/streamingReducers.js.map +0 -1
  162. package/dist/store/reducers/query/useQueriesHistory.js.map +0 -1
@@ -3,25 +3,70 @@ import React from 'react';
3
3
  import NiceModal from '@ebay/nice-modal-react';
4
4
  import { createMonacoGhostInstance } from '@ydb-platform/monaco-ghost';
5
5
  import throttle from 'lodash/throttle';
6
- import { MonacoEditor } from '../../../../components/MonacoEditor/MonacoEditor';
7
- import { selectUserInput, setIsDirty } from '../../../../store/reducers/query/query';
8
- import { SETTING_KEYS } from '../../../../store/reducers/settings/constants';
9
- import { useEventHandler, useSetting, useTypedDispatch, useTypedSelector, } from '../../../../utils/hooks';
10
- import { YQL_LANGUAGE_ID } from '../../../../utils/monaco/constats';
11
- import { useUpdateErrorsHighlighting } from '../../../../utils/monaco/highlightErrors';
12
- import { QUERY_ACTIONS } from '../../../../utils/query';
13
- import { SAVE_QUERY_DIALOG } from '../SaveQuery/SaveQuery';
14
- import i18n from '../i18n';
15
- import { useCodeAssistHelpers, useEditorOptions } from './helpers';
6
+ import { MonacoEditor } from '../../../../../components/MonacoEditor/MonacoEditor';
7
+ import { closeQueryTab, renameQueryTab, selectActiveTab, selectUserInput, setIsDirty, } from '../../../../../store/reducers/query/query';
8
+ import { SETTING_KEYS } from '../../../../../store/reducers/settings/constants';
9
+ import { uiFactory } from '../../../../../uiFactory/uiFactory';
10
+ import { useEventHandler, useSetting, useTypedDispatch, useTypedSelector, } from '../../../../../utils/hooks';
11
+ import { YQL_LANGUAGE_ID } from '../../../../../utils/monaco/constats';
12
+ import { useUpdateErrorsHighlighting } from '../../../../../utils/monaco/highlightErrors';
13
+ import { QUERY_ACTIONS } from '../../../../../utils/query';
14
+ import { SAVE_QUERY_DIALOG } from '../../SaveQuery/SaveQuery';
15
+ import i18n from '../../i18n';
16
+ import { useSavedQueries } from '../../utils/useSavedQueries';
17
+ import { RENAME_TAB_DIALOG } from '../EditorTabs/RenameTabDialog';
18
+ import { useCodeAssistHelpers } from '../hooks/useCodeAssistHelpers';
19
+ import { useEditorOptions } from '../hooks/useEditorOptions';
20
+ import { useQueryTabsActions } from '../hooks/useQueryTabsActions';
21
+ import { queryExecutionManagerInstance } from '../utils/queryExecutionManager';
22
+ import { TabsManager } from '../utils/tabsManager';
16
23
  import { getKeyBindings } from './keybindings';
17
24
  const CONTEXT_MENU_GROUP_ID = 'navigation';
25
+ function isRecord(value) {
26
+ return typeof value === 'object' && value !== null;
27
+ }
28
+ function isSnippetController(value) {
29
+ if (!isRecord(value)) {
30
+ return false;
31
+ }
32
+ return typeof value.insert === 'function';
33
+ }
18
34
  export function YqlEditor({ changeUserInput, theme, handleSendExecuteClick, handleGetExplainQueryClick, historyQueries, goToPreviousQuery, goToNextQuery, }) {
19
35
  const input = useTypedSelector(selectUserInput);
36
+ const activeTab = useTypedSelector(selectActiveTab);
37
+ const { savedQueries, saveQuery } = useSavedQueries();
38
+ const { activeTabId, tabsOrder, handleNewTabClick, handleCloseActiveTab, handleNextTab, handlePreviousTab, } = useQueryTabsActions();
20
39
  const dispatch = useTypedDispatch();
21
40
  const [monacoGhostInstance, setMonacoGhostInstance] = React.useState();
22
41
  const [isCodeAssistEnabled] = useSetting(SETTING_KEYS.ENABLE_CODE_ASSISTANT);
23
42
  const editorOptions = useEditorOptions();
24
43
  const updateErrorsHighlighting = useUpdateErrorsHighlighting();
44
+ const editorRef = React.useRef(null);
45
+ const monacoRef = React.useRef(null);
46
+ const tabsManagerRef = React.useRef(new TabsManager());
47
+ const isMultiTabQueryEditorEnabled = Boolean(uiFactory.enableMultiTabQueryEditor);
48
+ React.useEffect(() => {
49
+ if (!isMultiTabQueryEditorEnabled) {
50
+ return;
51
+ }
52
+ const editor = editorRef.current;
53
+ const monaco = monacoRef.current;
54
+ if (!editor || !monaco) {
55
+ return;
56
+ }
57
+ tabsManagerRef.current.setActiveTabModel({
58
+ tabId: activeTabId,
59
+ nextValue: input,
60
+ editor,
61
+ monaco,
62
+ });
63
+ }, [activeTabId, input, isMultiTabQueryEditorEnabled]);
64
+ React.useEffect(() => {
65
+ if (!isMultiTabQueryEditorEnabled) {
66
+ return;
67
+ }
68
+ tabsManagerRef.current.disposeRemovedTabs(tabsOrder);
69
+ }, [isMultiTabQueryEditorEnabled, tabsOrder]);
25
70
  const [lastUsedQueryAction] = useSetting(SETTING_KEYS.LAST_USED_QUERY_ACTION);
26
71
  const getLastQueryText = useEventHandler(() => {
27
72
  if (!historyQueries || historyQueries.length === 0) {
@@ -37,8 +82,53 @@ export function YqlEditor({ changeUserInput, theme, handleSendExecuteClick, hand
37
82
  handleSendExecuteClick(input);
38
83
  }
39
84
  });
85
+ const handleNewTabAction = useEventHandler(() => {
86
+ handleNewTabClick();
87
+ });
88
+ const handleCloseActiveTabAction = useEventHandler(() => {
89
+ handleCloseActiveTab();
90
+ });
91
+ const handleNextTabAction = useEventHandler(() => {
92
+ handleNextTab();
93
+ });
94
+ const handlePreviousTabAction = useEventHandler(() => {
95
+ handlePreviousTab();
96
+ });
97
+ const closeTabById = React.useCallback((tabId) => {
98
+ queryExecutionManagerInstance.abortQuery(tabId);
99
+ dispatch(closeQueryTab({ tabId }));
100
+ }, [dispatch]);
101
+ const handleCloseOtherTabsAction = useEventHandler(() => {
102
+ tabsOrder.filter((tabId) => tabId !== activeTabId).forEach(closeTabById);
103
+ });
104
+ const handleCloseAllTabsAction = useEventHandler(() => {
105
+ tabsOrder.forEach(closeTabById);
106
+ });
107
+ const handleRenameTabAction = useEventHandler(() => {
108
+ const tabIdToRename = activeTabId;
109
+ NiceModal.show(RENAME_TAB_DIALOG, {
110
+ title: (activeTab === null || activeTab === void 0 ? void 0 : activeTab.title) || '',
111
+ onRename: (title) => {
112
+ dispatch(renameQueryTab({ tabId: tabIdToRename, title }));
113
+ },
114
+ });
115
+ });
116
+ const handleSaveQueryAsAction = useEventHandler(() => {
117
+ const commonModalProps = { savedQueries, onSaveQuery: saveQuery };
118
+ if (activeTab === null || activeTab === void 0 ? void 0 : activeTab.isTitleUserDefined) {
119
+ NiceModal.show(SAVE_QUERY_DIALOG, {
120
+ ...commonModalProps,
121
+ defaultQueryName: activeTab.title,
122
+ });
123
+ return;
124
+ }
125
+ NiceModal.show(SAVE_QUERY_DIALOG, commonModalProps);
126
+ });
40
127
  const editorWillUnmount = () => {
41
128
  window.ydbEditor = undefined;
129
+ tabsManagerRef.current.disposeAll();
130
+ editorRef.current = null;
131
+ monacoRef.current = null;
42
132
  };
43
133
  const { monacoGhostConfig, prepareUserQueriesCache } = useCodeAssistHelpers(historyQueries);
44
134
  React.useEffect(() => {
@@ -52,14 +142,24 @@ export function YqlEditor({ changeUserInput, theme, handleSendExecuteClick, hand
52
142
  }, [isCodeAssistEnabled, monacoGhostConfig, monacoGhostInstance, prepareUserQueriesCache]);
53
143
  const editorDidMount = (editor, monaco) => {
54
144
  window.ydbEditor = editor;
145
+ editorRef.current = editor;
146
+ monacoRef.current = monaco;
147
+ if (isMultiTabQueryEditorEnabled) {
148
+ tabsManagerRef.current.setActiveTabModel({
149
+ tabId: activeTabId,
150
+ nextValue: input,
151
+ editor,
152
+ monaco,
153
+ });
154
+ }
55
155
  const keybindings = getKeyBindings(monaco);
56
- monaco.editor.registerCommand('insertSnippetToEditor', (_asessor, input) => {
156
+ monaco.editor.registerCommand('insertSnippetToEditor', (_asessor, snippet) => {
57
157
  //suggestController is not properly typed yet in monaco-editor package
58
158
  const contribution = editor.getContribution('snippetController2');
59
- if (contribution) {
159
+ if (isSnippetController(contribution)) {
60
160
  editor.focus();
61
161
  editor.setValue('');
62
- contribution.insert(input);
162
+ contribution.insert(snippet);
63
163
  dispatch(setIsDirty(false));
64
164
  }
65
165
  });
@@ -133,9 +233,7 @@ export function YqlEditor({ changeUserInput, theme, handleSendExecuteClick, hand
133
233
  id: 'save-query',
134
234
  label: i18n('action.save-query'),
135
235
  keybindings: [keybindings.saveQuery],
136
- run: () => {
137
- NiceModal.show(SAVE_QUERY_DIALOG);
138
- },
236
+ run: () => handleSaveQueryAsAction(),
139
237
  });
140
238
  editor.addAction({
141
239
  id: 'openKeyboardShortcutsPanel',
@@ -149,6 +247,56 @@ export function YqlEditor({ changeUserInput, theme, handleSendExecuteClick, hand
149
247
  window.dispatchEvent(event);
150
248
  },
151
249
  });
250
+ if (isMultiTabQueryEditorEnabled) {
251
+ editor.addAction({
252
+ id: 'newEditorTab',
253
+ label: i18n('editor-tabs.action.new-tab'),
254
+ keybindings: [keybindings.newTab],
255
+ run: () => handleNewTabAction(),
256
+ });
257
+ editor.addAction({
258
+ id: 'closeEditorTab',
259
+ label: i18n('editor-tabs.action.close-tab'),
260
+ keybindings: [keybindings.closeTab],
261
+ run: () => handleCloseActiveTabAction(),
262
+ });
263
+ editor.addAction({
264
+ id: 'renameEditorTab',
265
+ label: i18n('editor-tabs.rename'),
266
+ keybindings: [keybindings.renameTab],
267
+ run: () => handleRenameTabAction(),
268
+ });
269
+ editor.addAction({
270
+ id: 'nextEditorTab',
271
+ label: i18n('editor-tabs.action.next-tab'),
272
+ keybindings: [keybindings.nextTab],
273
+ run: () => handleNextTabAction(),
274
+ });
275
+ editor.addAction({
276
+ id: 'previousEditorTab',
277
+ label: i18n('editor-tabs.action.previous-tab'),
278
+ keybindings: [keybindings.previousTab],
279
+ run: () => handlePreviousTabAction(),
280
+ });
281
+ editor.addAction({
282
+ id: 'closeOtherEditorTabs',
283
+ label: i18n('editor-tabs.close-other-tabs'),
284
+ keybindings: [keybindings.closeOtherTabs],
285
+ run: () => handleCloseOtherTabsAction(),
286
+ });
287
+ editor.addAction({
288
+ id: 'closeAllEditorTabs',
289
+ label: i18n('editor-tabs.close-all-tabs'),
290
+ keybindings: [keybindings.closeAllTabs],
291
+ run: () => handleCloseAllTabsAction(),
292
+ });
293
+ editor.addAction({
294
+ id: 'saveQueryAs',
295
+ label: i18n('editor-tabs.save-query-as'),
296
+ keybindings: [keybindings.saveQueryAs],
297
+ run: () => handleSaveQueryAsAction(),
298
+ });
299
+ }
152
300
  };
153
301
  const onChange = (newValue) => {
154
302
  updateErrorsHighlighting();
@@ -182,7 +330,8 @@ function setUserPrompt(text, initialText) {
182
330
  window.onbeforeunload = (e) => {
183
331
  e.preventDefault();
184
332
  // Chrome requires returnValue to be set
185
- e.returnValue = '';
333
+ const unloadEvent = e;
334
+ unloadEvent.returnValue = '';
186
335
  };
187
336
  }
188
337
  else {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YqlEditor.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/YqlEditor/YqlEditor.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,13 @@ export declare function getKeyBindings(monaco: typeof Monaco): {
3
3
  sendQuery: number;
4
4
  sendSelectedQuery: number;
5
5
  saveQuery: number;
6
- saveSelectedQuery: number;
6
+ saveQueryAs: number;
7
7
  shortcutsHotkey: number;
8
+ newTab: number;
9
+ renameTab: number;
10
+ closeTab: number;
11
+ closeOtherTabs: number;
12
+ closeAllTabs: number;
13
+ nextTab: number;
14
+ previousTab: number;
8
15
  };
@@ -0,0 +1,21 @@
1
+ export function getKeyBindings(monaco) {
2
+ const { KeyMod, KeyCode } = monaco;
3
+ const ctrlKey = KeyMod.CtrlCmd;
4
+ const altKey = KeyMod.Alt;
5
+ /* eslint-disable no-bitwise */
6
+ return {
7
+ sendQuery: ctrlKey | KeyCode.Enter,
8
+ sendSelectedQuery: ctrlKey | KeyMod.Shift | monaco.KeyCode.Enter,
9
+ saveQuery: ctrlKey | KeyCode.KeyS,
10
+ saveQueryAs: ctrlKey | KeyMod.Shift | KeyCode.KeyS,
11
+ shortcutsHotkey: ctrlKey | KeyCode.KeyK,
12
+ newTab: ctrlKey | altKey | KeyCode.KeyT,
13
+ renameTab: ctrlKey | KeyCode.KeyT,
14
+ closeTab: ctrlKey | KeyCode.Backspace,
15
+ closeOtherTabs: ctrlKey | KeyMod.Shift | KeyCode.Backspace,
16
+ closeAllTabs: ctrlKey | altKey | KeyCode.Backspace,
17
+ nextTab: ctrlKey | altKey | KeyCode.RightArrow,
18
+ previousTab: ctrlKey | altKey | KeyCode.LeftArrow,
19
+ };
20
+ }
21
+ //# sourceMappingURL=keybindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keybindings.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/YqlEditor/keybindings.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,MAAqB;IAChD,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,MAAM,CAAC;IAEjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;IAE1B,+BAA+B;IAC/B,OAAO;QACH,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK;QAClC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK;QAChE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI;QACjC,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI;QAClD,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI;QACvC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI;QACvC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI;QACjC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS;QACrC,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS;QAC1D,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS;QAClD,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU;QAC9C,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS;KACpD,CAAC;AACN,CAAC"}
@@ -1,8 +1,5 @@
1
1
  import type { AcceptEvent, DeclineEvent, IgnoreEvent, PromptFile } from '@ydb-platform/monaco-ghost';
2
- import type Monaco from 'monaco-editor';
3
- import type { QueryInHistory } from '../../../../store/reducers/query/types';
4
- export type EditorOptions = Monaco.editor.IEditorOptions & Monaco.editor.IGlobalEditorOptions;
5
- export declare function useEditorOptions(): EditorOptions;
2
+ import type { QueryInHistory } from '../../../../../store/reducers/query/types';
6
3
  export declare function useCodeAssistHelpers(historyQueries: QueryInHistory[]): {
7
4
  prepareUserQueriesCache: () => Promise<any>;
8
5
  monacoGhostConfig: {
@@ -19,13 +16,3 @@ export declare function useCodeAssistHelpers(historyQueries: QueryInHistory[]):
19
16
  };
20
17
  };
21
18
  };
22
- declare class QueryManager {
23
- private query;
24
- constructor();
25
- registerQuery(query: {
26
- abort: VoidFunction;
27
- }): void;
28
- abortQuery(): void;
29
- }
30
- export declare const queryManagerInstance: QueryManager;
31
- export {};
@@ -1,31 +1,7 @@
1
1
  import React from 'react';
2
- import { codeAssistApi } from '../../../../store/reducers/codeAssist/codeAssist';
3
- import { SETTING_KEYS } from '../../../../store/reducers/settings/constants';
4
- import { useSetting } from '../../../../utils/hooks';
5
- import { YQL_LANGUAGE_ID } from '../../../../utils/monaco/constats';
6
- import { useSavedQueries } from '../utils/useSavedQueries';
7
- const EDITOR_OPTIONS = {
8
- automaticLayout: true,
9
- selectOnLineNumbers: true,
10
- minimap: {
11
- enabled: false,
12
- },
13
- fixedOverflowWidgets: true,
14
- };
15
- export function useEditorOptions() {
16
- const [enableAutocomplete] = useSetting(SETTING_KEYS.ENABLE_AUTOCOMPLETE);
17
- const [autocompleteOnEnter] = useSetting(SETTING_KEYS.AUTOCOMPLETE_ON_ENTER);
18
- const options = React.useMemo(() => {
19
- const useAutocomplete = Boolean(enableAutocomplete);
20
- return {
21
- quickSuggestions: useAutocomplete,
22
- suggestOnTriggerCharacters: useAutocomplete,
23
- acceptSuggestionOnEnter: autocompleteOnEnter ? 'on' : 'off',
24
- ...EDITOR_OPTIONS,
25
- };
26
- }, [enableAutocomplete, autocompleteOnEnter]);
27
- return options;
28
- }
2
+ import { codeAssistApi } from '../../../../../store/reducers/codeAssist/codeAssist';
3
+ import { YQL_LANGUAGE_ID } from '../../../../../utils/monaco/constats';
4
+ import { useSavedQueries } from '../../utils/useSavedQueries';
29
5
  export function useCodeAssistHelpers(historyQueries) {
30
6
  const [sendCodeAssistPrompt] = codeAssistApi.useLazyGetCodeAssistSuggestionsQuery();
31
7
  const [acceptSuggestion] = codeAssistApi.useAcceptSuggestionMutation();
@@ -81,19 +57,4 @@ export function useCodeAssistHelpers(historyQueries) {
81
57
  monacoGhostConfig,
82
58
  };
83
59
  }
84
- class QueryManager {
85
- constructor() {
86
- this.query = null;
87
- }
88
- registerQuery(query) {
89
- this.query = query;
90
- }
91
- abortQuery() {
92
- if (this.query) {
93
- this.query.abort();
94
- this.query = null;
95
- }
96
- }
97
- }
98
- export const queryManagerInstance = new QueryManager();
99
- //# sourceMappingURL=helpers.js.map
60
+ //# sourceMappingURL=useCodeAssistHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCodeAssistHelpers.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/hooks/useCodeAssistHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type Monaco from 'monaco-editor';
2
+ export type EditorOptions = Monaco.editor.IEditorOptions & Monaco.editor.IGlobalEditorOptions;
3
+ export declare function useEditorOptions(): EditorOptions;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { SETTING_KEYS } from '../../../../../store/reducers/settings/constants';
3
+ import { useSetting } from '../../../../../utils/hooks';
4
+ const EDITOR_OPTIONS = {
5
+ automaticLayout: true,
6
+ selectOnLineNumbers: true,
7
+ minimap: {
8
+ enabled: false,
9
+ },
10
+ fixedOverflowWidgets: true,
11
+ };
12
+ export function useEditorOptions() {
13
+ const [enableAutocomplete] = useSetting(SETTING_KEYS.ENABLE_AUTOCOMPLETE);
14
+ const [autocompleteOnEnter] = useSetting(SETTING_KEYS.AUTOCOMPLETE_ON_ENTER);
15
+ const options = React.useMemo(() => {
16
+ const useAutocomplete = Boolean(enableAutocomplete);
17
+ return {
18
+ quickSuggestions: useAutocomplete,
19
+ suggestOnTriggerCharacters: useAutocomplete,
20
+ acceptSuggestionOnEnter: autocompleteOnEnter ? 'on' : 'off',
21
+ ...EDITOR_OPTIONS,
22
+ };
23
+ }, [enableAutocomplete, autocompleteOnEnter]);
24
+ return options;
25
+ }
26
+ //# sourceMappingURL=useEditorOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEditorOptions.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/hooks/useEditorOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAC,YAAY,EAAC,MAAM,kDAAkD,CAAC;AAC9E,OAAO,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAItD,MAAM,cAAc,GAAkB;IAClC,eAAe,EAAE,IAAI;IACrB,mBAAmB,EAAE,IAAI;IACzB,OAAO,EAAE;QACL,OAAO,EAAE,KAAK;KACjB;IACD,oBAAoB,EAAE,IAAI;CAC7B,CAAC;AAEF,MAAM,UAAU,gBAAgB;IAC5B,MAAM,CAAC,kBAAkB,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAC1E,MAAM,CAAC,mBAAmB,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAgB,GAAG,EAAE;QAC9C,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACpD,OAAO;YACH,gBAAgB,EAAE,eAAe;YACjC,0BAA0B,EAAE,eAAe;YAC3C,uBAAuB,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;YAC3D,GAAG,cAAc;SACpB,CAAC;IACN,CAAC,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE9C,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare function useQueryTabsActions(): {
2
+ activeTabId: string;
3
+ tabsOrder: string[];
4
+ tabsById: Record<string, import("../../../../../store/reducers/query/types").QueryTabState>;
5
+ handleTabSwitch: (tabId: string) => void;
6
+ handleActivateTab: (tabId: string) => void;
7
+ handleNewTabClick: () => void;
8
+ handleCloseTab: (tabId: string) => void;
9
+ handleCloseActiveTab: () => void;
10
+ handleCloseOtherTabs: (baseTabId: string) => void;
11
+ handleCloseAllTabs: () => void;
12
+ handleDuplicateTab: (baseTabId: string) => void;
13
+ handleRenameTab: (tabId: string, title: string) => void;
14
+ handleNextTab: () => void;
15
+ handlePreviousTab: () => void;
16
+ };
@@ -0,0 +1,89 @@
1
+ import React from 'react';
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ import { addQueryTab, closeQueryTab, renameQueryTab, selectActiveTabId, selectTabsById, selectTabsOrder, setActiveQueryTab, } from '../../../../../store/reducers/query/query';
4
+ import { useTypedDispatch, useTypedSelector } from '../../../../../utils/hooks';
5
+ import i18n from '../../i18n';
6
+ import { queryExecutionManagerInstance } from '../utils/queryExecutionManager';
7
+ export function useQueryTabsActions() {
8
+ const dispatch = useTypedDispatch();
9
+ const activeTabId = useTypedSelector(selectActiveTabId);
10
+ const tabsOrder = useTypedSelector(selectTabsOrder);
11
+ const tabsById = useTypedSelector(selectTabsById);
12
+ const handleTabSwitch = React.useCallback((tabId) => {
13
+ dispatch(setActiveQueryTab({ tabId }));
14
+ }, [dispatch]);
15
+ const handleActivateTab = handleTabSwitch;
16
+ const handleCloseTab = React.useCallback((tabId) => {
17
+ queryExecutionManagerInstance.abortQuery(tabId);
18
+ dispatch(closeQueryTab({ tabId }));
19
+ }, [dispatch]);
20
+ const handleCloseActiveTab = React.useCallback(() => {
21
+ handleCloseTab(activeTabId);
22
+ }, [activeTabId, handleCloseTab]);
23
+ const handleCloseOtherTabs = React.useCallback((baseTabId) => {
24
+ tabsOrder.filter((tabId) => tabId !== baseTabId).forEach(handleCloseTab);
25
+ }, [handleCloseTab, tabsOrder]);
26
+ const handleCloseAllTabs = React.useCallback(() => {
27
+ tabsOrder.forEach(handleCloseTab);
28
+ }, [handleCloseTab, tabsOrder]);
29
+ const handleDuplicateTab = React.useCallback((baseTabId) => {
30
+ const tab = tabsById[baseTabId];
31
+ if (!tab) {
32
+ return;
33
+ }
34
+ const baseTitle = tab.title || i18n('editor-tabs.untitled');
35
+ const tabId = uuidv4();
36
+ dispatch(addQueryTab({
37
+ tabId,
38
+ title: i18n('editor-tabs.duplicate-title', { title: baseTitle }),
39
+ input: tab.input,
40
+ makeActive: true,
41
+ }));
42
+ }, [dispatch, tabsById]);
43
+ const handleRenameTab = React.useCallback((tabId, title) => {
44
+ dispatch(renameQueryTab({ tabId, title }));
45
+ }, [dispatch]);
46
+ const handleNewTabClick = React.useCallback(() => {
47
+ const tabId = uuidv4();
48
+ const nextIndex = tabsOrder.length + 1;
49
+ dispatch(addQueryTab({
50
+ tabId,
51
+ title: i18n('editor-tabs.default-title', { index: nextIndex }),
52
+ }));
53
+ }, [dispatch, tabsOrder.length]);
54
+ const activateAdjacentTab = React.useCallback((direction) => {
55
+ if (!tabsOrder.length || tabsOrder.length === 1) {
56
+ return;
57
+ }
58
+ const currentIndex = tabsOrder.indexOf(activeTabId);
59
+ if (currentIndex === -1) {
60
+ handleTabSwitch(tabsOrder[0]);
61
+ return;
62
+ }
63
+ const nextIndex = (currentIndex + direction + tabsOrder.length) % tabsOrder.length;
64
+ handleTabSwitch(tabsOrder[nextIndex]);
65
+ }, [activeTabId, handleTabSwitch, tabsOrder]);
66
+ const handleNextTab = React.useCallback(() => {
67
+ activateAdjacentTab(1);
68
+ }, [activateAdjacentTab]);
69
+ const handlePreviousTab = React.useCallback(() => {
70
+ activateAdjacentTab(-1);
71
+ }, [activateAdjacentTab]);
72
+ return {
73
+ activeTabId,
74
+ tabsOrder,
75
+ tabsById,
76
+ handleTabSwitch,
77
+ handleActivateTab,
78
+ handleNewTabClick,
79
+ handleCloseTab,
80
+ handleCloseActiveTab,
81
+ handleCloseOtherTabs,
82
+ handleCloseAllTabs,
83
+ handleDuplicateTab,
84
+ handleRenameTab,
85
+ handleNextTab,
86
+ handlePreviousTab,
87
+ };
88
+ }
89
+ //# sourceMappingURL=useQueryTabsActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQueryTabsActions.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/hooks/useQueryTabsActions.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ type AbortablePromiseLike = PromiseLike<unknown> & {
2
+ abort: VoidFunction;
3
+ finally: (onFinally?: (() => void) | null) => PromiseLike<unknown>;
4
+ };
5
+ declare class QueryExecutionManager {
6
+ private readonly queries;
7
+ registerQuery(tabId: string, query: AbortablePromiseLike): void;
8
+ abortQuery(tabId: string): void;
9
+ abortAll(): void;
10
+ }
11
+ export declare const queryExecutionManagerInstance: QueryExecutionManager;
12
+ export {};
@@ -0,0 +1,29 @@
1
+ class QueryExecutionManager {
2
+ constructor() {
3
+ this.queries = new Map();
4
+ }
5
+ registerQuery(tabId, query) {
6
+ this.queries.set(tabId, query);
7
+ const queryRef = query;
8
+ query.finally(() => {
9
+ if (this.queries.get(tabId) === queryRef) {
10
+ this.queries.delete(tabId);
11
+ }
12
+ });
13
+ }
14
+ abortQuery(tabId) {
15
+ const query = this.queries.get(tabId);
16
+ if (query) {
17
+ query.abort();
18
+ this.queries.delete(tabId);
19
+ }
20
+ }
21
+ abortAll() {
22
+ for (const query of this.queries.values()) {
23
+ query.abort();
24
+ }
25
+ this.queries.clear();
26
+ }
27
+ }
28
+ export const queryExecutionManagerInstance = new QueryExecutionManager();
29
+ //# sourceMappingURL=queryExecutionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryExecutionManager.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/utils/queryExecutionManager.ts"],"names":[],"mappings":"AAKA,MAAM,qBAAqB;IAA3B;QACqB,YAAO,GAAG,IAAI,GAAG,EAAiC,CAAC;IA2BxE,CAAC;IAzBG,aAAa,CAAC,KAAa,EAAE,KAA2B;QACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE/B,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;YACf,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,KAAa;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,QAAQ;QACJ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type Monaco from 'monaco-editor';
2
+ type MonacoApi = typeof Monaco;
3
+ export declare class TabsManager {
4
+ private readonly modelsByTabId;
5
+ private readonly viewStatesByTabId;
6
+ private activeTabId;
7
+ setActiveTabModel(params: {
8
+ tabId: string;
9
+ nextValue: string;
10
+ editor: Monaco.editor.IStandaloneCodeEditor;
11
+ monaco: MonacoApi;
12
+ }): void;
13
+ disposeRemovedTabs(tabsOrder: readonly string[]): void;
14
+ disposeAll(): void;
15
+ private getOrCreateModel;
16
+ }
17
+ export {};