@techsee/techsee-media-service 999.20.0-nodejs.lite.2 → 999.20.1-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/README.md +28 -27
  2. package/lib/LocalStreamManager.d.ts +0 -1
  3. package/lib/LocalStreamManager.d.ts.map +1 -1
  4. package/lib/LocalStreamManager.js +84 -82
  5. package/lib/LocalStreamManager.js.map +1 -1
  6. package/lib/MediaConstants.d.ts +3 -21
  7. package/lib/MediaConstants.d.ts.map +1 -1
  8. package/lib/MediaConstants.js +13 -32
  9. package/lib/MediaConstants.js.map +1 -1
  10. package/lib/MediaContracts.d.ts +3 -9
  11. package/lib/MediaContracts.d.ts.map +1 -1
  12. package/lib/MediaContracts.js +4 -1
  13. package/lib/MediaContracts.js.map +1 -1
  14. package/lib/MediaPublisher.d.ts +0 -1
  15. package/lib/MediaPublisher.d.ts.map +1 -1
  16. package/lib/MediaPublisher.js +10 -7
  17. package/lib/MediaPublisher.js.map +1 -1
  18. package/lib/MediaServiceBase.d.ts +0 -1
  19. package/lib/MediaServiceBase.d.ts.map +1 -1
  20. package/lib/MediaServiceBase.js +199 -170
  21. package/lib/MediaServiceBase.js.map +1 -1
  22. package/lib/MediaSession/MediaServer.d.ts +0 -1
  23. package/lib/MediaSession/MediaServer.d.ts.map +1 -1
  24. package/lib/MediaSession/MediaServer.js +74 -62
  25. package/lib/MediaSession/MediaServer.js.map +1 -1
  26. package/lib/MediaSession/MediaSessionBase.d.ts +0 -1
  27. package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
  28. package/lib/MediaSession/MediaSessionBase.js +23 -19
  29. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  30. package/lib/MediaSession/SessionOpentok.d.ts +2 -3
  31. package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
  32. package/lib/MediaSession/SessionOpentok.js +80 -51
  33. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  34. package/lib/MediaSession/SessionTurn.d.ts +0 -1
  35. package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
  36. package/lib/MediaSession/SessionTurn.js +151 -109
  37. package/lib/MediaSession/SessionTurn.js.map +1 -1
  38. package/lib/MediaSession/TurnConstants.d.ts +0 -1
  39. package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
  40. package/lib/MediaSession/TurnConstants.js +16 -1
  41. package/lib/MediaSession/TurnConstants.js.map +1 -1
  42. package/lib/MediaSubscriber.d.ts +0 -1
  43. package/lib/MediaSubscriber.d.ts.map +1 -1
  44. package/lib/MediaSubscriber.js +43 -37
  45. package/lib/MediaSubscriber.js.map +1 -1
  46. package/lib/MediaUtils/Compatibility.d.ts +0 -3
  47. package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
  48. package/lib/MediaUtils/Compatibility.js +34 -76
  49. package/lib/MediaUtils/Compatibility.js.map +1 -1
  50. package/lib/MediaUtils/MediaDomUtils.d.ts +3 -6
  51. package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
  52. package/lib/MediaUtils/MediaDomUtils.js +65 -70
  53. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  54. package/lib/MediaUtils/MediaTracer.d.ts +0 -1
  55. package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
  56. package/lib/MediaUtils/MediaTracer.js +5 -2
  57. package/lib/MediaUtils/MediaTracer.js.map +1 -1
  58. package/lib/MultiParty/DetectWebRtcService.d.ts +14 -17
  59. package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
  60. package/lib/MultiParty/DetectWebRtcService.js +54 -98
  61. package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
  62. package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +10 -0
  63. package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +1 -0
  64. package/lib/MultiParty/MediaCapabilitiesHelper.js +140 -0
  65. package/lib/MultiParty/MediaCapabilitiesHelper.js.map +1 -0
  66. package/lib/MultiParty/MultiParty.d.ts +21 -0
  67. package/lib/MultiParty/MultiParty.d.ts.map +1 -0
  68. package/lib/MultiParty/MultiParty.js +160 -0
  69. package/lib/MultiParty/MultiParty.js.map +1 -0
  70. package/lib/MultiParty/OpentokMultiparty.d.ts +32 -0
  71. package/lib/MultiParty/OpentokMultiparty.d.ts.map +1 -0
  72. package/lib/MultiParty/OpentokMultiparty.js +184 -0
  73. package/lib/MultiParty/OpentokMultiparty.js.map +1 -0
  74. package/lib/TechseeMediaStream.d.ts +0 -1
  75. package/lib/TechseeMediaStream.d.ts.map +1 -1
  76. package/lib/TechseeMediaStream.js +12 -9
  77. package/lib/TechseeMediaStream.js.map +1 -1
  78. package/lib/oldCode/constants.js +20 -0
  79. package/lib/oldCode/constants.js.map +1 -0
  80. package/lib/oldCode/event-emitter.js +39 -0
  81. package/lib/oldCode/event-emitter.js.map +1 -0
  82. package/lib/oldCode/index.js +64 -0
  83. package/lib/oldCode/index.js.map +1 -0
  84. package/lib/oldCode/opentok/session.js +310 -0
  85. package/lib/oldCode/opentok/session.js.map +1 -0
  86. package/lib/oldCode/opentok/stream.js +310 -0
  87. package/lib/oldCode/opentok/stream.js.map +1 -0
  88. package/lib/oldCode/publisher.js +143 -0
  89. package/lib/oldCode/publisher.js.map +1 -0
  90. package/lib/oldCode/service.js +395 -0
  91. package/lib/oldCode/service.js.map +1 -0
  92. package/lib/oldCode/session.js +110 -0
  93. package/lib/oldCode/session.js.map +1 -0
  94. package/lib/oldCode/stream.js +195 -0
  95. package/lib/oldCode/stream.js.map +1 -0
  96. package/lib/oldCode/subscriber.js +90 -0
  97. package/lib/oldCode/subscriber.js.map +1 -0
  98. package/lib/oldCode/tracer.d.ts +36 -0
  99. package/lib/oldCode/tracer.d.ts.map +1 -0
  100. package/lib/oldCode/tracer.js +161 -0
  101. package/lib/oldCode/tracer.js.map +1 -0
  102. package/lib/oldCode/utils/ImageFixer.d.ts +1 -0
  103. package/lib/oldCode/utils/ImageFixer.d.ts.map +1 -0
  104. package/lib/oldCode/utils/ImageFixer.js +59 -0
  105. package/lib/oldCode/utils/ImageFixer.js.map +1 -0
  106. package/lib/oldCode/webrtc/constants.js +114 -0
  107. package/lib/oldCode/webrtc/constants.js.map +1 -0
  108. package/lib/oldCode/webrtc/helper.js +173 -0
  109. package/lib/oldCode/webrtc/helper.js.map +1 -0
  110. package/lib/oldCode/webrtc/session-kms.js +558 -0
  111. package/lib/oldCode/webrtc/session-kms.js.map +1 -0
  112. package/lib/oldCode/webrtc/session-loopback.js +336 -0
  113. package/lib/oldCode/webrtc/session-loopback.js.map +1 -0
  114. package/lib/oldCode/webrtc/session-turn.js +880 -0
  115. package/lib/oldCode/webrtc/session-turn.js.map +1 -0
  116. package/lib/oldCode/webrtc/session-turn.v2.js +583 -0
  117. package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -0
  118. package/lib/oldCode/webrtc/session.js +52 -0
  119. package/lib/oldCode/webrtc/session.js.map +1 -0
  120. package/lib/oldCode/webrtc/stream.js +674 -0
  121. package/lib/oldCode/webrtc/stream.js.map +1 -0
  122. package/lib/oldCode/webrtc/temasys/adapter-loader.js +12 -0
  123. package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -0
  124. package/lib/oldCode/webrtc/temasys/adapter.js +5861 -0
  125. package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -0
  126. package/lib/oldCode/webrtc/webrtc-ie-shim.js +3007 -0
  127. package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -0
  128. package/lib/qos/raw-qos.js +145 -84
  129. package/lib/qos/raw-qos.js.map +1 -1
  130. package/lib/webrtc-ie-shim.js +2950 -1896
  131. package/lib/webrtc-ie-shim.js.map +1 -1
  132. package/package.json +59 -65
  133. package/lib/MediaUtils/index.d.ts +0 -2
  134. package/lib/MediaUtils/index.d.ts.map +0 -1
  135. package/lib/MediaUtils/index.js +0 -6
  136. package/lib/MediaUtils/index.js.map +0 -1
  137. package/lib/MultiParty/MediaCapabilitiesService.d.ts +0 -18
  138. package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +0 -1
  139. package/lib/MultiParty/MediaCapabilitiesService.js +0 -158
  140. package/lib/MultiParty/MediaCapabilitiesService.js.map +0 -1
  141. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +0 -6
  142. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +0 -1
  143. package/lib/MultiParty/MediaCapabilitiesUtils.js +0 -123
  144. package/lib/MultiParty/MediaCapabilitiesUtils.js.map +0 -1
  145. package/lib/MultiParty/MediaTracer.d.ts +0 -4
  146. package/lib/MultiParty/MediaTracer.d.ts.map +0 -1
  147. package/lib/MultiParty/MediaTracer.js +0 -10
  148. package/lib/MultiParty/MediaTracer.js.map +0 -1
  149. package/lib/MultiParty/MultiPartyService.d.ts +0 -49
  150. package/lib/MultiParty/MultiPartyService.d.ts.map +0 -1
  151. package/lib/MultiParty/MultiPartyService.js +0 -30
  152. package/lib/MultiParty/MultiPartyService.js.map +0 -1
  153. package/lib/MultiParty/MultiPartyServiceFactory.d.ts +0 -4
  154. package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +0 -1
  155. package/lib/MultiParty/MultiPartyServiceFactory.js +0 -13
  156. package/lib/MultiParty/MultiPartyServiceFactory.js.map +0 -1
  157. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +0 -89
  158. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +0 -1
  159. package/lib/MultiParty/MultipartyServiceEventTypes.js +0 -16
  160. package/lib/MultiParty/MultipartyServiceEventTypes.js.map +0 -1
  161. package/lib/MultiParty/index.d.ts +0 -7
  162. package/lib/MultiParty/index.d.ts.map +0 -1
  163. package/lib/MultiParty/index.js +0 -25
  164. package/lib/MultiParty/index.js.map +0 -1
  165. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +0 -38
  166. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +0 -1
  167. package/lib/MultiParty/opentok/OpentokMultiPartyService.js +0 -492
  168. package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +0 -1
  169. package/lib/MultiParty/opentok/OpentokPublisher.d.ts +0 -34
  170. package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +0 -1
  171. package/lib/MultiParty/opentok/OpentokPublisher.js +0 -121
  172. package/lib/MultiParty/opentok/OpentokPublisher.js.map +0 -1
  173. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +0 -20
  174. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +0 -1
  175. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +0 -49
  176. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +0 -1
  177. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +0 -6
  178. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +0 -1
  179. package/lib/MultiParty/opentok/OpentokScreenPublisher.js +0 -48
  180. package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +0 -1
  181. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +0 -2
  182. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +0 -1
  183. package/lib/MultiParty/opentok/OpentokSubscriber.js +0 -26
  184. package/lib/MultiParty/opentok/OpentokSubscriber.js.map +0 -1
  185. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +0 -19
  186. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +0 -1
  187. package/lib/MultiParty/opentok/OpentokVideoPublisher.js +0 -182
  188. package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +0 -1
  189. package/lib/MultiParty/opentok/trace.d.ts +0 -3
  190. package/lib/MultiParty/opentok/trace.d.ts.map +0 -1
  191. package/lib/MultiParty/opentok/trace.js +0 -18
  192. package/lib/MultiParty/opentok/trace.js.map +0 -1
  193. package/lib/MultiParty/opentok.d.ts +0 -463
  194. package/lib/MultiParty/types.d.ts +0 -33
  195. package/lib/MultiParty/types.d.ts.map +0 -1
  196. package/lib/MultiParty/types.js +0 -3
  197. package/lib/MultiParty/types.js.map +0 -1
  198. package/lib/MultiParty/utils.d.ts +0 -10
  199. package/lib/MultiParty/utils.d.ts.map +0 -1
  200. package/lib/MultiParty/utils.js +0 -17
  201. package/lib/MultiParty/utils.js.map +0 -1
  202. package/lib/qos/raw-qos.d.ts +0 -29
  203. package/lib/qos/raw-qos.d.ts.map +0 -1
  204. package/lib/webrtc-ie-shim.d.ts +0 -4
  205. package/lib/webrtc-ie-shim.d.ts.map +0 -1
@@ -1,61 +1,28 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- 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;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+
3
+ var __importDefault = undefined && undefined.__importDefault || function (mod) {
4
+ return mod && mod.__esModule ? mod : { "default": mod };
40
5
  };
41
6
  Object.defineProperty(exports, "__esModule", { value: true });
42
- 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;
7
+ 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;
43
8
  var MediaConstants_1 = require("../MediaConstants");
44
9
  var isEqual_1 = __importDefault(require("lodash/isEqual"));
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11
+ //@ts-ignore
45
12
  var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
46
13
  var MediaTracer_1 = require("./MediaTracer");
47
- var trace = (0, MediaTracer_1.getMediaTracer)('Compatibility');
14
+ var trace = MediaTracer_1.getMediaTracer('Compatibility');
48
15
  var environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();
49
16
  var isIE11 = environmentDetect.isIE11();
50
17
  var monitoredIeElements = new Map();
18
+ // Grace period to wait in the unlikely case that Opentok has not finished initializing,
19
+ // and a session initialization was requested
51
20
  exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;
52
21
  exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;
53
- exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT = 0;
54
22
  function _isOTDefined() {
55
23
  try {
56
24
  return !!window.OT;
57
- }
58
- catch (e) {
25
+ } catch (e) {
59
26
  return false;
60
27
  }
61
28
  }
@@ -64,26 +31,26 @@ function waitForOpenTokIsLoaded() {
64
31
  return Promise.resolve();
65
32
  }
66
33
  var isDefined = false;
67
- return Promise
68
- .reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {
34
+ return Promise.reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {
69
35
  if (isDefined || _isOTDefined()) {
70
36
  isDefined = true;
71
37
  return Promise.resolve();
72
38
  }
73
39
  return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);
74
- }, 0)
75
- .then(function () { return isDefined || Promise.reject(new Error('OT is undefined')); });
40
+ }, 0).then(function () {
41
+ return isDefined || Promise.reject(new Error('OT is undefined'));
42
+ });
76
43
  }
77
44
  exports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;
78
45
  function enumerateMediaDevices() {
79
46
  return new Promise(function (resolve, reject) {
80
47
  if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {
81
- window.OT.getDevices(function (error, devices) { return (error ? reject(error) : resolve(devices)); });
82
- }
83
- else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
48
+ window.OT.getDevices(function (error, devices) {
49
+ return error ? reject(error) : resolve(devices);
50
+ });
51
+ } else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
84
52
  navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);
85
- }
86
- else {
53
+ } else {
87
54
  reject(new Error('Enumerating media devices is not supported'));
88
55
  }
89
56
  });
@@ -96,7 +63,9 @@ function isVideoPlaySupportedOnDevice(mediaServiceType) {
96
63
  return Promise.resolve(true);
97
64
  }
98
65
  if (isOpenTokService) {
99
- return waitForOpenTokIsLoaded().then(function () { return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled(); });
66
+ return waitForOpenTokIsLoaded().then(function () {
67
+ return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled();
68
+ });
100
69
  }
101
70
  if (isMediaServer) {
102
71
  return Promise.resolve(false);
@@ -109,27 +78,25 @@ function isVideoPlaySupportedOnDevice(mediaServiceType) {
109
78
  exports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;
110
79
  function onMediaElementResize(mediaElement, onResizeHandler) {
111
80
  var checkTimeoutPtr = null;
112
- var unsubscribeIE = function () {
81
+ var unsubscribeIE = function unsubscribeIE() {
113
82
  clearTimeout(checkTimeoutPtr);
114
83
  monitoredIeElements.delete(mediaElement);
115
84
  };
116
85
  if (!isIE11) {
117
86
  mediaElement.addEventListener('resize', onResizeHandler, false);
118
- }
119
- else {
87
+ } else {
120
88
  monitoredIeElements.set(mediaElement, {
121
89
  videoWidth: mediaElement.videoWidth,
122
90
  videoHeight: mediaElement.videoHeight
123
91
  });
124
- var checkElementSize_1 = function () {
92
+ var checkElementSize_1 = function checkElementSize_1() {
125
93
  var lastElementSize = monitoredIeElements.get(mediaElement);
126
94
  if (!lastElementSize) {
127
95
  unsubscribeIE();
128
- }
129
- else {
96
+ } else {
130
97
  var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };
131
98
  checkTimeoutPtr = setTimeout(checkElementSize_1, 500);
132
- if (!(0, isEqual_1.default)(currentSize, lastElementSize)) {
99
+ if (!isEqual_1.default(currentSize, lastElementSize)) {
133
100
  monitoredIeElements.set(mediaElement, lastElementSize);
134
101
  setTimeout(onResizeHandler);
135
102
  }
@@ -140,8 +107,7 @@ function onMediaElementResize(mediaElement, onResizeHandler) {
140
107
  return function () {
141
108
  if (!isIE11) {
142
109
  mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);
143
- }
144
- else {
110
+ } else {
145
111
  unsubscribeIE();
146
112
  }
147
113
  };
@@ -150,21 +116,13 @@ exports.onMediaElementResize = onMediaElementResize;
150
116
  function registerWebRTCAdapters() {
151
117
  if (isIE11) {
152
118
  require('../webrtc-ie-shim.js');
153
- }
154
- else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {
155
- require('webrtc-adapter/dist/adapter_core');
156
- }
157
- else {
119
+ } else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {
120
+ require('webrtc-adapter/src/js/adapter_core'); // eslint-disable-line global-require
121
+ } else {
158
122
  trace.warn('no WebRTC adapters loaded.');
159
123
  }
160
124
  }
161
125
  exports.registerWebRTCAdapters = registerWebRTCAdapters;
162
- function waitAfterClearingFilter() {
163
- return __awaiter(this, void 0, void 0, function () {
164
- return __generator(this, function (_a) {
165
- return [2, Promise.delay(exports.WAIT_FOR_OPENTOK_SWITCH_CAMERA_WITH_BLUR_EFFECT)];
166
- });
167
- });
168
- }
169
- exports.waitAfterClearingFilter = waitAfterClearingFilter;
170
- //# sourceMappingURL=Compatibility.js.map
126
+
127
+ //# sourceMappingURL=Compatibility.js.map
128
+ //# sourceMappingURL=Compatibility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Compatibility.js","sourceRoot":"","sources":["../../src/MediaUtils/Compatibility.ts"],"names":[],"mappings":"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"}
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","catch","mediaServiceType","isOpenTokService","MediaServiceType","OPENTOK","isMediaServer","MEDIASERVER","OTPlugin","isInstalled","WebRTCAdapter","mediaElement","onResizeHandler","checkTimeoutPtr","unsubscribeIE","clearTimeout","delete","addEventListener","set","videoWidth","videoHeight","checkElementSize_1","lastElementSize","get","currentSize","setTimeout","default","removeEventListener","isChrome","majorVersion","warn"],"mappings":"AAAA;;AACA,IAAIA,kBAAmB,aAAQ,UAAKA,eAAd,IAAkC,UAAUC,GAAV,EAAe;AACnE,WAAQA,OAAOA,IAAIC,UAAZ,GAA0BD,GAA1B,GAAgC,EAAE,WAAWA,GAAb,EAAvC;AACH,CAFD;AAGAE,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACAD,QAAQE,sBAAR,GAAiCF,QAAQG,oBAAR,GAA+BH,QAAQI,4BAAR,GAAuCJ,QAAQK,qBAAR,GAAgCL,QAAQM,sBAAR,GAAiCN,QAAQO,wCAAR,GAAmDP,QAAQQ,4CAAR,GAAuD,KAAK,CAAvR;AACA,IAAIC,mBAAmBC,QAAQ,mBAAR,CAAvB;AACA,IAAIC,YAAYhB,gBAAgBe,QAAQ,gBAAR,CAAhB,CAAhB;AACA;AACA;AACA,IAAIE,0BAA0BF,QAAQ,2DAAR,CAA9B;AACA,IAAIG,gBAAgBH,QAAQ,eAAR,CAApB;AACA,IAAII,QAAQD,cAAcE,cAAd,CAA6B,eAA7B,CAAZ;AACA,IAAIC,oBAAoB,IAAIJ,wBAAwBK,mBAA5B,EAAxB;AACA,IAAIC,SAASF,kBAAkBE,MAAlB,EAAb;AACA,IAAIC,sBAAsB,IAAIC,GAAJ,EAA1B;AACA;AACA;AACApB,QAAQQ,4CAAR,GAAuD,EAAvD;AACAR,QAAQO,wCAAR,GAAmD,GAAnD;AACA,SAASc,YAAT,GAAwB;AACpB,QAAI;AACA,eAAO,CAAC,CAACC,OAAOC,EAAhB;AACH,KAFD,CAGA,OAAOC,CAAP,EAAU;AACN,eAAO,KAAP;AACH;AACJ;AACD,SAASlB,sBAAT,GAAkC;AAC9B,QAAIe,cAAJ,EAAoB;AAChB,eAAOI,QAAQC,OAAR,EAAP;AACH;AACD,QAAIC,YAAY,KAAhB;AACA,WAAOF,QAAQG,MAAR,CAAe,IAAIC,KAAJ,CAAU7B,QAAQQ,4CAAlB,CAAf,EAAgF,YAAY;AAC/F,YAAImB,aAAaN,cAAjB,EAAiC;AAC7BM,wBAAY,IAAZ;AACA,mBAAOF,QAAQC,OAAR,EAAP;AACH;AACD,eAAOD,QAAQK,KAAR,CAAc9B,QAAQO,wCAAtB,CAAP;AACH,KANM,EAMJ,CANI,EAOFwB,IAPE,CAOG,YAAY;AAAE,eAAOJ,aAAaF,QAAQO,MAAR,CAAe,IAAIC,KAAJ,CAAU,iBAAV,CAAf,CAApB;AAAmE,KAPpF,CAAP;AAQH;AACDjC,QAAQM,sBAAR,GAAiCA,sBAAjC;AACA,SAASD,qBAAT,GAAiC;AAC7B,WAAO,IAAIoB,OAAJ,CAAY,UAAUC,OAAV,EAAmBM,MAAnB,EAA2B;AAC1C,YAAK,OAAOV,OAAOC,EAAd,KAAqB,WAAtB,IAAsCD,OAAOC,EAA7C,IAAmDD,OAAOC,EAAP,CAAUW,UAAjE,EAA6E;AACzEZ,mBAAOC,EAAP,CAAUW,UAAV,CAAqB,UAAUC,KAAV,EAAiBC,OAAjB,EAA0B;AAAE,uBAAQD,QAAQH,OAAOG,KAAP,CAAR,GAAwBT,QAAQU,OAAR,CAAhC;AAAoD,aAArG;AACH,SAFD,MAGK,IAAIC,UAAUC,YAAV,IAA0BD,UAAUC,YAAV,CAAuBC,gBAArD,EAAuE;AACxEF,sBAAUC,YAAV,CAAuBC,gBAAvB,GAA0CR,IAA1C,CAA+CL,OAA/C,EAAwDc,KAAxD,CAA8DR,MAA9D;AACH,SAFI,MAGA;AACDA,mBAAO,IAAIC,KAAJ,CAAU,4CAAV,CAAP;AACH;AACJ,KAVM,CAAP;AAWH;AACDjC,QAAQK,qBAAR,GAAgCA,qBAAhC;AACA,SAASD,4BAAT,CAAsCqC,gBAAtC,EAAwD;AACpD,QAAIC,mBAAmBD,qBAAqBhC,iBAAiBkC,gBAAjB,CAAkCC,OAA9E;AACA,QAAIC,gBAAgBJ,qBAAqBhC,iBAAiBkC,gBAAjB,CAAkCG,WAA3E;AACA,QAAI,CAAC5B,MAAL,EAAa;AACT,eAAOO,QAAQC,OAAR,CAAgB,IAAhB,CAAP;AACH;AACD,QAAIgB,gBAAJ,EAAsB;AAClB,eAAOpC,yBAAyByB,IAAzB,CAA8B,YAAY;AAAE,mBAAOT,OAAOC,EAAP,IAAaD,OAAOyB,QAApB,IAAgCzB,OAAOyB,QAAP,CAAgBC,WAAhD,IAA+D1B,OAAOyB,QAAP,CAAgBC,WAAhB,EAAtE;AAAsG,SAAlJ,CAAP;AACH;AACD,QAAIH,aAAJ,EAAmB;AACf,eAAOpB,QAAQC,OAAR,CAAgB,KAAhB,CAAP;AACH;AACD,QAAIJ,OAAO2B,aAAX,EAA0B;AACtB,eAAOxB,QAAQC,OAAR,CAAgB,IAAhB,CAAP;AACH;AACD,WAAOD,QAAQC,OAAR,CAAgB,KAAhB,CAAP;AACH;AACD1B,QAAQI,4BAAR,GAAuCA,4BAAvC;AACA,SAASD,oBAAT,CAA8B+C,YAA9B,EAA4CC,eAA5C,EAA6D;AACzD,QAAIC,kBAAkB,IAAtB;AACA,QAAIC,gBAAgB,SAAhBA,aAAgB,GAAY;AAC5BC,qBAAaF,eAAb;AACAjC,4BAAoBoC,MAApB,CAA2BL,YAA3B;AACH,KAHD;AAIA,QAAI,CAAChC,MAAL,EAAa;AACTgC,qBAAaM,gBAAb,CAA8B,QAA9B,EAAwCL,eAAxC,EAAyD,KAAzD;AACH,KAFD,MAGK;AACDhC,4BAAoBsC,GAApB,CAAwBP,YAAxB,EAAsC;AAClCQ,wBAAYR,aAAaQ,UADS;AAElCC,yBAAaT,aAAaS;AAFQ,SAAtC;AAIA,YAAIC,qBAAqB,SAArBA,kBAAqB,GAAY;AACjC,gBAAIC,kBAAkB1C,oBAAoB2C,GAApB,CAAwBZ,YAAxB,CAAtB;AACA,gBAAI,CAACW,eAAL,EAAsB;AAClBR;AACH,aAFD,MAGK;AACD,oBAAIU,cAAc,EAAEL,YAAYR,aAAaQ,UAA3B,EAAuCC,aAAaT,aAAaS,WAAjE,EAAlB;AACAP,kCAAkBY,WAAWJ,kBAAX,EAA+B,GAA/B,CAAlB;AACA,oBAAI,CAACjD,UAAUsD,OAAV,CAAkBF,WAAlB,EAA+BF,eAA/B,CAAL,EAAsD;AAClD1C,wCAAoBsC,GAApB,CAAwBP,YAAxB,EAAsCW,eAAtC;AACAG,+BAAWb,eAAX;AACH;AACJ;AACJ,SAbD;AAcAS;AACH;AACD,WAAO,YAAY;AACf,YAAI,CAAC1C,MAAL,EAAa;AACTgC,4BAAgBA,aAAagB,mBAAb,CAAiC,QAAjC,EAA2Cf,eAA3C,CAAhB;AACH,SAFD,MAGK;AACDE;AACH;AACJ,KAPD;AAQH;AACDrD,QAAQG,oBAAR,GAA+BA,oBAA/B;AACA,SAASD,sBAAT,GAAkC;AAC9B,QAAIgB,MAAJ,EAAY;AACRR,gBAAQ,sBAAR;AACH,KAFD,MAGK,IAAI,EAAEM,kBAAkBmD,QAAlB,MAAiCnD,kBAAkBoD,YAAlB,KAAmC,EAAtE,CAAJ,EAAgF;AACjF1D,gBAAQ,oCAAR,EADiF,CAClC;AAClD,KAFI,MAGA;AACDI,cAAMuD,IAAN,CAAW,4BAAX;AACH;AACJ;AACDrE,QAAQE,sBAAR,GAAiCA,sBAAjC;;AAEA","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.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 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/src/js/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,7 +1,4 @@
1
- import { SnapshotOptions, VideoResolution } from '../MediaContracts';
2
- import { KnownMediaStream, VideoResolutionFormat } from '../MediaConstants';
3
- export declare function calculateResolution({ videoWidth, videoHeight }: VideoResolution): VideoResolutionFormat;
4
- export declare function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream, streamType: KnownMediaStream): Promise<HTMLVideoElement>;
1
+ import { SnapshotOptions } from '../MediaContracts';
2
+ export declare function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream): Promise<HTMLVideoElement>;
5
3
  export declare function removeVideoElementFromDom(videoEl: HTMLVideoElement): Promise<void>;
6
- export declare function getSnapshotFromMediaStream(mediaStream: MediaStream, sourceStream: KnownMediaStream, snapshotOptions?: SnapshotOptions): Promise<string>;
7
- //# sourceMappingURL=MediaDomUtils.d.ts.map
4
+ export declare function getSnapshotFromMediaStream(mediaStream: MediaStream, snapshotOptions?: SnapshotOptions): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"MediaDomUtils.d.ts","sourceRoot":"","sources":["../../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAC,gBAAgB,EAAE,qBAAqB,EAAgC,MAAM,mBAAmB,CAAC;AAMzG,wBAAgB,mBAAmB,CAAC,EAAC,UAAU,EAAE,WAAW,EAAC,EAAE,eAAe,yBAgB7E;AAED,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,cAAc,EACzB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,gBAAgB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CA0F3B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlF;AAOD,wBAAgB,0BAA0B,CACtC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,gBAAgB,EAC9B,eAAe,GAAE,eAAiC,GACnD,OAAO,CAAC,MAAM,CAAC,CAuGjB"}
1
+ {"version":3,"sources":["../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAOlD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoFzH;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlF;AAOD,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,GAAE,eAAiC,GAAG,OAAO,CAAC,MAAM,CAAC,CAqGxI","file":"MediaDomUtils.d.ts","sourcesContent":["import isUndefined from 'lodash/isUndefined';\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 {repeatWithTimeout} from '@techsee/techsee-common/lib/core/retry-with-timeout';\nimport {SnapshotOptions} from '../MediaContracts';\nimport {getMediaTracer} from './MediaTracer';\n\nconst trace = getMediaTracer('DomUtils');\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nexport function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream): Promise<HTMLVideoElement> {\n return new Promise((resolve, reject) => {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n\n return;\n }\n\n const doResolve = (videoEl: HTMLVideoElement): void => {\n trace.info('Video element created successfully', {videoEl});\n resolve(videoEl);\n };\n\n const videoEl = document.createElement('video') as any;\n\n videoEl.muted = true;\n videoEl.playsInline = true;\n\n if (isIE11 && (window as any).WebRTCAdapter) {\n container.appendChild(videoEl);\n (window as any).WebRTCAdapter.bindVideoElement(videoEl);\n }\n\n videoEl.srcObject = mediaStream;\n\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', () => {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n });\n\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n\n try {\n const playRes = videoEl.play();\n\n if (playRes && playRes.then) {\n playRes.then(() => {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n } else if (!isIE11) {\n doResolve(videoEl);\n }\n\n if (playRes && playRes.catch) {\n playRes.catch((error: any) => {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n } catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n\n return;\n }\n\n\n if (isIE11) {\n const handleComplete = (): boolean => videoEl.parentElement.tagName !== 'OBJECT';\n\n const waitForObjectSettings = {intervalInMs: 30, timeoutInMs: 200};\n\n repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(() => {\n //We will wait, until video is played, then we resolve\n const isVideoPlaying = (): boolean => videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0;\n const waitForVideoSettings = {intervalInMs: 50, timeoutInMs: 10000};\n\n repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(() => doResolve(videoEl.parentElement))\n .catch(() => reject(new Error('Timeout while waiting for video to play')));\n });\n } else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\n\nexport function removeVideoElementFromDom(videoEl: HTMLVideoElement): Promise<void> {\n return new Promise((resolve) => {\n if (isIE11 && (window as any).WebRTCAdapter) {\n (window as any).WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n } else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n } else {\n videoEl.remove();\n }\n\n resolve();\n });\n}\n\nconst defaultSnapshot: SnapshotOptions = {\n format: 'image/png',\n quality: 0.92\n};\n\nexport function getSnapshotFromMediaStream(mediaStream: MediaStream, snapshotOptions: SnapshotOptions = defaultSnapshot): Promise<string> {\n const {format, quality, x, y, w, h} = snapshotOptions;\n const crop = !isUndefined(x) && !isUndefined(y) && !isUndefined(w) && !isUndefined(h);\n const resize = !crop && (!isUndefined(w) || !isUndefined(h));\n\n return new Promise((resolve, reject) => {\n\n const tempContainer = document.createElement('div');\n\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n\n const doneFn = (err: any, image?: any): void => {\n if (err) {\n reject(err);\n\n return;\n }\n\n setTimeout(() => {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n\n renderMediaStreamToVideoEl(tempContainer, mediaStream)\n .then((videoElement) => Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then((imgData: any) => {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n\n doneFn(null, imgData);\n }))\n .catch((error) => {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n\n //Gets image in all browsers except of IE\n function getImgData(videoElement: HTMLVideoElement): string {\n const {videoWidth, videoHeight} = videoElement;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d')!;\n\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElement, 0, 0, w, h);\n } else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n\n ctx.drawImage(videoElement, 0, 0);\n }\n\n return canvas.toDataURL(format, quality);\n }\n\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement: any): Promise<string> {\n return new Promise((resolve) => {\n const {videoWidth, videoHeight} = videoElement;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d')!;\n\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n } else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n\n function _drawAndRemove(image: any): string {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n } else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n\n return canvas.toDataURL(format, quality);\n }\n\n const base64 = videoElement.getFrame();\n const image = new Image();\n\n image.onload = () => resolve(_drawAndRemove(image));\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\n"]}
@@ -1,37 +1,25 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+
3
+ var __importDefault = undefined && undefined.__importDefault || function (mod) {
4
+ return mod && mod.__esModule ? mod : { "default": mod };
4
5
  };
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = exports.calculateResolution = void 0;
7
+ exports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = void 0;
7
8
  var isUndefined_1 = __importDefault(require("lodash/isUndefined"));
9
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
+ //@ts-ignore
8
11
  var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
9
12
  var retry_with_timeout_1 = require("@techsee/techsee-common/lib/core/retry-with-timeout");
10
13
  var MediaTracer_1 = require("./MediaTracer");
11
- var MediaConstants_1 = require("../MediaConstants");
12
- var trace = (0, MediaTracer_1.getMediaTracer)('DomUtils');
14
+ var trace = MediaTracer_1.getMediaTracer('DomUtils');
13
15
  var isIE11 = new ts_environment_detect_1.TsEnvironmentDetect().isIE11();
14
- function calculateResolution(_a) {
15
- var videoWidth = _a.videoWidth, videoHeight = _a.videoHeight;
16
- var multiplyResolution = videoWidth * videoHeight;
17
- var videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.NONE;
18
- if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.HD) {
19
- videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.HD;
20
- }
21
- if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.SD &&
22
- multiplyResolution < MediaConstants_1.VideoResolutionMultiplication.HD) {
23
- videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.SD;
24
- }
25
- return videoResolutionFormat;
26
- }
27
- exports.calculateResolution = calculateResolution;
28
- function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
16
+ function renderMediaStreamToVideoEl(container, mediaStream) {
29
17
  return new Promise(function (resolve, reject) {
30
18
  if (!document.body.contains(container)) {
31
19
  reject(new Error('Cannot render to container that is not attached to dom'));
32
20
  return;
33
21
  }
34
- var doResolve = function (videoEl) {
22
+ var doResolve = function doResolve(videoEl) {
35
23
  trace.info('Video element created successfully', { videoEl: videoEl });
36
24
  resolve(videoEl);
37
25
  };
@@ -43,17 +31,13 @@ function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
43
31
  window.WebRTCAdapter.bindVideoElement(videoEl);
44
32
  }
45
33
  videoEl.srcObject = mediaStream;
34
+ // When unplugged the headphones in ios the video element got paused.
46
35
  videoEl.addEventListener('pause', function () {
47
- if ([
48
- MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM,
49
- MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM,
50
- MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM
51
- ].indexOf(streamType) > -1) {
52
- trace.info('Video element got paused. IOS headphones disconnected');
53
- videoEl.play();
54
- }
36
+ trace.info('Video element got paused. IOS headphones disconnected');
37
+ videoEl.play();
55
38
  });
56
39
  if (!isIE11) {
40
+ // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play
57
41
  videoEl.setAttribute('muted', '');
58
42
  }
59
43
  try {
@@ -65,8 +49,7 @@ function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
65
49
  doResolve(videoEl);
66
50
  }
67
51
  });
68
- }
69
- else if (!isIE11) {
52
+ } else if (!isIE11) {
70
53
  doResolve(videoEl);
71
54
  }
72
55
  if (playRes && playRes.catch) {
@@ -75,25 +58,31 @@ function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
75
58
  reject(error);
76
59
  });
77
60
  }
78
- }
79
- catch (error) {
61
+ } catch (error) {
80
62
  reject(error);
81
63
  trace.error('Error while executing play method on video element', error);
82
64
  return;
83
65
  }
84
66
  if (isIE11) {
85
- var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };
67
+ var handleComplete = function handleComplete() {
68
+ return videoEl.parentElement.tagName !== 'OBJECT';
69
+ };
86
70
  var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };
87
- (0, retry_with_timeout_1.repeatWithTimeout)(handleComplete, waitForObjectSettings).then(function () {
88
- var isVideoPlaying = function () { return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0; };
71
+ retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings).then(function () {
72
+ //We will wait, until video is played, then we resolve
73
+ var isVideoPlaying = function isVideoPlaying() {
74
+ return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0;
75
+ };
89
76
  var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };
90
- (0, retry_with_timeout_1.repeatWithTimeout)(isVideoPlaying, waitForVideoSettings)
91
- .then(function () { return doResolve(videoEl.parentElement); })
92
- .catch(function () { return reject(new Error('Timeout while waiting for video to play')); });
77
+ retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings).then(function () {
78
+ return doResolve(videoEl.parentElement);
79
+ }).catch(function () {
80
+ return reject(new Error('Timeout while waiting for video to play'));
81
+ });
93
82
  });
94
- }
95
- else {
83
+ } else {
96
84
  container.appendChild(videoEl);
85
+ //doResolve(videoEl);
97
86
  }
98
87
  });
99
88
  }
@@ -105,12 +94,10 @@ function removeVideoElementFromDom(videoEl) {
105
94
  if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {
106
95
  videoEl.parentNode.removeChild(videoEl);
107
96
  trace.info('Video element removed successfully');
108
- }
109
- else {
97
+ } else {
110
98
  trace.warn('Video element not removed', videoEl, videoEl.parentNode);
111
99
  }
112
- }
113
- else {
100
+ } else {
114
101
  videoEl.remove();
115
102
  }
116
103
  resolve();
@@ -121,16 +108,23 @@ var defaultSnapshot = {
121
108
  format: 'image/png',
122
109
  quality: 0.92
123
110
  };
124
- function getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions) {
125
- if (snapshotOptions === void 0) { snapshotOptions = defaultSnapshot; }
126
- var format = snapshotOptions.format, quality = snapshotOptions.quality, x = snapshotOptions.x, y = snapshotOptions.y, w = snapshotOptions.w, h = snapshotOptions.h;
127
- var crop = !(0, isUndefined_1.default)(x) && !(0, isUndefined_1.default)(y) && !(0, isUndefined_1.default)(w) && !(0, isUndefined_1.default)(h);
128
- var resize = !crop && (!(0, isUndefined_1.default)(w) || !(0, isUndefined_1.default)(h));
111
+ function getSnapshotFromMediaStream(mediaStream, snapshotOptions) {
112
+ if (snapshotOptions === void 0) {
113
+ snapshotOptions = defaultSnapshot;
114
+ }
115
+ var format = snapshotOptions.format,
116
+ quality = snapshotOptions.quality,
117
+ x = snapshotOptions.x,
118
+ y = snapshotOptions.y,
119
+ w = snapshotOptions.w,
120
+ h = snapshotOptions.h;
121
+ var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);
122
+ var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));
129
123
  return new Promise(function (resolve, reject) {
130
124
  var tempContainer = document.createElement('div');
131
125
  tempContainer.style.cssText = 'position:absolute;left: -10000px;';
132
126
  document.body.appendChild(tempContainer);
133
- var doneFn = function (err, image) {
127
+ var doneFn = function doneFn(err, image) {
134
128
  if (err) {
135
129
  reject(err);
136
130
  return;
@@ -142,71 +136,72 @@ function getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions)
142
136
  }
143
137
  }, 50);
144
138
  };
145
- renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream)
146
- .then(function (videoElement) {
139
+ renderMediaStreamToVideoEl(tempContainer, mediaStream).then(function (videoElement) {
147
140
  return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement)).then(function (imgData) {
148
141
  if (!imgData || imgData.length < 10) {
149
142
  throw new Error('Failed to create a snapshot - imgData is null or empty');
150
143
  }
151
144
  doneFn(null, imgData);
152
145
  });
153
- })
154
- .catch(function (error) {
155
- return doneFn(error || new Error('Failed to create a snapshot - cannot render MediaStream To VideoEl'));
146
+ }).catch(function (error) {
147
+ doneFn(error || new Error('Failed to create a snapshot - can\'t render MediaStream To VideoEl '));
156
148
  });
157
149
  });
150
+ //Gets image in all browsers except of IE
158
151
  function getImgData(videoElement) {
159
- var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;
152
+ var videoWidth = videoElement.videoWidth,
153
+ videoHeight = videoElement.videoHeight;
160
154
  var canvas = document.createElement('canvas');
161
155
  var ctx = canvas.getContext('2d');
162
156
  if (crop) {
163
157
  canvas.width = w;
164
158
  canvas.height = h;
165
159
  ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);
166
- }
167
- else if (resize) {
160
+ } else if (resize) {
168
161
  canvas.width = w;
169
162
  canvas.height = h;
170
163
  ctx.drawImage(videoElement, 0, 0, w, h);
171
- }
172
- else {
164
+ } else {
173
165
  canvas.height = videoHeight;
174
166
  canvas.width = videoWidth;
175
167
  ctx.drawImage(videoElement, 0, 0);
176
168
  }
177
169
  return canvas.toDataURL(format, quality);
178
170
  }
171
+ //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.
179
172
  function getImgDataIE11(videoElement) {
180
173
  return new Promise(function (resolve) {
181
- var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;
174
+ var videoWidth = videoElement.videoWidth,
175
+ videoHeight = videoElement.videoHeight;
182
176
  var canvas = document.createElement('canvas');
183
177
  var ctx = canvas.getContext('2d');
184
178
  if (crop || resize) {
185
179
  canvas.width = w;
186
180
  canvas.height = h;
187
- }
188
- else {
181
+ } else {
189
182
  canvas.height = videoHeight;
190
183
  canvas.width = videoWidth;
191
184
  }
192
185
  function _drawAndRemove(image) {
193
186
  if (crop) {
194
187
  ctx.drawImage(image, x, y, w, h, 0, 0, w, h);
195
- }
196
- else if (resize) {
188
+ } else if (resize) {
197
189
  ctx.drawImage(image, 0, 0, w, h);
198
- }
199
- else {
190
+ } else {
200
191
  ctx.drawImage(image, 0, 0, videoWidth, videoHeight);
201
192
  }
202
193
  return canvas.toDataURL(format, quality);
203
194
  }
204
195
  var base64 = videoElement.getFrame();
205
196
  var image = new Image();
206
- image.onload = function () { return resolve(_drawAndRemove(image)); };
197
+ image.onload = function () {
198
+ return resolve(_drawAndRemove(image));
199
+ };
207
200
  image.setAttribute('src', 'data:image/bmp;base64,' + base64);
208
201
  });
209
202
  }
210
203
  }
211
204
  exports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;
212
- //# sourceMappingURL=MediaDomUtils.js.map
205
+
206
+ //# sourceMappingURL=MediaDomUtils.js.map
207
+ //# sourceMappingURL=MediaDomUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediaDomUtils.js","sourceRoot":"","sources":["../../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["MediaUtils/MediaDomUtils.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","getSnapshotFromMediaStream","removeVideoElementFromDom","renderMediaStreamToVideoEl","isUndefined_1","require","ts_environment_detect_1","retry_with_timeout_1","MediaTracer_1","trace","getMediaTracer","isIE11","TsEnvironmentDetect","container","mediaStream","Promise","resolve","reject","document","body","contains","Error","doResolve","videoEl","info","createElement","muted","playsInline","window","WebRTCAdapter","appendChild","bindVideoElement","srcObject","addEventListener","play","setAttribute","playRes","then","catch","error","handleComplete","parentElement","tagName","waitForObjectSettings","intervalInMs","timeoutInMs","repeatWithTimeout","isVideoPlaying","videoHeight","videoWidth","waitForVideoSettings","unBindVideoElement","parentNode","removeChild","warn","remove","defaultSnapshot","format","quality","snapshotOptions","x","y","w","h","crop","default","resize","tempContainer","style","cssText","doneFn","err","image","setTimeout","videoElement","getImgDataIE11","getImgData","imgData","length","canvas","ctx","getContext","width","height","drawImage","toDataURL","_drawAndRemove","base64","getFrame","Image","onload"],"mappings":"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","file":"MediaDomUtils.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.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = void 0;\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\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 retry_with_timeout_1 = require(\"@techsee/techsee-common/lib/core/retry-with-timeout\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('DomUtils');\nvar isIE11 = (new ts_environment_detect_1.TsEnvironmentDetect()).isIE11();\nfunction renderMediaStreamToVideoEl(container, mediaStream) {\n return new Promise(function (resolve, reject) {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n return;\n }\n var doResolve = function (videoEl) {\n trace.info('Video element created successfully', { videoEl: videoEl });\n resolve(videoEl);\n };\n var videoEl = document.createElement('video');\n videoEl.muted = true;\n videoEl.playsInline = true;\n if (isIE11 && window.WebRTCAdapter) {\n container.appendChild(videoEl);\n window.WebRTCAdapter.bindVideoElement(videoEl);\n }\n videoEl.srcObject = mediaStream;\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', function () {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n });\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n try {\n var playRes = videoEl.play();\n if (playRes && playRes.then) {\n playRes.then(function () {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n }\n else if (!isIE11) {\n doResolve(videoEl);\n }\n if (playRes && playRes.catch) {\n playRes.catch(function (error) {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n }\n catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n return;\n }\n if (isIE11) {\n var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };\n var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };\n retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(function () {\n //We will wait, until video is played, then we resolve\n var isVideoPlaying = function () { return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0; };\n var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };\n retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(function () { return doResolve(videoEl.parentElement); })\n .catch(function () { return reject(new Error('Timeout while waiting for video to play')); });\n });\n }\n else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\nexports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;\nfunction removeVideoElementFromDom(videoEl) {\n return new Promise(function (resolve) {\n if (isIE11 && window.WebRTCAdapter) {\n window.WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n }\n else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n }\n else {\n videoEl.remove();\n }\n resolve();\n });\n}\nexports.removeVideoElementFromDom = removeVideoElementFromDom;\nvar defaultSnapshot = {\n format: 'image/png',\n quality: 0.92\n};\nfunction getSnapshotFromMediaStream(mediaStream, snapshotOptions) {\n if (snapshotOptions === void 0) { snapshotOptions = defaultSnapshot; }\n var format = snapshotOptions.format, quality = snapshotOptions.quality, x = snapshotOptions.x, y = snapshotOptions.y, w = snapshotOptions.w, h = snapshotOptions.h;\n var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);\n var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));\n return new Promise(function (resolve, reject) {\n var tempContainer = document.createElement('div');\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n var doneFn = function (err, image) {\n if (err) {\n reject(err);\n return;\n }\n setTimeout(function () {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n renderMediaStreamToVideoEl(tempContainer, mediaStream)\n .then(function (videoElement) { return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then(function (imgData) {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n doneFn(null, imgData);\n }); })\n .catch(function (error) {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n //Gets image in all browsers except of IE\n function getImgData(videoElement) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, 0, 0, w, h);\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n ctx.drawImage(videoElement, 0, 0);\n }\n return canvas.toDataURL(format, quality);\n }\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement) {\n return new Promise(function (resolve) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n function _drawAndRemove(image) {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n }\n else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n return canvas.toDataURL(format, quality);\n }\n var base64 = videoElement.getFrame();\n var image = new Image();\n image.onload = function () { return resolve(_drawAndRemove(image)); };\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\nexports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;\n\n//# sourceMappingURL=MediaDomUtils.js.map\n"]}
@@ -1,4 +1,3 @@
1
1
  import { ITechseeTracer } from '@techsee/techsee-common/lib/core/Tracer';
2
2
  export declare const TECHSEE_MEDIA_TRACER = "MediaTracer";
3
3
  export declare function getMediaTracer(postfixName: string): ITechseeTracer;
4
- //# sourceMappingURL=MediaTracer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediaTracer.d.ts","sourceRoot":"","sources":["../../src/MediaUtils/MediaTracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,cAAc,EAAC,MAAM,yCAAyC,CAAC;AAElF,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAElE"}
1
+ {"version":3,"sources":["../src/MediaUtils/MediaTracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,cAAc,EAAC,MAAM,yCAAyC,CAAC;AAElF,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAElE","file":"MediaTracer.d.ts","sourcesContent":["import {getTracer, ITechseeTracer} from '@techsee/techsee-common/lib/core/Tracer';\n\nexport const TECHSEE_MEDIA_TRACER = 'MediaTracer';\n\nexport function getMediaTracer(postfixName: string): ITechseeTracer {\n return getTracer(TECHSEE_MEDIA_TRACER, postfixName);\n}\n"]}
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;
4
5
  var Tracer_1 = require("@techsee/techsee-common/lib/core/Tracer");
5
6
  exports.TECHSEE_MEDIA_TRACER = 'MediaTracer';
6
7
  function getMediaTracer(postfixName) {
7
- return (0, Tracer_1.getTracer)(exports.TECHSEE_MEDIA_TRACER, postfixName);
8
+ return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);
8
9
  }
9
10
  exports.getMediaTracer = getMediaTracer;
10
- //# sourceMappingURL=MediaTracer.js.map
11
+
12
+ //# sourceMappingURL=MediaTracer.js.map
13
+ //# sourceMappingURL=MediaTracer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediaTracer.js","sourceRoot":"","sources":["../../src/MediaUtils/MediaTracer.ts"],"names":[],"mappings":";;;AAAA,kEAAkF;AAErE,QAAA,oBAAoB,GAAG,aAAa,CAAC;AAElD,SAAgB,cAAc,CAAC,WAAmB;IAC9C,OAAO,IAAA,kBAAS,EAAC,4BAAoB,EAAE,WAAW,CAAC,CAAC;AACxD,CAAC;AAFD,wCAEC"}
1
+ {"version":3,"sources":["MediaUtils/MediaTracer.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","TECHSEE_MEDIA_TRACER","Tracer_1","require","postfixName","getTracer"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACAD,QAAQE,cAAR,GAAyBF,QAAQG,oBAAR,GAA+B,KAAK,CAA7D;AACA,IAAIC,WAAWC,QAAQ,yCAAR,CAAf;AACAL,QAAQG,oBAAR,GAA+B,aAA/B;AACA,SAASD,cAAT,CAAwBI,WAAxB,EAAqC;AACjC,WAAOF,SAASG,SAAT,CAAmBP,QAAQG,oBAA3B,EAAiDG,WAAjD,CAAP;AACH;AACDN,QAAQE,cAAR,GAAyBA,cAAzB;;AAEA","file":"MediaTracer.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;\nvar Tracer_1 = require(\"@techsee/techsee-common/lib/core/Tracer\");\nexports.TECHSEE_MEDIA_TRACER = 'MediaTracer';\nfunction getMediaTracer(postfixName) {\n return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);\n}\nexports.getMediaTracer = getMediaTracer;\n\n//# sourceMappingURL=MediaTracer.js.map\n"]}