@netless/window-manager 0.4.73-beta.0 → 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 +130 -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 +7 -2
- package/src/callback.ts +7 -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 -38
- 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;
|
@@ -2127,7 +2186,7 @@ class AppManager {
|
|
2127
2186
|
this.mainViewScenesLength = 0;
|
2128
2187
|
this.callbacksNode = null;
|
2129
2188
|
this.appCreateQueue = new AppCreateQueue();
|
2130
|
-
this.sideEffectManager = new
|
2189
|
+
this.sideEffectManager = new o$1();
|
2131
2190
|
this.sceneState = null;
|
2132
2191
|
this.rootDirRemoving = false;
|
2133
2192
|
this.onRemoveScenes = async (params) => {
|
@@ -2853,16 +2912,59 @@ const findMemberByUid = (room, uid) => {
|
|
2853
2912
|
return result;
|
2854
2913
|
};
|
2855
2914
|
const createInvisiblePlugin = async (room) => {
|
2856
|
-
|
2857
|
-
|
2915
|
+
let manager = room.getInvisiblePlugin(WindowManager.kind);
|
2916
|
+
if (manager)
|
2858
2917
|
return manager;
|
2859
|
-
|
2860
|
-
|
2861
|
-
|
2862
|
-
|
2863
|
-
|
2864
|
-
|
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
|
+
}
|
2865
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;
|
2866
2968
|
}
|
2867
2969
|
};
|
2868
2970
|
const ResizeObserver$2 = window.ResizeObserver || ResizeObserver$3;
|
@@ -7459,7 +7561,7 @@ class CursorManager {
|
|
7459
7561
|
this.enableCursor = enableCursor;
|
7460
7562
|
this.cursorInstances = /* @__PURE__ */ new Map();
|
7461
7563
|
this.userApplianceIcons = {};
|
7462
|
-
this.sideEffectManager = new
|
7564
|
+
this.sideEffectManager = new o$1();
|
7463
7565
|
this.store = this.manager.store;
|
7464
7566
|
this.leaveFlag = true;
|
7465
7567
|
this._style = "default";
|
@@ -17970,7 +18072,7 @@ const _IframeBridge = class {
|
|
17970
18072
|
this.allowAppliances = ["clicker"];
|
17971
18073
|
this.bridgeDisposer = noop$2;
|
17972
18074
|
this.rootRect = null;
|
17973
|
-
this.sideEffectManager = new
|
18075
|
+
this.sideEffectManager = new o$1();
|
17974
18076
|
this.execListenIframe = debounce$1((options2) => {
|
17975
18077
|
this.listenIframe(options2);
|
17976
18078
|
}, 50);
|
@@ -18140,7 +18242,9 @@ const _IframeBridge = class {
|
|
18140
18242
|
const room = this.displayer;
|
18141
18243
|
const scenes = room.entireScenes()[this.attributes.displaySceneDir];
|
18142
18244
|
if (!scenes || scenes.length !== page) {
|
18143
|
-
const genScenes = times(page, (index2) => ({
|
18245
|
+
const genScenes = times(page, (index2) => ({
|
18246
|
+
name: String(index2 + 1)
|
18247
|
+
}));
|
18144
18248
|
room.putScenes(this.attributes.displaySceneDir, genScenes);
|
18145
18249
|
this.manager.setMainViewScenePath(this.attributes.displaySceneDir);
|
18146
18250
|
}
|
@@ -18429,14 +18533,17 @@ const reconnectRefresher = new ReconnectRefresher({ emitter: internalEmitter });
|
|
18429
18533
|
const _WindowManager = class extends InvisiblePlugin {
|
18430
18534
|
constructor(context) {
|
18431
18535
|
super(context);
|
18432
|
-
this.version = "0.4.73-beta.
|
18433
|
-
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" } };
|
18434
18538
|
this.emitter = callbacks$1;
|
18435
18539
|
this.viewMode = ViewMode.Broadcaster;
|
18436
18540
|
this.isReplay = isPlayer(this.displayer);
|
18437
18541
|
this.containerSizeRatio = _WindowManager.containerSizeRatio;
|
18438
18542
|
_WindowManager.displayer = context.displayer;
|
18439
|
-
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);
|
18440
18547
|
}
|
18441
18548
|
static async mount(params) {
|
18442
18549
|
const room = params.room;
|
@@ -18508,26 +18615,8 @@ const _WindowManager = class extends InvisiblePlugin {
|
|
18508
18615
|
}
|
18509
18616
|
return manager;
|
18510
18617
|
}
|
18511
|
-
static
|
18512
|
-
|
18513
|
-
if (!manager) {
|
18514
|
-
if (isRoom(room)) {
|
18515
|
-
if (room.isWritable === false) {
|
18516
|
-
try {
|
18517
|
-
await room.setWritable(true);
|
18518
|
-
} catch (error) {
|
18519
|
-
throw new Error("[WindowManger]: room must be switched to be writable");
|
18520
|
-
}
|
18521
|
-
manager = await createInvisiblePlugin(room);
|
18522
|
-
manager == null ? void 0 : manager.ensureAttributes();
|
18523
|
-
await wait(500);
|
18524
|
-
await room.setWritable(false);
|
18525
|
-
} else {
|
18526
|
-
manager = await createInvisiblePlugin(room);
|
18527
|
-
}
|
18528
|
-
}
|
18529
|
-
}
|
18530
|
-
return manager;
|
18618
|
+
static initManager(room) {
|
18619
|
+
return createInvisiblePlugin(room);
|
18531
18620
|
}
|
18532
18621
|
static initContainer(manager, container, params) {
|
18533
18622
|
const { chessboard, overwriteStyles, fullscreen } = params;
|
@@ -19178,6 +19267,7 @@ WindowManager.kind = "WindowManager";
|
|
19178
19267
|
WindowManager.debug = false;
|
19179
19268
|
WindowManager.containerSizeRatio = DEFAULT_CONTAINER_RATIO;
|
19180
19269
|
WindowManager.isCreated = false;
|
19270
|
+
WindowManager._resolve = (_manager) => void 0;
|
19181
19271
|
setupBuiltin();
|
19182
19272
|
export { AppCreateError, AppManagerNotInitError, AppNotRegisterError, BindContainerRoomPhaseInvalidError, BoxManagerNotFoundError, BoxNotCreatedError, BuiltinApps, DomEvents, IframeBridge, IframeEvents, InvalidScenePath, ParamsInvalidError, WhiteWebSDKInvalidError, WindowManager, calculateNextIndex, reconnectRefresher };
|
19183
19273
|
//# sourceMappingURL=index.mjs.map
|