@netless/window-manager 0.4.27 → 0.4.30-canary.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.
package/dist/index.d.ts CHANGED
@@ -144,7 +144,12 @@ export declare class WindowManager extends InvisiblePlugin<WindowMangerAttribute
144
144
  nextPage(): Promise<boolean>;
145
145
  prevPage(): Promise<boolean>;
146
146
  addPage(params?: AddPageParams): Promise<void>;
147
- removePage(index: number): Promise<boolean>;
147
+ /**
148
+ * 删除一页
149
+ * 默认删除当前页, 可以删除指定 index 页
150
+ * 最低保留一页
151
+ */
152
+ removePage(index?: number): Promise<boolean>;
148
153
  /**
149
154
  * 返回 mainView 的 ScenePath
150
155
  */
package/dist/index.es.js CHANGED
@@ -1021,12 +1021,16 @@ class AppContext {
1021
1021
  }
1022
1022
  };
1023
1023
  this.removePage = async (index) => {
1024
- if (index < 0 || index >= this.pageState.length) {
1024
+ const needRemoveIndex = index === void 0 ? this.pageState.index : index;
1025
+ if (this.pageState.length === 1) {
1026
+ console.warn(`[WindowManager]: can not remove the last page`);
1027
+ return false;
1028
+ }
1029
+ if (needRemoveIndex < 0 || needRemoveIndex >= this.pageState.length) {
1025
1030
  console.warn(`[WindowManager]: page index ${index} out of range`);
1026
1031
  return false;
1027
1032
  }
1028
- this.appProxy.removeSceneByIndex(index);
1029
- return true;
1033
+ return this.appProxy.removeSceneByIndex(needRemoveIndex);
1030
1034
  };
1031
1035
  this.emitter = appProxy.appEmitter;
1032
1036
  this.isAddApp = appProxy.isAddApp;
@@ -1603,9 +1607,6 @@ class AppProxy {
1603
1607
  async removeSceneByIndex(index) {
1604
1608
  const scenePath = this._pageState.getFullPath(index);
1605
1609
  if (scenePath) {
1606
- if (this.pageState.length <= 1) {
1607
- return false;
1608
- }
1609
1610
  const nextIndex = calculateNextIndex(index, this.pageState);
1610
1611
  this.setSceneIndexWithoutSync(nextIndex);
1611
1612
  this.manager.dispatchInternalEvent(Events.SetAppFocusIndex, {
@@ -2063,7 +2064,10 @@ class AppManager {
2063
2064
  }
2064
2065
  this.callbacksNode = this.displayer.createScenesCallback(ROOT_DIR, {
2065
2066
  onAddScene: this.onSceneChange,
2066
- onRemoveScene: this.onSceneChange
2067
+ onRemoveScene: async (node, name) => {
2068
+ await this.onSceneChange(node);
2069
+ emitter.emit("rootDirSceneRemoved", name);
2070
+ }
2067
2071
  });
2068
2072
  if (this.callbacksNode) {
2069
2073
  this.updateSceneState(this.callbacksNode);
@@ -2074,17 +2078,26 @@ class AppManager {
2074
2078
  }
2075
2079
  };
2076
2080
  this.removeSceneByIndex = async (index) => {
2081
+ var _a;
2077
2082
  const nextIndex = calculateNextIndex(index, this.windowManger.pageState);
2078
2083
  this.setSceneIndexWithoutSync(nextIndex);
2079
2084
  this.dispatchInternalEvent(Events.SetAppFocusIndex, { type: "main", index: nextIndex });
2085
+ const scene = (_a = this.callbacksNode) == null ? void 0 : _a.scenes[index];
2080
2086
  setTimeout(() => {
2081
- var _a;
2082
- const scene = (_a = this.callbacksNode) == null ? void 0 : _a.scenes[index];
2083
2087
  if (scene) {
2084
2088
  removeScenes(this.room, `${ROOT_DIR}${scene}`, index);
2085
2089
  }
2086
2090
  }, 100);
2087
- return true;
2091
+ return new Promise((resolve, reject) => {
2092
+ emitter.once("rootDirSceneRemoved").then((name) => {
2093
+ if (name === scene) {
2094
+ resolve(true);
2095
+ }
2096
+ }).catch((e2) => {
2097
+ console.log(`[WindowManager]: removePage error: ${e2}`);
2098
+ reject(false);
2099
+ });
2100
+ });
2088
2101
  };
2089
2102
  this.setSceneIndexWithoutSync = (index) => {
2090
2103
  var _a;
@@ -2096,11 +2109,13 @@ class AppManager {
2096
2109
  this.onSceneChange = (node) => {
2097
2110
  this.mainViewScenesLength = node.scenes.length;
2098
2111
  this.updateSceneState(node);
2099
- this.emitMainViewScenesChange(this.mainViewScenesLength);
2112
+ return this.emitMainViewScenesChange(this.mainViewScenesLength);
2100
2113
  };
2101
2114
  this.emitMainViewScenesChange = (length) => {
2102
- callbacks$1.emit("mainViewScenesLengthChange", length);
2103
- emitter.emit("changePageState");
2115
+ return Promise.all([
2116
+ callbacks$1.emit("mainViewScenesLengthChange", length),
2117
+ emitter.emit("changePageState")
2118
+ ]);
2104
2119
  };
2105
2120
  this.updateSceneState = (node) => {
2106
2121
  const currentIndex = this.store.getMainViewSceneIndex() || 0;
@@ -15047,7 +15062,7 @@ const reconnectRefresher = new ReconnectRefresher({ emitter });
15047
15062
  const _WindowManager = class extends InvisiblePlugin {
15048
15063
  constructor(context) {
15049
15064
  super(context);
15050
- this.version = "0.4.27";
15065
+ this.version = "0.4.30-canary.0";
15051
15066
  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" } };
15052
15067
  this.emitter = callbacks$1;
15053
15068
  this.viewMode = ViewMode.Broadcaster;
@@ -15349,11 +15364,16 @@ const _WindowManager = class extends InvisiblePlugin {
15349
15364
  }
15350
15365
  async removePage(index) {
15351
15366
  if (this.appManager) {
15352
- if (index < 0 || index >= this.pageState.length) {
15367
+ const needRemoveIndex = index === void 0 ? this.pageState.index : index;
15368
+ if (this.pageState.length === 1) {
15369
+ console.warn(`[WindowManager]: can not remove the last page`);
15370
+ return false;
15371
+ }
15372
+ if (needRemoveIndex < 0 || needRemoveIndex >= this.pageState.length) {
15353
15373
  console.warn(`[WindowManager]: index ${index} out of range`);
15354
15374
  return false;
15355
15375
  }
15356
- return this.appManager.removeSceneByIndex(index);
15376
+ return this.appManager.removeSceneByIndex(needRemoveIndex);
15357
15377
  } else {
15358
15378
  return false;
15359
15379
  }