fcr-ui-scene 3.7.7 → 3.7.8-rc.2

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 (237) hide show
  1. package/lib/creator/index.js +13 -19
  2. package/lib/creator/provider-initializer.browser.js +2 -2
  3. package/lib/creator/provider-initializer.electron.js +2 -2
  4. package/lib/electron/bootstrap-sdk.js +89 -35
  5. package/lib/electron/hang-detection/index.d.ts +3 -0
  6. package/lib/electron/hang-detection/index.js +15 -0
  7. package/lib/electron/hang-detection/manager.d.ts +28 -0
  8. package/lib/electron/hang-detection/manager.js +231 -0
  9. package/lib/electron/hang-detection/types.d.ts +14 -0
  10. package/lib/electron/sdk-helper.js +6 -2
  11. package/lib/electron/until.d.ts +1 -4
  12. package/lib/electron/until.js +12 -4
  13. package/lib/index.js +8 -1
  14. package/lib/modules/action-bar/components/screen-share/index.electron.js +1 -1
  15. package/lib/modules/components/control-bar/components/switch-theme/index.js +4 -2
  16. package/lib/modules/components/control-bar/index.js +1 -3
  17. package/lib/modules/components/leave-meeting/store.base.d.ts +1 -0
  18. package/lib/modules/components/leave-meeting/store.base.js +46 -5
  19. package/lib/modules/dialog/dialogs/confirm-leave-meeting/index.d.ts +1 -0
  20. package/lib/modules/dialog/dialogs/confirm-leave-meeting/index.js +2 -1
  21. package/lib/modules/dialog/dialogs/share-screen-selection/index.js +0 -12
  22. package/lib/modules/participant/store.base.js +0 -1
  23. package/lib/modules/share-screen/store.base.js +0 -2
  24. package/lib/modules/share-screen/store.electron.js +54 -22
  25. package/lib/modules/state-bar/store.base.electron.js +6 -2
  26. package/lib/modules/video-window/popover-watcher.js +4 -1
  27. package/lib/modules/video-window/store.js +7 -1
  28. package/lib/modules/video-window/view.js +14 -4
  29. package/lib/providers/board-share/bar-control/base.d.ts +2 -0
  30. package/lib/providers/board-share/bar-control/base.js +13 -3
  31. package/lib/providers/board-share/bar-control/electron.d.ts +1 -0
  32. package/lib/providers/board-share/bar-control/electron.js +15 -4
  33. package/lib/providers/board-share/provider.base.d.ts +1 -0
  34. package/lib/providers/board-share/provider.base.js +3 -1
  35. package/lib/providers/board-share/provider.electron.d.ts +1 -0
  36. package/lib/providers/board-share/provider.electron.js +8 -2
  37. package/lib/providers/board-share/type.d.ts +2 -0
  38. package/lib/providers/dialog/provider.electron.js +10 -2
  39. package/lib/providers/screen-share/strategy/browser.js +51 -4
  40. package/lib/providers/screen-share/strategy/electron.js +77 -8
  41. package/lib/providers/screen-share/stream-state-sync.d.ts +3 -1
  42. package/lib/providers/screen-share/stream-state-sync.js +133 -40
  43. package/lib/providers/window/main-window.js +0 -3
  44. package/lib/providers/window/renderer-window.d.ts +3 -0
  45. package/lib/providers/window/renderer-window.js +47 -4
  46. package/lib/providers/window/type.d.ts +1 -0
  47. package/lib/scenes/main-scene.d.ts +1 -0
  48. package/lib/scenes/main-scene.js +32 -1
  49. package/lib/utilities/logger.js +1 -1
  50. package/package.json +5 -5
  51. package/public/index.html +2 -149
  52. package/public/meeting-manager.js +391 -0
  53. package/installer/icons/favicon.ico +0 -0
  54. package/installer/icons/favicon.png +0 -0
  55. package/installer/icons/icon.png +0 -0
  56. package/installer/mac/entitlements.mac.plist +0 -16
  57. package/lib/creator.d.ts +0 -36
  58. package/lib/creator.js +0 -465
  59. package/lib/modules/action-bar/index.d.ts +0 -58
  60. package/lib/modules/action-bar/index.dev.d.ts +0 -0
  61. package/lib/modules/action-bar/index.dev.js +0 -94
  62. package/lib/modules/action-bar/index.js +0 -109
  63. package/lib/modules/action-bar/store.d.ts +0 -259
  64. package/lib/modules/action-bar/store.js +0 -1529
  65. package/lib/modules/action-bar/types.d.ts +0 -90
  66. package/lib/modules/action-bar/view.d.ts +0 -5
  67. package/lib/modules/action-bar/view.js +0 -112
  68. package/lib/modules/annotation/annotation-index.d.ts +0 -2
  69. package/lib/modules/annotation/annotation-index.js +0 -80
  70. package/lib/modules/annotation/annotation-toolbar-store.d.ts +0 -75
  71. package/lib/modules/annotation/annotation-toolbar-store.js +0 -459
  72. package/lib/modules/annotation/board-cursor.css +0 -77
  73. package/lib/modules/annotation/components/color-picker/components/color.d.ts +0 -5
  74. package/lib/modules/annotation/components/color-picker/components/color.js +0 -38
  75. package/lib/modules/annotation/components/color-picker/components/panel.d.ts +0 -1
  76. package/lib/modules/annotation/components/color-picker/components/panel.js +0 -109
  77. package/lib/modules/annotation/components/color-picker/components/picker.d.ts +0 -1
  78. package/lib/modules/annotation/components/color-picker/components/picker.js +0 -75
  79. package/lib/modules/annotation/components/color-picker/index.d.ts +0 -2
  80. package/lib/modules/annotation/components/color-picker/index.js +0 -47
  81. package/lib/modules/annotation/components/eraser-picker.d.ts +0 -4
  82. package/lib/modules/annotation/components/eraser-picker.js +0 -144
  83. package/lib/modules/annotation/components/expansion/index.d.ts +0 -1
  84. package/lib/modules/annotation/components/expansion/index.js +0 -100
  85. package/lib/modules/annotation/components/extra-tool-picker.d.ts +0 -1
  86. package/lib/modules/annotation/components/extra-tool-picker.js +0 -62
  87. package/lib/modules/annotation/components/history.d.ts +0 -2
  88. package/lib/modules/annotation/components/history.js +0 -78
  89. package/lib/modules/annotation/components/icons/fold-icon.d.ts +0 -2
  90. package/lib/modules/annotation/components/icons/fold-icon.js +0 -41
  91. package/lib/modules/annotation/components/icons/move-icon.d.ts +0 -1
  92. package/lib/modules/annotation/components/icons/move-icon.js +0 -66
  93. package/lib/modules/annotation/components/item/index.d.ts +0 -1
  94. package/lib/modules/annotation/components/item/index.js +0 -43
  95. package/lib/modules/annotation/components/move-handle.d.ts +0 -5
  96. package/lib/modules/annotation/components/move-handle.js +0 -134
  97. package/lib/modules/annotation/components/pen-picker.d.ts +0 -4
  98. package/lib/modules/annotation/components/pen-picker.js +0 -155
  99. package/lib/modules/annotation/components/screen-capture-picker.d.ts +0 -4
  100. package/lib/modules/annotation/components/screen-capture-picker.js +0 -85
  101. package/lib/modules/annotation/components/shape-picker.d.ts +0 -4
  102. package/lib/modules/annotation/components/shape-picker.js +0 -210
  103. package/lib/modules/annotation/hooks/index.d.ts +0 -14
  104. package/lib/modules/annotation/hooks/index.js +0 -292
  105. package/lib/modules/annotation/index.d.ts +0 -45
  106. package/lib/modules/annotation/index.js +0 -168
  107. package/lib/modules/annotation/store.d.ts +0 -98
  108. package/lib/modules/annotation/store.js +0 -620
  109. package/lib/modules/annotation/style.css +0 -36
  110. package/lib/modules/annotation/view.d.ts +0 -3
  111. package/lib/modules/annotation/view.js +0 -44
  112. package/lib/modules/components/device-control/store.d.ts +0 -42
  113. package/lib/modules/components/device-control/store.js +0 -241
  114. package/lib/modules/components/leave-meeting/store.d.ts +0 -39
  115. package/lib/modules/components/leave-meeting/store.js +0 -270
  116. package/lib/modules/control-bar/components/annotation-button/index.d.ts +0 -1
  117. package/lib/modules/control-bar/components/annotation-button/index.js +0 -72
  118. package/lib/modules/control-bar/reactor.d.ts +0 -2
  119. package/lib/modules/control-bar/reactor.js +0 -8
  120. package/lib/modules/control-bar/types.d.ts +0 -20
  121. package/lib/modules/control-bar/types.js +0 -6
  122. package/lib/modules/dialog/dialogs/pre-setting/index.css +0 -26
  123. package/lib/modules/dialog/dialogs/pre-setting/index.d.ts +0 -6
  124. package/lib/modules/dialog/dialogs/pre-setting/index.js +0 -62
  125. package/lib/modules/dialog/dialogs/widget/electron.d.ts +0 -6
  126. package/lib/modules/dialog/dialogs/widget/electron.js +0 -38
  127. package/lib/modules/dialog/hooks/use-popover-watcher.d.ts +0 -14
  128. package/lib/modules/dialog/hooks/use-popover-watcher.js +0 -110
  129. package/lib/modules/dialog/hooks/useElectron.d.ts +0 -28
  130. package/lib/modules/dialog/hooks/useElectron.js +0 -277
  131. package/lib/modules/dialog/store.d.ts +0 -135
  132. package/lib/modules/dialog/store.js +0 -616
  133. package/lib/modules/event-confirm/components/window/index.d.ts +0 -7
  134. package/lib/modules/event-confirm/components/window/index.js +0 -221
  135. package/lib/modules/event-confirm/index.css +0 -24
  136. package/lib/modules/event-confirm/index.d.ts +0 -27
  137. package/lib/modules/event-confirm/index.js +0 -76
  138. package/lib/modules/event-confirm/store.d.ts +0 -50
  139. package/lib/modules/event-confirm/store.js +0 -394
  140. package/lib/modules/event-confirm/view.d.ts +0 -2
  141. package/lib/modules/event-confirm/view.js +0 -55
  142. package/lib/modules/event-toast/store.d.ts +0 -27
  143. package/lib/modules/event-toast/store.js +0 -205
  144. package/lib/modules/layout/store.d.ts +0 -176
  145. package/lib/modules/layout/store.js +0 -1452
  146. package/lib/modules/participant/store.d.ts +0 -222
  147. package/lib/modules/participant/store.js +0 -1929
  148. package/lib/modules/pc-audio-connect/index.d.ts +0 -22
  149. package/lib/modules/pc-audio-connect/index.js +0 -67
  150. package/lib/modules/pc-audio-connect/store.d.ts +0 -46
  151. package/lib/modules/pc-audio-connect/store.js +0 -304
  152. package/lib/modules/setting/common/advance-link.d.ts +0 -3
  153. package/lib/modules/setting/common/advance-link.js +0 -27
  154. package/lib/modules/setting/common/index.css +0 -26
  155. package/lib/modules/setting/common/useNamespace.d.ts +0 -15
  156. package/lib/modules/setting/common/useNamespace.js +0 -66
  157. package/lib/modules/setting/dialog-wrapper.d.ts +0 -2
  158. package/lib/modules/setting/dialog-wrapper.js +0 -110
  159. package/lib/modules/setting/store.d.ts +0 -261
  160. package/lib/modules/setting/store.js +0 -1321
  161. package/lib/modules/share-screen/store.d.ts +0 -148
  162. package/lib/modules/share-screen/store.js +0 -960
  163. package/lib/modules/share-screen/types.d.ts +0 -26
  164. package/lib/modules/share-screen/types.js +0 -6
  165. package/lib/modules/state-bar/store.d.ts +0 -124
  166. package/lib/modules/state-bar/store.js +0 -664
  167. package/lib/modules/whiteboard/components/progress/electron.d.ts +0 -1
  168. package/lib/modules/whiteboard/components/progress/electron.js +0 -33
  169. package/lib/modules/widget/store.d.ts +0 -14
  170. package/lib/modules/widget/store.js +0 -28
  171. package/lib/providers/annotation-provider.d.ts +0 -124
  172. package/lib/providers/annotation-provider.js +0 -369
  173. package/lib/providers/dialog-provider.d.ts +0 -137
  174. package/lib/providers/dialog-provider.js +0 -194
  175. package/lib/providers/message-provider.d.ts +0 -69
  176. package/lib/providers/message-provider.js +0 -140
  177. package/lib/providers/room-provider.d.ts +0 -194
  178. package/lib/providers/room-provider.js +0 -916
  179. package/lib/providers/screen-share-provider.d.ts +0 -245
  180. package/lib/providers/screen-share-provider.js +0 -850
  181. package/lib/providers/sharing-provider.d.ts +0 -42
  182. package/lib/providers/sharing-provider.js +0 -228
  183. package/lib/providers/user-setting-storage-provider.d.ts +0 -21
  184. package/lib/providers/user-setting-storage-provider.js +0 -65
  185. package/lib/providers/whiteboard-provider.d.ts +0 -24
  186. package/lib/providers/whiteboard-provider.js +0 -128
  187. package/lib/shared-data-source/annotation-data.d.ts +0 -17
  188. package/lib/shared-data-source/annotation-data.js +0 -110
  189. package/lib/shared-data-source/app-list-data.d.ts +0 -34
  190. package/lib/shared-data-source/app-list-data.js +0 -133
  191. package/lib/shared-data-source/chat-data.d.ts +0 -25
  192. package/lib/shared-data-source/chat-data.js +0 -139
  193. package/lib/shared-data-source/config.d.ts +0 -35
  194. package/lib/shared-data-source/config.js +0 -40
  195. package/lib/shared-data-source/confirm-data.d.ts +0 -44
  196. package/lib/shared-data-source/confirm-data.js +0 -201
  197. package/lib/shared-data-source/device-privilege-data.d.ts +0 -8
  198. package/lib/shared-data-source/device-privilege-data.js +0 -25
  199. package/lib/shared-data-source/interpreter.d.ts +0 -77
  200. package/lib/shared-data-source/interpreter.js +0 -247
  201. package/lib/shared-data-source/layout-data.d.ts +0 -31
  202. package/lib/shared-data-source/layout-data.js +0 -189
  203. package/lib/shared-data-source/meeting-time.d.ts +0 -90
  204. package/lib/shared-data-source/meeting-time.js +0 -416
  205. package/lib/shared-data-source/member-data.d.ts +0 -139
  206. package/lib/shared-data-source/member-data.js +0 -517
  207. package/lib/shared-data-source/pin-data.d.ts +0 -13
  208. package/lib/shared-data-source/pin-data.js +0 -111
  209. package/lib/shared-data-source/screen-share-data.d.ts +0 -357
  210. package/lib/shared-data-source/screen-share-data.js +0 -513
  211. package/lib/shared-data-source/security-data.d.ts +0 -39
  212. package/lib/shared-data-source/security-data.js +0 -156
  213. package/lib/shared-data-source/setting.d.ts +0 -67
  214. package/lib/shared-data-source/setting.js +0 -220
  215. package/lib/shared-data-source/speaker-spotlight.d.ts +0 -5
  216. package/lib/shared-data-source/speaker-spotlight.js +0 -15
  217. package/lib/shared-data-source/video-window.d.ts +0 -165
  218. package/lib/shared-data-source/video-window.js +0 -1266
  219. package/lib/shared-data-source/waiting-room.d.ts +0 -46
  220. package/lib/shared-data-source/waiting-room.js +0 -222
  221. package/lib/shared-data-source/whiteboard-data.d.ts +0 -70
  222. package/lib/shared-data-source/whiteboard-data.js +0 -348
  223. package/lib/utilities/board-context.d.ts +0 -4
  224. package/lib/utilities/board-context.js +0 -12
  225. package/lib/utilities/copyText.d.ts +0 -2
  226. package/lib/utilities/copyText.js +0 -48
  227. package/lib/utilities/renderer-event.d.ts +0 -10
  228. package/lib/utilities/renderer-event.js +0 -95
  229. package/lib/utilities/screen-capture-permission.d.ts +0 -2
  230. package/lib/utilities/screen-capture-permission.js +0 -24
  231. package/lib/utilities/screen.d.ts +0 -3
  232. package/lib/utilities/screen.js +0 -53
  233. package/lib/utilities/video-track-render-context.d.ts +0 -6
  234. package/lib/utilities/video-track-render-context.js +0 -9
  235. package/lib/waiting-room-control-manager.d.ts +0 -28
  236. package/lib/waiting-room-control-manager.js +0 -230
  237. /package/lib/{modules/action-bar → electron/hang-detection}/types.js +0 -0
@@ -1,850 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.symbol.js");
4
- require("core-js/modules/es.symbol.description.js");
5
- require("core-js/modules/es.symbol.to-primitive.js");
6
- require("core-js/modules/es.array.is-array.js");
7
- require("core-js/modules/es.array.iterator.js");
8
- require("core-js/modules/es.date.to-primitive.js");
9
- require("core-js/modules/es.function.name.js");
10
- require("core-js/modules/es.map.js");
11
- require("core-js/modules/es.number.constructor.js");
12
- require("core-js/modules/es.object.create.js");
13
- require("core-js/modules/es.object.define-property.js");
14
- require("core-js/modules/es.object.get-own-property-descriptor.js");
15
- require("core-js/modules/es.string.iterator.js");
16
- require("core-js/modules/esnext.function.metadata.js");
17
- require("core-js/modules/esnext.map.delete-all.js");
18
- require("core-js/modules/esnext.map.emplace.js");
19
- require("core-js/modules/esnext.map.every.js");
20
- require("core-js/modules/esnext.map.filter.js");
21
- require("core-js/modules/esnext.map.find.js");
22
- require("core-js/modules/esnext.map.find-key.js");
23
- require("core-js/modules/esnext.map.includes.js");
24
- require("core-js/modules/esnext.map.key-of.js");
25
- require("core-js/modules/esnext.map.map-keys.js");
26
- require("core-js/modules/esnext.map.map-values.js");
27
- require("core-js/modules/esnext.map.merge.js");
28
- require("core-js/modules/esnext.map.reduce.js");
29
- require("core-js/modules/esnext.map.some.js");
30
- require("core-js/modules/esnext.map.update.js");
31
- require("core-js/modules/esnext.symbol.metadata.js");
32
- require("core-js/modules/web.dom-collections.iterator.js");
33
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
34
- var _typeof = require("@babel/runtime/helpers/typeof");
35
- Object.defineProperty(exports, "__esModule", {
36
- value: true
37
- });
38
- exports.FcrUIScreenShareProviderImpl = void 0;
39
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
40
- require("core-js/modules/es.error.cause.js");
41
- require("core-js/modules/es.error.to-string.js");
42
- require("core-js/modules/es.array.concat.js");
43
- require("core-js/modules/es.array.find.js");
44
- require("core-js/modules/es.array.for-each.js");
45
- require("core-js/modules/es.array.includes.js");
46
- require("core-js/modules/es.array.push.js");
47
- require("core-js/modules/es.array.some.js");
48
- require("core-js/modules/es.date.to-json.js");
49
- require("core-js/modules/es.function.bind.js");
50
- require("core-js/modules/es.json.stringify.js");
51
- require("core-js/modules/es.object.to-string.js");
52
- require("core-js/modules/es.promise.js");
53
- require("core-js/modules/es.string.includes.js");
54
- require("core-js/modules/esnext.iterator.constructor.js");
55
- require("core-js/modules/esnext.iterator.find.js");
56
- require("core-js/modules/esnext.iterator.for-each.js");
57
- require("core-js/modules/esnext.iterator.some.js");
58
- require("core-js/modules/web.dom-collections.for-each.js");
59
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
60
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
61
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
62
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
63
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
64
- var _observable = require("agora-foundation/lib/utilities/observable");
65
- var _fcrCore = require("fcr-core");
66
- var _base = require("../base");
67
- var _mobx = require("mobx");
68
- var _env = require("agora-foundation/lib/utilities/env");
69
- var _logger = require("../utilities/logger");
70
- var _imports = require("fcr-core/lib/imports");
71
- var _decorator = require("agora-foundation/lib/decorator");
72
- var _types = require("fcr-core/lib/room-control/whiteboard-control/types");
73
- var _rendererEvent = require("../utilities/renderer-event");
74
- var _tools = require("../utilities/tools");
75
- var _type = require("fcr-core/lib/type");
76
- var _i18n = require("agora-ui-foundation/lib/i18n");
77
- var _constant = require("../utilities/constant");
78
- var _lodash = require("lodash");
79
- var _config = require("../modules/setting/config");
80
- var _FcrUIScreenShareProviderImpl;
81
- var _initProto, _zoomOutDecs, _zoomInDecs, _fullContainerDecs, _setOriginScalcDecs, _handleScreenCaptureStateUpdatedDecs, _replaceScreenShareDecs, _handleRemoteVideoStatsUpdatedDecs, _handleStreamUpdateDecs, _syncScreenShareStreamInfosDecs, _releaseDecs, _startShareScreenDecs, _updateShareAudioPrivilegeDecs, _handleShareStopWithAudioDecs, _handleShareStartWithAudioDecs, _ref;
82
- function _applyDecs(e, t, r, n, o, a) { function i(e, t, r) { return function (n, o) { return r && r(n), e[t].call(n, o); }; } function c(e, t) { for (var r = 0; r < e.length; r++) e[r].call(t); return t; } function s(e, t, r, n) { if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined")); return e; } function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) { function m(e) { if (!h(e)) throw new TypeError("Attempted to access private element on non-instance"); } var y, v = t[0], g = t[3], b = !u; if (!b) { r || Array.isArray(v) || (v = [v]); var w = {}, S = [], A = 3 === o ? "get" : 4 === o || d ? "set" : "value"; f ? (p || d ? w = { get: _setFunctionName(function () { return g(this); }, n, "get"), set: function set(e) { t[4](this, e); } } : w[A] = g, p || _setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n)); } for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) { var D = v[j], E = r ? v[j - 1] : void 0, I = {}, O = { kind: ["field", "accessor", "method", "getter", "setter", "class"][o], name: n, metadata: a, addInitializer: function (e, t) { if (e.v) throw Error("attempted to call addInitializer after decoration was finished"); s(t, "An initializer", "be", !0), c.push(t); }.bind(null, I) }; try { if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else { var k, F; O["static"] = l, O["private"] = f, f ? 2 === o ? k = function k(e) { return m(e), w.value; } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function k(e) { return e[n]; }, (o < 2 || 4 === o) && (F = function F(e, t) { e[n] = t; })); var N = O.access = { has: f ? h.bind() : function (e) { return n in e; } }; if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? { get: w.get, set: w.set } : w[A], O), d) { if ("object" == _typeof(P) && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P); } } finally { I.v = !0; } } return (p || d) && u.push(function (e, t) { for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t); return t; }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P; } function u(e, t) { return Object.defineProperty(e, Symbol.metadata || Symbol["for"]("Symbol.metadata"), { configurable: !0, enumerable: !0, value: t }); } if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol["for"]("Symbol.metadata")]; var f = Object.create(null == l ? null : l), p = function (e, t, r, n) { var o, a, i = [], s = function s(t) { return _checkInRHS(t) === e; }, u = new Map(); function l(e) { e && i.push(c.bind(null, e)); } for (var f = 0; f < t.length; f++) { var p = t[f]; if (Array.isArray(p)) { var d = p[1], h = p[2], m = p.length > 3, y = 16 & d, v = !!(8 & d), g = 0 == (d &= 7), b = h + "/" + v; if (!g && !m) { var w = u.get(b); if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h); u.set(b, !(d > 2) || d); } applyDec(v ? e : e.prototype, p, y, m ? "#" + h : _toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r); } } return l(o), l(a), i; }(e, t, o, f); return r.length || u(e, f), { e: p, get c() { var t = []; return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)]; } }; }
83
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
84
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
85
- function _setFunctionName(e, t, n) { "symbol" == _typeof(t) && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: !0, value: n ? n + " " + t : t }); } catch (e) {} return e; }
86
- function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? _typeof(e) : "null")); return e; }
87
- _ref = (_zoomOutDecs = [_mobx.action, _mobx.action.bound], _zoomInDecs = [_mobx.action, _mobx.action.bound], _fullContainerDecs = [_mobx.action, _mobx.action.bound], _setOriginScalcDecs = [_mobx.action, _mobx.action.bound], _handleScreenCaptureStateUpdatedDecs = [_mobx.action, _mobx.action.bound], _replaceScreenShareDecs = [_mobx.action, _mobx.action.bound], _handleRemoteVideoStatsUpdatedDecs = [_mobx.action, _mobx.action.bound], _handleStreamUpdateDecs = [_mobx.action, _mobx.action.bound], _syncScreenShareStreamInfosDecs = [_mobx.action, _mobx.action.bound], _releaseDecs = [_mobx.action, _mobx.action.bound], _startShareScreenDecs = [_mobx.action, _mobx.action.bound], _updateShareAudioPrivilegeDecs = [_mobx.action, _mobx.action.bound], _handleShareStopWithAudioDecs = [_mobx.action, _mobx.action.bound], _handleShareStartWithAudioDecs = [_mobx.action, _mobx.action.bound], "logger");
88
- var FcrUIScreenShareProviderImpl = exports.FcrUIScreenShareProviderImpl = /*#__PURE__*/function () {
89
- function FcrUIScreenShareProviderImpl(_deviceProvider, _eventProvider, _roomProvider, _sharingProvider, _sharedScreenShareSharedDataSource, _sharedMemberDataSource, _privilegeProvider) {
90
- var _this = this;
91
- (0, _classCallCheck2["default"])(this, FcrUIScreenShareProviderImpl);
92
- (0, _defineProperty2["default"])(this, _ref, (_initProto(this), (0, _logger.createLogger)({
93
- prefix: 'FcrUIScreenShareProviderImpl'
94
- })));
95
- (0, _defineProperty2["default"])(this, "shareLock", false);
96
- (0, _defineProperty2["default"])(this, "_previewDom", null);
97
- (0, _defineProperty2["default"])(this, "_prevFullScalc", {
98
- width: document.body.offsetWidth,
99
- height: document.body.offsetHeight,
100
- scalc: 1
101
- });
102
- (0, _defineProperty2["default"])(this, "_observable", new _observable.AgoraObservable());
103
- (0, _defineProperty2["default"])(this, "_streamObserver", {
104
- onStreamsAdded: function onStreamsAdded(_, events) {
105
- return _this._handleStreamUpdate('add', events);
106
- },
107
- onStreamsRemoved: function onStreamsRemoved(_, events) {
108
- return _this._handleStreamUpdate('remove', events);
109
- },
110
- onStreamsUpdated: function onStreamsUpdated(_, events) {
111
- return _this._handleStreamUpdate('update', events);
112
- },
113
- onRemoteVideoStatsUpdated: this._handleRemoteVideoStatsUpdated.bind(this)
114
- });
115
- (0, _defineProperty2["default"])(this, "_screenCaptureObserver", {
116
- onScreenCaptureStateUpdated: (0, _env.isElectron)() ? this._handleScreenCaptureStateUpdated : this._handleWebScreenCaptureStateUpdated
117
- });
118
- (0, _defineProperty2["default"])(this, "_maxScalcValue", 4);
119
- (0, _defineProperty2["default"])(this, "_minScalcValue", 1);
120
- (0, _defineProperty2["default"])(this, "_diffScalcValue", 0.5);
121
- (0, _defineProperty2["default"])(this, "_hasStop", false);
122
- (0, _defineProperty2["default"])(this, "_isReplaceScreen", false);
123
- this._deviceProvider = _deviceProvider;
124
- this._eventProvider = _eventProvider;
125
- this._roomProvider = _roomProvider;
126
- this._sharingProvider = _sharingProvider;
127
- this._sharedScreenShareSharedDataSource = _sharedScreenShareSharedDataSource;
128
- this._sharedMemberDataSource = _sharedMemberDataSource;
129
- this._privilegeProvider = _privilegeProvider;
130
- this._sharingControl = this._currentRoomControl.getSharingControl();
131
- this._streamControl = this._currentRoomControl.getStreamControl();
132
- this._streamControl.addObserver(this._streamObserver);
133
- this._syncScreenShareStreamInfos();
134
- this._addEventListeners();
135
- this._syncShareStreamState();
136
- }
137
- return (0, _createClass2["default"])(FcrUIScreenShareProviderImpl, [{
138
- key: "shareWithAudio",
139
- get: function get() {
140
- return this._sharedScreenShareSharedDataSource.shareWithAudio;
141
- }
142
- }, {
143
- key: "audioSourceId",
144
- get: function get() {
145
- return this._deviceProvider.speakerId;
146
- }
147
- }, {
148
- key: "screenShareScalcValue",
149
- get: function get() {
150
- return this._sharedScreenShareSharedDataSource.screenShareScalcValue;
151
- }
152
- }, {
153
- key: "screenShareVideoRatio",
154
- get: function get() {
155
- return this._sharedScreenShareSharedDataSource.screenShareVideoRatio;
156
- }
157
- }, {
158
- key: "screenShareSpeakerViewSize",
159
- get: function get() {
160
- return this._sharedScreenShareSharedDataSource.screenShareSpeakerViewSize;
161
- }
162
- }, {
163
- key: "screenShareScenarioType",
164
- get: function get() {
165
- return this._sharedScreenShareSharedDataSource.screenShareScenarioType;
166
- }
167
- }, {
168
- key: "_currentRoomControl",
169
- get: function get() {
170
- var currentRoomControl = this._roomProvider.currentRoomControl;
171
- if (!currentRoomControl) {
172
- throw new Error('currentRoomControl is not initialized');
173
- }
174
- return currentRoomControl;
175
- }
176
- }, {
177
- key: "setSharingInReplace",
178
- value: function setSharingInReplace(isInReplace) {
179
- this._sharedScreenShareSharedDataSource.setSharingInReplace(isInReplace);
180
- }
181
- }, {
182
- key: "zoomOut",
183
- value: function zoomOut() {
184
- if (this.screenShareScalcValue < this._maxScalcValue) {
185
- this._sharedScreenShareSharedDataSource.setScreenShareScalcValue(this.screenShareScalcValue + this._diffScalcValue);
186
- }
187
- }
188
- }, {
189
- key: "zoomIn",
190
- value: function zoomIn() {
191
- if (this.screenShareScalcValue > this._minScalcValue) {
192
- this._sharedScreenShareSharedDataSource.setScreenShareScalcValue(this.screenShareScalcValue - this._diffScalcValue);
193
- }
194
- }
195
- }, {
196
- key: "fullContainer",
197
- value: function fullContainer() {
198
- // = 外层容器的宽/(外层容器的高 * 屏幕共享的宽高比)
199
- var _this$screenShareSpea = this.screenShareSpeakerViewSize,
200
- width = _this$screenShareSpea.width,
201
- height = _this$screenShareSpea.height;
202
- var scalc = width / (height * this.screenShareVideoRatio);
203
- this._prevFullScalc = {
204
- width: width,
205
- height: height,
206
- scalc: scalc
207
- };
208
- this._sharedScreenShareSharedDataSource.setScreenShareScalcValue(scalc);
209
- }
210
- }, {
211
- key: "isAspectRatioPreserved",
212
- get: function get() {
213
- var _this$screenShareSpea2 = this.screenShareSpeakerViewSize,
214
- width = _this$screenShareSpea2.width,
215
- height = _this$screenShareSpea2.height;
216
- var _this$_prevFullScalc = this._prevFullScalc,
217
- prevWidth = _this$_prevFullScalc.width,
218
- prevHeight = _this$_prevFullScalc.height,
219
- prevScalc = _this$_prevFullScalc.scalc;
220
- var isAspectRatio = width === prevWidth && height === prevHeight && this.screenShareScalcValue == prevScalc;
221
- return isAspectRatio;
222
- }
223
- }, {
224
- key: "setOriginScalc",
225
- value: function setOriginScalc() {
226
- this._sharedScreenShareSharedDataSource.setScreenShareScalcValue(this._minScalcValue);
227
- }
228
- }, {
229
- key: "currentScreenSharingOwner",
230
- get: function get() {
231
- var allStreams = this._streamControl.getStreamList();
232
- var screenShareStream = allStreams.find(function (stream) {
233
- return stream.videoSourceType === _fcrCore.FcrVideoSourceType.SCREEN && (stream.streamType === _type.FcrStreamType.BOTH || stream.streamType === _type.FcrStreamType.VIDEO);
234
- });
235
- if (screenShareStream) {
236
- return screenShareStream.owner;
237
- } else {
238
- return null;
239
- }
240
- }
241
- }, {
242
- key: "currentScreenSharingOwnerIsMySelf",
243
- get: function get() {
244
- var _this$currentScreenSh;
245
- return ((_this$currentScreenSh = this.currentScreenSharingOwner) === null || _this$currentScreenSh === void 0 ? void 0 : _this$currentScreenSh.userId) === this._sharedMemberDataSource.localUserId;
246
- }
247
- }, {
248
- key: "stop",
249
- value: function stop() {
250
- if (!this._hasStop) {
251
- this._hasStop = true;
252
- this._observable.notifyObservers('onScreenCaptureStopped');
253
- }
254
- }
255
- }, {
256
- key: "bootstrap",
257
- value: function bootstrap() {
258
- this._hasStop = false;
259
- this._observable.notifyObservers('onScreenCaptureStarted');
260
- }
261
- }, {
262
- key: "_handleWebScreenCaptureStateUpdated",
263
- value: function () {
264
- var _handleWebScreenCaptureStateUpdated2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(sourceId, state) {
265
- var streamId, _this$screenTrack;
266
- return _regenerator["default"].wrap(function (_context) {
267
- while (1) switch (_context.prev = _context.next) {
268
- case 0:
269
- this._sharedScreenShareSharedDataSource.setLocalUserScreenSharingState(state);
270
- if (!(state === _fcrCore.FcrMediaSourceState.OPEN)) {
271
- _context.next = 3;
272
- break;
273
- }
274
- if (this._privilegeProvider.hasStartScreenSharePermission()) {
275
- _context.next = 1;
276
- break;
277
- }
278
- this._eventProvider.sendEvent(_constant.FcrUIAction.SHOW_TOAST, {
279
- type: 'error',
280
- message: (0, _i18n.transI18n)('fmt_screenshare_cohost_can_not_share_remind')
281
- });
282
- this.stop();
283
- return _context.abrupt("return");
284
- case 1:
285
- _context.next = 2;
286
- return this.createScreenShareWithSelectionId(this.currentShareId, this.currentSelectionBounds);
287
- case 2:
288
- streamId = _context.sent;
289
- if (streamId) {
290
- this._sharedScreenShareSharedDataSource.setCurrentShareStreamId(streamId);
291
- }
292
- case 3:
293
- if (state === _fcrCore.FcrMediaSourceState.CLOSE) {
294
- (_this$screenTrack = this.screenTrack) === null || _this$screenTrack === void 0 || _this$screenTrack.removeObserver(this._screenCaptureObserver);
295
- this._isReplaceScreen ? this._stopScreenTrack() : this.stop();
296
- this.logger.info("[Annotation][web]: _handleScreenCaptureStateUpdated: CLOSE, set replaceScreen to: ".concat(this._isReplaceScreen));
297
- }
298
- if (state === _fcrCore.FcrMediaSourceState.ERROR) {
299
- this.stop();
300
- this.setShareLock(false);
301
- this._isReplaceScreen = false;
302
- }
303
- case 4:
304
- case "end":
305
- return _context.stop();
306
- }
307
- }, _callee, this);
308
- }));
309
- function _handleWebScreenCaptureStateUpdated(_x, _x2) {
310
- return _handleWebScreenCaptureStateUpdated2.apply(this, arguments);
311
- }
312
- return _handleWebScreenCaptureStateUpdated;
313
- }()
314
- }, {
315
- key: "_handleScreenCaptureStateUpdated",
316
- value: function _handleScreenCaptureStateUpdated(sourceId, state) {
317
- this.logger.info("[handleScreenCaptureStateUpdated]: ".concat(sourceId, " ==== ").concat(state));
318
- if (state === _fcrCore.FcrMediaSourceState.CLOSE) {
319
- var _this$screenTrack2;
320
- this.stopRenderSharePreview(this.screenTrack);
321
- if (!this._isReplaceScreen) {
322
- this.stop();
323
- }
324
- (_this$screenTrack2 = this.screenTrack) === null || _this$screenTrack2 === void 0 || _this$screenTrack2.removeObserver(this._screenCaptureObserver);
325
- this.logger.info("[Annotation][electron]: _handleScreenCaptureStateUpdated: CLOSE, set replaceScreen to: ".concat(this._isReplaceScreen));
326
- }
327
- if (state === _fcrCore.FcrMediaSourceState.ERROR) {
328
- this.stop();
329
- this._sharedScreenShareSharedDataSource.setLocalUserScreenSharingState(_fcrCore.FcrMediaSourceState.CLOSE);
330
- this._isReplaceScreen = false;
331
- return;
332
- }
333
- this._sharedScreenShareSharedDataSource.setLocalUserScreenSharingState(state);
334
- }
335
- }, {
336
- key: "replaceScreenShare",
337
- value: function replaceScreenShare(id, type, withAudio, bounds) {
338
- var _this2 = this;
339
- this.logger.info('screen-share-provider: replaceScreenShare start');
340
- var shareWithAudio = (0, _lodash.isBoolean)(withAudio) ? withAudio : this._sharedScreenShareSharedDataSource.shareWithAudio;
341
- this._sharedScreenShareSharedDataSource.setShareWithAudio(shareWithAudio);
342
- this._isReplaceScreen = true;
343
- this.setSharingInReplace(true);
344
- if (this.screenTrack) {
345
- this.screenTrack.removeObserver(this._screenCaptureObserver);
346
- var _observer = {
347
- onScreenCaptureStateUpdated: function () {
348
- var _onScreenCaptureStateUpdated = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(sourceId, state) {
349
- var _this2$screenTrack, loopbackAudioSourceId, bindConfig;
350
- return _regenerator["default"].wrap(function (_context2) {
351
- while (1) switch (_context2.prev = _context2.next) {
352
- case 0:
353
- if (!(state === _fcrCore.FcrMediaSourceState.CLOSE)) {
354
- _context2.next = 2;
355
- break;
356
- }
357
- _this2._observable.notifyObservers('onScreenShareReplaceBegin', id, type, bounds);
358
- (_this2$screenTrack = _this2.screenTrack) === null || _this2$screenTrack === void 0 || _this2$screenTrack.removeObserver(_observer);
359
- _context2.next = 1;
360
- return _this2.startShareScreen(id, type, withAudio, true);
361
- case 1:
362
- _this2._sharedScreenShareSharedDataSource.setCurrentShareIdInfos(id, type, bounds);
363
- if (_this2.currentShareStreamId) {
364
- loopbackAudioSourceId = _this2._sharedScreenShareSharedDataSource.getLoopbackDeviceId();
365
- bindConfig = {
366
- streamId: _this2.currentShareStreamId,
367
- videoSourceId: id
368
- };
369
- if (loopbackAudioSourceId) {
370
- bindConfig.audioSourceId = loopbackAudioSourceId;
371
- } else {
372
- _this2.logger.warn('cannot get loopbackAudioSourceId before calling bindLocalStreams');
373
- }
374
- _this2._streamControl.bindLocalStreams([bindConfig]);
375
- _this2.toggleScreenshareWithAudio(shareWithAudio);
376
- } else {
377
- _this2.logger.error('currentShareStreamId is not set');
378
- }
379
- case 2:
380
- case "end":
381
- return _context2.stop();
382
- }
383
- }, _callee2);
384
- }));
385
- function onScreenCaptureStateUpdated(_x3, _x4) {
386
- return _onScreenCaptureStateUpdated.apply(this, arguments);
387
- }
388
- return onScreenCaptureStateUpdated;
389
- }()
390
- };
391
- this.screenTrack.addObserver(_observer);
392
- this._stopScreenTrack();
393
- this.stopRenderSharePreview(this.screenTrack);
394
- }
395
- }
396
- }, {
397
- key: "_handleRemoteVideoStatsUpdated",
398
- value: function _handleRemoteVideoStatsUpdated(roomId, streamId, videoStats) {
399
- var stream = this._streamControl.getStreamByStreamId(streamId);
400
- if ((stream === null || stream === void 0 ? void 0 : stream.videoSourceType) === _fcrCore.FcrVideoSourceType.SCREEN) {
401
- var _videoStats$dimension = videoStats.dimensions,
402
- width = _videoStats$dimension.width,
403
- height = _videoStats$dimension.height;
404
- if (width !== 0 && height !== 0) {
405
- var shareScreenVideoRatio = width / height;
406
- var shareScreenVideoSize = videoStats.dimensions;
407
- this._sharedScreenShareSharedDataSource.setScreenShareVideoRatio(shareScreenVideoRatio);
408
- this._sharedScreenShareSharedDataSource.setScreenShareVideoSize(shareScreenVideoSize);
409
- }
410
- }
411
- }
412
- }, {
413
- key: "localUserId",
414
- get: function get() {
415
- return this._sharedMemberDataSource.localUser.userId;
416
- }
417
- }, {
418
- key: "shareAudioTrack",
419
- get: function get() {
420
- return this._sharedScreenShareSharedDataSource.shareWithAudioTrack;
421
- }
422
- }, {
423
- key: "currentShareId",
424
- get: function get() {
425
- return this._sharedScreenShareSharedDataSource.currentShareId;
426
- }
427
- }, {
428
- key: "screenTrack",
429
- get: function get() {
430
- return this._sharedScreenShareSharedDataSource.screenTrack;
431
- }
432
- }, {
433
- key: "currentShareStreamId",
434
- get: function get() {
435
- return this._sharedScreenShareSharedDataSource.currentShareStreamId;
436
- }
437
- }, {
438
- key: "currentSelectionBounds",
439
- get: function get() {
440
- return this._sharedScreenShareSharedDataSource.currentSelectionBounds;
441
- }
442
- }, {
443
- key: "setShareLock",
444
- value: function setShareLock(lock) {
445
- this.shareLock = lock;
446
- }
447
- }, {
448
- key: "createScreenShareWithSelectionId",
449
- value: function () {
450
- var _createScreenShareWithSelectionId = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(videoSourceId, bounds) {
451
- var loopbackAudioSourceId, targetEncoderConfig, shareWithAudio, streamCreateConfig, streamId;
452
- return _regenerator["default"].wrap(function (_context3) {
453
- while (1) switch (_context3.prev = _context3.next) {
454
- case 0:
455
- this.logger.info("screen-share-provider: createScreenShareWithSelectionId: ".concat(videoSourceId, ", annotation-use-bounds-width: ").concat(bounds.width, ", annotation-use-bounds-height: ").concat(bounds.height));
456
- loopbackAudioSourceId = this._sharedScreenShareSharedDataSource.getLoopbackDeviceId();
457
- targetEncoderConfig = this.screenShareScenarioType === _imports.FcrScreenScenarioType.CLEARITY ? _config.clearityEncoderConfig : _config.smoothEncoderConfig;
458
- this._streamControl.setScreenScenario(this.screenShareScenarioType);
459
- shareWithAudio = this._sharedScreenShareSharedDataSource.shareWithAudio;
460
- streamCreateConfig = {
461
- streamType: shareWithAudio ? _type.FcrStreamType.BOTH : _type.FcrStreamType.VIDEO,
462
- videoSourceId: videoSourceId
463
- };
464
- if (loopbackAudioSourceId) {
465
- streamCreateConfig.audioSourceId = loopbackAudioSourceId;
466
- } else {
467
- this.logger.warn('cannot get loopbackAudioSourceId before calling startScreenSharing');
468
- }
469
- _context3.next = 1;
470
- return this._sharingControl.startScreenSharing(streamCreateConfig, bounds);
471
- case 1:
472
- streamId = _context3.sent;
473
- if (shareWithAudio) {
474
- this._updateShareAudioPrivilege(streamId, true);
475
- this._handleShareStartWithAudio();
476
- }
477
- this._streamControl.setVideoEncoderConfig(streamId, targetEncoderConfig, _type.FcrVideoStreamType.HIGH_STREAM);
478
- return _context3.abrupt("return", Promise.resolve(streamId));
479
- case 2:
480
- case "end":
481
- return _context3.stop();
482
- }
483
- }, _callee3, this);
484
- }));
485
- function createScreenShareWithSelectionId(_x5, _x6) {
486
- return _createScreenShareWithSelectionId.apply(this, arguments);
487
- }
488
- return createScreenShareWithSelectionId;
489
- }()
490
- }, {
491
- key: "_isStoppedFor",
492
- value: function _isStoppedFor(events, reason) {
493
- var _this3 = this;
494
- return events && events.find(function (event) {
495
- var _event$cause;
496
- return ((_event$cause = event.cause) === null || _event$cause === void 0 || (_event$cause = _event$cause.data) === null || _event$cause === void 0 ? void 0 : _event$cause.reason) === reason && event.modifiedStream.owner.userId === _this3.localUserId;
497
- });
498
- }
499
- }, {
500
- key: "_addEventListeners",
501
- value: function _addEventListeners() {
502
- window.addEventListener('online', this._syncShareStreamState);
503
- }
504
- }, {
505
- key: "_removeEventListeners",
506
- value: function _removeEventListeners() {
507
- window.removeEventListener('online', this._syncShareStreamState);
508
- }
509
- }, {
510
- key: "_syncShareStreamState",
511
- value: function _syncShareStreamState() {
512
- var _this$_sharedScreenSh;
513
- if (this._sharedScreenShareSharedDataSource.localUserScreenSharingState !== _fcrCore.FcrMediaSourceState.OPEN && ((_this$_sharedScreenSh = this._sharedScreenShareSharedDataSource.screenSharingOwner) === null || _this$_sharedScreenSh === void 0 ? void 0 : _this$_sharedScreenSh.userId) === this.localUserId) {
514
- this._hasStop = false;
515
- this.stop();
516
- }
517
- }
518
- }, {
519
- key: "_handleStreamUpdate",
520
- value: function _handleStreamUpdate(process, events) {
521
- var _seizeStream$operator,
522
- _this4 = this;
523
- this._syncScreenShareStreamInfos();
524
- var isClosedByOther = this._isStoppedFor(events, _types.FcrBoardInactiveReason.CLOSE);
525
- var isSeizedByOther = this._isStoppedFor(events, _types.FcrBoardInactiveReason.SEIZE);
526
- var operatorUser = (isSeizedByOther === null || isSeizedByOther === void 0 ? void 0 : isSeizedByOther.operatorUser) || (isClosedByOther === null || isClosedByOther === void 0 ? void 0 : isClosedByOther.operatorUser);
527
- var ownerUser = (isSeizedByOther === null || isSeizedByOther === void 0 ? void 0 : isSeizedByOther.modifiedStream.owner) || (isClosedByOther === null || isClosedByOther === void 0 ? void 0 : isClosedByOther.modifiedStream.owner);
528
- var selfOperated = (operatorUser === null || operatorUser === void 0 ? void 0 : operatorUser.userId) === this.localUserId;
529
- var isMyOwnShare = this.localUserId === (ownerUser === null || ownerUser === void 0 ? void 0 : ownerUser.userId);
530
- isClosedByOther && !selfOperated && isMyOwnShare && this._eventProvider.sendEvent(_constant.FcrUIAction.SHOW_TOAST, {
531
- type: 'info',
532
- message: (0, _i18n.transI18n)('fmt_share_tips_sharingdisabled')
533
- });
534
- if ((isSeizedByOther || isClosedByOther) && !selfOperated) {
535
- if ((0, _env.isElectron)()) {
536
- this.stop();
537
- } else {
538
- this._stopScreenTrack();
539
- }
540
- return;
541
- }
542
- switch (process) {
543
- case 'add':
544
- // 抢占流添加时,不设置抢占流状态,因为抢占发生时,会触发 remove 事件,此时判断 reason===seize 的结果设置抢占流状态
545
- // const newsStreamsHaveScreenShare = events.some(
546
- // (event) => event.modifiedStream.videoSourceType === AgoraRteVideoSourceType.SCREEN,
547
- // );
548
- // const isSeizeStreamAdd =
549
- // newsStreamsHaveScreenShare && this._sharedScreenShareSharedDataSource.isSharingScreen;
550
- // this._sharedScreenShareSharedDataSource.setIsSeizeStream(isSeizeStreamAdd);
551
- break;
552
- case 'remove':
553
- var seizeStream = events.find(function (event) {
554
- var _event$cause2, _event$operatorUser;
555
- return event.modifiedStream.videoSourceType === _fcrCore.FcrVideoSourceType.SCREEN && ((_event$cause2 = event.cause) === null || _event$cause2 === void 0 || (_event$cause2 = _event$cause2.data) === null || _event$cause2 === void 0 ? void 0 : _event$cause2.reason) === _types.FcrBoardInactiveReason.SEIZE && ((_event$operatorUser = event.operatorUser) === null || _event$operatorUser === void 0 ? void 0 : _event$operatorUser.userId) !== event.modifiedStream.owner.userId;
556
- });
557
- if ((seizeStream === null || seizeStream === void 0 || (_seizeStream$operator = seizeStream.operatorUser) === null || _seizeStream$operator === void 0 ? void 0 : _seizeStream$operator.userId) !== this.localUserId && (seizeStream === null || seizeStream === void 0 ? void 0 : seizeStream.modifiedStream.owner.userId) === this.localUserId) {
558
- this._observable.notifyObservers('onScreenShareSeize');
559
- this._sharedScreenShareSharedDataSource.setIsSeizeStream(true);
560
- }
561
- var mySharingScreenRemoved = events.some(function (event) {
562
- return event.modifiedStream.videoSourceType === _fcrCore.FcrVideoSourceType.SCREEN && event.modifiedStream.owner.userId === _this4.localUserId;
563
- });
564
- if (mySharingScreenRemoved) {
565
- this.setSharingInReplace(false);
566
- if (!(0, _env.isElectron)() && this._isReplaceScreen) {
567
- // web下的替换流不需要停止采集
568
- this._isReplaceScreen = false;
569
- return;
570
- }
571
- this.logger.info('screen-share-provider: current user stream remove');
572
- this._stopScreenTrack();
573
- }
574
- break;
575
- }
576
- }
577
- }, {
578
- key: "startRenderSharePreview",
579
- value: function startRenderSharePreview(dom, targetScreenTrack) {
580
- this._previewDom = dom;
581
- var screenTrack = targetScreenTrack !== null && targetScreenTrack !== void 0 ? targetScreenTrack : this.screenTrack;
582
- if (dom) {
583
- screenTrack === null || screenTrack === void 0 || screenTrack.startPreview({
584
- renderMode: 1,
585
- isMirror: false
586
- }, dom);
587
- } else {
588
- screenTrack === null || screenTrack === void 0 || screenTrack.stopPreview(dom);
589
- this._previewDom = null;
590
- }
591
- }
592
- }, {
593
- key: "stopRenderSharePreview",
594
- value: function stopRenderSharePreview(targetScreenTrack) {
595
- var screenTrack = targetScreenTrack !== null && targetScreenTrack !== void 0 ? targetScreenTrack : this.screenTrack;
596
- this._previewDom && (screenTrack === null || screenTrack === void 0 ? void 0 : screenTrack.stopPreview(this._previewDom));
597
- }
598
- }, {
599
- key: "_syncScreenShareStreamInfos",
600
- value: function _syncScreenShareStreamInfos() {
601
- var _this$_roomProvider$c, _streams$find;
602
- var streams = (_this$_roomProvider$c = this._roomProvider.currentRoomControl) === null || _this$_roomProvider$c === void 0 ? void 0 : _this$_roomProvider$c.getStreamControl().getStreamList();
603
- var isSharingScreen = streams === null || streams === void 0 ? void 0 : streams.some(function (stream) {
604
- return stream.videoSourceType === _fcrCore.FcrVideoSourceType.SCREEN;
605
- });
606
- this._sharedScreenShareSharedDataSource.setIsSharingScreen(!!isSharingScreen);
607
- var screenSharingOwner = streams === null || streams === void 0 || (_streams$find = streams.find(function (stream) {
608
- return stream.videoSourceType === _fcrCore.FcrVideoSourceType.SCREEN;
609
- })) === null || _streams$find === void 0 ? void 0 : _streams$find.owner;
610
- this._sharedScreenShareSharedDataSource.setScreenSharingOwner(screenSharingOwner);
611
- }
612
- }, {
613
- key: "setScreenTrack",
614
- value: function setScreenTrack(screenTrack) {
615
- this._sharedScreenShareSharedDataSource.setScreenTrack(screenTrack);
616
- }
617
- }, {
618
- key: "addObserver",
619
- value: function addObserver(observer) {
620
- this._observable.addObserver(observer);
621
- }
622
- }, {
623
- key: "removeObserver",
624
- value: function removeObserver(observer) {
625
- this._observable.removeObserver(observer);
626
- }
627
- }, {
628
- key: "startShareWhiteboard",
629
- value: function startShareWhiteboard() {
630
- var _this$_sharingProvide;
631
- (_this$_sharingProvide = this._sharingProvider) === null || _this$_sharingProvide === void 0 || _this$_sharingProvide.startWhiteboard();
632
- }
633
- }, {
634
- key: "release",
635
- value: function release() {
636
- this.logger.info('[screen-share-provider] in release');
637
- this._hasStop = false;
638
- this.stop();
639
- this._streamControl.removeObserver(this._streamObserver);
640
- this._removeEventListeners();
641
- }
642
- }, {
643
- key: "startShareScreen",
644
- value: function () {
645
- var _startShareScreen = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(id, type, withAudio, isReplace) {
646
- var _this$screenTrack3, _this$screenTrack4, frameRate, excludeWindows, streamId, screenTrack, _t, _t2;
647
- return _regenerator["default"].wrap(function (_context4) {
648
- while (1) switch (_context4.prev = _context4.next) {
649
- case 0:
650
- this.setShareLock(true);
651
- _context4.prev = 1;
652
- this.logger.info('screen-share-provider: enter startShareScreen');
653
- frameRate = this._sharedScreenShareSharedDataSource.screenShareScenarioType === _imports.FcrScreenScenarioType.SMOOTH ? 25 : 15;
654
- if (!(0, _env.isElectron)()) {
655
- _context4.next = 3;
656
- break;
657
- }
658
- _context4.next = 2;
659
- return this._getExcludeWindows();
660
- case 2:
661
- _t = _context4.sent;
662
- _context4.next = 4;
663
- break;
664
- case 3:
665
- _t = undefined;
666
- case 4:
667
- excludeWindows = _t;
668
- this._sharedScreenShareSharedDataSource.setShareWithAudio(withAudio);
669
- if (!((0, _env.isElectron)() && !isReplace)) {
670
- _context4.next = 6;
671
- break;
672
- }
673
- _context4.next = 5;
674
- return this.createScreenShareWithSelectionId(id, this.currentSelectionBounds);
675
- case 5:
676
- streamId = _context4.sent;
677
- if (streamId) {
678
- this._sharedScreenShareSharedDataSource.setCurrentShareStreamId(streamId);
679
- }
680
- case 6:
681
- screenTrack = this._deviceProvider.getScreenTrack(id);
682
- this.setScreenTrack(screenTrack);
683
- this.logger.info("[screen-share-provider]: start share screen with track start, excludeWindows: ".concat(JSON.stringify(excludeWindows)));
684
- (_this$screenTrack3 = this.screenTrack) === null || _this$screenTrack3 === void 0 || _this$screenTrack3.addObserver(this._screenCaptureObserver);
685
- // this.screenTrack?.start(type, {
686
- // withAudio,
687
- // excludeWindows,
688
- // frameRate,
689
- // });
690
- (_this$screenTrack4 = this.screenTrack) === null || _this$screenTrack4 === void 0 || _this$screenTrack4.start(type, excludeWindows !== null && excludeWindows !== void 0 ? excludeWindows : []);
691
- _context4.next = 8;
692
- break;
693
- case 7:
694
- _context4.prev = 7;
695
- _t2 = _context4["catch"](1);
696
- this.setShareLock(false);
697
- throw _t2;
698
- case 8:
699
- case "end":
700
- return _context4.stop();
701
- }
702
- }, _callee4, this, [[1, 7]]);
703
- }));
704
- function startShareScreen(_x7, _x8, _x9, _x0) {
705
- return _startShareScreen.apply(this, arguments);
706
- }
707
- return startShareScreen;
708
- }()
709
- }, {
710
- key: "stopShareScreen",
711
- value: function stopShareScreen(targetScreenTrack) {
712
- this.logger.info('screen-share-provider: stopShareScreen');
713
- var screenTrack = targetScreenTrack !== null && targetScreenTrack !== void 0 ? targetScreenTrack : this.screenTrack;
714
- this._handleShareStopWithAudio();
715
- this._cleanShareWithAudioDataSource();
716
- this.stopRenderSharePreview(screenTrack);
717
- this.removeScreenStream();
718
- this._stopScreenTrack();
719
- }
720
- }, {
721
- key: "stopShareScreenByExitRoom",
722
- value: function stopShareScreenByExitRoom(targetScreenTrack) {
723
- this.logger.info('screen-share-provider: stopShareScreenByExitRoom');
724
- var screenTrack = targetScreenTrack !== null && targetScreenTrack !== void 0 ? targetScreenTrack : this.screenTrack;
725
- this.stopRenderSharePreview(screenTrack);
726
- this._stopScreenTrack();
727
- this._cleanShareWithAudioDataSource();
728
- }
729
- }, {
730
- key: "_updateShareAudioPrivilege",
731
- value: function _updateShareAudioPrivilege(streamId, withAudio) {
732
- this._streamControl.updatePublishPrivilegeOfStreams((0, _defineProperty2["default"])({}, streamId, {
733
- audioPrivilege: withAudio ? _fcrCore.FcrStreamPrivilegeOperation.HAS_PRIVILEGE : _fcrCore.FcrStreamPrivilegeOperation.NOPRIVILEGE,
734
- videoPrivilege: _fcrCore.FcrStreamPrivilegeOperation.NOOPERATION
735
- }));
736
- }
737
- }, {
738
- key: "_handleShareStopWithAudio",
739
- value: function _handleShareStopWithAudio() {
740
- if (!this.shareAudioTrack) {
741
- return;
742
- }
743
- if (this._deviceProvider.isCapabilitySupported(_fcrCore.FcrCapability.LOOPBACK_CAPTURE)) {
744
- this.logger.info('[screen-share-provider][handleShareStopWithAudio] shareAudioTrack.stop');
745
- this.shareAudioTrack.stop();
746
- }
747
- }
748
- }, {
749
- key: "_handleShareStartWithAudio",
750
- value: function _handleShareStartWithAudio() {
751
- var loopbackAudioSourceId = this._sharedScreenShareSharedDataSource.getLoopbackDeviceId();
752
- if (!loopbackAudioSourceId) {
753
- this.logger.error('cannot get loopbackAudioSourceId before calling getLoopbackTrack');
754
- return;
755
- }
756
- var shareAudioTrack = this._deviceProvider.getLoopbackTrack(loopbackAudioSourceId);
757
- this._sharedScreenShareSharedDataSource.setShareWithAudioTrack(shareAudioTrack);
758
- if (this._deviceProvider.isCapabilitySupported(_fcrCore.FcrCapability.LOOPBACK_CAPTURE) && this.shareAudioTrack && this.shareAudioTrack.getState() === _fcrCore.FcrMediaSourceState.CLOSE) {
759
- this.shareAudioTrack.start();
760
- }
761
- }
762
- }, {
763
- key: "toggleScreenshareWithAudio",
764
- value: function toggleScreenshareWithAudio(withAudio) {
765
- this._sharedScreenShareSharedDataSource.setShareWithAudio(withAudio);
766
- this.logger.info("[screen-share-provider] current-share with audio: ".concat(withAudio));
767
- if (this.currentShareStreamId) {
768
- this._updateShareAudioPrivilege(this.currentShareStreamId, withAudio);
769
- if (withAudio) {
770
- this._handleShareStartWithAudio();
771
- } else {
772
- this._handleShareStopWithAudio();
773
- }
774
- } else {
775
- this.logger.error('currentShareStreamId is not set');
776
- }
777
- }
778
- }, {
779
- key: "_getExcludeWindows",
780
- value: function () {
781
- var _getExcludeWindows2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
782
- var excludeWindows, windowNames;
783
- return _regenerator["default"].wrap(function (_context5) {
784
- while (1) switch (_context5.prev = _context5.next) {
785
- case 0:
786
- excludeWindows = [];
787
- windowNames = [];
788
- _context5.next = 1;
789
- return (0, _tools.waitUntil)(function () {
790
- var windowsIds = (0, _rendererEvent.getMediaSourcesIdByTitle)(['Control Bar', 'Video Window', 'Annotation', 'Annotation tool bar']);
791
- windowsIds === null || windowsIds === void 0 || windowsIds.forEach(function (windowInfo) {
792
- var windowName = windowInfo.windowName,
793
- windowId = windowInfo.windowId;
794
- if (windowId && !excludeWindows.includes(windowId)) {
795
- excludeWindows.push(windowId);
796
- }
797
- if (windowName && !windowNames.includes(windowName)) {
798
- windowNames.push(windowName);
799
- }
800
- });
801
- return windowNames.includes('Control Bar') && windowNames.includes('Video Window');
802
- }, 'control bar is open');
803
- case 1:
804
- this.logger.info("[screen-share-provider] windowNames: ".concat(JSON.stringify(windowNames), ", excludeWindows: ").concat(JSON.stringify(excludeWindows)));
805
- return _context5.abrupt("return", excludeWindows);
806
- case 2:
807
- case "end":
808
- return _context5.stop();
809
- }
810
- }, _callee5, this);
811
- }));
812
- function _getExcludeWindows() {
813
- return _getExcludeWindows2.apply(this, arguments);
814
- }
815
- return _getExcludeWindows;
816
- }()
817
- }, {
818
- key: "removeScreenStream",
819
- value: function removeScreenStream() {
820
- try {
821
- this.logger.info('screen-share-provider: remove screen streams');
822
- this._streamControl.removeScreenStream();
823
- this._sharedScreenShareSharedDataSource.setCurrentShareStreamId(undefined);
824
- return true;
825
- } catch (error) {
826
- this.logger.error('removeScreenStream error', error);
827
- return false;
828
- }
829
- }
830
- }, {
831
- key: "_stopScreenTrack",
832
- value: function _stopScreenTrack() {
833
- var _this$screenTrack5;
834
- this.logger.info('screen-share-provider: current screen track stop');
835
- (_this$screenTrack5 = this.screenTrack) === null || _this$screenTrack5 === void 0 || _this$screenTrack5.stop();
836
- this.setShareLock(false);
837
- }
838
- }, {
839
- key: "_cleanShareWithAudioDataSource",
840
- value: function _cleanShareWithAudioDataSource() {
841
- this.logger.info('[screen-share-provider][cleanShareWithAudioDataSource] reset done !');
842
- this._sharedScreenShareSharedDataSource.setShareWithAudioTrack(null);
843
- this._sharedScreenShareSharedDataSource.setShareWithAudio(!(0, _env.isElectron)());
844
- }
845
- }]);
846
- }();
847
- _FcrUIScreenShareProviderImpl = FcrUIScreenShareProviderImpl;
848
- var _applyDecs$e = (0, _slicedToArray2["default"])(_applyDecs(_FcrUIScreenShareProviderImpl, [[_decorator.bound, 2, "setSharingInReplace"], [_zoomOutDecs, 18, "zoomOut"], [_zoomInDecs, 18, "zoomIn"], [_fullContainerDecs, 18, "fullContainer"], [_mobx.computed, 3, "isAspectRatioPreserved"], [_setOriginScalcDecs, 18, "setOriginScalc"], [_decorator.bound, 2, "stop"], [_decorator.bound, 2, "bootstrap"], [_decorator.bound, 2, "_handleWebScreenCaptureStateUpdated"], [_handleScreenCaptureStateUpdatedDecs, 18, "_handleScreenCaptureStateUpdated"], [_replaceScreenShareDecs, 18, "replaceScreenShare"], [_handleRemoteVideoStatsUpdatedDecs, 18, "_handleRemoteVideoStatsUpdated"], [_decorator.bound, 2, "_syncShareStreamState"], [_handleStreamUpdateDecs, 18, "_handleStreamUpdate"], [_decorator.bound, 2, "startRenderSharePreview"], [_decorator.bound, 2, "stopRenderSharePreview"], [_syncScreenShareStreamInfosDecs, 18, "_syncScreenShareStreamInfos"], [_releaseDecs, 18, "release"], [_startShareScreenDecs, 18, "startShareScreen"], [_decorator.bound, 2, "stopShareScreen"], [_decorator.bound, 2, "stopShareScreenByExitRoom"], [_updateShareAudioPrivilegeDecs, 18, "_updateShareAudioPrivilege"], [_handleShareStopWithAudioDecs, 18, "_handleShareStopWithAudio"], [_handleShareStartWithAudioDecs, 18, "_handleShareStartWithAudio"], [_decorator.bound, 2, "toggleScreenshareWithAudio"], [_decorator.bound, 2, "_getExcludeWindows"], [_decorator.bound, 2, "removeScreenStream"], [_decorator.bound, 2, "_stopScreenTrack"], [_decorator.bound, 2, "_cleanShareWithAudioDataSource"]], []).e, 1);
849
- _initProto = _applyDecs$e[0];
850
- (0, _base.registerDependency)('screenShareProvider');