@netless/window-manager 1.0.0-canary.9 → 1.0.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.
Files changed (132) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +90 -64
  3. package/README.zh-cn.md +224 -0
  4. package/dist/index.d.ts +1133 -40
  5. package/dist/index.js +62 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/{index.es.js → index.mjs} +9480 -6984
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/style.css +1 -1
  10. package/docs/advanced.md +55 -55
  11. package/docs/api.md +124 -113
  12. package/docs/app-context.md +248 -209
  13. package/docs/basic.md +25 -26
  14. package/docs/camera.md +19 -20
  15. package/docs/cn/advanced.md +137 -0
  16. package/docs/cn/api.md +309 -0
  17. package/docs/cn/app-context.md +369 -0
  18. package/docs/cn/basic.md +64 -0
  19. package/docs/cn/camera.md +53 -0
  20. package/docs/cn/concept.md +9 -0
  21. package/docs/cn/custom-max-bar.md +31 -0
  22. package/docs/cn/develop-app.md +94 -0
  23. package/docs/cn/export-pdf.md +48 -0
  24. package/docs/cn/migrate.md +60 -0
  25. package/docs/cn/replay.md +40 -0
  26. package/docs/concept.md +6 -5
  27. package/docs/custom-max-bar.md +31 -0
  28. package/docs/develop-app.md +22 -19
  29. package/docs/export-pdf.md +48 -0
  30. package/docs/migrate.md +25 -27
  31. package/docs/quickstart.md +50 -0
  32. package/docs/replay.md +20 -20
  33. package/package.json +32 -22
  34. package/src/App/AppContext.ts +105 -73
  35. package/src/App/AppPageStateImpl.ts +6 -25
  36. package/src/App/AppProxy.ts +41 -166
  37. package/src/App/MagixEvent/index.ts +38 -38
  38. package/src/App/Storage/StorageEvent.ts +13 -13
  39. package/src/App/Storage/index.ts +269 -245
  40. package/src/App/Storage/typings.ts +4 -2
  41. package/src/App/Storage/utils.ts +3 -3
  42. package/src/App/index.ts +0 -1
  43. package/src/AppListener.ts +8 -8
  44. package/src/AppManager.ts +88 -77
  45. package/src/AttributesDelegate.ts +42 -22
  46. package/src/BoxEmitter.ts +12 -6
  47. package/src/BoxManager.ts +128 -108
  48. package/src/ContainerResizeObserver.ts +75 -0
  49. package/src/Cursor/Cursor.svelte +16 -5
  50. package/src/Cursor/Cursor.svelte.d.ts +21 -0
  51. package/src/Cursor/Cursor.ts +77 -13
  52. package/src/Cursor/icons.ts +6 -0
  53. package/src/Cursor/icons2.ts +66 -0
  54. package/src/Cursor/index.ts +127 -26
  55. package/src/Helper.ts +94 -14
  56. package/src/InternalEmitter.ts +2 -7
  57. package/src/Page/index.ts +1 -1
  58. package/src/PageState.ts +6 -5
  59. package/src/ReconnectRefresher.ts +9 -4
  60. package/src/RedoUndo.ts +3 -3
  61. package/src/Register/index.ts +22 -17
  62. package/src/Register/loader.ts +26 -22
  63. package/src/Register/storage.ts +13 -13
  64. package/src/Utils/Common.ts +18 -14
  65. package/src/Utils/Reactive.ts +26 -25
  66. package/src/Utils/RoomHacker.ts +4 -4
  67. package/src/Utils/error.ts +0 -1
  68. package/src/View/IframeBridge.ts +680 -0
  69. package/src/View/MainView.ts +127 -53
  70. package/src/callback.ts +21 -1
  71. package/src/constants.ts +0 -2
  72. package/src/image/pencil-eraser-1.svg +3 -0
  73. package/src/image/pencil-eraser-2.svg +3 -0
  74. package/src/image/pencil-eraser-3.svg +3 -0
  75. package/src/index.ts +220 -83
  76. package/src/style.css +27 -10
  77. package/src/typings.ts +20 -10
  78. package/.prettierignore +0 -7
  79. package/.prettierrc.json +0 -9
  80. package/CHANGELOG.md +0 -196
  81. package/__mocks__/white-web-sdk.ts +0 -50
  82. package/dist/App/AppContext.d.ts +0 -76
  83. package/dist/App/AppPageStateImpl.d.ts +0 -21
  84. package/dist/App/AppProxy.d.ts +0 -86
  85. package/dist/App/AppViewSync.d.ts +0 -11
  86. package/dist/App/MagixEvent/index.d.ts +0 -29
  87. package/dist/App/Storage/StorageEvent.d.ts +0 -8
  88. package/dist/App/Storage/index.d.ts +0 -39
  89. package/dist/App/Storage/typings.d.ts +0 -22
  90. package/dist/App/Storage/utils.d.ts +0 -5
  91. package/dist/App/WhiteboardView.d.ts +0 -22
  92. package/dist/App/index.d.ts +0 -3
  93. package/dist/AppListener.d.ts +0 -21
  94. package/dist/AppManager.d.ts +0 -107
  95. package/dist/AttributesDelegate.d.ts +0 -80
  96. package/dist/BoxEmitter.d.ts +0 -34
  97. package/dist/BoxManager.d.ts +0 -99
  98. package/dist/BuiltinApps.d.ts +0 -5
  99. package/dist/Cursor/Cursor.d.ts +0 -39
  100. package/dist/Cursor/icons.d.ts +0 -3
  101. package/dist/Cursor/index.d.ts +0 -46
  102. package/dist/Helper.d.ts +0 -17
  103. package/dist/InternalEmitter.d.ts +0 -39
  104. package/dist/Page/PageController.d.ts +0 -21
  105. package/dist/Page/index.d.ts +0 -3
  106. package/dist/PageState.d.ts +0 -9
  107. package/dist/ReconnectRefresher.d.ts +0 -24
  108. package/dist/RedoUndo.d.ts +0 -18
  109. package/dist/Register/index.d.ts +0 -28
  110. package/dist/Register/loader.d.ts +0 -4
  111. package/dist/Register/storage.d.ts +0 -8
  112. package/dist/Utils/AppCreateQueue.d.ts +0 -15
  113. package/dist/Utils/Common.d.ts +0 -23
  114. package/dist/Utils/Reactive.d.ts +0 -6
  115. package/dist/Utils/RoomHacker.d.ts +0 -3
  116. package/dist/Utils/error.d.ts +0 -27
  117. package/dist/Utils/log.d.ts +0 -1
  118. package/dist/View/CameraSynchronizer.d.ts +0 -16
  119. package/dist/View/MainView.d.ts +0 -47
  120. package/dist/View/ViewManager.d.ts +0 -13
  121. package/dist/callback.d.ts +0 -24
  122. package/dist/constants.d.ts +0 -49
  123. package/dist/index.cjs.js +0 -46
  124. package/dist/index.umd.js +0 -46
  125. package/dist/typings.d.ts +0 -82
  126. package/jest.config.js +0 -27
  127. package/pnpm-lock.yaml +0 -6302
  128. package/src/App/AppViewSync.ts +0 -68
  129. package/src/App/WhiteboardView.ts +0 -83
  130. package/src/View/CameraSynchronizer.ts +0 -56
  131. package/vite.config.js +0 -51
  132. /package/docs/{qickstart.md → cn/quickstart.md} +0 -0
package/docs/api.md CHANGED
@@ -1,82 +1,85 @@
1
1
  # API
2
2
 
3
- ## 目录
4
- - [静态方法](#static-methods)
5
- - [`mount`](#mount)
6
- - [`register`](#register)
7
- - [`registered`](#registered)
8
- - [`setContainer`](#set-container)
9
- - [`setCollectorContainer`](#set-collector-container)
10
- - [实例方法](#instance-methods)
11
- - [`addApp`](#addApp)
12
- - [`closeApp`](#closeApp)
13
- - [`setMainViewSceneIndex`](#setMainViewSceneIndex)
14
- - [`setBoxState`](#setBoxState)
15
- - [`cleanCurrentScene`](#cleanCurrentScene)
16
- - [`redo`](#redo)
17
- - [`undo`](#undo)
18
- - [`copy`](#copy)
19
- - [`paste`](#paste)
20
- - [`delete`](#delete)
21
- - [`duplicate`](#duplicate)
22
- - [`insertText`](#insertText)
23
- - [`insertImage`](#insertImage)
24
- - [`completeImageUpload`](#completeImageUpload)
25
- - [`lockImage`](#lockImage)
26
- - [`lockImages`](#lockImages)
27
- - [`nextPage`](#nextPage)
28
- - [`prevPage`](#prevPage)
29
- - [`addPage`](#addPage)
30
- - [`removePage`](#removePage)
31
- - [`refresh`](#refresh)
32
- - [`setContainerSizeRatio`](#setContainerSizeRatio)
33
- - [实例属性](#prototypes)
34
- - [事件回调](#events)
3
+ ## Table of contents
4
+ - [Static methods](#static-methods)
5
+ - [`mount`](#mount)
6
+ - [`register`](#register)
7
+ - [`registered`](#registered)
8
+ - [`setContainer`](#set-container)
9
+ - [`setCollectorContainer`](#set-collector-container)
10
+ - [instance methods](#instance-methods)
11
+ - [`addApp`](#addApp)
12
+ - [`closeApp`](#closeApp)
13
+ - [`focusApp`](#focusApp)
14
+ - [`setMainViewSceneIndex`](#setMainViewSceneIndex)
15
+ - [`setBoxState`](#setBoxState)
16
+ - [`cleanCurrentScene`](#cleanCurrentScene)
17
+ - [`redo`](#redo)
18
+ - [`undo`](#undo)
19
+ - [`copy`](#copy)
20
+ - [`paste`](#paste)
21
+ - [`delete`](#delete)
22
+ - [`duplicate`](#duplicate)
23
+ - [`insertText`](#insertText)
24
+ - [`insertImage`](#insertImage)
25
+ - [`completeImageUpload`](#completeImageUpload)
26
+ - [`lockImage`](#lockImage)
27
+ - [`lockImages`](#lockImages)
28
+ - [`nextPage`](#nextPage)
29
+ - [`prevPage`](#prevPage)
30
+ - [`addPage`](#addPage)
31
+ - [`removePage`](#removePage)
32
+ - [`refresh`](#refresh)
33
+ - [`setContainerSizeRatio`](#setContainerSizeRatio)
34
+ - [instance properties](#prototypes)
35
+ - [event callback](#events)
35
36
 
36
37
  <br>
37
38
 
38
- <h2 id="static-methods">静态方法</h2>
39
+ <h2 id="static-methods">Static methods</h2>
39
40
 
40
41
  <h3 id="mount">WindowManager.mount</h3>
41
42
 
42
- > 挂载 WindowManager
43
+ > mount WindowManager
43
44
 
44
45
  ```typescript
45
- const manager = await WindowManager.mount(
46
- room: room,
47
- container: document.getElementById("container")
48
- // 完整配置见下方
46
+ const manager = await WindowManager. mount(
47
+ room: room,
48
+ container: document. getElementById("container")
49
+ // full configuration see below
49
50
  );
50
51
  ```
51
52
 
52
- 参数
53
+ parameter
54
+
53
55
 
54
56
  | name | type | default | desc |
55
57
  | ---------------------- | --------------------------------------- | ------- | ---------------------------- |
56
- | room | [require] Room | | 房间实例 |
57
- | container | [require] HTMLElement | | 房间挂载容器 |
58
- | containerSizeRatio | [optional] number | 9 / 16 | 多窗口区域的高宽比,默认为 9 : 16 |
59
- | chessboard | [optional] boolean | true | 多窗口区域以外的空间显示 PS 棋盘背景,默认 true |
60
- | collectorContainer | [optional] HTMLElement | | 用于多窗口最小化图标挂载的 dom |
61
- | collectorStyles | [optional] Partial{CSSStyleDeclaration} | | 配置 collector 的样式 |
62
- | overwriteStyles | [optional] string | | 用于覆盖窗口的样式 |
63
- | cursor | [optional] boolean | false | 开启光标同步 |
64
- | disableCameraTransform | [optional] boolean | | 禁用主白板的相机移动 |
58
+ | room | [require] Room | | room instance |
59
+ | container | [require] HTMLElement | | room mount container |
60
+ | containerSizeRatio | [optional] number | 9 / 16 | The aspect ratio of the multi-window area, the default is 9 : 16 |
61
+ | chessboard | [optional] boolean | true | The space outside the multi-window area displays PS checkerboard background, default true |
62
+ | collectorContainer | [optional] HTMLElement | | dom for multi-window minimize icon mount |
63
+ | collectorStyles | [optional] Partial{CSSStyleDeclaration} | | Configure collector style |
64
+ | overwriteStyles | [optional] string | | The style to use for the overlay window |
65
+ | cursor | [optional] boolean | false | Turn on cursor sync |
66
+ | disableCameraTransform | [optional] boolean | | Disable camera movement for the main whiteboard |
65
67
  | prefersColorScheme | [optional] string | light | auto, light, dark |
66
- | debug | [optional] boolean | false | 打印日志信息
67
- | applianceIcons | [optional] {ApplianceNames, string} | | 配置光标使用的教具图片
68
+ | debug | [optional] boolean | false | print log information |
69
+ | applianceIcons | [optional] {ApplianceNames, string} | | Configure the teaching aid picture used by the cursor |
70
+
68
71
 
69
- <h3 id="register">WindowManager.register</h3>
72
+ <h3 id="register">WindowManager. register</h3>
70
73
 
71
- > 注册 `APP` `WindowManager`
74
+ > Register `APP` to `WindowManager`
72
75
 
73
76
  ```typescript
74
- WindowManager.register({
75
- kind: "helloWorld",
77
+ WindowManager. register({
78
+ kind: "hello World",
76
79
  src: NetlessApp,
77
80
  appOptions: () => "appOptions",
78
81
  addHooks: (emitter) => {
79
- emitter.on("created", result => {
82
+ emitter.on("created", result => {
80
83
  console.log("HelloWordResult", result);
81
84
  });
82
85
  emitter.on("focus", result => {
@@ -93,7 +96,7 @@ WindowManager.register({
93
96
 
94
97
  <h3 id="registered">WindowManager.registered</h3>
95
98
 
96
- > 获取已经注册过的 `App`
99
+ > Get the registered `App`
97
100
 
98
101
  ```ts
99
102
  WindowManager.registered
@@ -103,7 +106,7 @@ WindowManager.registered
103
106
 
104
107
  <h3 id="set-container">setContainer</h3>
105
108
 
106
- > 设置白板挂载容器
109
+ > Set whiteboard mount container
107
110
 
108
111
  ```typescript
109
112
  WindowManager.setContainer(document.getElementById("container"));
@@ -111,7 +114,7 @@ WindowManager.setContainer(document.getElementById("container"));
111
114
 
112
115
  <h3 id="set-container">setCollectorContainer</h3>
113
116
 
114
- > 设置 `Collector` 挂载的容器
117
+ > Set container mounted by `Collector`
115
118
 
116
119
  ```typescript
117
120
  WindowManager.setCollectorContainer(document.getElementById("collector-container"));
@@ -119,33 +122,41 @@ WindowManager.setCollectorContainer(document.getElementById("collector-container
119
122
 
120
123
  <br>
121
124
 
122
- <h2 id="instance-methods">实例方法</h2>
125
+ <h2 id="instance-methods">Instance methods</h2>
123
126
 
124
127
  <h3 id="addApp">addApp</h3>
125
128
 
126
- > 添加 `app` 至白板
129
+ > add `app` to whiteboard
127
130
 
128
131
  ```typescript
129
132
  const appId = await manager.addApp({
130
- kind: "helloWorld"
131
- options: { // 可选配置
132
- scenePath: "/hello-world"
133
- }
133
+ kind: "hello World"
134
+ options: { // optional configuration
135
+ scenePath: "/hello-world"
136
+ }
134
137
  })
135
138
  ```
136
- 具体参数请参考 `APP` 本身的要求
139
+ For specific parameters, please refer to the requirements of `APP` itself
137
140
 
138
141
  <h3 id="closeApp">closeApp</h3>
139
142
 
140
- > 关闭已经打开的 `APP`
143
+ > Close any open `APP`
141
144
 
142
145
  ```typescript
143
146
  manager.closeApp(appId)
144
147
  ```
145
148
 
149
+ <h3 id="focusApp">focusApp</h3>
150
+
151
+ > Switch the `app` of the current `focus`, and set this `app` to the front
152
+
153
+ ```typescript
154
+ manager.focusApp(appId)
155
+ ```
156
+
146
157
  <h3 id="setMainViewSceneIndex">setMainViewSceneIndex</h3>
147
158
 
148
- > 设置主白板的 `SceneIndex`
159
+ > Set the `SceneIndex` of the main whiteboard
149
160
 
150
161
  ```ts
151
162
  manager.setMainViewSceneIndex(1)
@@ -153,7 +164,7 @@ manager.setMainViewSceneIndex(1)
153
164
 
154
165
  <h3 id="setBoxState">setBoxState</h3>
155
166
 
156
- > 设置当前的 `boxState`
167
+ > Set the current `boxState`
157
168
 
158
169
  ```ts
159
170
  manager.setBoxState("normal") // boxState: normal | maximized | minimized
@@ -161,7 +172,7 @@ manager.setBoxState("normal") // boxState: normal | maximized | minimized
161
172
 
162
173
  <h3 id="cleanCurrentScene">cleanCurrentScene</h3>
163
174
 
164
- > 清除当前 focus view 的笔迹
175
+ > Clear the handwriting of the currently focused view
165
176
 
166
177
  ```ts
167
178
  manager.cleanCurrentScene()
@@ -169,7 +180,7 @@ manager.cleanCurrentScene()
169
180
 
170
181
  <h3 id="redo">redo</h3>
171
182
 
172
- > 在当前 focus view 上重做上一步操作
183
+ > Redo the last operation on the currently focused view
173
184
 
174
185
  ```ts
175
186
  manager.redo()
@@ -177,7 +188,7 @@ manager.redo()
177
188
 
178
189
  <h3 id="undo">undo</h3>
179
190
 
180
- > 在当前 focus view 上撤消上一步操作
191
+ > Undo the last action on the currently focused view
181
192
 
182
193
  ```ts
183
194
  manager.undo()
@@ -185,49 +196,49 @@ manager.undo()
185
196
 
186
197
  <h3 id="nextPage">nextPage</h3>
187
198
 
188
- > 切换主白板至下一页
199
+ > Switch main whiteboard to next page
189
200
 
190
201
  ```ts
191
202
  const success = await manager.nextPage()
192
203
  if (!success) {
193
- // 已经到了最后一页
204
+ // reached the last page
194
205
  }
195
206
  ```
196
207
 
197
208
  <h3 id="prevPage">prevPage</h3>
198
209
 
199
- > 切换主白板至上一页
210
+ > Switch main whiteboard to previous page
200
211
 
201
212
  ```ts
202
213
  const success = await manager.prevPage()
203
214
  if (!success) {
204
- // 已经到了第一页
215
+ // have reached the first page
205
216
  }
206
217
  ```
207
218
 
208
219
  <h3 id="addPage">addPage</h3>
209
220
 
210
- > 在主白板添加一页
221
+ > Add a page to the main whiteboard
211
222
 
212
223
  ```ts
213
- manager.addPage() // 默认在最后添加一页
214
- manager.addPage({ after: true }) // 在当前页后添加一页
215
- manager.addPage({ scene: { name: "page2" } }) // 传入 page 信息
224
+ manager.addPage() // add a page at the end by default
225
+ manager.addPage({ after: true }) // add a page after the current page
226
+ manager.addPage({ scene: { name: "page2" } }) // pass in page information
216
227
  ```
217
228
 
218
229
  <h3 id="removePage">removePage</h3>
219
230
 
220
- > 移除一页
221
- > 当只剩一页时, 最后一页不允许被删除
231
+ > remove a page
232
+ > When there is only one page left, the last page is not allowed to be deleted
222
233
 
223
234
  ```ts
224
- const success = await manager.removePage() // 默认删除当前页
225
- const success = await manager.removePage(1) // 可以删除指定 index
235
+ const success = await manager.removePage() // delete the current page by default
236
+ const success = await manager.removePage(1) // can delete the specified index
226
237
  ```
227
238
 
228
239
  <h3 id="refresh">refresh</h3>
229
240
 
230
- > 刷新 `manager` 的内部状态, 用于从其他房间 `copy` `attributes`
241
+ > Refreshes `manager` internal state for `copy` `attributes` from other rooms
231
242
 
232
243
  ```ts
233
244
  manager.refresh()
@@ -235,7 +246,7 @@ manager.refresh()
235
246
 
236
247
  <h3 id="setContainerSizeRatio">setContainerSizeRatio</h3>
237
248
 
238
- > 设置白板同步区域的宽高比
249
+ > Set the aspect ratio of the whiteboard synchronization area
239
250
 
240
251
  ```ts
241
252
  manager.setContainerSizeRatio(10 / 16)
@@ -243,28 +254,28 @@ manager.setContainerSizeRatio(10 / 16)
243
254
 
244
255
  <br>
245
256
 
246
- <h2 id="prototypes">实例属性</h2>
257
+ <h2 id="prototypes">Instance attributes</h2>
247
258
 
248
259
  | name | type | default | desc |
249
260
  | ------------------ | ------- | ------- | ----------------- |
250
- | mainView | View | | 主白板 |
251
- | mainViewSceneIndex | number | | 当前主白板的 SceneIndex |
252
- | mainViewScenesLength | number | | mainView scenes 长度 |
253
- | boxState | string | | 当前窗口状态 |
254
- | darkMode | boolean | | 黑夜模式 |
255
- | prefersColorScheme | string | | 颜色主题 |
256
- | focused | string | | focus app |
257
- | canRedoSteps | number | | 当前 focus view 可以重做的步数 |
258
- | canRedoSteps | number | | 当前 focus view 可以撤销的步数 |
259
- | sceneState | SceneState | | 兼容原本 SDK sceneState 属性, 只对 mainView 生效 |
260
- | pageState | PageState | | 组合 mainView index scenes 的修改 |
261
+ | mainView | View | | main whiteboard |
262
+ | mainViewSceneIndex | number | | The SceneIndex of the current main whiteboard |
263
+ | mainViewScenesLength | number | | mainView's scenes length |
264
+ | boxState | string | | current window status |
265
+ | darkMode | boolean | | dark mode |
266
+ | prefersColorScheme | string | | color theme |
267
+ | focused | string | | focus app |
268
+ | canRedoSteps | number | | The number of steps that the currently focused view can redo |
269
+ | canRedoSteps | number | | The number of steps that the currently focused view can undo |
270
+ | sceneState | SceneState | | Compatible with the sceneState property of the original SDK, only valid for mainView |
271
+ | pageState | PageState | | Combine the index and scenes modification of mainView |
261
272
 
262
273
  <br>
263
274
 
264
- <h2 id="events">事件回调</h2>
275
+ <h2 id="events">event callback</h2>
265
276
 
266
277
  ```typescript
267
- manager.callbacks.on(events, listener)
278
+ manager.emitter.on(events, listener)
268
279
  ```
269
280
 
270
281
  | name | type | default | desc |
@@ -275,26 +286,26 @@ manager.callbacks.on(events, listener)
275
286
  | darkModeChange | boolean | | |
276
287
  | prefersColorSchemeChange | string | | auto,light,dark |
277
288
  | cameraStateChange | CameraState | | |
278
- | focusedChange | string, undefined | | 当前 focus appId,主白板时为 undefined |
279
- | mainViewScenesLengthChange | number | | mainView scenes 添加或删除时触发 |
280
- | canRedoStepsChange | number | | 当前 focus view 可重做步数改变 |
281
- | canUndoStepsChange | number | | 当前 focus view 可撤销步数改变 |
282
- | loadApp | LoadAppEvent | | 加载远程APP 事件 |
283
- | ready | undefined | | 当所有 APP 创建完毕时触发 |
284
- | sceneStateChange | SceneState | | sceneState 修改时触发 |
285
- | pageStateChange | PageState | |
289
+ | focusedChange | string, undefined | | The appId of the current focus, undefined for the main whiteboard |
290
+ | mainViewScenesLengthChange | number | | fires when mainView scenes are added or removed |
291
+ | canRedoStepsChange | number | | The view of the current focus can redo the number of steps to change |
292
+ | canUndoStepsChange | number | | The current focus view can undo the step change |
293
+ | loadApp | LoadAppEvent | | Load remote APP event |
294
+ | ready | undefined | | Triggered when all apps are created |
295
+ | sceneStateChange | SceneState | | Fired when sceneState is modified |
296
+ | pageStateChange | PageState | | |
286
297
 
287
298
  ```ts
288
299
  type LoadAppEvent = {
289
- kind: string;
290
- status: "start" | "success" | "failed";
291
- reason?: string;
300
+ kind: string;
301
+ status: "start" | "success" | "failed";
302
+ reason?: string;
292
303
  }
293
304
  ```
294
305
 
295
306
  ```ts
296
307
  type PageState = {
297
- index: number;
298
- length: number;
308
+ index: number;
309
+ length: number;
299
310
  }
300
- ```
311
+ ```