@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 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
- title: view.title,
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
- const oldDom = renderedDoms[uid] || [];
100
- const newDom = await renderDom(instance);
101
- renderedDoms[uid] = newDom;
102
- const patches = diffTree(oldDom, newDom);
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];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/api",
3
- "version": "8.33.0",
3
+ "version": "8.34.0",
4
4
  "description": "Tree-shakeable extension API for Lvce Editor extensions.",
5
5
  "keywords": [
6
6
  "lvce-editor",