@netless/window-manager 0.4.30 → 0.4.33
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/CHANGELOG.md +8 -0
- package/dist/AppManager.d.ts +5 -1
- package/dist/BoxEmitter.d.ts +34 -0
- package/dist/BoxManager.d.ts +3 -1
- package/dist/Cursor/index.d.ts +3 -1
- package/dist/Helper.d.ts +2 -0
- package/dist/InternalEmitter.d.ts +0 -18
- package/dist/Utils/AppCreateQueue.d.ts +2 -3
- package/dist/index.cjs.js +12 -12
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.es.js +99 -79
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +12 -12
- package/dist/index.umd.js.map +1 -1
- package/dist/typings.d.ts +2 -1
- package/docs/api.md +1 -1
- package/docs/app-context.md +127 -36
- package/docs/develop-app.md +1 -1
- package/package.json +3 -2
- package/pnpm-lock.yaml +66 -36
- package/src/App/AppProxy.ts +2 -1
- package/src/AppManager.ts +67 -59
- package/src/BoxEmitter.ts +19 -0
- package/src/BoxManager.ts +10 -6
- package/src/Cursor/Cursor.ts +3 -3
- package/src/Cursor/index.ts +8 -2
- package/src/Helper.ts +17 -1
- package/src/InternalEmitter.ts +0 -4
- package/src/ReconnectRefresher.ts +9 -3
- package/src/Utils/AppCreateQueue.ts +2 -3
- package/src/index.ts +27 -37
- package/src/typings.ts +3 -0
- package/dist/ScenePath/index.d.ts +0 -12
- package/src/ScenePath/index.ts +0 -47
package/dist/typings.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import type Emittery from "emittery";
|
2
|
-
import type { AnimationMode, Displayer, DisplayerState, Player, Room, SceneDefinition, SceneState, View } from "white-web-sdk";
|
2
|
+
import type { AnimationMode, ApplianceNames, Displayer, DisplayerState, Player, Room, SceneDefinition, SceneState, View } from "white-web-sdk";
|
3
3
|
import type { AppContext } from "./App";
|
4
4
|
import type { ReadonlyTeleBox, TeleBoxRect } from "@netless/telebox-insider";
|
5
5
|
import type { PageState } from "./Page";
|
@@ -69,6 +69,7 @@ export declare type RegisterParams<AppOptions = any, SetupResult = any, Attribut
|
|
69
69
|
name?: string;
|
70
70
|
};
|
71
71
|
export declare type AppListenerKeys = keyof AppEmitterEvent;
|
72
|
+
export declare type ApplianceIcons = Partial<Record<ApplianceNames, string>>;
|
72
73
|
export type { AppContext } from "./App/AppContext";
|
73
74
|
export type { ReadonlyTeleBox, TeleBoxRect };
|
74
75
|
export type { SceneState, SceneDefinition, View, AnimationMode, Displayer, Room, Player };
|
package/docs/api.md
CHANGED
@@ -64,7 +64,7 @@ const manager = await WindowManager.mount(
|
|
64
64
|
| disableCameraTransform | [optional] boolean | | 禁用主白板的相机移动 |
|
65
65
|
| prefersColorScheme | [optional] string | light | auto, light, dark |
|
66
66
|
| debug | [optional] boolean | false | 打印日志信息
|
67
|
-
|
67
|
+
| applianceIcons | [optional] {ApplianceNames, string} | | 配置光标使用的教具图片 |
|
68
68
|
|
69
69
|
<h3 id="register">WindowManager.register</h3>
|
70
70
|
|
package/docs/app-context.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
## AppContext
|
2
2
|
|
3
|
-
-
|
3
|
+
- [api](#api)
|
4
4
|
- [view](#view)
|
5
5
|
- [page](#page)
|
6
6
|
- [storage](#storage)
|
7
|
-
-
|
7
|
+
- [events](#events)
|
8
|
+
- [Advanced](#Advanced)
|
8
9
|
|
9
10
|
<h2 id="api">API</h2>
|
10
11
|
|
@@ -16,6 +17,12 @@
|
|
16
17
|
const appId = context.appId;
|
17
18
|
```
|
18
19
|
|
20
|
+
- **context.isReplay**
|
21
|
+
|
22
|
+
类型: `boolean`
|
23
|
+
|
24
|
+
当前是否回放模式
|
25
|
+
|
19
26
|
- **context.getDisplayer()**
|
20
27
|
|
21
28
|
在默认情况下 `Displayer` 为白板的 `room` 实例
|
@@ -32,10 +39,10 @@
|
|
32
39
|
|
33
40
|
- **context.getIsWritable()**
|
34
41
|
|
35
|
-
|
42
|
+
获取当前状态是否可写\
|
43
|
+
可以通过监听 `writableChange` 事件获取可写状态的改变
|
36
44
|
|
37
45
|
```ts
|
38
|
-
// isWritable === (room.isWritable && box.readonly)
|
39
46
|
const isWritable = context.getIsWritable();
|
40
47
|
```
|
41
48
|
|
@@ -50,46 +57,31 @@
|
|
50
57
|
box.$footer;
|
51
58
|
```
|
52
59
|
|
53
|
-
<h3 id="view"
|
54
|
-
|
55
|
-
`view` 可以理解为一块白板,可以从 `context` 中拿到这个实例并挂载到 `Dom` 中
|
56
|
-
|
57
|
-
- **context.getView()**
|
60
|
+
<h3 id="view">挂载白板</h3>
|
58
61
|
|
59
|
-
|
60
|
-
|
61
|
-
```ts
|
62
|
-
const view = context.getView();
|
63
|
-
```
|
62
|
+
当应用想要一个可以涂画的白板,可以使用以下接口
|
64
63
|
|
65
64
|
- **context.mountView()**
|
66
65
|
|
67
|
-
|
66
|
+
挂载白板到指定 dom
|
68
67
|
|
69
68
|
```ts
|
70
69
|
context.mountView(element);
|
71
70
|
```
|
72
71
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
切换当前 `view` 到指定的 `scenePath`
|
84
|
-
|
85
|
-
```ts
|
86
|
-
context.setScenePath("/page/2");
|
87
|
-
```
|
88
|
-
|
72
|
+
**注意** 在调用 `manager` 的 `addApp` 时必须填写 `scenePath` 才可以使用 `view`
|
73
|
+
```ts
|
74
|
+
manager.addApp({
|
75
|
+
kind: "xxx",
|
76
|
+
options: { // 可选配置
|
77
|
+
scenePath: "/example-path"
|
78
|
+
}
|
79
|
+
})
|
80
|
+
```
|
89
81
|
|
90
82
|
<h3 id="page">Page</h3>
|
91
83
|
|
92
|
-
|
84
|
+
白板有多页的概念, 可以通过以下接口添加,切换,以及删除
|
93
85
|
|
94
86
|
- **context.addPage()**
|
95
87
|
|
@@ -116,10 +108,19 @@
|
|
116
108
|
```ts
|
117
109
|
context.prevPage();
|
118
110
|
```
|
111
|
+
- **context.removePage()**
|
112
|
+
|
113
|
+
删除一页
|
114
|
+
|
115
|
+
```ts
|
116
|
+
context.removePage() // 默认删除当前页
|
117
|
+
context.removePage(1) // 也可以指定 index 删除
|
118
|
+
```
|
119
119
|
|
120
120
|
- **context.pageState**
|
121
121
|
|
122
|
-
获取当前所在的 `index`
|
122
|
+
获取当前所在的 `index` 和一共有多少页\
|
123
|
+
当想要监听 `pageState` 的变化时, 可以监听 `pageStateChange` 事件获取最新的 `pageState`
|
123
124
|
|
124
125
|
```ts
|
125
126
|
context.pageState;
|
@@ -141,17 +142,97 @@
|
|
141
142
|
context.storage
|
142
143
|
```
|
143
144
|
|
144
|
-
- **createStorage()**
|
145
|
+
- **context.createStorage(namespace)**
|
145
146
|
|
146
147
|
同时你也可以创建多个 `storage` 实例
|
148
|
+
|
149
|
+
返回: `Storage<State>`
|
147
150
|
|
148
151
|
```ts
|
149
|
-
|
150
|
-
const
|
152
|
+
type State = { count: number };
|
153
|
+
const defaultState = { count: 0 };
|
154
|
+
const storage = context.createStorage<State>("store1", defaultState);
|
151
155
|
```
|
152
156
|
|
157
|
+
- **storage.state**
|
158
|
+
|
159
|
+
类型: `State`\
|
160
|
+
默认值: `defaultState`
|
161
|
+
|
162
|
+
在所有客户端之间同步的状态,调用 `storage.setState()` 来改变它。
|
163
|
+
|
164
|
+
- **storage.ensureState(partialState)**
|
165
|
+
|
166
|
+
确保 `storage.state` 包含某些初始值,类似于执行了:
|
167
|
+
|
168
|
+
```js
|
169
|
+
// 这段代码不能直接运行,因为 app.state 是只读的
|
170
|
+
storage.state = { ...partialState, ...storage.state };
|
171
|
+
```
|
153
172
|
|
173
|
+
**partialState**
|
154
174
|
|
175
|
+
类型: `Partial<State>`
|
176
|
+
|
177
|
+
```js
|
178
|
+
storage.state; // { a: 1 }
|
179
|
+
storage.ensureState({ a: 0, b: 0 });
|
180
|
+
storage.state; // { a: 1, b: 0 }
|
181
|
+
```
|
182
|
+
|
183
|
+
- **storage.setState(partialState)**
|
184
|
+
|
185
|
+
和 React 的 `setState` 类似,更新 `storage.state` 并同步到所有客户端。
|
186
|
+
|
187
|
+
当设置某个字段为 `undefined` 时,它会被从 `storage.state` 里删除。
|
188
|
+
|
189
|
+
> - 状态同步所需的时间和网络状态与数据大小有关,建议只在 state 里存储必须的数据。
|
190
|
+
|
191
|
+
**partialState**
|
192
|
+
|
193
|
+
类型: `Partial<State>`
|
194
|
+
|
195
|
+
```js
|
196
|
+
storage.state; //=> { count: 0, a: 1 }
|
197
|
+
storage.setState({ count: storage.state.count + 1, b: 2 });
|
198
|
+
storage.state; //=> { count: 1, a: 1, b: 2 }
|
199
|
+
```
|
200
|
+
|
201
|
+
- **storage.addStateChangedListener(listener)**
|
202
|
+
|
203
|
+
它在有人调用 `storage.setState()` 后触发 (包含当前 `storage`)
|
204
|
+
|
205
|
+
返回: `() => void`
|
206
|
+
|
207
|
+
```js
|
208
|
+
const disposer = storage.addStateChangedListener(diff => {
|
209
|
+
console.log("state changed", diff.oldValue, diff.newValue);
|
210
|
+
disposer(); // remove listener by calling disposer
|
211
|
+
});
|
212
|
+
```
|
213
|
+
|
214
|
+
- **context.dispatchMagixEvent(event, payload)**
|
215
|
+
|
216
|
+
向其他客户端广播事件消息
|
217
|
+
|
218
|
+
```js
|
219
|
+
context.dispatchMagixEvent("click", { data: "data" });
|
220
|
+
```
|
221
|
+
|
222
|
+
- **context.addMagixEventListener(event, listener)**
|
223
|
+
|
224
|
+
当接收来自其他客户端的消息时(当其他客户端调用'context.dispatchMagixEvent()`时), 它会被触发
|
225
|
+
|
226
|
+
返回: `() => void` a disposer function.
|
227
|
+
|
228
|
+
```js
|
229
|
+
const disposer = context.addMagixEventListener("click", ({ payload }) => {
|
230
|
+
console.log(payload.data);
|
231
|
+
disposer();
|
232
|
+
});
|
233
|
+
|
234
|
+
context.dispatchMagixEvent("click", { data: "data" });
|
235
|
+
```
|
155
236
|
|
156
237
|
<h2 id="events">events</h2>
|
157
238
|
|
@@ -203,3 +284,13 @@
|
|
203
284
|
// { index: 0, length: 1 }
|
204
285
|
});
|
205
286
|
```
|
287
|
+
|
288
|
+
<h2 id="Advanced">Advanced</h2>
|
289
|
+
|
290
|
+
- **context.getView()**
|
291
|
+
|
292
|
+
获取 `view` 实例
|
293
|
+
|
294
|
+
```ts
|
295
|
+
const view = context.getView();
|
296
|
+
```
|
package/docs/develop-app.md
CHANGED
@@ -49,7 +49,7 @@ const Counter: NetlessApp<{ count: number }> = {
|
|
49
49
|
countDom.innerText = storage.state.count.toString();
|
50
50
|
$content.appendChild(countDom);
|
51
51
|
|
52
|
-
// state 变化回调
|
52
|
+
// 监听 state 变化回调
|
53
53
|
storage.addStateChangedListener(diff => {
|
54
54
|
if (diff.count) {
|
55
55
|
// diff 会给出 newValue 和 oldValue
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@netless/window-manager",
|
3
|
-
"version": "0.4.
|
3
|
+
"version": "0.4.33",
|
4
4
|
"description": "",
|
5
5
|
"main": "dist/index.cjs.js",
|
6
6
|
"module": "dist/index.es.js",
|
@@ -45,6 +45,7 @@
|
|
45
45
|
"@types/uuid": "^8.3.1",
|
46
46
|
"@typescript-eslint/eslint-plugin": "^4.30.0",
|
47
47
|
"@typescript-eslint/parser": "^4.30.0",
|
48
|
+
"@vitest/ui": "^0.14.1",
|
48
49
|
"cypress": "^8.7.0",
|
49
50
|
"dotenv": "^10.0.0",
|
50
51
|
"eslint": "^7.32.0",
|
@@ -59,7 +60,7 @@
|
|
59
60
|
"svelte": "^3.42.4",
|
60
61
|
"typescript": "^4.5.5",
|
61
62
|
"vite": "^2.5.3",
|
62
|
-
"vitest": "^0.
|
63
|
+
"vitest": "^0.14.1",
|
63
64
|
"white-web-sdk": "2.16.10"
|
64
65
|
}
|
65
66
|
}
|
package/pnpm-lock.yaml
CHANGED
@@ -16,6 +16,7 @@ specifiers:
|
|
16
16
|
'@types/uuid': ^8.3.1
|
17
17
|
'@typescript-eslint/eslint-plugin': ^4.30.0
|
18
18
|
'@typescript-eslint/parser': ^4.30.0
|
19
|
+
'@vitest/ui': ^0.14.1
|
19
20
|
cypress: ^8.7.0
|
20
21
|
dotenv: ^10.0.0
|
21
22
|
emittery: ^0.9.2
|
@@ -36,7 +37,7 @@ specifiers:
|
|
36
37
|
uuid: ^7.0.3
|
37
38
|
video.js: '>=7'
|
38
39
|
vite: ^2.5.3
|
39
|
-
vitest: ^0.
|
40
|
+
vitest: ^0.14.1
|
40
41
|
white-web-sdk: 2.16.10
|
41
42
|
|
42
43
|
dependencies:
|
@@ -63,6 +64,7 @@ devDependencies:
|
|
63
64
|
'@types/uuid': registry.npmmirror.com/@types/uuid/8.3.4
|
64
65
|
'@typescript-eslint/eslint-plugin': registry.npmmirror.com/@typescript-eslint/eslint-plugin/4.33.0_bre6cjtjfaculj7kh43nxjxlbi
|
65
66
|
'@typescript-eslint/parser': registry.npmmirror.com/@typescript-eslint/parser/4.33.0_hrkuebk64jiu2ut2d2sm4oylnu
|
67
|
+
'@vitest/ui': 0.14.1
|
66
68
|
cypress: registry.npmmirror.com/cypress/8.7.0
|
67
69
|
dotenv: registry.npmmirror.com/dotenv/10.0.0
|
68
70
|
eslint: registry.npmmirror.com/eslint/7.32.0
|
@@ -77,7 +79,7 @@ devDependencies:
|
|
77
79
|
svelte: registry.npmmirror.com/svelte/3.46.4
|
78
80
|
typescript: registry.npmmirror.com/typescript/4.6.3
|
79
81
|
vite: registry.npmmirror.com/vite/2.8.6_less@4.1.2
|
80
|
-
vitest: 0.
|
82
|
+
vitest: 0.14.1_nmqrau6oupbkt73pq2ukep6chi
|
81
83
|
white-web-sdk: registry.npmmirror.com/white-web-sdk/2.16.10
|
82
84
|
|
83
85
|
packages:
|
@@ -94,6 +96,10 @@ packages:
|
|
94
96
|
vanilla-lazyload: 17.6.1
|
95
97
|
dev: true
|
96
98
|
|
99
|
+
/@polka/url/1.0.0-next.21:
|
100
|
+
resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
|
101
|
+
dev: true
|
102
|
+
|
97
103
|
/@tootallnate/once/2.0.0:
|
98
104
|
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
|
99
105
|
engines: {node: '>= 10'}
|
@@ -113,14 +119,20 @@ packages:
|
|
113
119
|
resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==}
|
114
120
|
dev: true
|
115
121
|
|
116
|
-
/@types/yauzl/2.
|
117
|
-
resolution: {integrity: sha512-
|
122
|
+
/@types/yauzl/2.10.0:
|
123
|
+
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
|
118
124
|
requiresBuild: true
|
119
125
|
dependencies:
|
120
126
|
'@types/node': registry.npmmirror.com/@types/node/17.0.23
|
121
127
|
dev: true
|
122
128
|
optional: true
|
123
129
|
|
130
|
+
/@vitest/ui/0.14.1:
|
131
|
+
resolution: {integrity: sha512-rWhltzClVxTT9ktnS9DBQUe3RdRweP+XF1LspK5i3e+P66gn3rc2LChol3EYPYHJghL2Xsm91lvQO1pgE4vgHA==}
|
132
|
+
dependencies:
|
133
|
+
sirv: 2.0.2
|
134
|
+
dev: true
|
135
|
+
|
124
136
|
/abab/2.0.5:
|
125
137
|
resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==}
|
126
138
|
dev: true
|
@@ -188,7 +200,7 @@ packages:
|
|
188
200
|
dev: true
|
189
201
|
|
190
202
|
/check-error/1.0.2:
|
191
|
-
resolution: {integrity:
|
203
|
+
resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==}
|
192
204
|
dev: true
|
193
205
|
|
194
206
|
/colors/1.4.0:
|
@@ -236,6 +248,18 @@ packages:
|
|
236
248
|
mimic-fn: 4.0.0
|
237
249
|
dev: true
|
238
250
|
|
251
|
+
/debug/3.2.7:
|
252
|
+
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
|
253
|
+
peerDependencies:
|
254
|
+
supports-color: '*'
|
255
|
+
peerDependenciesMeta:
|
256
|
+
supports-color:
|
257
|
+
optional: true
|
258
|
+
dependencies:
|
259
|
+
ms: 2.1.3
|
260
|
+
dev: true
|
261
|
+
optional: true
|
262
|
+
|
239
263
|
/debug/4.3.4:
|
240
264
|
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
241
265
|
engines: {node: '>=6.0'}
|
@@ -547,11 +571,11 @@ packages:
|
|
547
571
|
dev: true
|
548
572
|
|
549
573
|
/get-func-name/2.0.0:
|
550
|
-
resolution: {integrity:
|
574
|
+
resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==}
|
551
575
|
dev: true
|
552
576
|
|
553
|
-
/graceful-fs/4.2.
|
554
|
-
resolution: {integrity: sha512-
|
577
|
+
/graceful-fs/4.2.10:
|
578
|
+
resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
|
555
579
|
dev: true
|
556
580
|
optional: true
|
557
581
|
|
@@ -598,7 +622,7 @@ packages:
|
|
598
622
|
dev: true
|
599
623
|
|
600
624
|
/image-size/0.5.5:
|
601
|
-
resolution: {integrity:
|
625
|
+
resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
|
602
626
|
engines: {node: '>=0.10.0'}
|
603
627
|
hasBin: true
|
604
628
|
requiresBuild: true
|
@@ -711,10 +735,19 @@ packages:
|
|
711
735
|
engines: {node: '>=12'}
|
712
736
|
dev: true
|
713
737
|
|
738
|
+
/mrmime/1.0.1:
|
739
|
+
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
|
740
|
+
engines: {node: '>=10'}
|
741
|
+
dev: true
|
742
|
+
|
714
743
|
/ms/2.1.2:
|
715
744
|
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
716
745
|
dev: true
|
717
746
|
|
747
|
+
/ms/2.1.3:
|
748
|
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
749
|
+
dev: true
|
750
|
+
|
718
751
|
/nanoid/3.3.4:
|
719
752
|
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
|
720
753
|
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
@@ -727,7 +760,7 @@ packages:
|
|
727
760
|
hasBin: true
|
728
761
|
requiresBuild: true
|
729
762
|
dependencies:
|
730
|
-
debug:
|
763
|
+
debug: 3.2.7
|
731
764
|
iconv-lite: registry.npmmirror.com/iconv-lite/0.4.24
|
732
765
|
sax: registry.npmmirror.com/sax/1.2.4
|
733
766
|
transitivePeerDependencies:
|
@@ -818,6 +851,15 @@ packages:
|
|
818
851
|
xmlchars: 2.2.0
|
819
852
|
dev: true
|
820
853
|
|
854
|
+
/sirv/2.0.2:
|
855
|
+
resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==}
|
856
|
+
engines: {node: '>= 10'}
|
857
|
+
dependencies:
|
858
|
+
'@polka/url': 1.0.0-next.21
|
859
|
+
mrmime: 1.0.1
|
860
|
+
totalist: 3.0.0
|
861
|
+
dev: true
|
862
|
+
|
821
863
|
/source-map-js/1.0.2:
|
822
864
|
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
|
823
865
|
engines: {node: '>=0.10.0'}
|
@@ -847,6 +889,11 @@ packages:
|
|
847
889
|
engines: {node: '>=14.0.0'}
|
848
890
|
dev: true
|
849
891
|
|
892
|
+
/totalist/3.0.0:
|
893
|
+
resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==}
|
894
|
+
engines: {node: '>=6'}
|
895
|
+
dev: true
|
896
|
+
|
850
897
|
/tough-cookie/4.0.0:
|
851
898
|
resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==}
|
852
899
|
engines: {node: '>=6'}
|
@@ -909,8 +956,8 @@ packages:
|
|
909
956
|
fsevents: 2.3.2
|
910
957
|
dev: true
|
911
958
|
|
912
|
-
/vitest/0.
|
913
|
-
resolution: {integrity: sha512-
|
959
|
+
/vitest/0.14.1_nmqrau6oupbkt73pq2ukep6chi:
|
960
|
+
resolution: {integrity: sha512-2UUm6jYgkwh7Y3VKSRR8OuaNCm+iA5LPDnal7jyITN39maZK9L+JVxqjtQ39PSFo5Fl3/BgaJvER6GGHX9JLxg==}
|
914
961
|
engines: {node: '>=v14.16.0'}
|
915
962
|
hasBin: true
|
916
963
|
peerDependencies:
|
@@ -930,7 +977,9 @@ packages:
|
|
930
977
|
dependencies:
|
931
978
|
'@types/chai': 4.3.1
|
932
979
|
'@types/chai-subset': 1.3.3
|
980
|
+
'@vitest/ui': 0.14.1
|
933
981
|
chai: 4.3.6
|
982
|
+
debug: 4.3.4
|
934
983
|
jsdom: 19.0.0
|
935
984
|
local-pkg: 0.4.1
|
936
985
|
tinypool: 0.1.3
|
@@ -940,6 +989,7 @@ packages:
|
|
940
989
|
- less
|
941
990
|
- sass
|
942
991
|
- stylus
|
992
|
+
- supports-color
|
943
993
|
dev: true
|
944
994
|
|
945
995
|
/w3c-hr-time/1.0.2:
|
@@ -2477,20 +2527,6 @@ packages:
|
|
2477
2527
|
version: 1.11.0
|
2478
2528
|
dev: true
|
2479
2529
|
|
2480
|
-
registry.npmmirror.com/debug/3.2.7:
|
2481
|
-
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz}
|
2482
|
-
name: debug
|
2483
|
-
version: 3.2.7
|
2484
|
-
peerDependencies:
|
2485
|
-
supports-color: '*'
|
2486
|
-
peerDependenciesMeta:
|
2487
|
-
supports-color:
|
2488
|
-
optional: true
|
2489
|
-
dependencies:
|
2490
|
-
ms: registry.npmmirror.com/ms/2.1.3
|
2491
|
-
dev: true
|
2492
|
-
optional: true
|
2493
|
-
|
2494
2530
|
registry.npmmirror.com/debug/3.2.7_supports-color@8.1.1:
|
2495
2531
|
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz}
|
2496
2532
|
id: registry.npmmirror.com/debug/3.2.7
|
@@ -2502,7 +2538,7 @@ packages:
|
|
2502
2538
|
supports-color:
|
2503
2539
|
optional: true
|
2504
2540
|
dependencies:
|
2505
|
-
ms:
|
2541
|
+
ms: 2.1.3
|
2506
2542
|
supports-color: registry.npmmirror.com/supports-color/8.1.1
|
2507
2543
|
dev: true
|
2508
2544
|
|
@@ -3086,7 +3122,7 @@ packages:
|
|
3086
3122
|
get-stream: registry.npmmirror.com/get-stream/5.2.0
|
3087
3123
|
yauzl: registry.npmmirror.com/yauzl/2.10.0
|
3088
3124
|
optionalDependencies:
|
3089
|
-
'@types/yauzl': 2.
|
3125
|
+
'@types/yauzl': 2.10.0
|
3090
3126
|
transitivePeerDependencies:
|
3091
3127
|
- supports-color
|
3092
3128
|
dev: true
|
@@ -3915,7 +3951,7 @@ packages:
|
|
3915
3951
|
dependencies:
|
3916
3952
|
universalify: registry.npmmirror.com/universalify/2.0.0
|
3917
3953
|
optionalDependencies:
|
3918
|
-
graceful-fs: 4.2.
|
3954
|
+
graceful-fs: 4.2.10
|
3919
3955
|
dev: true
|
3920
3956
|
|
3921
3957
|
registry.npmmirror.com/jsprim/2.0.2:
|
@@ -3962,7 +3998,7 @@ packages:
|
|
3962
3998
|
tslib: registry.npmmirror.com/tslib/2.3.1
|
3963
3999
|
optionalDependencies:
|
3964
4000
|
errno: 0.1.8
|
3965
|
-
graceful-fs: 4.2.
|
4001
|
+
graceful-fs: 4.2.10
|
3966
4002
|
image-size: 0.5.5
|
3967
4003
|
make-dir: 2.1.0
|
3968
4004
|
mime: 1.6.0
|
@@ -4309,12 +4345,6 @@ packages:
|
|
4309
4345
|
version: 2.1.2
|
4310
4346
|
dev: true
|
4311
4347
|
|
4312
|
-
registry.npmmirror.com/ms/2.1.3:
|
4313
|
-
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz}
|
4314
|
-
name: ms
|
4315
|
-
version: 2.1.3
|
4316
|
-
dev: true
|
4317
|
-
|
4318
4348
|
registry.npmmirror.com/mux.js/6.0.1:
|
4319
4349
|
resolution: {integrity: sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mux.js/-/mux.js-6.0.1.tgz}
|
4320
4350
|
name: mux.js
|
package/src/App/AppProxy.ts
CHANGED
@@ -29,6 +29,7 @@ import type { NetlessApp } from "../typings";
|
|
29
29
|
import type { ReadonlyTeleBox } from "@netless/telebox-insider";
|
30
30
|
import type { PageRemoveService, PageState } from "../Page";
|
31
31
|
import { calculateNextIndex } from "../Page";
|
32
|
+
import { boxEmitter } from "../BoxEmitter";
|
32
33
|
|
33
34
|
export type AppEmitter = Emittery<AppEmitterEvent>;
|
34
35
|
|
@@ -342,7 +343,7 @@ export class AppProxy implements PageRemoveService {
|
|
342
343
|
}
|
343
344
|
case "focus": {
|
344
345
|
this.boxManager?.focusBox({ appId: this.id });
|
345
|
-
|
346
|
+
boxEmitter.emit("focus", { appId: this.id });
|
346
347
|
break;
|
347
348
|
}
|
348
349
|
default: {
|