@techsee/techsee-media-service 18.4.3 → 18.5.1
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/lib/MediaUtils/Compatibility.d.ts +2 -0
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +160 -2
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +1 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js +13 -6
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +1 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js +32 -25
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,8 +7,10 @@ declare global {
|
|
|
7
7
|
}
|
|
8
8
|
export declare const WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;
|
|
9
9
|
export declare const WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;
|
|
10
|
+
export declare const WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = 0;
|
|
10
11
|
export declare function waitForOpenTokIsLoaded(): Promise<void>;
|
|
11
12
|
export declare function enumerateMediaDevices(): Promise<MediaDeviceInfo[]>;
|
|
12
13
|
export declare function isVideoPlaySupportedOnDevice(mediaServiceType: MediaServiceType): Promise<boolean>;
|
|
13
14
|
export declare function onMediaElementResize(mediaElement: any, onResizeHandler: any): () => void;
|
|
14
15
|
export declare function registerWebRTCAdapters(): void;
|
|
16
|
+
export declare function waitAfterClearingFilter(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MediaUtils/Compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAInD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,EAAE,EAAE,GAAG,CAAC;QACR,QAAQ,EAAE,GAAG,CAAC;KACjB;CACJ;AAgBD,eAAO,MAAM,4CAA4C,KAAK,CAAC;AAC/D,eAAO,MAAM,wCAAwC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/MediaUtils/Compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAInD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,EAAE,EAAE,GAAG,CAAC;QACR,QAAQ,EAAE,GAAG,CAAC;KACjB;CACJ;AAgBD,eAAO,MAAM,4CAA4C,KAAK,CAAC;AAC/D,eAAO,MAAM,wCAAwC,MAAM,CAAC;AAI5D,eAAO,MAAM,+CAA+C,IAAI,CAAC;AAUjE,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBtD;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAUlE;AAED,wBAAgB,4BAA4B,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBjG;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,GAAG,MAAM,IAAI,CA0CxF;AAED,wBAAgB,sBAAsB,SAQrC;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7D","file":"Compatibility.d.ts","sourcesContent":["import {MediaServiceType} from '../MediaConstants';\n\ndeclare const require: any;\n\ndeclare global {\n interface Window {\n OT: any;\n OTPlugin: any;\n }\n}\nimport isEqual from 'lodash/isEqual';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {getMediaTracer} from './MediaTracer';\n\nconst trace = getMediaTracer('Compatibility');\n\nconst environmentDetect = new TsEnvironmentDetect();\nconst isIE11 = environmentDetect.isIE11();\nconst monitoredIeElements = new Map();\n\n// Grace period to wait in the unlikely case that Opentok has not finished initializing,\n// and a session initialization was requested\nexport const WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;\nexport const WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;\n\n// switching camera while blur effect may cause video freeze for some devices (beta version)\n// this tiemout prevents event loop to stuck\nexport const WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = 0;\n\nfunction _isOTDefined(): boolean {\n try {\n return !!window.OT;\n } catch (e) {\n return false;\n }\n}\n\nexport function waitForOpenTokIsLoaded(): Promise<void> {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n\n let isDefined = false;\n\n return (Promise as any)\n .reduce(\n new Array(WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS),\n () => {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n\n return Promise.resolve();\n }\n\n return (Promise as any).delay(WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n },\n 0\n )\n .then(() => isDefined || Promise.reject(new Error('OT is undefined')));\n}\n\nexport function enumerateMediaDevices(): Promise<MediaDeviceInfo[]> {\n return new Promise((resolve, reject) => {\n if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {\n window.OT.getDevices((error: any, devices: any) => (error ? reject(error) : resolve(devices)));\n } else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n } else {\n reject(new Error('Enumerating media devices is not supported'));\n }\n });\n}\n\nexport function isVideoPlaySupportedOnDevice(mediaServiceType: MediaServiceType): Promise<boolean> {\n const isOpenTokService = mediaServiceType === MediaServiceType.OPENTOK;\n const isMediaServer = mediaServiceType === MediaServiceType.MEDIASERVER;\n\n if (!isIE11) {\n return Promise.resolve(true);\n }\n\n if (isOpenTokService) {\n return waitForOpenTokIsLoaded().then(\n () => window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled()\n );\n }\n\n if (isMediaServer) {\n return Promise.resolve(false);\n }\n\n if ((window as any).WebRTCAdapter) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n}\n\nexport function onMediaElementResize(mediaElement: any, onResizeHandler: any): () => void {\n let checkTimeoutPtr: any = null;\n const unsubscribeIE = () => {\n clearTimeout(checkTimeoutPtr);\n monitoredIeElements.delete(mediaElement);\n };\n\n if (!isIE11) {\n mediaElement.addEventListener('resize', onResizeHandler, false);\n } else {\n monitoredIeElements.set(mediaElement, {\n videoWidth: mediaElement.videoWidth,\n videoHeight: mediaElement.videoHeight\n });\n\n const checkElementSize = () => {\n const lastElementSize = monitoredIeElements.get(mediaElement);\n\n if (!lastElementSize) {\n unsubscribeIE();\n } else {\n const currentSize = {videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight};\n\n checkTimeoutPtr = setTimeout(checkElementSize, 500);\n if (!isEqual(currentSize, lastElementSize)) {\n monitoredIeElements.set(mediaElement, lastElementSize);\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n setTimeout(onResizeHandler);\n }\n }\n };\n\n checkElementSize();\n }\n\n return function () {\n if (!isIE11) {\n mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);\n } else {\n unsubscribeIE();\n }\n };\n}\n\nexport function registerWebRTCAdapters() {\n if (isIE11) {\n require('../webrtc-ie-shim.js');\n } else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {\n require('webrtc-adapter/dist/adapter_core'); // eslint-disable-line global-require\n } else {\n trace.warn('no WebRTC adapters loaded.');\n }\n}\n\nexport async function waitAfterClearingFilter(): Promise<void> {\n return (Promise as any).delay(WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT);\n}\n"]}
|
|
@@ -1,5 +1,148 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) {
|
|
5
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
6
|
+
resolve(value);
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) {
|
|
12
|
+
try {
|
|
13
|
+
step(generator.next(value));
|
|
14
|
+
} catch (e) {
|
|
15
|
+
reject(e);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function rejected(value) {
|
|
20
|
+
try {
|
|
21
|
+
step(generator["throw"](value));
|
|
22
|
+
} catch (e) {
|
|
23
|
+
reject(e);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function step(result) {
|
|
28
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
|
|
36
|
+
var _ = {
|
|
37
|
+
label: 0,
|
|
38
|
+
sent: function sent() {
|
|
39
|
+
if (t[0] & 1) throw t[1];
|
|
40
|
+
return t[1];
|
|
41
|
+
},
|
|
42
|
+
trys: [],
|
|
43
|
+
ops: []
|
|
44
|
+
},
|
|
45
|
+
f,
|
|
46
|
+
y,
|
|
47
|
+
t,
|
|
48
|
+
g;
|
|
49
|
+
return g = {
|
|
50
|
+
next: verb(0),
|
|
51
|
+
"throw": verb(1),
|
|
52
|
+
"return": verb(2)
|
|
53
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
|
|
54
|
+
return this;
|
|
55
|
+
}), g;
|
|
56
|
+
|
|
57
|
+
function verb(n) {
|
|
58
|
+
return function (v) {
|
|
59
|
+
return step([n, v]);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function step(op) {
|
|
64
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
65
|
+
|
|
66
|
+
while (_) {
|
|
67
|
+
try {
|
|
68
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
69
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
70
|
+
|
|
71
|
+
switch (op[0]) {
|
|
72
|
+
case 0:
|
|
73
|
+
case 1:
|
|
74
|
+
t = op;
|
|
75
|
+
break;
|
|
76
|
+
|
|
77
|
+
case 4:
|
|
78
|
+
_.label++;
|
|
79
|
+
return {
|
|
80
|
+
value: op[1],
|
|
81
|
+
done: false
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
case 5:
|
|
85
|
+
_.label++;
|
|
86
|
+
y = op[1];
|
|
87
|
+
op = [0];
|
|
88
|
+
continue;
|
|
89
|
+
|
|
90
|
+
case 7:
|
|
91
|
+
op = _.ops.pop();
|
|
92
|
+
|
|
93
|
+
_.trys.pop();
|
|
94
|
+
|
|
95
|
+
continue;
|
|
96
|
+
|
|
97
|
+
default:
|
|
98
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
99
|
+
_ = 0;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
104
|
+
_.label = op[1];
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
109
|
+
_.label = t[1];
|
|
110
|
+
t = op;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (t && _.label < t[2]) {
|
|
115
|
+
_.label = t[2];
|
|
116
|
+
|
|
117
|
+
_.ops.push(op);
|
|
118
|
+
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (t[2]) _.ops.pop();
|
|
123
|
+
|
|
124
|
+
_.trys.pop();
|
|
125
|
+
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
op = body.call(thisArg, _);
|
|
130
|
+
} catch (e) {
|
|
131
|
+
op = [6, e];
|
|
132
|
+
y = 0;
|
|
133
|
+
} finally {
|
|
134
|
+
f = t = 0;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (op[0] & 5) throw op[1];
|
|
139
|
+
return {
|
|
140
|
+
value: op[0] ? op[1] : void 0,
|
|
141
|
+
done: true
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
|
|
3
146
|
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
4
147
|
return mod && mod.__esModule ? mod : {
|
|
5
148
|
"default": mod
|
|
@@ -9,7 +152,7 @@ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
|
9
152
|
Object.defineProperty(exports, "__esModule", {
|
|
10
153
|
value: true
|
|
11
154
|
});
|
|
12
|
-
exports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;
|
|
155
|
+
exports.waitAfterClearingFilter = exports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;
|
|
13
156
|
|
|
14
157
|
var MediaConstants_1 = require("../MediaConstants");
|
|
15
158
|
|
|
@@ -28,7 +171,10 @@ var monitoredIeElements = new Map(); // Grace period to wait in the unlikely cas
|
|
|
28
171
|
// and a session initialization was requested
|
|
29
172
|
|
|
30
173
|
exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;
|
|
31
|
-
exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;
|
|
174
|
+
exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500; // switching camera while blur effect may cause video freeze for some devices (beta version)
|
|
175
|
+
// this tiemout prevents event loop to stuck
|
|
176
|
+
|
|
177
|
+
exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = 0;
|
|
32
178
|
|
|
33
179
|
function _isOTDefined() {
|
|
34
180
|
try {
|
|
@@ -163,4 +309,16 @@ function registerWebRTCAdapters() {
|
|
|
163
309
|
}
|
|
164
310
|
|
|
165
311
|
exports.registerWebRTCAdapters = registerWebRTCAdapters;
|
|
312
|
+
|
|
313
|
+
function waitAfterClearingFilter() {
|
|
314
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
315
|
+
return __generator(this, function (_a) {
|
|
316
|
+
return [2
|
|
317
|
+
/*return*/
|
|
318
|
+
, Promise.delay(exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT)];
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
exports.waitAfterClearingFilter = waitAfterClearingFilter;
|
|
166
324
|
//# sourceMappingURL=Compatibility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaUtils/Compatibility.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","registerWebRTCAdapters","onMediaElementResize","isVideoPlaySupportedOnDevice","enumerateMediaDevices","waitForOpenTokIsLoaded","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","MediaConstants_1","require","isEqual_1","ts_environment_detect_1","MediaTracer_1","trace","getMediaTracer","environmentDetect","TsEnvironmentDetect","isIE11","monitoredIeElements","Map","_isOTDefined","window","OT","e","Promise","resolve","isDefined","reduce","Array","delay","then","reject","Error","getDevices","error","devices","navigator","mediaDevices","enumerateDevices","mediaServiceType","isOpenTokService","MediaServiceType","OPENTOK","isMediaServer","MEDIASERVER","OTPlugin","isInstalled","WebRTCAdapter","mediaElement","onResizeHandler","checkTimeoutPtr","unsubscribeIE","clearTimeout","addEventListener","set","videoWidth","videoHeight","checkElementSize_1","lastElementSize","get","currentSize","setTimeout","removeEventListener","isChrome","majorVersion","warn"],"mappings":"AAAA;;AACA,IAAIA,eAAe,GAAI,UAAQ,SAAKA,eAAd,IAAkC,UAAUC,GAAV,EAAe;EACnE,OAAQA,GAAG,IAAIA,GAAG,CAACC,UAAZ,GAA0BD,GAA1B,GAAgC;IAAE,WAAWA;EAAb,CAAvC;AACH,CAFD;;AAGAE,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;EAAEC,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,sBAAR,GAAiCF,OAAO,CAACG,oBAAR,GAA+BH,OAAO,CAACI,4BAAR,GAAuCJ,OAAO,CAACK,qBAAR,GAAgCL,OAAO,CAACM,sBAAR,GAAiCN,OAAO,CAACO,wCAAR,GAAmDP,OAAO,CAACQ,4CAAR,GAAuD,KAAK,CAAvR;;AACA,IAAIC,gBAAgB,GAAGC,OAAO,CAAC,mBAAD,CAA9B;;AACA,IAAIC,SAAS,GAAGhB,eAAe,CAACe,OAAO,CAAC,gBAAD,CAAR,CAA/B,C,CACA;AACA;;;AACA,IAAIE,uBAAuB,GAAGF,OAAO,CAAC,2DAAD,CAArC;;AACA,IAAIG,aAAa,GAAGH,OAAO,CAAC,eAAD,CAA3B;;AACA,IAAII,KAAK,GAAGD,aAAa,CAACE,cAAd,CAA6B,eAA7B,CAAZ;AACA,IAAIC,iBAAiB,GAAG,IAAIJ,uBAAuB,CAACK,mBAA5B,EAAxB;AACA,IAAIC,MAAM,GAAGF,iBAAiB,CAACE,MAAlB,EAAb;AACA,IAAIC,mBAAmB,GAAG,IAAIC,GAAJ,EAA1B,C,CACA;AACA;;AACApB,OAAO,CAACQ,4CAAR,GAAuD,EAAvD;AACAR,OAAO,CAACO,wCAAR,GAAmD,GAAnD;;AACA,SAASc,YAAT,GAAwB;EACpB,IAAI;IACA,OAAO,CAAC,CAACC,MAAM,CAACC,EAAhB;EACH,CAFD,CAGA,OAAOC,CAAP,EAAU;IACN,OAAO,KAAP;EACH;AACJ;;AACD,SAASlB,sBAAT,GAAkC;EAC9B,IAAIe,YAAY,EAAhB,EAAoB;IAChB,OAAOI,OAAO,CAACC,OAAR,EAAP;EACH;;EACD,IAAIC,SAAS,GAAG,KAAhB;EACA,OAAOF,OAAO,CACTG,MADE,CACK,IAAIC,KAAJ,CAAU7B,OAAO,CAACQ,4CAAlB,CADL,EACsE,YAAY;IACrF,IAAImB,SAAS,IAAIN,YAAY,EAA7B,EAAiC;MAC7BM,SAAS,GAAG,IAAZ;MACA,OAAOF,OAAO,CAACC,OAAR,EAAP;IACH;;IACD,OAAOD,OAAO,CAACK,KAAR,CAAc9B,OAAO,CAACO,wCAAtB,CAAP;EACH,CAPM,EAOJ,CAPI,EAQFwB,IARE,CAQG,YAAY;IAAE,OAAOJ,SAAS,IAAIF,OAAO,CAACO,MAAR,CAAe,IAAIC,KAAJ,CAAU,iBAAV,CAAf,CAApB;EAAmE,CARpF,CAAP;AASH;;AACDjC,OAAO,CAACM,sBAAR,GAAiCA,sBAAjC;;AACA,SAASD,qBAAT,GAAiC;EAC7B,OAAO,IAAIoB,OAAJ,CAAY,UAAUC,OAAV,EAAmBM,MAAnB,EAA2B;IAC1C,IAAI,OAAOV,MAAM,CAACC,EAAd,KAAqB,WAArB,IAAoCD,MAAM,CAACC,EAA3C,IAAiDD,MAAM,CAACC,EAAP,CAAUW,UAA/D,EAA2E;MACvEZ,MAAM,CAACC,EAAP,CAAUW,UAAV,CAAqB,UAAUC,KAAV,EAAiBC,OAAjB,EAA0B;QAAE,OAAQD,KAAK,GAAGH,MAAM,CAACG,KAAD,CAAT,GAAmBT,OAAO,CAACU,OAAD,CAAvC;MAAoD,CAArG;IACH,CAFD,MAGK,IAAIC,SAAS,CAACC,YAAV,IAA0BD,SAAS,CAACC,YAAV,CAAuBC,gBAArD,EAAuE;MACxEF,SAAS,CAACC,YAAV,CAAuBC,gBAAvB,GAA0CR,IAA1C,CAA+CL,OAA/C,WAA8DM,MAA9D;IACH,CAFI,MAGA;MACDA,MAAM,CAAC,IAAIC,KAAJ,CAAU,4CAAV,CAAD,CAAN;IACH;EACJ,CAVM,CAAP;AAWH;;AACDjC,OAAO,CAACK,qBAAR,GAAgCA,qBAAhC;;AACA,SAASD,4BAAT,CAAsCoC,gBAAtC,EAAwD;EACpD,IAAIC,gBAAgB,GAAGD,gBAAgB,KAAK/B,gBAAgB,CAACiC,gBAAjB,CAAkCC,OAA9E;EACA,IAAIC,aAAa,GAAGJ,gBAAgB,KAAK/B,gBAAgB,CAACiC,gBAAjB,CAAkCG,WAA3E;;EACA,IAAI,CAAC3B,MAAL,EAAa;IACT,OAAOO,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAP;EACH;;EACD,IAAIe,gBAAJ,EAAsB;IAClB,OAAOnC,sBAAsB,GAAGyB,IAAzB,CAA8B,YAAY;MAAE,OAAOT,MAAM,CAACC,EAAP,IAAaD,MAAM,CAACwB,QAApB,IAAgCxB,MAAM,CAACwB,QAAP,CAAgBC,WAAhD,IAA+DzB,MAAM,CAACwB,QAAP,CAAgBC,WAAhB,EAAtE;IAAsG,CAAlJ,CAAP;EACH;;EACD,IAAIH,aAAJ,EAAmB;IACf,OAAOnB,OAAO,CAACC,OAAR,CAAgB,KAAhB,CAAP;EACH;;EACD,IAAIJ,MAAM,CAAC0B,aAAX,EAA0B;IACtB,OAAOvB,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAP;EACH;;EACD,OAAOD,OAAO,CAACC,OAAR,CAAgB,KAAhB,CAAP;AACH;;AACD1B,OAAO,CAACI,4BAAR,GAAuCA,4BAAvC;;AACA,SAASD,oBAAT,CAA8B8C,YAA9B,EAA4CC,eAA5C,EAA6D;EACzD,IAAIC,eAAe,GAAG,IAAtB;;EACA,IAAIC,aAAa,GAAG,SAAhBA,aAAgB,GAAY;IAC5BC,YAAY,CAACF,eAAD,CAAZ;IACAhC,mBAAmB,UAAnB,CAA2B8B,YAA3B;EACH,CAHD;;EAIA,IAAI,CAAC/B,MAAL,EAAa;IACT+B,YAAY,CAACK,gBAAb,CAA8B,QAA9B,EAAwCJ,eAAxC,EAAyD,KAAzD;EACH,CAFD,MAGK;IACD/B,mBAAmB,CAACoC,GAApB,CAAwBN,YAAxB,EAAsC;MAClCO,UAAU,EAAEP,YAAY,CAACO,UADS;MAElCC,WAAW,EAAER,YAAY,CAACQ;IAFQ,CAAtC;;IAIA,IAAIC,kBAAkB,GAAG,SAArBA,kBAAqB,GAAY;MACjC,IAAIC,eAAe,GAAGxC,mBAAmB,CAACyC,GAApB,CAAwBX,YAAxB,CAAtB;;MACA,IAAI,CAACU,eAAL,EAAsB;QAClBP,aAAa;MAChB,CAFD,MAGK;QACD,IAAIS,WAAW,GAAG;UAAEL,UAAU,EAAEP,YAAY,CAACO,UAA3B;UAAuCC,WAAW,EAAER,YAAY,CAACQ;QAAjE,CAAlB;QACAN,eAAe,GAAGW,UAAU,CAACJ,kBAAD,EAAqB,GAArB,CAA5B;;QACA,IAAI,CAAC/C,SAAS,WAAT,CAAkBkD,WAAlB,EAA+BF,eAA/B,CAAL,EAAsD;UAClDxC,mBAAmB,CAACoC,GAApB,CAAwBN,YAAxB,EAAsCU,eAAtC,EADkD,CAElD;;UACAG,UAAU,CAACZ,eAAD,CAAV;QACH;MACJ;IACJ,CAdD;;IAeAQ,kBAAkB;EACrB;;EACD,OAAO,YAAY;IACf,IAAI,CAACxC,MAAL,EAAa;MACT+B,YAAY,IAAIA,YAAY,CAACc,mBAAb,CAAiC,QAAjC,EAA2Cb,eAA3C,CAAhB;IACH,CAFD,MAGK;MACDE,aAAa;IAChB;EACJ,CAPD;AAQH;;AACDpD,OAAO,CAACG,oBAAR,GAA+BA,oBAA/B;;AACA,SAASD,sBAAT,GAAkC;EAC9B,IAAIgB,MAAJ,EAAY;IACRR,OAAO,CAAC,sBAAD,CAAP;EACH,CAFD,MAGK,IAAI,EAAEM,iBAAiB,CAACgD,QAAlB,MAAgChD,iBAAiB,CAACiD,YAAlB,KAAmC,EAArE,CAAJ,EAA8E;IAC/EvD,OAAO,CAAC,kCAAD,CAAP,CAD+E,CAClC;;EAChD,CAFI,MAGA;IACDI,KAAK,CAACoD,IAAN,CAAW,4BAAX;EACH;AACJ;;AACDlE,OAAO,CAACE,sBAAR,GAAiCA,sBAAjC","file":"Compatibility.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar isEqual_1 = __importDefault(require(\"lodash/isEqual\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('Compatibility');\nvar environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();\nvar isIE11 = environmentDetect.isIE11();\nvar monitoredIeElements = new Map();\n// Grace period to wait in the unlikely case that Opentok has not finished initializing,\n// and a session initialization was requested\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;\nfunction _isOTDefined() {\n try {\n return !!window.OT;\n }\n catch (e) {\n return false;\n }\n}\nfunction waitForOpenTokIsLoaded() {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n var isDefined = false;\n return Promise\n .reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n return Promise.resolve();\n }\n return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n }, 0)\n .then(function () { return isDefined || Promise.reject(new Error('OT is undefined')); });\n}\nexports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;\nfunction enumerateMediaDevices() {\n return new Promise(function (resolve, reject) {\n if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {\n window.OT.getDevices(function (error, devices) { return (error ? reject(error) : resolve(devices)); });\n }\n else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n else {\n reject(new Error('Enumerating media devices is not supported'));\n }\n });\n}\nexports.enumerateMediaDevices = enumerateMediaDevices;\nfunction isVideoPlaySupportedOnDevice(mediaServiceType) {\n var isOpenTokService = mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK;\n var isMediaServer = mediaServiceType === MediaConstants_1.MediaServiceType.MEDIASERVER;\n if (!isIE11) {\n return Promise.resolve(true);\n }\n if (isOpenTokService) {\n return waitForOpenTokIsLoaded().then(function () { return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled(); });\n }\n if (isMediaServer) {\n return Promise.resolve(false);\n }\n if (window.WebRTCAdapter) {\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n}\nexports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;\nfunction onMediaElementResize(mediaElement, onResizeHandler) {\n var checkTimeoutPtr = null;\n var unsubscribeIE = function () {\n clearTimeout(checkTimeoutPtr);\n monitoredIeElements.delete(mediaElement);\n };\n if (!isIE11) {\n mediaElement.addEventListener('resize', onResizeHandler, false);\n }\n else {\n monitoredIeElements.set(mediaElement, {\n videoWidth: mediaElement.videoWidth,\n videoHeight: mediaElement.videoHeight\n });\n var checkElementSize_1 = function () {\n var lastElementSize = monitoredIeElements.get(mediaElement);\n if (!lastElementSize) {\n unsubscribeIE();\n }\n else {\n var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };\n checkTimeoutPtr = setTimeout(checkElementSize_1, 500);\n if (!isEqual_1.default(currentSize, lastElementSize)) {\n monitoredIeElements.set(mediaElement, lastElementSize);\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n setTimeout(onResizeHandler);\n }\n }\n };\n checkElementSize_1();\n }\n return function () {\n if (!isIE11) {\n mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);\n }\n else {\n unsubscribeIE();\n }\n };\n}\nexports.onMediaElementResize = onMediaElementResize;\nfunction registerWebRTCAdapters() {\n if (isIE11) {\n require('../webrtc-ie-shim.js');\n }\n else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {\n require('webrtc-adapter/dist/adapter_core'); // eslint-disable-line global-require\n }\n else {\n trace.warn('no WebRTC adapters loaded.');\n }\n}\nexports.registerWebRTCAdapters = registerWebRTCAdapters;\n\n//# sourceMappingURL=Compatibility.js.map\n"]}
|
|
1
|
+
{"version":3,"sources":["MediaUtils/Compatibility.js"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__importDefault","mod","__esModule","Object","defineProperty","exports","waitAfterClearingFilter","registerWebRTCAdapters","onMediaElementResize","isVideoPlaySupportedOnDevice","enumerateMediaDevices","waitForOpenTokIsLoaded","WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","MediaConstants_1","require","isEqual_1","ts_environment_detect_1","MediaTracer_1","trace","getMediaTracer","environmentDetect","TsEnvironmentDetect","isIE11","monitoredIeElements","Map","_isOTDefined","window","OT","isDefined","reduce","Array","delay","Error","getDevices","error","devices","navigator","mediaDevices","enumerateDevices","mediaServiceType","isOpenTokService","MediaServiceType","OPENTOK","isMediaServer","MEDIASERVER","OTPlugin","isInstalled","WebRTCAdapter","mediaElement","onResizeHandler","checkTimeoutPtr","unsubscribeIE","clearTimeout","addEventListener","set","videoWidth","videoHeight","checkElementSize_1","lastElementSize","get","currentSize","setTimeout","removeEventListener","isChrome","majorVersion","warn","_a"],"mappings":"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","file":"Compatibility.js","sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.waitAfterClearingFilter = exports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar isEqual_1 = __importDefault(require(\"lodash/isEqual\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('Compatibility');\nvar environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();\nvar isIE11 = environmentDetect.isIE11();\nvar monitoredIeElements = new Map();\n// Grace period to wait in the unlikely case that Opentok has not finished initializing,\n// and a session initialization was requested\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;\n// switching camera while blur effect may cause video freeze for some devices (beta version)\n// this tiemout prevents event loop to stuck\nexports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = 0;\nfunction _isOTDefined() {\n try {\n return !!window.OT;\n }\n catch (e) {\n return false;\n }\n}\nfunction waitForOpenTokIsLoaded() {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n var isDefined = false;\n return Promise\n .reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n return Promise.resolve();\n }\n return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n }, 0)\n .then(function () { return isDefined || Promise.reject(new Error('OT is undefined')); });\n}\nexports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;\nfunction enumerateMediaDevices() {\n return new Promise(function (resolve, reject) {\n if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {\n window.OT.getDevices(function (error, devices) { return (error ? reject(error) : resolve(devices)); });\n }\n else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n else {\n reject(new Error('Enumerating media devices is not supported'));\n }\n });\n}\nexports.enumerateMediaDevices = enumerateMediaDevices;\nfunction isVideoPlaySupportedOnDevice(mediaServiceType) {\n var isOpenTokService = mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK;\n var isMediaServer = mediaServiceType === MediaConstants_1.MediaServiceType.MEDIASERVER;\n if (!isIE11) {\n return Promise.resolve(true);\n }\n if (isOpenTokService) {\n return waitForOpenTokIsLoaded().then(function () { return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled(); });\n }\n if (isMediaServer) {\n return Promise.resolve(false);\n }\n if (window.WebRTCAdapter) {\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n}\nexports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;\nfunction onMediaElementResize(mediaElement, onResizeHandler) {\n var checkTimeoutPtr = null;\n var unsubscribeIE = function () {\n clearTimeout(checkTimeoutPtr);\n monitoredIeElements.delete(mediaElement);\n };\n if (!isIE11) {\n mediaElement.addEventListener('resize', onResizeHandler, false);\n }\n else {\n monitoredIeElements.set(mediaElement, {\n videoWidth: mediaElement.videoWidth,\n videoHeight: mediaElement.videoHeight\n });\n var checkElementSize_1 = function () {\n var lastElementSize = monitoredIeElements.get(mediaElement);\n if (!lastElementSize) {\n unsubscribeIE();\n }\n else {\n var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };\n checkTimeoutPtr = setTimeout(checkElementSize_1, 500);\n if (!isEqual_1.default(currentSize, lastElementSize)) {\n monitoredIeElements.set(mediaElement, lastElementSize);\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n setTimeout(onResizeHandler);\n }\n }\n };\n checkElementSize_1();\n }\n return function () {\n if (!isIE11) {\n mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);\n }\n else {\n unsubscribeIE();\n }\n };\n}\nexports.onMediaElementResize = onMediaElementResize;\nfunction registerWebRTCAdapters() {\n if (isIE11) {\n require('../webrtc-ie-shim.js');\n }\n else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {\n require('webrtc-adapter/dist/adapter_core'); // eslint-disable-line global-require\n }\n else {\n trace.warn('no WebRTC adapters loaded.');\n }\n}\nexports.registerWebRTCAdapters = registerWebRTCAdapters;\nfunction waitAfterClearingFilter() {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.delay(exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT)];\n });\n });\n}\nexports.waitAfterClearingFilter = waitAfterClearingFilter;\n\n//# sourceMappingURL=Compatibility.js.map\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MultiParty/opentok/OpentokMultiPartyService.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AAGtD,OAAO,EAA4C,iBAAiB,EAAE,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAOlH,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAQpD,qBAAa,wBAAyB,SAAQ,iBAAiB;IAW/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAV7C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,oBAAoB,CAAkB;IAE9C,OAAO,CAAC,kBAAkB,CAA8B;IAExD,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,qBAAqB,CAAM;gBAEN,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,MAAM;IAIpG,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,IAAW,WAAW,IAAI,cAAc,EAAE,CAEzC;IAEM,qBAAqB,QAAS,MAAM,UAEzC;IAEK,OAAO,oBAAqB,eAAe,eAAe,WAAW,KAAG,IAAI,CAwCjF;IAEK,UAAU,QAAa,QAAQ,IAAI,CAAC,CAezC;IAEK,YAAY,iBAAkB,MAAM,iCAAsC,MAAM,GAAG,IAAI,CAkB5F;IAEF,OAAO,CAAC,6BAA6B,CAwBnC;IAEF,OAAO,CAAC,kBAAkB,CAqBxB;IAEK,wBAAwB,gEAAyD,QAAQ,OAAO,CAAC,CAgBtG;IAEF,OAAO,CAAC,sBAAsB,CAQ5B;IAEK,YAAY,eAAsB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAU9D;IAEK,YAAY,uBAA8B,OAAO,KAAG,QAAQ,IAAI,CAAC,CAUtE;IAEK,aAAa,QAAa,QAAQ,IAAI,CAAC,CAoC5C;IAEK,YAAY,QAAa,QAAQ,IAAI,CAAC,CAAwC;IAE9E,mBAAmB,aAAc,eAAe,KAAG,QAAQ,IAAI,EAAE,CAAC,CAqBvE;IAEF,OAAO,CAAC,oBAAoB,CAyC1B;IAEF,OAAO,CAAC,sBAAsB,CAgB5B;IAEF,OAAO,CAAC,wBAAwB,CAgB9B;IAEF,OAAO,CAAC,0BAA0B,CAkBhC;IAEF,OAAO,CAAC,4BAA4B,CAgBlC;IAEF,OAAO,CAAC,0BAA0B,CAGhC;IAEF,OAAO,CAAC,kBAAkB,CACsD;IAEzE,mBAAmB,IAAI,IAAI,GAAG,SAAS;CAGjD","file":"OpentokMultiPartyService.d.ts","sourcesContent":["import {getMediaTracer} from '../MediaTracer';\nimport {Credentials, SessionSettings} from '../types';\nimport {MediaCapabilitiesService} from '../MediaCapabilitiesService';\nimport {checkAudioCapabilities, checkIsMobile, checkVideoCapabilities} from '../MediaCapabilitiesUtils';\nimport {DEFAULT_AVATAR_URI, maxParticipantsNumber, MultiPartyService, SubscriberInfo} from '../MultiPartyService';\nimport {MultiPartyServiceEventTypes} from '../MultipartyServiceEventTypes';\nimport {OpentokVideoPublisher} from './OpentokVideoPublisher';\nimport {OpentokScreenPublisher} from './OpentokScreenPublisher';\nimport {createSubscriber} from './OpentokSubscriber';\nimport {decodeClientRole, isSameStream} from '../utils';\nimport {traceError} from './trace';\nimport {VideoTypesEnum} from '../../MediaConstants';\n\nconst trace = getMediaTracer('Multiparty');\n\ntype OpentokSubscriberInfo = SubscriberInfo & {\n subscriber: OT.Subscriber;\n};\n\nexport class OpentokMultiPartyService extends MultiPartyService {\n private videoPublisher?: OpentokVideoPublisher;\n private screenPublisher?: OpentokScreenPublisher;\n private enableDesktopSharing: boolean = false;\n\n private backgroundImageURI: string = DEFAULT_AVATAR_URI;\n\n private session?: OT.Session;\n private subscriberList: OpentokSubscriberInfo[] = [];\n private videoPublisherOptions: any;\n\n constructor(private readonly getParticipantId: (connectionId?: string, videoType?: string) => string) {\n super();\n }\n\n public get ownConnectionId(): string {\n return this.session?.connection?.connectionId || '';\n }\n\n public get subscribers(): SubscriberInfo[] {\n return [...this.subscriberList];\n }\n\n public setBackgroundImageURI = (uri: string) => {\n this.backgroundImageURI = uri || DEFAULT_AVATAR_URI;\n };\n\n public connect = (sessionSettings: SessionSettings, credentials: Credentials): void => {\n try {\n this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n\n this.session.on('connectionCreated', this.connectionCreatedHandler);\n this.session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this.session.on('streamCreated', this.streamCreatedHandler);\n this.session.on('streamDestroyed', this.streamDestroyedHandler);\n this.session.on('streamPropertyChanged', this.streamPropertyChangedHandler);\n this.session.on('sessionDisconnected', this.sessionDisconnectedHandler);\n\n //best practice\n this.prepareVideoPublisherSettings().then(() => {\n this.initVideoPublisher(sessionSettings);\n\n this?.session?.connect(credentials.token, (error?: any) => {\n if (error) {\n this.session?.off();\n this.session = undefined;\n traceError(error);\n\n this.emit(MultiPartyServiceEventTypes.connectFailed, {\n meta: {err: JSON.stringify(error)}\n });\n\n return;\n }\n if (this.videoPublisher) {\n this.session?.publish(this.videoPublisher.get(), traceError);\n }\n this.isScreenSharingSupported(sessionSettings.isScreenSharingCapabilitiesEnabled);\n });\n });\n } catch (err) {\n trace.error(JSON.stringify(err));\n\n this.emit(MultiPartyServiceEventTypes.connectFailed, {\n meta: {err: JSON.stringify(err)}\n });\n }\n };\n\n public disconnect = async (): Promise<void> => {\n try {\n if (this.videoPublisher?.getVideoFilter) {\n await this.videoPublisher?.clearVideoFilter();\n }\n\n trace.info('Disconnecting from session');\n\n if (this.session) {\n this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n public takeSnapshot = (connectionId: string, videoType = VideoTypesEnum.CAMERA): string | null => {\n if (!connectionId) {\n return null;\n }\n\n if (connectionId === this.ownConnectionId) {\n if (videoType === VideoTypesEnum.CAMERA) {\n return this.videoPublisher?.getImgData() || null;\n }\n\n return this.screenPublisher?.getImgData() || null;\n }\n\n return (\n this.subscribers\n .find((s) => s.connectionId === connectionId && s.videoType === videoType)\n ?.subscriber.getImgData() || null\n );\n };\n\n private prepareVideoPublisherSettings = async (): Promise<void> => {\n if (!this.session) {\n return;\n }\n\n const canStartWithAudio = await checkAudioCapabilities();\n const canStartWithVideo = await checkVideoCapabilities();\n const capabilitiesService = await MediaCapabilitiesService.getInstance();\n\n if (!canStartWithAudio && !canStartWithVideo) {\n throw new Error('Creating session requires initialized publisher');\n }\n\n const publisherOptions = {\n backgroundImageURI: this.backgroundImageURI,\n participantId: this.getParticipantId(this.ownConnectionId, VideoTypesEnum.CAMERA)\n };\n\n this.videoPublisherOptions = {\n publisherOptions: publisherOptions,\n canStartWithAudio: canStartWithAudio,\n canStartWithVideo: canStartWithVideo,\n capabilitiesService: capabilitiesService\n };\n };\n\n private initVideoPublisher = (settings: Readonly<SessionSettings>): void => {\n if (!(this.videoPublisherOptions?.canStartWithAudio && this.videoPublisherOptions?.canStartWithVideo)) {\n throw new Error('could not init publisher');\n }\n\n try {\n this.videoPublisher = new OpentokVideoPublisher(\n {\n ...settings.videoSettings,\n cameraEnabled: settings.videoSettings.cameraEnabled && this.videoPublisherOptions.canStartWithVideo,\n startWithAudioMuted:\n settings.videoSettings.startWithAudioMuted && this.videoPublisherOptions.canStartWithAudio\n },\n this.videoPublisherOptions.publisherOptions,\n this.videoPublisherOptions.capabilitiesService\n );\n\n this.forwardPublisherEvents(this.videoPublisher);\n } catch (error) {\n trace.error('could not init publisher');\n }\n };\n\n public isScreenSharingSupported = async (isScreenSharingCapabilitiesEnabled?: boolean): Promise<boolean> => {\n if (isScreenSharingCapabilitiesEnabled && !checkIsMobile()) {\n await OT.checkScreenSharingCapability((res) => {\n if (!res.supported || res.extensionRegistered === false) {\n // This browser does not support screen sharing.\n trace.error('no screen sharing support found');\n this.enableDesktopSharing = false;\n } else {\n this.enableDesktopSharing = true;\n }\n });\n } else {\n this.enableDesktopSharing = false;\n }\n\n return Promise.resolve(this.enableDesktopSharing);\n };\n\n private forwardPublisherEvents = (publisher: OpentokVideoPublisher | OpentokScreenPublisher) => {\n publisher.on('cameraSourceChanged', (e) => this.emit(MultiPartyServiceEventTypes.cameraSourceChanged, e));\n publisher.on('streamCreated', (e) => this.emit(MultiPartyServiceEventTypes.streamCreated, e));\n publisher.on('streamDestroyed', (e) => this.emit(MultiPartyServiceEventTypes.streamDestroyed, e));\n publisher.on('mediaDeviceAccessDenied', (e) =>\n this.emit(MultiPartyServiceEventTypes.mediaDeviceAccessDenied, e)\n );\n publisher.on('videoElementCreated', (e) => this.emit(MultiPartyServiceEventTypes.videoElementCreated, e));\n };\n\n public publishAudio = async (shouldMute: boolean): Promise<void> => {\n const canPublishAudio = await checkAudioCapabilities();\n\n if (shouldMute && !canPublishAudio) {\n trace.error('could not publish audio');\n\n return;\n }\n\n this.videoPublisher?.publishAudio(shouldMute);\n };\n\n public publishVideo = async (shouldPublishVideo: boolean): Promise<void> => {\n const canPublishVideo = await checkVideoCapabilities();\n\n if (shouldPublishVideo && !canPublishVideo) {\n trace.error('could not publish video');\n\n return;\n }\n\n this.videoPublisher?.publishVideo(shouldPublishVideo);\n };\n\n public publishScreen = async (): Promise<void> => {\n if (this.enableDesktopSharing) {\n const publisherOptions = {\n backgroundImageURI: this.backgroundImageURI\n };\n const capabilitiesService = await MediaCapabilitiesService.getInstance();\n\n try {\n this.screenPublisher = new OpentokScreenPublisher(\n {\n ...publisherOptions,\n participantId: this.getParticipantId(this.ownConnectionId, VideoTypesEnum.SCREEN)\n },\n capabilitiesService\n );\n\n this.forwardPublisherEvents(this.screenPublisher);\n\n return await new Promise((resolve, reject) => {\n this.screenPublisher &&\n this.session?.publish(this.screenPublisher.get(), (err) => {\n if (err) {\n trace.error('Failed to publish screen', err);\n\n return reject(err);\n }\n\n return resolve();\n });\n });\n } catch (e) {\n trace.error('Failed to publish screen', e);\n\n return Promise.reject(e);\n }\n }\n };\n\n public switchCamera = async (): Promise<void> => this.videoPublisher?.switchCamera();\n\n public reinitializeStreams = (settings: SessionSettings): Promise<void[]> => {\n const promises: Promise<void>[] = [];\n\n if (!this.session) {\n return Promise.resolve([]);\n }\n\n const shouldPublishScreen = !!this.screenPublisher;\n\n this.subscriberList.map((s) => s.subscriber).forEach(this.session?.unsubscribe);\n this.subscriberList = [];\n\n this.videoPublisher?.destroy();\n this.screenPublisher?.destroy();\n\n this.initVideoPublisher(settings);\n if (shouldPublishScreen) {\n promises.push(this.publishScreen());\n }\n\n return Promise.all(promises);\n };\n\n private streamCreatedHandler = async (event: {stream: OT.Stream}): Promise<void> => {\n trace.info('streamCreatedHandler', event.stream);\n const {stream} = event;\n const {connection, hasAudio, hasVideo, videoDimensions, videoType} = stream;\n const {connectionId, data} = connection;\n const participantId = this.getParticipantId(connectionId, videoType);\n const clientRole = decodeClientRole(data);\n\n if (this.ownConnectionId && stream && connectionId !== this.ownConnectionId) {\n if (this.subscriberList.length < maxParticipantsNumber - 1) {\n const subscriber = createSubscriber(\n this.session!,\n stream,\n this.getParticipantId(connectionId, videoType),\n this.backgroundImageURI\n );\n\n this.subscriberList.push({\n subscriber,\n connectionId,\n clientRole,\n videoType: videoType as VideoTypesEnum\n });\n } else {\n trace.info(\n `a new subscriber cannot be added, as the number of participants reached its limit: ${maxParticipantsNumber}`\n );\n }\n }\n\n this.emit(MultiPartyServiceEventTypes.streamCreated, {\n participantId,\n clientRole,\n connectionId,\n hasVideo,\n hasAudio,\n isOwnConnection: false,\n mirror: false,\n videoDimensions,\n videoType: videoType as VideoTypesEnum\n });\n };\n\n private streamDestroyedHandler = (event: {stream: OT.Stream; reason: string}): void => {\n trace.info('streamDestroyedHandler', event);\n\n const {connection, videoType} = event.stream;\n const {connectionId} = connection;\n\n this.subscriberList = this.subscriberList.filter(\n (subscriber) => !isSameStream({...subscriber}, {connectionId, videoType: videoType as VideoTypesEnum})\n );\n this.emit(MultiPartyServiceEventTypes.streamDestroyed, {\n participantId: this.getParticipantId(connectionId, videoType),\n connectionId,\n isOwnConnection: false,\n clientRole: decodeClientRole(connection.data),\n videoType: videoType as VideoTypesEnum\n });\n };\n\n private connectionCreatedHandler = (event: {connection: OT.Connection}): void => {\n trace.info('connectionCreatedHandler', event);\n\n const {connection} = event;\n const {connectionId} = connection;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n this.emit(MultiPartyServiceEventTypes.connectionCreated, {\n clientRole: decodeClientRole(connection.data),\n participantId: this.getParticipantId(connectionId),\n connectionId,\n isOwnConnection: this.checkOwnConnection(connectionId)\n });\n };\n\n private connectionDestroyedHandler = (event: {connection: OT.Connection; reason: string}): void => {\n const {connection} = event;\n const {connectionId} = connection;\n\n trace.info('connectionDestroyedHandler', event);\n\n this.emit(MultiPartyServiceEventTypes.connectionDestroyed, {\n clientRole: decodeClientRole(connection.data),\n participantId: this.getParticipantId(connectionId),\n connectionId,\n isOwnConnection: this.checkOwnConnection(connectionId)\n });\n\n if (connectionId !== this.ownConnectionId || !this.ownConnectionId) {\n return;\n }\n\n this.session = undefined;\n };\n\n private streamPropertyChangedHandler = (event: {stream: OT.Stream}): void => {\n trace.info('streamPropertyChangedHandler', event);\n\n const {hasVideo, hasAudio, connection, videoDimensions, videoType} = event.stream;\n const {connectionId} = connection;\n\n this.emit(MultiPartyServiceEventTypes.streamPropertyChanged, {\n hasVideo,\n hasAudio,\n participantId: this.getParticipantId(connectionId, videoType),\n connectionId: connectionId,\n isOwnConnection: this.checkOwnConnection(connectionId),\n clientRole: decodeClientRole(connection.data),\n videoDimensions,\n videoType: videoType as VideoTypesEnum\n });\n };\n\n private sessionDisconnectedHandler = (event: unknown) => {\n this.session?.off();\n trace.info('sessionDisconnectedHandler', event);\n };\n\n private checkOwnConnection = (connectionId: string) =>\n this.ownConnectionId !== undefined && this.ownConnectionId === connectionId;\n\n public stopScreenPublisher(): void | undefined {\n return this.screenPublisher?.destroy();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/MultiParty/opentok/OpentokMultiPartyService.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AAGtD,OAAO,EAA4C,iBAAiB,EAAE,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAOlH,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAQpD,qBAAa,wBAAyB,SAAQ,iBAAiB;IAW/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAV7C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,oBAAoB,CAAkB;IAE9C,OAAO,CAAC,kBAAkB,CAA8B;IAExD,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,qBAAqB,CAAM;gBAEN,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,MAAM;IAIpG,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,IAAW,WAAW,IAAI,cAAc,EAAE,CAEzC;IAEM,qBAAqB,QAAS,MAAM,UAEzC;IAEK,OAAO,oBAAqB,eAAe,eAAe,WAAW,KAAG,IAAI,CA8CjF;IAEK,UAAU,QAAa,QAAQ,IAAI,CAAC,CAezC;IAEK,YAAY,iBAAkB,MAAM,iCAAsC,MAAM,GAAG,IAAI,CAkB5F;IAEF,OAAO,CAAC,6BAA6B,CAwBnC;IAEF,OAAO,CAAC,kBAAkB,CAqBxB;IAEK,wBAAwB,gEAAyD,QAAQ,OAAO,CAAC,CAgBtG;IAEF,OAAO,CAAC,sBAAsB,CAQ5B;IAEK,YAAY,eAAsB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAU9D;IAEK,YAAY,uBAA8B,OAAO,KAAG,QAAQ,IAAI,CAAC,CAUtE;IAEK,aAAa,QAAa,QAAQ,IAAI,CAAC,CAqC5C;IAEK,YAAY,QAAa,QAAQ,IAAI,CAAC,CAAwC;IAE9E,mBAAmB,aAAc,eAAe,KAAG,QAAQ,IAAI,EAAE,CAAC,CAqBvE;IAEF,OAAO,CAAC,oBAAoB,CAyC1B;IAEF,OAAO,CAAC,sBAAsB,CAgB5B;IAEF,OAAO,CAAC,wBAAwB,CAgB9B;IAEF,OAAO,CAAC,0BAA0B,CAkBhC;IAEF,OAAO,CAAC,4BAA4B,CAgBlC;IAEF,OAAO,CAAC,0BAA0B,CAGhC;IAEF,OAAO,CAAC,kBAAkB,CACsD;IAEzE,mBAAmB,IAAI,IAAI,GAAG,SAAS;CAGjD","file":"OpentokMultiPartyService.d.ts","sourcesContent":["import {getMediaTracer} from '../MediaTracer';\nimport {Credentials, SessionSettings} from '../types';\nimport {MediaCapabilitiesService} from '../MediaCapabilitiesService';\nimport {checkAudioCapabilities, checkIsMobile, checkVideoCapabilities} from '../MediaCapabilitiesUtils';\nimport {DEFAULT_AVATAR_URI, maxParticipantsNumber, MultiPartyService, SubscriberInfo} from '../MultiPartyService';\nimport {MultiPartyServiceEventTypes} from '../MultipartyServiceEventTypes';\nimport {OpentokVideoPublisher} from './OpentokVideoPublisher';\nimport {OpentokScreenPublisher} from './OpentokScreenPublisher';\nimport {createSubscriber} from './OpentokSubscriber';\nimport {decodeClientRole, isSameStream} from '../utils';\nimport {traceError} from './trace';\nimport {VideoTypesEnum} from '../../MediaConstants';\n\nconst trace = getMediaTracer('Multiparty');\n\ntype OpentokSubscriberInfo = SubscriberInfo & {\n subscriber: OT.Subscriber;\n};\n\nexport class OpentokMultiPartyService extends MultiPartyService {\n private videoPublisher?: OpentokVideoPublisher;\n private screenPublisher?: OpentokScreenPublisher;\n private enableDesktopSharing: boolean = false;\n\n private backgroundImageURI: string = DEFAULT_AVATAR_URI;\n\n private session?: OT.Session;\n private subscriberList: OpentokSubscriberInfo[] = [];\n private videoPublisherOptions: any;\n\n constructor(private readonly getParticipantId: (connectionId?: string, videoType?: string) => string) {\n super();\n }\n\n public get ownConnectionId(): string {\n return this.session?.connection?.connectionId || '';\n }\n\n public get subscribers(): SubscriberInfo[] {\n return [...this.subscriberList];\n }\n\n public setBackgroundImageURI = (uri: string) => {\n this.backgroundImageURI = uri || DEFAULT_AVATAR_URI;\n };\n\n public connect = (sessionSettings: SessionSettings, credentials: Credentials): void => {\n try {\n this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n\n this.session.on('connectionCreated', this.connectionCreatedHandler);\n this.session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this.session.on('streamCreated', this.streamCreatedHandler);\n this.session.on('streamDestroyed', this.streamDestroyedHandler);\n this.session.on('streamPropertyChanged', this.streamPropertyChangedHandler);\n this.session.on('sessionDisconnected', this.sessionDisconnectedHandler);\n\n //best practice\n this.prepareVideoPublisherSettings().then(() => {\n this.initVideoPublisher(sessionSettings);\n\n this?.session?.connect(credentials.token, (error?: any) => {\n if (error) {\n this?.videoPublisher?.destroy();\n this.session?.off();\n this.session = undefined;\n traceError(error);\n\n this.emit(MultiPartyServiceEventTypes.connectFailed, {\n meta: {err: JSON.stringify(error)}\n });\n\n return;\n }\n if (this.videoPublisher) {\n this.session?.publish(this.videoPublisher.get(), traceError);\n }\n\n this.isScreenSharingSupported(sessionSettings.isScreenSharingCapabilitiesEnabled).then(() => {\n if (this.screenPublisher) {\n this.session?.publish(this.screenPublisher.get(), traceError);\n }\n });\n });\n });\n } catch (err) {\n trace.error(JSON.stringify(err));\n\n this.emit(MultiPartyServiceEventTypes.connectFailed, {\n meta: {err: JSON.stringify(err)}\n });\n }\n };\n\n public disconnect = async (): Promise<void> => {\n try {\n if (this.videoPublisher?.getVideoFilter) {\n await this.videoPublisher?.clearVideoFilter();\n }\n\n trace.info('Disconnecting from session');\n\n if (this.session) {\n this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n public takeSnapshot = (connectionId: string, videoType = VideoTypesEnum.CAMERA): string | null => {\n if (!connectionId) {\n return null;\n }\n\n if (connectionId === this.ownConnectionId) {\n if (videoType === VideoTypesEnum.CAMERA) {\n return this.videoPublisher?.getImgData() || null;\n }\n\n return this.screenPublisher?.getImgData() || null;\n }\n\n return (\n this.subscribers\n .find((s) => s.connectionId === connectionId && s.videoType === videoType)\n ?.subscriber.getImgData() || null\n );\n };\n\n private prepareVideoPublisherSettings = async (): Promise<void> => {\n if (!this.session) {\n return;\n }\n\n const canStartWithAudio = await checkAudioCapabilities();\n const canStartWithVideo = await checkVideoCapabilities();\n const capabilitiesService = await MediaCapabilitiesService.getInstance();\n\n if (!canStartWithAudio && !canStartWithVideo) {\n throw new Error('Creating session requires initialized publisher');\n }\n\n const publisherOptions = {\n backgroundImageURI: this.backgroundImageURI,\n participantId: this.getParticipantId(this.ownConnectionId, VideoTypesEnum.CAMERA)\n };\n\n this.videoPublisherOptions = {\n publisherOptions: publisherOptions,\n canStartWithAudio: canStartWithAudio,\n canStartWithVideo: canStartWithVideo,\n capabilitiesService: capabilitiesService\n };\n };\n\n private initVideoPublisher = (settings: Readonly<SessionSettings>): void => {\n if (!(this.videoPublisherOptions?.canStartWithAudio && this.videoPublisherOptions?.canStartWithVideo)) {\n throw new Error('could not init publisher');\n }\n\n try {\n this.videoPublisher = new OpentokVideoPublisher(\n {\n ...settings.videoSettings,\n cameraEnabled: settings.videoSettings.cameraEnabled && this.videoPublisherOptions.canStartWithVideo,\n startWithAudioMuted:\n settings.videoSettings.startWithAudioMuted && this.videoPublisherOptions.canStartWithAudio\n },\n this.videoPublisherOptions.publisherOptions,\n this.videoPublisherOptions.capabilitiesService\n );\n\n this.forwardPublisherEvents(this.videoPublisher);\n } catch (error) {\n trace.error('could not init publisher');\n }\n };\n\n public isScreenSharingSupported = async (isScreenSharingCapabilitiesEnabled?: boolean): Promise<boolean> => {\n if (isScreenSharingCapabilitiesEnabled && !checkIsMobile()) {\n await OT.checkScreenSharingCapability((res) => {\n if (!res.supported || res.extensionRegistered === false) {\n // This browser does not support screen sharing.\n trace.error('no screen sharing support found');\n this.enableDesktopSharing = false;\n } else {\n this.enableDesktopSharing = true;\n }\n });\n } else {\n this.enableDesktopSharing = false;\n }\n\n return Promise.resolve(this.enableDesktopSharing);\n };\n\n private forwardPublisherEvents = (publisher: OpentokVideoPublisher | OpentokScreenPublisher) => {\n publisher.on('cameraSourceChanged', (e) => this.emit(MultiPartyServiceEventTypes.cameraSourceChanged, e));\n publisher.on('streamCreated', (e) => this.emit(MultiPartyServiceEventTypes.streamCreated, e));\n publisher.on('streamDestroyed', (e) => this.emit(MultiPartyServiceEventTypes.streamDestroyed, e));\n publisher.on('mediaDeviceAccessDenied', (e) =>\n this.emit(MultiPartyServiceEventTypes.mediaDeviceAccessDenied, e)\n );\n publisher.on('videoElementCreated', (e) => this.emit(MultiPartyServiceEventTypes.videoElementCreated, e));\n };\n\n public publishAudio = async (shouldMute: boolean): Promise<void> => {\n const canPublishAudio = await checkAudioCapabilities();\n\n if (shouldMute && !canPublishAudio) {\n trace.error('could not publish audio');\n\n return;\n }\n\n this.videoPublisher?.publishAudio(shouldMute);\n };\n\n public publishVideo = async (shouldPublishVideo: boolean): Promise<void> => {\n const canPublishVideo = await checkVideoCapabilities();\n\n if (shouldPublishVideo && !canPublishVideo) {\n trace.error('could not publish video');\n\n return;\n }\n\n this.videoPublisher?.publishVideo(shouldPublishVideo);\n };\n\n public publishScreen = async (): Promise<void> => {\n if (this.enableDesktopSharing) {\n const publisherOptions = {\n backgroundImageURI: this.backgroundImageURI\n };\n const capabilitiesService = await MediaCapabilitiesService.getInstance();\n\n try {\n this.screenPublisher = new OpentokScreenPublisher(\n {\n ...publisherOptions,\n participantId: this.getParticipantId(this.ownConnectionId, VideoTypesEnum.SCREEN)\n },\n capabilitiesService\n );\n\n this.forwardPublisherEvents(this.screenPublisher);\n\n return await new Promise((resolve, reject) => {\n this.screenPublisher &&\n this.session?.connection &&\n this.session?.publish(this.screenPublisher.get(), (err) => {\n if (err) {\n trace.error('Failed to publish screen', err);\n\n return reject(err);\n }\n\n return resolve();\n });\n });\n } catch (e) {\n trace.error('Failed to publish screen', e);\n\n return Promise.reject(e);\n }\n }\n };\n\n public switchCamera = async (): Promise<void> => this.videoPublisher?.switchCamera();\n\n public reinitializeStreams = (settings: SessionSettings): Promise<void[]> => {\n const promises: Promise<void>[] = [];\n\n if (!this.session) {\n return Promise.resolve([]);\n }\n\n const shouldPublishScreen = !!this.screenPublisher;\n\n this.subscriberList.map((s) => s.subscriber).forEach(this.session?.unsubscribe);\n this.subscriberList = [];\n\n this.videoPublisher?.destroy();\n this.screenPublisher?.destroy();\n\n this.initVideoPublisher(settings);\n if (shouldPublishScreen) {\n promises.push(this.publishScreen());\n }\n\n return Promise.all(promises);\n };\n\n private streamCreatedHandler = async (event: {stream: OT.Stream}): Promise<void> => {\n trace.info('streamCreatedHandler', event.stream);\n const {stream} = event;\n const {connection, hasAudio, hasVideo, videoDimensions, videoType} = stream;\n const {connectionId, data} = connection;\n const participantId = this.getParticipantId(connectionId, videoType);\n const clientRole = decodeClientRole(data);\n\n if (this.ownConnectionId && stream && connectionId !== this.ownConnectionId) {\n if (this.subscriberList.length < maxParticipantsNumber - 1) {\n const subscriber = createSubscriber(\n this.session!,\n stream,\n this.getParticipantId(connectionId, videoType),\n this.backgroundImageURI\n );\n\n this.subscriberList.push({\n subscriber,\n connectionId,\n clientRole,\n videoType: videoType as VideoTypesEnum\n });\n } else {\n trace.info(\n `a new subscriber cannot be added, as the number of participants reached its limit: ${maxParticipantsNumber}`\n );\n }\n }\n\n this.emit(MultiPartyServiceEventTypes.streamCreated, {\n participantId,\n clientRole,\n connectionId,\n hasVideo,\n hasAudio,\n isOwnConnection: false,\n mirror: false,\n videoDimensions,\n videoType: videoType as VideoTypesEnum\n });\n };\n\n private streamDestroyedHandler = (event: {stream: OT.Stream; reason: string}): void => {\n trace.info('streamDestroyedHandler', event);\n\n const {connection, videoType} = event.stream;\n const {connectionId} = connection;\n\n this.subscriberList = this.subscriberList.filter(\n (subscriber) => !isSameStream({...subscriber}, {connectionId, videoType: videoType as VideoTypesEnum})\n );\n this.emit(MultiPartyServiceEventTypes.streamDestroyed, {\n participantId: this.getParticipantId(connectionId, videoType),\n connectionId,\n isOwnConnection: false,\n clientRole: decodeClientRole(connection.data),\n videoType: videoType as VideoTypesEnum\n });\n };\n\n private connectionCreatedHandler = (event: {connection: OT.Connection}): void => {\n trace.info('connectionCreatedHandler', event);\n\n const {connection} = event;\n const {connectionId} = connection;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n this.emit(MultiPartyServiceEventTypes.connectionCreated, {\n clientRole: decodeClientRole(connection.data),\n participantId: this.getParticipantId(connectionId),\n connectionId,\n isOwnConnection: this.checkOwnConnection(connectionId)\n });\n };\n\n private connectionDestroyedHandler = (event: {connection: OT.Connection; reason: string}): void => {\n const {connection} = event;\n const {connectionId} = connection;\n\n trace.info('connectionDestroyedHandler', event);\n\n this.emit(MultiPartyServiceEventTypes.connectionDestroyed, {\n clientRole: decodeClientRole(connection.data),\n participantId: this.getParticipantId(connectionId),\n connectionId,\n isOwnConnection: this.checkOwnConnection(connectionId)\n });\n\n if (connectionId !== this.ownConnectionId || !this.ownConnectionId) {\n return;\n }\n\n this.session = undefined;\n };\n\n private streamPropertyChangedHandler = (event: {stream: OT.Stream}): void => {\n trace.info('streamPropertyChangedHandler', event);\n\n const {hasVideo, hasAudio, connection, videoDimensions, videoType} = event.stream;\n const {connectionId} = connection;\n\n this.emit(MultiPartyServiceEventTypes.streamPropertyChanged, {\n hasVideo,\n hasAudio,\n participantId: this.getParticipantId(connectionId, videoType),\n connectionId: connectionId,\n isOwnConnection: this.checkOwnConnection(connectionId),\n clientRole: decodeClientRole(connection.data),\n videoDimensions,\n videoType: videoType as VideoTypesEnum\n });\n };\n\n private sessionDisconnectedHandler = (event: unknown) => {\n this.session?.off();\n trace.info('sessionDisconnectedHandler', event);\n };\n\n private checkOwnConnection = (connectionId: string) =>\n this.ownConnectionId !== undefined && this.ownConnectionId === connectionId;\n\n public stopScreenPublisher(): void | undefined {\n return this.screenPublisher?.destroy();\n }\n}\n"]}
|
|
@@ -268,10 +268,11 @@ function (_super) {
|
|
|
268
268
|
_this.initVideoPublisher(sessionSettings);
|
|
269
269
|
|
|
270
270
|
(_a = _this === null || _this === void 0 ? void 0 : _this.session) === null || _a === void 0 ? void 0 : _a.connect(credentials.token, function (error) {
|
|
271
|
-
var _a, _b;
|
|
271
|
+
var _a, _b, _c;
|
|
272
272
|
|
|
273
273
|
if (error) {
|
|
274
|
-
(_a = _this.
|
|
274
|
+
(_a = _this === null || _this === void 0 ? void 0 : _this.videoPublisher) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
275
|
+
(_b = _this.session) === null || _b === void 0 ? void 0 : _b.off();
|
|
275
276
|
_this.session = undefined;
|
|
276
277
|
trace_1.traceError(error);
|
|
277
278
|
|
|
@@ -285,10 +286,16 @@ function (_super) {
|
|
|
285
286
|
}
|
|
286
287
|
|
|
287
288
|
if (_this.videoPublisher) {
|
|
288
|
-
(
|
|
289
|
+
(_c = _this.session) === null || _c === void 0 ? void 0 : _c.publish(_this.videoPublisher.get(), trace_1.traceError);
|
|
289
290
|
}
|
|
290
291
|
|
|
291
|
-
_this.isScreenSharingSupported(sessionSettings.isScreenSharingCapabilitiesEnabled)
|
|
292
|
+
_this.isScreenSharingSupported(sessionSettings.isScreenSharingCapabilitiesEnabled).then(function () {
|
|
293
|
+
var _a;
|
|
294
|
+
|
|
295
|
+
if (_this.screenPublisher) {
|
|
296
|
+
(_a = _this.session) === null || _a === void 0 ? void 0 : _a.publish(_this.screenPublisher.get(), trace_1.traceError);
|
|
297
|
+
}
|
|
298
|
+
});
|
|
292
299
|
});
|
|
293
300
|
});
|
|
294
301
|
} catch (err) {
|
|
@@ -606,9 +613,9 @@ function (_super) {
|
|
|
606
613
|
return [4
|
|
607
614
|
/*yield*/
|
|
608
615
|
, new Promise(function (resolve, reject) {
|
|
609
|
-
var _a;
|
|
616
|
+
var _a, _b;
|
|
610
617
|
|
|
611
|
-
_this.screenPublisher && ((_a = _this.session) === null || _a === void 0 ? void 0 : _a.publish(_this.screenPublisher.get(), function (err) {
|
|
618
|
+
_this.screenPublisher && ((_a = _this.session) === null || _a === void 0 ? void 0 : _a.connection) && ((_b = _this.session) === null || _b === void 0 ? void 0 : _b.publish(_this.screenPublisher.get(), function (err) {
|
|
612
619
|
if (err) {
|
|
613
620
|
trace.error('Failed to publish screen', err);
|
|
614
621
|
return reject(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MultiParty/opentok/OpentokMultiPartyService.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","_","label","sent","trys","ops","f","y","g","verb","Symbol","iterator","v","op","TypeError","pop","push","__spreadArrays","il","r","k","a","j","jl","defineProperty","exports","OpentokMultiPartyService","MediaTracer_1","require","MediaCapabilitiesService_1","MediaCapabilitiesUtils_1","MultiPartyService_1","MultipartyServiceEventTypes_1","OpentokVideoPublisher_1","OpentokScreenPublisher_1","OpentokSubscriber_1","utils_1","trace_1","MediaConstants_1","trace","getMediaTracer","_super","getParticipantId","_this","enableDesktopSharing","backgroundImageURI","DEFAULT_AVATAR_URI","subscriberList","setBackgroundImageURI","uri","connect","sessionSettings","credentials","session","OT","initSession","apiKey","sessionId","on","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","streamPropertyChangedHandler","sessionDisconnectedHandler","prepareVideoPublisherSettings","_a","initVideoPublisher","token","error","_b","off","undefined","traceError","emit","MultiPartyServiceEventTypes","connectFailed","meta","err","JSON","stringify","videoPublisher","publish","get","isScreenSharingSupported","isScreenSharingCapabilitiesEnabled","disconnect","err_1","_c","getVideoFilter","clearVideoFilter","info","takeSnapshot","connectionId","videoType","VideoTypesEnum","CAMERA","ownConnectionId","getImgData","screenPublisher","subscribers","find","subscriber","canStartWithAudio","canStartWithVideo","capabilitiesService","publisherOptions","checkAudioCapabilities","checkVideoCapabilities","MediaCapabilitiesService","getInstance","Error","participantId","videoPublisherOptions","settings","OpentokVideoPublisher","videoSettings","cameraEnabled","startWithAudioMuted","forwardPublisherEvents","checkIsMobile","checkScreenSharingCapability","res","supported","extensionRegistered","publisher","cameraSourceChanged","streamCreated","streamDestroyed","mediaDeviceAccessDenied","videoElementCreated","publishAudio","shouldMute","canPublishAudio","publishVideo","shouldPublishVideo","canPublishVideo","publishScreen","e_1","OpentokScreenPublisher","SCREEN","switchCamera","reinitializeStreams","promises","shouldPublishScreen","map","forEach","unsubscribe","destroy","all","event","stream","connection","hasAudio","hasVideo","videoDimensions","data","clientRole","decodeClientRole","maxParticipantsNumber","createSubscriber","isOwnConnection","mirror","filter","isSameStream","connectionCreated","checkOwnConnection","connectionDestroyed","streamPropertyChanged","enumerable","configurable","stopScreenPublisher","MultiPartyService"],"mappings":"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","file":"OpentokMultiPartyService.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OpentokMultiPartyService = void 0;\nvar MediaTracer_1 = require(\"../MediaTracer\");\nvar MediaCapabilitiesService_1 = require(\"../MediaCapabilitiesService\");\nvar MediaCapabilitiesUtils_1 = require(\"../MediaCapabilitiesUtils\");\nvar MultiPartyService_1 = require(\"../MultiPartyService\");\nvar MultipartyServiceEventTypes_1 = require(\"../MultipartyServiceEventTypes\");\nvar OpentokVideoPublisher_1 = require(\"./OpentokVideoPublisher\");\nvar OpentokScreenPublisher_1 = require(\"./OpentokScreenPublisher\");\nvar OpentokSubscriber_1 = require(\"./OpentokSubscriber\");\nvar utils_1 = require(\"../utils\");\nvar trace_1 = require(\"./trace\");\nvar MediaConstants_1 = require(\"../../MediaConstants\");\nvar trace = MediaTracer_1.getMediaTracer('Multiparty');\nvar OpentokMultiPartyService = /** @class */ (function (_super) {\n __extends(OpentokMultiPartyService, _super);\n function OpentokMultiPartyService(getParticipantId) {\n var _this = _super.call(this) || this;\n _this.getParticipantId = getParticipantId;\n _this.enableDesktopSharing = false;\n _this.backgroundImageURI = MultiPartyService_1.DEFAULT_AVATAR_URI;\n _this.subscriberList = [];\n _this.setBackgroundImageURI = function (uri) {\n _this.backgroundImageURI = uri || MultiPartyService_1.DEFAULT_AVATAR_URI;\n };\n _this.connect = function (sessionSettings, credentials) {\n try {\n _this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n _this.session.on('connectionCreated', _this.connectionCreatedHandler);\n _this.session.on('connectionDestroyed', _this.connectionDestroyedHandler);\n _this.session.on('streamCreated', _this.streamCreatedHandler);\n _this.session.on('streamDestroyed', _this.streamDestroyedHandler);\n _this.session.on('streamPropertyChanged', _this.streamPropertyChangedHandler);\n _this.session.on('sessionDisconnected', _this.sessionDisconnectedHandler);\n //best practice\n _this.prepareVideoPublisherSettings().then(function () {\n var _a;\n _this.initVideoPublisher(sessionSettings);\n (_a = _this === null || _this === void 0 ? void 0 : _this.session) === null || _a === void 0 ? void 0 : _a.connect(credentials.token, function (error) {\n var _a, _b;\n if (error) {\n (_a = _this.session) === null || _a === void 0 ? void 0 : _a.off();\n _this.session = undefined;\n trace_1.traceError(error);\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.connectFailed, {\n meta: { err: JSON.stringify(error) }\n });\n return;\n }\n if (_this.videoPublisher) {\n (_b = _this.session) === null || _b === void 0 ? void 0 : _b.publish(_this.videoPublisher.get(), trace_1.traceError);\n }\n _this.isScreenSharingSupported(sessionSettings.isScreenSharingCapabilitiesEnabled);\n });\n });\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.connectFailed, {\n meta: { err: JSON.stringify(err) }\n });\n }\n };\n _this.disconnect = function () { return __awaiter(_this, void 0, void 0, function () {\n var err_1;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 3, , 4]);\n if (!((_a = this.videoPublisher) === null || _a === void 0 ? void 0 : _a.getVideoFilter)) return [3 /*break*/, 2];\n return [4 /*yield*/, ((_b = this.videoPublisher) === null || _b === void 0 ? void 0 : _b.clearVideoFilter())];\n case 1:\n _c.sent();\n _c.label = 2;\n case 2:\n trace.info('Disconnecting from session');\n if (this.session) {\n this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n return [3 /*break*/, 4];\n case 3:\n err_1 = _c.sent();\n trace.error(JSON.stringify(err_1));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n _this.takeSnapshot = function (connectionId, videoType) {\n var _a, _b, _c;\n if (videoType === void 0) { videoType = MediaConstants_1.VideoTypesEnum.CAMERA; }\n if (!connectionId) {\n return null;\n }\n if (connectionId === _this.ownConnectionId) {\n if (videoType === MediaConstants_1.VideoTypesEnum.CAMERA) {\n return ((_a = _this.videoPublisher) === null || _a === void 0 ? void 0 : _a.getImgData()) || null;\n }\n return ((_b = _this.screenPublisher) === null || _b === void 0 ? void 0 : _b.getImgData()) || null;\n }\n return (((_c = _this.subscribers\n .find(function (s) { return s.connectionId === connectionId && s.videoType === videoType; })) === null || _c === void 0 ? void 0 : _c.subscriber.getImgData()) || null);\n };\n _this.prepareVideoPublisherSettings = function () { return __awaiter(_this, void 0, void 0, function () {\n var canStartWithAudio, canStartWithVideo, capabilitiesService, publisherOptions;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.session) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, MediaCapabilitiesUtils_1.checkAudioCapabilities()];\n case 1:\n canStartWithAudio = _a.sent();\n return [4 /*yield*/, MediaCapabilitiesUtils_1.checkVideoCapabilities()];\n case 2:\n canStartWithVideo = _a.sent();\n return [4 /*yield*/, MediaCapabilitiesService_1.MediaCapabilitiesService.getInstance()];\n case 3:\n capabilitiesService = _a.sent();\n if (!canStartWithAudio && !canStartWithVideo) {\n throw new Error('Creating session requires initialized publisher');\n }\n publisherOptions = {\n backgroundImageURI: this.backgroundImageURI,\n participantId: this.getParticipantId(this.ownConnectionId, MediaConstants_1.VideoTypesEnum.CAMERA)\n };\n this.videoPublisherOptions = {\n publisherOptions: publisherOptions,\n canStartWithAudio: canStartWithAudio,\n canStartWithVideo: canStartWithVideo,\n capabilitiesService: capabilitiesService\n };\n return [2 /*return*/];\n }\n });\n }); };\n _this.initVideoPublisher = function (settings) {\n var _a, _b;\n if (!(((_a = _this.videoPublisherOptions) === null || _a === void 0 ? void 0 : _a.canStartWithAudio) && ((_b = _this.videoPublisherOptions) === null || _b === void 0 ? void 0 : _b.canStartWithVideo))) {\n throw new Error('could not init publisher');\n }\n try {\n _this.videoPublisher = new OpentokVideoPublisher_1.OpentokVideoPublisher(__assign(__assign({}, settings.videoSettings), { cameraEnabled: settings.videoSettings.cameraEnabled && _this.videoPublisherOptions.canStartWithVideo, startWithAudioMuted: settings.videoSettings.startWithAudioMuted && _this.videoPublisherOptions.canStartWithAudio }), _this.videoPublisherOptions.publisherOptions, _this.videoPublisherOptions.capabilitiesService);\n _this.forwardPublisherEvents(_this.videoPublisher);\n }\n catch (error) {\n trace.error('could not init publisher');\n }\n };\n _this.isScreenSharingSupported = function (isScreenSharingCapabilitiesEnabled) { return __awaiter(_this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(isScreenSharingCapabilitiesEnabled && !MediaCapabilitiesUtils_1.checkIsMobile())) return [3 /*break*/, 2];\n return [4 /*yield*/, OT.checkScreenSharingCapability(function (res) {\n if (!res.supported || res.extensionRegistered === false) {\n // This browser does not support screen sharing.\n trace.error('no screen sharing support found');\n _this.enableDesktopSharing = false;\n }\n else {\n _this.enableDesktopSharing = true;\n }\n })];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n this.enableDesktopSharing = false;\n _a.label = 3;\n case 3: return [2 /*return*/, Promise.resolve(this.enableDesktopSharing)];\n }\n });\n }); };\n _this.forwardPublisherEvents = function (publisher) {\n publisher.on('cameraSourceChanged', function (e) { return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.cameraSourceChanged, e); });\n publisher.on('streamCreated', function (e) { return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamCreated, e); });\n publisher.on('streamDestroyed', function (e) { return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamDestroyed, e); });\n publisher.on('mediaDeviceAccessDenied', function (e) {\n return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.mediaDeviceAccessDenied, e);\n });\n publisher.on('videoElementCreated', function (e) { return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.videoElementCreated, e); });\n };\n _this.publishAudio = function (shouldMute) { return __awaiter(_this, void 0, void 0, function () {\n var canPublishAudio;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, MediaCapabilitiesUtils_1.checkAudioCapabilities()];\n case 1:\n canPublishAudio = _b.sent();\n if (shouldMute && !canPublishAudio) {\n trace.error('could not publish audio');\n return [2 /*return*/];\n }\n (_a = this.videoPublisher) === null || _a === void 0 ? void 0 : _a.publishAudio(shouldMute);\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishVideo = function (shouldPublishVideo) { return __awaiter(_this, void 0, void 0, function () {\n var canPublishVideo;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, MediaCapabilitiesUtils_1.checkVideoCapabilities()];\n case 1:\n canPublishVideo = _b.sent();\n if (shouldPublishVideo && !canPublishVideo) {\n trace.error('could not publish video');\n return [2 /*return*/];\n }\n (_a = this.videoPublisher) === null || _a === void 0 ? void 0 : _a.publishVideo(shouldPublishVideo);\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishScreen = function () { return __awaiter(_this, void 0, void 0, function () {\n var publisherOptions, capabilitiesService, e_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.enableDesktopSharing) return [3 /*break*/, 5];\n publisherOptions = {\n backgroundImageURI: this.backgroundImageURI\n };\n return [4 /*yield*/, MediaCapabilitiesService_1.MediaCapabilitiesService.getInstance()];\n case 1:\n capabilitiesService = _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n this.screenPublisher = new OpentokScreenPublisher_1.OpentokScreenPublisher(__assign(__assign({}, publisherOptions), { participantId: this.getParticipantId(this.ownConnectionId, MediaConstants_1.VideoTypesEnum.SCREEN) }), capabilitiesService);\n this.forwardPublisherEvents(this.screenPublisher);\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n var _a;\n _this.screenPublisher && ((_a = _this.session) === null || _a === void 0 ? void 0 : _a.publish(_this.screenPublisher.get(), function (err) {\n if (err) {\n trace.error('Failed to publish screen', err);\n return reject(err);\n }\n return resolve();\n }));\n })];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n e_1 = _a.sent();\n trace.error('Failed to publish screen', e_1);\n return [2 /*return*/, Promise.reject(e_1)];\n case 5: return [2 /*return*/];\n }\n });\n }); };\n _this.switchCamera = function () { return __awaiter(_this, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n return [2 /*return*/, (_a = this.videoPublisher) === null || _a === void 0 ? void 0 : _a.switchCamera()];\n }); }); };\n _this.reinitializeStreams = function (settings) {\n var _a, _b, _c;\n var promises = [];\n if (!_this.session) {\n return Promise.resolve([]);\n }\n var shouldPublishScreen = !!_this.screenPublisher;\n _this.subscriberList.map(function (s) { return s.subscriber; }).forEach((_a = _this.session) === null || _a === void 0 ? void 0 : _a.unsubscribe);\n _this.subscriberList = [];\n (_b = _this.videoPublisher) === null || _b === void 0 ? void 0 : _b.destroy();\n (_c = _this.screenPublisher) === null || _c === void 0 ? void 0 : _c.destroy();\n _this.initVideoPublisher(settings);\n if (shouldPublishScreen) {\n promises.push(_this.publishScreen());\n }\n return Promise.all(promises);\n };\n _this.streamCreatedHandler = function (event) { return __awaiter(_this, void 0, void 0, function () {\n var stream, connection, hasAudio, hasVideo, videoDimensions, videoType, connectionId, data, participantId, clientRole, subscriber;\n return __generator(this, function (_a) {\n trace.info('streamCreatedHandler', event.stream);\n stream = event.stream;\n connection = stream.connection, hasAudio = stream.hasAudio, hasVideo = stream.hasVideo, videoDimensions = stream.videoDimensions, videoType = stream.videoType;\n connectionId = connection.connectionId, data = connection.data;\n participantId = this.getParticipantId(connectionId, videoType);\n clientRole = utils_1.decodeClientRole(data);\n if (this.ownConnectionId && stream && connectionId !== this.ownConnectionId) {\n if (this.subscriberList.length < MultiPartyService_1.maxParticipantsNumber - 1) {\n subscriber = OpentokSubscriber_1.createSubscriber(this.session, stream, this.getParticipantId(connectionId, videoType), this.backgroundImageURI);\n this.subscriberList.push({\n subscriber: subscriber,\n connectionId: connectionId,\n clientRole: clientRole,\n videoType: videoType\n });\n }\n else {\n trace.info(\"a new subscriber cannot be added, as the number of participants reached its limit: \" + MultiPartyService_1.maxParticipantsNumber);\n }\n }\n this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamCreated, {\n participantId: participantId,\n clientRole: clientRole,\n connectionId: connectionId,\n hasVideo: hasVideo,\n hasAudio: hasAudio,\n isOwnConnection: false,\n mirror: false,\n videoDimensions: videoDimensions,\n videoType: videoType\n });\n return [2 /*return*/];\n });\n }); };\n _this.streamDestroyedHandler = function (event) {\n trace.info('streamDestroyedHandler', event);\n var _a = event.stream, connection = _a.connection, videoType = _a.videoType;\n var connectionId = connection.connectionId;\n _this.subscriberList = _this.subscriberList.filter(function (subscriber) { return !utils_1.isSameStream(__assign({}, subscriber), { connectionId: connectionId, videoType: videoType }); });\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamDestroyed, {\n participantId: _this.getParticipantId(connectionId, videoType),\n connectionId: connectionId,\n isOwnConnection: false,\n clientRole: utils_1.decodeClientRole(connection.data),\n videoType: videoType\n });\n };\n _this.connectionCreatedHandler = function (event) {\n trace.info('connectionCreatedHandler', event);\n var connection = event.connection;\n var connectionId = connection.connectionId;\n if (!_this.ownConnectionId || !connection) {\n return;\n }\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.connectionCreated, {\n clientRole: utils_1.decodeClientRole(connection.data),\n participantId: _this.getParticipantId(connectionId),\n connectionId: connectionId,\n isOwnConnection: _this.checkOwnConnection(connectionId)\n });\n };\n _this.connectionDestroyedHandler = function (event) {\n var connection = event.connection;\n var connectionId = connection.connectionId;\n trace.info('connectionDestroyedHandler', event);\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.connectionDestroyed, {\n clientRole: utils_1.decodeClientRole(connection.data),\n participantId: _this.getParticipantId(connectionId),\n connectionId: connectionId,\n isOwnConnection: _this.checkOwnConnection(connectionId)\n });\n if (connectionId !== _this.ownConnectionId || !_this.ownConnectionId) {\n return;\n }\n _this.session = undefined;\n };\n _this.streamPropertyChangedHandler = function (event) {\n trace.info('streamPropertyChangedHandler', event);\n var _a = event.stream, hasVideo = _a.hasVideo, hasAudio = _a.hasAudio, connection = _a.connection, videoDimensions = _a.videoDimensions, videoType = _a.videoType;\n var connectionId = connection.connectionId;\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamPropertyChanged, {\n hasVideo: hasVideo,\n hasAudio: hasAudio,\n participantId: _this.getParticipantId(connectionId, videoType),\n connectionId: connectionId,\n isOwnConnection: _this.checkOwnConnection(connectionId),\n clientRole: utils_1.decodeClientRole(connection.data),\n videoDimensions: videoDimensions,\n videoType: videoType\n });\n };\n _this.sessionDisconnectedHandler = function (event) {\n var _a;\n (_a = _this.session) === null || _a === void 0 ? void 0 : _a.off();\n trace.info('sessionDisconnectedHandler', event);\n };\n _this.checkOwnConnection = function (connectionId) {\n return _this.ownConnectionId !== undefined && _this.ownConnectionId === connectionId;\n };\n return _this;\n }\n Object.defineProperty(OpentokMultiPartyService.prototype, \"ownConnectionId\", {\n get: function () {\n var _a, _b;\n return ((_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.connection) === null || _b === void 0 ? void 0 : _b.connectionId) || '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(OpentokMultiPartyService.prototype, \"subscribers\", {\n get: function () {\n return __spreadArrays(this.subscriberList);\n },\n enumerable: false,\n configurable: true\n });\n OpentokMultiPartyService.prototype.stopScreenPublisher = function () {\n var _a;\n return (_a = this.screenPublisher) === null || _a === void 0 ? void 0 : _a.destroy();\n };\n return OpentokMultiPartyService;\n}(MultiPartyService_1.MultiPartyService));\nexports.OpentokMultiPartyService = OpentokMultiPartyService;\n\n//# sourceMappingURL=OpentokMultiPartyService.js.map\n"]}
|
|
1
|
+
{"version":3,"sources":["MultiParty/opentok/OpentokMultiPartyService.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","_","label","sent","trys","ops","f","y","g","verb","Symbol","iterator","v","op","TypeError","pop","push","__spreadArrays","il","r","k","a","j","jl","defineProperty","exports","OpentokMultiPartyService","MediaTracer_1","require","MediaCapabilitiesService_1","MediaCapabilitiesUtils_1","MultiPartyService_1","MultipartyServiceEventTypes_1","OpentokVideoPublisher_1","OpentokScreenPublisher_1","OpentokSubscriber_1","utils_1","trace_1","MediaConstants_1","trace","getMediaTracer","_super","getParticipantId","_this","enableDesktopSharing","backgroundImageURI","DEFAULT_AVATAR_URI","subscriberList","setBackgroundImageURI","uri","connect","sessionSettings","credentials","session","OT","initSession","apiKey","sessionId","on","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","streamPropertyChangedHandler","sessionDisconnectedHandler","prepareVideoPublisherSettings","_a","initVideoPublisher","token","error","_b","_c","videoPublisher","destroy","off","undefined","traceError","emit","MultiPartyServiceEventTypes","connectFailed","meta","err","JSON","stringify","publish","get","isScreenSharingSupported","isScreenSharingCapabilitiesEnabled","screenPublisher","disconnect","err_1","getVideoFilter","clearVideoFilter","info","takeSnapshot","connectionId","videoType","VideoTypesEnum","CAMERA","ownConnectionId","getImgData","subscribers","find","subscriber","canStartWithAudio","canStartWithVideo","capabilitiesService","publisherOptions","checkAudioCapabilities","checkVideoCapabilities","MediaCapabilitiesService","getInstance","Error","participantId","videoPublisherOptions","settings","OpentokVideoPublisher","videoSettings","cameraEnabled","startWithAudioMuted","forwardPublisherEvents","checkIsMobile","checkScreenSharingCapability","res","supported","extensionRegistered","publisher","cameraSourceChanged","streamCreated","streamDestroyed","mediaDeviceAccessDenied","videoElementCreated","publishAudio","shouldMute","canPublishAudio","publishVideo","shouldPublishVideo","canPublishVideo","publishScreen","e_1","OpentokScreenPublisher","SCREEN","connection","switchCamera","reinitializeStreams","promises","shouldPublishScreen","map","forEach","unsubscribe","all","event","stream","hasAudio","hasVideo","videoDimensions","data","clientRole","decodeClientRole","maxParticipantsNumber","createSubscriber","isOwnConnection","mirror","filter","isSameStream","connectionCreated","checkOwnConnection","connectionDestroyed","streamPropertyChanged","enumerable","configurable","stopScreenPublisher","MultiPartyService"],"mappings":"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","file":"OpentokMultiPartyService.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OpentokMultiPartyService = void 0;\nvar MediaTracer_1 = require(\"../MediaTracer\");\nvar MediaCapabilitiesService_1 = require(\"../MediaCapabilitiesService\");\nvar MediaCapabilitiesUtils_1 = require(\"../MediaCapabilitiesUtils\");\nvar MultiPartyService_1 = require(\"../MultiPartyService\");\nvar MultipartyServiceEventTypes_1 = require(\"../MultipartyServiceEventTypes\");\nvar OpentokVideoPublisher_1 = require(\"./OpentokVideoPublisher\");\nvar OpentokScreenPublisher_1 = require(\"./OpentokScreenPublisher\");\nvar OpentokSubscriber_1 = require(\"./OpentokSubscriber\");\nvar utils_1 = require(\"../utils\");\nvar trace_1 = require(\"./trace\");\nvar MediaConstants_1 = require(\"../../MediaConstants\");\nvar trace = MediaTracer_1.getMediaTracer('Multiparty');\nvar OpentokMultiPartyService = /** @class */ (function (_super) {\n __extends(OpentokMultiPartyService, _super);\n function OpentokMultiPartyService(getParticipantId) {\n var _this = _super.call(this) || this;\n _this.getParticipantId = getParticipantId;\n _this.enableDesktopSharing = false;\n _this.backgroundImageURI = MultiPartyService_1.DEFAULT_AVATAR_URI;\n _this.subscriberList = [];\n _this.setBackgroundImageURI = function (uri) {\n _this.backgroundImageURI = uri || MultiPartyService_1.DEFAULT_AVATAR_URI;\n };\n _this.connect = function (sessionSettings, credentials) {\n try {\n _this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n _this.session.on('connectionCreated', _this.connectionCreatedHandler);\n _this.session.on('connectionDestroyed', _this.connectionDestroyedHandler);\n _this.session.on('streamCreated', _this.streamCreatedHandler);\n _this.session.on('streamDestroyed', _this.streamDestroyedHandler);\n _this.session.on('streamPropertyChanged', _this.streamPropertyChangedHandler);\n _this.session.on('sessionDisconnected', _this.sessionDisconnectedHandler);\n //best practice\n _this.prepareVideoPublisherSettings().then(function () {\n var _a;\n _this.initVideoPublisher(sessionSettings);\n (_a = _this === null || _this === void 0 ? void 0 : _this.session) === null || _a === void 0 ? void 0 : _a.connect(credentials.token, function (error) {\n var _a, _b, _c;\n if (error) {\n (_a = _this === null || _this === void 0 ? void 0 : _this.videoPublisher) === null || _a === void 0 ? void 0 : _a.destroy();\n (_b = _this.session) === null || _b === void 0 ? void 0 : _b.off();\n _this.session = undefined;\n trace_1.traceError(error);\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.connectFailed, {\n meta: { err: JSON.stringify(error) }\n });\n return;\n }\n if (_this.videoPublisher) {\n (_c = _this.session) === null || _c === void 0 ? void 0 : _c.publish(_this.videoPublisher.get(), trace_1.traceError);\n }\n _this.isScreenSharingSupported(sessionSettings.isScreenSharingCapabilitiesEnabled).then(function () {\n var _a;\n if (_this.screenPublisher) {\n (_a = _this.session) === null || _a === void 0 ? void 0 : _a.publish(_this.screenPublisher.get(), trace_1.traceError);\n }\n });\n });\n });\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.connectFailed, {\n meta: { err: JSON.stringify(err) }\n });\n }\n };\n _this.disconnect = function () { return __awaiter(_this, void 0, void 0, function () {\n var err_1;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 3, , 4]);\n if (!((_a = this.videoPublisher) === null || _a === void 0 ? void 0 : _a.getVideoFilter)) return [3 /*break*/, 2];\n return [4 /*yield*/, ((_b = this.videoPublisher) === null || _b === void 0 ? void 0 : _b.clearVideoFilter())];\n case 1:\n _c.sent();\n _c.label = 2;\n case 2:\n trace.info('Disconnecting from session');\n if (this.session) {\n this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n return [3 /*break*/, 4];\n case 3:\n err_1 = _c.sent();\n trace.error(JSON.stringify(err_1));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n _this.takeSnapshot = function (connectionId, videoType) {\n var _a, _b, _c;\n if (videoType === void 0) { videoType = MediaConstants_1.VideoTypesEnum.CAMERA; }\n if (!connectionId) {\n return null;\n }\n if (connectionId === _this.ownConnectionId) {\n if (videoType === MediaConstants_1.VideoTypesEnum.CAMERA) {\n return ((_a = _this.videoPublisher) === null || _a === void 0 ? void 0 : _a.getImgData()) || null;\n }\n return ((_b = _this.screenPublisher) === null || _b === void 0 ? void 0 : _b.getImgData()) || null;\n }\n return (((_c = _this.subscribers\n .find(function (s) { return s.connectionId === connectionId && s.videoType === videoType; })) === null || _c === void 0 ? void 0 : _c.subscriber.getImgData()) || null);\n };\n _this.prepareVideoPublisherSettings = function () { return __awaiter(_this, void 0, void 0, function () {\n var canStartWithAudio, canStartWithVideo, capabilitiesService, publisherOptions;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.session) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, MediaCapabilitiesUtils_1.checkAudioCapabilities()];\n case 1:\n canStartWithAudio = _a.sent();\n return [4 /*yield*/, MediaCapabilitiesUtils_1.checkVideoCapabilities()];\n case 2:\n canStartWithVideo = _a.sent();\n return [4 /*yield*/, MediaCapabilitiesService_1.MediaCapabilitiesService.getInstance()];\n case 3:\n capabilitiesService = _a.sent();\n if (!canStartWithAudio && !canStartWithVideo) {\n throw new Error('Creating session requires initialized publisher');\n }\n publisherOptions = {\n backgroundImageURI: this.backgroundImageURI,\n participantId: this.getParticipantId(this.ownConnectionId, MediaConstants_1.VideoTypesEnum.CAMERA)\n };\n this.videoPublisherOptions = {\n publisherOptions: publisherOptions,\n canStartWithAudio: canStartWithAudio,\n canStartWithVideo: canStartWithVideo,\n capabilitiesService: capabilitiesService\n };\n return [2 /*return*/];\n }\n });\n }); };\n _this.initVideoPublisher = function (settings) {\n var _a, _b;\n if (!(((_a = _this.videoPublisherOptions) === null || _a === void 0 ? void 0 : _a.canStartWithAudio) && ((_b = _this.videoPublisherOptions) === null || _b === void 0 ? void 0 : _b.canStartWithVideo))) {\n throw new Error('could not init publisher');\n }\n try {\n _this.videoPublisher = new OpentokVideoPublisher_1.OpentokVideoPublisher(__assign(__assign({}, settings.videoSettings), { cameraEnabled: settings.videoSettings.cameraEnabled && _this.videoPublisherOptions.canStartWithVideo, startWithAudioMuted: settings.videoSettings.startWithAudioMuted && _this.videoPublisherOptions.canStartWithAudio }), _this.videoPublisherOptions.publisherOptions, _this.videoPublisherOptions.capabilitiesService);\n _this.forwardPublisherEvents(_this.videoPublisher);\n }\n catch (error) {\n trace.error('could not init publisher');\n }\n };\n _this.isScreenSharingSupported = function (isScreenSharingCapabilitiesEnabled) { return __awaiter(_this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(isScreenSharingCapabilitiesEnabled && !MediaCapabilitiesUtils_1.checkIsMobile())) return [3 /*break*/, 2];\n return [4 /*yield*/, OT.checkScreenSharingCapability(function (res) {\n if (!res.supported || res.extensionRegistered === false) {\n // This browser does not support screen sharing.\n trace.error('no screen sharing support found');\n _this.enableDesktopSharing = false;\n }\n else {\n _this.enableDesktopSharing = true;\n }\n })];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n this.enableDesktopSharing = false;\n _a.label = 3;\n case 3: return [2 /*return*/, Promise.resolve(this.enableDesktopSharing)];\n }\n });\n }); };\n _this.forwardPublisherEvents = function (publisher) {\n publisher.on('cameraSourceChanged', function (e) { return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.cameraSourceChanged, e); });\n publisher.on('streamCreated', function (e) { return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamCreated, e); });\n publisher.on('streamDestroyed', function (e) { return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamDestroyed, e); });\n publisher.on('mediaDeviceAccessDenied', function (e) {\n return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.mediaDeviceAccessDenied, e);\n });\n publisher.on('videoElementCreated', function (e) { return _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.videoElementCreated, e); });\n };\n _this.publishAudio = function (shouldMute) { return __awaiter(_this, void 0, void 0, function () {\n var canPublishAudio;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, MediaCapabilitiesUtils_1.checkAudioCapabilities()];\n case 1:\n canPublishAudio = _b.sent();\n if (shouldMute && !canPublishAudio) {\n trace.error('could not publish audio');\n return [2 /*return*/];\n }\n (_a = this.videoPublisher) === null || _a === void 0 ? void 0 : _a.publishAudio(shouldMute);\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishVideo = function (shouldPublishVideo) { return __awaiter(_this, void 0, void 0, function () {\n var canPublishVideo;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, MediaCapabilitiesUtils_1.checkVideoCapabilities()];\n case 1:\n canPublishVideo = _b.sent();\n if (shouldPublishVideo && !canPublishVideo) {\n trace.error('could not publish video');\n return [2 /*return*/];\n }\n (_a = this.videoPublisher) === null || _a === void 0 ? void 0 : _a.publishVideo(shouldPublishVideo);\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishScreen = function () { return __awaiter(_this, void 0, void 0, function () {\n var publisherOptions, capabilitiesService, e_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.enableDesktopSharing) return [3 /*break*/, 5];\n publisherOptions = {\n backgroundImageURI: this.backgroundImageURI\n };\n return [4 /*yield*/, MediaCapabilitiesService_1.MediaCapabilitiesService.getInstance()];\n case 1:\n capabilitiesService = _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n this.screenPublisher = new OpentokScreenPublisher_1.OpentokScreenPublisher(__assign(__assign({}, publisherOptions), { participantId: this.getParticipantId(this.ownConnectionId, MediaConstants_1.VideoTypesEnum.SCREEN) }), capabilitiesService);\n this.forwardPublisherEvents(this.screenPublisher);\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n var _a, _b;\n _this.screenPublisher && ((_a = _this.session) === null || _a === void 0 ? void 0 : _a.connection) && ((_b = _this.session) === null || _b === void 0 ? void 0 : _b.publish(_this.screenPublisher.get(), function (err) {\n if (err) {\n trace.error('Failed to publish screen', err);\n return reject(err);\n }\n return resolve();\n }));\n })];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n e_1 = _a.sent();\n trace.error('Failed to publish screen', e_1);\n return [2 /*return*/, Promise.reject(e_1)];\n case 5: return [2 /*return*/];\n }\n });\n }); };\n _this.switchCamera = function () { return __awaiter(_this, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n return [2 /*return*/, (_a = this.videoPublisher) === null || _a === void 0 ? void 0 : _a.switchCamera()];\n }); }); };\n _this.reinitializeStreams = function (settings) {\n var _a, _b, _c;\n var promises = [];\n if (!_this.session) {\n return Promise.resolve([]);\n }\n var shouldPublishScreen = !!_this.screenPublisher;\n _this.subscriberList.map(function (s) { return s.subscriber; }).forEach((_a = _this.session) === null || _a === void 0 ? void 0 : _a.unsubscribe);\n _this.subscriberList = [];\n (_b = _this.videoPublisher) === null || _b === void 0 ? void 0 : _b.destroy();\n (_c = _this.screenPublisher) === null || _c === void 0 ? void 0 : _c.destroy();\n _this.initVideoPublisher(settings);\n if (shouldPublishScreen) {\n promises.push(_this.publishScreen());\n }\n return Promise.all(promises);\n };\n _this.streamCreatedHandler = function (event) { return __awaiter(_this, void 0, void 0, function () {\n var stream, connection, hasAudio, hasVideo, videoDimensions, videoType, connectionId, data, participantId, clientRole, subscriber;\n return __generator(this, function (_a) {\n trace.info('streamCreatedHandler', event.stream);\n stream = event.stream;\n connection = stream.connection, hasAudio = stream.hasAudio, hasVideo = stream.hasVideo, videoDimensions = stream.videoDimensions, videoType = stream.videoType;\n connectionId = connection.connectionId, data = connection.data;\n participantId = this.getParticipantId(connectionId, videoType);\n clientRole = utils_1.decodeClientRole(data);\n if (this.ownConnectionId && stream && connectionId !== this.ownConnectionId) {\n if (this.subscriberList.length < MultiPartyService_1.maxParticipantsNumber - 1) {\n subscriber = OpentokSubscriber_1.createSubscriber(this.session, stream, this.getParticipantId(connectionId, videoType), this.backgroundImageURI);\n this.subscriberList.push({\n subscriber: subscriber,\n connectionId: connectionId,\n clientRole: clientRole,\n videoType: videoType\n });\n }\n else {\n trace.info(\"a new subscriber cannot be added, as the number of participants reached its limit: \" + MultiPartyService_1.maxParticipantsNumber);\n }\n }\n this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamCreated, {\n participantId: participantId,\n clientRole: clientRole,\n connectionId: connectionId,\n hasVideo: hasVideo,\n hasAudio: hasAudio,\n isOwnConnection: false,\n mirror: false,\n videoDimensions: videoDimensions,\n videoType: videoType\n });\n return [2 /*return*/];\n });\n }); };\n _this.streamDestroyedHandler = function (event) {\n trace.info('streamDestroyedHandler', event);\n var _a = event.stream, connection = _a.connection, videoType = _a.videoType;\n var connectionId = connection.connectionId;\n _this.subscriberList = _this.subscriberList.filter(function (subscriber) { return !utils_1.isSameStream(__assign({}, subscriber), { connectionId: connectionId, videoType: videoType }); });\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamDestroyed, {\n participantId: _this.getParticipantId(connectionId, videoType),\n connectionId: connectionId,\n isOwnConnection: false,\n clientRole: utils_1.decodeClientRole(connection.data),\n videoType: videoType\n });\n };\n _this.connectionCreatedHandler = function (event) {\n trace.info('connectionCreatedHandler', event);\n var connection = event.connection;\n var connectionId = connection.connectionId;\n if (!_this.ownConnectionId || !connection) {\n return;\n }\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.connectionCreated, {\n clientRole: utils_1.decodeClientRole(connection.data),\n participantId: _this.getParticipantId(connectionId),\n connectionId: connectionId,\n isOwnConnection: _this.checkOwnConnection(connectionId)\n });\n };\n _this.connectionDestroyedHandler = function (event) {\n var connection = event.connection;\n var connectionId = connection.connectionId;\n trace.info('connectionDestroyedHandler', event);\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.connectionDestroyed, {\n clientRole: utils_1.decodeClientRole(connection.data),\n participantId: _this.getParticipantId(connectionId),\n connectionId: connectionId,\n isOwnConnection: _this.checkOwnConnection(connectionId)\n });\n if (connectionId !== _this.ownConnectionId || !_this.ownConnectionId) {\n return;\n }\n _this.session = undefined;\n };\n _this.streamPropertyChangedHandler = function (event) {\n trace.info('streamPropertyChangedHandler', event);\n var _a = event.stream, hasVideo = _a.hasVideo, hasAudio = _a.hasAudio, connection = _a.connection, videoDimensions = _a.videoDimensions, videoType = _a.videoType;\n var connectionId = connection.connectionId;\n _this.emit(MultipartyServiceEventTypes_1.MultiPartyServiceEventTypes.streamPropertyChanged, {\n hasVideo: hasVideo,\n hasAudio: hasAudio,\n participantId: _this.getParticipantId(connectionId, videoType),\n connectionId: connectionId,\n isOwnConnection: _this.checkOwnConnection(connectionId),\n clientRole: utils_1.decodeClientRole(connection.data),\n videoDimensions: videoDimensions,\n videoType: videoType\n });\n };\n _this.sessionDisconnectedHandler = function (event) {\n var _a;\n (_a = _this.session) === null || _a === void 0 ? void 0 : _a.off();\n trace.info('sessionDisconnectedHandler', event);\n };\n _this.checkOwnConnection = function (connectionId) {\n return _this.ownConnectionId !== undefined && _this.ownConnectionId === connectionId;\n };\n return _this;\n }\n Object.defineProperty(OpentokMultiPartyService.prototype, \"ownConnectionId\", {\n get: function () {\n var _a, _b;\n return ((_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.connection) === null || _b === void 0 ? void 0 : _b.connectionId) || '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(OpentokMultiPartyService.prototype, \"subscribers\", {\n get: function () {\n return __spreadArrays(this.subscriberList);\n },\n enumerable: false,\n configurable: true\n });\n OpentokMultiPartyService.prototype.stopScreenPublisher = function () {\n var _a;\n return (_a = this.screenPublisher) === null || _a === void 0 ? void 0 : _a.destroy();\n };\n return OpentokMultiPartyService;\n}(MultiPartyService_1.MultiPartyService));\nexports.OpentokMultiPartyService = OpentokMultiPartyService;\n\n//# sourceMappingURL=OpentokMultiPartyService.js.map\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MultiParty/opentok/OpentokVideoPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAMvC,OAAO,EAAC,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAUnH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC7D,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AACD,qBAAa,qBAAsB,SAAQ,gBAAiB,YAAW,sBAAsB;IACzF,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC,SAAS,CAAC;IACzC,OAAO,CAAC,WAAW,CAAC,CAAkB;IACtC,OAAO,CAAC,2BAA2B,CAAC,CAA0C;gBAG1E,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,uBAAuB,EAChC,wBAAwB,EAAE,iBAAiB;IAgDxC,YAAY,YAAa,OAAO,KAAG,IAAI,CAAgD;IAEvF,YAAY,QAAa,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"sources":["../src/MultiParty/opentok/OpentokVideoPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAMvC,OAAO,EAAC,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAUnH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC7D,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AACD,qBAAa,qBAAsB,SAAQ,gBAAiB,YAAW,sBAAsB;IACzF,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC,SAAS,CAAC;IACzC,OAAO,CAAC,WAAW,CAAC,CAAkB;IACtC,OAAO,CAAC,2BAA2B,CAAC,CAA0C;gBAG1E,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,uBAAuB,EAChC,wBAAwB,EAAE,iBAAiB;IAgDxC,YAAY,YAAa,OAAO,KAAG,IAAI,CAAgD;IAEvF,YAAY,QAAa,QAAQ,IAAI,CAAC,CAsC3C;IAEF,OAAO,CAAC,gBAAgB,CAMtB;IAEF,OAAO,CAAC,8BAA8B,CAKpC;IAEK,YAAY,YAAa,OAAO,KAAG,IAAI,CAAgD;CACjG","file":"OpentokVideoPublisher.d.ts","sourcesContent":["import {VideoSettings} from '../types';\nimport {shouldMirrorCamera} from '../utils';\nimport {traceError, traceInfo} from './trace';\nimport {createCameraSourceChangedEvent, createMediaAccessDeniedEvent} from './OpentokPublisherEventMapper';\nimport {MultiPartyCameraTypes} from '../../MediaConstants';\nimport {VideoFilterType} from '@techsee/techsee-common/lib/constants/account.constants';\nimport {IMediaCapablities, IOpentokPublisher, OpentokPublisher, OpentokPublisherOptions} from './OpentokPublisher';\nimport {waitAfterClearingFilter} from '../../MediaUtils/Compatibility';\n// The preferred camera position to use for the video source\nenum OpentokFacingMode {\n USER = 'user',\n ENVIRONMENT = 'environment'\n}\n\nconst OPENTOK_MIRRORED_CSS_CLASS = 'OT_mirrored';\n\nexport interface IOpentokVideoPublisher extends IOpentokPublisher {\n publishAudio: (enabled: boolean) => void;\n switchCamera: () => Promise<void>;\n}\nexport class OpentokVideoPublisher extends OpentokPublisher implements IOpentokVideoPublisher {\n protected currentPublisher: OT.Publisher;\n private videoFilter?: VideoFilterType;\n private videoFilterPublisherSetting?: {videoFilter?: {type: VideoFilterType}};\n\n constructor(\n videoSettings: VideoSettings,\n options: OpentokPublisherOptions,\n mediaCapabilitiesService: IMediaCapablities\n ) {\n super(options, mediaCapabilitiesService);\n\n const {selectedCamera, cameraEnabled, startWithAudioMuted, videoFilter} = videoSettings;\n\n this.selectedCamera = selectedCamera;\n this.videoFilter = videoFilter;\n\n const {participantId, backgroundImageURI} = options;\n const videoSource = (!this.isMobile && this.getVideoSourceId(selectedCamera)) || undefined;\n const facingMode =\n (this.isMobile &&\n !videoSource &&\n (selectedCamera === MultiPartyCameraTypes.FRONT\n ? OpentokFacingMode.USER\n : OpentokFacingMode.ENVIRONMENT)) ||\n undefined;\n\n this.setVideoFilterPublisherSetting();\n this.currentPublisher = OT.initPublisher(\n participantId,\n {\n ...this.publisherProperties,\n style: {\n ...this.publisherProperties.style,\n archiveStatusDisplayMode: 'off',\n audioLevelDisplayMode: 'off',\n backgroundImageURI\n },\n publishAudio: !startWithAudioMuted,\n publishVideo: cameraEnabled,\n videoSource,\n facingMode,\n mirror: shouldMirrorCamera(this.isMobile, selectedCamera),\n ...this.videoFilterPublisherSetting\n },\n traceError\n );\n\n this.initializeEventHandlers();\n this.currentPublisher.on('accessDenied', () => {\n traceInfo('Publisher denied media permissions');\n\n this.emit('mediaDeviceAccessDenied', createMediaAccessDeniedEvent(true));\n });\n }\n\n public publishAudio = (enabled: boolean): void => this.currentPublisher.publishAudio(enabled);\n\n public switchCamera = async (): Promise<void> => {\n if (!this.mediaCapabilitiesService.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n\n try {\n const newSelectedCamera =\n this.selectedCamera === MultiPartyCameraTypes.BACK\n ? MultiPartyCameraTypes.FRONT\n : MultiPartyCameraTypes.BACK;\n const newVideoSourceId = this.getVideoSourceId(newSelectedCamera);\n\n if (this.currentPublisher.getVideoFilter()) {\n await this.currentPublisher.clearVideoFilter();\n await waitAfterClearingFilter();\n }\n await this.currentPublisher.setVideoSource(newVideoSourceId);\n\n if (shouldMirrorCamera(!this.isMobile, newSelectedCamera)) {\n this.currentPublisher.element?.classList.add(OPENTOK_MIRRORED_CSS_CLASS);\n } else {\n this.currentPublisher.element?.classList.remove(OPENTOK_MIRRORED_CSS_CLASS);\n }\n\n this.selectedCamera = newSelectedCamera;\n this.setVideoFilterPublisherSetting();\n\n if (this.selectedCamera === MultiPartyCameraTypes.FRONT && this.videoFilterPublisherSetting?.videoFilter) {\n await this.currentPublisher.applyVideoFilter(this.videoFilterPublisherSetting.videoFilter);\n }\n this.emit(\n 'cameraSourceChanged',\n createCameraSourceChangedEvent(this.currentPublisher.stream, this.selectedCamera, this.isMobile)\n );\n } catch (err) {\n traceError(JSON.stringify(err));\n throw err;\n }\n };\n\n private getVideoSourceId = (selectedCamera: MultiPartyCameraTypes): string => {\n traceInfo('getVideoSourceId: ', selectedCamera);\n\n return selectedCamera === MultiPartyCameraTypes.FRONT\n ? this.mediaCapabilitiesService.frontCameraDeviceId\n : this.mediaCapabilitiesService.backCameraDeviceId;\n };\n\n private setVideoFilterPublisherSetting = (): void => {\n this.videoFilterPublisherSetting =\n this.selectedCamera === MultiPartyCameraTypes.FRONT && this.videoFilter === VideoFilterType.BLUR\n ? {videoFilter: {type: VideoFilterType.BLUR}}\n : {};\n };\n\n public publishVideo = (enabled: boolean): void => this.currentPublisher.publishVideo(enabled);\n}\n"]}
|
|
@@ -200,7 +200,9 @@ var MediaConstants_1 = require("../../MediaConstants");
|
|
|
200
200
|
|
|
201
201
|
var account_constants_1 = require("@techsee/techsee-common/lib/constants/account.constants");
|
|
202
202
|
|
|
203
|
-
var OpentokPublisher_1 = require("./OpentokPublisher");
|
|
203
|
+
var OpentokPublisher_1 = require("./OpentokPublisher");
|
|
204
|
+
|
|
205
|
+
var Compatibility_1 = require("../../MediaUtils/Compatibility"); // The preferred camera position to use for the video source
|
|
204
206
|
|
|
205
207
|
|
|
206
208
|
var OpentokFacingMode;
|
|
@@ -240,64 +242,69 @@ function (_super) {
|
|
|
240
242
|
_d.label = 1;
|
|
241
243
|
|
|
242
244
|
case 1:
|
|
243
|
-
_d.trys.push([1,
|
|
245
|
+
_d.trys.push([1, 8,, 9]);
|
|
244
246
|
|
|
245
247
|
newSelectedCamera = this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.BACK ? MediaConstants_1.MultiPartyCameraTypes.FRONT : MediaConstants_1.MultiPartyCameraTypes.BACK;
|
|
246
248
|
newVideoSourceId = this.getVideoSourceId(newSelectedCamera);
|
|
249
|
+
if (!this.currentPublisher.getVideoFilter()) return [3
|
|
250
|
+
/*break*/
|
|
251
|
+
, 4];
|
|
247
252
|
return [4
|
|
248
253
|
/*yield*/
|
|
249
|
-
, this.currentPublisher.
|
|
254
|
+
, this.currentPublisher.clearVideoFilter()];
|
|
250
255
|
|
|
251
256
|
case 2:
|
|
252
257
|
_d.sent();
|
|
253
258
|
|
|
254
|
-
if (utils_1.shouldMirrorCamera(!this.isMobile, newSelectedCamera)) {
|
|
255
|
-
(_a = this.currentPublisher.element) === null || _a === void 0 ? void 0 : _a.classList.add(OPENTOK_MIRRORED_CSS_CLASS);
|
|
256
|
-
} else {
|
|
257
|
-
(_b = this.currentPublisher.element) === null || _b === void 0 ? void 0 : _b.classList.remove(OPENTOK_MIRRORED_CSS_CLASS);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
this.selectedCamera = newSelectedCamera;
|
|
261
|
-
this.setVideoFilterPublisherSetting();
|
|
262
|
-
if (!(this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.BACK && this.currentPublisher.getVideoFilter())) return [3
|
|
263
|
-
/*break*/
|
|
264
|
-
, 4];
|
|
265
259
|
return [4
|
|
266
260
|
/*yield*/
|
|
267
|
-
,
|
|
261
|
+
, Compatibility_1.waitAfterClearingFilter()];
|
|
268
262
|
|
|
269
263
|
case 3:
|
|
270
264
|
_d.sent();
|
|
271
265
|
|
|
272
|
-
|
|
273
|
-
/*break*/
|
|
274
|
-
, 6];
|
|
266
|
+
_d.label = 4;
|
|
275
267
|
|
|
276
268
|
case 4:
|
|
269
|
+
return [4
|
|
270
|
+
/*yield*/
|
|
271
|
+
, this.currentPublisher.setVideoSource(newVideoSourceId)];
|
|
272
|
+
|
|
273
|
+
case 5:
|
|
274
|
+
_d.sent();
|
|
275
|
+
|
|
276
|
+
if (utils_1.shouldMirrorCamera(!this.isMobile, newSelectedCamera)) {
|
|
277
|
+
(_a = this.currentPublisher.element) === null || _a === void 0 ? void 0 : _a.classList.add(OPENTOK_MIRRORED_CSS_CLASS);
|
|
278
|
+
} else {
|
|
279
|
+
(_b = this.currentPublisher.element) === null || _b === void 0 ? void 0 : _b.classList.remove(OPENTOK_MIRRORED_CSS_CLASS);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
this.selectedCamera = newSelectedCamera;
|
|
283
|
+
this.setVideoFilterPublisherSetting();
|
|
277
284
|
if (!(this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.FRONT && ((_c = this.videoFilterPublisherSetting) === null || _c === void 0 ? void 0 : _c.videoFilter))) return [3
|
|
278
285
|
/*break*/
|
|
279
|
-
,
|
|
286
|
+
, 7];
|
|
280
287
|
return [4
|
|
281
288
|
/*yield*/
|
|
282
289
|
, this.currentPublisher.applyVideoFilter(this.videoFilterPublisherSetting.videoFilter)];
|
|
283
290
|
|
|
284
|
-
case
|
|
291
|
+
case 6:
|
|
285
292
|
_d.sent();
|
|
286
293
|
|
|
287
|
-
_d.label =
|
|
294
|
+
_d.label = 7;
|
|
288
295
|
|
|
289
|
-
case
|
|
296
|
+
case 7:
|
|
290
297
|
this.emit('cameraSourceChanged', OpentokPublisherEventMapper_1.createCameraSourceChangedEvent(this.currentPublisher.stream, this.selectedCamera, this.isMobile));
|
|
291
298
|
return [3
|
|
292
299
|
/*break*/
|
|
293
|
-
,
|
|
300
|
+
, 9];
|
|
294
301
|
|
|
295
|
-
case
|
|
302
|
+
case 8:
|
|
296
303
|
err_1 = _d.sent();
|
|
297
304
|
trace_1.traceError(JSON.stringify(err_1));
|
|
298
305
|
throw err_1;
|
|
299
306
|
|
|
300
|
-
case
|
|
307
|
+
case 9:
|
|
301
308
|
return [2
|
|
302
309
|
/*return*/
|
|
303
310
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MultiParty/opentok/OpentokVideoPublisher.js","../src/MultiParty/opentok/OpentokVideoPublisher.ts"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","_","label","sent","trys","ops","f","y","g","verb","Symbol","iterator","v","op","TypeError","pop","push","defineProperty","exports","OpentokVideoPublisher","utils_1","require","trace_1","OpentokPublisherEventMapper_1","MediaConstants_1","account_constants_1","OpentokPublisher_1","OpentokFacingMode","OPENTOK_MIRRORED_CSS_CLASS","_super","videoSettings","options","mediaCapabilitiesService","_this","publishAudio","enabled","currentPublisher","switchCamera","newSelectedCamera","newVideoSourceId","err_1","_a","_b","_c","_d","supportSwitchCamera","Error","selectedCamera","MultiPartyCameraTypes","BACK","FRONT","getVideoSourceId","setVideoSource","shouldMirrorCamera","isMobile","element","classList","add","remove","setVideoFilterPublisherSetting","getVideoFilter","clearVideoFilter","videoFilterPublisherSetting","videoFilter","applyVideoFilter","emit","createCameraSourceChangedEvent","stream","traceError","JSON","stringify","traceInfo","frontCameraDeviceId","backCameraDeviceId","VideoFilterType","BLUR","type","publishVideo","cameraEnabled","startWithAudioMuted","participantId","backgroundImageURI","videoSource","undefined","facingMode","USER","ENVIRONMENT","OT","initPublisher","publisherProperties","style","archiveStatusDisplayMode","audioLevelDisplayMode","mirror","initializeEventHandlers","on","createMediaAccessDeniedEvent","OpentokPublisher"],"mappings":"AAAA;;AACA,IAAIA,SAAS,GAAI,UAAQ,SAAKA,SAAd,IAA6B,YAAY;EACrD,IAAIC,cAAa,GAAG,uBAAUC,CAAV,EAAaC,CAAb,EAAgB;IAChCF,cAAa,GAAGG,MAAM,CAACC,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6BC,KAA7B,IAAsC,UAAUL,CAAV,EAAaC,CAAb,EAAgB;MAAED,CAAC,CAACI,SAAF,GAAcH,CAAd;IAAkB,CAD/D,IAEZ,UAAUD,CAAV,EAAaC,CAAb,EAAgB;MAAE,KAAK,IAAIK,CAAT,IAAcL,CAAd;QAAiB,IAAIC,MAAM,CAACK,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCR,CAArC,EAAwCK,CAAxC,CAAJ,EAAgDN,CAAC,CAACM,CAAD,CAAD,GAAOL,CAAC,CAACK,CAAD,CAAR;MAAjE;IAA+E,CAFrG;;IAGA,OAAOP,cAAa,CAACC,CAAD,EAAIC,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUD,CAAV,EAAaC,CAAb,EAAgB;IACnBF,cAAa,CAACC,CAAD,EAAIC,CAAJ,CAAb;;IACA,SAASS,EAAT,GAAc;MAAE,KAAKC,WAAL,GAAmBX,CAAnB;IAAuB;;IACvCA,CAAC,CAACO,SAAF,GAAcN,CAAC,KAAK,IAAN,GAAaC,MAAM,CAACU,MAAP,CAAcX,CAAd,CAAb,IAAiCS,EAAE,CAACH,SAAH,GAAeN,CAAC,CAACM,SAAjB,EAA4B,IAAIG,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZ2C,EAA5C;;AAaA,IAAIG,QAAQ,GAAI,UAAQ,SAAKA,QAAd,IAA2B,YAAY;EAClDA,QAAQ,GAAGX,MAAM,CAACY,MAAP,IAAiB,UAASC,CAAT,EAAY;IACpC,KAAK,IAAIC,CAAJ,EAAOC,CAAC,GAAG,CAAX,EAAcC,CAAC,GAAGC,SAAS,CAACC,MAAjC,EAAyCH,CAAC,GAAGC,CAA7C,EAAgDD,CAAC,EAAjD,EAAqD;MACjDD,CAAC,GAAGG,SAAS,CAACF,CAAD,CAAb;;MACA,KAAK,IAAIX,CAAT,IAAcU,CAAd;QAAiB,IAAId,MAAM,CAACK,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCO,CAArC,EAAwCV,CAAxC,CAAJ,EACbS,CAAC,CAACT,CAAD,CAAD,GAAOU,CAAC,CAACV,CAAD,CAAR;MADJ;IAEH;;IACD,OAAOS,CAAP;EACH,CAPD;;EAQA,OAAOF,QAAQ,CAACQ,KAAT,CAAe,IAAf,EAAqBF,SAArB,CAAP;AACH,CAVD;;AAWA,IAAIG,SAAS,GAAI,UAAQ,SAAKA,SAAd,IAA4B,UAAUC,OAAV,EAAmBC,UAAnB,EAA+BC,CAA/B,EAAkCC,SAAlC,EAA6C;EACrF,SAASC,KAAT,CAAeC,KAAf,EAAsB;IAAE,OAAOA,KAAK,YAAYH,CAAjB,GAAqBG,KAArB,GAA6B,IAAIH,CAAJ,CAAM,UAAUI,OAAV,EAAmB;MAAEA,OAAO,CAACD,KAAD,CAAP;IAAiB,CAA5C,CAApC;EAAoF;;EAC5G,OAAO,KAAKH,CAAC,KAAKA,CAAC,GAAGK,OAAT,CAAN,EAAyB,UAAUD,OAAV,EAAmBE,MAAnB,EAA2B;IACvD,SAASC,SAAT,CAAmBJ,KAAnB,EAA0B;MAAE,IAAI;QAAEK,IAAI,CAACP,SAAS,CAACQ,IAAV,CAAeN,KAAf,CAAD,CAAJ;MAA8B,CAApC,CAAqC,OAAOO,CAAP,EAAU;QAAEJ,MAAM,CAACI,CAAD,CAAN;MAAY;IAAE;;IAC3F,SAASC,QAAT,CAAkBR,KAAlB,EAAyB;MAAE,IAAI;QAAEK,IAAI,CAACP,SAAS,CAAC,OAAD,CAAT,CAAmBE,KAAnB,CAAD,CAAJ;MAAkC,CAAxC,CAAyC,OAAOO,CAAP,EAAU;QAAEJ,MAAM,CAACI,CAAD,CAAN;MAAY;IAAE;;IAC9F,SAASF,IAAT,CAAcI,MAAd,EAAsB;MAAEA,MAAM,CAACC,IAAP,GAAcT,OAAO,CAACQ,MAAM,CAACT,KAAR,CAArB,GAAsCD,KAAK,CAACU,MAAM,CAACT,KAAR,CAAL,CAAoBW,IAApB,CAAyBP,SAAzB,EAAoCI,QAApC,CAAtC;IAAsF;;IAC9GH,IAAI,CAAC,CAACP,SAAS,GAAGA,SAAS,CAACL,KAAV,CAAgBE,OAAhB,EAAyBC,UAAU,IAAI,EAAvC,CAAb,EAAyDU,IAAzD,EAAD,CAAJ;EACH,CALM,CAAP;AAMH,CARD;;AASA,IAAIM,WAAW,GAAI,UAAQ,SAAKA,WAAd,IAA8B,UAAUjB,OAAV,EAAmBkB,IAAnB,EAAyB;EACrE,IAAIC,CAAC,GAAG;IAAEC,KAAK,EAAE,CAAT;IAAYC,IAAI,EAAE,gBAAW;MAAE,IAAI7B,CAAC,CAAC,CAAD,CAAD,GAAO,CAAX,EAAc,MAAMA,CAAC,CAAC,CAAD,CAAP;MAAY,OAAOA,CAAC,CAAC,CAAD,CAAR;IAAc,CAAvE;IAAyE8B,IAAI,EAAE,EAA/E;IAAmFC,GAAG,EAAE;EAAxF,CAAR;EAAA,IAAsGC,CAAtG;EAAA,IAAyGC,CAAzG;EAAA,IAA4GjC,CAA5G;EAAA,IAA+GkC,CAA/G;EACA,OAAOA,CAAC,GAAG;IAAEf,IAAI,EAAEgB,IAAI,CAAC,CAAD,CAAZ;IAAiB,SAASA,IAAI,CAAC,CAAD,CAA9B;IAAmC,UAAUA,IAAI,CAAC,CAAD;EAAjD,CAAJ,EAA4D,OAAOC,MAAP,KAAkB,UAAlB,KAAiCF,CAAC,CAACE,MAAM,CAACC,QAAR,CAAD,GAAqB,YAAW;IAAE,OAAO,IAAP;EAAc,CAAjF,CAA5D,EAAgJH,CAAvJ;;EACA,SAASC,IAAT,CAAchC,CAAd,EAAiB;IAAE,OAAO,UAAUmC,CAAV,EAAa;MAAE,OAAOpB,IAAI,CAAC,CAACf,CAAD,EAAImC,CAAJ,CAAD,CAAX;IAAsB,CAA5C;EAA+C;;EAClE,SAASpB,IAAT,CAAcqB,EAAd,EAAkB;IACd,IAAIP,CAAJ,EAAO,MAAM,IAAIQ,SAAJ,CAAc,iCAAd,CAAN;;IACP,OAAOb,CAAP;MAAU,IAAI;QACV,IAAIK,CAAC,GAAG,CAAJ,EAAOC,CAAC,KAAKjC,CAAC,GAAGuC,EAAE,CAAC,CAAD,CAAF,GAAQ,CAAR,GAAYN,CAAC,CAAC,QAAD,CAAb,GAA0BM,EAAE,CAAC,CAAD,CAAF,GAAQN,CAAC,CAAC,OAAD,CAAD,KAAe,CAACjC,CAAC,GAAGiC,CAAC,CAAC,QAAD,CAAN,KAAqBjC,CAAC,CAACN,IAAF,CAAOuC,CAAP,CAArB,EAAgC,CAA/C,CAAR,GAA4DA,CAAC,CAACd,IAAjG,CAAD,IAA2G,CAAC,CAACnB,CAAC,GAAGA,CAAC,CAACN,IAAF,CAAOuC,CAAP,EAAUM,EAAE,CAAC,CAAD,CAAZ,CAAL,EAAuBhB,IAA9I,EAAoJ,OAAOvB,CAAP;QACpJ,IAAIiC,CAAC,GAAG,CAAJ,EAAOjC,CAAX,EAAcuC,EAAE,GAAG,CAACA,EAAE,CAAC,CAAD,CAAF,GAAQ,CAAT,EAAYvC,CAAC,CAACa,KAAd,CAAL;;QACd,QAAQ0B,EAAE,CAAC,CAAD,CAAV;UACI,KAAK,CAAL;UAAQ,KAAK,CAAL;YAAQvC,CAAC,GAAGuC,EAAJ;YAAQ;;UACxB,KAAK,CAAL;YAAQZ,CAAC,CAACC,KAAF;YAAW,OAAO;cAAEf,KAAK,EAAE0B,EAAE,CAAC,CAAD,CAAX;cAAgBhB,IAAI,EAAE;YAAtB,CAAP;;UACnB,KAAK,CAAL;YAAQI,CAAC,CAACC,KAAF;YAAWK,CAAC,GAAGM,EAAE,CAAC,CAAD,CAAN;YAAWA,EAAE,GAAG,CAAC,CAAD,CAAL;YAAU;;UACxC,KAAK,CAAL;YAAQA,EAAE,GAAGZ,CAAC,CAACI,GAAF,CAAMU,GAAN,EAAL;;YAAkBd,CAAC,CAACG,IAAF,CAAOW,GAAP;;YAAc;;UACxC;YACI,IAAI,EAAEzC,CAAC,GAAG2B,CAAC,CAACG,IAAN,EAAY9B,CAAC,GAAGA,CAAC,CAACK,MAAF,GAAW,CAAX,IAAgBL,CAAC,CAACA,CAAC,CAACK,MAAF,GAAW,CAAZ,CAAnC,MAAuDkC,EAAE,CAAC,CAAD,CAAF,KAAU,CAAV,IAAeA,EAAE,CAAC,CAAD,CAAF,KAAU,CAAhF,CAAJ,EAAwF;cAAEZ,CAAC,GAAG,CAAJ;cAAO;YAAW;;YAC5G,IAAIY,EAAE,CAAC,CAAD,CAAF,KAAU,CAAV,KAAgB,CAACvC,CAAD,IAAOuC,EAAE,CAAC,CAAD,CAAF,GAAQvC,CAAC,CAAC,CAAD,CAAT,IAAgBuC,EAAE,CAAC,CAAD,CAAF,GAAQvC,CAAC,CAAC,CAAD,CAAhD,CAAJ,EAA2D;cAAE2B,CAAC,CAACC,KAAF,GAAUW,EAAE,CAAC,CAAD,CAAZ;cAAiB;YAAQ;;YACtF,IAAIA,EAAE,CAAC,CAAD,CAAF,KAAU,CAAV,IAAeZ,CAAC,CAACC,KAAF,GAAU5B,CAAC,CAAC,CAAD,CAA9B,EAAmC;cAAE2B,CAAC,CAACC,KAAF,GAAU5B,CAAC,CAAC,CAAD,CAAX;cAAgBA,CAAC,GAAGuC,EAAJ;cAAQ;YAAQ;;YACrE,IAAIvC,CAAC,IAAI2B,CAAC,CAACC,KAAF,GAAU5B,CAAC,CAAC,CAAD,CAApB,EAAyB;cAAE2B,CAAC,CAACC,KAAF,GAAU5B,CAAC,CAAC,CAAD,CAAX;;cAAgB2B,CAAC,CAACI,GAAF,CAAMW,IAAN,CAAWH,EAAX;;cAAgB;YAAQ;;YACnE,IAAIvC,CAAC,CAAC,CAAD,CAAL,EAAU2B,CAAC,CAACI,GAAF,CAAMU,GAAN;;YACVd,CAAC,CAACG,IAAF,CAAOW,GAAP;;YAAc;QAXtB;;QAaAF,EAAE,GAAGb,IAAI,CAAChC,IAAL,CAAUc,OAAV,EAAmBmB,CAAnB,CAAL;MACH,CAjBS,CAiBR,OAAOP,CAAP,EAAU;QAAEmB,EAAE,GAAG,CAAC,CAAD,EAAInB,CAAJ,CAAL;QAAaa,CAAC,GAAG,CAAJ;MAAQ,CAjBzB,SAiBkC;QAAED,CAAC,GAAGhC,CAAC,GAAG,CAAR;MAAY;IAjB1D;;IAkBA,IAAIuC,EAAE,CAAC,CAAD,CAAF,GAAQ,CAAZ,EAAe,MAAMA,EAAE,CAAC,CAAD,CAAR;IAAa,OAAO;MAAE1B,KAAK,EAAE0B,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAV,GAAgB,KAAK,CAA9B;MAAiChB,IAAI,EAAE;IAAvC,CAAP;EAC/B;AACJ,CA1BD;;AA2BApC,MAAM,CAACwD,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;EAAE/B,KAAK,EAAE;AAAT,CAA7C;AACA+B,OAAO,CAACC,qBAAR,GAAgC,KAAK,CAArC;;AC7DA,IAAAC,OAAA,GAAAC,OAAA,CAAA,UAAA,CAAA;;AACA,IAAAC,OAAA,GAAAD,OAAA,CAAA,SAAA,CAAA;;AACA,IAAAE,6BAAA,GAAAF,OAAA,CAAA,+BAAA,CAAA;;AACA,IAAAG,gBAAA,GAAAH,OAAA,CAAA,sBAAA,CAAA;;AACA,IAAAI,mBAAA,GAAAJ,OAAA,CAAA,yDAAA,CAAA;;AACA,IAAAK,kBAAA,GAAAL,OAAA,CAAA,oBAAA,CAAA,C,CAEA;;;AACA,IAAKM,iBAAL;;AAAA,CAAA,UAAKA,iBAAL,EAAsB;EAClBA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAA;EACAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAAA;AACH,CAHD,EAAKA,iBAAiB,KAAjBA,iBAAiB,GAAA,EAAA,CAAtB;;AAKA,IAAMC,0BAA0B,GAAG,aAAnC;;AAMA,IAAAT,qBAAA;AAAA;AAAA,UAAAU,MAAA,EAAA;EAA2CxE,SAAA,CAAA8D,qBAAA,EAAAU,MAAA,CAAA;;EAKvC,SAAAV,qBAAA,CACIW,aADJ,EAEIC,OAFJ,EAGIC,wBAHJ,EAG+C;IAH/C,IAAAC,KAAA,GAKIJ,MAAA,CAAA7D,IAAA,CAAA,IAAA,EAAM+D,OAAN,EAAeC,wBAAf,KAAwC,IAL5C;;IAmDOC,KAAA,CAAAC,YAAA,GAAe,UAACC,OAAD,EAAiB;MAAW,OAAAF,KAAI,CAACG,gBAAL,CAAsBF,YAAtB,CAAmCC,OAAnC,CAAA;IAA2C,CAAtF;;IAEAF,KAAA,CAAAI,YAAA,GAAe,YAAA;MAAA,OAAAxD,SAAA,CAAAoD,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;QDId,IAAIK,iBAAJ,EAAuBC,gBAAvB,EAAyCC,KAAzC;;QACA,IAAIC,EAAJ,EAAQC,EAAR,EAAYC,EAAZ;;QACA,OAAO5C,WAAW,CAAC,IAAD,EAAO,UAAU6C,EAAV,EAAc;UACnC,QAAQA,EAAE,CAAC1C,KAAX;YACI,KAAK,CAAL;cCPZ,IAAI,CAAC,KAAK8B,wBAAL,CAA8Ba,mBAAnC,EAAwD;gBACpD,MAAM,IAAIC,KAAJ,CAAU,2BAAV,CAAN;cACH;;cDSeF,EAAE,CAAC1C,KAAH,GAAW,CAAX;;YACJ,KAAK,CAAL;cACI0C,EAAE,CAACxC,IAAH,CAAQY,IAAR,CAAa,CAAC,CAAD,EAAI,CAAJ,GAAS,CAAT,CAAb;;cCRNsB,iBAAiB,GACnB,KAAKS,cAAL,KAAwBvB,gBAAA,CAAAwB,qBAAA,CAAsBC,IAA9C,GACMzB,gBAAA,CAAAwB,qBAAA,CAAsBE,KAD5B,GAEM1B,gBAAA,CAAAwB,qBAAA,CAAsBC,IAH1B;cAIAV,gBAAgB,GAAG,KAAKY,gBAAL,CAAsBb,iBAAtB,CAAnB;cAEN,OAAA,CAAA;cAAA;cAAA,EAAM,KAAKF,gBAAL,CAAsBgB,cAAtB,CAAqCb,gBAArC,CAAN,CAAA;;YDQQ,KAAK,CAAL;cCRRK,EAAA,CAAAzC,IAAA;;cAEA,IAAIiB,OAAA,CAAAiC,kBAAA,CAAmB,CAAC,KAAKC,QAAzB,EAAmChB,iBAAnC,CAAJ,EAA2D;gBACvD,CAAAG,EAAA,GAAA,KAAKL,gBAAL,CAAsBmB,OAAtB,MAA6B,IAA7B,IAA6Bd,EAAA,KAAA,KAAA,CAA7B,GAA6B,KAAA,CAA7B,GAA6BA,EAAA,CAAEe,SAAF,CAAYC,GAAZ,CAAgB7B,0BAAhB,CAA7B;cACH,CAFD,MAEO;gBACH,CAAAc,EAAA,GAAA,KAAKN,gBAAL,CAAsBmB,OAAtB,MAA6B,IAA7B,IAA6Bb,EAAA,KAAA,KAAA,CAA7B,GAA6B,KAAA,CAA7B,GAA6BA,EAAA,CAAEc,SAAF,CAAYE,MAAZ,CAAmB9B,0BAAnB,CAA7B;cACH;;cAED,KAAKmB,cAAL,GAAsBT,iBAAtB;cACA,KAAKqB,8BAAL;cDSY,IAAI,ECPZ,KAAKZ,cAAL,KAAwBvB,gBAAA,CAAAwB,qBAAA,CAAsBC,IAA9C,IAAsD,KAAKb,gBAAL,CAAsBwB,cAAtB,EDO1C,CAAJ,ECPR,OAAA,CAAA;cAAA;cAAA,EAAA,CAAA,CAAA;cACA,OAAA,CAAA;cAAA;cAAA,EAAM,KAAKxB,gBAAL,CAAsByB,gBAAtB,EAAN,CAAA;;YDQI,KAAK,CAAL;cCRJjB,EAAA,CAAAzC,IAAA;;cDUQ,OAAO,CAAC;cAAE;cAAH,EAAc,CAAd,CAAP;;YACJ,KAAK,CAAL;cACI,IAAI,ECVZ,KAAK4C,cAAL,KAAwBvB,gBAAA,CAAAwB,qBAAA,CAAsBE,KAA9C,KAAmD,CAAAP,EAAA,GACnD,KAAKmB,2BAD8C,MACnB,IADmB,IACnBnB,EAAA,KAAA,KAAA,CADmB,GACnB,KAAA,CADmB,GACnBA,EAAA,CAAEoB,WADlC,CDUY,CAAJ,ECVR,OAAA,CAAA;cAAA;cAAA,EAAA,CAAA,CAAA;cAGA,OAAA,CAAA;cAAA;cAAA,EAAM,KAAK3B,gBAAL,CAAsB4B,gBAAtB,CAAuC,KAAKF,2BAAL,CAAiCC,WAAxE,CAAN,CAAA;;YDSI,KAAK,CAAL;cCTJnB,EAAA,CAAAzC,IAAA;;cDWQyC,EAAE,CAAC1C,KAAH,GAAW,CAAX;;YACJ,KAAK,CAAL;cCVR,KAAK+D,IAAL,CACI,qBADJ,EAEI1C,6BAAA,CAAA2C,8BAAA,CAA+B,KAAK9B,gBAAL,CAAsB+B,MAArD,EAA6D,KAAKpB,cAAlE,EAAkF,KAAKO,QAAvF,CAFJ;cDYY,OAAO,CAAC;cAAE;cAAH,EAAc,CAAd,CAAP;;YACJ,KAAK,CAAL;cACId,KAAK,GAAGI,EAAE,CAACzC,IAAH,EAAR;cCTZmB,OAAA,CAAA8C,UAAA,CAAWC,IAAI,CAACC,SAAL,CAAe9B,KAAf,CAAX;cACA,MAAMA,KAAN;;YDWQ,KAAK,CAAL;cAAQ,OAAO,CAAC;cAAE;cAAH,CAAP;UAzCZ;QA2CH,CA5CiB,CAAlB;MA6CH,CCnDiB,CAAA;IAuCrB,CAvCM;;IAyCCP,KAAA,CAAAkB,gBAAA,GAAmB,UAACJ,cAAD,EAAsC;MAC7DzB,OAAA,CAAAiD,SAAA,CAAU,oBAAV,EAAgCxB,cAAhC;MAEA,OAAOA,cAAc,KAAKvB,gBAAA,CAAAwB,qBAAA,CAAsBE,KAAzC,GACDjB,KAAI,CAACD,wBAAL,CAA8BwC,mBAD7B,GAEDvC,KAAI,CAACD,wBAAL,CAA8ByC,kBAFpC;IAGH,CANO;;IAQAxC,KAAA,CAAA0B,8BAAA,GAAiC,YAAA;MACrC1B,KAAI,CAAC6B,2BAAL,GACI7B,KAAI,CAACc,cAAL,KAAwBvB,gBAAA,CAAAwB,qBAAA,CAAsBE,KAA9C,IAAuDjB,KAAI,CAAC8B,WAAL,KAAqBtC,mBAAA,CAAAiD,eAAA,CAAgBC,IAA5F,GACM;QAACZ,WAAW,EAAE;UAACa,IAAI,EAAEnD,mBAAA,CAAAiD,eAAA,CAAgBC;QAAvB;MAAd,CADN,GAEM,EAHV;IAIH,CALO;;IAOD1C,KAAA,CAAA4C,YAAA,GAAe,UAAC1C,OAAD,EAAiB;MAAW,OAAAF,KAAI,CAACG,gBAAL,CAAsByC,YAAtB,CAAmC1C,OAAnC,CAAA;IAA2C,CAAtF;;IAtGI,IAAAY,cAAc,GAAqDjB,aAAa,CAAAiB,cAAhF;IAAA,IAAgB+B,aAAa,GAAsChD,aAAa,CAAAgD,aAAhF;IAAA,IAA+BC,mBAAmB,GAAiBjD,aAAa,CAAAiD,mBAAhF;IAAA,IAAoDhB,WAAW,GAAIjC,aAAa,CAAAiC,WAAhF;IAEP9B,KAAI,CAACc,cAAL,GAAsBA,cAAtB;IACAd,KAAI,CAAC8B,WAAL,GAAmBA,WAAnB;IAEO,IAAAiB,aAAa,GAAwBjD,OAAO,CAAAiD,aAA5C;IAAA,IAAeC,kBAAkB,GAAIlD,OAAO,CAAAkD,kBAA5C;IACP,IAAMC,WAAW,GAAI,CAACjD,KAAI,CAACqB,QAAN,IAAkBrB,KAAI,CAACkB,gBAAL,CAAsBJ,cAAtB,CAAnB,IAA6DoC,SAAjF;IACA,IAAMC,UAAU,GACXnD,KAAI,CAACqB,QAAL,IACG,CAAC4B,WADJ,KAEInC,cAAc,KAAKvB,gBAAA,CAAAwB,qBAAA,CAAsBE,KAAzC,GACKvB,iBAAiB,CAAC0D,IADvB,GAEK1D,iBAAiB,CAAC2D,WAJ3B,CAAD,IAKAH,SANJ;;IAQAlD,KAAI,CAAC0B,8BAAL;;IACA1B,KAAI,CAACG,gBAAL,GAAwBmD,EAAE,CAACC,aAAH,CACpBR,aADoB,EACP5G,QAAA,CAAAA,QAAA,CAAAA,QAAA,CAAA,EAAA,EAEN6D,KAAI,CAACwD,mBAFC,CAAA,EAEkB;MAC3BC,KAAK,EAAAtH,QAAA,CAAAA,QAAA,CAAA,EAAA,EACE6D,KAAI,CAACwD,mBAAL,CAAyBC,KAD3B,CAAA,EACgC;QACjCC,wBAAwB,EAAE,KADO;QAEjCC,qBAAqB,EAAE,KAFU;QAGjCX,kBAAkB,EAAAA;MAHe,CADhC,CADsB;MAO3B/C,YAAY,EAAE,CAAC6C,mBAPY;MAQ3BF,YAAY,EAAEC,aARa;MAS3BI,WAAW,EAAAA,WATgB;MAU3BE,UAAU,EAAAA,UAViB;MAW3BS,MAAM,EAAEzE,OAAA,CAAAiC,kBAAA,CAAmBpB,KAAI,CAACqB,QAAxB,EAAkCP,cAAlC;IAXmB,CAFlB,CAAA,EAcNd,KAAI,CAAC6B,2BAdC,CADO,EAiBpBxC,OAAA,CAAA8C,UAjBoB,CAAxB;;IAoBAnC,KAAI,CAAC6D,uBAAL;;IACA7D,KAAI,CAACG,gBAAL,CAAsB2D,EAAtB,CAAyB,cAAzB,EAAyC,YAAA;MACrCzE,OAAA,CAAAiD,SAAA,CAAU,oCAAV;;MAEAtC,KAAI,CAACgC,IAAL,CAAU,yBAAV,EAAqC1C,6BAAA,CAAAyE,4BAAA,CAA6B,IAA7B,CAArC;IACH,CAJD;;ID6FA,OAAO/D,KAAP;ECxFH;;EA6DL,OAAAd,qBAAA;AAnHA,CAAA,CAA2CO,kBAAA,CAAAuE,gBAA3C,CAAA;;AAAa/E,OAAA,CAAAC,qBAAA,GAAAA,qBAAA","file":"OpentokVideoPublisher.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OpentokVideoPublisher = void 0;\nvar utils_1 = require(\"../utils\");\nvar trace_1 = require(\"./trace\");\nvar OpentokPublisherEventMapper_1 = require(\"./OpentokPublisherEventMapper\");\nvar MediaConstants_1 = require(\"../../MediaConstants\");\nvar account_constants_1 = require(\"@techsee/techsee-common/lib/constants/account.constants\");\nvar OpentokPublisher_1 = require(\"./OpentokPublisher\");\n// The preferred camera position to use for the video source\nvar OpentokFacingMode;\n(function (OpentokFacingMode) {\n OpentokFacingMode[\"USER\"] = \"user\";\n OpentokFacingMode[\"ENVIRONMENT\"] = \"environment\";\n})(OpentokFacingMode || (OpentokFacingMode = {}));\nvar OPENTOK_MIRRORED_CSS_CLASS = 'OT_mirrored';\nvar OpentokVideoPublisher = /** @class */ (function (_super) {\n __extends(OpentokVideoPublisher, _super);\n function OpentokVideoPublisher(videoSettings, options, mediaCapabilitiesService) {\n var _this = _super.call(this, options, mediaCapabilitiesService) || this;\n _this.publishAudio = function (enabled) { return _this.currentPublisher.publishAudio(enabled); };\n _this.switchCamera = function () { return __awaiter(_this, void 0, void 0, function () {\n var newSelectedCamera, newVideoSourceId, err_1;\n var _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this.mediaCapabilitiesService.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n _d.label = 1;\n case 1:\n _d.trys.push([1, 7, , 8]);\n newSelectedCamera = this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.BACK\n ? MediaConstants_1.MultiPartyCameraTypes.FRONT\n : MediaConstants_1.MultiPartyCameraTypes.BACK;\n newVideoSourceId = this.getVideoSourceId(newSelectedCamera);\n return [4 /*yield*/, this.currentPublisher.setVideoSource(newVideoSourceId)];\n case 2:\n _d.sent();\n if (utils_1.shouldMirrorCamera(!this.isMobile, newSelectedCamera)) {\n (_a = this.currentPublisher.element) === null || _a === void 0 ? void 0 : _a.classList.add(OPENTOK_MIRRORED_CSS_CLASS);\n }\n else {\n (_b = this.currentPublisher.element) === null || _b === void 0 ? void 0 : _b.classList.remove(OPENTOK_MIRRORED_CSS_CLASS);\n }\n this.selectedCamera = newSelectedCamera;\n this.setVideoFilterPublisherSetting();\n if (!(this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.BACK && this.currentPublisher.getVideoFilter())) return [3 /*break*/, 4];\n return [4 /*yield*/, this.currentPublisher.clearVideoFilter()];\n case 3:\n _d.sent();\n return [3 /*break*/, 6];\n case 4:\n if (!(this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.FRONT && ((_c = this.videoFilterPublisherSetting) === null || _c === void 0 ? void 0 : _c.videoFilter))) return [3 /*break*/, 6];\n return [4 /*yield*/, this.currentPublisher.applyVideoFilter(this.videoFilterPublisherSetting.videoFilter)];\n case 5:\n _d.sent();\n _d.label = 6;\n case 6:\n this.emit('cameraSourceChanged', OpentokPublisherEventMapper_1.createCameraSourceChangedEvent(this.currentPublisher.stream, this.selectedCamera, this.isMobile));\n return [3 /*break*/, 8];\n case 7:\n err_1 = _d.sent();\n trace_1.traceError(JSON.stringify(err_1));\n throw err_1;\n case 8: return [2 /*return*/];\n }\n });\n }); };\n _this.getVideoSourceId = function (selectedCamera) {\n trace_1.traceInfo('getVideoSourceId: ', selectedCamera);\n return selectedCamera === MediaConstants_1.MultiPartyCameraTypes.FRONT\n ? _this.mediaCapabilitiesService.frontCameraDeviceId\n : _this.mediaCapabilitiesService.backCameraDeviceId;\n };\n _this.setVideoFilterPublisherSetting = function () {\n _this.videoFilterPublisherSetting =\n _this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.FRONT && _this.videoFilter === account_constants_1.VideoFilterType.BLUR\n ? { videoFilter: { type: account_constants_1.VideoFilterType.BLUR } }\n : {};\n };\n _this.publishVideo = function (enabled) { return _this.currentPublisher.publishVideo(enabled); };\n var selectedCamera = videoSettings.selectedCamera, cameraEnabled = videoSettings.cameraEnabled, startWithAudioMuted = videoSettings.startWithAudioMuted, videoFilter = videoSettings.videoFilter;\n _this.selectedCamera = selectedCamera;\n _this.videoFilter = videoFilter;\n var participantId = options.participantId, backgroundImageURI = options.backgroundImageURI;\n var videoSource = (!_this.isMobile && _this.getVideoSourceId(selectedCamera)) || undefined;\n var facingMode = (_this.isMobile &&\n !videoSource &&\n (selectedCamera === MediaConstants_1.MultiPartyCameraTypes.FRONT\n ? OpentokFacingMode.USER\n : OpentokFacingMode.ENVIRONMENT)) ||\n undefined;\n _this.setVideoFilterPublisherSetting();\n _this.currentPublisher = OT.initPublisher(participantId, __assign(__assign(__assign({}, _this.publisherProperties), { style: __assign(__assign({}, _this.publisherProperties.style), { archiveStatusDisplayMode: 'off', audioLevelDisplayMode: 'off', backgroundImageURI: backgroundImageURI }), publishAudio: !startWithAudioMuted, publishVideo: cameraEnabled, videoSource: videoSource,\n facingMode: facingMode, mirror: utils_1.shouldMirrorCamera(_this.isMobile, selectedCamera) }), _this.videoFilterPublisherSetting), trace_1.traceError);\n _this.initializeEventHandlers();\n _this.currentPublisher.on('accessDenied', function () {\n trace_1.traceInfo('Publisher denied media permissions');\n _this.emit('mediaDeviceAccessDenied', OpentokPublisherEventMapper_1.createMediaAccessDeniedEvent(true));\n });\n return _this;\n }\n return OpentokVideoPublisher;\n}(OpentokPublisher_1.OpentokPublisher));\nexports.OpentokVideoPublisher = OpentokVideoPublisher;\n","import {VideoSettings} from '../types';\nimport {shouldMirrorCamera} from '../utils';\nimport {traceError, traceInfo} from './trace';\nimport {createCameraSourceChangedEvent, createMediaAccessDeniedEvent} from './OpentokPublisherEventMapper';\nimport {MultiPartyCameraTypes} from '../../MediaConstants';\nimport {VideoFilterType} from '@techsee/techsee-common/lib/constants/account.constants';\nimport {IMediaCapablities, IOpentokPublisher, OpentokPublisher, OpentokPublisherOptions} from './OpentokPublisher';\n\n// The preferred camera position to use for the video source\nenum OpentokFacingMode {\n USER = 'user',\n ENVIRONMENT = 'environment'\n}\n\nconst OPENTOK_MIRRORED_CSS_CLASS = 'OT_mirrored';\n\nexport interface IOpentokVideoPublisher extends IOpentokPublisher {\n publishAudio: (enabled: boolean) => void;\n switchCamera: () => Promise<void>;\n}\nexport class OpentokVideoPublisher extends OpentokPublisher implements IOpentokVideoPublisher {\n protected currentPublisher: OT.Publisher;\n private videoFilter?: VideoFilterType;\n private videoFilterPublisherSetting?: {videoFilter?: {type: VideoFilterType}};\n\n constructor(\n videoSettings: VideoSettings,\n options: OpentokPublisherOptions,\n mediaCapabilitiesService: IMediaCapablities\n ) {\n super(options, mediaCapabilitiesService);\n\n const {selectedCamera, cameraEnabled, startWithAudioMuted, videoFilter} = videoSettings;\n\n this.selectedCamera = selectedCamera;\n this.videoFilter = videoFilter;\n\n const {participantId, backgroundImageURI} = options;\n const videoSource = (!this.isMobile && this.getVideoSourceId(selectedCamera)) || undefined;\n const facingMode =\n (this.isMobile &&\n !videoSource &&\n (selectedCamera === MultiPartyCameraTypes.FRONT\n ? OpentokFacingMode.USER\n : OpentokFacingMode.ENVIRONMENT)) ||\n undefined;\n\n this.setVideoFilterPublisherSetting();\n this.currentPublisher = OT.initPublisher(\n participantId,\n {\n ...this.publisherProperties,\n style: {\n ...this.publisherProperties.style,\n archiveStatusDisplayMode: 'off',\n audioLevelDisplayMode: 'off',\n backgroundImageURI\n },\n publishAudio: !startWithAudioMuted,\n publishVideo: cameraEnabled,\n videoSource,\n facingMode,\n mirror: shouldMirrorCamera(this.isMobile, selectedCamera),\n ...this.videoFilterPublisherSetting\n },\n traceError\n );\n\n this.initializeEventHandlers();\n this.currentPublisher.on('accessDenied', () => {\n traceInfo('Publisher denied media permissions');\n\n this.emit('mediaDeviceAccessDenied', createMediaAccessDeniedEvent(true));\n });\n }\n\n public publishAudio = (enabled: boolean): void => this.currentPublisher.publishAudio(enabled);\n\n public switchCamera = async (): Promise<void> => {\n if (!this.mediaCapabilitiesService.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n\n try {\n const newSelectedCamera =\n this.selectedCamera === MultiPartyCameraTypes.BACK\n ? MultiPartyCameraTypes.FRONT\n : MultiPartyCameraTypes.BACK;\n const newVideoSourceId = this.getVideoSourceId(newSelectedCamera);\n\n await this.currentPublisher.setVideoSource(newVideoSourceId);\n\n if (shouldMirrorCamera(!this.isMobile, newSelectedCamera)) {\n this.currentPublisher.element?.classList.add(OPENTOK_MIRRORED_CSS_CLASS);\n } else {\n this.currentPublisher.element?.classList.remove(OPENTOK_MIRRORED_CSS_CLASS);\n }\n\n this.selectedCamera = newSelectedCamera;\n this.setVideoFilterPublisherSetting();\n\n if (this.selectedCamera === MultiPartyCameraTypes.BACK && this.currentPublisher.getVideoFilter()) {\n await this.currentPublisher.clearVideoFilter();\n } else if (\n this.selectedCamera === MultiPartyCameraTypes.FRONT &&\n this.videoFilterPublisherSetting?.videoFilter\n ) {\n await this.currentPublisher.applyVideoFilter(this.videoFilterPublisherSetting.videoFilter);\n }\n this.emit(\n 'cameraSourceChanged',\n createCameraSourceChangedEvent(this.currentPublisher.stream, this.selectedCamera, this.isMobile)\n );\n } catch (err) {\n traceError(JSON.stringify(err));\n throw err;\n }\n };\n\n private getVideoSourceId = (selectedCamera: MultiPartyCameraTypes): string => {\n traceInfo('getVideoSourceId: ', selectedCamera);\n\n return selectedCamera === MultiPartyCameraTypes.FRONT\n ? this.mediaCapabilitiesService.frontCameraDeviceId\n : this.mediaCapabilitiesService.backCameraDeviceId;\n };\n\n private setVideoFilterPublisherSetting = (): void => {\n this.videoFilterPublisherSetting =\n this.selectedCamera === MultiPartyCameraTypes.FRONT && this.videoFilter === VideoFilterType.BLUR\n ? {videoFilter: {type: VideoFilterType.BLUR}}\n : {};\n };\n\n public publishVideo = (enabled: boolean): void => this.currentPublisher.publishVideo(enabled);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["MultiParty/opentok/OpentokVideoPublisher.js","../src/MultiParty/opentok/OpentokVideoPublisher.ts"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","_","label","sent","trys","ops","f","y","g","verb","Symbol","iterator","v","op","TypeError","pop","push","defineProperty","exports","OpentokVideoPublisher","utils_1","require","trace_1","OpentokPublisherEventMapper_1","MediaConstants_1","account_constants_1","OpentokPublisher_1","Compatibility_1","OpentokFacingMode","OPENTOK_MIRRORED_CSS_CLASS","_super","videoSettings","options","mediaCapabilitiesService","_this","publishAudio","enabled","currentPublisher","switchCamera","newSelectedCamera","newVideoSourceId","err_1","_a","_b","_c","_d","supportSwitchCamera","Error","selectedCamera","MultiPartyCameraTypes","BACK","FRONT","getVideoSourceId","getVideoFilter","clearVideoFilter","waitAfterClearingFilter","setVideoSource","shouldMirrorCamera","isMobile","element","classList","add","remove","setVideoFilterPublisherSetting","videoFilterPublisherSetting","videoFilter","applyVideoFilter","emit","createCameraSourceChangedEvent","stream","traceError","JSON","stringify","traceInfo","frontCameraDeviceId","backCameraDeviceId","VideoFilterType","BLUR","type","publishVideo","cameraEnabled","startWithAudioMuted","participantId","backgroundImageURI","videoSource","undefined","facingMode","USER","ENVIRONMENT","OT","initPublisher","publisherProperties","style","archiveStatusDisplayMode","audioLevelDisplayMode","mirror","initializeEventHandlers","on","createMediaAccessDeniedEvent","OpentokPublisher"],"mappings":"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","file":"OpentokVideoPublisher.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OpentokVideoPublisher = void 0;\nvar utils_1 = require(\"../utils\");\nvar trace_1 = require(\"./trace\");\nvar OpentokPublisherEventMapper_1 = require(\"./OpentokPublisherEventMapper\");\nvar MediaConstants_1 = require(\"../../MediaConstants\");\nvar account_constants_1 = require(\"@techsee/techsee-common/lib/constants/account.constants\");\nvar OpentokPublisher_1 = require(\"./OpentokPublisher\");\nvar Compatibility_1 = require(\"../../MediaUtils/Compatibility\");\n// The preferred camera position to use for the video source\nvar OpentokFacingMode;\n(function (OpentokFacingMode) {\n OpentokFacingMode[\"USER\"] = \"user\";\n OpentokFacingMode[\"ENVIRONMENT\"] = \"environment\";\n})(OpentokFacingMode || (OpentokFacingMode = {}));\nvar OPENTOK_MIRRORED_CSS_CLASS = 'OT_mirrored';\nvar OpentokVideoPublisher = /** @class */ (function (_super) {\n __extends(OpentokVideoPublisher, _super);\n function OpentokVideoPublisher(videoSettings, options, mediaCapabilitiesService) {\n var _this = _super.call(this, options, mediaCapabilitiesService) || this;\n _this.publishAudio = function (enabled) { return _this.currentPublisher.publishAudio(enabled); };\n _this.switchCamera = function () { return __awaiter(_this, void 0, void 0, function () {\n var newSelectedCamera, newVideoSourceId, err_1;\n var _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this.mediaCapabilitiesService.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n _d.label = 1;\n case 1:\n _d.trys.push([1, 8, , 9]);\n newSelectedCamera = this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.BACK\n ? MediaConstants_1.MultiPartyCameraTypes.FRONT\n : MediaConstants_1.MultiPartyCameraTypes.BACK;\n newVideoSourceId = this.getVideoSourceId(newSelectedCamera);\n if (!this.currentPublisher.getVideoFilter()) return [3 /*break*/, 4];\n return [4 /*yield*/, this.currentPublisher.clearVideoFilter()];\n case 2:\n _d.sent();\n return [4 /*yield*/, Compatibility_1.waitAfterClearingFilter()];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4: return [4 /*yield*/, this.currentPublisher.setVideoSource(newVideoSourceId)];\n case 5:\n _d.sent();\n if (utils_1.shouldMirrorCamera(!this.isMobile, newSelectedCamera)) {\n (_a = this.currentPublisher.element) === null || _a === void 0 ? void 0 : _a.classList.add(OPENTOK_MIRRORED_CSS_CLASS);\n }\n else {\n (_b = this.currentPublisher.element) === null || _b === void 0 ? void 0 : _b.classList.remove(OPENTOK_MIRRORED_CSS_CLASS);\n }\n this.selectedCamera = newSelectedCamera;\n this.setVideoFilterPublisherSetting();\n if (!(this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.FRONT && ((_c = this.videoFilterPublisherSetting) === null || _c === void 0 ? void 0 : _c.videoFilter))) return [3 /*break*/, 7];\n return [4 /*yield*/, this.currentPublisher.applyVideoFilter(this.videoFilterPublisherSetting.videoFilter)];\n case 6:\n _d.sent();\n _d.label = 7;\n case 7:\n this.emit('cameraSourceChanged', OpentokPublisherEventMapper_1.createCameraSourceChangedEvent(this.currentPublisher.stream, this.selectedCamera, this.isMobile));\n return [3 /*break*/, 9];\n case 8:\n err_1 = _d.sent();\n trace_1.traceError(JSON.stringify(err_1));\n throw err_1;\n case 9: return [2 /*return*/];\n }\n });\n }); };\n _this.getVideoSourceId = function (selectedCamera) {\n trace_1.traceInfo('getVideoSourceId: ', selectedCamera);\n return selectedCamera === MediaConstants_1.MultiPartyCameraTypes.FRONT\n ? _this.mediaCapabilitiesService.frontCameraDeviceId\n : _this.mediaCapabilitiesService.backCameraDeviceId;\n };\n _this.setVideoFilterPublisherSetting = function () {\n _this.videoFilterPublisherSetting =\n _this.selectedCamera === MediaConstants_1.MultiPartyCameraTypes.FRONT && _this.videoFilter === account_constants_1.VideoFilterType.BLUR\n ? { videoFilter: { type: account_constants_1.VideoFilterType.BLUR } }\n : {};\n };\n _this.publishVideo = function (enabled) { return _this.currentPublisher.publishVideo(enabled); };\n var selectedCamera = videoSettings.selectedCamera, cameraEnabled = videoSettings.cameraEnabled, startWithAudioMuted = videoSettings.startWithAudioMuted, videoFilter = videoSettings.videoFilter;\n _this.selectedCamera = selectedCamera;\n _this.videoFilter = videoFilter;\n var participantId = options.participantId, backgroundImageURI = options.backgroundImageURI;\n var videoSource = (!_this.isMobile && _this.getVideoSourceId(selectedCamera)) || undefined;\n var facingMode = (_this.isMobile &&\n !videoSource &&\n (selectedCamera === MediaConstants_1.MultiPartyCameraTypes.FRONT\n ? OpentokFacingMode.USER\n : OpentokFacingMode.ENVIRONMENT)) ||\n undefined;\n _this.setVideoFilterPublisherSetting();\n _this.currentPublisher = OT.initPublisher(participantId, __assign(__assign(__assign({}, _this.publisherProperties), { style: __assign(__assign({}, _this.publisherProperties.style), { archiveStatusDisplayMode: 'off', audioLevelDisplayMode: 'off', backgroundImageURI: backgroundImageURI }), publishAudio: !startWithAudioMuted, publishVideo: cameraEnabled, videoSource: videoSource,\n facingMode: facingMode, mirror: utils_1.shouldMirrorCamera(_this.isMobile, selectedCamera) }), _this.videoFilterPublisherSetting), trace_1.traceError);\n _this.initializeEventHandlers();\n _this.currentPublisher.on('accessDenied', function () {\n trace_1.traceInfo('Publisher denied media permissions');\n _this.emit('mediaDeviceAccessDenied', OpentokPublisherEventMapper_1.createMediaAccessDeniedEvent(true));\n });\n return _this;\n }\n return OpentokVideoPublisher;\n}(OpentokPublisher_1.OpentokPublisher));\nexports.OpentokVideoPublisher = OpentokVideoPublisher;\n","import {VideoSettings} from '../types';\nimport {shouldMirrorCamera} from '../utils';\nimport {traceError, traceInfo} from './trace';\nimport {createCameraSourceChangedEvent, createMediaAccessDeniedEvent} from './OpentokPublisherEventMapper';\nimport {MultiPartyCameraTypes} from '../../MediaConstants';\nimport {VideoFilterType} from '@techsee/techsee-common/lib/constants/account.constants';\nimport {IMediaCapablities, IOpentokPublisher, OpentokPublisher, OpentokPublisherOptions} from './OpentokPublisher';\nimport {waitAfterClearingFilter} from '../../MediaUtils/Compatibility';\n// The preferred camera position to use for the video source\nenum OpentokFacingMode {\n USER = 'user',\n ENVIRONMENT = 'environment'\n}\n\nconst OPENTOK_MIRRORED_CSS_CLASS = 'OT_mirrored';\n\nexport interface IOpentokVideoPublisher extends IOpentokPublisher {\n publishAudio: (enabled: boolean) => void;\n switchCamera: () => Promise<void>;\n}\nexport class OpentokVideoPublisher extends OpentokPublisher implements IOpentokVideoPublisher {\n protected currentPublisher: OT.Publisher;\n private videoFilter?: VideoFilterType;\n private videoFilterPublisherSetting?: {videoFilter?: {type: VideoFilterType}};\n\n constructor(\n videoSettings: VideoSettings,\n options: OpentokPublisherOptions,\n mediaCapabilitiesService: IMediaCapablities\n ) {\n super(options, mediaCapabilitiesService);\n\n const {selectedCamera, cameraEnabled, startWithAudioMuted, videoFilter} = videoSettings;\n\n this.selectedCamera = selectedCamera;\n this.videoFilter = videoFilter;\n\n const {participantId, backgroundImageURI} = options;\n const videoSource = (!this.isMobile && this.getVideoSourceId(selectedCamera)) || undefined;\n const facingMode =\n (this.isMobile &&\n !videoSource &&\n (selectedCamera === MultiPartyCameraTypes.FRONT\n ? OpentokFacingMode.USER\n : OpentokFacingMode.ENVIRONMENT)) ||\n undefined;\n\n this.setVideoFilterPublisherSetting();\n this.currentPublisher = OT.initPublisher(\n participantId,\n {\n ...this.publisherProperties,\n style: {\n ...this.publisherProperties.style,\n archiveStatusDisplayMode: 'off',\n audioLevelDisplayMode: 'off',\n backgroundImageURI\n },\n publishAudio: !startWithAudioMuted,\n publishVideo: cameraEnabled,\n videoSource,\n facingMode,\n mirror: shouldMirrorCamera(this.isMobile, selectedCamera),\n ...this.videoFilterPublisherSetting\n },\n traceError\n );\n\n this.initializeEventHandlers();\n this.currentPublisher.on('accessDenied', () => {\n traceInfo('Publisher denied media permissions');\n\n this.emit('mediaDeviceAccessDenied', createMediaAccessDeniedEvent(true));\n });\n }\n\n public publishAudio = (enabled: boolean): void => this.currentPublisher.publishAudio(enabled);\n\n public switchCamera = async (): Promise<void> => {\n if (!this.mediaCapabilitiesService.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n\n try {\n const newSelectedCamera =\n this.selectedCamera === MultiPartyCameraTypes.BACK\n ? MultiPartyCameraTypes.FRONT\n : MultiPartyCameraTypes.BACK;\n const newVideoSourceId = this.getVideoSourceId(newSelectedCamera);\n\n if (this.currentPublisher.getVideoFilter()) {\n await this.currentPublisher.clearVideoFilter();\n await waitAfterClearingFilter();\n }\n await this.currentPublisher.setVideoSource(newVideoSourceId);\n\n if (shouldMirrorCamera(!this.isMobile, newSelectedCamera)) {\n this.currentPublisher.element?.classList.add(OPENTOK_MIRRORED_CSS_CLASS);\n } else {\n this.currentPublisher.element?.classList.remove(OPENTOK_MIRRORED_CSS_CLASS);\n }\n\n this.selectedCamera = newSelectedCamera;\n this.setVideoFilterPublisherSetting();\n\n if (this.selectedCamera === MultiPartyCameraTypes.FRONT && this.videoFilterPublisherSetting?.videoFilter) {\n await this.currentPublisher.applyVideoFilter(this.videoFilterPublisherSetting.videoFilter);\n }\n this.emit(\n 'cameraSourceChanged',\n createCameraSourceChangedEvent(this.currentPublisher.stream, this.selectedCamera, this.isMobile)\n );\n } catch (err) {\n traceError(JSON.stringify(err));\n throw err;\n }\n };\n\n private getVideoSourceId = (selectedCamera: MultiPartyCameraTypes): string => {\n traceInfo('getVideoSourceId: ', selectedCamera);\n\n return selectedCamera === MultiPartyCameraTypes.FRONT\n ? this.mediaCapabilitiesService.frontCameraDeviceId\n : this.mediaCapabilitiesService.backCameraDeviceId;\n };\n\n private setVideoFilterPublisherSetting = (): void => {\n this.videoFilterPublisherSetting =\n this.selectedCamera === MultiPartyCameraTypes.FRONT && this.videoFilter === VideoFilterType.BLUR\n ? {videoFilter: {type: VideoFilterType.BLUR}}\n : {};\n };\n\n public publishVideo = (enabled: boolean): void => this.currentPublisher.publishVideo(enabled);\n}\n"]}
|