@lvce-editor/api 8.33.0 → 8.34.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/CommandMap/CommandMap.d.ts +1 -0
- package/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.d.ts +1 -0
- package/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +2 -1
- package/dist/parts/ExtensionApiWorkerCommandMap/ExtensionApiWorkerCommandMap.d.ts +1 -0
- package/dist/parts/View/View.d.ts +5 -0
- package/dist/parts/ViewRegistry/ViewRegistry.d.ts +1 -0
- package/dist/parts/ViewRegistry/ViewRegistry.js +23 -9
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, regis
|
|
|
9
9
|
export { exists, mkdir, readDirWithFileTypes, readFile, remove, writeFile } from './parts/FileSystem/FileSystem.ts';
|
|
10
10
|
export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from './parts/Hover/Hover.ts';
|
|
11
11
|
export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from './parts/SourceControl/SourceControl.ts';
|
|
12
|
-
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, registerView, resetViewRegistry, saveViewInstanceState, } from './parts/ViewRegistry/ViewRegistry.ts';
|
|
12
|
+
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, } from './parts/ViewRegistry/ViewRegistry.ts';
|
|
13
13
|
export { createOutputChannel, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry } from './parts/OutputChannel/OutputChannel.ts';
|
|
14
14
|
export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from './parts/StatusBar/StatusBar.ts';
|
|
15
15
|
export type { RegisteredView, View, ViewContext, ViewEvent, ViewKind, ViewRegistrySnapshot, ViewRenderResult, VirtualDomViewInstance, } from './parts/View/View.ts';
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, regis
|
|
|
9
9
|
export { exists, mkdir, readDirWithFileTypes, readFile, remove, writeFile } from "./parts/FileSystem/FileSystem.js";
|
|
10
10
|
export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from "./parts/Hover/Hover.js";
|
|
11
11
|
export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from "./parts/SourceControl/SourceControl.js";
|
|
12
|
-
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, registerView, resetViewRegistry, saveViewInstanceState, } from "./parts/ViewRegistry/ViewRegistry.js";
|
|
12
|
+
export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, } from "./parts/ViewRegistry/ViewRegistry.js";
|
|
13
13
|
export { createOutputChannel, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry } from "./parts/OutputChannel/OutputChannel.js";
|
|
14
14
|
export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from "./parts/StatusBar/StatusBar.js";
|
|
15
15
|
export { handleExtensionManagementMessagePort } from "./parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.js";
|
|
@@ -29,5 +29,6 @@ export declare const commandMap: {
|
|
|
29
29
|
'ExtensionApi.getSourceControlProviderRegistrySnapshot': () => import("../SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.ts").SourceControlProviderRegistrySnapshot;
|
|
30
30
|
'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
|
|
31
31
|
'ExtensionApi.getViewRegistrySnapshot': () => import("../View/View.ts").ViewRegistrySnapshot;
|
|
32
|
+
'ExtensionApi.renderViewInstance': (uid: number) => Promise<import("../View/View.ts").ViewRenderResult>;
|
|
32
33
|
'ExtensionApi.saveViewInstanceState': (uid: number) => Promise<unknown>;
|
|
33
34
|
};
|
|
@@ -28,5 +28,6 @@ export declare const commandMap: {
|
|
|
28
28
|
'ExtensionApi.getSourceControlProviderRegistrySnapshot': () => import("../SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.ts").SourceControlProviderRegistrySnapshot;
|
|
29
29
|
'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
|
|
30
30
|
'ExtensionApi.getViewRegistrySnapshot': () => import("../View/View.ts").ViewRegistrySnapshot;
|
|
31
|
+
'ExtensionApi.renderViewInstance': (uid: number) => Promise<import("../View/View.ts").ViewRenderResult>;
|
|
31
32
|
'ExtensionApi.saveViewInstanceState': (uid: number) => Promise<unknown>;
|
|
32
33
|
};
|
|
@@ -6,7 +6,7 @@ import { getStatusBarItems } from "../GetStatusBarItems/GetStatusBarItems.js";
|
|
|
6
6
|
import { executeHoverProvider, getHoverProviderRegistrySnapshot } from "../Hover/Hover.js";
|
|
7
7
|
import { getOutputChannelRegistrySnapshot } from "../OutputChannel/OutputChannel.js";
|
|
8
8
|
import { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, getSourceControlProviderRegistrySnapshot, } from "../SourceControl/SourceControl.js";
|
|
9
|
-
import { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, saveViewInstanceState, } from "../ViewRegistry/ViewRegistry.js";
|
|
9
|
+
import { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, saveViewInstanceState, } from "../ViewRegistry/ViewRegistry.js";
|
|
10
10
|
export const commandMap = {
|
|
11
11
|
'ExtensionApi.createViewInstance': createViewInstance,
|
|
12
12
|
'ExtensionApi.dispatchViewEvent': dispatchViewEvent,
|
|
@@ -37,5 +37,6 @@ export const commandMap = {
|
|
|
37
37
|
'ExtensionApi.getSourceControlProviderRegistrySnapshot': getSourceControlProviderRegistrySnapshot,
|
|
38
38
|
'ExtensionApi.getStatusBarItems': getStatusBarItems,
|
|
39
39
|
'ExtensionApi.getViewRegistrySnapshot': getViewRegistrySnapshot,
|
|
40
|
+
'ExtensionApi.renderViewInstance': renderViewInstance,
|
|
40
41
|
'ExtensionApi.saveViewInstanceState': saveViewInstanceState,
|
|
41
42
|
};
|
|
@@ -30,5 +30,6 @@ export declare const commandMap: {
|
|
|
30
30
|
'ExtensionApi.getSourceControlProviderRegistrySnapshot': () => import("../SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.ts").SourceControlProviderRegistrySnapshot;
|
|
31
31
|
'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
|
|
32
32
|
'ExtensionApi.getViewRegistrySnapshot': () => import("../View/View.ts").ViewRegistrySnapshot;
|
|
33
|
+
'ExtensionApi.renderViewInstance': (uid: number) => Promise<import("../View/View.ts").ViewRenderResult>;
|
|
33
34
|
'ExtensionApi.saveViewInstanceState': (uid: number) => Promise<unknown>;
|
|
34
35
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { VirtualDomNode } from '@lvce-editor/virtual-dom-worker';
|
|
2
2
|
export type ViewKind = 'virtualDom';
|
|
3
3
|
export interface ViewContext {
|
|
4
|
+
readonly requestRerender: () => Promise<void>;
|
|
4
5
|
readonly state?: unknown;
|
|
5
6
|
readonly uid: number;
|
|
6
7
|
readonly viewId: string;
|
|
@@ -18,15 +19,19 @@ export interface VirtualDomViewInstance {
|
|
|
18
19
|
}
|
|
19
20
|
export interface View {
|
|
20
21
|
readonly create: (context?: ViewContext) => unknown;
|
|
22
|
+
readonly displayName?: string;
|
|
21
23
|
readonly icon?: string;
|
|
22
24
|
readonly id: string;
|
|
23
25
|
readonly kind?: ViewKind;
|
|
26
|
+
readonly name?: string;
|
|
24
27
|
readonly title?: string;
|
|
25
28
|
}
|
|
26
29
|
export interface RegisteredView {
|
|
30
|
+
readonly displayName?: string;
|
|
27
31
|
readonly icon?: string;
|
|
28
32
|
readonly id: string;
|
|
29
33
|
readonly kind?: ViewKind;
|
|
34
|
+
readonly name?: string;
|
|
30
35
|
readonly title?: string;
|
|
31
36
|
}
|
|
32
37
|
export interface ViewRegistrySnapshot {
|
|
@@ -4,6 +4,7 @@ export declare const registerView: (view: View) => Disposable;
|
|
|
4
4
|
export declare const executeViewProvider: (id: string) => unknown;
|
|
5
5
|
export declare const createViewInstance: (viewId: string, uid: number, context?: ViewContext) => Promise<ViewRenderResult>;
|
|
6
6
|
export declare const dispatchViewEvent: (uid: number, event: ViewEvent) => Promise<ViewRenderResult>;
|
|
7
|
+
export declare const renderViewInstance: (uid: number) => Promise<ViewRenderResult>;
|
|
7
8
|
export declare const disposeViewInstance: (uid: number) => Promise<void>;
|
|
8
9
|
export declare const saveViewInstanceState: (uid: number) => Promise<unknown>;
|
|
9
10
|
export declare const getViewRegistrySnapshot: () => ViewRegistrySnapshot;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ExtensionManagementWorker } from '@lvce-editor/rpc-registry';
|
|
1
2
|
import { diffTree } from '@lvce-editor/virtual-dom-worker';
|
|
2
3
|
import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
|
|
3
4
|
const views = Object.create(null);
|
|
@@ -18,10 +19,13 @@ const assertView = (view) => {
|
|
|
18
19
|
}
|
|
19
20
|
};
|
|
20
21
|
const toRegisteredView = (view) => {
|
|
22
|
+
const displayName = view.displayName || view.name || view.title;
|
|
21
23
|
const registeredView = {
|
|
24
|
+
displayName,
|
|
22
25
|
icon: view.icon,
|
|
23
26
|
id: view.id,
|
|
24
|
-
|
|
27
|
+
name: view.name,
|
|
28
|
+
title: displayName,
|
|
25
29
|
};
|
|
26
30
|
if (view.kind) {
|
|
27
31
|
return {
|
|
@@ -69,6 +73,16 @@ const renderDom = async (instance) => {
|
|
|
69
73
|
}
|
|
70
74
|
return dom;
|
|
71
75
|
};
|
|
76
|
+
const renderPatches = async (uid, instance) => {
|
|
77
|
+
const oldDom = renderedDoms[uid] || [];
|
|
78
|
+
const newDom = await renderDom(instance);
|
|
79
|
+
renderedDoms[uid] = newDom;
|
|
80
|
+
const patches = diffTree(oldDom, newDom);
|
|
81
|
+
return {
|
|
82
|
+
patches,
|
|
83
|
+
type: 'setPatches',
|
|
84
|
+
};
|
|
85
|
+
};
|
|
72
86
|
export const createViewInstance = async (viewId, uid, context) => {
|
|
73
87
|
const view = views[viewId];
|
|
74
88
|
if (!view) {
|
|
@@ -79,6 +93,9 @@ export const createViewInstance = async (viewId, uid, context) => {
|
|
|
79
93
|
}
|
|
80
94
|
const instance = await view.create({
|
|
81
95
|
...context,
|
|
96
|
+
requestRerender() {
|
|
97
|
+
return ExtensionManagementWorker.invoke('Extensions.requestViewRerender', uid);
|
|
98
|
+
},
|
|
82
99
|
uid,
|
|
83
100
|
viewId,
|
|
84
101
|
});
|
|
@@ -96,14 +113,11 @@ export const dispatchViewEvent = async (uid, event) => {
|
|
|
96
113
|
if (typeof instance.handleEvent === 'function') {
|
|
97
114
|
await instance.handleEvent(event);
|
|
98
115
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const
|
|
103
|
-
return
|
|
104
|
-
patches,
|
|
105
|
-
type: 'setPatches',
|
|
106
|
-
};
|
|
116
|
+
return renderPatches(uid, instance);
|
|
117
|
+
};
|
|
118
|
+
export const renderViewInstance = async (uid) => {
|
|
119
|
+
const instance = getVirtualDomInstance(uid);
|
|
120
|
+
return renderPatches(uid, instance);
|
|
107
121
|
};
|
|
108
122
|
export const disposeViewInstance = async (uid) => {
|
|
109
123
|
const instance = instances[uid];
|