@netless/window-manager 0.4.72 → 0.4.73-beta.1
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 +1087 -38
- package/dist/index.js +14 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +133 -40
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/App/AppContext.ts +13 -5
- package/src/App/AppProxy.ts +2 -2
- package/src/App/MagixEvent/index.ts +38 -38
- package/src/App/Storage/StorageEvent.ts +13 -13
- package/src/App/Storage/index.ts +265 -242
- package/src/App/Storage/typings.ts +4 -2
- package/src/App/Storage/utils.ts +3 -3
- package/src/AppListener.ts +5 -5
- package/src/AttributesDelegate.ts +5 -7
- package/src/BoxEmitter.ts +12 -6
- package/src/BoxManager.ts +1 -1
- package/src/ContainerResizeObserver.ts +1 -1
- package/src/Helper.ts +67 -15
- package/src/InternalEmitter.ts +4 -3
- package/src/Page/index.ts +1 -1
- package/src/Register/index.ts +5 -7
- package/src/Register/loader.ts +1 -1
- package/src/Register/storage.ts +13 -13
- package/src/Utils/Common.ts +10 -5
- package/src/Utils/Reactive.ts +26 -25
- package/src/Utils/RoomHacker.ts +1 -1
- package/src/Utils/error.ts +0 -1
- package/src/View/IframeBridge.ts +627 -583
- package/src/View/MainView.ts +11 -2
- package/src/callback.ts +8 -1
- package/src/index.ts +8 -21
- package/src/typings.ts +11 -6
- package/dist/App/AppContext.d.ts +0 -79
- package/dist/App/AppPageStateImpl.d.ts +0 -17
- package/dist/App/AppProxy.d.ts +0 -67
- package/dist/App/MagixEvent/index.d.ts +0 -29
- package/dist/App/Storage/StorageEvent.d.ts +0 -8
- package/dist/App/Storage/index.d.ts +0 -39
- package/dist/App/Storage/typings.d.ts +0 -22
- package/dist/App/Storage/utils.d.ts +0 -5
- package/dist/App/index.d.ts +0 -2
- package/dist/AppListener.d.ts +0 -21
- package/dist/AppManager.d.ts +0 -110
- package/dist/AttributesDelegate.d.ts +0 -91
- package/dist/BoxEmitter.d.ts +0 -34
- package/dist/BoxManager.d.ts +0 -98
- package/dist/BuiltinApps.d.ts +0 -5
- package/dist/ContainerResizeObserver.d.ts +0 -11
- package/dist/Cursor/Cursor.d.ts +0 -43
- package/dist/Cursor/icons.d.ts +0 -3
- package/dist/Cursor/icons2.d.ts +0 -4
- package/dist/Cursor/index.d.ts +0 -55
- package/dist/Helper.d.ts +0 -11
- package/dist/InternalEmitter.d.ts +0 -34
- package/dist/Page/PageController.d.ts +0 -21
- package/dist/Page/index.d.ts +0 -3
- package/dist/PageState.d.ts +0 -9
- package/dist/ReconnectRefresher.d.ts +0 -24
- package/dist/RedoUndo.d.ts +0 -18
- package/dist/Register/index.d.ts +0 -28
- package/dist/Register/loader.d.ts +0 -4
- package/dist/Register/storage.d.ts +0 -8
- package/dist/Utils/AppCreateQueue.d.ts +0 -15
- package/dist/Utils/Common.d.ts +0 -22
- package/dist/Utils/Reactive.d.ts +0 -6
- package/dist/Utils/RoomHacker.d.ts +0 -3
- package/dist/Utils/error.d.ts +0 -27
- package/dist/Utils/log.d.ts +0 -1
- package/dist/View/IframeBridge.d.ts +0 -146
- package/dist/View/MainView.d.ts +0 -58
- package/dist/View/ViewManager.d.ts +0 -13
- package/dist/callback.d.ts +0 -37
- package/dist/constants.d.ts +0 -48
- package/dist/typings.d.ts +0 -84
package/dist/index.mjs
CHANGED
@@ -22,7 +22,6 @@ import Emittery from "emittery";
|
|
22
22
|
import { debounce as debounce$1, isEqual, omit, isObject as isObject$1, has, get, size as size$1, mapValues, noop as noop$2, pick, isEmpty, isInteger, orderBy, isFunction, isNumber, isNull } from "lodash";
|
23
23
|
import { ScenePathType, UpdateEventKind, listenUpdated, unlistenUpdated, reaction, autorun, toJS, listenDisposed, unlistenDisposed, ViewMode, AnimationMode, isPlayer, isRoom, WhiteVersion, ApplianceNames, RoomPhase, PlayerPhase, InvisiblePlugin } from "white-web-sdk";
|
24
24
|
import { v4 } from "uuid";
|
25
|
-
import { genUID as genUID$1, SideEffectManager as SideEffectManager$1 } from "side-effect-manager";
|
26
25
|
import { ResizeObserver as ResizeObserver$3 } from "@juggle/resize-observer";
|
27
26
|
import videojs from "video.js";
|
28
27
|
var Events = /* @__PURE__ */ ((Events2) => {
|
@@ -624,6 +623,61 @@ class BindContainerRoomPhaseInvalidError extends Error {
|
|
624
623
|
this.message = "[WindowManager]: room phase only Connected can be bindContainer";
|
625
624
|
}
|
626
625
|
}
|
626
|
+
const e$2 = "!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", s$2 = e$2.length, t$3 = Array(20), r$4 = () => {
|
627
|
+
for (let r2 = 0; r2 < 20; r2++)
|
628
|
+
t$3[r2] = e$2.charAt(Math.random() * s$2);
|
629
|
+
return t$3.join("");
|
630
|
+
};
|
631
|
+
class o$1 {
|
632
|
+
constructor() {
|
633
|
+
this.disposers = /* @__PURE__ */ new Map();
|
634
|
+
}
|
635
|
+
add(e2, s2 = r$4()) {
|
636
|
+
return this.flush(s2), this.disposers.set(s2, e2()), s2;
|
637
|
+
}
|
638
|
+
addDisposer(e2, s2 = r$4()) {
|
639
|
+
return this.flush(s2), this.disposers.set(s2, e2), s2;
|
640
|
+
}
|
641
|
+
addEventListener(e2, s2, t2, o2, i2 = r$4()) {
|
642
|
+
return this.add(() => (e2.addEventListener(s2, t2, o2), () => e2.removeEventListener(s2, t2, o2)), i2), i2;
|
643
|
+
}
|
644
|
+
setTimeout(e2, s2, t2 = r$4()) {
|
645
|
+
return this.add(() => {
|
646
|
+
const r2 = window.setTimeout(() => {
|
647
|
+
this.remove(t2), e2();
|
648
|
+
}, s2);
|
649
|
+
return () => window.clearTimeout(r2);
|
650
|
+
}, t2);
|
651
|
+
}
|
652
|
+
setInterval(e2, s2, t2 = r$4()) {
|
653
|
+
return this.add(() => {
|
654
|
+
const t3 = window.setInterval(e2, s2);
|
655
|
+
return () => window.clearInterval(t3);
|
656
|
+
}, t2);
|
657
|
+
}
|
658
|
+
remove(e2) {
|
659
|
+
const s2 = this.disposers.get(e2);
|
660
|
+
return this.disposers.delete(e2), s2;
|
661
|
+
}
|
662
|
+
flush(e2) {
|
663
|
+
const s2 = this.remove(e2);
|
664
|
+
if (s2)
|
665
|
+
try {
|
666
|
+
s2();
|
667
|
+
} catch (t2) {
|
668
|
+
console.error(t2);
|
669
|
+
}
|
670
|
+
}
|
671
|
+
flushAll() {
|
672
|
+
this.disposers.forEach((e2) => {
|
673
|
+
try {
|
674
|
+
e2();
|
675
|
+
} catch (s2) {
|
676
|
+
console.error(s2);
|
677
|
+
}
|
678
|
+
}), this.disposers.clear();
|
679
|
+
}
|
680
|
+
}
|
627
681
|
const onObjectByEvent = (event) => {
|
628
682
|
return (object, func) => {
|
629
683
|
if (object === void 0)
|
@@ -691,12 +745,12 @@ function isRef(e2) {
|
|
691
745
|
return Boolean(has(e2, "__isRef"));
|
692
746
|
}
|
693
747
|
function makeRef(v2) {
|
694
|
-
return { k:
|
748
|
+
return { k: r$4(), v: v2, __isRef: true };
|
695
749
|
}
|
696
750
|
const STORAGE_NS = "_WM-STORAGE_";
|
697
751
|
class Storage {
|
698
752
|
constructor(context, id2, defaultState) {
|
699
|
-
this._sideEffect = new
|
753
|
+
this._sideEffect = new o$1();
|
700
754
|
this._destroyed = false;
|
701
755
|
this._refMap = /* @__PURE__ */ new WeakMap();
|
702
756
|
this._lastValue = /* @__PURE__ */ new Map();
|
@@ -1080,7 +1134,12 @@ class AppContext {
|
|
1080
1134
|
return this.appProxy.kind;
|
1081
1135
|
}
|
1082
1136
|
dispatchAppEvent(type, value) {
|
1083
|
-
internalEmitter.emit(`custom-${this.kind}`, {
|
1137
|
+
internalEmitter.emit(`custom-${this.kind}`, {
|
1138
|
+
kind: this.kind,
|
1139
|
+
appId: this.appId,
|
1140
|
+
type,
|
1141
|
+
value
|
1142
|
+
});
|
1084
1143
|
}
|
1085
1144
|
}
|
1086
1145
|
class AppPageStateImpl {
|
@@ -1803,7 +1862,7 @@ class MainViewProxy {
|
|
1803
1862
|
this.mainViewIsAddListener = false;
|
1804
1863
|
this.store = this.manager.store;
|
1805
1864
|
this.viewMode = this.manager.windowManger.viewMode;
|
1806
|
-
this.sideEffectManager = new
|
1865
|
+
this.sideEffectManager = new o$1();
|
1807
1866
|
this.syncCamera = () => {
|
1808
1867
|
if (!this.polling || this.viewMode !== ViewMode.Broadcaster)
|
1809
1868
|
return;
|
@@ -1978,6 +2037,9 @@ class MainViewProxy {
|
|
1978
2037
|
this.mainView.divElement = divElement;
|
1979
2038
|
this.addMainViewListener();
|
1980
2039
|
this.start();
|
2040
|
+
if (WindowManager.supportTeachingAidsPlugin) {
|
2041
|
+
callbacks$1.emit("onMainViewRebind", this.mainView);
|
2042
|
+
}
|
1981
2043
|
}
|
1982
2044
|
addMainViewListener() {
|
1983
2045
|
if (this.mainViewIsAddListener)
|
@@ -2124,7 +2186,7 @@ class AppManager {
|
|
2124
2186
|
this.mainViewScenesLength = 0;
|
2125
2187
|
this.callbacksNode = null;
|
2126
2188
|
this.appCreateQueue = new AppCreateQueue();
|
2127
|
-
this.sideEffectManager = new
|
2189
|
+
this.sideEffectManager = new o$1();
|
2128
2190
|
this.sceneState = null;
|
2129
2191
|
this.rootDirRemoving = false;
|
2130
2192
|
this.onRemoveScenes = async (params) => {
|
@@ -2850,16 +2912,59 @@ const findMemberByUid = (room, uid) => {
|
|
2850
2912
|
return result;
|
2851
2913
|
};
|
2852
2914
|
const createInvisiblePlugin = async (room) => {
|
2853
|
-
|
2854
|
-
|
2915
|
+
let manager = room.getInvisiblePlugin(WindowManager.kind);
|
2916
|
+
if (manager)
|
2855
2917
|
return manager;
|
2856
|
-
|
2857
|
-
|
2858
|
-
|
2859
|
-
|
2860
|
-
|
2861
|
-
|
2918
|
+
let resolve;
|
2919
|
+
const promise = new Promise((r2) => {
|
2920
|
+
WindowManager._resolve = resolve = r2;
|
2921
|
+
});
|
2922
|
+
let wasReadonly = false;
|
2923
|
+
const canOperate = isRoomTokenWritable(room);
|
2924
|
+
if (!room.isWritable && canOperate) {
|
2925
|
+
wasReadonly = true;
|
2926
|
+
await pRetry(async (count) => {
|
2927
|
+
log(`switching to writable (x${count})`);
|
2928
|
+
await room.setWritable(true);
|
2929
|
+
}, { retries: 10, maxTimeout: 5e3 });
|
2930
|
+
}
|
2931
|
+
if (room.isWritable) {
|
2932
|
+
log("creating InvisiblePlugin...");
|
2933
|
+
room.createInvisiblePlugin(WindowManager, {}).catch(console.warn);
|
2934
|
+
} else {
|
2935
|
+
if (canOperate)
|
2936
|
+
console.warn("[WindowManager]: failed to switch to writable");
|
2937
|
+
console.warn("[WindowManager]: waiting for others to create the plugin...");
|
2938
|
+
}
|
2939
|
+
const timeout = setTimeout(() => {
|
2940
|
+
console.warn("[WindowManager]: no one called createInvisiblePlugin() after 20 seconds");
|
2941
|
+
}, 2e4);
|
2942
|
+
const abort = setTimeout(() => {
|
2943
|
+
throw new Error("[WindowManager]: no one called createInvisiblePlugin() after 60 seconds");
|
2944
|
+
}, 6e4);
|
2945
|
+
const interval = setInterval(() => {
|
2946
|
+
manager = room.getInvisiblePlugin(WindowManager.kind);
|
2947
|
+
if (manager) {
|
2948
|
+
clearTimeout(abort);
|
2949
|
+
clearTimeout(timeout);
|
2950
|
+
clearInterval(interval);
|
2951
|
+
resolve(manager);
|
2952
|
+
if (wasReadonly && room.isWritable) {
|
2953
|
+
setTimeout(() => room.setWritable(false).catch(console.warn), 500);
|
2954
|
+
}
|
2862
2955
|
}
|
2956
|
+
}, 200);
|
2957
|
+
return promise;
|
2958
|
+
};
|
2959
|
+
const isRoomTokenWritable = (room) => {
|
2960
|
+
try {
|
2961
|
+
const str = atob(room.roomToken.slice("NETLESSROOM_".length));
|
2962
|
+
const index2 = str.indexOf("&role=");
|
2963
|
+
const role = +str[index2 + "&role=".length];
|
2964
|
+
return role < 2;
|
2965
|
+
} catch (error) {
|
2966
|
+
console.error(error);
|
2967
|
+
return false;
|
2863
2968
|
}
|
2864
2969
|
};
|
2865
2970
|
const ResizeObserver$2 = window.ResizeObserver || ResizeObserver$3;
|
@@ -7456,7 +7561,7 @@ class CursorManager {
|
|
7456
7561
|
this.enableCursor = enableCursor;
|
7457
7562
|
this.cursorInstances = /* @__PURE__ */ new Map();
|
7458
7563
|
this.userApplianceIcons = {};
|
7459
|
-
this.sideEffectManager = new
|
7564
|
+
this.sideEffectManager = new o$1();
|
7460
7565
|
this.store = this.manager.store;
|
7461
7566
|
this.leaveFlag = true;
|
7462
7567
|
this._style = "default";
|
@@ -17967,7 +18072,7 @@ const _IframeBridge = class {
|
|
17967
18072
|
this.allowAppliances = ["clicker"];
|
17968
18073
|
this.bridgeDisposer = noop$2;
|
17969
18074
|
this.rootRect = null;
|
17970
|
-
this.sideEffectManager = new
|
18075
|
+
this.sideEffectManager = new o$1();
|
17971
18076
|
this.execListenIframe = debounce$1((options2) => {
|
17972
18077
|
this.listenIframe(options2);
|
17973
18078
|
}, 50);
|
@@ -18137,7 +18242,9 @@ const _IframeBridge = class {
|
|
18137
18242
|
const room = this.displayer;
|
18138
18243
|
const scenes = room.entireScenes()[this.attributes.displaySceneDir];
|
18139
18244
|
if (!scenes || scenes.length !== page) {
|
18140
|
-
const genScenes = times(page, (index2) => ({
|
18245
|
+
const genScenes = times(page, (index2) => ({
|
18246
|
+
name: String(index2 + 1)
|
18247
|
+
}));
|
18141
18248
|
room.putScenes(this.attributes.displaySceneDir, genScenes);
|
18142
18249
|
this.manager.setMainViewScenePath(this.attributes.displaySceneDir);
|
18143
18250
|
}
|
@@ -18426,14 +18533,17 @@ const reconnectRefresher = new ReconnectRefresher({ emitter: internalEmitter });
|
|
18426
18533
|
const _WindowManager = class extends InvisiblePlugin {
|
18427
18534
|
constructor(context) {
|
18428
18535
|
super(context);
|
18429
|
-
this.version = "0.4.
|
18430
|
-
this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.3.1", "@netless/telebox-insider": "0.2.28", "emittery": "^0.9.2", "lodash": "^4.17.21", "p-retry": "^4.6.1", "
|
18536
|
+
this.version = "0.4.73-beta.1";
|
18537
|
+
this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.3.1", "@netless/telebox-insider": "0.2.28", "emittery": "^0.9.2", "lodash": "^4.17.21", "p-retry": "^4.6.1", "uuid": "^7.0.3", "video.js": ">=7" }, "peerDependencies": { "jspdf": "2.5.1", "white-web-sdk": "^2.16.0" }, "devDependencies": { "@hyrious/dts": "^0.2.2", "@netless/app-docs-viewer": "^0.2.17", "@netless/app-media-player": "0.1.0-beta.6", "@rollup/plugin-commonjs": "^20.0.0", "@rollup/plugin-node-resolve": "^13.0.4", "@rollup/plugin-url": "^6.1.0", "@sveltejs/vite-plugin-svelte": "^1.0.0-next.22", "@tsconfig/svelte": "^2.0.1", "@types/debug": "^4.1.7", "@types/lodash": "^4.14.182", "@types/lodash-es": "^4.17.4", "@types/uuid": "^8.3.1", "@typescript-eslint/eslint-plugin": "^4.30.0", "@typescript-eslint/parser": "^4.30.0", "@vitest/ui": "^0.14.1", "cypress": "^8.7.0", "dotenv": "^10.0.0", "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-svelte3": "^3.2.0", "jsdom": "^19.0.0", "jspdf": "^2.5.1", "less": "^4.1.1", "prettier": "^2.3.2", "prettier-plugin-svelte": "^2.4.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^3.14.1", "side-effect-manager": "0.1.5", "svelte": "^3.42.4", "typescript": "^4.5.5", "vite": "^2.9.9", "vitest": "^0.14.1", "white-web-sdk": "2.16.43" } };
|
18431
18538
|
this.emitter = callbacks$1;
|
18432
18539
|
this.viewMode = ViewMode.Broadcaster;
|
18433
18540
|
this.isReplay = isPlayer(this.displayer);
|
18434
18541
|
this.containerSizeRatio = _WindowManager.containerSizeRatio;
|
18435
18542
|
_WindowManager.displayer = context.displayer;
|
18436
|
-
window.NETLESS_DEPS = { "dependencies": { "@juggle/resize-observer": "^3.3.1", "@netless/telebox-insider": "0.2.28", "emittery": "^0.9.2", "lodash": "^4.17.21", "p-retry": "^4.6.1", "
|
18543
|
+
window.NETLESS_DEPS = { "dependencies": { "@juggle/resize-observer": "^3.3.1", "@netless/telebox-insider": "0.2.28", "emittery": "^0.9.2", "lodash": "^4.17.21", "p-retry": "^4.6.1", "uuid": "^7.0.3", "video.js": ">=7" }, "peerDependencies": { "jspdf": "2.5.1", "white-web-sdk": "^2.16.0" }, "devDependencies": { "@hyrious/dts": "^0.2.2", "@netless/app-docs-viewer": "^0.2.17", "@netless/app-media-player": "0.1.0-beta.6", "@rollup/plugin-commonjs": "^20.0.0", "@rollup/plugin-node-resolve": "^13.0.4", "@rollup/plugin-url": "^6.1.0", "@sveltejs/vite-plugin-svelte": "^1.0.0-next.22", "@tsconfig/svelte": "^2.0.1", "@types/debug": "^4.1.7", "@types/lodash": "^4.14.182", "@types/lodash-es": "^4.17.4", "@types/uuid": "^8.3.1", "@typescript-eslint/eslint-plugin": "^4.30.0", "@typescript-eslint/parser": "^4.30.0", "@vitest/ui": "^0.14.1", "cypress": "^8.7.0", "dotenv": "^10.0.0", "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-svelte3": "^3.2.0", "jsdom": "^19.0.0", "jspdf": "^2.5.1", "less": "^4.1.1", "prettier": "^2.3.2", "prettier-plugin-svelte": "^2.4.0", "rollup-plugin-analyzer": "^4.0.0", "rollup-plugin-styles": "^3.14.1", "side-effect-manager": "0.1.5", "svelte": "^3.42.4", "typescript": "^4.5.5", "vite": "^2.9.9", "vitest": "^0.14.1", "white-web-sdk": "2.16.43" } };
|
18544
|
+
}
|
18545
|
+
static onCreate(manager) {
|
18546
|
+
_WindowManager._resolve(manager);
|
18437
18547
|
}
|
18438
18548
|
static async mount(params) {
|
18439
18549
|
const room = params.room;
|
@@ -18505,26 +18615,8 @@ const _WindowManager = class extends InvisiblePlugin {
|
|
18505
18615
|
}
|
18506
18616
|
return manager;
|
18507
18617
|
}
|
18508
|
-
static
|
18509
|
-
|
18510
|
-
if (!manager) {
|
18511
|
-
if (isRoom(room)) {
|
18512
|
-
if (room.isWritable === false) {
|
18513
|
-
try {
|
18514
|
-
await room.setWritable(true);
|
18515
|
-
} catch (error) {
|
18516
|
-
throw new Error("[WindowManger]: room must be switched to be writable");
|
18517
|
-
}
|
18518
|
-
manager = await createInvisiblePlugin(room);
|
18519
|
-
manager == null ? void 0 : manager.ensureAttributes();
|
18520
|
-
await wait(500);
|
18521
|
-
await room.setWritable(false);
|
18522
|
-
} else {
|
18523
|
-
manager = await createInvisiblePlugin(room);
|
18524
|
-
}
|
18525
|
-
}
|
18526
|
-
}
|
18527
|
-
return manager;
|
18618
|
+
static initManager(room) {
|
18619
|
+
return createInvisiblePlugin(room);
|
18528
18620
|
}
|
18529
18621
|
static initContainer(manager, container, params) {
|
18530
18622
|
const { chessboard, overwriteStyles, fullscreen } = params;
|
@@ -19175,6 +19267,7 @@ WindowManager.kind = "WindowManager";
|
|
19175
19267
|
WindowManager.debug = false;
|
19176
19268
|
WindowManager.containerSizeRatio = DEFAULT_CONTAINER_RATIO;
|
19177
19269
|
WindowManager.isCreated = false;
|
19270
|
+
WindowManager._resolve = (_manager) => void 0;
|
19178
19271
|
setupBuiltin();
|
19179
19272
|
export { AppCreateError, AppManagerNotInitError, AppNotRegisterError, BindContainerRoomPhaseInvalidError, BoxManagerNotFoundError, BoxNotCreatedError, BuiltinApps, DomEvents, IframeBridge, IframeEvents, InvalidScenePath, ParamsInvalidError, WhiteWebSDKInvalidError, WindowManager, calculateNextIndex, reconnectRefresher };
|
19180
19273
|
//# sourceMappingURL=index.mjs.map
|