@netless/window-manager 0.4.0 → 0.4.1-canary.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/docs/advanced.md CHANGED
@@ -1,15 +1,14 @@
1
1
  ## 进阶使用
2
2
 
3
3
  - 目录
4
- - [撤销重做]
4
+ - [撤销重做](#redo-undo)
5
+ - [清屏](#clean-current-scene)
5
6
 
6
7
 
7
-
8
- <h3>撤销重做</h3>
8
+ <h3 id="redo-undo">撤销重做</h3>
9
9
 
10
10
  > 以下事件和属性都会根据 `focus` 的窗口来进行自动切换应用对象
11
11
 
12
-
13
12
  #### 获取可以撤销/重做的步数
14
13
 
15
14
  ```ts
@@ -37,3 +36,18 @@ manager.undo() //撤销
37
36
  manager.redo() // 重做
38
37
  ```
39
38
 
39
+ <br>
40
+
41
+ <h3 id="clean-current-scene">清屏</h3>
42
+
43
+ 因为在多窗口模式下有多个白板, 如果想要清除当前 `focus` 的白板只需要调用
44
+
45
+ ```ts
46
+ manager.cleanCurrentScene()
47
+ ```
48
+
49
+ 只想清理主白板的笔迹则需要
50
+
51
+ ```ts
52
+ manager.mainView.cleanCurrentScene()
53
+ ```
package/docs/api.md CHANGED
@@ -190,4 +190,14 @@ manager.callbacks.on(events, listener)
190
190
  | focusedChange | string, undefined | | 当前 focus 的 appId,主白板时为 undefined |
191
191
  | mainViewScenesLengthChange | number | | mainView scenes 添加或删除时触发 |
192
192
  | canRedoStepsChange | number | | 当前 focus 的 view 可重做步数改变 |
193
- | canUndoStepsChange | number | | 当前 focus 的 view 可撤销步数改变 |
193
+ | canUndoStepsChange | number | | 当前 focus 的 view 可撤销步数改变 |
194
+ | loadApp | LoadAppEvent | | 加载远程APP 事件 |
195
+
196
+
197
+ ```ts
198
+ type LoadAppEvent = {
199
+ kind: string;
200
+ status: "start" | "success" | "failed";
201
+ reason?: string;
202
+ }
203
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netless/window-manager",
3
- "version": "0.4.0",
3
+ "version": "0.4.1-canary.0",
4
4
  "description": "",
5
5
  "main": "dist/index.es.js",
6
6
  "module": "dist/index.es.js",
@@ -18,7 +18,6 @@
18
18
  "author": "",
19
19
  "license": "ISC",
20
20
  "peerDependencies": {
21
- "video.js": ">=7",
22
21
  "white-web-sdk": "^2.16.0"
23
22
  },
24
23
  "dependencies": {
@@ -56,8 +55,7 @@
56
55
  "rollup-plugin-styles": "^3.14.1",
57
56
  "svelte": "^3.42.4",
58
57
  "typescript": "^4.3.5",
59
- "video.js": "^7.14.3",
60
58
  "vite": "^2.5.3",
61
- "white-web-sdk": "^2.16.6"
59
+ "white-web-sdk": "2.16.3"
62
60
  }
63
61
  }
@@ -1,6 +1,12 @@
1
1
  import Emittery from "emittery";
2
- import type { NetlessApp, RegisterEvents, RegisterParams } from "../typings";
3
2
  import { loadApp } from "./loader";
3
+ import type { NetlessApp, RegisterEvents, RegisterParams } from "../typings";
4
+
5
+ export type LoadAppEvent = {
6
+ kind: string;
7
+ status: "start" | "success" | "failed";
8
+ reason?: string;
9
+ };
4
10
 
5
11
  class AppRegister {
6
12
  public kindEmitters: Map<string, Emittery<RegisterEvents>> = new Map();
@@ -1,9 +1,10 @@
1
+ import { callbacks } from "../index";
1
2
  import { getItem, setItem } from "./storage";
2
3
  import type { NetlessApp } from "../typings";
3
4
 
4
5
  const Prefix = "NetlessApp";
5
6
 
6
- const TIMEOUT = 10000; // 10 秒超时
7
+ const TIMEOUT = 10000; // 下载 script 10 秒超时
7
8
 
8
9
  export const getScript = async (url: string): Promise<string> => {
9
10
  const item = await getItem(url);
@@ -33,19 +34,33 @@ export const loadApp = async (
33
34
  name?: string
34
35
  ): Promise<NetlessApp | undefined> => {
35
36
  const appName = name || Prefix + key;
36
- const text = await getScript(url);
37
+ callbacks.emit("loadApp", { kind: key, status: "start" });
37
38
  try {
38
- return executeScript(text, appName);
39
- } catch (error: any) {
40
- if (error.message.includes("Can only have one anonymous define call per script file")) {
41
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
42
- // @ts-ignore
43
- const define = window.define;
44
- if ("function" == typeof define && define.amd) {
45
- delete define.amd;
39
+ const text = await getScript(url);
40
+ if (!text || text.length === 0) {
41
+ callbacks.emit("loadApp", { kind: key, status: "failed", reason: "script is empty." });
42
+ return;
43
+ }
44
+ try {
45
+ const result = executeScript(text, appName);
46
+ callbacks.emit("loadApp", { kind: key, status: "success" });
47
+ return result;
48
+ } catch (error: any) {
49
+ if (error.message.includes("Can only have one anonymous define call per script file")) {
50
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
51
+ // @ts-ignore
52
+ const define = window.define;
53
+ if ("function" == typeof define && define.amd) {
54
+ delete define.amd;
55
+ }
56
+ const result = executeScript(text, appName);
57
+ callbacks.emit("loadApp", { kind: key, status: "success" });
58
+ return result;
46
59
  }
47
- return executeScript(text, appName);
60
+ callbacks.emit("loadApp", { kind: key, status: "failed", reason: error.message });
48
61
  }
62
+ } catch (error: any) {
63
+ callbacks.emit("loadApp", { kind: key, status: "failed", reason: error.message });
49
64
  }
50
65
  };
51
66
 
package/src/index.ts CHANGED
@@ -17,6 +17,7 @@ import { replaceRoomFunction } from "./Utils/RoomHacker";
17
17
  import { setupBuiltin } from "./BuiltinApps";
18
18
  import "./style.css";
19
19
  import "@netless/telebox-insider/dist/style.css";
20
+ import type { LoadAppEvent } from "./Register";
20
21
  import {
21
22
  addEmitterOnceListener,
22
23
  ensureValidScenePath,
@@ -152,6 +153,7 @@ export type PublicEvent = {
152
153
  mainViewScenesLengthChange: number;
153
154
  canRedoStepsChange: number;
154
155
  canUndoStepsChange: number;
156
+ loadApp: LoadAppEvent;
155
157
  };
156
158
 
157
159
  export type MountParams = {