@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 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";
@@ -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 executeCommand('Notification.create', type, message);
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)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/api",
3
- "version": "9.16.1",
3
+ "version": "9.17.0",
4
4
  "description": "Tree-shakeable extension API for Lvce Editor extensions.",
5
5
  "keywords": [
6
6
  "lvce-editor",