fcr-ui-scene 3.7.5 → 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 (401) 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 +15 -7
  4. package/lib/creator/provider-initializer.browser.js +13 -4
  5. package/lib/creator/provider-initializer.electron.js +22 -10
  6. package/lib/creator.d.ts +36 -0
  7. package/lib/creator.js +465 -0
  8. package/lib/electron/bootstrap-sdk.js +90 -6
  9. package/lib/electron/injections.d.ts +1 -0
  10. package/lib/electron/injections.js +5 -1
  11. package/lib/electron/ipc/type.d.ts +1 -0
  12. package/lib/electron/ipc/type.js +1 -0
  13. package/lib/electron/preload.js +1 -0
  14. package/lib/electron/sdk-helper.d.ts +3 -0
  15. package/lib/electron/sdk-helper.js +53 -19
  16. package/lib/electron/struct.d.ts +7 -1
  17. package/lib/electron/struct.js +8 -1
  18. package/lib/electron/until.d.ts +7 -1
  19. package/lib/electron/until.js +11 -2
  20. package/lib/fragments/annotation/store.js +2 -0
  21. package/lib/modules/action-bar/components/item/index.js +1 -0
  22. package/lib/modules/action-bar/components/more/poppover-content.js +1 -1
  23. package/lib/modules/action-bar/components/screen-share/index.browser.js +4 -2
  24. package/lib/modules/action-bar/components/screen-share/index.electron.js +4 -2
  25. package/lib/modules/action-bar/components/screen-share/submenu.d.ts +5 -1
  26. package/lib/modules/action-bar/components/screen-share/submenu.js +12 -9
  27. package/lib/modules/action-bar/index.d.ts +55 -14
  28. package/lib/modules/action-bar/index.dev.js +94 -0
  29. package/lib/modules/action-bar/index.js +78 -32
  30. package/lib/modules/action-bar/store.d.ts +259 -0
  31. package/lib/modules/action-bar/store.js +1529 -0
  32. package/lib/modules/action-bar/types.d.ts +90 -0
  33. package/lib/modules/action-bar/types.js +6 -0
  34. package/lib/modules/action-bar/view.d.ts +1 -1
  35. package/lib/modules/action-bar/view.js +2 -2
  36. package/lib/modules/annotation/annotation-index.d.ts +2 -0
  37. package/lib/modules/annotation/annotation-index.js +80 -0
  38. package/lib/modules/annotation/annotation-toolbar-store.d.ts +75 -0
  39. package/lib/modules/annotation/annotation-toolbar-store.js +459 -0
  40. package/lib/modules/annotation/board-cursor.css +77 -0
  41. package/lib/modules/annotation/components/color-picker/components/color.d.ts +5 -0
  42. package/lib/modules/annotation/components/color-picker/components/color.js +38 -0
  43. package/lib/modules/annotation/components/color-picker/components/panel.d.ts +1 -0
  44. package/lib/modules/annotation/components/color-picker/components/panel.js +109 -0
  45. package/lib/modules/annotation/components/color-picker/components/picker.d.ts +1 -0
  46. package/lib/modules/annotation/components/color-picker/components/picker.js +75 -0
  47. package/lib/modules/annotation/components/color-picker/index.d.ts +2 -0
  48. package/lib/modules/annotation/components/color-picker/index.js +47 -0
  49. package/lib/modules/annotation/components/eraser-picker.d.ts +4 -0
  50. package/lib/modules/annotation/components/eraser-picker.js +144 -0
  51. package/lib/modules/annotation/components/expansion/index.d.ts +1 -0
  52. package/lib/modules/annotation/components/expansion/index.js +100 -0
  53. package/lib/modules/annotation/components/extra-tool-picker.d.ts +1 -0
  54. package/lib/modules/annotation/components/extra-tool-picker.js +62 -0
  55. package/lib/modules/annotation/components/history.d.ts +2 -0
  56. package/lib/modules/annotation/components/history.js +78 -0
  57. package/lib/modules/annotation/components/icons/fold-icon.d.ts +2 -0
  58. package/lib/modules/annotation/components/icons/fold-icon.js +41 -0
  59. package/lib/modules/annotation/components/icons/move-icon.d.ts +1 -0
  60. package/lib/modules/annotation/components/icons/move-icon.js +66 -0
  61. package/lib/modules/annotation/components/item/index.d.ts +1 -0
  62. package/lib/modules/annotation/components/item/index.js +43 -0
  63. package/lib/modules/annotation/components/move-handle.d.ts +5 -0
  64. package/lib/modules/annotation/components/move-handle.js +134 -0
  65. package/lib/modules/annotation/components/pen-picker.d.ts +4 -0
  66. package/lib/modules/annotation/components/pen-picker.js +155 -0
  67. package/lib/modules/annotation/components/screen-capture-picker.d.ts +4 -0
  68. package/lib/modules/annotation/components/screen-capture-picker.js +85 -0
  69. package/lib/modules/annotation/components/shape-picker.d.ts +4 -0
  70. package/lib/modules/annotation/components/shape-picker.js +210 -0
  71. package/lib/modules/annotation/hooks/index.d.ts +14 -0
  72. package/lib/modules/annotation/hooks/index.js +292 -0
  73. package/lib/modules/annotation/index.d.ts +45 -0
  74. package/lib/modules/annotation/index.js +168 -0
  75. package/lib/modules/annotation/store.d.ts +98 -0
  76. package/lib/modules/annotation/store.js +620 -0
  77. package/lib/modules/annotation/style.css +36 -0
  78. package/lib/modules/annotation/view.d.ts +3 -0
  79. package/lib/modules/annotation/view.js +44 -0
  80. package/lib/modules/audio-stream/index.js +4 -2
  81. package/lib/modules/chat/index.css +8 -0
  82. package/lib/modules/chat/view.js +7 -1
  83. package/lib/modules/components/control-bar/components/switch-theme/index.css +2 -0
  84. package/lib/modules/components/control-bar/components/switch-theme/index.js +5 -7
  85. package/lib/modules/components/control-bar/index.css +0 -2
  86. package/lib/modules/components/control-bar/index.d.ts +1 -0
  87. package/lib/modules/components/control-bar/index.js +51 -15
  88. package/lib/modules/components/device-control/store.d.ts +42 -0
  89. package/lib/modules/components/device-control/store.js +241 -0
  90. package/lib/modules/components/leave-meeting/main-scene/store.d.ts +3 -0
  91. package/lib/modules/components/leave-meeting/main-scene/store.js +12 -0
  92. package/lib/modules/components/leave-meeting/store.base.d.ts +4 -3
  93. package/lib/modules/components/leave-meeting/store.base.js +0 -10
  94. package/lib/modules/components/leave-meeting/store.d.ts +39 -0
  95. package/lib/modules/components/leave-meeting/store.js +270 -0
  96. package/lib/modules/components/leave-meeting/waiting-scene/store.d.ts +5 -1
  97. package/lib/modules/components/leave-meeting/waiting-scene/store.js +17 -3
  98. package/lib/modules/components/member-window/components/member-actions/components/more-actions.js +1 -2
  99. package/lib/modules/components/member-window/components/video-player/components/local-video-player-with-zoom.js +4 -3
  100. package/lib/modules/components/member-window/components/video-player/components/zoomable-container.js +18 -32
  101. package/lib/modules/components/toolbar/components/capture-tool/index.d.ts +0 -1
  102. package/lib/modules/components/toolbar/components/capture-tool/index.js +1 -2
  103. package/lib/modules/components/toolbar/components/vertical-frame/index.js +2 -2
  104. package/lib/modules/components/toolbar/hooks/use-resize-visible.js +45 -32
  105. package/lib/modules/components/toolbar/index.js +6 -24
  106. package/lib/modules/control-bar/components/annotation-button/index.d.ts +1 -0
  107. package/lib/modules/control-bar/components/annotation-button/index.js +72 -0
  108. package/lib/modules/control-bar/components/boundary-detector.d.ts +7 -5
  109. package/lib/modules/control-bar/components/boundary-detector.js +22 -2
  110. package/lib/modules/control-bar/components/cloud-recording-buttons.d.ts +3 -0
  111. package/lib/modules/control-bar/components/cloud-recording-buttons.js +68 -3
  112. package/lib/modules/control-bar/hooks.js +2 -1
  113. package/lib/modules/control-bar/store.d.ts +1 -0
  114. package/lib/modules/control-bar/store.js +21 -7
  115. package/lib/modules/control-bar/types.d.ts +5 -16
  116. package/lib/modules/control-bar/view.js +96 -28
  117. package/lib/modules/dialog/components/confirm/index.js +6 -24
  118. package/lib/modules/dialog/components/dialog-container/component/body.d.ts +1 -0
  119. package/lib/modules/dialog/components/dialog-container/component/body.js +3 -2
  120. package/lib/modules/dialog/components/dialog-container/index.css +8 -1
  121. package/lib/modules/dialog/components/dialog-container/index.d.ts +1 -0
  122. package/lib/modules/dialog/components/dialog-container/index.js +4 -1
  123. package/lib/modules/dialog/components/normal-window/index.d.ts +1 -0
  124. package/lib/modules/dialog/components/normal-window/index.js +3 -1
  125. package/lib/modules/dialog/dialogs/chat/index.js +2 -1
  126. package/lib/modules/dialog/dialogs/control-bar-leave-meeting/index.js +0 -1
  127. package/lib/modules/dialog/dialogs/device-setting/index.d.ts +1 -0
  128. package/lib/modules/dialog/dialogs/device-setting/index.js +4 -2
  129. package/lib/modules/dialog/dialogs/end-meeting/index.d.ts +1 -0
  130. package/lib/modules/dialog/dialogs/end-meeting/index.js +2 -1
  131. package/lib/modules/dialog/dialogs/invite/index.d.ts +1 -0
  132. package/lib/modules/dialog/dialogs/invite/index.js +2 -1
  133. package/lib/modules/dialog/dialogs/mute-all/index.d.ts +1 -0
  134. package/lib/modules/dialog/dialogs/mute-all/index.js +2 -1
  135. package/lib/modules/dialog/dialogs/participant/index.js +9 -2
  136. package/lib/modules/dialog/dialogs/pre-setting/index.d.ts +3 -3
  137. package/lib/modules/dialog/dialogs/pre-setting/index.js +25 -20
  138. package/lib/modules/dialog/dialogs/share-screen-selection/index.js +1 -1
  139. package/lib/modules/dialog/dialogs/sub-window/index.js +1 -7
  140. package/lib/modules/dialog/dialogs/toast/index.d.ts +1 -1
  141. package/lib/modules/dialog/dialogs/toast/index.js +1 -1
  142. package/lib/modules/dialog/dialogs/video-window/index.d.ts +4 -1
  143. package/lib/modules/dialog/dialogs/video-window/index.js +5 -2
  144. package/lib/modules/dialog/dialogs/widget/electron.d.ts +6 -0
  145. package/lib/modules/dialog/dialogs/widget/electron.js +38 -0
  146. package/lib/modules/dialog/dialogs/widget/index.d.ts +2 -0
  147. package/lib/modules/dialog/dialogs/widget/index.js +11 -3
  148. package/lib/modules/dialog/hooks/use-popover-watcher.js +1 -3
  149. package/lib/modules/dialog/hooks/useElectron.d.ts +28 -0
  150. package/lib/modules/dialog/hooks/useElectron.js +277 -0
  151. package/lib/modules/dialog/index.css +6 -2
  152. package/lib/modules/dialog/level-config.d.ts +1 -0
  153. package/lib/modules/dialog/level-config.js +2 -1
  154. package/lib/modules/dialog/store.base.d.ts +2 -0
  155. package/lib/modules/dialog/store.browser.d.ts +2 -0
  156. package/lib/modules/dialog/store.browser.js +6 -1
  157. package/lib/modules/dialog/store.d.ts +135 -0
  158. package/lib/modules/dialog/store.electron.d.ts +9 -1
  159. package/lib/modules/dialog/store.electron.js +64 -4
  160. package/lib/modules/dialog/store.js +616 -0
  161. package/lib/modules/dialog/type.d.ts +3 -0
  162. package/lib/modules/event-confirm/components/window/index.d.ts +7 -0
  163. package/lib/modules/event-confirm/components/window/index.js +221 -0
  164. package/lib/modules/event-confirm/index.css +24 -0
  165. package/lib/modules/event-confirm/index.d.ts +27 -0
  166. package/lib/modules/event-confirm/index.js +76 -0
  167. package/lib/modules/event-confirm/store.d.ts +50 -0
  168. package/lib/modules/event-confirm/store.js +394 -0
  169. package/lib/modules/event-confirm/view.d.ts +2 -0
  170. package/lib/modules/event-confirm/view.js +55 -0
  171. package/lib/modules/event-toast/index.css +0 -1
  172. package/lib/modules/event-toast/index.js +1 -0
  173. package/lib/modules/event-toast/store.base.d.ts +2 -0
  174. package/lib/modules/event-toast/store.base.js +40 -21
  175. package/lib/modules/event-toast/store.d.ts +9 -5
  176. package/lib/modules/event-toast/store.electron.d.ts +2 -0
  177. package/lib/modules/event-toast/store.electron.js +19 -9
  178. package/lib/modules/event-toast/store.js +57 -39
  179. package/lib/modules/layout/components/CommonVideoRenderer.js +1 -0
  180. package/lib/modules/layout/store.d.ts +176 -0
  181. package/lib/modules/layout/store.electron.js +1 -1
  182. package/lib/modules/layout/store.js +1452 -0
  183. package/lib/modules/participant/components/confirm-input/index.js +1 -1
  184. package/lib/modules/participant/store.base.d.ts +30 -3
  185. package/lib/modules/participant/store.base.js +249 -96
  186. package/lib/modules/participant/store.browser.js +4 -3
  187. package/lib/modules/participant/store.d.ts +222 -0
  188. package/lib/modules/participant/store.electron.js +5 -3
  189. package/lib/modules/participant/store.js +1929 -0
  190. package/lib/modules/pc-audio-connect/index.d.ts +22 -0
  191. package/lib/modules/pc-audio-connect/index.js +67 -0
  192. package/lib/modules/pc-audio-connect/main-scene/store.js +1 -0
  193. package/lib/modules/pc-audio-connect/store.d.ts +46 -0
  194. package/lib/modules/pc-audio-connect/store.js +304 -0
  195. package/lib/modules/secondary-window/store.d.ts +1 -1
  196. package/lib/modules/secondary-window/store.js +14 -22
  197. package/lib/modules/secondary-window/view.js +10 -10
  198. package/lib/modules/setting/audio-settings/audio-settings.js +0 -17
  199. package/lib/modules/setting/dialog-wrapper.d.ts +2 -0
  200. package/lib/modules/setting/dialog-wrapper.js +110 -0
  201. package/lib/modules/setting/index.js +1 -1
  202. package/lib/modules/setting/state/index.js +1 -1
  203. package/lib/modules/setting/store.base.d.ts +5 -2
  204. package/lib/modules/setting/store.base.js +72 -26
  205. package/lib/modules/setting/store.d.ts +261 -0
  206. package/lib/modules/setting/store.js +1321 -0
  207. package/lib/modules/share-screen/components/selection/index.css +4 -0
  208. package/lib/modules/share-screen/store.base.js +17 -4
  209. package/lib/modules/share-screen/store.d.ts +148 -0
  210. package/lib/modules/share-screen/store.electron.js +5 -2
  211. package/lib/modules/share-screen/store.js +960 -0
  212. package/lib/modules/share-screen/types.d.ts +26 -0
  213. package/lib/modules/share-screen/types.js +6 -0
  214. package/lib/modules/state-bar/layout-config.js +6 -0
  215. package/lib/modules/state-bar/main-scene/store.base.d.ts +2 -0
  216. package/lib/modules/state-bar/main-scene/store.base.js +6 -0
  217. package/lib/modules/state-bar/store.d.ts +124 -0
  218. package/lib/modules/state-bar/store.js +664 -0
  219. package/lib/modules/video-window/index.css +6 -0
  220. package/lib/modules/video-window/popover-watcher.d.ts +5 -10
  221. package/lib/modules/video-window/popover-watcher.js +34 -31
  222. package/lib/modules/video-window/store.d.ts +32 -5
  223. package/lib/modules/video-window/store.js +156 -63
  224. package/lib/modules/video-window/view.js +50 -1
  225. package/lib/modules/whiteboard/components/progress/electron.d.ts +1 -0
  226. package/lib/modules/whiteboard/components/progress/electron.js +33 -0
  227. package/lib/modules/whiteboard/index.d.ts +1 -1
  228. package/lib/modules/whiteboard/index.js +1 -1
  229. package/lib/modules/whiteboard/store.d.ts +3 -0
  230. package/lib/modules/whiteboard/store.js +31 -2
  231. package/lib/modules/whiteboard/view.js +10 -1
  232. package/lib/modules/widget/sdk.js +1 -1
  233. package/lib/modules/widget/store.base.d.ts +1 -0
  234. package/lib/modules/widget/store.browser.d.ts +1 -0
  235. package/lib/modules/widget/store.browser.js +60 -4
  236. package/lib/modules/widget/store.d.ts +5 -8
  237. package/lib/modules/widget/store.electron.d.ts +1 -0
  238. package/lib/modules/widget/store.electron.js +59 -2
  239. package/lib/modules/widget/store.js +4 -47
  240. package/lib/modules/widget/type.d.ts +3 -2
  241. package/lib/modules/widget/view.js +9 -4
  242. package/lib/modules/widget/web-widget.d.ts +2 -1
  243. package/lib/modules/widget/web-widget.js +7 -5
  244. package/lib/object-manager.d.ts +2 -2
  245. package/lib/object-manager.js +1 -1
  246. package/lib/providers/annotation-provider.d.ts +124 -0
  247. package/lib/providers/annotation-provider.js +369 -0
  248. package/lib/providers/board-share/bar-control/base.d.ts +1 -1
  249. package/lib/providers/board-share/bar-control/base.js +37 -28
  250. package/lib/providers/board-share/bar-control/electron.d.ts +1 -1
  251. package/lib/providers/board-share/bar-control/electron.js +19 -16
  252. package/lib/providers/board-share/provider.base.d.ts +8 -1
  253. package/lib/providers/board-share/provider.base.js +12 -2
  254. package/lib/providers/board-share/provider.browser.d.ts +3 -0
  255. package/lib/providers/board-share/provider.browser.js +21 -3
  256. package/lib/providers/device-provider.d.ts +16 -2
  257. package/lib/providers/device-provider.js +53 -60
  258. package/lib/providers/dialog/provider.base.d.ts +1 -0
  259. package/lib/providers/dialog/provider.browser.d.ts +1 -0
  260. package/lib/providers/dialog/provider.browser.js +7 -2
  261. package/lib/providers/dialog/provider.electron.d.ts +4 -1
  262. package/lib/providers/dialog/provider.electron.js +94 -2
  263. package/lib/providers/dialog/type.d.ts +7 -0
  264. package/lib/providers/dialog-provider.d.ts +137 -0
  265. package/lib/providers/dialog-provider.js +194 -0
  266. package/lib/providers/message-provider.d.ts +69 -0
  267. package/lib/providers/message-provider.js +140 -0
  268. package/lib/providers/mouse-detect/provider.d.ts +9 -1
  269. package/lib/providers/mouse-detect/provider.js +119 -5
  270. package/lib/providers/mouse-detect/struct.d.ts +2 -1
  271. package/lib/providers/mouse-detect/struct.js +1 -0
  272. package/lib/providers/mouse-detect/type.d.ts +2 -0
  273. package/lib/providers/multi-display-provider.d.ts +3 -5
  274. package/lib/providers/multi-display-provider.js +0 -9
  275. package/lib/providers/renderer-provider.d.ts +5 -0
  276. package/lib/providers/renderer-provider.js +5 -0
  277. package/lib/providers/room-provider/room-provider.d.ts +4 -14
  278. package/lib/providers/room-provider/room-provider.js +28 -39
  279. package/lib/providers/room-provider.d.ts +194 -0
  280. package/lib/providers/room-provider.js +916 -0
  281. package/lib/providers/screen-share/provider.base.js +3 -11
  282. package/lib/providers/screen-share/provider.browser.js +23 -14
  283. package/lib/providers/screen-share/provider.electron.d.ts +1 -0
  284. package/lib/providers/screen-share/provider.electron.js +44 -17
  285. package/lib/providers/screen-share/strategy/browser.js +16 -13
  286. package/lib/providers/screen-share/strategy/electron.d.ts +2 -2
  287. package/lib/providers/screen-share/strategy/electron.js +15 -10
  288. package/lib/providers/screen-share/strategy/type.d.ts +6 -0
  289. package/lib/providers/screen-share/stream-state-sync.d.ts +3 -2
  290. package/lib/providers/screen-share/stream-state-sync.js +26 -16
  291. package/lib/providers/screen-share/struct.d.ts +9 -7
  292. package/lib/providers/screen-share/struct.js +11 -8
  293. package/lib/providers/screen-share/type.d.ts +7 -1
  294. package/lib/providers/screen-share-provider.d.ts +245 -0
  295. package/lib/providers/screen-share-provider.js +850 -0
  296. package/lib/providers/sharing-provider.d.ts +42 -0
  297. package/lib/providers/sharing-provider.js +228 -0
  298. package/lib/providers/user-setting-storage-provider.d.ts +21 -0
  299. package/lib/providers/user-setting-storage-provider.js +65 -0
  300. package/lib/providers/whiteboard-provider.d.ts +2 -4
  301. package/lib/providers/whiteboard-provider.js +4 -7
  302. package/lib/providers/widget-provider.d.ts +5 -3
  303. package/lib/providers/widget-provider.js +12 -18
  304. package/lib/providers/window/main-window.d.ts +0 -5
  305. package/lib/providers/window/main-window.js +3 -44
  306. package/lib/providers/window/renderer-window.d.ts +1 -0
  307. package/lib/providers/window/renderer-window.js +13 -2
  308. package/lib/runtime.d.ts +1 -0
  309. package/lib/runtime.js +2 -1
  310. package/lib/scenes/main-scene.js +5 -0
  311. package/lib/shared-context/board-context.d.ts +2 -0
  312. package/lib/shared-context/board-context.js +2 -0
  313. package/lib/shared-data/member-data.d.ts +0 -8
  314. package/lib/shared-data/member-data.js +26 -78
  315. package/lib/shared-data/widget-data.d.ts +13 -0
  316. package/lib/shared-data/widget-data.js +50 -0
  317. package/lib/shared-data-source/annotation-data.d.ts +17 -0
  318. package/lib/{modules/action-bar/store.base.js → shared-data-source/annotation-data.js} +34 -41
  319. package/lib/shared-data-source/app-list-data.d.ts +34 -0
  320. package/lib/shared-data-source/app-list-data.js +133 -0
  321. package/lib/shared-data-source/chat-data.d.ts +25 -0
  322. package/lib/shared-data-source/chat-data.js +139 -0
  323. package/lib/shared-data-source/config.d.ts +35 -0
  324. package/lib/shared-data-source/config.js +40 -0
  325. package/lib/shared-data-source/confirm-data.d.ts +44 -0
  326. package/lib/shared-data-source/confirm-data.js +201 -0
  327. package/lib/shared-data-source/device-privilege-data.d.ts +8 -0
  328. package/lib/shared-data-source/device-privilege-data.js +25 -0
  329. package/lib/shared-data-source/interpreter.d.ts +77 -0
  330. package/lib/shared-data-source/interpreter.js +247 -0
  331. package/lib/shared-data-source/layout-data.d.ts +31 -0
  332. package/lib/shared-data-source/layout-data.js +189 -0
  333. package/lib/shared-data-source/meeting-time.d.ts +90 -0
  334. package/lib/shared-data-source/meeting-time.js +416 -0
  335. package/lib/shared-data-source/member-data.d.ts +139 -0
  336. package/lib/shared-data-source/member-data.js +517 -0
  337. package/lib/shared-data-source/pin-data.d.ts +13 -0
  338. package/lib/{modules/action-bar/waiting-scene/store.js → shared-data-source/pin-data.js} +55 -35
  339. package/lib/shared-data-source/screen-share-data.d.ts +357 -0
  340. package/lib/shared-data-source/screen-share-data.js +513 -0
  341. package/lib/shared-data-source/security-data.d.ts +39 -0
  342. package/lib/shared-data-source/security-data.js +156 -0
  343. package/lib/shared-data-source/setting.d.ts +67 -0
  344. package/lib/shared-data-source/setting.js +220 -0
  345. package/lib/shared-data-source/speaker-spotlight.d.ts +5 -0
  346. package/lib/shared-data-source/speaker-spotlight.js +15 -0
  347. package/lib/shared-data-source/video-window.d.ts +165 -0
  348. package/lib/shared-data-source/video-window.js +1266 -0
  349. package/lib/shared-data-source/waiting-room.d.ts +46 -0
  350. package/lib/shared-data-source/waiting-room.js +222 -0
  351. package/lib/{shared-data → shared-data-source}/whiteboard-data.d.ts +2 -2
  352. package/lib/{shared-data → shared-data-source}/whiteboard-data.js +23 -17
  353. package/lib/translations/enUS.d.ts +0 -2
  354. package/lib/translations/enUS.js +4 -6
  355. package/lib/translations/zhCN.d.ts +0 -2
  356. package/lib/translations/zhCN.js +4 -6
  357. package/lib/type.d.ts +5 -0
  358. package/lib/ui-scene.d.ts +2 -4
  359. package/lib/ui-scene.js +31 -42
  360. package/lib/utilities/board-context.d.ts +4 -0
  361. package/lib/utilities/board-context.js +12 -0
  362. package/lib/utilities/constant.d.ts +3 -1
  363. package/lib/utilities/constant.js +5 -2
  364. package/lib/utilities/copyText.d.ts +2 -0
  365. package/lib/utilities/copyText.js +48 -0
  366. package/lib/utilities/default-config.d.ts +18 -0
  367. package/lib/utilities/default-config.js +19 -1
  368. package/lib/utilities/focus-helper.js +10 -3
  369. package/lib/utilities/logger.js +3 -1
  370. package/lib/utilities/renderer-event.d.ts +10 -0
  371. package/lib/utilities/renderer-event.js +95 -0
  372. package/lib/utilities/renderer.d.ts +1 -0
  373. package/lib/utilities/renderer.js +7 -1
  374. package/lib/utilities/screen-capture-permission.d.ts +2 -0
  375. package/lib/utilities/screen-capture-permission.js +24 -0
  376. package/lib/utilities/screen.d.ts +3 -0
  377. package/lib/utilities/screen.js +53 -0
  378. package/lib/utilities/video-track-render-context.d.ts +6 -0
  379. package/lib/utilities/video-track-render-context.js +9 -0
  380. package/lib/waiting-room-control-manager.d.ts +28 -0
  381. package/lib/waiting-room-control-manager.js +230 -0
  382. package/package.json +5 -5
  383. package/public/index.html +35 -4
  384. package/lib/modules/action-bar/store.base.d.ts +0 -15
  385. package/lib/modules/action-bar/waiting-scene/store.d.ts +0 -6
  386. package/lib/providers/board-share/bar-control.d.ts +0 -51
  387. package/lib/providers/board-share/bar-control.js +0 -390
  388. package/lib/providers/board-share/provider.d.ts +0 -66
  389. package/lib/providers/board-share/provider.js +0 -456
  390. package/lib/providers/screen-share/provider.d.ts +0 -69
  391. package/lib/providers/screen-share/provider.js +0 -615
  392. package/lib/providers/window/browser-window-proxy.js +0 -1
  393. package/lib/providers/window/ipc-protocol.d.ts +0 -0
  394. package/lib/providers/window/ipc-protocol.js +0 -1
  395. package/lib/providers/window/main-process-handler.d.ts +0 -0
  396. package/lib/providers/window/main-process-handler.js +0 -1
  397. package/lib/providers/window/main-process-integration.d.ts +0 -0
  398. package/lib/providers/window/main-process-integration.js +0 -1
  399. package/lib/utilities/ipc-protocol.d.ts +0 -91
  400. package/lib/utilities/ipc-protocol.js +0 -61
  401. /package/lib/{providers/window/browser-window-proxy.d.ts → modules/action-bar/index.dev.d.ts} +0 -0
@@ -1,17 +1,12 @@
1
- import { FcrVideoWindowPreviewType } from './type';
2
1
  /**
3
2
  * popoverWatcher 监听 popover 的出现和消失,并通过回调通知外部如何调整窗口
4
3
  *
5
4
  */
6
- export declare function usePopoverWatcher({ rootDom, type, callbacks, }: {
5
+ export declare function usePopoverWatcher({ rootDom, setVideoWindowSize, resetVideoWindowSize, }: {
7
6
  rootDom: HTMLElement | null;
8
- type: FcrVideoWindowPreviewType;
9
- callbacks: {
10
- onResize: (size: {
11
- width: number;
12
- height: number;
13
- }) => void;
14
- onResetSize: () => void;
15
- onSetResizable: (resizable: boolean) => void;
7
+ setVideoWindowSize: (width: number, height: number) => {
8
+ width: number;
9
+ height: number;
16
10
  };
11
+ resetVideoWindowSize: () => void;
17
12
  }): void;
@@ -5,66 +5,69 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.usePopoverWatcher = usePopoverWatcher;
8
- require("core-js/modules/es.array.concat.js");
9
8
  require("core-js/modules/es.array.for-each.js");
10
9
  require("core-js/modules/es.object.to-string.js");
11
10
  require("core-js/modules/esnext.iterator.constructor.js");
12
11
  require("core-js/modules/esnext.iterator.for-each.js");
13
12
  require("core-js/modules/web.dom-collections.for-each.js");
14
13
  var _react = require("react");
15
- var _type = require("./type");
14
+ var HEAD_HEIGHT_OFFSET = 150;
15
+ var WIDTH_RIGHT_OFFSET = 30;
16
+
16
17
  /**
17
18
  * popoverWatcher 监听 popover 的出现和消失,并通过回调通知外部如何调整窗口
18
19
  *
19
20
  */
20
21
  function usePopoverWatcher(_ref) {
21
22
  var rootDom = _ref.rootDom,
22
- type = _ref.type,
23
- callbacks = _ref.callbacks;
23
+ setVideoWindowSize = _ref.setVideoWindowSize,
24
+ resetVideoWindowSize = _ref.resetVideoWindowSize;
24
25
  (0, _react.useEffect)(function () {
25
26
  if (rootDom === null) return;
26
- var HEAD_HEIGHT_OFFSET = 150;
27
- var WIDTH_RIGHT_OFFSET = 30;
27
+ var dialogWrapper = rootDom;
28
+ var body = dialogWrapper.ownerDocument.body;
29
+ var popoverClassName = 'fcr-popover';
30
+ var isPopoverOpened = false;
28
31
  var observer = new MutationObserver(function (mutationsList) {
29
- var popover = rootDom.querySelector('.fcr-popover');
30
- var wrapper = rootDom.querySelector('.fcr-video-window-dialog-wrapper');
32
+ var popover = body.querySelector(".".concat(popoverClassName));
31
33
  mutationsList.forEach(function (mutation) {
32
34
  if (mutation.type === 'childList') {
33
- mutation.addedNodes.forEach(function (node) {
34
- if (node.nodeType === Node.ELEMENT_NODE && node.contains(popover)) {
35
- if (popover && wrapper) {
36
- var wrapperHeight = wrapper.offsetHeight,
37
- wrapperWidth = wrapper.offsetWidth;
38
- var popoverHeight = popover.offsetHeight,
39
- popoverWidth = popover.offsetWidth;
40
- // 通过回调通知外部调整窗口尺寸
41
- callbacks.onResize({
42
- height: Math.max(wrapperHeight, popoverHeight + HEAD_HEIGHT_OFFSET),
43
- width: wrapperWidth + popoverWidth - WIDTH_RIGHT_OFFSET
44
- });
45
- var rect = wrapper.getBoundingClientRect();
46
- wrapper.setAttribute('style', "height: ".concat(rect.height, "px;width: ").concat(rect.width, "px"));
47
- }
35
+ mutation.removedNodes.forEach(function (node) {
36
+ if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains(popoverClassName)) {
37
+ isPopoverOpened = false;
38
+ resetVideoWindowSize();
48
39
  }
49
40
  });
50
- mutation.removedNodes.forEach(function (node) {
51
- var _classList;
52
- if ((_classList = node.classList) !== null && _classList !== void 0 && _classList.contains('fcr-popover')) {
53
- callbacks.onResetSize();
54
- if (type === _type.FcrVideoWindowPreviewType.SMALL) {
55
- callbacks.onSetResizable(true);
41
+ if (!popover) {
42
+ return;
43
+ }
44
+ mutation.addedNodes.forEach(function (node) {
45
+ if (node.nodeType === Node.ELEMENT_NODE && node.contains(popover) && !isPopoverOpened) {
46
+ isPopoverOpened = true;
47
+ var width = popover.offsetWidth + dialogWrapper.offsetWidth - WIDTH_RIGHT_OFFSET;
48
+ var height = Math.max(popover.offsetHeight + HEAD_HEIGHT_OFFSET, dialogWrapper.offsetHeight);
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';
56
59
  }
57
60
  }
58
61
  });
59
62
  }
60
63
  });
61
64
  });
62
- observer.observe(rootDom, {
65
+ observer.observe(dialogWrapper.ownerDocument.body, {
63
66
  childList: true,
64
67
  subtree: true
65
68
  });
66
69
  return function () {
67
70
  observer.disconnect();
68
71
  };
69
- }, [rootDom, type, callbacks]);
72
+ }, [rootDom]);
70
73
  }
@@ -19,7 +19,9 @@ export default class VideoWindowStore {
19
19
  private _dialogProvider;
20
20
  private _videoRenderContext;
21
21
  private _dialogObserver;
22
- private _sharedVideoWindowDataSourceObserver;
22
+ private _windowOpened;
23
+ private _isWindowApiResize;
24
+ private accessor _videoWindowSmallTypeStyleSize;
23
25
  accessor userVolumeMap: Map<string, number>;
24
26
  accessor wrapperHovering: boolean;
25
27
  accessor videoWindowPreviewType: FcrVideoWindowPreviewType;
@@ -33,10 +35,13 @@ export default class VideoWindowStore {
33
35
  get hasPinnedStream(): boolean;
34
36
  get interpreterUserList(): import("fcr-core/lib/room-control/interpreter-control/types").FcrInterpreterUserInfo[] | null;
35
37
  get isInterpreterEnabled(): boolean;
36
- get shouldHaveListView(): boolean;
37
38
  get localUserRole(): FcrUserRole;
38
39
  get deviceMicrophoneEnabled(): boolean;
39
40
  get deviceCameraEnabled(): boolean;
41
+ get videoWindowStyleSize(): {
42
+ width: number;
43
+ height: number;
44
+ };
40
45
  constructor({ objectManager }: VideoWindowStoreArgs);
41
46
  setVideoOrientation(): void;
42
47
  release(): void;
@@ -53,9 +58,31 @@ export default class VideoWindowStore {
53
58
  setVideoWindowPreviewType(type: FcrVideoWindowPreviewType): void;
54
59
  setWrapperHover(hover: boolean): void;
55
60
  getAllowedOperations(targetRole: FcrUserRole, isSelf: boolean): string[];
56
- private _updateWindowProperties;
61
+ handleVideowWindowResize(size: {
62
+ width: number;
63
+ height: number;
64
+ }): 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
+ };
75
+ resetVideoWindowSize(): void;
76
+ /**
77
+ * 计算 video-window 窗口允许设置的最大宽度,窗口左上角距离屏幕右侧边缘的距离和当前的窗口内容宽度中,选择最大值作为允许的最大宽度(不能超过窗口最大化的宽度)
78
+ * @param videoWindowX 视频窗左上角 x 坐标
79
+ * @param videoWindowStyleWidth 视频窗内容的宽度
80
+ * @returns 允许设置的最大宽度
81
+ */
82
+ private _computedMaxAllowedWidth;
83
+ private _setVideoWindowDialogSize;
57
84
  private _onAudioVolumeUpdated;
58
- private _handleFoldListUpdated;
59
- private _handleDialogSwitch;
85
+ private _handleDialogOpen;
86
+ private _handleDialogClose;
60
87
  }
61
88
  export declare const StoreContext: import("react").Context<VideoWindowStore>;
@@ -70,7 +70,7 @@ var _react = require("react");
70
70
  var _type3 = require("../../type");
71
71
  var _videoWindow = require("../dialog/dialogs/video-window");
72
72
  var _VideoWindowStore;
73
- var _initProto, _init_userVolumeMap, _init_wrapperHovering, _init_videoWindowPreviewType, _setVideoWindowPreviewTypeDecs, _setWrapperHoverDecs, _getAllowedOperationsDecs, _onAudioVolumeUpdatedDecs, _ref;
73
+ var _initProto, _init__videoWindowSmallTypeStyleSize, _init_userVolumeMap, _init_wrapperHovering, _init_videoWindowPreviewType, _setVideoWindowPreviewTypeDecs, _setWrapperHoverDecs, _getAllowedOperationsDecs, _handleVideowWindowResizeDecs, _onAudioVolumeUpdatedDecs, _ref;
74
74
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
75
75
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
76
76
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
@@ -84,7 +84,8 @@ function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side
84
84
  var _A = /*#__PURE__*/new WeakMap();
85
85
  var _B = /*#__PURE__*/new WeakMap();
86
86
  var _C = /*#__PURE__*/new WeakMap();
87
- _ref = (_setVideoWindowPreviewTypeDecs = [_mobx.action, _mobx.action.bound], _setWrapperHoverDecs = [_mobx.action, _mobx.action.bound], _getAllowedOperationsDecs = [_mobx.action, _mobx.action.bound], _onAudioVolumeUpdatedDecs = [_mobx.action, _mobx.action.bound], "_subscriptions");
87
+ var _D = /*#__PURE__*/new WeakMap();
88
+ _ref = (_setVideoWindowPreviewTypeDecs = [_mobx.action, _mobx.action.bound], _setWrapperHoverDecs = [_mobx.action, _mobx.action.bound], _getAllowedOperationsDecs = [_mobx.action, _mobx.action.bound], _handleVideowWindowResizeDecs = [_mobx.action, _mobx.action.bound], _onAudioVolumeUpdatedDecs = [_mobx.action, _mobx.action.bound], "_subscriptions");
88
89
  var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
89
90
  function VideoWindowStore(_ref2) {
90
91
  var _this = this;
@@ -92,20 +93,18 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
92
93
  (0, _classCallCheck2["default"])(this, VideoWindowStore);
93
94
  (0, _defineProperty2["default"])(this, _ref, (_initProto(this), []));
94
95
  (0, _defineProperty2["default"])(this, "_dialogObserver", {
95
- onDialogOpen: function onDialogOpen(dialogKey) {
96
- return _this._handleDialogSwitch(dialogKey, true);
97
- },
98
- onDialogClose: function onDialogClose(dialogKey) {
99
- return _this._handleDialogSwitch(dialogKey, false);
100
- }
101
- });
102
- (0, _defineProperty2["default"])(this, "_sharedVideoWindowDataSourceObserver", {
103
- onFoldListAdded: this._handleFoldListUpdated,
104
- onFoldListRemoved: this._handleFoldListUpdated
96
+ onDialogOpen: this._handleDialogOpen,
97
+ onDialogClose: this._handleDialogClose
105
98
  });
106
- _classPrivateFieldInitSpec(this, _A, _init_userVolumeMap(this, new Map()));
107
- _classPrivateFieldInitSpec(this, _B, _init_wrapperHovering(this, false));
108
- _classPrivateFieldInitSpec(this, _C, _init_videoWindowPreviewType(this, _type.FcrVideoWindowPreviewType.SMALL));
99
+ (0, _defineProperty2["default"])(this, "_windowOpened", false);
100
+ (0, _defineProperty2["default"])(this, "_isWindowApiResize", false);
101
+ _classPrivateFieldInitSpec(this, _A, _init__videoWindowSmallTypeStyleSize(this, {
102
+ width: _type.DefaultVideoWindowWidth,
103
+ height: _type.DefaultVideoWindowSmallTypeHeight
104
+ }));
105
+ _classPrivateFieldInitSpec(this, _B, _init_userVolumeMap(this, new Map()));
106
+ _classPrivateFieldInitSpec(this, _C, _init_wrapperHovering(this, false));
107
+ _classPrivateFieldInitSpec(this, _D, _init_videoWindowPreviewType(this, _type.FcrVideoWindowPreviewType.SMALL));
109
108
  // Get all required objects from objectManager
110
109
  this._eventProvider = objectManager.getObject(_objectManager.FcrUIObjectKeys.P_EVENT_PROVIDER);
111
110
  this._deviceStore = objectManager.getObject(_objectManager.FcrUIObjectKeys.P_DEVICE_PROVIDER);
@@ -133,6 +132,27 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
133
132
  (0, _mobx.runInAction)(function () {
134
133
  _this.userVolumeMap.set('0', volume);
135
134
  });
135
+ }), (0, _mobx.reaction)(function () {
136
+ return _this.videoWindowPreviewType;
137
+ }, function () {
138
+ var size = _this.videoWindowStyleSize;
139
+ _this._setVideoWindowDialogSize(size.width, size.height);
140
+ }), (0, _mobx.reaction)(function () {
141
+ return _this.filterFoldList.length;
142
+ }, function (length, prevLength) {
143
+ if (!_this._windowOpened) return;
144
+ var isList = _this.videoWindowPreviewType === _type.FcrVideoWindowPreviewType.LIST;
145
+ if (length === 1 && isList) {
146
+ _this.setVideoWindowPreviewType(_type.FcrVideoWindowPreviewType.SMALL);
147
+ return;
148
+ }
149
+ if (isList && length !== prevLength) {
150
+ var size = _this.videoWindowStyleSize;
151
+ var videoWindow = _this._windowProvider.getWindowById(_constant.FcrUIDialogKey.VIDEO_WINDOW);
152
+ var bounds = videoWindow.getBounds();
153
+ var width = Math.max(bounds.width, size.width);
154
+ _this._setVideoWindowDialogSize(width, size.height);
155
+ }
136
156
  }));
137
157
  this._streamControl.addObserver({
138
158
  onStreamVolumeIndicationUpdated: this._onAudioVolumeUpdated
@@ -140,7 +160,7 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
140
160
  this._dialogProvider.addObserver(this._dialogObserver);
141
161
  }
142
162
  return (0, _createClass2["default"])(VideoWindowStore, [{
143
- key: "userVolumeMap",
163
+ key: "_videoWindowSmallTypeStyleSize",
144
164
  get: function get() {
145
165
  return _classPrivateFieldGet(_A, this);
146
166
  },
@@ -148,7 +168,7 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
148
168
  _classPrivateFieldSet(_A, this, v);
149
169
  }
150
170
  }, {
151
- key: "wrapperHovering",
171
+ key: "userVolumeMap",
152
172
  get: function get() {
153
173
  return _classPrivateFieldGet(_B, this);
154
174
  },
@@ -156,13 +176,21 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
156
176
  _classPrivateFieldSet(_B, this, v);
157
177
  }
158
178
  }, {
159
- key: "videoWindowPreviewType",
179
+ key: "wrapperHovering",
160
180
  get: function get() {
161
181
  return _classPrivateFieldGet(_C, this);
162
182
  },
163
183
  set: function set(v) {
164
184
  _classPrivateFieldSet(_C, this, v);
165
185
  }
186
+ }, {
187
+ key: "videoWindowPreviewType",
188
+ get: function get() {
189
+ return _classPrivateFieldGet(_D, this);
190
+ },
191
+ set: function set(v) {
192
+ _classPrivateFieldSet(_D, this, v);
193
+ }
166
194
  }, {
167
195
  key: "foldList",
168
196
  get: function get() {
@@ -228,11 +256,6 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
228
256
  get: function get() {
229
257
  return this._sharedInterpreterDataSource.isInterpreterEnabled;
230
258
  }
231
- }, {
232
- key: "shouldHaveListView",
233
- get: function get() {
234
- return this.filterFoldList.length > 1;
235
- }
236
259
  }, {
237
260
  key: "localUserRole",
238
261
  get: function get() {
@@ -248,6 +271,19 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
248
271
  get: function get() {
249
272
  return this._deviceStore.cameraEnabled;
250
273
  }
274
+ }, {
275
+ key: "videoWindowStyleSize",
276
+ get: function get() {
277
+ if (this.videoWindowPreviewType === _type.FcrVideoWindowPreviewType.SMALL) {
278
+ return this._videoWindowSmallTypeStyleSize;
279
+ } else {
280
+ var height = this.computedVideoWindowHeight();
281
+ return {
282
+ width: _type.DefaultVideoWindowWidth,
283
+ height: height
284
+ };
285
+ }
286
+ }
251
287
  }, {
252
288
  key: "setVideoOrientation",
253
289
  value: function setVideoOrientation() {
@@ -263,7 +299,6 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
263
299
  onStreamVolumeIndicationUpdated: this._onAudioVolumeUpdated
264
300
  });
265
301
  this._dialogProvider.removeObserver(this._dialogObserver);
266
- this._sharedVideoWindowDataSource.removeObserver(this._sharedVideoWindowDataSourceObserver);
267
302
  }
268
303
  }, {
269
304
  key: "removePin",
@@ -348,9 +383,11 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
348
383
  return;
349
384
  }
350
385
  this.videoWindowPreviewType = type;
351
- this._updateWindowProperties({
352
- updateResizable: true
353
- });
386
+ var videoWindow = this._windowProvider.getWindowById(_constant.FcrUIDialogKey.VIDEO_WINDOW);
387
+ var resizable = type === _type.FcrVideoWindowPreviewType.SMALL;
388
+ videoWindow.setResizable(resizable);
389
+ videoWindow.setAspectRatio(resizable ? _type.VideoWindowRadio : 0);
390
+ videoWindow.setMinimumSize(_type.DefaultVideoWindowWidth, resizable ? _type.DefaultVideoWindowSmallTypeHeight : _type.DefaultVideoWindowHeight);
354
391
  }
355
392
  }, {
356
393
  key: "setWrapperHover",
@@ -363,22 +400,79 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
363
400
  return this._privilegeProvider.getAllowedOperations(targetRole, isSelf);
364
401
  }
365
402
  }, {
366
- key: "_updateWindowProperties",
367
- value: function _updateWindowProperties() {
368
- var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
369
- updateResizable: false
370
- },
371
- _ref3$updateResizable = _ref3.updateResizable,
372
- updateResizable = _ref3$updateResizable === void 0 ? false : _ref3$updateResizable;
373
- var height = this.computedVideoWindowHeight();
403
+ key: "handleVideowWindowResize",
404
+ value: function handleVideowWindowResize(size) {
405
+ if (this._isWindowApiResize) {
406
+ this._isWindowApiResize = false;
407
+ return;
408
+ }
409
+ if (this.videoWindowPreviewType === _type.FcrVideoWindowPreviewType.SMALL) {
410
+ this._videoWindowSmallTypeStyleSize = size;
411
+ }
412
+ }
413
+ /**
414
+ * @description 如果传入的宽度超过了允许的最大宽度, 则使用允许的最大宽度设置窗口宽度,以避免窗口超出显示器的边缘。
415
+ * @param width 期望设置的视频窗宽度
416
+ * @param height 视频窗高度
417
+ * @returns 实际设置的视频窗尺寸
418
+ */
419
+ }, {
420
+ key: "setVideoWindowSize",
421
+ value: function setVideoWindowSize(width, height) {
374
422
  var videoWindow = this._windowProvider.getWindowById(_constant.FcrUIDialogKey.VIDEO_WINDOW);
375
- if (updateResizable) {
376
- var resizable = this.videoWindowPreviewType === _type.FcrVideoWindowPreviewType.SMALL;
377
- videoWindow.setResizable(resizable);
378
- videoWindow.setAspectRatio(resizable ? _type.VideoWindowRadio : 0);
379
- videoWindow.setMinimumSize(_type.DefaultVideoWindowWidth, resizable ? _type.DefaultVideoWindowSmallTypeHeight : _type.DefaultVideoWindowHeight);
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,
434
+ height: height
435
+ };
436
+ }
437
+ }, {
438
+ key: "resetVideoWindowSize",
439
+ value: function resetVideoWindowSize() {
440
+ var size = this.videoWindowStyleSize;
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);
380
470
  }
381
- (0, _videoWindow.setVideoWindowDialogSize)(videoWindow, height);
471
+ this._isWindowApiResize = true;
472
+ (0, _videoWindow.setVideoWindowDialogSize)(videoWindow, {
473
+ width: width,
474
+ height: height
475
+ });
382
476
  }
383
477
  }, {
384
478
  key: "_onAudioVolumeUpdated",
@@ -386,33 +480,32 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
386
480
  this.userVolumeMap.set(streamId, Math.floor(volume / 255 * 100));
387
481
  }
388
482
  }, {
389
- key: "_handleFoldListUpdated",
390
- value: function _handleFoldListUpdated() {
391
- // 没有远端可以看了,如果当前在list模式,切换到small模式
392
- if (!this.shouldHaveListView && this.videoWindowPreviewType === _type.FcrVideoWindowPreviewType.LIST) {
393
- this.setVideoWindowPreviewType(_type.FcrVideoWindowPreviewType.SMALL);
394
- } else {
395
- this._updateWindowProperties();
396
- }
483
+ key: "_handleDialogOpen",
484
+ value: function _handleDialogOpen(dialogKey) {
485
+ if (dialogKey !== _constant.FcrUIDialogKey.VIDEO_WINDOW) return;
486
+ this._windowOpened = true;
397
487
  }
398
488
  }, {
399
- key: "_handleDialogSwitch",
400
- value: function _handleDialogSwitch(dialogKey, open) {
489
+ key: "_handleDialogClose",
490
+ value: function _handleDialogClose(dialogKey) {
491
+ var _this4 = this;
401
492
  if (dialogKey !== _constant.FcrUIDialogKey.VIDEO_WINDOW) return;
402
- if (open) {
403
- this._sharedVideoWindowDataSource.addObserver(this._sharedVideoWindowDataSourceObserver);
404
- this._updateWindowProperties();
405
- } else {
406
- this._sharedVideoWindowDataSource.removeObserver(this._sharedVideoWindowDataSourceObserver);
407
- this.setVideoWindowPreviewType(_type.FcrVideoWindowPreviewType.SMALL);
408
- }
493
+ this._windowOpened = false;
494
+ (0, _mobx.runInAction)(function () {
495
+ _this4._videoWindowSmallTypeStyleSize = {
496
+ width: _type.DefaultVideoWindowWidth,
497
+ height: _type.DefaultVideoWindowSmallTypeHeight
498
+ };
499
+ _this4.setVideoWindowPreviewType(_type.FcrVideoWindowPreviewType.SMALL);
500
+ });
409
501
  }
410
502
  }]);
411
503
  }();
412
504
  _VideoWindowStore = VideoWindowStore;
413
- var _applyDecs$e = (0, _slicedToArray2["default"])(_applyDecs(_VideoWindowStore, [[_mobx.observable, 1, "userVolumeMap"], [_mobx.observable, 1, "wrapperHovering"], [_mobx.observable, 1, "videoWindowPreviewType"], [_mobx.computed, 3, "foldListRenderData"], [_mobx.computed, 3, "spotlightStreamId"], [_mobx.computed, 3, "findSpotlightUser"], [_mobx.computed, 3, "hasPinnedStream"], [_mobx.computed, 3, "shouldHaveListView"], [_decorator.bound, 2, "setVideoOrientation"], [_decorator.bound, 2, "removePin"], [_decorator.bound, 2, "addPin"], [_decorator.bound, 2, "sendParticipantEvent"], [_decorator.bound, 2, "muteAudio"], [_decorator.bound, 2, "computedVideoWindowHeight"], [_decorator.bound, 2, "openPrivateChat"], [_decorator.bound, 2, "openRenameDialog"], [_decorator.bound, 2, "hasMutePermission"], [_decorator.bound, 2, "hasUnmutePermission"], [_decorator.bound, 2, "hasRequestStartAudioPermission"], [_setVideoWindowPreviewTypeDecs, 18, "setVideoWindowPreviewType"], [_setWrapperHoverDecs, 18, "setWrapperHover"], [_getAllowedOperationsDecs, 18, "getAllowedOperations"], [_decorator.bound, 2, "_updateWindowProperties"], [_onAudioVolumeUpdatedDecs, 18, "_onAudioVolumeUpdated"], [_decorator.bound, 2, "_handleFoldListUpdated"]], []).e, 4);
414
- _init_userVolumeMap = _applyDecs$e[0];
415
- _init_wrapperHovering = _applyDecs$e[1];
416
- _init_videoWindowPreviewType = _applyDecs$e[2];
417
- _initProto = _applyDecs$e[3];
505
+ var _applyDecs$e = (0, _slicedToArray2["default"])(_applyDecs(_VideoWindowStore, [[_mobx.observable, 1, "_videoWindowSmallTypeStyleSize"], [_mobx.observable, 1, "userVolumeMap"], [_mobx.observable, 1, "wrapperHovering"], [_mobx.observable, 1, "videoWindowPreviewType"], [_mobx.computed, 3, "foldListRenderData"], [_mobx.computed, 3, "spotlightStreamId"], [_mobx.computed, 3, "findSpotlightUser"], [_mobx.computed, 3, "hasPinnedStream"], [_mobx.computed, 3, "videoWindowStyleSize"], [_decorator.bound, 2, "setVideoOrientation"], [_decorator.bound, 2, "removePin"], [_decorator.bound, 2, "addPin"], [_decorator.bound, 2, "sendParticipantEvent"], [_decorator.bound, 2, "muteAudio"], [_decorator.bound, 2, "computedVideoWindowHeight"], [_decorator.bound, 2, "openPrivateChat"], [_decorator.bound, 2, "openRenameDialog"], [_decorator.bound, 2, "hasMutePermission"], [_decorator.bound, 2, "hasUnmutePermission"], [_decorator.bound, 2, "hasRequestStartAudioPermission"], [_setVideoWindowPreviewTypeDecs, 18, "setVideoWindowPreviewType"], [_setWrapperHoverDecs, 18, "setWrapperHover"], [_getAllowedOperationsDecs, 18, "getAllowedOperations"], [_handleVideowWindowResizeDecs, 18, "handleVideowWindowResize"], [_decorator.bound, 2, "setVideoWindowSize"], [_decorator.bound, 2, "resetVideoWindowSize"], [_onAudioVolumeUpdatedDecs, 18, "_onAudioVolumeUpdated"], [_decorator.bound, 2, "_handleDialogOpen"], [_decorator.bound, 2, "_handleDialogClose"]], []).e, 5);
506
+ _init__videoWindowSmallTypeStyleSize = _applyDecs$e[0];
507
+ _init_userVolumeMap = _applyDecs$e[1];
508
+ _init_wrapperHovering = _applyDecs$e[2];
509
+ _init_videoWindowPreviewType = _applyDecs$e[3];
510
+ _initProto = _applyDecs$e[4];
418
511
  var StoreContext = exports.StoreContext = /*#__PURE__*/(0, _react.createContext)(null);
@@ -1,12 +1,26 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.symbol.js");
4
+ require("core-js/modules/es.array.filter.js");
5
+ require("core-js/modules/es.array.for-each.js");
6
+ require("core-js/modules/es.array.push.js");
7
+ require("core-js/modules/es.object.define-properties.js");
3
8
  require("core-js/modules/es.object.define-property.js");
9
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
10
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
11
+ require("core-js/modules/es.object.keys.js");
12
+ require("core-js/modules/es.object.to-string.js");
13
+ require("core-js/modules/esnext.iterator.constructor.js");
14
+ require("core-js/modules/esnext.iterator.filter.js");
15
+ require("core-js/modules/esnext.iterator.for-each.js");
16
+ require("core-js/modules/web.dom-collections.for-each.js");
4
17
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
18
  Object.defineProperty(exports, "__esModule", {
6
19
  value: true
7
20
  });
8
21
  exports.View = void 0;
9
22
  require("core-js/modules/web.timers.js");
23
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
24
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
25
  var _mobxReact = require("mobx-react");
12
26
  var _react = require("react");
@@ -15,8 +29,11 @@ var _store = require("./store");
15
29
  var _topControl = _interopRequireDefault(require("./components/topControl"));
16
30
  var _speaking = _interopRequireDefault(require("./components/speaking"));
17
31
  require("./index.css");
32
+ var _popoverWatcher = require("./popover-watcher");
18
33
  var _videoTrackRenderContext = require("../../shared-context/video-track-render-context");
19
34
  var _jsxRuntime = require("react/jsx-runtime");
35
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
36
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
37
  var View = exports.View = (0, _mobxReact.observer)(function () {
21
38
  var divRef = (0, _react.useRef)(null);
22
39
  var _useState = (0, _react.useState)(false),
@@ -25,7 +42,11 @@ var View = exports.View = (0, _mobxReact.observer)(function () {
25
42
  setIsHover = _useState2[1];
26
43
  var _useContext = (0, _react.useContext)(_store.StoreContext),
27
44
  setWrapperHover = _useContext.setWrapperHover,
28
- videoRenderContext = _useContext.videoRenderContext;
45
+ videoRenderContext = _useContext.videoRenderContext,
46
+ setVideoWindowSize = _useContext.setVideoWindowSize,
47
+ resetVideoWindowSize = _useContext.resetVideoWindowSize,
48
+ videoWindowStyleSize = _useContext.videoWindowStyleSize,
49
+ handleVideowWindowResize = _useContext.handleVideowWindowResize;
29
50
  (0, _react.useEffect)(function () {
30
51
  if (!isHover) {
31
52
  var timer = setTimeout(function () {
@@ -38,8 +59,36 @@ var View = exports.View = (0, _mobxReact.observer)(function () {
38
59
  setWrapperHover(true);
39
60
  }
40
61
  }, [isHover]);
62
+ (0, _react.useEffect)(function () {
63
+ if (divRef.current === null) return;
64
+ var ownerDocument = divRef.current.ownerDocument;
65
+ var defaultView = ownerDocument.defaultView;
66
+ var body = ownerDocument.body;
67
+ var onResize = function onResize() {
68
+ handleVideowWindowResize({
69
+ width: body.offsetWidth,
70
+ height: body.offsetHeight
71
+ });
72
+ };
73
+ if (defaultView) {
74
+ defaultView.addEventListener('resize', onResize);
75
+ } else {
76
+ console.error('dialogWrapper.ownerDocument.defaultView is null');
77
+ }
78
+ return function () {
79
+ if (defaultView) {
80
+ defaultView.removeEventListener('resize', onResize);
81
+ }
82
+ };
83
+ }, [divRef.current]);
84
+ (0, _popoverWatcher.usePopoverWatcher)({
85
+ rootDom: divRef.current,
86
+ setVideoWindowSize: setVideoWindowSize,
87
+ resetVideoWindowSize: resetVideoWindowSize
88
+ });
41
89
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
42
90
  ref: divRef,
91
+ style: _objectSpread({}, videoWindowStyleSize),
43
92
  onMouseEnter: function onMouseEnter() {
44
93
  setIsHover(true);
45
94
  },
@@ -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
+ });
@@ -6,5 +6,5 @@ export declare class FcrWhiteboardUIModule extends UIModule {
6
6
  get store(): WhitebaordStoreBase;
7
7
  onNodeWillActive(): void;
8
8
  onNodeWillInactive(): void;
9
- getComponent(dom?: Element | null): React.ReactNode;
9
+ getComponent(): React.ReactNode;
10
10
  }
@@ -65,7 +65,7 @@ var FcrWhiteboardUIModule = exports.FcrWhiteboardUIModule = /*#__PURE__*/functio
65
65
  }
66
66
  }, {
67
67
  key: "getComponent",
68
- value: function getComponent(dom) {
68
+ value: function getComponent() {
69
69
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_store.WhiteboardStoreContext.Provider, {
70
70
  value: this.store,
71
71
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_view.Whiteboard, {})