fcr-ui-scene 3.7.6 → 3.7.7

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.
Files changed (259) hide show
  1. package/installer/icons/icon.png +0 -0
  2. package/installer/mac/entitlements.mac.plist +1 -5
  3. package/lib/creator/index.js +12 -6
  4. package/lib/creator/provider-initializer.browser.js +0 -3
  5. package/lib/creator/provider-initializer.electron.js +0 -4
  6. package/lib/creator.d.ts +36 -0
  7. package/lib/creator.js +465 -0
  8. package/lib/electron/bootstrap-sdk.js +70 -20
  9. package/lib/electron/struct.d.ts +7 -1
  10. package/lib/electron/struct.js +8 -1
  11. package/lib/electron/until.d.ts +3 -1
  12. package/lib/electron/until.js +7 -2
  13. package/lib/modules/action-bar/components/item/index.js +1 -0
  14. package/lib/modules/action-bar/components/screen-share/submenu.js +1 -1
  15. package/lib/modules/action-bar/index.d.ts +58 -0
  16. package/lib/modules/action-bar/index.dev.d.ts +0 -0
  17. package/lib/modules/action-bar/index.dev.js +94 -0
  18. package/lib/modules/action-bar/index.js +109 -0
  19. package/lib/modules/action-bar/store.d.ts +259 -0
  20. package/lib/modules/action-bar/store.js +1529 -0
  21. package/lib/modules/action-bar/types.d.ts +90 -0
  22. package/lib/modules/action-bar/types.js +6 -0
  23. package/lib/modules/action-bar/view.d.ts +5 -0
  24. package/lib/modules/action-bar/view.js +112 -0
  25. package/lib/modules/annotation/annotation-index.d.ts +2 -0
  26. package/lib/modules/annotation/annotation-index.js +80 -0
  27. package/lib/modules/annotation/annotation-toolbar-store.d.ts +75 -0
  28. package/lib/modules/annotation/annotation-toolbar-store.js +459 -0
  29. package/lib/modules/annotation/board-cursor.css +77 -0
  30. package/lib/modules/annotation/components/color-picker/components/color.d.ts +5 -0
  31. package/lib/modules/annotation/components/color-picker/components/color.js +38 -0
  32. package/lib/modules/annotation/components/color-picker/components/panel.d.ts +1 -0
  33. package/lib/modules/annotation/components/color-picker/components/panel.js +109 -0
  34. package/lib/modules/annotation/components/color-picker/components/picker.d.ts +1 -0
  35. package/lib/modules/annotation/components/color-picker/components/picker.js +75 -0
  36. package/lib/modules/annotation/components/color-picker/index.d.ts +2 -0
  37. package/lib/modules/annotation/components/color-picker/index.js +47 -0
  38. package/lib/modules/annotation/components/eraser-picker.d.ts +4 -0
  39. package/lib/modules/annotation/components/eraser-picker.js +144 -0
  40. package/lib/modules/annotation/components/expansion/index.d.ts +1 -0
  41. package/lib/modules/annotation/components/expansion/index.js +100 -0
  42. package/lib/modules/annotation/components/extra-tool-picker.d.ts +1 -0
  43. package/lib/modules/annotation/components/extra-tool-picker.js +62 -0
  44. package/lib/modules/annotation/components/history.d.ts +2 -0
  45. package/lib/modules/annotation/components/history.js +78 -0
  46. package/lib/modules/annotation/components/icons/fold-icon.d.ts +2 -0
  47. package/lib/modules/annotation/components/icons/fold-icon.js +41 -0
  48. package/lib/modules/annotation/components/icons/move-icon.d.ts +1 -0
  49. package/lib/modules/annotation/components/icons/move-icon.js +66 -0
  50. package/lib/modules/annotation/components/item/index.d.ts +1 -0
  51. package/lib/modules/annotation/components/item/index.js +43 -0
  52. package/lib/modules/annotation/components/move-handle.d.ts +5 -0
  53. package/lib/modules/annotation/components/move-handle.js +134 -0
  54. package/lib/modules/annotation/components/pen-picker.d.ts +4 -0
  55. package/lib/modules/annotation/components/pen-picker.js +155 -0
  56. package/lib/modules/annotation/components/screen-capture-picker.d.ts +4 -0
  57. package/lib/modules/annotation/components/screen-capture-picker.js +85 -0
  58. package/lib/modules/annotation/components/shape-picker.d.ts +4 -0
  59. package/lib/modules/annotation/components/shape-picker.js +210 -0
  60. package/lib/modules/annotation/hooks/index.d.ts +14 -0
  61. package/lib/modules/annotation/hooks/index.js +292 -0
  62. package/lib/modules/annotation/index.d.ts +45 -0
  63. package/lib/modules/annotation/index.js +168 -0
  64. package/lib/modules/annotation/store.d.ts +98 -0
  65. package/lib/modules/annotation/store.js +620 -0
  66. package/lib/modules/annotation/style.css +36 -0
  67. package/lib/modules/annotation/view.d.ts +3 -0
  68. package/lib/modules/annotation/view.js +44 -0
  69. package/lib/modules/chat/index.css +5 -1
  70. package/lib/modules/chat/view.js +6 -1
  71. package/lib/modules/components/control-bar/components/switch-theme/index.css +2 -0
  72. package/lib/modules/components/control-bar/components/switch-theme/index.js +5 -7
  73. package/lib/modules/components/control-bar/index.js +26 -7
  74. package/lib/modules/components/device-control/store.d.ts +42 -0
  75. package/lib/modules/components/device-control/store.js +241 -0
  76. package/lib/modules/components/leave-meeting/store.d.ts +39 -0
  77. package/lib/modules/components/leave-meeting/store.js +270 -0
  78. package/lib/modules/components/toolbar/components/capture-tool/index.d.ts +0 -1
  79. package/lib/modules/components/toolbar/components/capture-tool/index.js +1 -2
  80. package/lib/modules/components/toolbar/components/vertical-frame/index.js +2 -2
  81. package/lib/modules/components/toolbar/hooks/use-resize-visible.js +43 -42
  82. package/lib/modules/components/toolbar/index.js +6 -24
  83. package/lib/modules/control-bar/components/annotation-button/index.d.ts +1 -0
  84. package/lib/modules/control-bar/components/annotation-button/index.js +72 -0
  85. package/lib/modules/control-bar/components/cloud-recording-buttons.d.ts +3 -0
  86. package/lib/modules/control-bar/components/cloud-recording-buttons.js +65 -3
  87. package/lib/modules/control-bar/store.js +11 -6
  88. package/lib/modules/control-bar/types.d.ts +20 -0
  89. package/lib/modules/control-bar/types.js +6 -0
  90. package/lib/modules/dialog/components/dialog-container/component/body.d.ts +1 -0
  91. package/lib/modules/dialog/components/dialog-container/component/body.js +3 -2
  92. package/lib/modules/dialog/components/dialog-container/index.css +1 -1
  93. package/lib/modules/dialog/components/dialog-container/index.d.ts +1 -0
  94. package/lib/modules/dialog/components/dialog-container/index.js +4 -1
  95. package/lib/modules/dialog/components/normal-window/index.d.ts +1 -0
  96. package/lib/modules/dialog/components/normal-window/index.js +3 -1
  97. package/lib/modules/dialog/dialogs/chat/index.js +2 -1
  98. package/lib/modules/dialog/dialogs/control-bar-leave-meeting/index.js +0 -1
  99. package/lib/modules/dialog/dialogs/end-meeting/index.d.ts +1 -0
  100. package/lib/modules/dialog/dialogs/end-meeting/index.js +2 -1
  101. package/lib/modules/dialog/dialogs/participant/index.js +2 -1
  102. package/lib/modules/dialog/dialogs/pre-setting/index.css +26 -0
  103. package/lib/modules/dialog/dialogs/pre-setting/index.d.ts +6 -0
  104. package/lib/modules/dialog/dialogs/pre-setting/index.js +62 -0
  105. package/lib/modules/dialog/dialogs/widget/electron.d.ts +6 -0
  106. package/lib/modules/dialog/dialogs/widget/electron.js +38 -0
  107. package/lib/modules/dialog/hooks/use-popover-watcher.d.ts +14 -0
  108. package/lib/modules/dialog/hooks/use-popover-watcher.js +110 -0
  109. package/lib/modules/dialog/hooks/useElectron.d.ts +28 -0
  110. package/lib/modules/dialog/hooks/useElectron.js +277 -0
  111. package/lib/modules/dialog/store.d.ts +135 -0
  112. package/lib/modules/dialog/store.js +616 -0
  113. package/lib/modules/event-confirm/components/window/index.d.ts +7 -0
  114. package/lib/modules/event-confirm/components/window/index.js +221 -0
  115. package/lib/modules/event-confirm/index.css +24 -0
  116. package/lib/modules/event-confirm/index.d.ts +27 -0
  117. package/lib/modules/event-confirm/index.js +76 -0
  118. package/lib/modules/event-confirm/store.d.ts +50 -0
  119. package/lib/modules/event-confirm/store.js +394 -0
  120. package/lib/modules/event-confirm/view.d.ts +2 -0
  121. package/lib/modules/event-confirm/view.js +55 -0
  122. package/lib/modules/event-toast/store.d.ts +27 -0
  123. package/lib/modules/event-toast/store.js +205 -0
  124. package/lib/modules/layout/store.d.ts +176 -0
  125. package/lib/modules/layout/store.electron.js +1 -1
  126. package/lib/modules/layout/store.js +1452 -0
  127. package/lib/modules/participant/store.d.ts +222 -0
  128. package/lib/modules/participant/store.js +1929 -0
  129. package/lib/modules/pc-audio-connect/index.d.ts +22 -0
  130. package/lib/modules/pc-audio-connect/index.js +67 -0
  131. package/lib/modules/pc-audio-connect/store.d.ts +46 -0
  132. package/lib/modules/pc-audio-connect/store.js +304 -0
  133. package/lib/modules/secondary-window/store.d.ts +0 -1
  134. package/lib/modules/secondary-window/store.js +9 -22
  135. package/lib/modules/secondary-window/view.js +6 -5
  136. package/lib/modules/setting/common/advance-link.d.ts +3 -0
  137. package/lib/modules/setting/common/advance-link.js +27 -0
  138. package/lib/modules/setting/common/index.css +26 -0
  139. package/lib/modules/setting/common/useNamespace.d.ts +15 -0
  140. package/lib/modules/setting/common/useNamespace.js +66 -0
  141. package/lib/modules/setting/dialog-wrapper.d.ts +2 -0
  142. package/lib/modules/setting/dialog-wrapper.js +110 -0
  143. package/lib/modules/setting/index.css +0 -1
  144. package/lib/modules/setting/store.base.js +6 -0
  145. package/lib/modules/setting/store.d.ts +261 -0
  146. package/lib/modules/setting/store.js +1321 -0
  147. package/lib/modules/setting/view.js +0 -3
  148. package/lib/modules/share-screen/store.d.ts +148 -0
  149. package/lib/modules/share-screen/store.electron.js +1 -1
  150. package/lib/modules/share-screen/store.js +960 -0
  151. package/lib/modules/share-screen/types.d.ts +26 -0
  152. package/lib/modules/share-screen/types.js +6 -0
  153. package/lib/modules/state-bar/layout-config.js +6 -0
  154. package/lib/modules/state-bar/main-scene/store.base.d.ts +2 -0
  155. package/lib/modules/state-bar/main-scene/store.base.js +6 -0
  156. package/lib/modules/state-bar/store.d.ts +124 -0
  157. package/lib/modules/state-bar/store.js +664 -0
  158. package/lib/modules/video-window/index.css +6 -0
  159. package/lib/modules/video-window/popover-watcher.d.ts +4 -1
  160. package/lib/modules/video-window/popover-watcher.js +15 -2
  161. package/lib/modules/video-window/store.d.ts +18 -1
  162. package/lib/modules/video-window/store.js +55 -7
  163. package/lib/modules/whiteboard/components/progress/electron.d.ts +1 -0
  164. package/lib/modules/whiteboard/components/progress/electron.js +33 -0
  165. package/lib/modules/whiteboard/store.js +20 -2
  166. package/lib/modules/widget/store.d.ts +14 -0
  167. package/lib/modules/widget/store.js +28 -0
  168. package/lib/object-manager.d.ts +0 -1
  169. package/lib/object-manager.js +0 -1
  170. package/lib/providers/annotation-provider.d.ts +124 -0
  171. package/lib/providers/annotation-provider.js +369 -0
  172. package/lib/providers/board-share/bar-control/base.d.ts +1 -1
  173. package/lib/providers/board-share/bar-control/base.js +37 -28
  174. package/lib/providers/board-share/bar-control/electron.d.ts +1 -1
  175. package/lib/providers/board-share/bar-control/electron.js +19 -16
  176. package/lib/providers/board-share/provider.browser.d.ts +3 -0
  177. package/lib/providers/board-share/provider.browser.js +21 -3
  178. package/lib/providers/device-provider.js +5 -1
  179. package/lib/providers/dialog/provider.electron.js +6 -0
  180. package/lib/providers/dialog-provider.d.ts +137 -0
  181. package/lib/providers/dialog-provider.js +194 -0
  182. package/lib/providers/message-provider.d.ts +69 -0
  183. package/lib/providers/message-provider.js +140 -0
  184. package/lib/providers/mouse-detect/provider.d.ts +5 -0
  185. package/lib/providers/mouse-detect/provider.js +74 -49
  186. package/lib/providers/multi-display-provider.d.ts +3 -5
  187. package/lib/providers/multi-display-provider.js +0 -9
  188. package/lib/providers/room-provider/room-provider.d.ts +3 -14
  189. package/lib/providers/room-provider/room-provider.js +5 -26
  190. package/lib/providers/room-provider.d.ts +194 -0
  191. package/lib/providers/room-provider.js +916 -0
  192. package/lib/providers/screen-share/stream-state-sync.js +19 -12
  193. package/lib/providers/screen-share-provider.d.ts +245 -0
  194. package/lib/providers/screen-share-provider.js +850 -0
  195. package/lib/providers/sharing-provider.d.ts +42 -0
  196. package/lib/providers/sharing-provider.js +228 -0
  197. package/lib/providers/user-setting-storage-provider.d.ts +21 -0
  198. package/lib/providers/user-setting-storage-provider.js +65 -0
  199. package/lib/providers/whiteboard-provider.d.ts +24 -0
  200. package/lib/providers/whiteboard-provider.js +128 -0
  201. package/lib/providers/window/main-window.d.ts +0 -5
  202. package/lib/providers/window/main-window.js +0 -44
  203. package/lib/providers/window/renderer-window.d.ts +1 -0
  204. package/lib/providers/window/renderer-window.js +9 -1
  205. package/lib/scenes/main-scene.js +0 -2
  206. package/lib/shared-data-source/annotation-data.d.ts +17 -0
  207. package/lib/shared-data-source/annotation-data.js +110 -0
  208. package/lib/shared-data-source/app-list-data.d.ts +34 -0
  209. package/lib/shared-data-source/app-list-data.js +133 -0
  210. package/lib/shared-data-source/chat-data.d.ts +25 -0
  211. package/lib/shared-data-source/chat-data.js +139 -0
  212. package/lib/shared-data-source/config.d.ts +35 -0
  213. package/lib/shared-data-source/config.js +40 -0
  214. package/lib/shared-data-source/confirm-data.d.ts +44 -0
  215. package/lib/shared-data-source/confirm-data.js +201 -0
  216. package/lib/shared-data-source/device-privilege-data.d.ts +8 -0
  217. package/lib/shared-data-source/device-privilege-data.js +25 -0
  218. package/lib/shared-data-source/interpreter.d.ts +77 -0
  219. package/lib/shared-data-source/interpreter.js +247 -0
  220. package/lib/shared-data-source/layout-data.d.ts +31 -0
  221. package/lib/shared-data-source/layout-data.js +189 -0
  222. package/lib/shared-data-source/meeting-time.d.ts +90 -0
  223. package/lib/shared-data-source/meeting-time.js +416 -0
  224. package/lib/shared-data-source/member-data.d.ts +139 -0
  225. package/lib/shared-data-source/member-data.js +517 -0
  226. package/lib/shared-data-source/pin-data.d.ts +13 -0
  227. package/lib/shared-data-source/pin-data.js +111 -0
  228. package/lib/shared-data-source/screen-share-data.d.ts +357 -0
  229. package/lib/shared-data-source/screen-share-data.js +513 -0
  230. package/lib/shared-data-source/security-data.d.ts +39 -0
  231. package/lib/shared-data-source/security-data.js +156 -0
  232. package/lib/shared-data-source/setting.d.ts +67 -0
  233. package/lib/shared-data-source/setting.js +220 -0
  234. package/lib/shared-data-source/speaker-spotlight.d.ts +5 -0
  235. package/lib/shared-data-source/speaker-spotlight.js +15 -0
  236. package/lib/shared-data-source/video-window.d.ts +165 -0
  237. package/lib/shared-data-source/video-window.js +1266 -0
  238. package/lib/shared-data-source/waiting-room.d.ts +46 -0
  239. package/lib/shared-data-source/waiting-room.js +222 -0
  240. package/lib/shared-data-source/whiteboard-data.d.ts +70 -0
  241. package/lib/{providers/board-share/bar-control.js → shared-data-source/whiteboard-data.js} +62 -104
  242. package/lib/ui-scene.js +4 -2
  243. package/lib/utilities/board-context.d.ts +4 -0
  244. package/lib/utilities/board-context.js +12 -0
  245. package/lib/utilities/copyText.d.ts +2 -0
  246. package/lib/utilities/copyText.js +48 -0
  247. package/lib/utilities/renderer-event.d.ts +10 -0
  248. package/lib/utilities/renderer-event.js +95 -0
  249. package/lib/utilities/screen-capture-permission.d.ts +2 -0
  250. package/lib/utilities/screen-capture-permission.js +24 -0
  251. package/lib/utilities/screen.d.ts +3 -0
  252. package/lib/utilities/screen.js +53 -0
  253. package/lib/utilities/video-track-render-context.d.ts +6 -0
  254. package/lib/utilities/video-track-render-context.js +9 -0
  255. package/lib/waiting-room-control-manager.d.ts +28 -0
  256. package/lib/waiting-room-control-manager.js +230 -0
  257. package/package.json +5 -5
  258. package/public/index.html +22 -1
  259. package/lib/providers/board-share/bar-control.d.ts +0 -51
@@ -4,6 +4,9 @@
4
4
  */
5
5
  export declare function usePopoverWatcher({ rootDom, setVideoWindowSize, resetVideoWindowSize, }: {
6
6
  rootDom: HTMLElement | null;
7
- setVideoWindowSize: (width: number, height: number) => void;
7
+ setVideoWindowSize: (width: number, height: number) => {
8
+ width: number;
9
+ height: number;
10
+ };
8
11
  resetVideoWindowSize: () => void;
9
12
  }): void;
@@ -27,12 +27,14 @@ function usePopoverWatcher(_ref) {
27
27
  var dialogWrapper = rootDom;
28
28
  var body = dialogWrapper.ownerDocument.body;
29
29
  var popoverClassName = 'fcr-popover';
30
+ var isPopoverOpened = false;
30
31
  var observer = new MutationObserver(function (mutationsList) {
31
32
  var popover = body.querySelector(".".concat(popoverClassName));
32
33
  mutationsList.forEach(function (mutation) {
33
34
  if (mutation.type === 'childList') {
34
35
  mutation.removedNodes.forEach(function (node) {
35
36
  if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains(popoverClassName)) {
37
+ isPopoverOpened = false;
36
38
  resetVideoWindowSize();
37
39
  }
38
40
  });
@@ -40,10 +42,21 @@ function usePopoverWatcher(_ref) {
40
42
  return;
41
43
  }
42
44
  mutation.addedNodes.forEach(function (node) {
43
- if (node.nodeType === Node.ELEMENT_NODE && node.contains(popover)) {
45
+ if (node.nodeType === Node.ELEMENT_NODE && node.contains(popover) && !isPopoverOpened) {
46
+ isPopoverOpened = true;
44
47
  var width = popover.offsetWidth + dialogWrapper.offsetWidth - WIDTH_RIGHT_OFFSET;
45
48
  var height = Math.max(popover.offsetHeight + HEAD_HEIGHT_OFFSET, dialogWrapper.offsetHeight);
46
- setVideoWindowSize(width, height);
49
+ var _setVideoWindowSize = setVideoWindowSize(width, height),
50
+ videoWidth = _setVideoWindowSize.width;
51
+ if (videoWidth < width) {
52
+ // 说明右侧的宽度不够放下 popover,此时 popover 会自动翻转到左侧。
53
+ // 需要把手动调整左侧的距离,使其贴靠在窗口的最右侧。
54
+
55
+ // popover 会自动计算并设置 style 的 left 值,此处如果直接设置 left 会被 popover 内覆盖。
56
+ // 所以通过设置 css 变量的方式传递给 fcr-video-window-diaolog-wrapper_popover-align-right 使用。
57
+ popover.style.setProperty('--video-window-popover-left', "".concat(videoWidth - popover.offsetWidth, "px"));
58
+ popover.id = 'fcr-video-window-diaolog-wrapper_popover-align-right';
59
+ }
47
60
  }
48
61
  });
49
62
  }
@@ -62,8 +62,25 @@ export default class VideoWindowStore {
62
62
  width: number;
63
63
  height: number;
64
64
  }): void;
65
- setVideoWindowSize(width: number, height: number): void;
65
+ /**
66
+ * @description 如果传入的宽度超过了允许的最大宽度, 则使用允许的最大宽度设置窗口宽度,以避免窗口超出显示器的边缘。
67
+ * @param width 期望设置的视频窗宽度
68
+ * @param height 视频窗高度
69
+ * @returns 实际设置的视频窗尺寸
70
+ */
71
+ setVideoWindowSize(width: number, height: number): {
72
+ width: number;
73
+ height: number;
74
+ };
66
75
  resetVideoWindowSize(): void;
76
+ /**
77
+ * 计算 video-window 窗口允许设置的最大宽度,窗口左上角距离屏幕右侧边缘的距离和当前的窗口内容宽度中,选择最大值作为允许的最大宽度(不能超过窗口最大化的宽度)
78
+ * @param videoWindowX 视频窗左上角 x 坐标
79
+ * @param videoWindowStyleWidth 视频窗内容的宽度
80
+ * @returns 允许设置的最大宽度
81
+ */
82
+ private _computedMaxAllowedWidth;
83
+ private _setVideoWindowDialogSize;
67
84
  private _onAudioVolumeUpdated;
68
85
  private _handleDialogOpen;
69
86
  private _handleDialogClose;
@@ -136,7 +136,7 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
136
136
  return _this.videoWindowPreviewType;
137
137
  }, function () {
138
138
  var size = _this.videoWindowStyleSize;
139
- _this.setVideoWindowSize(size.width, size.height);
139
+ _this._setVideoWindowDialogSize(size.width, size.height);
140
140
  }), (0, _mobx.reaction)(function () {
141
141
  return _this.filterFoldList.length;
142
142
  }, function (length, prevLength) {
@@ -151,7 +151,7 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
151
151
  var videoWindow = _this._windowProvider.getWindowById(_constant.FcrUIDialogKey.VIDEO_WINDOW);
152
152
  var bounds = videoWindow.getBounds();
153
153
  var width = Math.max(bounds.width, size.width);
154
- _this.setVideoWindowSize(width, size.height);
154
+ _this._setVideoWindowDialogSize(width, size.height);
155
155
  }
156
156
  }));
157
157
  this._streamControl.addObserver({
@@ -410,21 +410,69 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
410
410
  this._videoWindowSmallTypeStyleSize = size;
411
411
  }
412
412
  }
413
+ /**
414
+ * @description 如果传入的宽度超过了允许的最大宽度, 则使用允许的最大宽度设置窗口宽度,以避免窗口超出显示器的边缘。
415
+ * @param width 期望设置的视频窗宽度
416
+ * @param height 视频窗高度
417
+ * @returns 实际设置的视频窗尺寸
418
+ */
413
419
  }, {
414
420
  key: "setVideoWindowSize",
415
421
  value: function setVideoWindowSize(width, height) {
416
422
  var videoWindow = this._windowProvider.getWindowById(_constant.FcrUIDialogKey.VIDEO_WINDOW);
417
- this._isWindowApiResize = true;
418
- (0, _videoWindow.setVideoWindowDialogSize)(videoWindow, {
419
- width: width,
423
+ var _videoWindow$getBound = videoWindow.getBounds(),
424
+ videoWindowX = _videoWindow$getBound.x;
425
+ var videoWindowStyleWidth = this.videoWindowStyleSize.width;
426
+ var maxAllowedWidth = this._computedMaxAllowedWidth(videoWindowX, videoWindowStyleWidth);
427
+
428
+ // 在最大宽度限制内,使用期望的宽度
429
+ // 超出最大宽度限制,使用允许的最大宽度
430
+ var finalWidth = Math.min(maxAllowedWidth, width);
431
+ this._setVideoWindowDialogSize(finalWidth, height, videoWindow);
432
+ return {
433
+ width: finalWidth,
420
434
  height: height
421
- });
435
+ };
422
436
  }
423
437
  }, {
424
438
  key: "resetVideoWindowSize",
425
439
  value: function resetVideoWindowSize() {
426
440
  var size = this.videoWindowStyleSize;
427
- this.setVideoWindowSize(size.width, size.height);
441
+ this._setVideoWindowDialogSize(size.width, size.height);
442
+ }
443
+
444
+ /**
445
+ * 计算 video-window 窗口允许设置的最大宽度,窗口左上角距离屏幕右侧边缘的距离和当前的窗口内容宽度中,选择最大值作为允许的最大宽度(不能超过窗口最大化的宽度)
446
+ * @param videoWindowX 视频窗左上角 x 坐标
447
+ * @param videoWindowStyleWidth 视频窗内容的宽度
448
+ * @returns 允许设置的最大宽度
449
+ */
450
+ }, {
451
+ key: "_computedMaxAllowedWidth",
452
+ value: function _computedMaxAllowedWidth(videoWindowX, videoWindowStyleWidth) {
453
+ var sharingDisplayBounds = this._screenShareProvider.sharingDisplayBounds;
454
+ var displayX = sharingDisplayBounds.x,
455
+ displayWidth = sharingDisplayBounds.width;
456
+ var displayRightEdge = displayX + displayWidth;
457
+ var distanceToRightEdge = displayRightEdge - videoWindowX;
458
+
459
+ // 如果窗口左上角距离屏幕边缘的距离小于当前的窗口内容宽度,则使用当前窗口内容宽度作为允许的最大宽度,避免窗口收窄导致内容显示异常
460
+ var maxAllowedWidth = Math.max(distanceToRightEdge, videoWindowStyleWidth);
461
+
462
+ // 如果最大允许宽度超出了窗口最大化的宽度,则使用窗口最大化的宽度作为允许设置的宽度
463
+ return Math.min(maxAllowedWidth, _type.VideoWindowZoomMaxWidth);
464
+ }
465
+ }, {
466
+ key: "_setVideoWindowDialogSize",
467
+ value: function _setVideoWindowDialogSize(width, height, videoWindow) {
468
+ if (!videoWindow) {
469
+ videoWindow = this._windowProvider.getWindowById(_constant.FcrUIDialogKey.VIDEO_WINDOW);
470
+ }
471
+ this._isWindowApiResize = true;
472
+ (0, _videoWindow.setVideoWindowDialogSize)(videoWindow, {
473
+ width: width,
474
+ height: height
475
+ });
428
476
  }
429
477
  }, {
430
478
  key: "_onAudioVolumeUpdated",
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ var _mobxReact = require("mobx-react");
4
+ var _store = require("../../../dialog/store");
5
+ var _react = require("react");
6
+ var _reactDom = require("react-dom");
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var ProgressElectronDialog = (0, _mobxReact.observer)(function (_ref) {
9
+ var children = _ref.children;
10
+ var store = (0, _react.useContext)(_store.StoreContext);
11
+ (0, _react.useEffect)(function () {
12
+ var node;
13
+ window.runtime.openRendererWindow('progress-dialog', function (dom) {
14
+ node = dom;
15
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_store.StoreContext.Provider, {
16
+ value: store,
17
+ children: children
18
+ }), dom);
19
+ }, {
20
+ frame: false,
21
+ fullscreen: false,
22
+ maximizable: false,
23
+ width: 290,
24
+ height: 60,
25
+ transparent: true
26
+ });
27
+ return function () {
28
+ (0, _reactDom.unmountComponentAtNode)(node);
29
+ window.runtime.closeRendererWindow('progress-dialog');
30
+ };
31
+ }, []);
32
+ return null;
33
+ });
@@ -231,10 +231,27 @@ var WhitebaordStoreBase = exports["default"] = /*#__PURE__*/function () {
231
231
  key: "setBoardContainerDom",
232
232
  value: function setBoardContainerDom(boardDom) {
233
233
  if (boardDom) {
234
- this.logger.info("set board container dom: ".concat(boardDom));
234
+ if (this.boardContainer === boardDom) {
235
+ this.logger.warn("set board container dom: container is the same, ignore");
236
+ return;
237
+ }
238
+ this.logger.info("set board container dom: container is mounted");
235
239
  this.boardContainer = boardDom;
240
+ if (this._isMounted) {
241
+ this.logger.error("set board container dom: container is already mounted");
242
+ return;
243
+ }
244
+
245
+ // 切换布局和 pin 时,白板会在 Carousel 和 Gallery 两个组件内切换显示
246
+ // 原先的白板容器会被销毁,新的白板容器会重新创建
247
+ // 这里需要重新挂载白板视图到新的容器内
248
+ if (this._boardView) {
249
+ this._mount(this._boardView);
250
+ }
236
251
  } else {
237
- this.logger.warn("set board container dom is not ready");
252
+ this.logger.info("set board container dom: container is unmounted");
253
+ this._isMounted = false;
254
+ this.boardContainer = undefined;
238
255
  }
239
256
  }
240
257
  }, {
@@ -361,6 +378,7 @@ var WhitebaordStoreBase = exports["default"] = /*#__PURE__*/function () {
361
378
  var reason = data.reason,
362
379
  operatorUser = data.operatorUser;
363
380
  this._unmount();
381
+ this._boardView = null;
364
382
  var stopByOther = reason === _struct.FcrUIBoardShareStopReason.STOPPED_BY_OTHER;
365
383
  var normalStop = reason === _struct.FcrUIBoardShareStopReason.NORMAL_STOP;
366
384
  var operatorIsNotMe = (operatorUser === null || operatorUser === void 0 ? void 0 : operatorUser.userId) !== this.localUser.userId;
@@ -0,0 +1,14 @@
1
+ import { FcrUIWidgetProvider } from '../../providers/widget-provider';
2
+ import { FcrUIWebWidgetConfig } from '../../type';
3
+ export default class WebWidgetStore {
4
+ private _widgetProvider;
5
+ constructor({ widgetProvider }: {
6
+ widgetProvider: FcrUIWidgetProvider;
7
+ });
8
+ get openedWidgets(): Map<string, import("./type").FcrUIWebWidget>;
9
+ release(): void;
10
+ }
11
+ export declare const StoreContext: import("react").Context<{
12
+ widgetConfig: FcrUIWebWidgetConfig;
13
+ store: WebWidgetStore;
14
+ }>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.StoreContext = void 0;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _react = require("react");
12
+ var WebWidgetStore = exports["default"] = /*#__PURE__*/function () {
13
+ function WebWidgetStore(_ref) {
14
+ var widgetProvider = _ref.widgetProvider;
15
+ (0, _classCallCheck2["default"])(this, WebWidgetStore);
16
+ this._widgetProvider = widgetProvider;
17
+ }
18
+ return (0, _createClass2["default"])(WebWidgetStore, [{
19
+ key: "openedWidgets",
20
+ get: function get() {
21
+ return this._widgetProvider.openedWidgets;
22
+ }
23
+ }, {
24
+ key: "release",
25
+ value: function release() {}
26
+ }]);
27
+ }(); // #endregion
28
+ var StoreContext = exports.StoreContext = /*#__PURE__*/(0, _react.createContext)(null);
@@ -44,7 +44,6 @@ export declare enum FcrUIObjectKeys {
44
44
  P_MULTI_DISPLAY_PROVIDER = "multiDisplayProvider",
45
45
  P_WAITING_ROOM_CONTROL_PROVIDER = "waitingRoomControlProvider",
46
46
  P_CURRENT_ROOM_CONTROL_PROVIDER = "currentRoomControlProvider",
47
- P_CONNECTION_PROVIDER = "connectionProvider",
48
47
  P_SESSION_PROVIDER = "sessionProvider",
49
48
  P_PHONE_AUDIO_CONNECTOR_PROVIDER = "phoneAudioConnectorProvider",
50
49
  P_ANNOTATION_PROVIDER = "annotationProvider",
@@ -160,7 +160,6 @@ var FcrUIObjectKeys = exports.FcrUIObjectKeys = /*#__PURE__*/function (FcrUIObje
160
160
  FcrUIObjectKeys["P_MULTI_DISPLAY_PROVIDER"] = "multiDisplayProvider";
161
161
  FcrUIObjectKeys["P_WAITING_ROOM_CONTROL_PROVIDER"] = "waitingRoomControlProvider";
162
162
  FcrUIObjectKeys["P_CURRENT_ROOM_CONTROL_PROVIDER"] = "currentRoomControlProvider";
163
- FcrUIObjectKeys["P_CONNECTION_PROVIDER"] = "connectionProvider";
164
163
  FcrUIObjectKeys["P_SESSION_PROVIDER"] = "sessionProvider";
165
164
  FcrUIObjectKeys["P_PHONE_AUDIO_CONNECTOR_PROVIDER"] = "phoneAudioConnectorProvider";
166
165
  FcrUIObjectKeys["P_ANNOTATION_PROVIDER"] = "annotationProvider";
@@ -0,0 +1,124 @@
1
+ import { FcrAnnotationControl } from 'fcr-core/lib/room-control/whiteboard-control-v2/annotation-control/type';
2
+ import { FcrUIDialogProvider } from './dialog-provider';
3
+ import { CurrentShareScreenTypes } from '../modules/share-screen/types';
4
+ import { FcrUIVideoWindowDataSource } from '../shared-data-source/video-window';
5
+ import { FcrUIVideoWindowData } from '../type';
6
+ import { FcrUIPrivilegeProvider } from './privilege-provider';
7
+ import { FcrUIScreenShareSharedDataSource } from '../shared-data-source/screen-share-data';
8
+ export interface FcrUIAnnotationProvider {
9
+ /**
10
+ * 接收端属性,用于获取当前标注窗口的缩放比例
11
+ */
12
+ get scalcValue(): number;
13
+ /**
14
+ * 接收端方法,用于获取标注功能的 Control 对象
15
+ */
16
+ get annotationControl(): FcrAnnotationControl | undefined;
17
+ /**
18
+ * 接收端属性,用于获取当前共享窗口数据
19
+ */
20
+ get screenShareWindowData(): FcrUIVideoWindowData | undefined;
21
+ /**
22
+ * 接收端属性,用于获取当前标注启动状态
23
+ */
24
+ get annotationHasStart(): boolean;
25
+ /**
26
+ * 安全中是否允许书写
27
+ */
28
+ get allowAnnotationWrite(): boolean;
29
+ /**
30
+ * 当前用户是否允许书写
31
+ */
32
+ get allowAnnotationSelfWrite(): boolean;
33
+ /**
34
+ * 发起端状态,用于获取当前是否正在标注
35
+ */
36
+ get annotating(): boolean;
37
+ /**
38
+ * 发起端数据,当前共享屏幕信息
39
+ */
40
+ get currentShareInfo(): CurrentShareScreenTypes;
41
+ /**
42
+ * 是否展示toolbar
43
+ */
44
+ get isShowToolbar(): boolean;
45
+ /**
46
+ * 设置是否展示toolbar
47
+ */
48
+ setIsShowToolbar(isShow: boolean): void;
49
+ /**
50
+ * 发起端方法,用于打开关闭标注,由用户触发,此操切换标注工具栏打开状态合窗口的鼠标穿透模式
51
+ */
52
+ toggleAnnotation(): void;
53
+ /**
54
+ * 发起端方法,启动/初始化标注窗口,在主窗口启动时调用
55
+ */
56
+ initAnnotationWindow(): void;
57
+ /**
58
+ * 发起端方法,打开标注窗口
59
+ */
60
+ openAnnotationWindow(): void;
61
+ /**
62
+ * 发起端方法,展示标注窗口
63
+ */
64
+ showAnnotationWindow(): void;
65
+ /**
66
+ * 发起端方法,用于隐藏标注窗口,不是关闭
67
+ */
68
+ hideAnnotationWindow(): void;
69
+ /**
70
+ * 发起端方法,用于关闭标注窗口
71
+ */
72
+ closeAnnotationWindow(): void;
73
+ /**
74
+ * 发起端方法,用于设置当前共享屏幕信息
75
+ */
76
+ setCurrentShareInfo(info: CurrentShareScreenTypes): void;
77
+ /**
78
+ * 发起端方法,用通知标注窗口更新当前共享屏幕信息
79
+ */
80
+ setBoundsToAnnotationWindow(info?: CurrentShareScreenTypes): void;
81
+ /**
82
+ * 发起端方法,更新标注白板的viewport
83
+ */
84
+ updateWindowSize(width: number, height: number): void;
85
+ }
86
+ export declare enum FcrAnnotationState {
87
+ START = "start",
88
+ END = "end"
89
+ }
90
+ export declare class FcrUIAnnotationProviderImpl implements FcrUIAnnotationProvider {
91
+ private _dialogProvider;
92
+ private _videoWindowDataSource;
93
+ private _privilegeProvider;
94
+ private _sharedScreenShareSharedDataSource;
95
+ private _annotationDialogId;
96
+ private _annotationToolDialogId;
97
+ private _disposers;
98
+ protected logger: import("agora-foundation/lib/logger").Logger;
99
+ private _annotationControl;
100
+ accessor annotationState: FcrAnnotationState;
101
+ accessor annotating: boolean;
102
+ accessor isShowToolbar: boolean;
103
+ accessor currentShareInfo: CurrentShareScreenTypes;
104
+ get allowAnnotationSelfWrite(): boolean;
105
+ get screenShareWindowData(): import("../shared-data-source/video-window").FcrUIVideoWindowDataImpl | undefined;
106
+ get scalcValue(): number;
107
+ get annotationControl(): FcrAnnotationControl | undefined;
108
+ get annotationHasStart(): boolean;
109
+ get allowAnnotationWrite(): boolean;
110
+ constructor(_dialogProvider: FcrUIDialogProvider, _videoWindowDataSource: FcrUIVideoWindowDataSource, _privilegeProvider: FcrUIPrivilegeProvider, _sharedScreenShareSharedDataSource: FcrUIScreenShareSharedDataSource);
111
+ updateWindowSize(width: number, height: number): void;
112
+ toggleAnnotation(): Promise<void>;
113
+ setIsShowToolbar(isShow: boolean): void;
114
+ initAnnotationWindow(): void;
115
+ openAnnotationWindow(): void;
116
+ showAnnotationWindow(): void;
117
+ hideAnnotationWindow(): void;
118
+ setCurrentShareInfo(info: CurrentShareScreenTypes): void;
119
+ setBoundsToAnnotationWindow(info?: CurrentShareScreenTypes): Promise<void>;
120
+ closeAnnotationWindow(): void;
121
+ release(): void;
122
+ private _openToolbar;
123
+ private _closeToolbar;
124
+ }