@netless/window-manager 0.4.43 → 0.4.45

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
@@ -207,6 +207,10 @@ export declare class WindowManager extends InvisiblePlugin<WindowMangerAttribute
207
207
  * 关闭 APP
208
208
  */
209
209
  closeApp(appId: string): Promise<void>;
210
+ /**
211
+ * 切换 focus 到指定的 app, 并且把这个 app 放到最前面
212
+ */
213
+ focusApp(appId: string): void;
210
214
  moveCamera(camera: Partial<Camera> & {
211
215
  animationMode?: AnimationMode | undefined;
212
216
  }): void;
package/dist/index.es.js CHANGED
@@ -20,7 +20,7 @@ var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2));
20
20
  import pRetry from "p-retry";
21
21
  import Emittery from "emittery";
22
22
  import { debounce, isEqual, omit, isObject, has, get, size as size$1, mapValues, noop as noop$2, pick, isEmpty, isInteger, orderBy, isFunction, throttle, isNumber, isNull } from "lodash";
23
- import { ScenePathType, UpdateEventKind, listenUpdated, unlistenUpdated, reaction, autorun, toJS, listenDisposed, unlistenDisposed, AnimationMode, isPlayer, isRoom, WhiteVersion, ApplianceNames, RoomPhase, InvisiblePlugin, ViewMode } from "white-web-sdk";
23
+ import { ScenePathType, UpdateEventKind, listenUpdated, unlistenUpdated, reaction, autorun, toJS, listenDisposed, unlistenDisposed, ViewMode, AnimationMode, isPlayer, isRoom, WhiteVersion, ApplianceNames, RoomPhase, InvisiblePlugin } from "white-web-sdk";
24
24
  import { v4 } from "uuid";
25
25
  import { genUID, SideEffectManager } from "side-effect-manager";
26
26
  import { ResizeObserver as ResizeObserver$3 } from "@juggle/resize-observer";
@@ -1753,6 +1753,7 @@ class MainViewProxy {
1753
1753
  this.started = false;
1754
1754
  this.mainViewIsAddListener = false;
1755
1755
  this.store = this.manager.store;
1756
+ this.viewMode = this.manager.windowManger.viewMode;
1756
1757
  this.sideEffectManager = new SideEffectManager();
1757
1758
  this.startListenWritableChange = () => {
1758
1759
  this.sideEffectManager.add(() => {
@@ -1776,7 +1777,7 @@ class MainViewProxy {
1776
1777
  }, { fireImmediately: true });
1777
1778
  };
1778
1779
  this.sizeChangeHandler = debounce((size2) => {
1779
- if (size2) {
1780
+ if (size2 && this.viewMode === ViewMode.Broadcaster) {
1780
1781
  this.moveCameraToContian(size2);
1781
1782
  this.moveCamera(this.mainViewCamera);
1782
1783
  }
@@ -1786,6 +1787,8 @@ class MainViewProxy {
1786
1787
  this.sizeChangeHandler(size2);
1787
1788
  };
1788
1789
  this.onCameraUpdatedByDevice = (camera) => {
1790
+ if (this.viewMode === ViewMode.Follower)
1791
+ return;
1789
1792
  this.store.setMainViewCamera(__spreadProps(__spreadValues({}, camera), { id: this.manager.uid }));
1790
1793
  if (!isEqual(this.mainViewSize, __spreadProps(__spreadValues({}, this.mainView.size), { id: this.manager.uid }))) {
1791
1794
  this.setMainViewSize(this.view.size);
@@ -1800,6 +1803,9 @@ class MainViewProxy {
1800
1803
  this.onCameraOrSizeUpdated = () => {
1801
1804
  callbacks$1.emit("cameraStateChange", this.cameraState);
1802
1805
  };
1806
+ this.setViewMode = (mode) => {
1807
+ this.viewMode = mode;
1808
+ };
1803
1809
  this.mainView = this.createMainView();
1804
1810
  this.moveCameraSizeByAttributes();
1805
1811
  emitter.once("mainViewMounted").then(() => {
@@ -1826,6 +1832,8 @@ class MainViewProxy {
1826
1832
  });
1827
1833
  }
1828
1834
  ensureCameraAndSize() {
1835
+ if (this.viewMode !== ViewMode.Broadcaster)
1836
+ return;
1829
1837
  if (!this.mainViewCamera || !this.mainViewSize) {
1830
1838
  this.manager.dispatchInternalEvent(Events.InitMainViewCamera);
1831
1839
  this.setCameraAndSize();
@@ -6676,8 +6684,9 @@ function create_if_block(ctx) {
6676
6684
  let span;
6677
6685
  let t1;
6678
6686
  let t2;
6679
- let if_block0 = ctx[14] && create_if_block_2(ctx);
6680
- let if_block1 = ctx[15] && create_if_block_1(ctx);
6687
+ let div1_class_value;
6688
+ let if_block0 = ctx[16] && create_if_block_2(ctx);
6689
+ let if_block1 = ctx[17] && create_if_block_1(ctx);
6681
6690
  return {
6682
6691
  c() {
6683
6692
  div1 = element("div");
@@ -6698,7 +6707,7 @@ function create_if_block(ctx) {
6698
6707
  set_style(div0, "background-color", ctx[2]);
6699
6708
  set_style(div0, "color", ctx[9]);
6700
6709
  set_style(div0, "opacity", ctx[11]);
6701
- attr(div1, "class", "netless-window-manager-cursor-name");
6710
+ attr(div1, "class", div1_class_value = "netless-window-manager-cursor-name " + ctx[14] + " " + ctx[13]);
6702
6711
  },
6703
6712
  m(target, anchor) {
6704
6713
  insert(target, div1, anchor);
@@ -6713,7 +6722,7 @@ function create_if_block(ctx) {
6713
6722
  if_block1.m(div0, null);
6714
6723
  },
6715
6724
  p(ctx2, dirty) {
6716
- if (ctx2[14]) {
6725
+ if (ctx2[16]) {
6717
6726
  if (if_block0) {
6718
6727
  if_block0.p(ctx2, dirty);
6719
6728
  } else {
@@ -6727,7 +6736,7 @@ function create_if_block(ctx) {
6727
6736
  }
6728
6737
  if (dirty & 1)
6729
6738
  set_data(t1, ctx2[0]);
6730
- if (ctx2[15]) {
6739
+ if (ctx2[17]) {
6731
6740
  if (if_block1) {
6732
6741
  if_block1.p(ctx2, dirty);
6733
6742
  } else {
@@ -6751,6 +6760,9 @@ function create_if_block(ctx) {
6751
6760
  if (dirty & 2048) {
6752
6761
  set_style(div0, "opacity", ctx2[11]);
6753
6762
  }
6763
+ if (dirty & 24576 && div1_class_value !== (div1_class_value = "netless-window-manager-cursor-name " + ctx2[14] + " " + ctx2[13])) {
6764
+ attr(div1, "class", div1_class_value);
6765
+ }
6754
6766
  },
6755
6767
  d(detaching) {
6756
6768
  if (detaching)
@@ -6769,7 +6781,7 @@ function create_if_block_2(ctx) {
6769
6781
  c() {
6770
6782
  img = element("img");
6771
6783
  attr(img, "class", "netless-window-manager-cursor-selector-avatar");
6772
- attr(img, "style", ctx[16]());
6784
+ attr(img, "style", ctx[18]());
6773
6785
  if (!src_url_equal(img.src, img_src_value = ctx[7]))
6774
6786
  attr(img, "src", img_src_value);
6775
6787
  attr(img, "alt", "avatar");
@@ -6831,14 +6843,14 @@ function create_fragment(ctx) {
6831
6843
  t2 = space();
6832
6844
  div0 = element("div");
6833
6845
  img = element("img");
6834
- attr(img, "class", img_class_value = "netless-window-manager-cursor-" + ctx[3] + "-image");
6846
+ attr(img, "class", img_class_value = "netless-window-manager-cursor-" + ctx[3] + "-image " + ctx[13]);
6835
6847
  if (!src_url_equal(img.src, img_src_value = ctx[6]))
6836
6848
  attr(img, "src", img_src_value);
6837
6849
  attr(img, "alt", ctx[3]);
6838
6850
  attr(div0, "class", "cursor-image-wrapper");
6839
6851
  attr(div1, "class", "netless-window-manager-cursor-mid");
6840
6852
  set_style(div1, "transform", "translateX(" + ctx[4] + "px) translateY(" + ctx[5] + "px)");
6841
- set_style(div1, "display", ctx[13]);
6853
+ set_style(div1, "display", ctx[15]);
6842
6854
  },
6843
6855
  m(target, anchor) {
6844
6856
  insert(target, div1, anchor);
@@ -6861,7 +6873,7 @@ function create_fragment(ctx) {
6861
6873
  if_block.d(1);
6862
6874
  if_block = null;
6863
6875
  }
6864
- if (dirty & 8 && img_class_value !== (img_class_value = "netless-window-manager-cursor-" + ctx2[3] + "-image")) {
6876
+ if (dirty & 8200 && img_class_value !== (img_class_value = "netless-window-manager-cursor-" + ctx2[3] + "-image " + ctx2[13])) {
6865
6877
  attr(img, "class", img_class_value);
6866
6878
  }
6867
6879
  if (dirty & 64 && !src_url_equal(img.src, img_src_value = ctx2[6])) {
@@ -6873,8 +6885,8 @@ function create_fragment(ctx) {
6873
6885
  if (dirty & 48) {
6874
6886
  set_style(div1, "transform", "translateX(" + ctx2[4] + "px) translateY(" + ctx2[5] + "px)");
6875
6887
  }
6876
- if (dirty & 8192) {
6877
- set_style(div1, "display", ctx2[13]);
6888
+ if (dirty & 32768) {
6889
+ set_style(div1, "display", ctx2[15]);
6878
6890
  }
6879
6891
  },
6880
6892
  i: noop,
@@ -6893,6 +6905,9 @@ function instance($$self, $$props, $$invalidate) {
6893
6905
  let hasAvatar;
6894
6906
  let display;
6895
6907
  let isLaserPointer;
6908
+ let isLaserPointerPencilEraser;
6909
+ let offset;
6910
+ let pencilEraserSize3ImageOffset;
6896
6911
  let { cursorName } = $$props;
6897
6912
  let { tagName } = $$props;
6898
6913
  let { backgroundColor } = $$props;
@@ -6906,6 +6921,7 @@ function instance($$self, $$props, $$invalidate) {
6906
6921
  let { color: color2 } = $$props;
6907
6922
  let { cursorTagBackgroundColor } = $$props;
6908
6923
  let { opacity } = $$props;
6924
+ let { pencilEraserSize } = $$props;
6909
6925
  const computedAvatarStyle = () => {
6910
6926
  return Object.entries({
6911
6927
  width: (hasName ? 19 : 28) + "px",
@@ -6931,7 +6947,7 @@ function instance($$self, $$props, $$invalidate) {
6931
6947
  if ("src" in $$props2)
6932
6948
  $$invalidate(6, src = $$props2.src);
6933
6949
  if ("visible" in $$props2)
6934
- $$invalidate(17, visible = $$props2.visible);
6950
+ $$invalidate(19, visible = $$props2.visible);
6935
6951
  if ("avatar" in $$props2)
6936
6952
  $$invalidate(7, avatar = $$props2.avatar);
6937
6953
  if ("theme" in $$props2)
@@ -6942,23 +6958,34 @@ function instance($$self, $$props, $$invalidate) {
6942
6958
  $$invalidate(10, cursorTagBackgroundColor = $$props2.cursorTagBackgroundColor);
6943
6959
  if ("opacity" in $$props2)
6944
6960
  $$invalidate(11, opacity = $$props2.opacity);
6961
+ if ("pencilEraserSize" in $$props2)
6962
+ $$invalidate(20, pencilEraserSize = $$props2.pencilEraserSize);
6945
6963
  };
6946
6964
  $$self.$$.update = () => {
6947
6965
  if ($$self.$$.dirty & 1) {
6948
6966
  hasName = !isEmpty(cursorName);
6949
6967
  }
6950
6968
  if ($$self.$$.dirty & 2) {
6951
- $$invalidate(15, hasTagName = !isEmpty(tagName));
6969
+ $$invalidate(17, hasTagName = !isEmpty(tagName));
6952
6970
  }
6953
6971
  if ($$self.$$.dirty & 128) {
6954
- $$invalidate(14, hasAvatar = !isEmpty(avatar));
6972
+ $$invalidate(16, hasAvatar = !isEmpty(avatar));
6955
6973
  }
6956
- if ($$self.$$.dirty & 131072) {
6957
- $$invalidate(13, display = visible ? "initial" : "none");
6974
+ if ($$self.$$.dirty & 524288) {
6975
+ $$invalidate(15, display = visible ? "initial" : "none");
6958
6976
  }
6959
6977
  if ($$self.$$.dirty & 8) {
6960
6978
  $$invalidate(12, isLaserPointer = appliance === ApplianceNames.laserPointer);
6961
6979
  }
6980
+ if ($$self.$$.dirty & 4104) {
6981
+ $$invalidate(21, isLaserPointerPencilEraser = isLaserPointer || appliance === ApplianceNames.pencilEraser);
6982
+ }
6983
+ if ($$self.$$.dirty & 2097152) {
6984
+ $$invalidate(14, offset = isLaserPointerPencilEraser ? "netless-window-manager-laserPointer-pencilEraser-offset" : "");
6985
+ }
6986
+ if ($$self.$$.dirty & 1048576) {
6987
+ $$invalidate(13, pencilEraserSize3ImageOffset = pencilEraserSize === 3 ? "netless-window-manager-pencilEraser-3-offset" : "");
6988
+ }
6962
6989
  };
6963
6990
  return [
6964
6991
  cursorName,
@@ -6974,11 +7001,15 @@ function instance($$self, $$props, $$invalidate) {
6974
7001
  cursorTagBackgroundColor,
6975
7002
  opacity,
6976
7003
  isLaserPointer,
7004
+ pencilEraserSize3ImageOffset,
7005
+ offset,
6977
7006
  display,
6978
7007
  hasAvatar,
6979
7008
  hasTagName,
6980
7009
  computedAvatarStyle,
6981
- visible
7010
+ visible,
7011
+ pencilEraserSize,
7012
+ isLaserPointerPencilEraser
6982
7013
  ];
6983
7014
  }
6984
7015
  class Cursor$1 extends SvelteComponent {
@@ -6992,12 +7023,13 @@ class Cursor$1 extends SvelteComponent {
6992
7023
  x: 4,
6993
7024
  y: 5,
6994
7025
  src: 6,
6995
- visible: 17,
7026
+ visible: 19,
6996
7027
  avatar: 7,
6997
7028
  theme: 8,
6998
7029
  color: 9,
6999
7030
  cursorTagBackgroundColor: 10,
7000
- opacity: 11
7031
+ opacity: 11,
7032
+ pencilEraserSize: 20
7001
7033
  });
7002
7034
  }
7003
7035
  }
@@ -7118,6 +7150,7 @@ class Cursor {
7118
7150
  }
7119
7151
  }
7120
7152
  initProps() {
7153
+ var _a;
7121
7154
  return {
7122
7155
  x: 0,
7123
7156
  y: 0,
@@ -7131,14 +7164,22 @@ class Cursor {
7131
7164
  color: this.memberCursorTextColor,
7132
7165
  cursorTagBackgroundColor: this.memberCursorTagBackgroundColor,
7133
7166
  opacity: this.memberOpacity,
7134
- tagName: this.memberTagName
7167
+ tagName: this.memberTagName,
7168
+ pencilEraserSize: (_a = this.member) == null ? void 0 : _a.memberState.pencilEraserSize
7135
7169
  };
7136
7170
  }
7137
7171
  getIcon() {
7172
+ var _a;
7138
7173
  if (this.member) {
7139
7174
  const icons = this.cursorManager.applianceIcons;
7140
- const applianceSrc = icons[this.memberApplianceName || ApplianceNames.shape];
7141
- return applianceSrc || icons[ApplianceNames.shape];
7175
+ let applianceSrc = icons[ApplianceNames.shape];
7176
+ if (this.memberApplianceName === ApplianceNames.pencilEraser) {
7177
+ const size2 = ((_a = this.member) == null ? void 0 : _a.memberState.pencilEraserSize) || 1;
7178
+ applianceSrc = icons[`${this.memberApplianceName}${size2}`];
7179
+ } else {
7180
+ applianceSrc = icons[this.memberApplianceName || ApplianceNames.shape];
7181
+ }
7182
+ return applianceSrc;
7142
7183
  }
7143
7184
  }
7144
7185
  updateMember() {
@@ -7172,13 +7213,19 @@ var eraser = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvr
7172
7213
  var shape = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDBweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zaGFwZS1jdXJzb3I8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICAgICAgPGZpbHRlciB4PSItNjQuNiUiIHk9Ii01OS41JSIgd2lkdGg9IjIyOS4zJSIgaGVpZ2h0PSIyNDYuMSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0yIj4KICAgICAgICAgICAgPGZlTW9ycGhvbG9neSByYWRpdXM9IjEiIG9wZXJhdG9yPSJkaWxhdGUiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dTcHJlYWRPdXRlcjEiPjwvZmVNb3JwaG9sb2d5PgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIyIiBpbj0ic2hhZG93U3ByZWFkT3V0ZXIxIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW49InNoYWRvd0JsdXJPdXRlcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJvdXQiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMTYgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi00IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2hpdGVib2FyZC1HdWlkZWxpbmVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzQ0LjAwMDAwMCwgLTc1MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9InNoYXBlLWN1cnNvciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQ0LjAwMDAwMCwgNzUxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS00NCIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMC4wMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGcgaWQ9IuW9oueKtue7k+WQiCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjEiIGZpbHRlcj0idXJsKCNmaWx0ZXItMikiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIxIiBkPSJNMjAsMjEgQzIwLjQ4NTQxMDMsMjEgMjAuODk4MDg1LDIxLjM0Nzk5OTMgMjAuOTg5OTQ3OSwyMS44NjU0ODc3IEwyMSwyMiBMMjEsMjcgQzIxLDI3LjU1MjI4NDcgMjAuNTUyMjg0NywyOCAyMCwyOCBDMTkuNTE0NTg5NywyOCAxOS4xMDE5MTUsMjcuNjUyMDAwNyAxOS4wMTAwNTIxLDI3LjEzNDUxMjMgTDE5LDI3IEwxOSwyMiBDMTksMjEuNDQ3NzE1MyAxOS40NDc3MTUzLDIxIDIwLDIxIFogTTI3LDE5IEMyNy41NTIyODQ3LDE5IDI4LDE5LjQ0NzcxNTMgMjgsMjAgQzI4LDIwLjQ4NTQxMDMgMjcuNjUyMDAwNywyMC44OTgwODUgMjcuMTM0NTEyMywyMC45ODk5NDc5IEwyNywyMSBMMjIsMjEgQzIxLjQ0NzcxNTMsMjEgMjEsMjAuNTUyMjg0NyAyMSwyMCBDMjEsMTkuNTE0NTg5NyAyMS4zNDc5OTkzLDE5LjEwMTkxNSAyMS44NjU0ODc3LDE5LjAxMDA1MjEgTDIyLDE5IEwyNywxOSBaIE0xOCwxOSBDMTguNTUyMjg0NywxOSAxOSwxOS40NDc3MTUzIDE5LDIwIEMxOSwyMC40ODU0MTAzIDE4LjY1MjAwMDcsMjAuODk4MDg1IDE4LjEzNDUxMjMsMjAuOTg5OTQ3OSBMMTgsMjEgTDEzLDIxIEMxMi40NDc3MTUzLDIxIDEyLDIwLjU1MjI4NDcgMTIsMjAgQzEyLDE5LjUxNDU4OTcgMTIuMzQ3OTk5MywxOS4xMDE5MTUgMTIuODY1NDg3NywxOS4wMTAwNTIxIEwxMywxOSBMMTgsMTkgWiBNMjAsMTIgQzIwLjQ4NTQxMDMsMTIgMjAuODk4MDg1LDEyLjM0Nzk5OTMgMjAuOTg5OTQ3OSwxMi44NjU0ODc3IEwyMSwxMyBMMjEsMTggQzIxLDE4LjU1MjI4NDcgMjAuNTUyMjg0NywxOSAyMCwxOSBDMTkuNTE0NTg5NywxOSAxOS4xMDE5MTUsMTguNjUyMDAwNyAxOS4wMTAwNTIxLDE4LjEzNDUxMjMgTDE5LDE4IEwxOSwxMyBDMTksMTIuNDQ3NzE1MyAxOS40NDc3MTUzLDEyIDIwLDEyIFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0ZGRkZGRiIgeD0iMTguNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjYiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIGZpbGw9IiNGRkZGRkYiIHg9IjE3IiB5PSIxOC41IiB3aWR0aD0iNiIgaGVpZ2h0PSIzIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjMjEyMzI0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+";
7173
7214
  var text = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDdweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDcgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT50ZXh0LWN1cnNvcjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNiwyNi41IEMxNS43MjM4NTc2LDI2LjUgMTUuNSwyNi4yNzYxNDI0IDE1LjUsMjYgQzE1LjUsMjUuNzU0NTQwMSAxNS42NzY4NzUyLDI1LjU1MDM5MTYgMTUuOTEwMTI0NCwyNS41MDgwNTU3IEwxNiwyNS41IEwxOS41LDI1LjUgTDE5LjUsMTQuNSBMMTYsMTQuNSBDMTUuNzIzODU3NiwxNC41IDE1LjUsMTQuMjc2MTQyNCAxNS41LDE0IEMxNS41LDEzLjc1NDU0MDEgMTUuNjc2ODc1MiwxMy41NTAzOTE2IDE1LjkxMDEyNDQsMTMuNTA4MDU1NyBMMTYsMTMuNSBMMjQsMTMuNSBDMjQuMjc2MTQyNCwxMy41IDI0LjUsMTMuNzIzODU3NiAyNC41LDE0IEMyNC41LDE0LjI0NTQ1OTkgMjQuMzIzMTI0OCwxNC40NDk2MDg0IDI0LjA4OTg3NTYsMTQuNDkxOTQ0MyBMMjQsMTQuNSBMMjAuNSwxNC41IEwyMC41LDI1LjUgTDI0LDI1LjUgQzI0LjI3NjE0MjQsMjUuNSAyNC41LDI1LjcyMzg1NzYgMjQuNSwyNiBDMjQuNSwyNi4yNDU0NTk5IDI0LjMyMzEyNDgsMjYuNDQ5NjA4NCAyNC4wODk4NzU2LDI2LjQ5MTk0NDMgTDI0LDI2LjUgTDE2LDI2LjUgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTI4NC4wJSIgeT0iLTgxLjUlIiB3aWR0aD0iNjY4LjElIiBoZWlnaHQ9IjI5My45JSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZmlsdGVyLTIiPgogICAgICAgICAgICA8ZmVNb3JwaG9sb2d5IHJhZGl1cz0iMSIgb3BlcmF0b3I9ImRpbGF0ZSIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd1NwcmVhZE91dGVyMSI+PC9mZU1vcnBob2xvZ3k+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjIiIGluPSJzaGFkb3dTcHJlYWRPdXRlcjEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93Qmx1ck91dGVyMSIgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9Im91dCIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29tcG9zaXRlPgogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC4xNiAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXaGl0ZWJvYXJkLUd1aWRlbGluZXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zODguMDAwMDAwLCAtNjcyLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0idGV4dC1jdXJzb3IiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5Mi4wMDAwMDAsIDY3Mi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tNDAiIGZpbGw9IiNGRkZGRkYiIG9wYWNpdHk9IjAuMDEiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSLlvaLnirbnu5PlkIgiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMSIgZD0iTTE5LDI1IEwxOSwxNSBMMTYsMTUgQzE1LjQ0NzcxNTMsMTUgMTUsMTQuNTUyMjg0NyAxNSwxNCBDMTUsMTMuNTE0NTg5NyAxNS4zNDc5OTkzLDEzLjEwMTkxNSAxNS44NjU0ODc3LDEzLjAxMDA1MjEgTDE2LDEzIEwyNCwxMyBDMjQuNTUyMjg0NywxMyAyNSwxMy40NDc3MTUzIDI1LDE0IEMyNSwxNC40ODU0MTAzIDI0LjY1MjAwMDcsMTQuODk4MDg1IDI0LjEzNDUxMjMsMTQuOTg5OTQ3OSBMMjQsMTUgTDIxLDE1IEwyMSwyNSBMMjQsMjUgQzI0LjU1MjI4NDcsMjUgMjUsMjUuNDQ3NzE1MyAyNSwyNiBDMjUsMjYuNDg1NDEwMyAyNC42NTIwMDA3LDI2Ljg5ODA4NSAyNC4xMzQ1MTIzLDI2Ljk4OTk0NzkgTDI0LDI3IEwxNiwyNyBDMTUuNDQ3NzE1MywyNyAxNSwyNi41NTIyODQ3IDE1LDI2IEMxNSwyNS41MTQ1ODk3IDE1LjM0Nzk5OTMsMjUuMTAxOTE1IDE1Ljg2NTQ4NzcsMjUuMDEwMDUyMSBMMTYsMjUgTDE5LDI1IFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=";
7174
7215
  var laser = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjhweCIgaGVpZ2h0PSIyOHB4IiB2aWV3Qm94PSIwIDAgMjggMjgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDU1LjEgKDc4MTM2KSAtIGh0dHBzOi8vc2tldGNoYXBwLmNvbSAtLT4KICAgIDx0aXRsZT7nvJbnu4QgMjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxmaWx0ZXIgeD0iLTEyMC4wJSIgeT0iLTEyMC4wJSIgd2lkdGg9IjM0MC4wJSIgaGVpZ2h0PSIzNDAuMCUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0xIj4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNCIgaW49IlNvdXJjZUdyYXBoaWMiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9Iue8lue7hC0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5LjAwMDAwMCwgOS4wMDAwMDApIiBmaWxsPSIjRkYwMTAwIj4KICAgICAgICAgICAgPGNpcmNsZSBpZD0i5qSt5ZyG5b2iIiBmaWx0ZXI9InVybCgjZmlsdGVyLTEpIiBjeD0iNSIgY3k9IjUiIHI9IjUiPjwvY2lyY2xlPgogICAgICAgICAgICA8cGF0aCBkPSJNNSw4IEM2LjY1Njg1NDI1LDggOCw2LjY1Njg1NDI1IDgsNSBDOCwzLjM0MzE0NTc1IDYuNjU2ODU0MjUsMiA1LDIgQzMuMzQzMTQ1NzUsMiAyLDMuMzQzMTQ1NzUgMiw1IEMyLDYuNjU2ODU0MjUgMy4zNDMxNDU3NSw4IDUsOCBaIE01LDYuMjg1NzE0MjkgQzQuMjg5OTE5NjEsNi4yODU3MTQyOSAzLjcxNDI4NTcxLDUuNzEwMDgwMzkgMy43MTQyODU3MSw1IEMzLjcxNDI4NTcxLDQuMjg5OTE5NjEgNC4yODk5MTk2MSwzLjcxNDI4NTcxIDUsMy43MTQyODU3MSBDNS43MTAwODAzOSwzLjcxNDI4NTcxIDYuMjg1NzE0MjksNC4yODk5MTk2MSA2LjI4NTcxNDI5LDUgQzYuMjg1NzE0MjksNS43MTAwODAzOSA1LjcxMDA4MDM5LDYuMjg1NzE0MjkgNSw2LjI4NTcxNDI5IFoiIGlkPSLmpK3lnIblvaIiIGZpbGwtcnVsZT0ibm9uemVybyI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+";
7216
+ var pencilEraser1 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAxOCAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSIyNSIgcng9IjMuNSIgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMC4zNSIgc3Ryb2tlPSJ3aGl0ZSIvPgo8L3N2Zz4K";
7217
+ var pencilEraser2 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMzQiIHZpZXdCb3g9IjAgMCAyNiAzNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIzMyIgcng9IjMuNSIgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMC4zNSIgc3Ryb2tlPSJ3aGl0ZSIvPgo8L3N2Zz4K";
7218
+ var pencilEraser3 = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCAzNCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSIzMyIgaGVpZ2h0PSI0OSIgcng9IjMuNSIgZmlsbD0iYmxhY2siIGZpbGwtb3BhY2l0eT0iMC4zNSIgc3Ryb2tlPSJ3aGl0ZSIvPgo8L3N2Zz4K";
7175
7219
  const ApplianceMap = {
7176
7220
  [ApplianceNames.pencil]: pencil,
7177
7221
  [ApplianceNames.selector]: selector,
7178
7222
  [ApplianceNames.eraser]: eraser,
7179
7223
  [ApplianceNames.shape]: shape,
7180
7224
  [ApplianceNames.text]: text,
7181
- [ApplianceNames.laserPointer]: laser
7225
+ [ApplianceNames.laserPointer]: laser,
7226
+ ["pencilEraser1"]: pencilEraser1,
7227
+ ["pencilEraser2"]: pencilEraser2,
7228
+ ["pencilEraser3"]: pencilEraser3
7182
7229
  };
7183
7230
  class CursorManager {
7184
7231
  constructor(manager, enableCursor, applianceIcons) {
@@ -16688,7 +16735,7 @@ const reconnectRefresher = new ReconnectRefresher({ emitter });
16688
16735
  const _WindowManager = class extends InvisiblePlugin {
16689
16736
  constructor(context) {
16690
16737
  super(context);
16691
- this.version = "0.4.43";
16738
+ this.version = "0.4.45";
16692
16739
  this.dependencies = { "dependencies": { "@juggle/resize-observer": "^3.3.1", "@netless/telebox-insider": "0.2.27", "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", "@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", "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.14.1", "white-web-sdk": "2.16.33" } };
16693
16740
  this.emitter = callbacks$1;
16694
16741
  this.viewMode = ViewMode.Broadcaster;
@@ -17026,7 +17073,7 @@ const _WindowManager = class extends InvisiblePlugin {
17026
17073
  addEmitterOnceListener(`destroy-${kind2}`, listener);
17027
17074
  }
17028
17075
  setViewMode(mode) {
17029
- var _a, _b, _c;
17076
+ var _a, _b, _c, _d;
17030
17077
  if (mode === ViewMode.Broadcaster) {
17031
17078
  if (this.canOperate) {
17032
17079
  (_a = this.appManager) == null ? void 0 : _a.mainViewProxy.setCameraAndSize();
@@ -17037,6 +17084,7 @@ const _WindowManager = class extends InvisiblePlugin {
17037
17084
  (_c = this.appManager) == null ? void 0 : _c.mainViewProxy.stop();
17038
17085
  }
17039
17086
  this.viewMode = mode;
17087
+ (_d = this.appManager) == null ? void 0 : _d.mainViewProxy.setViewMode(mode);
17040
17088
  }
17041
17089
  setBoxState(boxState) {
17042
17090
  if (!this.canOperate)
@@ -17173,6 +17221,14 @@ const _WindowManager = class extends InvisiblePlugin {
17173
17221
  var _a;
17174
17222
  return (_a = this.appManager) == null ? void 0 : _a.closeApp(appId);
17175
17223
  }
17224
+ focusApp(appId) {
17225
+ var _a, _b, _c;
17226
+ const box = (_a = this.boxManager) == null ? void 0 : _a.getBox(appId);
17227
+ if (box) {
17228
+ (_b = this.boxManager) == null ? void 0 : _b.focusBox({ appId }, false);
17229
+ ((_c = this.boxManager) == null ? void 0 : _c.teleBoxManager).makeBoxTop(box, false);
17230
+ }
17231
+ }
17176
17232
  moveCamera(camera) {
17177
17233
  var _a;
17178
17234
  const pureCamera = omit(camera, ["animationMode"]);