fcr-ui-scene 3.7.7 → 3.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/installer/icons/icon.png +0 -0
- package/installer/mac/entitlements.mac.plist +5 -1
- package/lib/creator/provider-initializer.browser.js +2 -2
- package/lib/creator/provider-initializer.electron.js +2 -2
- package/lib/electron/bootstrap-sdk.js +70 -33
- package/lib/electron/hang-detection/index.d.ts +3 -0
- package/lib/electron/hang-detection/index.js +15 -0
- package/lib/electron/hang-detection/manager.d.ts +28 -0
- package/lib/electron/hang-detection/manager.js +231 -0
- package/lib/electron/hang-detection/types.d.ts +14 -0
- package/lib/electron/hang-detection/types.js +6 -0
- package/lib/electron/until.d.ts +1 -4
- package/lib/electron/until.js +9 -4
- package/lib/modules/action-bar/components/screen-share/index.electron.js +1 -1
- package/lib/modules/action-bar/index.d.ts +0 -2
- package/lib/modules/action-bar/index.js +1 -2
- package/lib/modules/action-bar/store.d.ts +3 -6
- package/lib/modules/action-bar/store.js +96 -53
- package/lib/modules/annotation/store.js +10 -9
- package/lib/modules/components/control-bar/components/switch-theme/index.js +4 -2
- package/lib/modules/components/control-bar/index.js +1 -3
- package/lib/modules/event-confirm/components/window/index.d.ts +2 -5
- package/lib/modules/event-confirm/components/window/index.js +14 -38
- package/lib/modules/event-confirm/store.d.ts +5 -10
- package/lib/modules/event-confirm/store.js +13 -62
- package/lib/modules/event-confirm/view.js +7 -9
- package/lib/modules/layout/store.js +22 -8
- package/lib/modules/participant/store.base.js +0 -1
- package/lib/modules/participant/store.js +12 -14
- package/lib/modules/share-screen/store.d.ts +1 -1
- package/lib/modules/share-screen/store.electron.js +9 -0
- package/lib/modules/share-screen/store.js +4 -14
- package/lib/modules/state-bar/store.base.electron.js +6 -2
- package/lib/providers/board-share/bar-control/base.d.ts +2 -0
- package/lib/providers/board-share/bar-control/base.js +13 -3
- package/lib/providers/board-share/bar-control/electron.d.ts +1 -0
- package/lib/providers/board-share/bar-control/electron.js +15 -4
- package/lib/providers/board-share/provider.base.d.ts +1 -0
- package/lib/providers/board-share/provider.base.js +3 -1
- package/lib/providers/board-share/provider.electron.d.ts +1 -0
- package/lib/providers/board-share/provider.electron.js +8 -2
- package/lib/providers/board-share/type.d.ts +2 -0
- package/lib/providers/dialog/provider.electron.js +10 -2
- package/lib/providers/screen-share/strategy/browser.js +50 -3
- package/lib/providers/screen-share/strategy/electron.js +77 -8
- package/lib/providers/screen-share/stream-state-sync.d.ts +3 -1
- package/lib/providers/screen-share/stream-state-sync.js +133 -40
- package/lib/providers/screen-share-provider.d.ts +7 -8
- package/lib/providers/screen-share-provider.js +70 -85
- package/lib/providers/sharing-provider.js +0 -7
- package/lib/providers/whiteboard-provider.js +0 -1
- package/lib/shared-data-source/confirm-data.d.ts +0 -19
- package/lib/shared-data-source/confirm-data.js +15 -119
- package/lib/shared-data-source/screen-share-data.d.ts +17 -10
- package/lib/shared-data-source/screen-share-data.js +16 -9
- package/lib/shared-data-source/whiteboard-data.d.ts +5 -7
- package/lib/shared-data-source/whiteboard-data.js +8 -9
- package/package.json +5 -5
|
@@ -142,12 +142,14 @@ export interface FcrUIBoardBarControl {
|
|
|
142
142
|
get toolbarState(): FcrToolbarState;
|
|
143
143
|
release(): void;
|
|
144
144
|
setSharingUser: (userInfo: FcrUserInfo) => void;
|
|
145
|
+
updateSubProcessBackgroundColor: (color: string) => void;
|
|
145
146
|
setBackgroundColor: (color: string) => void;
|
|
146
147
|
setWhiteboardTool: (tool: {
|
|
147
148
|
action: WhiteboardToolAction;
|
|
148
149
|
tool: FcrBoardToolType | FcrBoardShape | string | number;
|
|
149
150
|
}) => void;
|
|
150
151
|
setTheme: (theme: WhiteboardThemeType) => void;
|
|
152
|
+
setCurrentTheme: (theme: Required<WhiteboardThemeType>) => void;
|
|
151
153
|
setControlEnable: (enable: boolean) => void;
|
|
152
154
|
setShowLoading: (show: boolean) => void;
|
|
153
155
|
setCommonColors: (colors: string[]) => void;
|
|
@@ -48,6 +48,7 @@ require("core-js/modules/es.string.includes.js");
|
|
|
48
48
|
require("core-js/modules/esnext.iterator.constructor.js");
|
|
49
49
|
require("core-js/modules/esnext.iterator.find.js");
|
|
50
50
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
51
|
+
require("core-js/modules/web.timers.js");
|
|
51
52
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
52
53
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
53
54
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -221,6 +222,7 @@ var FcrUIElectronDialogProviderImpl = exports.FcrUIElectronDialogProviderImpl =
|
|
|
221
222
|
}
|
|
222
223
|
},
|
|
223
224
|
onClosed: function onClosed() {
|
|
225
|
+
_this2.logger.warn("dialog provider openWithKeyAndId onClosed dialogKey: ".concat(dialogKey, " dialogId: ").concat(dialogId));
|
|
224
226
|
window.removeObserver(windowObserver);
|
|
225
227
|
_this2.dialogKeyMap["delete"](dialogKey);
|
|
226
228
|
_this2.dialogIdMap["delete"](dialogId);
|
|
@@ -241,9 +243,15 @@ var FcrUIElectronDialogProviderImpl = exports.FcrUIElectronDialogProviderImpl =
|
|
|
241
243
|
window.addObserver(windowObserver);
|
|
242
244
|
window.setPreventClose(true);
|
|
243
245
|
window.show(showOptions);
|
|
244
|
-
if (params
|
|
246
|
+
if (params && params.alwaysOnTop) {
|
|
245
247
|
window.setAlwaysOnTop(true, 'pop-up-menu');
|
|
246
248
|
}
|
|
249
|
+
setTimeout(function () {
|
|
250
|
+
_this2.logger.warn("dialog provider openWithKeyAndId setTimeout dialogKey: ".concat(dialogKey, " dialogId: ").concat(dialogId, ",title: ").concat(window.getTitle(), ",isVisible: ").concat(window.isVisible(), ",showOptions: ").concat((0, _imports.jsonstring)(showOptions)));
|
|
251
|
+
if (!window.isVisible() && _this2.dialogKeyMap.has(dialogKey) && _this2.dialogIdMap.has(dialogId)) {
|
|
252
|
+
window.show(showOptions);
|
|
253
|
+
}
|
|
254
|
+
}, 1000);
|
|
247
255
|
this.observable.notifyObservers('onDialogOpen', dialogKey, dialogId, params);
|
|
248
256
|
}
|
|
249
257
|
}, {
|
|
@@ -263,7 +271,7 @@ var FcrUIElectronDialogProviderImpl = exports.FcrUIElectronDialogProviderImpl =
|
|
|
263
271
|
}]);
|
|
264
272
|
}(_provider.FcrUIDialogProviderBase);
|
|
265
273
|
_FcrUIElectronDialogProviderImpl = FcrUIElectronDialogProviderImpl;
|
|
266
|
-
var _applyDecs$e = _applyDecs(_FcrUIElectronDialogProviderImpl, [[_decorator.trace, 2, "openDialog"], [_decorator.trace, 2, "openDialogWithId"], [_decorator.trace, 2, "closeDialog"], [_decorator.trace, 2, "closeDialogById"], [_decorator.trace, 2, "setSharingDisplayBounds"]], [], 0, void 0, _provider.FcrUIDialogProviderBase).e;
|
|
274
|
+
var _applyDecs$e = _applyDecs(_FcrUIElectronDialogProviderImpl, [[_decorator.trace, 2, "openDialog"], [_decorator.trace, 2, "openDialogWithId"], [_decorator.trace, 2, "closeDialog"], [_decorator.trace, 2, "closeDialogById"], [_decorator.trace, 2, "openWithKeyAndId"], [_decorator.trace, 2, "setSharingDisplayBounds"]], [], 0, void 0, _provider.FcrUIDialogProviderBase).e;
|
|
267
275
|
var _applyDecs$e2 = (0, _slicedToArray2["default"])(_applyDecs$e, 1);
|
|
268
276
|
_initProto = _applyDecs$e2[0];
|
|
269
277
|
_applyDecs$e;
|
|
@@ -1,8 +1,40 @@
|
|
|
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");
|
|
4
17
|
require("core-js/modules/es.reflect.construct.js");
|
|
18
|
+
require("core-js/modules/es.string.iterator.js");
|
|
19
|
+
require("core-js/modules/esnext.function.metadata.js");
|
|
20
|
+
require("core-js/modules/esnext.map.delete-all.js");
|
|
21
|
+
require("core-js/modules/esnext.map.emplace.js");
|
|
22
|
+
require("core-js/modules/esnext.map.every.js");
|
|
23
|
+
require("core-js/modules/esnext.map.filter.js");
|
|
24
|
+
require("core-js/modules/esnext.map.find.js");
|
|
25
|
+
require("core-js/modules/esnext.map.find-key.js");
|
|
26
|
+
require("core-js/modules/esnext.map.includes.js");
|
|
27
|
+
require("core-js/modules/esnext.map.key-of.js");
|
|
28
|
+
require("core-js/modules/esnext.map.map-keys.js");
|
|
29
|
+
require("core-js/modules/esnext.map.map-values.js");
|
|
30
|
+
require("core-js/modules/esnext.map.merge.js");
|
|
31
|
+
require("core-js/modules/esnext.map.reduce.js");
|
|
32
|
+
require("core-js/modules/esnext.map.some.js");
|
|
33
|
+
require("core-js/modules/esnext.map.update.js");
|
|
34
|
+
require("core-js/modules/esnext.symbol.metadata.js");
|
|
35
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
5
36
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
37
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
38
|
Object.defineProperty(exports, "__esModule", {
|
|
7
39
|
value: true
|
|
8
40
|
});
|
|
@@ -12,6 +44,7 @@ require("core-js/modules/es.error.cause.js");
|
|
|
12
44
|
require("core-js/modules/es.error.to-string.js");
|
|
13
45
|
require("core-js/modules/es.object.to-string.js");
|
|
14
46
|
require("core-js/modules/es.promise.js");
|
|
47
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
48
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
16
49
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
50
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -25,16 +58,24 @@ var _type = require("./type");
|
|
|
25
58
|
var _objectManager2 = require("../../../object-manager");
|
|
26
59
|
var _type2 = require("fcr-core/lib/type");
|
|
27
60
|
var _defaultConfig = require("../../../utilities/default-config");
|
|
61
|
+
var _decorator = require("agora-foundation/lib/decorator");
|
|
62
|
+
var _FcrUIBrowserScreenShareStrategy;
|
|
63
|
+
var _initProto;
|
|
28
64
|
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)); }
|
|
29
65
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
66
|
+
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)]; } }; }
|
|
67
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
68
|
+
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); }
|
|
69
|
+
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; }
|
|
70
|
+
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; }
|
|
30
71
|
var FcrUIBrowserScreenShareStrategy = exports.FcrUIBrowserScreenShareStrategy = /*#__PURE__*/function (_FcrUIScreenShareStra) {
|
|
31
72
|
function FcrUIBrowserScreenShareStrategy(_objectManager) {
|
|
32
73
|
var _this;
|
|
33
74
|
(0, _classCallCheck2["default"])(this, FcrUIBrowserScreenShareStrategy);
|
|
34
75
|
_this = _callSuper(this, FcrUIBrowserScreenShareStrategy);
|
|
35
|
-
(0, _defineProperty2["default"])(_this, "logger", (0, _logger.createLogger)({
|
|
76
|
+
(0, _defineProperty2["default"])(_this, "logger", (_initProto(_this), (0, _logger.createLogger)({
|
|
36
77
|
prefix: 'BrowserScreenShareStrategy'
|
|
37
|
-
}));
|
|
78
|
+
})));
|
|
38
79
|
(0, _defineProperty2["default"])(_this, "_screenTrack", null);
|
|
39
80
|
(0, _defineProperty2["default"])(_this, "_loopbackDeviceId", 'default');
|
|
40
81
|
(0, _defineProperty2["default"])(_this, "_isReplacing", false);
|
|
@@ -60,6 +101,7 @@ var FcrUIBrowserScreenShareStrategy = exports.FcrUIBrowserScreenShareStrategy =
|
|
|
60
101
|
}
|
|
61
102
|
}
|
|
62
103
|
};
|
|
104
|
+
_this.addObserver((0, _logger.generateLogObserver)(_this.logger, ['onScreenCaptureError', 'onScreenCaptureReplaced', 'onScreenCaptureStarted', 'onScreenCaptureStopped']));
|
|
63
105
|
return _this;
|
|
64
106
|
}
|
|
65
107
|
(0, _inherits2["default"])(FcrUIBrowserScreenShareStrategy, _FcrUIScreenShareStra);
|
|
@@ -263,4 +305,9 @@ var FcrUIBrowserScreenShareStrategy = exports.FcrUIBrowserScreenShareStrategy =
|
|
|
263
305
|
return _stopTrackAndWaitUntilSuccess;
|
|
264
306
|
}()
|
|
265
307
|
}]);
|
|
266
|
-
}(_type.FcrUIScreenShareStrategy);
|
|
308
|
+
}(_type.FcrUIScreenShareStrategy);
|
|
309
|
+
_FcrUIBrowserScreenShareStrategy = FcrUIBrowserScreenShareStrategy;
|
|
310
|
+
var _applyDecs$e = _applyDecs(_FcrUIBrowserScreenShareStrategy, [[_decorator.trace, 2, "startLoopbackCapture"], [_decorator.trace, 2, "stopLoopbackCapture"], [_decorator.trace, 2, "replaceScreenCaptureSource"], [_decorator.trace, 2, "startScreenCapture"], [_decorator.trace, 2, "stopScreenCapture"]], [], 0, void 0, _type.FcrUIScreenShareStrategy).e;
|
|
311
|
+
var _applyDecs$e2 = (0, _slicedToArray2["default"])(_applyDecs$e, 1);
|
|
312
|
+
_initProto = _applyDecs$e2[0];
|
|
313
|
+
_applyDecs$e;
|
|
@@ -1,8 +1,40 @@
|
|
|
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");
|
|
4
17
|
require("core-js/modules/es.reflect.construct.js");
|
|
18
|
+
require("core-js/modules/es.string.iterator.js");
|
|
19
|
+
require("core-js/modules/esnext.function.metadata.js");
|
|
20
|
+
require("core-js/modules/esnext.map.delete-all.js");
|
|
21
|
+
require("core-js/modules/esnext.map.emplace.js");
|
|
22
|
+
require("core-js/modules/esnext.map.every.js");
|
|
23
|
+
require("core-js/modules/esnext.map.filter.js");
|
|
24
|
+
require("core-js/modules/esnext.map.find.js");
|
|
25
|
+
require("core-js/modules/esnext.map.find-key.js");
|
|
26
|
+
require("core-js/modules/esnext.map.includes.js");
|
|
27
|
+
require("core-js/modules/esnext.map.key-of.js");
|
|
28
|
+
require("core-js/modules/esnext.map.map-keys.js");
|
|
29
|
+
require("core-js/modules/esnext.map.map-values.js");
|
|
30
|
+
require("core-js/modules/esnext.map.merge.js");
|
|
31
|
+
require("core-js/modules/esnext.map.reduce.js");
|
|
32
|
+
require("core-js/modules/esnext.map.some.js");
|
|
33
|
+
require("core-js/modules/esnext.map.update.js");
|
|
34
|
+
require("core-js/modules/esnext.symbol.metadata.js");
|
|
35
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
5
36
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
37
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
38
|
Object.defineProperty(exports, "__esModule", {
|
|
7
39
|
value: true
|
|
8
40
|
});
|
|
@@ -13,6 +45,7 @@ require("core-js/modules/es.error.to-string.js");
|
|
|
13
45
|
require("core-js/modules/es.array.concat.js");
|
|
14
46
|
require("core-js/modules/es.object.to-string.js");
|
|
15
47
|
require("core-js/modules/es.promise.js");
|
|
48
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
16
49
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
50
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
18
51
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -24,16 +57,24 @@ var _logger = require("../../../utilities/logger");
|
|
|
24
57
|
var _type = require("./type");
|
|
25
58
|
var _objectManager2 = require("../../../object-manager");
|
|
26
59
|
var _fcrCore = require("fcr-core");
|
|
60
|
+
var _decorator = require("agora-foundation/lib/decorator");
|
|
61
|
+
var _FcrUIElectronScreenShareStrategy;
|
|
62
|
+
var _initProto;
|
|
27
63
|
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)); }
|
|
28
64
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
65
|
+
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)]; } }; }
|
|
66
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
67
|
+
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); }
|
|
68
|
+
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; }
|
|
69
|
+
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; }
|
|
29
70
|
var FcrUIElectronScreenShareStrategy = exports.FcrUIElectronScreenShareStrategy = /*#__PURE__*/function (_FcrUIScreenShareStra) {
|
|
30
71
|
function FcrUIElectronScreenShareStrategy(_objectManager) {
|
|
31
72
|
var _this;
|
|
32
73
|
(0, _classCallCheck2["default"])(this, FcrUIElectronScreenShareStrategy);
|
|
33
74
|
_this = _callSuper(this, FcrUIElectronScreenShareStrategy);
|
|
34
|
-
(0, _defineProperty2["default"])(_this, "logger", (0, _logger.createLogger)({
|
|
75
|
+
(0, _defineProperty2["default"])(_this, "logger", (_initProto(_this), (0, _logger.createLogger)({
|
|
35
76
|
prefix: 'ElectronScreenShareStrategy'
|
|
36
|
-
}));
|
|
77
|
+
})));
|
|
37
78
|
(0, _defineProperty2["default"])(_this, "_screenTrack", null);
|
|
38
79
|
(0, _defineProperty2["default"])(_this, "_loopbackTrack", null);
|
|
39
80
|
(0, _defineProperty2["default"])(_this, "_isReplacing", false);
|
|
@@ -43,10 +84,16 @@ var FcrUIElectronScreenShareStrategy = exports.FcrUIElectronScreenShareStrategy
|
|
|
43
84
|
_this._screenTrackObserver = {
|
|
44
85
|
onScreenCaptureStateUpdated: function onScreenCaptureStateUpdated(sourceId, state) {
|
|
45
86
|
if (state === _fcrCore.FcrMediaSourceState.ERROR) {
|
|
87
|
+
if (_this._screenTrack) {
|
|
88
|
+
_this._screenTrack.removeObserver(_this._screenTrackObserver);
|
|
89
|
+
}
|
|
46
90
|
_this._screenTrack = null;
|
|
47
91
|
_this.observable.notifyObservers('onScreenCaptureError', sourceId, _type.FcrUIScreenShareCaptureError.UNKNOWN);
|
|
48
92
|
}
|
|
49
93
|
if (state === _fcrCore.FcrMediaSourceState.CLOSE) {
|
|
94
|
+
if (_this._screenTrack) {
|
|
95
|
+
_this._screenTrack.removeObserver(_this._screenTrackObserver);
|
|
96
|
+
}
|
|
50
97
|
_this._screenTrack = null;
|
|
51
98
|
if (!_this._isReplacing) {
|
|
52
99
|
_this.observable.notifyObservers('onScreenCaptureStopped', sourceId);
|
|
@@ -62,6 +109,7 @@ var FcrUIElectronScreenShareStrategy = exports.FcrUIElectronScreenShareStrategy
|
|
|
62
109
|
}
|
|
63
110
|
}
|
|
64
111
|
};
|
|
112
|
+
_this.addObserver((0, _logger.generateLogObserver)(_this.logger, ['onScreenCaptureError', 'onScreenCaptureReplaced', 'onScreenCaptureStarted', 'onScreenCaptureStopped']));
|
|
65
113
|
return _this;
|
|
66
114
|
}
|
|
67
115
|
(0, _inherits2["default"])(FcrUIElectronScreenShareStrategy, _FcrUIScreenShareStra);
|
|
@@ -214,6 +262,13 @@ var FcrUIElectronScreenShareStrategy = exports.FcrUIElectronScreenShareStrategy
|
|
|
214
262
|
frameRate = _args4.length > 4 ? _args4[4] : undefined;
|
|
215
263
|
bitrate = _args4.length > 5 ? _args4[5] : undefined;
|
|
216
264
|
this._screenTrack = screenTrack;
|
|
265
|
+
if (!(screenTrack.getState() === _fcrCore.FcrMediaSourceState.OPEN)) {
|
|
266
|
+
_context4.next = 1;
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
this.logger.info('the screen track is already started');
|
|
270
|
+
return _context4.abrupt("return");
|
|
271
|
+
case 1:
|
|
217
272
|
p = new Promise(function (resolve, reject) {
|
|
218
273
|
var waitObserver = {
|
|
219
274
|
onScreenCaptureStateUpdated: function onScreenCaptureStateUpdated(sourceId, state) {
|
|
@@ -239,9 +294,9 @@ var FcrUIElectronScreenShareStrategy = exports.FcrUIElectronScreenShareStrategy
|
|
|
239
294
|
bitrate: bitrate
|
|
240
295
|
});
|
|
241
296
|
screenTrack.start(captureType, excludeWindows);
|
|
242
|
-
_context4.next =
|
|
297
|
+
_context4.next = 2;
|
|
243
298
|
return p;
|
|
244
|
-
case
|
|
299
|
+
case 2:
|
|
245
300
|
case "end":
|
|
246
301
|
return _context4.stop();
|
|
247
302
|
}
|
|
@@ -261,6 +316,15 @@ var FcrUIElectronScreenShareStrategy = exports.FcrUIElectronScreenShareStrategy
|
|
|
261
316
|
return _regenerator["default"].wrap(function (_context5) {
|
|
262
317
|
while (1) switch (_context5.prev = _context5.next) {
|
|
263
318
|
case 0:
|
|
319
|
+
if (!(screenTrack.getState() === _fcrCore.FcrMediaSourceState.CLOSE)) {
|
|
320
|
+
_context5.next = 1;
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
this.logger.info('the screen track is already stopped');
|
|
324
|
+
screenTrack.removeObserver(this._screenTrackObserver);
|
|
325
|
+
this._screenTrack = null;
|
|
326
|
+
return _context5.abrupt("return");
|
|
327
|
+
case 1:
|
|
264
328
|
p = new Promise(function (resolve) {
|
|
265
329
|
var waitObserver = {
|
|
266
330
|
onScreenCaptureStateUpdated: function onScreenCaptureStateUpdated(sourceId, state) {
|
|
@@ -274,12 +338,12 @@ var FcrUIElectronScreenShareStrategy = exports.FcrUIElectronScreenShareStrategy
|
|
|
274
338
|
screenTrack.addObserver(waitObserver);
|
|
275
339
|
});
|
|
276
340
|
screenTrack.stop();
|
|
277
|
-
_context5.next =
|
|
341
|
+
_context5.next = 2;
|
|
278
342
|
return p;
|
|
279
|
-
case
|
|
343
|
+
case 2:
|
|
280
344
|
screenTrack.removeObserver(this._screenTrackObserver);
|
|
281
345
|
this._screenTrack = null;
|
|
282
|
-
case
|
|
346
|
+
case 3:
|
|
283
347
|
case "end":
|
|
284
348
|
return _context5.stop();
|
|
285
349
|
}
|
|
@@ -291,4 +355,9 @@ var FcrUIElectronScreenShareStrategy = exports.FcrUIElectronScreenShareStrategy
|
|
|
291
355
|
return _stopTrackAndWaitUntilSuccess;
|
|
292
356
|
}()
|
|
293
357
|
}]);
|
|
294
|
-
}(_type.FcrUIScreenShareStrategy);
|
|
358
|
+
}(_type.FcrUIScreenShareStrategy);
|
|
359
|
+
_FcrUIElectronScreenShareStrategy = FcrUIElectronScreenShareStrategy;
|
|
360
|
+
var _applyDecs$e = _applyDecs(_FcrUIElectronScreenShareStrategy, [[_decorator.trace, 2, "startScreenCapture"], [_decorator.trace, 2, "stopScreenCapture"], [_decorator.trace, 2, "startLoopbackCapture"], [_decorator.trace, 2, "stopLoopbackCapture"], [_decorator.trace, 2, "replaceScreenCaptureSource"]], [], 0, void 0, _type.FcrUIScreenShareStrategy).e;
|
|
361
|
+
var _applyDecs$e2 = (0, _slicedToArray2["default"])(_applyDecs$e, 1);
|
|
362
|
+
_initProto = _applyDecs$e2[0];
|
|
363
|
+
_applyDecs$e;
|
|
@@ -4,13 +4,15 @@ import { FcrVideoEncoderConfig } from 'fcr-core/lib/type';
|
|
|
4
4
|
import { FcrUIScreenStreamUpdateParams } from './type';
|
|
5
5
|
export declare class FcrUIScreenStreamSync implements FcrUIManagedObject {
|
|
6
6
|
protected logger: import("agora-foundation/lib/logger").Logger;
|
|
7
|
+
private _videoWindowDataSource;
|
|
7
8
|
private _myCurrentScreenShareStreamId;
|
|
8
9
|
private _sharingControl;
|
|
9
10
|
private _streamControl;
|
|
10
11
|
private _released;
|
|
12
|
+
private _isStopped;
|
|
11
13
|
constructor(objectManager: FcrUIObjectManager);
|
|
12
14
|
release(): void;
|
|
13
|
-
checkIfMyScreenShareStreamExists():
|
|
15
|
+
checkIfMyScreenShareStreamExists(): boolean;
|
|
14
16
|
startScreenStream(createConfig: FcrScreenStreamCreateConfig, encoderConfig: FcrVideoEncoderConfig): Promise<void>;
|
|
15
17
|
stopScreenStream(): Promise<void>;
|
|
16
18
|
updateStream({ videoSourceId, audioPublishPrivilege, videoPublishPrivilege, }: FcrUIScreenStreamUpdateParams): Promise<void>;
|
|
@@ -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
|
-
|
|
80
|
-
_context.
|
|
125
|
+
this._isStopped = false;
|
|
126
|
+
_context.prev = 2;
|
|
127
|
+
_context.next = 3;
|
|
81
128
|
return this._sharingControl.startScreenSharing(createConfig, encoderConfig.dimensions);
|
|
82
|
-
case
|
|
129
|
+
case 3:
|
|
83
130
|
screenStreamId = _context.sent;
|
|
84
131
|
this._streamControl.setVideoEncoderConfig(screenStreamId, encoderConfig, _type.FcrVideoStreamType.HIGH_STREAM);
|
|
85
|
-
_context.next =
|
|
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, [[
|
|
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 =
|
|
175
|
+
_context2.next = 12;
|
|
119
176
|
break;
|
|
120
177
|
}
|
|
121
178
|
if (!this._released) {
|
|
122
|
-
_context2.next =
|
|
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
|
-
|
|
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 =
|
|
193
|
+
_context2.next = 8;
|
|
137
194
|
break;
|
|
138
195
|
}
|
|
139
|
-
this.logger.error("the screen share stream does not exist
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
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",
|
|
224
|
+
return _context2.abrupt("continue", 12);
|
|
154
225
|
case 7:
|
|
155
|
-
|
|
226
|
+
screenStream = screenVideoWindowData.getVideoStream();
|
|
227
|
+
if (screenStream) {
|
|
228
|
+
this._videoWindowDataSource["delete"](screenStream);
|
|
229
|
+
}
|
|
230
|
+
return _context2.abrupt("continue", 12);
|
|
156
231
|
case 8:
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
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, [[
|
|
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;
|