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,7 +1,39 @@
1
1
  "use strict";
2
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.array.push.js");
9
+ require("core-js/modules/es.date.to-primitive.js");
10
+ require("core-js/modules/es.function.bind.js");
11
+ require("core-js/modules/es.function.name.js");
12
+ require("core-js/modules/es.map.js");
13
+ require("core-js/modules/es.number.constructor.js");
14
+ require("core-js/modules/es.object.create.js");
3
15
  require("core-js/modules/es.object.define-property.js");
16
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
17
+ require("core-js/modules/es.string.iterator.js");
18
+ require("core-js/modules/esnext.function.metadata.js");
19
+ require("core-js/modules/esnext.map.delete-all.js");
20
+ require("core-js/modules/esnext.map.emplace.js");
21
+ require("core-js/modules/esnext.map.every.js");
22
+ require("core-js/modules/esnext.map.filter.js");
23
+ require("core-js/modules/esnext.map.find.js");
24
+ require("core-js/modules/esnext.map.find-key.js");
25
+ require("core-js/modules/esnext.map.includes.js");
26
+ require("core-js/modules/esnext.map.key-of.js");
27
+ require("core-js/modules/esnext.map.map-keys.js");
28
+ require("core-js/modules/esnext.map.map-values.js");
29
+ require("core-js/modules/esnext.map.merge.js");
30
+ require("core-js/modules/esnext.map.reduce.js");
31
+ require("core-js/modules/esnext.map.some.js");
32
+ require("core-js/modules/esnext.map.update.js");
33
+ require("core-js/modules/esnext.symbol.metadata.js");
34
+ require("core-js/modules/web.dom-collections.iterator.js");
4
35
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
36
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
37
  Object.defineProperty(exports, "__esModule", {
6
38
  value: true
7
39
  });
@@ -9,9 +41,13 @@ exports.FcrUIScreenStreamSync = void 0;
9
41
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
42
  require("core-js/modules/es.error.cause.js");
11
43
  require("core-js/modules/es.error.to-string.js");
44
+ require("core-js/modules/es.array.find.js");
12
45
  require("core-js/modules/es.object.to-string.js");
13
46
  require("core-js/modules/es.promise.js");
47
+ require("core-js/modules/esnext.iterator.constructor.js");
48
+ require("core-js/modules/esnext.iterator.find.js");
14
49
  require("core-js/modules/web.timers.js");
50
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
51
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
52
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
53
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -19,17 +55,27 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
19
55
  var _type = require("fcr-core/lib/type");
20
56
  var _objectManager = require("../../object-manager");
21
57
  var _logger = require("../../utilities/logger");
58
+ var _decorator = require("agora-foundation/lib/decorator");
59
+ var _FcrUIScreenStreamSync;
60
+ var _initProto;
61
+ 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)]; } }; }
62
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
63
+ 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); }
64
+ 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; }
65
+ 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; }
22
66
  var FcrUIScreenStreamSync = exports.FcrUIScreenStreamSync = /*#__PURE__*/function () {
23
67
  function FcrUIScreenStreamSync(objectManager) {
24
68
  var _this = this;
25
69
  (0, _classCallCheck2["default"])(this, FcrUIScreenStreamSync);
26
- (0, _defineProperty2["default"])(this, "logger", (0, _logger.createLogger)({
70
+ (0, _defineProperty2["default"])(this, "logger", (_initProto(this), (0, _logger.createLogger)({
27
71
  prefix: 'FcrUIScreenStreamSync'
28
- }));
72
+ })));
29
73
  // 我的屏幕共享流id
30
74
  (0, _defineProperty2["default"])(this, "_myCurrentScreenShareStreamId", null);
31
75
  (0, _defineProperty2["default"])(this, "_released", false);
76
+ (0, _defineProperty2["default"])(this, "_isStopped", false);
32
77
  var sharedConfigDataSource = objectManager.getObject(_objectManager.FcrUIObjectKeys.S_SHARED_CONFIG_DATA_SOURCE);
78
+ this._videoWindowDataSource = objectManager.getObject(_objectManager.FcrUIObjectKeys.S_SHARED_VIDEO_WINDOW_DATA_SOURCE);
33
79
  var roomProvider = objectManager.getObject(_objectManager.FcrUIObjectKeys.P_ROOM_PROVIDER);
34
80
  var userId = sharedConfigDataSource.creatorConfig.userId;
35
81
  this._sharingControl = roomProvider.currentRoomControl.getSharingControl();
@@ -59,7 +105,7 @@ var FcrUIScreenStreamSync = exports.FcrUIScreenStreamSync = /*#__PURE__*/functio
59
105
  }, {
60
106
  key: "checkIfMyScreenShareStreamExists",
61
107
  value: function checkIfMyScreenShareStreamExists() {
62
- return this._myCurrentScreenShareStreamId;
108
+ return !!this._myCurrentScreenShareStreamId;
63
109
  }
64
110
  }, {
65
111
  key: "startScreenStream",
@@ -76,23 +122,24 @@ var FcrUIScreenStreamSync = exports.FcrUIScreenStreamSync = /*#__PURE__*/functio
76
122
  }
77
123
  throw new Error("there's already a screen share stream owned by me");
78
124
  case 1:
79
- _context.prev = 1;
80
- _context.next = 2;
125
+ this._isStopped = false;
126
+ _context.prev = 2;
127
+ _context.next = 3;
81
128
  return this._sharingControl.startScreenSharing(createConfig, encoderConfig.dimensions);
82
- case 2:
129
+ case 3:
83
130
  screenStreamId = _context.sent;
84
131
  this._streamControl.setVideoEncoderConfig(screenStreamId, encoderConfig, _type.FcrVideoStreamType.HIGH_STREAM);
85
- _context.next = 4;
132
+ _context.next = 5;
86
133
  break;
87
- case 3:
88
- _context.prev = 3;
89
- _t = _context["catch"](1);
90
- throw new Error("failed to start screen share stream, error: ".concat(_t));
91
134
  case 4:
135
+ _context.prev = 4;
136
+ _t = _context["catch"](2);
137
+ throw new Error("failed to start screen share stream, error: ".concat(_t));
138
+ case 5:
92
139
  case "end":
93
140
  return _context.stop();
94
141
  }
95
- }, _callee, this, [[1, 3]]);
142
+ }, _callee, this, [[2, 4]]);
96
143
  }));
97
144
  function startScreenStream(_x, _x2) {
98
145
  return _startScreenStream.apply(this, arguments);
@@ -103,7 +150,7 @@ var FcrUIScreenStreamSync = exports.FcrUIScreenStreamSync = /*#__PURE__*/functio
103
150
  key: "stopScreenStream",
104
151
  value: function () {
105
152
  var _stopScreenStream = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
106
- var _t2;
153
+ var screenVideoWindowData, screenStream, _t2;
107
154
  return _regenerator["default"].wrap(function (_context2) {
108
155
  while (1) switch (_context2.prev = _context2.next) {
109
156
  case 0:
@@ -114,55 +161,96 @@ var FcrUIScreenStreamSync = exports.FcrUIScreenStreamSync = /*#__PURE__*/functio
114
161
  this.logger.warn('no screen share stream owned by me, cannot stop screen share stream');
115
162
  return _context2.abrupt("return");
116
163
  case 1:
164
+ if (!this._isStopped) {
165
+ _context2.next = 2;
166
+ break;
167
+ }
168
+ this.logger.warn('the screen share stream is stopped, no need to stop again');
169
+ return _context2.abrupt("return");
170
+ case 2:
171
+ this._isStopped = true;
172
+ this._myCurrentScreenShareStreamId = null;
173
+ case 3:
117
174
  if (!true) {
118
- _context2.next = 9;
175
+ _context2.next = 12;
119
176
  break;
120
177
  }
121
178
  if (!this._released) {
122
- _context2.next = 2;
179
+ _context2.next = 4;
123
180
  break;
124
181
  }
125
182
  return _context2.abrupt("return");
126
- case 2:
127
- _context2.prev = 2;
128
- _context2.next = 3;
129
- return this._sharingControl.stop();
130
- case 3:
131
- return _context2.abrupt("continue", 9);
132
183
  case 4:
133
184
  _context2.prev = 4;
134
- _t2 = _context2["catch"](2);
185
+ _context2.next = 5;
186
+ return this._sharingControl.stop();
187
+ case 5:
188
+ return _context2.abrupt("continue", 12);
189
+ case 6:
190
+ _context2.prev = 6;
191
+ _t2 = _context2["catch"](4);
135
192
  if (!(_t2 instanceof _type.FcrError && _t2.code === 720404300)) {
136
- _context2.next = 5;
193
+ _context2.next = 8;
137
194
  break;
138
195
  }
139
- this.logger.error("the screen share stream does not exist,");
140
- return _context2.abrupt("continue", 9);
141
- case 5:
142
- this.logger.error("failed to stop screen share stream, error: ".concat(_t2, ", retry in 1000ms"), _t2);
143
- _context2.next = 6;
144
- return new Promise(function (resolve) {
145
- return setTimeout(resolve, 1000);
196
+ this.logger.error("the screen share stream does not exist");
197
+
198
+ /**
199
+ * TODO: 这里加删除 videoWindowData 的逻辑是因为,如果在屏幕共享时主持人结束了房间,在用户点击确认离开房间前,可以看到窗口上显示 “你正在屏幕共享” 的标识。
200
+ * TODO: 主持人在结束会议后,在点击确认离开房间前,窗口保留着最后的操作画面应该是正常的情况,那还是否有必要加这段逻辑,或者有更好的处理方式?
201
+ *
202
+ * 3 种场景会调用到 stopScreenStream。
203
+ * 1. 用户主动停止屏幕共享
204
+ * 2. 用户的屏幕共享被其他人抢占
205
+ * 3. 主持人结束房间
206
+ *
207
+ * 场景 2 的流程:
208
+ * 其他人抢占屏幕共享 > 当前共享用户会收到 FcrStreamControl 的 onStreamsRemoved 事件 > 调用 screenTrack.stop() > SourceMnager.stopScreenCapture
209
+ * > RtcEngine 发出 onLocalVideoStateChanged 事件 > ... > 这里的 stopScreenStream
210
+ *
211
+ * 场景 3 的流程:
212
+ * 主持人结束房间 > RtcEngine 发出 onLocalVideoStateChanged 事件 > ... > 这里的 stopScreenStream
213
+ *
214
+ * 在主持人结束房间的场景下,服务端已经不存在这条流,所以调用 stop 接口会报流不存在的错,所以这里把流对应的 videoWindowData 删除掉。
215
+ *
216
+ */
217
+ screenVideoWindowData = this._videoWindowDataSource.mainList.find(function (stream) {
218
+ return stream.videoSourceType === _type.FcrVideoSourceType.SCREEN;
146
219
  });
147
- case 6:
148
- _context2.prev = 6;
149
- if (this._myCurrentScreenShareStreamId) {
220
+ if (screenVideoWindowData) {
150
221
  _context2.next = 7;
151
222
  break;
152
223
  }
153
- return _context2.abrupt("continue", 9);
224
+ return _context2.abrupt("continue", 12);
154
225
  case 7:
155
- return _context2.finish(6);
226
+ screenStream = screenVideoWindowData.getVideoStream();
227
+ if (screenStream) {
228
+ this._videoWindowDataSource["delete"](screenStream);
229
+ }
230
+ return _context2.abrupt("continue", 12);
156
231
  case 8:
157
- _context2.next = 1;
158
- break;
232
+ this.logger.error("failed to stop screen share stream, error: ".concat(_t2, ", retry in 1000ms"), _t2);
233
+ _context2.next = 9;
234
+ return new Promise(function (resolve) {
235
+ return setTimeout(resolve, 1000);
236
+ });
159
237
  case 9:
160
- this._myCurrentScreenShareStreamId = null;
238
+ _context2.prev = 9;
239
+ if (this._myCurrentScreenShareStreamId) {
240
+ _context2.next = 10;
241
+ break;
242
+ }
243
+ return _context2.abrupt("continue", 12);
161
244
  case 10:
245
+ return _context2.finish(9);
246
+ case 11:
247
+ _context2.next = 3;
248
+ break;
249
+ case 12:
162
250
  case "end":
163
251
  return _context2.stop();
164
252
  }
165
- }, _callee2, this, [[2, 4, 6, 8]]);
253
+ }, _callee2, this, [[4, 6, 9, 11]]);
166
254
  }));
167
255
  function stopScreenStream() {
168
256
  return _stopScreenStream.apply(this, arguments);
@@ -221,4 +309,9 @@ var FcrUIScreenStreamSync = exports.FcrUIScreenStreamSync = /*#__PURE__*/functio
221
309
  return this._myCurrentScreenShareStreamId !== null;
222
310
  }
223
311
  }]);
224
- }();
312
+ }();
313
+ _FcrUIScreenStreamSync = FcrUIScreenStreamSync;
314
+ var _applyDecs$e = _applyDecs(_FcrUIScreenStreamSync, [[_decorator.trace, 2, "checkIfMyScreenShareStreamExists"], [_decorator.trace, 2, "startScreenStream"], [_decorator.trace, 2, "stopScreenStream"], [_decorator.trace, 2, "updateStream"], [_decorator.trace, 2, "isLocalScreenStreamCreated"]], []).e;
315
+ var _applyDecs$e2 = (0, _slicedToArray2["default"])(_applyDecs$e, 1);
316
+ _initProto = _applyDecs$e2[0];
317
+ _applyDecs$e;
@@ -145,9 +145,6 @@ var FcrUICurrentWindowImpl = exports.FcrUICurrentWindowImpl = /*#__PURE__*/funct
145
145
  }, {
146
146
  key: "setAlwaysOnTop",
147
147
  value: function setAlwaysOnTop(flag) {
148
- // 这里目前没有地方调用,因为annotation调用了setAlwaysOnTop,并且设置了pop-up-menu
149
- // 窗口在windows上设置的是pop-up-menu,看看是不是要成对出现
150
- this.logger.info('windows_index setAlwaysOnTop in main-window');
151
148
  this.browserWindow.setAlwaysOnTop(flag);
152
149
  }
153
150
  }, {
@@ -22,6 +22,8 @@ export declare class FcrUIWindowImpl implements FcrUIWindow, FcrUIManagedObject
22
22
  private _alwaysOnTop?;
23
23
  private _alwaysOnTopLevel?;
24
24
  private _relativeLevel?;
25
+ private _visibleOnAllWorkspaces?;
26
+ private _visibleOnAllWorkspacesOptions?;
25
27
  private _resizable?;
26
28
  private _aspectRatio?;
27
29
  private _minimumSize?;
@@ -56,6 +58,7 @@ export declare class FcrUIWindowImpl implements FcrUIWindow, FcrUIManagedObject
56
58
  forward: boolean;
57
59
  }): void;
58
60
  setAlwaysOnTop(flag: boolean, level?: 'normal' | 'floating' | 'torn-off-menu' | 'modal-panel' | 'main-menu' | 'status' | 'pop-up-menu' | 'screen-saver', relativeLevel?: number): void;
61
+ setVisibleOnAllWorkspaces(visible: boolean, options?: Electron.VisibleOnAllWorkspacesOptions): void;
59
62
  setTitle(title: string): void;
60
63
  getTitle(): string;
61
64
  maximize(): void;
@@ -116,7 +116,8 @@ var FcrUIWindowImpl = exports.FcrUIWindowImpl = /*#__PURE__*/function () {
116
116
  dom.append(_this.rootNode);
117
117
  _this._rendererWindow = rendererWindow;
118
118
  _this._windowId = windowId;
119
- _this.logger.info("initialized, windowId: ".concat(windowId, ", windowName: ").concat(windowName));
119
+ _this.logger.info("renderer window is opened, windowId: ".concat(windowId, ", windowName: ").concat(windowName));
120
+
120
121
  // 创建代理对象,使用从 window 对象获取的 ID
121
122
  _this._browserWindowProxy = renderer.createWindowProxy(windowId);
122
123
  _this._setupEventListeners();
@@ -141,6 +142,7 @@ var FcrUIWindowImpl = exports.FcrUIWindowImpl = /*#__PURE__*/function () {
141
142
  }, options);
142
143
  this._addLogObserver();
143
144
  this._rootNode = document.createElement('div');
145
+ this.logger.info("initialized, windowName: ".concat(windowName));
144
146
  }
145
147
  return (0, _createClass2["default"])(FcrUIWindowImpl, [{
146
148
  key: "setResizable",
@@ -289,10 +291,18 @@ var FcrUIWindowImpl = exports.FcrUIWindowImpl = /*#__PURE__*/function () {
289
291
  this._alwaysOnTopLevel = level;
290
292
  this._relativeLevel = relativeLevel;
291
293
  if (this._isBrowserWindowReady) {
292
- this.logger.info('windows_index setAlwaysOnTop in renderer-window');
293
294
  this.browserWindow.setAlwaysOnTop(flag, level, relativeLevel);
294
295
  }
295
296
  }
297
+ }, {
298
+ key: "setVisibleOnAllWorkspaces",
299
+ value: function setVisibleOnAllWorkspaces(visible, options) {
300
+ this._visibleOnAllWorkspaces = visible;
301
+ this._visibleOnAllWorkspacesOptions = options;
302
+ if (this._isBrowserWindowReady) {
303
+ this.browserWindow.setVisibleOnAllWorkspaces(visible, options);
304
+ }
305
+ }
296
306
  }, {
297
307
  key: "setTitle",
298
308
  value: function setTitle(title) {
@@ -330,7 +340,10 @@ var FcrUIWindowImpl = exports.FcrUIWindowImpl = /*#__PURE__*/function () {
330
340
  }, {
331
341
  key: "isVisible",
332
342
  value: function isVisible() {
333
- return this.browserWindow.isVisible();
343
+ if (this._isBrowserWindowReady) {
344
+ return this.browserWindow.isVisible();
345
+ }
346
+ return this._visible;
334
347
  }
335
348
  }, {
336
349
  key: "show",
@@ -447,62 +460,92 @@ var FcrUIWindowImpl = exports.FcrUIWindowImpl = /*#__PURE__*/function () {
447
460
  value: function _synBrowserWindowStateToInnerState() {
448
461
  this.browserWindow.webContents.setBackgroundThrottling(false);
449
462
  if (this._isClosed) {
463
+ this.logger.info('window is marked as closed, closing the browser window.');
450
464
  this.browserWindow.close();
451
465
  return;
452
466
  }
467
+
468
+ // 重置 visibleOnAllWorkspaces
469
+ this.browserWindow.setVisibleOnAllWorkspaces(false, {
470
+ skipTransformProcessType: true
471
+ });
472
+ if ((0, _isBoolean["default"])(this._visibleOnAllWorkspaces)) {
473
+ var _this$_visibleOnAllWo;
474
+ this.logger.info('setting the browser window visible on all workspaces.');
475
+ this.browserWindow.setVisibleOnAllWorkspaces(this._visibleOnAllWorkspaces, {
476
+ visibleOnFullScreen: (_this$_visibleOnAllWo = this._visibleOnAllWorkspacesOptions) === null || _this$_visibleOnAllWo === void 0 ? void 0 : _this$_visibleOnAllWo.visibleOnFullScreen,
477
+ skipTransformProcessType: true
478
+ });
479
+ }
453
480
  if (this._visible) {
481
+ this.logger.info('window is marked as visible, showing the browser window.');
454
482
  this.browserWindowProxy.setPreventClose(this._preventClose);
455
483
  if (this._showInactive) {
484
+ this.logger.info('showing the browser window as inactive.');
456
485
  this.browserWindow.showInactive();
457
486
  } else {
487
+ this.logger.info('showing and focusing the browser window.');
458
488
  this.browserWindow.show();
459
489
  this.browserWindow.focus();
460
490
  this.browserWindow.moveTop();
461
491
  }
462
492
  } else {
493
+ this.logger.info('window is marked as hidden, hiding the browser window.');
463
494
  this.browserWindow.hide();
464
495
  }
465
496
  if (this._backgroundColor) {
497
+ this.logger.info('setting the browser window background color.');
466
498
  this.browserWindow.setBackgroundColor(this._backgroundColor);
467
499
  }
468
500
  if (this._bounds) {
501
+ this.logger.info('setting the browser window bounds.');
469
502
  this.browserWindow.setBounds(this._bounds);
470
503
  }
471
504
  if (this._title) {
505
+ this.logger.info('setting the browser window title.');
472
506
  this.browserWindow.setTitle(this._title);
473
507
  }
474
508
  if ((0, _isBoolean["default"])(this._ignoreMouseEvents)) {
509
+ this.logger.info('setting the browser window ignore mouse events.');
475
510
  this.browserWindow.setIgnoreMouseEvents(this._ignoreMouseEvents, this._ignoreMouseEventsOptions);
476
511
  }
477
512
  if ((0, _isBoolean["default"])(this._alwaysOnTop)) {
513
+ this.logger.info('setting the browser window always on top.');
478
514
  this.browserWindow.setAlwaysOnTop(this._alwaysOnTop, this._alwaysOnTopLevel, this._relativeLevel);
479
515
  }
480
516
  if ((0, _isBoolean["default"])(this._resizable)) {
517
+ this.logger.info('setting the browser window resizable.');
481
518
  this.browserWindow.setResizable(this._resizable);
482
519
  }
483
520
  if ((0, _isBoolean["default"])(this._aspectRatio)) {
521
+ this.logger.info('setting the browser window aspect ratio.');
484
522
  this.browserWindow.setAspectRatio(this._aspectRatio);
485
523
  }
486
524
  if (this._minimumSize) {
487
525
  var _this$_minimumSize = this._minimumSize,
488
526
  width = _this$_minimumSize.width,
489
527
  height = _this$_minimumSize.height;
528
+ this.logger.info('setting the browser window minimum size.');
490
529
  this.browserWindow.setMinimumSize(width, height);
491
530
  }
492
531
  if (this._maximumSize) {
493
532
  var _this$_maximumSize = this._maximumSize,
494
533
  _width = _this$_maximumSize.width,
495
534
  _height = _this$_maximumSize.height;
535
+ this.logger.info('setting the browser window maximum size.');
496
536
  this.browserWindow.setMaximumSize(_width, _height);
497
537
  }
498
538
  if ((0, _isBoolean["default"])(this._isMaximized)) {
499
539
  if (this._isMaximized) {
540
+ this.logger.info('maximizing the browser window.');
500
541
  this.browserWindow.maximize();
501
542
  } else {
543
+ this.logger.info('unmaximizing the browser window.');
502
544
  this.browserWindow.unmaximize();
503
545
  }
504
546
  }
505
547
  if ((0, _isBoolean["default"])(this._fullscreen)) {
548
+ this.logger.info('setting the browser window fullscreen state.');
506
549
  this.browserWindow.setFullScreen(this._fullscreen);
507
550
  }
508
551
  }
@@ -514,7 +557,7 @@ var FcrUIWindowImpl = exports.FcrUIWindowImpl = /*#__PURE__*/function () {
514
557
  }]);
515
558
  }();
516
559
  _FcrUIWindowImpl = FcrUIWindowImpl;
517
- var _applyDecs$e = _applyDecs(_FcrUIWindowImpl, [[_log.trace, 2, "moveTop"], [_log.trace, 2, "setPosition"], [_log.trace, 2, "getPosition"], [_log.trace, 2, "getRootNode"], [_log.trace, 2, "close"], [_log.trace, 2, "isFullScreen"], [_log.trace, 2, "setFullScreen"], [_log.trace, 2, "setIgnoreMouseEvents"], [_log.trace, 2, "setAlwaysOnTop"], [_log.trace, 2, "setTitle"], [_log.trace, 2, "getTitle"], [_log.trace, 2, "maximize"], [_log.trace, 2, "unmaximize"], [_log.trace, 2, "isMaximized"], [_log.trace, 2, "isVisible"], [_log.trace, 2, "show"], [_log.trace, 2, "hide"], [_log.trace, 2, "focus"], [_log.trace, 2, "setBounds"], [_log.trace, 2, "getBounds"], [_log.trace, 2, "setPreventClose"], [_log.trace, 2, "isPreventClose"], [_log.trace, 2, "addObserver"], [_log.trace, 2, "removeObserver"], [_log.trace, 2, "release"]], []).e;
560
+ var _applyDecs$e = _applyDecs(_FcrUIWindowImpl, [[_log.trace, 2, "moveTop"], [_log.trace, 2, "setPosition"], [_log.trace, 2, "getPosition"], [_log.trace, 2, "getRootNode"], [_log.trace, 2, "close"], [_log.trace, 2, "isFullScreen"], [_log.trace, 2, "setFullScreen"], [_log.trace, 2, "setIgnoreMouseEvents"], [_log.trace, 2, "setAlwaysOnTop"], [_log.trace, 2, "setVisibleOnAllWorkspaces"], [_log.trace, 2, "setTitle"], [_log.trace, 2, "getTitle"], [_log.trace, 2, "maximize"], [_log.trace, 2, "unmaximize"], [_log.trace, 2, "isMaximized"], [_log.trace, 2, "isVisible"], [_log.trace, 2, "show"], [_log.trace, 2, "hide"], [_log.trace, 2, "focus"], [_log.trace, 2, "setBounds"], [_log.trace, 2, "getBounds"], [_log.trace, 2, "setPreventClose"], [_log.trace, 2, "isPreventClose"], [_log.trace, 2, "addObserver"], [_log.trace, 2, "removeObserver"], [_log.trace, 2, "release"]], []).e;
518
561
  var _applyDecs$e2 = (0, _slicedToArray2["default"])(_applyDecs$e, 1);
519
562
  _initProto = _applyDecs$e2[0];
520
563
  _applyDecs$e;
@@ -61,6 +61,7 @@ export interface FcrUIWindow {
61
61
  forward: boolean;
62
62
  }): void;
63
63
  setAlwaysOnTop(flag: boolean, level?: 'normal' | 'floating' | 'torn-off-menu' | 'modal-panel' | 'main-menu' | 'status' | 'pop-up-menu' | 'screen-saver', relativeLevel?: number): void;
64
+ setVisibleOnAllWorkspaces(visible: boolean, options?: Electron.VisibleOnAllWorkspacesOptions): void;
64
65
  setPreventClose(prevent: boolean): void;
65
66
  setResizable(resizable: boolean): void;
66
67
  setAspectRatio(aspectRatio: number): void;
@@ -4,6 +4,7 @@ export declare class FcrMainUIScene extends FcrBaseUIScene {
4
4
  protected logger: import("agora-foundation/lib/logger").Logger;
5
5
  private _isWaitingRoomNotify;
6
6
  private _roomObserver;
7
+ private _windowObserver;
7
8
  constructor(args: FcrMainUISceneArgs);
8
9
  mount(dom: HTMLElement): void;
9
10
  unmount(dom: HTMLElement): void;
@@ -75,6 +75,8 @@ var _shareScreenSelection = require("../modules/dialog/dialogs/share-screen-sele
75
75
  var _mainScene3 = require("../modules/state-bar/main-scene");
76
76
  var _muteAll = require("../modules/dialog/dialogs/mute-all");
77
77
  var _controlBarLeaveMeeting = require("../modules/dialog/dialogs/control-bar-leave-meeting");
78
+ var _platform = require("../utilities/platform");
79
+ var _env = require("agora-foundation/lib/utilities/env");
78
80
  var _jsxRuntime = require("react/jsx-runtime");
79
81
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
80
82
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
@@ -140,6 +142,26 @@ var FcrMainUIScene = exports.FcrMainUIScene = /*#__PURE__*/function (_FcrBaseUIS
140
142
  waitingRoomUserControl.addObserver(waitingRoomUserObserver);
141
143
  }
142
144
  };
145
+ _this._windowObserver = {
146
+ onWindowCreated: function onWindowCreated(dialogKey, _, window) {
147
+ if (dialogKey === _constant.FcrUIDialogKey.SHARE_SCREEN_SELECTION) {
148
+ window.setAlwaysOnTop(true, (0, _platform.isMac)() ? 'floating' : 'normal');
149
+ if ((0, _platform.isMac)()) {
150
+ window.setVisibleOnAllWorkspaces(true, {
151
+ visibleOnFullScreen: true
152
+ });
153
+ }
154
+ }
155
+ if (dialogKey === _constant.FcrUIDialogKey.LEAVE_MEETING) {
156
+ window.setAlwaysOnTop(true, (0, _platform.isMac)() ? 'floating' : 'normal');
157
+ if ((0, _platform.isMac)()) {
158
+ window.setVisibleOnAllWorkspaces(true, {
159
+ visibleOnFullScreen: true
160
+ });
161
+ }
162
+ }
163
+ }
164
+ };
143
165
  return _this;
144
166
  }
145
167
  (0, _inherits2["default"])(FcrMainUIScene, _FcrBaseUIScene);
@@ -505,14 +527,23 @@ var FcrMainUIScene = exports.FcrMainUIScene = /*#__PURE__*/function (_FcrBaseUIS
505
527
  var objectManager = this.objectManager;
506
528
  var roomProvider = objectManager.getObject(_objectManager.FcrUIObjectKeys.P_ROOM_PROVIDER);
507
529
  roomProvider.addObserver(this._roomObserver);
530
+ if ((0, _env.isElectron)()) {
531
+ var windowProvider = objectManager.getObject(_objectManager.FcrUIObjectKeys.P_WINDOW_PROVIDER);
532
+ windowProvider.addObserver(this._windowObserver);
533
+ }
508
534
  this._runSettingConfig();
509
535
  }
510
536
  }, {
511
537
  key: "onNodeWillInactive",
512
538
  value: function onNodeWillInactive() {
513
539
  this._closeDialogs();
514
- var roomProvider = this.objectManager.getObject(_objectManager.FcrUIObjectKeys.P_ROOM_PROVIDER);
540
+ var objectManager = this.objectManager;
541
+ var roomProvider = objectManager.getObject(_objectManager.FcrUIObjectKeys.P_ROOM_PROVIDER);
515
542
  roomProvider.removeObserver(this._roomObserver);
543
+ if ((0, _env.isElectron)()) {
544
+ var windowProvider = objectManager.getObject(_objectManager.FcrUIObjectKeys.P_WINDOW_PROVIDER);
545
+ windowProvider.removeObserver(this._windowObserver);
546
+ }
516
547
  }
517
548
  }, {
518
549
  key: "_runSettingConfig",
@@ -48,7 +48,7 @@ var generateLogObserver = exports.generateLogObserver = function generateLogObse
48
48
  return observer;
49
49
  };
50
50
  window.addEventListener('error', function (e) {
51
- getLogger().error('window error event:', JSON.stringify(e));
51
+ getLogger().error('window error event:', JSON.stringify(e), e.error, e.message, e.lineno, e.colno, e.filename);
52
52
  });
53
53
  window.addEventListener('unhandledrejection', function (e) {
54
54
  getLogger().error('window unhandledrejection event:', e.reason);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fcr-ui-scene",
3
- "version": "3.7.7",
3
+ "version": "3.7.8-rc.2",
4
4
  "main": "lib/index.js",
5
5
  "repository": "ssh://git@git.agoralab.co/aduc/fcr-ui-scene-desktop.git",
6
6
  "author": "agora.io",
@@ -22,13 +22,13 @@
22
22
  "@react-spring/web": "^9.7.3",
23
23
  "@use-gesture/react": "^10.3.1",
24
24
  "agora-electron-sdk": "4.3.2-build.156-rc.1",
25
- "agora-foundation": "~3.7.7",
26
- "agora-ui-foundation": "~3.7.7",
25
+ "agora-foundation": "~3.7.8-rc.2",
26
+ "agora-ui-foundation": "~3.7.8-rc.2",
27
27
  "classnames": "^2.5.1",
28
28
  "core-js": "^3.33.3",
29
29
  "dayjs": "^1.10.4",
30
30
  "electron-screenshots": "^0.5.26",
31
- "fcr-core": "~3.7.7",
31
+ "fcr-core": "~3.7.8-rc.2",
32
32
  "js-md5": "^0.8.3",
33
33
  "jszip": "^3.10.1",
34
34
  "lodash": "^4.17.21",
@@ -59,7 +59,7 @@
59
59
  "@types/react-dom": "^17.0.11",
60
60
  "@types/react-virtualized": "^9.21.30",
61
61
  "@types/tinycolor2": "^1.4.6",
62
- "agora-toolchain": "~3.7.7",
62
+ "agora-toolchain": "~3.7.8-rc.2",
63
63
  "core-js": "^3.33.3",
64
64
  "electron": "22.3.27",
65
65
  "husky": "^9.0.11",