@netless/window-manager 0.4.32 → 1.0.0-canary.10
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/__mocks__/white-web-sdk.ts +10 -1
- package/dist/App/AppContext.d.ts +16 -15
- package/dist/App/AppPageStateImpl.d.ts +6 -2
- package/dist/App/AppProxy.d.ts +26 -5
- package/dist/App/AppViewSync.d.ts +11 -0
- package/dist/App/WhiteboardView.d.ts +24 -0
- package/dist/App/index.d.ts +1 -0
- package/dist/AppManager.d.ts +5 -3
- package/dist/AttributesDelegate.d.ts +6 -14
- package/dist/BoxManager.d.ts +9 -8
- package/dist/Helper.d.ts +12 -4
- package/dist/InternalEmitter.d.ts +6 -1
- package/dist/Page/PageController.d.ts +1 -0
- package/dist/ReconnectRefresher.d.ts +1 -1
- package/dist/Utils/Common.d.ts +1 -0
- package/dist/View/CameraSynchronizer.d.ts +17 -0
- package/dist/View/MainView.d.ts +4 -6
- package/dist/constants.d.ts +1 -0
- package/dist/index.cjs.js +21 -22
- package/dist/index.d.ts +6 -5
- package/dist/index.es.js +2512 -2059
- package/dist/index.umd.js +21 -22
- package/dist/style.css +1 -1
- package/dist/typings.d.ts +4 -0
- package/docs/app-context.md +98 -64
- package/docs/develop-app.md +2 -5
- package/package.json +4 -3
- package/pnpm-lock.yaml +90 -97
- package/src/App/AppContext.ts +72 -75
- package/src/App/AppPageStateImpl.ts +25 -6
- package/src/App/AppProxy.ts +206 -35
- package/src/App/AppViewSync.ts +73 -0
- package/src/App/Storage/index.ts +4 -4
- package/src/App/WhiteboardView.ts +89 -0
- package/src/App/index.ts +1 -0
- package/src/AppManager.ts +32 -23
- package/src/AttributesDelegate.ts +14 -17
- package/src/BoxManager.ts +107 -115
- package/src/Cursor/index.ts +5 -5
- package/src/Helper.ts +12 -16
- package/src/InternalEmitter.ts +10 -4
- package/src/Page/PageController.ts +1 -0
- package/src/ReconnectRefresher.ts +1 -0
- package/src/Utils/Common.ts +6 -0
- package/src/View/CameraSynchronizer.ts +72 -0
- package/src/View/MainView.ts +53 -78
- package/src/constants.ts +2 -0
- package/src/index.ts +31 -36
- package/src/style.css +9 -0
- package/src/typings.ts +4 -0
- package/vite.config.js +0 -1
- package/dist/ContainerResizeObserver.d.ts +0 -11
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.es.js.map +0 -1
- package/dist/index.umd.js.map +0 -1
- package/src/ContainerResizeObserver.ts +0 -73
package/pnpm-lock.yaml
CHANGED
@@ -4,7 +4,7 @@ specifiers:
|
|
4
4
|
'@juggle/resize-observer': ^3.3.1
|
5
5
|
'@netless/app-docs-viewer': ^0.2.9
|
6
6
|
'@netless/app-media-player': 0.1.0-beta.5
|
7
|
-
'@netless/telebox-insider': 0.
|
7
|
+
'@netless/telebox-insider': 1.0.0-alpha.14
|
8
8
|
'@rollup/plugin-commonjs': ^20.0.0
|
9
9
|
'@rollup/plugin-node-resolve': ^13.0.4
|
10
10
|
'@rollup/plugin-url': ^6.1.0
|
@@ -31,10 +31,11 @@ specifiers:
|
|
31
31
|
prettier-plugin-svelte: ^2.4.0
|
32
32
|
rollup-plugin-analyzer: ^4.0.0
|
33
33
|
rollup-plugin-styles: ^3.14.1
|
34
|
-
side-effect-manager: ^
|
34
|
+
side-effect-manager: ^1.1.0
|
35
35
|
svelte: ^3.42.4
|
36
36
|
typescript: ^4.5.5
|
37
37
|
uuid: ^7.0.3
|
38
|
+
value-enhancer: ^1.2.1
|
38
39
|
video.js: '>=7'
|
39
40
|
vite: ^2.5.3
|
40
41
|
vitest: ^0.14.1
|
@@ -42,12 +43,13 @@ specifiers:
|
|
42
43
|
|
43
44
|
dependencies:
|
44
45
|
'@juggle/resize-observer': registry.npmmirror.com/@juggle/resize-observer/3.3.1
|
45
|
-
'@netless/telebox-insider':
|
46
|
+
'@netless/telebox-insider': 1.0.0-alpha.14
|
46
47
|
emittery: registry.npmmirror.com/emittery/0.9.2
|
47
48
|
lodash: registry.npmmirror.com/lodash/4.17.21
|
48
49
|
p-retry: registry.npmmirror.com/p-retry/4.6.1
|
49
|
-
side-effect-manager:
|
50
|
+
side-effect-manager: 1.1.0
|
50
51
|
uuid: registry.npmmirror.com/uuid/7.0.3
|
52
|
+
value-enhancer: 1.2.1
|
51
53
|
video.js: registry.npmmirror.com/video.js/7.18.1
|
52
54
|
|
53
55
|
devDependencies:
|
@@ -86,7 +88,6 @@ packages:
|
|
86
88
|
|
87
89
|
/@juggle/resize-observer/3.3.1:
|
88
90
|
resolution: {integrity: sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw==}
|
89
|
-
dev: true
|
90
91
|
|
91
92
|
/@netless/app-docs-viewer/0.2.9:
|
92
93
|
resolution: {integrity: sha512-yuhfQ02nr61polMq8s3OiIIvA85yonJwCckr/rPYCB8hm8YV9Di9cYb85fB8Wy3A3do/1UVfYHTWa6Vcge6fLw==}
|
@@ -96,10 +97,36 @@ packages:
|
|
96
97
|
vanilla-lazyload: 17.6.1
|
97
98
|
dev: true
|
98
99
|
|
100
|
+
/@netless/telebox-insider/1.0.0-alpha.14:
|
101
|
+
resolution: {integrity: sha512-kDhoxnEZUOCjQDf/lDgHVBb/TaKywlnUXhSlSbyVDWefcVXcaXi6/zEPwDR0gMYWCqQQoEPFz9Jr8hd8hcEkyQ==}
|
102
|
+
dependencies:
|
103
|
+
'@juggle/resize-observer': 3.3.1
|
104
|
+
'@types/shallowequal': 1.1.1
|
105
|
+
emittery: 0.11.0
|
106
|
+
shallowequal: 1.1.0
|
107
|
+
side-effect-manager: 1.1.0
|
108
|
+
stylefire: 7.0.3
|
109
|
+
value-enhancer: 1.3.0
|
110
|
+
dev: false
|
111
|
+
|
99
112
|
/@polka/url/1.0.0-next.21:
|
100
113
|
resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
|
101
114
|
dev: true
|
102
115
|
|
116
|
+
/@popmotion/easing/1.0.2:
|
117
|
+
resolution: {integrity: sha512-IkdW0TNmRnWTeWI7aGQIVDbKXPWHVEYdGgd5ZR4SH/Ty/61p63jCjrPxX1XrR7IGkl08bjhJROStD7j+RKgoIw==}
|
118
|
+
dev: false
|
119
|
+
|
120
|
+
/@popmotion/popcorn/0.4.4:
|
121
|
+
resolution: {integrity: sha512-jYO/8319fKoNLMlY4ZJPiPu8Ea8occYwRZhxpaNn/kZsK4QG2E7XFlXZMJBsTWDw7I1i0uaqyC4zn1nwEezLzg==}
|
122
|
+
dependencies:
|
123
|
+
'@popmotion/easing': 1.0.2
|
124
|
+
framesync: 4.1.0
|
125
|
+
hey-listen: 1.0.8
|
126
|
+
style-value-types: 3.2.0
|
127
|
+
tslib: 1.14.1
|
128
|
+
dev: false
|
129
|
+
|
103
130
|
/@tootallnate/once/2.0.0:
|
104
131
|
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
|
105
132
|
engines: {node: '>= 10'}
|
@@ -119,6 +146,10 @@ packages:
|
|
119
146
|
resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==}
|
120
147
|
dev: true
|
121
148
|
|
149
|
+
/@types/shallowequal/1.1.1:
|
150
|
+
resolution: {integrity: sha512-Lhni3aX80zbpdxRuWhnuYPm8j8UQaa571lHP/xI4W+7BAFhSIhRReXnqjEgT/XzPoXZTJkCqstFMJ8CZTK6IlQ==}
|
151
|
+
dev: false
|
152
|
+
|
122
153
|
/@types/yauzl/2.10.0:
|
123
154
|
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
|
124
155
|
requiresBuild: true
|
@@ -299,6 +330,11 @@ packages:
|
|
299
330
|
webidl-conversions: 7.0.0
|
300
331
|
dev: true
|
301
332
|
|
333
|
+
/emittery/0.11.0:
|
334
|
+
resolution: {integrity: sha512-S/7tzL6v5i+4iJd627Nhv9cLFIo5weAIlGccqJFpnBoDB8U1TF2k5tez4J/QNuxyyhWuFqHg1L84Kd3m7iXg6g==}
|
335
|
+
engines: {node: '>=12'}
|
336
|
+
dev: false
|
337
|
+
|
302
338
|
/errno/0.1.8:
|
303
339
|
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
|
304
340
|
hasBin: true
|
@@ -558,6 +594,12 @@ packages:
|
|
558
594
|
mime-types: 2.1.35
|
559
595
|
dev: true
|
560
596
|
|
597
|
+
/framesync/4.1.0:
|
598
|
+
resolution: {integrity: sha512-MmgZ4wCoeVxNbx2xp5hN/zPDCbLSKiDt4BbbslK7j/pM2lg5S0vhTNv1v8BCVb99JPIo6hXBFdwzU7Q4qcAaoQ==}
|
599
|
+
dependencies:
|
600
|
+
hey-listen: 1.0.8
|
601
|
+
dev: false
|
602
|
+
|
561
603
|
/fsevents/2.3.2:
|
562
604
|
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
|
563
605
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
@@ -586,6 +628,10 @@ packages:
|
|
586
628
|
function-bind: 1.1.1
|
587
629
|
dev: true
|
588
630
|
|
631
|
+
/hey-listen/1.0.8:
|
632
|
+
resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
|
633
|
+
dev: false
|
634
|
+
|
589
635
|
/html-encoding-sniffer/3.0.0:
|
590
636
|
resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
|
591
637
|
engines: {node: '>=12'}
|
@@ -851,6 +897,14 @@ packages:
|
|
851
897
|
xmlchars: 2.2.0
|
852
898
|
dev: true
|
853
899
|
|
900
|
+
/shallowequal/1.1.0:
|
901
|
+
resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
|
902
|
+
dev: false
|
903
|
+
|
904
|
+
/side-effect-manager/1.1.0:
|
905
|
+
resolution: {integrity: sha512-Gqy1tsBBYcKclLPIGDxMQiZJLM8CGdGg/DM3a5/8ic2x2A19rVUhVk/+Mt5RwNbpaNKmBPO/wxxzAnY2myQVTg==}
|
906
|
+
dev: false
|
907
|
+
|
854
908
|
/sirv/2.0.2:
|
855
909
|
resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==}
|
856
910
|
engines: {node: '>= 10'}
|
@@ -870,6 +924,23 @@ packages:
|
|
870
924
|
engines: {node: '>=0.10.0'}
|
871
925
|
dev: true
|
872
926
|
|
927
|
+
/style-value-types/3.2.0:
|
928
|
+
resolution: {integrity: sha512-ih0mGsrYYmVvdDi++/66O6BaQPRPRMQHoZevNNdMMcPlP/cH28Rnfsqf1UEba/Bwfuw9T8BmIMwbGdzsPwQKrQ==}
|
929
|
+
dependencies:
|
930
|
+
hey-listen: 1.0.8
|
931
|
+
tslib: 1.14.1
|
932
|
+
dev: false
|
933
|
+
|
934
|
+
/stylefire/7.0.3:
|
935
|
+
resolution: {integrity: sha512-Q0l7NSeFz/OkX+o6/7Zg3VZxSAZeQzQpYomWmIpOehFM/rJNMSLVX5fgg6Q48ut2ETNKwdhm97mPNU643EBCoQ==}
|
936
|
+
dependencies:
|
937
|
+
'@popmotion/popcorn': 0.4.4
|
938
|
+
framesync: 4.1.0
|
939
|
+
hey-listen: 1.0.8
|
940
|
+
style-value-types: 3.2.0
|
941
|
+
tslib: 1.14.1
|
942
|
+
dev: false
|
943
|
+
|
873
944
|
/supports-preserve-symlinks-flag/1.0.0:
|
874
945
|
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
875
946
|
engines: {node: '>= 0.4'}
|
@@ -910,6 +981,10 @@ packages:
|
|
910
981
|
punycode: 2.1.1
|
911
982
|
dev: true
|
912
983
|
|
984
|
+
/tslib/1.14.1:
|
985
|
+
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
|
986
|
+
dev: false
|
987
|
+
|
913
988
|
/type-check/0.3.2:
|
914
989
|
resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=}
|
915
990
|
engines: {node: '>= 0.8.0'}
|
@@ -927,6 +1002,14 @@ packages:
|
|
927
1002
|
engines: {node: '>= 4.0.0'}
|
928
1003
|
dev: true
|
929
1004
|
|
1005
|
+
/value-enhancer/1.2.1:
|
1006
|
+
resolution: {integrity: sha512-11IrGi9xmVbr3twzuaMRrdUGzhdaE4eXvT6qYZlB5VrhK5uQzSPlYOEBlsIGH+dMvkakNkWGNIbxdZi87/MWuQ==}
|
1007
|
+
dev: false
|
1008
|
+
|
1009
|
+
/value-enhancer/1.3.0:
|
1010
|
+
resolution: {integrity: sha512-shI9N5ML4MGwD6bMu/My1l1+REFqhZGOuIjDN5Gf+k7gACfY2k8WtJEcqgdZMfepwivfhQxIfZp0riobUDZpDQ==}
|
1011
|
+
dev: false
|
1012
|
+
|
930
1013
|
/vanilla-lazyload/17.6.1:
|
931
1014
|
resolution: {integrity: sha512-Jn/WpWEIe+d6UUb8hw1qDO49W8lceFLW/ucWt8pdRcQvoQaucLtMnc9QHsm0Iz/xe4SCElEE2fyMZB8xC3e/6Q==}
|
932
1015
|
dev: true
|
@@ -1202,19 +1285,6 @@ packages:
|
|
1202
1285
|
version: 0.0.4
|
1203
1286
|
dev: true
|
1204
1287
|
|
1205
|
-
registry.npmmirror.com/@netless/telebox-insider/0.2.26:
|
1206
|
-
resolution: {integrity: sha512-HOBi9HWK0Zf0nvzfjM0V/0QmZ69ec7L/lCKMwRcfiQHxAAJ/zo9fEm468WocYFsliixWW5L7HwMN0eHb0mw7hA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@netless/telebox-insider/-/telebox-insider-0.2.26.tgz}
|
1207
|
-
name: '@netless/telebox-insider'
|
1208
|
-
version: 0.2.26
|
1209
|
-
dependencies:
|
1210
|
-
'@types/shallowequal': registry.npmmirror.com/@types/shallowequal/1.1.1
|
1211
|
-
eventemitter3: registry.npmmirror.com/eventemitter3/4.0.7
|
1212
|
-
shallowequal: registry.npmmirror.com/shallowequal/1.1.0
|
1213
|
-
side-effect-manager: registry.npmmirror.com/side-effect-manager/0.1.5
|
1214
|
-
stylefire: registry.npmmirror.com/stylefire/7.0.3
|
1215
|
-
value-enhancer: registry.npmmirror.com/value-enhancer/0.0.8
|
1216
|
-
dev: false
|
1217
|
-
|
1218
1288
|
registry.npmmirror.com/@netless/xml-js/1.6.15:
|
1219
1289
|
resolution: {integrity: sha512-e0emMs7YtDB/ATUns1SJ61R9n9nfVvwwFodoc539Qt0ScksaCLCaFWgpEbLloj9sr60ry6Xd8QFHKULFIZB6zA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@netless/xml-js/-/xml-js-1.6.15.tgz}
|
1220
1290
|
name: '@netless/xml-js'
|
@@ -1249,24 +1319,6 @@ packages:
|
|
1249
1319
|
fastq: registry.npmmirror.com/fastq/1.13.0
|
1250
1320
|
dev: true
|
1251
1321
|
|
1252
|
-
registry.npmmirror.com/@popmotion/easing/1.0.2:
|
1253
|
-
resolution: {integrity: sha512-IkdW0TNmRnWTeWI7aGQIVDbKXPWHVEYdGgd5ZR4SH/Ty/61p63jCjrPxX1XrR7IGkl08bjhJROStD7j+RKgoIw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@popmotion/easing/-/easing-1.0.2.tgz}
|
1254
|
-
name: '@popmotion/easing'
|
1255
|
-
version: 1.0.2
|
1256
|
-
dev: false
|
1257
|
-
|
1258
|
-
registry.npmmirror.com/@popmotion/popcorn/0.4.4:
|
1259
|
-
resolution: {integrity: sha512-jYO/8319fKoNLMlY4ZJPiPu8Ea8occYwRZhxpaNn/kZsK4QG2E7XFlXZMJBsTWDw7I1i0uaqyC4zn1nwEezLzg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@popmotion/popcorn/-/popcorn-0.4.4.tgz}
|
1260
|
-
name: '@popmotion/popcorn'
|
1261
|
-
version: 0.4.4
|
1262
|
-
dependencies:
|
1263
|
-
'@popmotion/easing': registry.npmmirror.com/@popmotion/easing/1.0.2
|
1264
|
-
framesync: registry.npmmirror.com/framesync/4.1.0
|
1265
|
-
hey-listen: registry.npmmirror.com/hey-listen/1.0.8
|
1266
|
-
style-value-types: registry.npmmirror.com/style-value-types/3.2.0
|
1267
|
-
tslib: registry.npmmirror.com/tslib/1.14.1
|
1268
|
-
dev: false
|
1269
|
-
|
1270
1322
|
registry.npmmirror.com/@protobufjs/aspromise/1.1.2:
|
1271
1323
|
resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz}
|
1272
1324
|
name: '@protobufjs/aspromise'
|
@@ -1522,12 +1574,6 @@ packages:
|
|
1522
1574
|
version: 0.12.1
|
1523
1575
|
dev: false
|
1524
1576
|
|
1525
|
-
registry.npmmirror.com/@types/shallowequal/1.1.1:
|
1526
|
-
resolution: {integrity: sha512-Lhni3aX80zbpdxRuWhnuYPm8j8UQaa571lHP/xI4W+7BAFhSIhRReXnqjEgT/XzPoXZTJkCqstFMJ8CZTK6IlQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/shallowequal/-/shallowequal-1.1.1.tgz}
|
1527
|
-
name: '@types/shallowequal'
|
1528
|
-
version: 1.1.1
|
1529
|
-
dev: false
|
1530
|
-
|
1531
1577
|
registry.npmmirror.com/@types/sinonjs__fake-timers/6.0.4:
|
1532
1578
|
resolution: {integrity: sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz}
|
1533
1579
|
name: '@types/sinonjs__fake-timers'
|
@@ -3077,6 +3123,7 @@ packages:
|
|
3077
3123
|
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz}
|
3078
3124
|
name: eventemitter3
|
3079
3125
|
version: 4.0.7
|
3126
|
+
dev: true
|
3080
3127
|
|
3081
3128
|
registry.npmmirror.com/execa/4.1.0:
|
3082
3129
|
resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/execa/-/execa-4.1.0.tgz}
|
@@ -3254,14 +3301,6 @@ packages:
|
|
3254
3301
|
version: 4.2.0
|
3255
3302
|
dev: true
|
3256
3303
|
|
3257
|
-
registry.npmmirror.com/framesync/4.1.0:
|
3258
|
-
resolution: {integrity: sha512-MmgZ4wCoeVxNbx2xp5hN/zPDCbLSKiDt4BbbslK7j/pM2lg5S0vhTNv1v8BCVb99JPIo6hXBFdwzU7Q4qcAaoQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/framesync/-/framesync-4.1.0.tgz}
|
3259
|
-
name: framesync
|
3260
|
-
version: 4.1.0
|
3261
|
-
dependencies:
|
3262
|
-
hey-listen: registry.npmmirror.com/hey-listen/1.0.8
|
3263
|
-
dev: false
|
3264
|
-
|
3265
3304
|
registry.npmmirror.com/fs-extra/9.1.0:
|
3266
3305
|
resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz}
|
3267
3306
|
name: fs-extra
|
@@ -3457,12 +3496,6 @@ packages:
|
|
3457
3496
|
version: 1.1.0
|
3458
3497
|
dev: true
|
3459
3498
|
|
3460
|
-
registry.npmmirror.com/hey-listen/1.0.8:
|
3461
|
-
resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/hey-listen/-/hey-listen-1.0.8.tgz}
|
3462
|
-
name: hey-listen
|
3463
|
-
version: 1.0.8
|
3464
|
-
dev: false
|
3465
|
-
|
3466
3499
|
registry.npmmirror.com/hsl-regex/1.0.0:
|
3467
3500
|
resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz}
|
3468
3501
|
name: hsl-regex
|
@@ -5524,12 +5557,6 @@ packages:
|
|
5524
5557
|
lru-cache: registry.npmmirror.com/lru-cache/6.0.0
|
5525
5558
|
dev: true
|
5526
5559
|
|
5527
|
-
registry.npmmirror.com/shallowequal/1.1.0:
|
5528
|
-
resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/shallowequal/-/shallowequal-1.1.0.tgz}
|
5529
|
-
name: shallowequal
|
5530
|
-
version: 1.1.0
|
5531
|
-
dev: false
|
5532
|
-
|
5533
5560
|
registry.npmmirror.com/shebang-command/2.0.0:
|
5534
5561
|
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz}
|
5535
5562
|
name: shebang-command
|
@@ -5556,12 +5583,6 @@ packages:
|
|
5556
5583
|
object-inspect: registry.npmmirror.com/object-inspect/1.12.0
|
5557
5584
|
dev: true
|
5558
5585
|
|
5559
|
-
registry.npmmirror.com/side-effect-manager/0.1.5:
|
5560
|
-
resolution: {integrity: sha512-aAEXMS+9qW7rY2cwq4S6UjW3IBO/ZLWRI0sH1oGJ1eDE7YBFR1TW950qffnpx/0hByusAOVbu2zjThk9Vcjs+Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/side-effect-manager/-/side-effect-manager-0.1.5.tgz}
|
5561
|
-
name: side-effect-manager
|
5562
|
-
version: 0.1.5
|
5563
|
-
dev: false
|
5564
|
-
|
5565
5586
|
registry.npmmirror.com/signal-exit/3.0.7:
|
5566
5587
|
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz}
|
5567
5588
|
name: signal-exit
|
@@ -5741,27 +5762,6 @@ packages:
|
|
5741
5762
|
engines: {node: '>=8'}
|
5742
5763
|
dev: true
|
5743
5764
|
|
5744
|
-
registry.npmmirror.com/style-value-types/3.2.0:
|
5745
|
-
resolution: {integrity: sha512-ih0mGsrYYmVvdDi++/66O6BaQPRPRMQHoZevNNdMMcPlP/cH28Rnfsqf1UEba/Bwfuw9T8BmIMwbGdzsPwQKrQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/style-value-types/-/style-value-types-3.2.0.tgz}
|
5746
|
-
name: style-value-types
|
5747
|
-
version: 3.2.0
|
5748
|
-
dependencies:
|
5749
|
-
hey-listen: registry.npmmirror.com/hey-listen/1.0.8
|
5750
|
-
tslib: registry.npmmirror.com/tslib/1.14.1
|
5751
|
-
dev: false
|
5752
|
-
|
5753
|
-
registry.npmmirror.com/stylefire/7.0.3:
|
5754
|
-
resolution: {integrity: sha512-Q0l7NSeFz/OkX+o6/7Zg3VZxSAZeQzQpYomWmIpOehFM/rJNMSLVX5fgg6Q48ut2ETNKwdhm97mPNU643EBCoQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stylefire/-/stylefire-7.0.3.tgz}
|
5755
|
-
name: stylefire
|
5756
|
-
version: 7.0.3
|
5757
|
-
dependencies:
|
5758
|
-
'@popmotion/popcorn': registry.npmmirror.com/@popmotion/popcorn/0.4.4
|
5759
|
-
framesync: registry.npmmirror.com/framesync/4.1.0
|
5760
|
-
hey-listen: registry.npmmirror.com/hey-listen/1.0.8
|
5761
|
-
style-value-types: registry.npmmirror.com/style-value-types/3.2.0
|
5762
|
-
tslib: registry.npmmirror.com/tslib/1.14.1
|
5763
|
-
dev: false
|
5764
|
-
|
5765
5765
|
registry.npmmirror.com/stylehacks/4.0.3:
|
5766
5766
|
resolution: {integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz}
|
5767
5767
|
name: stylehacks
|
@@ -5930,6 +5930,7 @@ packages:
|
|
5930
5930
|
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz}
|
5931
5931
|
name: tslib
|
5932
5932
|
version: 1.14.1
|
5933
|
+
dev: true
|
5933
5934
|
|
5934
5935
|
registry.npmmirror.com/tslib/2.3.1:
|
5935
5936
|
resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz}
|
@@ -6113,14 +6114,6 @@ packages:
|
|
6113
6114
|
version: 2.3.0
|
6114
6115
|
dev: true
|
6115
6116
|
|
6116
|
-
registry.npmmirror.com/value-enhancer/0.0.8:
|
6117
|
-
resolution: {integrity: sha512-ba8Rcyp9ItqlLWoyZVqHGaEdY1tqP1mcbRhlOrCnIrDxdl8rKNH1Rq45syo4IMYNSkwC2oV9xBWcV9dmL14aQg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/value-enhancer/-/value-enhancer-0.0.8.tgz}
|
6118
|
-
name: value-enhancer
|
6119
|
-
version: 0.0.8
|
6120
|
-
dependencies:
|
6121
|
-
side-effect-manager: registry.npmmirror.com/side-effect-manager/0.1.5
|
6122
|
-
dev: false
|
6123
|
-
|
6124
6117
|
registry.npmmirror.com/vendors/1.0.4:
|
6125
6118
|
resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz}
|
6126
6119
|
name: vendors
|
package/src/App/AppContext.ts
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
import { BoxNotCreatedError } from "../Utils/error";
|
2
|
-
import { putScenes } from "../Utils/Common";
|
3
2
|
import { Storage } from "./Storage";
|
4
3
|
import {
|
5
4
|
autorun,
|
@@ -14,12 +13,12 @@ import type {
|
|
14
13
|
Room,
|
15
14
|
SceneDefinition,
|
16
15
|
View,
|
17
|
-
EventListener as WhiteEventListener
|
16
|
+
EventListener as WhiteEventListener
|
18
17
|
} from "white-web-sdk";
|
19
18
|
import type { ReadonlyTeleBox } from "@netless/telebox-insider";
|
20
19
|
import type Emittery from "emittery";
|
21
20
|
import type { BoxManager } from "../BoxManager";
|
22
|
-
import type { AppEmitterEvent } from "../index";
|
21
|
+
import type { AppEmitterEvent, Member } from "../index";
|
23
22
|
import type { AppManager } from "../AppManager";
|
24
23
|
import type { AppProxy } from "./AppProxy";
|
25
24
|
import type {
|
@@ -27,11 +26,12 @@ import type {
|
|
27
26
|
MagixEventDispatcher,
|
28
27
|
MagixEventRemoveListener,
|
29
28
|
} from "./MagixEvent";
|
30
|
-
import
|
29
|
+
import { WhiteBoardView } from "./WhiteboardView";
|
30
|
+
import { findMemberByUid } from "../Helper";
|
31
|
+
import { MAX_PAGE_SIZE } from "../constants";
|
32
|
+
import { isNumber } from "lodash";
|
31
33
|
|
32
|
-
export class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOptions = any>
|
33
|
-
implements PageController
|
34
|
-
{
|
34
|
+
export class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOptions = any> {
|
35
35
|
public readonly emitter: Emittery<AppEmitterEvent<TAttributes>>;
|
36
36
|
public readonly mobxUtils = {
|
37
37
|
autorun,
|
@@ -48,6 +48,8 @@ export class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOption
|
|
48
48
|
private store = this.manager.store;
|
49
49
|
public readonly isAddApp: boolean;
|
50
50
|
public readonly isReplay = this.manager.isReplay;
|
51
|
+
private whiteBoardView?: WhiteBoardView;
|
52
|
+
public _viewWrapper?: HTMLElement;
|
51
53
|
|
52
54
|
constructor(
|
53
55
|
private manager: AppManager,
|
@@ -60,9 +62,13 @@ export class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOption
|
|
60
62
|
this.isAddApp = appProxy.isAddApp;
|
61
63
|
}
|
62
64
|
|
63
|
-
public
|
65
|
+
public get displayer() {
|
64
66
|
return this.manager.displayer;
|
65
|
-
}
|
67
|
+
}
|
68
|
+
|
69
|
+
public get destroyed() {
|
70
|
+
return this.appProxy.status === "destroyed";
|
71
|
+
}
|
66
72
|
|
67
73
|
/** @deprecated Use context.storage.state instead. */
|
68
74
|
public getAttributes = (): TAttributes | undefined => {
|
@@ -78,32 +84,58 @@ export class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOption
|
|
78
84
|
}
|
79
85
|
};
|
80
86
|
|
81
|
-
public
|
87
|
+
public get view(): View | undefined {
|
82
88
|
return this.appProxy.view;
|
83
89
|
};
|
84
90
|
|
85
|
-
public
|
86
|
-
|
87
|
-
|
88
|
-
view.divElement = dom as HTMLDivElement;
|
89
|
-
setTimeout(() => {
|
90
|
-
// 渲染需要时间,延迟 refresh
|
91
|
-
this.getRoom()?.refreshViewSize();
|
92
|
-
}, 1000);
|
91
|
+
public createWhiteBoardView = (size?: number): WhiteBoardView => {
|
92
|
+
if (this.whiteBoardView) {
|
93
|
+
return this.whiteBoardView;
|
93
94
|
}
|
94
|
-
|
95
|
+
let view = this.view;
|
96
|
+
if (!view) {
|
97
|
+
view = this.appProxy.createAppDir();
|
98
|
+
}
|
99
|
+
const viewWrapper = document.createElement("div");
|
100
|
+
this._viewWrapper = viewWrapper;
|
101
|
+
viewWrapper.className = "window-manager-view-wrapper";
|
102
|
+
this.box.$content.parentElement?.appendChild(viewWrapper);
|
103
|
+
const removeViewWrapper = () => {
|
104
|
+
this.box.$content.parentElement?.removeChild(viewWrapper);
|
105
|
+
this._viewWrapper = undefined;
|
106
|
+
}
|
107
|
+
view.divElement = viewWrapper;
|
108
|
+
this.appProxy.fireMemberStateChange();
|
109
|
+
if (this.isAddApp) {
|
110
|
+
this.ensurePageSize(size);
|
111
|
+
}
|
112
|
+
this.whiteBoardView = new WhiteBoardView(view, this, this.appProxy, removeViewWrapper, this.ensurePageSize);
|
113
|
+
return this.whiteBoardView;
|
114
|
+
}
|
115
|
+
|
116
|
+
private ensurePageSize = (size?: number) => {
|
117
|
+
if (!isNumber(size)) return;
|
118
|
+
if (!this.appProxy.scenePath) return;
|
119
|
+
if (this.appProxy.pageState.length >= size) return;
|
120
|
+
if (size <= 0 || size >= MAX_PAGE_SIZE) {
|
121
|
+
throw Error(`[WindowManager]: size ${size} muse be in range [1, ${MAX_PAGE_SIZE}]`);
|
122
|
+
}
|
123
|
+
const needInsert = size - this.appProxy.pageState.length;
|
124
|
+
const scenes = new Array(needInsert).fill({});
|
125
|
+
this.room?.putScenes(this.appProxy.scenePath, scenes);
|
126
|
+
}
|
95
127
|
|
96
128
|
public getInitScenePath = () => {
|
97
129
|
return this.manager.getAppInitPath(this.appId);
|
98
130
|
};
|
99
131
|
|
100
132
|
/** Get App writable status. */
|
101
|
-
public
|
102
|
-
return this.manager.canOperate;
|
133
|
+
public get isWritable(): boolean {
|
134
|
+
return this.manager.canOperate && !this.destroyed;
|
103
135
|
};
|
104
136
|
|
105
137
|
/** Get the App Window UI box. */
|
106
|
-
public
|
138
|
+
public get box(): ReadonlyTeleBox {
|
107
139
|
const box = this.boxManager.getBox(this.appId);
|
108
140
|
if (box) {
|
109
141
|
return box;
|
@@ -112,10 +144,25 @@ export class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOption
|
|
112
144
|
}
|
113
145
|
};
|
114
146
|
|
115
|
-
public
|
147
|
+
public get room(): Room | undefined {
|
116
148
|
return this.manager.room;
|
117
149
|
};
|
118
150
|
|
151
|
+
public get members() {
|
152
|
+
return this.manager.members;
|
153
|
+
}
|
154
|
+
|
155
|
+
public get memberState(): Member {
|
156
|
+
const self = findMemberByUid(this.room, this.manager.uid);
|
157
|
+
if (!self) {
|
158
|
+
throw new Error(`Member ${this.manager.uid} not found.`);
|
159
|
+
}
|
160
|
+
return {
|
161
|
+
uid: this.manager.uid,
|
162
|
+
...self,
|
163
|
+
}
|
164
|
+
}
|
165
|
+
|
119
166
|
/** @deprecated Use context.storage.setState instead. */
|
120
167
|
public setAttributes = (attributes: TAttributes) => {
|
121
168
|
this.manager.safeSetAttributes({ [this.appId]: attributes });
|
@@ -128,11 +175,12 @@ export class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOption
|
|
128
175
|
}
|
129
176
|
};
|
130
177
|
|
178
|
+
/** @deprecated Use Pages api instead. */
|
131
179
|
public setScenePath = async (scenePath: string): Promise<void> => {
|
132
180
|
if (!this.appProxy.box) return;
|
133
181
|
this.appProxy.setFullPath(scenePath);
|
134
182
|
// 兼容 15 版本 SDK 的切页
|
135
|
-
this.
|
183
|
+
this.room?.setScenePath(scenePath);
|
136
184
|
};
|
137
185
|
|
138
186
|
/** Get the local App options. */
|
@@ -196,55 +244,4 @@ export class AppContext<TAttributes = any, TMagixEventPayloads = any, TAppOption
|
|
196
244
|
public removeMagixEventListener = this.manager.displayer.removeMagixEventListener.bind(
|
197
245
|
this.manager.displayer
|
198
246
|
) as MagixEventRemoveListener<TMagixEventPayloads>;
|
199
|
-
|
200
|
-
/** PageController */
|
201
|
-
public nextPage = async (): Promise<boolean> => {
|
202
|
-
const nextIndex = this.pageState.index + 1;
|
203
|
-
if (nextIndex > this.pageState.length - 1) {
|
204
|
-
console.warn("[WindowManager] nextPage: index out of range");
|
205
|
-
return false;
|
206
|
-
}
|
207
|
-
this.appProxy.setSceneIndex(nextIndex);
|
208
|
-
return true;
|
209
|
-
};
|
210
|
-
|
211
|
-
public prevPage = async (): Promise<boolean> => {
|
212
|
-
const nextIndex = this.pageState.index - 1;
|
213
|
-
if (nextIndex < 0) {
|
214
|
-
console.warn("[WindowManager] prevPage: index out of range");
|
215
|
-
return false;
|
216
|
-
}
|
217
|
-
this.appProxy.setSceneIndex(nextIndex);
|
218
|
-
return true;
|
219
|
-
};
|
220
|
-
|
221
|
-
public addPage = async (params?: AddPageParams) => {
|
222
|
-
const after = params?.after;
|
223
|
-
const scene = params?.scene;
|
224
|
-
const scenePath = this.appProxy.scenePath;
|
225
|
-
if (!scenePath) return;
|
226
|
-
if (after) {
|
227
|
-
const nextIndex = this.pageState.index + 1;
|
228
|
-
putScenes(this.manager.room, scenePath, [scene || {}], nextIndex);
|
229
|
-
} else {
|
230
|
-
putScenes(this.manager.room, scenePath, [scene || {}]);
|
231
|
-
}
|
232
|
-
};
|
233
|
-
|
234
|
-
public removePage = async (index?: number): Promise<boolean> => {
|
235
|
-
const needRemoveIndex = index === undefined ? this.pageState.index : index;
|
236
|
-
if (this.pageState.length === 1) {
|
237
|
-
console.warn(`[WindowManager]: can not remove the last page`);
|
238
|
-
return false;
|
239
|
-
}
|
240
|
-
if (needRemoveIndex < 0 || needRemoveIndex >= this.pageState.length) {
|
241
|
-
console.warn(`[WindowManager]: page index ${index} out of range`);
|
242
|
-
return false;
|
243
|
-
}
|
244
|
-
return this.appProxy.removeSceneByIndex(needRemoveIndex);;
|
245
|
-
}
|
246
|
-
|
247
|
-
public get pageState(): PageState {
|
248
|
-
return this.appProxy.pageState;
|
249
|
-
}
|
250
247
|
}
|
@@ -9,11 +9,15 @@ export type AppPageStateParams = {
|
|
9
9
|
};
|
10
10
|
|
11
11
|
export class AppPageStateImpl {
|
12
|
-
|
12
|
+
public sceneNode: ScenesCallbacksNode | null = null;
|
13
|
+
private scenePath?: string;
|
14
|
+
private view?: View;
|
13
15
|
|
14
16
|
constructor(private params: AppPageStateParams) {
|
15
17
|
const { displayer, scenePath } = this.params;
|
18
|
+
this.view = this.params.view;
|
16
19
|
if (scenePath) {
|
20
|
+
this.scenePath = scenePath;
|
17
21
|
this.sceneNode = displayer.createScenesCallback(scenePath, {
|
18
22
|
onAddScene: this.onSceneChange,
|
19
23
|
onRemoveScene: this.onSceneChange,
|
@@ -21,24 +25,39 @@ export class AppPageStateImpl {
|
|
21
25
|
}
|
22
26
|
}
|
23
27
|
|
24
|
-
|
25
|
-
this.
|
28
|
+
public createSceneNode = (scenePath: string) => {
|
29
|
+
this.scenePath = scenePath;
|
30
|
+
if (this.sceneNode) {
|
31
|
+
this.sceneNode.dispose();
|
32
|
+
}
|
33
|
+
this.sceneNode = this.params.displayer.createScenesCallback(scenePath, {
|
34
|
+
onAddScene: this.onSceneChange,
|
35
|
+
onRemoveScene: this.onSceneChange,
|
36
|
+
});
|
37
|
+
return this.sceneNode;
|
38
|
+
}
|
39
|
+
|
40
|
+
public setView(view: View) {
|
41
|
+
this.view = view;
|
42
|
+
}
|
43
|
+
|
44
|
+
private onSceneChange = () => {
|
26
45
|
this.params.notifyPageStateChange();
|
27
46
|
};
|
28
47
|
|
29
48
|
public getFullPath(index: number) {
|
30
49
|
const scenes = this.sceneNode?.scenes;
|
31
|
-
if (this.
|
50
|
+
if (this.scenePath && scenes) {
|
32
51
|
const name = scenes[index];
|
33
52
|
if (name) {
|
34
|
-
return `${this.
|
53
|
+
return `${this.scenePath}/${name}`;
|
35
54
|
}
|
36
55
|
}
|
37
56
|
}
|
38
57
|
|
39
58
|
public toObject(): PageState {
|
40
59
|
return {
|
41
|
-
index: this.
|
60
|
+
index: this.view?.focusSceneIndex || 0,
|
42
61
|
length: this.sceneNode?.scenes.length || 0,
|
43
62
|
};
|
44
63
|
}
|