@lvce-editor/api 9.16.1 → 9.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/parts/Host/Host.js +2 -1
- package/dist/parts/ViewRegistry/ViewRegistry.d.ts +1 -0
- package/dist/parts/ViewRegistry/ViewRegistry.js +8 -0
- package/dist/parts/ViewStatusBarItems/ViewStatusBarItems.d.ts +1 -0
- package/dist/parts/ViewStatusBarItems/ViewStatusBarItems.js +32 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export { getLanguageServerRegistrySnapshot, registerLanguageServer, resetLanguag
|
|
|
25
25
|
export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from './parts/LanguageProvider/LanguageProvider.ts';
|
|
26
26
|
export type { LanguageProvider } from './parts/LanguageProvider/LanguageProvider.ts';
|
|
27
27
|
export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileBeforeUri, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from './parts/SourceControl/SourceControl.ts';
|
|
28
|
-
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, } from './parts/ViewRegistry/ViewRegistry.ts';
|
|
28
|
+
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, setViewInstanceActive, } from './parts/ViewRegistry/ViewRegistry.ts';
|
|
29
29
|
export { createOutputChannel, getOutputChannelLogs, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry, } from './parts/OutputChannel/OutputChannel.ts';
|
|
30
30
|
export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from './parts/StatusBar/StatusBar.ts';
|
|
31
31
|
export type { RegisteredView, View, ViewAction, ViewCommand, ViewContext, ViewEvent, ViewKind, ViewPreferredLocation, MenuEntry, ViewRegistrySnapshot, ViewRenderResult, ViewScrollPosition, ViewSelection, VirtualDomViewInstance, } from './parts/View/View.ts';
|
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ export { openDebugConsole, openOutputView, openProblemsView, } from "./parts/Pan
|
|
|
24
24
|
export { getLanguageServerRegistrySnapshot, registerLanguageServer, resetLanguageServerRegistry } from "./parts/LanguageServer/LanguageServer.js";
|
|
25
25
|
export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from "./parts/LanguageProvider/LanguageProvider.js";
|
|
26
26
|
export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileBeforeUri, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from "./parts/SourceControl/SourceControl.js";
|
|
27
|
-
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, } from "./parts/ViewRegistry/ViewRegistry.js";
|
|
27
|
+
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, setViewInstanceActive, } from "./parts/ViewRegistry/ViewRegistry.js";
|
|
28
28
|
export { createOutputChannel, getOutputChannelLogs, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry, } from "./parts/OutputChannel/OutputChannel.js";
|
|
29
29
|
export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from "./parts/StatusBar/StatusBar.js";
|
|
30
30
|
export { handleExtensionManagementMessagePort } from "./parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.js";
|
package/dist/parts/Host/Host.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ExtensionManagementWorker } from '@lvce-editor/rpc-registry';
|
|
1
2
|
import { executeCommand } from "../ExecuteCommand/ExecuteCommand.js";
|
|
2
3
|
import { getFileSystemProviderPathSeparator } from "../FileSystemProviderRegistry/FileSystemProviderRegistry.js";
|
|
3
4
|
export const closeUri = async (uri) => {
|
|
@@ -22,7 +23,7 @@ export const openUri = async (uri) => {
|
|
|
22
23
|
await executeCommand('Main.openUri', uri);
|
|
23
24
|
};
|
|
24
25
|
export const showNotification = async (type, message) => {
|
|
25
|
-
await
|
|
26
|
+
await ExtensionManagementWorker.invoke('Extensions.showNotification', type, message);
|
|
26
27
|
};
|
|
27
28
|
export const setWorkspaceUri = async (uri) => {
|
|
28
29
|
const protocolEnd = uri.indexOf(':');
|
|
@@ -6,6 +6,7 @@ export declare const executeViewProvider: (id: string) => unknown;
|
|
|
6
6
|
export declare const createViewInstance: (viewId: string, uid: number, context?: ViewContext) => Promise<ViewRenderResult>;
|
|
7
7
|
export declare const dispatchViewEvent: (uid: number, event: ViewEvent) => Promise<ViewRenderResult>;
|
|
8
8
|
export declare const renderViewInstance: (uid: number) => Promise<ViewRenderResult>;
|
|
9
|
+
export declare const setViewInstanceActive: (uid: number, active: boolean) => Promise<void>;
|
|
9
10
|
export declare const disposeViewInstance: (uid: number) => Promise<void>;
|
|
10
11
|
export declare const saveViewInstanceState: (uid: number) => Promise<unknown>;
|
|
11
12
|
export declare const getViewMenuEntries: (uid: number, menuId: string) => Promise<readonly MenuEntry[]>;
|
|
@@ -499,6 +499,13 @@ export const renderViewInstance = async (uid) => {
|
|
|
499
499
|
const contextChange = await maybeNotifyContextChanged(uid, contextViewIds[uid], instance);
|
|
500
500
|
return withRenderMetadata(uid, contextViewIds[uid], result, instance, contextChange);
|
|
501
501
|
};
|
|
502
|
+
export const setViewInstanceActive = async (uid, active) => {
|
|
503
|
+
getVirtualDomInstance(uid);
|
|
504
|
+
if (typeof active !== 'boolean') {
|
|
505
|
+
throw new ExtensionApiError('view instance active state must be a boolean');
|
|
506
|
+
}
|
|
507
|
+
await ViewStatusBarItems.setViewInstanceActive(uid, active);
|
|
508
|
+
};
|
|
502
509
|
export const disposeViewInstance = async (uid) => {
|
|
503
510
|
const instance = instances[uid];
|
|
504
511
|
const viewId = contextViewIds[uid];
|
|
@@ -573,6 +580,7 @@ const commandMap = {
|
|
|
573
580
|
'ExtensionApi.getViewRegistrySnapshot': getViewRegistrySnapshot,
|
|
574
581
|
'ExtensionApi.renderViewInstance': renderViewInstance,
|
|
575
582
|
'ExtensionApi.saveViewInstanceState': saveViewInstanceState,
|
|
583
|
+
'ExtensionApi.setViewInstanceActive': setViewInstanceActive,
|
|
576
584
|
};
|
|
577
585
|
export const resetViewRegistry = () => {
|
|
578
586
|
ViewStatusBarItems.resetViewStatusBarItems();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { VirtualDomViewInstance } from '../View/View.ts';
|
|
2
2
|
export declare const renderViewStatusBarItems: (uid: number, viewId: string, instance: VirtualDomViewInstance) => Promise<void>;
|
|
3
|
+
export declare const setViewInstanceActive: (uid: number, active: boolean) => Promise<void>;
|
|
3
4
|
export declare const disposeViewStatusBarItems: (uid: number) => void;
|
|
4
5
|
export declare const resetViewStatusBarItems: () => void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
2
2
|
import { registerStatusBarItemProvider } from "../StatusBarItemProviderRegistry/StatusBarItemProviderRegistry.js";
|
|
3
3
|
const activeUidByViewId = Object.create(null);
|
|
4
|
+
const explicitActiveStateByUid = Object.create(null);
|
|
4
5
|
const handlesByViewId = Object.create(null);
|
|
5
6
|
const itemsByUid = Object.create(null);
|
|
6
7
|
const renderedUidsByViewId = Object.create(null);
|
|
@@ -87,6 +88,9 @@ export const renderViewStatusBarItems = async (uid, viewId, instance) => {
|
|
|
87
88
|
const wasActive = activeUidByViewId[viewId] === uid;
|
|
88
89
|
itemsByUid[uid] = items;
|
|
89
90
|
viewIdByUid[uid] = viewId;
|
|
91
|
+
if (explicitActiveStateByUid[uid] !== undefined && !explicitActiveStateByUid[uid]) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
90
94
|
setActiveUid(viewId, uid);
|
|
91
95
|
if (wasActive && areItemsEqual(oldItems, items)) {
|
|
92
96
|
return;
|
|
@@ -97,12 +101,39 @@ export const renderViewStatusBarItems = async (uid, viewId, instance) => {
|
|
|
97
101
|
}
|
|
98
102
|
await refreshItems(viewId);
|
|
99
103
|
};
|
|
104
|
+
export const setViewInstanceActive = async (uid, active) => {
|
|
105
|
+
const viewId = viewIdByUid[uid];
|
|
106
|
+
if (!viewId) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
explicitActiveStateByUid[uid] = active;
|
|
110
|
+
if (!active) {
|
|
111
|
+
if (activeUidByViewId[viewId] !== uid) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
disposeHandles(viewId);
|
|
115
|
+
delete activeUidByViewId[viewId];
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const wasActive = activeUidByViewId[viewId] === uid;
|
|
119
|
+
const items = itemsByUid[uid] || [];
|
|
120
|
+
setActiveUid(viewId, uid);
|
|
121
|
+
if (wasActive && (handlesByViewId[viewId]?.length || 0) === items.length) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if ((handlesByViewId[viewId]?.length || 0) !== items.length) {
|
|
125
|
+
replaceItems(viewId, items.length);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
await refreshItems(viewId);
|
|
129
|
+
};
|
|
100
130
|
export const disposeViewStatusBarItems = (uid) => {
|
|
101
131
|
const viewId = viewIdByUid[uid];
|
|
102
132
|
if (!viewId) {
|
|
103
133
|
return;
|
|
104
134
|
}
|
|
105
135
|
delete itemsByUid[uid];
|
|
136
|
+
delete explicitActiveStateByUid[uid];
|
|
106
137
|
delete viewIdByUid[uid];
|
|
107
138
|
const renderedUids = renderedUidsByViewId[viewId] || [];
|
|
108
139
|
const remainingUids = renderedUids.filter((renderedUid) => renderedUid !== uid);
|
|
@@ -131,6 +162,7 @@ export const resetViewStatusBarItems = () => {
|
|
|
131
162
|
}
|
|
132
163
|
for (const uid of Object.keys(itemsByUid)) {
|
|
133
164
|
delete itemsByUid[Number(uid)];
|
|
165
|
+
delete explicitActiveStateByUid[Number(uid)];
|
|
134
166
|
delete viewIdByUid[Number(uid)];
|
|
135
167
|
}
|
|
136
168
|
for (const viewId of Object.keys(activeUidByViewId)) {
|