@netless/window-manager 0.4.29 → 0.4.30

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.es.js CHANGED
@@ -47,6 +47,7 @@ var Events = /* @__PURE__ */ ((Events2) => {
47
47
  return Events2;
48
48
  })(Events || {});
49
49
  const MagixEventName = "__WindowManger";
50
+ const EnsureReconnectEvent = "__WindowMangerEnsureReconnected__";
50
51
  var AppAttributes = /* @__PURE__ */ ((AppAttributes2) => {
51
52
  AppAttributes2["Size"] = "size";
52
53
  AppAttributes2["Position"] = "position";
@@ -1506,6 +1507,11 @@ class AppProxy {
1506
1507
  }
1507
1508
  async onReconnected() {
1508
1509
  var _a;
1510
+ const isExist = Boolean(this.manager.attributes.apps[this.id]);
1511
+ if (!isExist) {
1512
+ await this.destroy(true, false, true);
1513
+ return;
1514
+ }
1509
1515
  this.appEmitter.emit("reconnected", void 0);
1510
1516
  const currentAppState = this.getAppInitState(this.id);
1511
1517
  await this.destroy(true, false, true);
@@ -2064,7 +2070,10 @@ class AppManager {
2064
2070
  }
2065
2071
  this.callbacksNode = this.displayer.createScenesCallback(ROOT_DIR, {
2066
2072
  onAddScene: this.onSceneChange,
2067
- onRemoveScene: this.onSceneChange
2073
+ onRemoveScene: async (node, name) => {
2074
+ await this.onSceneChange(node);
2075
+ emitter.emit("rootDirSceneRemoved", name);
2076
+ }
2068
2077
  });
2069
2078
  if (this.callbacksNode) {
2070
2079
  this.updateSceneState(this.callbacksNode);
@@ -2075,17 +2084,26 @@ class AppManager {
2075
2084
  }
2076
2085
  };
2077
2086
  this.removeSceneByIndex = async (index) => {
2087
+ var _a;
2078
2088
  const nextIndex = calculateNextIndex(index, this.windowManger.pageState);
2079
2089
  this.setSceneIndexWithoutSync(nextIndex);
2080
2090
  this.dispatchInternalEvent(Events.SetAppFocusIndex, { type: "main", index: nextIndex });
2091
+ const scene = (_a = this.callbacksNode) == null ? void 0 : _a.scenes[index];
2081
2092
  setTimeout(() => {
2082
- var _a;
2083
- const scene = (_a = this.callbacksNode) == null ? void 0 : _a.scenes[index];
2084
2093
  if (scene) {
2085
2094
  removeScenes(this.room, `${ROOT_DIR}${scene}`, index);
2086
2095
  }
2087
2096
  }, 100);
2088
- return true;
2097
+ return new Promise((resolve, reject) => {
2098
+ emitter.once("rootDirSceneRemoved").then((name) => {
2099
+ if (name === scene) {
2100
+ resolve(true);
2101
+ }
2102
+ }).catch((e2) => {
2103
+ console.log(`[WindowManager]: removePage error: ${e2}`);
2104
+ reject(false);
2105
+ });
2106
+ });
2089
2107
  };
2090
2108
  this.setSceneIndexWithoutSync = (index) => {
2091
2109
  var _a;
@@ -2097,11 +2115,13 @@ class AppManager {
2097
2115
  this.onSceneChange = (node) => {
2098
2116
  this.mainViewScenesLength = node.scenes.length;
2099
2117
  this.updateSceneState(node);
2100
- this.emitMainViewScenesChange(this.mainViewScenesLength);
2118
+ return this.emitMainViewScenesChange(this.mainViewScenesLength);
2101
2119
  };
2102
2120
  this.emitMainViewScenesChange = (length) => {
2103
- callbacks$1.emit("mainViewScenesLengthChange", length);
2104
- emitter.emit("changePageState");
2121
+ return Promise.all([
2122
+ callbacks$1.emit("mainViewScenesLengthChange", length),
2123
+ emitter.emit("changePageState")
2124
+ ]);
2105
2125
  };
2106
2126
  this.updateSceneState = (node) => {
2107
2127
  const currentIndex = this.store.getMainViewSceneIndex() || 0;
@@ -5734,11 +5754,12 @@ class ReconnectRefresher {
5734
5754
  this.reactors = /* @__PURE__ */ new Map();
5735
5755
  this.disposers = /* @__PURE__ */ new Map();
5736
5756
  this.onPhaseChanged = (phase) => {
5757
+ var _a;
5737
5758
  if (phase === RoomPhase.Reconnecting) {
5738
5759
  this.ctx.emitter.emit("startReconnect");
5739
5760
  }
5740
5761
  if (phase === RoomPhase.Connected && this.phase === RoomPhase.Reconnecting) {
5741
- this.onReconnected();
5762
+ (_a = this.room) == null ? void 0 : _a.dispatchMagixEvent(EnsureReconnectEvent, {});
5742
5763
  }
5743
5764
  this.phase = phase;
5744
5765
  };
@@ -5759,8 +5780,15 @@ class ReconnectRefresher {
5759
5780
  setRoom(room) {
5760
5781
  this.room = room;
5761
5782
  this.phase = room == null ? void 0 : room.phase;
5762
- room == null ? void 0 : room.callbacks.off("onPhaseChanged", this.onPhaseChanged);
5763
- room == null ? void 0 : room.callbacks.on("onPhaseChanged", this.onPhaseChanged);
5783
+ if (room) {
5784
+ room.callbacks.off("onPhaseChanged", this.onPhaseChanged);
5785
+ room.callbacks.on("onPhaseChanged", this.onPhaseChanged);
5786
+ room.addMagixEventListener(EnsureReconnectEvent, (payload) => {
5787
+ if (payload.authorId === room.observerId) {
5788
+ this.onReconnected();
5789
+ }
5790
+ }, { fireSelfEventAfterCommit: true });
5791
+ }
5764
5792
  }
5765
5793
  setContext(ctx) {
5766
5794
  this.ctx = ctx;
@@ -5802,8 +5830,9 @@ class ReconnectRefresher {
5802
5830
  return this.reactors.has(id2);
5803
5831
  }
5804
5832
  destroy() {
5805
- var _a;
5833
+ var _a, _b;
5806
5834
  (_a = this.room) == null ? void 0 : _a.callbacks.off("onPhaseChanged", this.onPhaseChanged);
5835
+ (_b = this.room) == null ? void 0 : _b.removeMagixEventListener(EnsureReconnectEvent, this.onReconnected);
5807
5836
  this.releaseDisposers();
5808
5837
  }
5809
5838
  }
@@ -15048,7 +15077,7 @@ const reconnectRefresher = new ReconnectRefresher({ emitter });
15048
15077
  const _WindowManager = class extends InvisiblePlugin {
15049
15078
  constructor(context) {
15050
15079
  super(context);
15051
- this.version = "0.4.29";
15080
+ this.version = "0.4.30";
15052
15081
  this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.3.1", "@netless/telebox-insider": "0.2.26", "emittery": "^0.9.2", "lodash": "^4.17.21", "p-retry": "^4.6.1", "side-effect-manager": "^0.1.5", "uuid": "^7.0.3", "video.js": ">=7" }, "peerDependencies": { "white-web-sdk": "^2.16.0" }, "devDependencies": { "@netless/app-docs-viewer": "^0.2.9", "@netless/app-media-player": "0.1.0-beta.5", "@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", "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", "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", "svelte": "^3.42.4", "typescript": "^4.5.5", "vite": "^2.5.3", "vitest": "^0.12.4", "white-web-sdk": "2.16.10" } };
15053
15082
  this.emitter = callbacks$1;
15054
15083
  this.viewMode = ViewMode.Broadcaster;