@techsee/techsee-media-service 18.6.0 → 19.0.0

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 (141) hide show
  1. package/lib/LocalStreamManager.d.ts +1 -0
  2. package/lib/LocalStreamManager.d.ts.map +1 -1
  3. package/lib/LocalStreamManager.js +320 -441
  4. package/lib/LocalStreamManager.js.map +1 -1
  5. package/lib/MediaConstants.d.ts +1 -0
  6. package/lib/MediaConstants.d.ts.map +1 -1
  7. package/lib/MediaConstants.js +53 -95
  8. package/lib/MediaConstants.js.map +1 -1
  9. package/lib/MediaContracts.d.ts +1 -0
  10. package/lib/MediaContracts.d.ts.map +1 -1
  11. package/lib/MediaContracts.js +2 -5
  12. package/lib/MediaContracts.js.map +1 -1
  13. package/lib/MediaPublisher.d.ts +1 -0
  14. package/lib/MediaPublisher.d.ts.map +1 -1
  15. package/lib/MediaPublisher.js +36 -49
  16. package/lib/MediaPublisher.js.map +1 -1
  17. package/lib/MediaServiceBase.d.ts +1 -0
  18. package/lib/MediaServiceBase.d.ts.map +1 -1
  19. package/lib/MediaServiceBase.js +687 -937
  20. package/lib/MediaServiceBase.js.map +1 -1
  21. package/lib/MediaSession/MediaServer.d.ts +1 -0
  22. package/lib/MediaSession/MediaServer.d.ts.map +1 -1
  23. package/lib/MediaSession/MediaServer.js +372 -517
  24. package/lib/MediaSession/MediaServer.js.map +1 -1
  25. package/lib/MediaSession/MediaSessionBase.d.ts +1 -0
  26. package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
  27. package/lib/MediaSession/MediaSessionBase.js +88 -127
  28. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  29. package/lib/MediaSession/SessionOpentok.d.ts +1 -0
  30. package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
  31. package/lib/MediaSession/SessionOpentok.js +357 -503
  32. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  33. package/lib/MediaSession/SessionTurn.d.ts +1 -0
  34. package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
  35. package/lib/MediaSession/SessionTurn.js +431 -613
  36. package/lib/MediaSession/SessionTurn.js.map +1 -1
  37. package/lib/MediaSession/TurnConstants.d.ts +1 -0
  38. package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
  39. package/lib/MediaSession/TurnConstants.js +17 -32
  40. package/lib/MediaSession/TurnConstants.js.map +1 -1
  41. package/lib/MediaSubscriber.d.ts +1 -0
  42. package/lib/MediaSubscriber.d.ts.map +1 -1
  43. package/lib/MediaSubscriber.js +189 -245
  44. package/lib/MediaSubscriber.js.map +1 -1
  45. package/lib/MediaUtils/Compatibility.d.ts +1 -0
  46. package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
  47. package/lib/MediaUtils/Compatibility.js +129 -283
  48. package/lib/MediaUtils/Compatibility.js.map +1 -1
  49. package/lib/MediaUtils/MediaDomUtils.d.ts +1 -0
  50. package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
  51. package/lib/MediaUtils/MediaDomUtils.js +184 -252
  52. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  53. package/lib/MediaUtils/MediaTracer.d.ts +1 -0
  54. package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
  55. package/lib/MediaUtils/MediaTracer.js +3 -10
  56. package/lib/MediaUtils/MediaTracer.js.map +1 -1
  57. package/lib/MediaUtils/index.d.ts +1 -0
  58. package/lib/MediaUtils/index.d.ts.map +1 -1
  59. package/lib/MediaUtils/index.js +3 -13
  60. package/lib/MediaUtils/index.js.map +1 -1
  61. package/lib/MultiParty/DetectWebRtcService.d.ts +1 -0
  62. package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
  63. package/lib/MultiParty/DetectWebRtcService.js +92 -241
  64. package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
  65. package/lib/MultiParty/MediaCapabilitiesService.d.ts +1 -0
  66. package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -1
  67. package/lib/MultiParty/MediaCapabilitiesService.js +143 -312
  68. package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -1
  69. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +1 -0
  70. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -1
  71. package/lib/MultiParty/MediaCapabilitiesUtils.js +95 -277
  72. package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -1
  73. package/lib/MultiParty/MediaTracer.d.ts +1 -0
  74. package/lib/MultiParty/MediaTracer.d.ts.map +1 -1
  75. package/lib/MultiParty/MediaTracer.js +3 -10
  76. package/lib/MultiParty/MediaTracer.js.map +1 -1
  77. package/lib/MultiParty/MultiPartyService.d.ts +1 -0
  78. package/lib/MultiParty/MultiPartyService.d.ts.map +1 -1
  79. package/lib/MultiParty/MultiPartyService.js +24 -47
  80. package/lib/MultiParty/MultiPartyService.js.map +1 -1
  81. package/lib/MultiParty/MultiPartyServiceFactory.d.ts +2 -1
  82. package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -1
  83. package/lib/MultiParty/MultiPartyServiceFactory.js +7 -15
  84. package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -1
  85. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +1 -0
  86. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +1 -1
  87. package/lib/MultiParty/MultipartyServiceEventTypes.js +11 -15
  88. package/lib/MultiParty/MultipartyServiceEventTypes.js.map +1 -1
  89. package/lib/MultiParty/index.d.ts +1 -0
  90. package/lib/MultiParty/index.d.ts.map +1 -1
  91. package/lib/MultiParty/index.js +15 -35
  92. package/lib/MultiParty/index.js.map +1 -1
  93. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +2 -1
  94. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +1 -1
  95. package/lib/MultiParty/opentok/OpentokMultiPartyService.js +457 -839
  96. package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +1 -1
  97. package/lib/MultiParty/opentok/OpentokPublisher.d.ts +1 -0
  98. package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +1 -1
  99. package/lib/MultiParty/opentok/OpentokPublisher.js +107 -269
  100. package/lib/MultiParty/opentok/OpentokPublisher.js.map +1 -1
  101. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +1 -0
  102. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +1 -1
  103. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +34 -54
  104. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +1 -1
  105. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +1 -0
  106. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +1 -1
  107. package/lib/MultiParty/opentok/OpentokScreenPublisher.js +40 -77
  108. package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +1 -1
  109. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +1 -0
  110. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +1 -1
  111. package/lib/MultiParty/opentok/OpentokSubscriber.js +20 -28
  112. package/lib/MultiParty/opentok/OpentokSubscriber.js.map +1 -1
  113. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +1 -0
  114. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +1 -1
  115. package/lib/MultiParty/opentok/OpentokVideoPublisher.js +150 -355
  116. package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +1 -1
  117. package/lib/MultiParty/opentok/trace.d.ts +1 -0
  118. package/lib/MultiParty/opentok/trace.d.ts.map +1 -1
  119. package/lib/MultiParty/opentok/trace.js +11 -24
  120. package/lib/MultiParty/opentok/trace.js.map +1 -1
  121. package/lib/MultiParty/types.d.ts +1 -0
  122. package/lib/MultiParty/types.d.ts.map +1 -1
  123. package/lib/MultiParty/types.js +2 -5
  124. package/lib/MultiParty/types.js.map +1 -1
  125. package/lib/MultiParty/utils.d.ts +1 -0
  126. package/lib/MultiParty/utils.d.ts.map +1 -1
  127. package/lib/MultiParty/utils.js +5 -15
  128. package/lib/MultiParty/utils.js.map +1 -1
  129. package/lib/TechseeMediaStream.d.ts +1 -0
  130. package/lib/TechseeMediaStream.d.ts.map +1 -1
  131. package/lib/TechseeMediaStream.js +53 -61
  132. package/lib/TechseeMediaStream.js.map +1 -1
  133. package/lib/qos/raw-qos.d.ts +29 -0
  134. package/lib/qos/raw-qos.d.ts.map +1 -0
  135. package/lib/qos/raw-qos.js +247 -382
  136. package/lib/qos/raw-qos.js.map +1 -1
  137. package/lib/webrtc-ie-shim.d.ts +4 -0
  138. package/lib/webrtc-ie-shim.d.ts.map +1 -0
  139. package/lib/webrtc-ie-shim.js +1999 -3454
  140. package/lib/webrtc-ie-shim.js.map +1 -1
  141. package/package.json +42 -45
@@ -1,280 +1,212 @@
1
1
  "use strict";
2
-
3
- var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
- return mod && mod.__esModule ? mod : {
5
- "default": mod
6
- };
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
4
  };
8
-
9
- Object.defineProperty(exports, "__esModule", {
10
- value: true
11
- });
5
+ Object.defineProperty(exports, "__esModule", { value: true });
12
6
  exports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = exports.calculateResolution = void 0;
13
-
14
- var isUndefined_1 = __importDefault(require("lodash/isUndefined")); // eslint-disable-next-line @typescript-eslint/ban-ts-comment
15
- //@ts-ignore
16
-
17
-
7
+ var isUndefined_1 = __importDefault(require("lodash/isUndefined"));
18
8
  var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
19
-
20
9
  var retry_with_timeout_1 = require("@techsee/techsee-common/lib/core/retry-with-timeout");
21
-
22
10
  var MediaTracer_1 = require("./MediaTracer");
23
-
24
11
  var MediaConstants_1 = require("../MediaConstants");
25
-
26
- var trace = MediaTracer_1.getMediaTracer('DomUtils');
12
+ var trace = (0, MediaTracer_1.getMediaTracer)('DomUtils');
27
13
  var isIE11 = new ts_environment_detect_1.TsEnvironmentDetect().isIE11();
28
-
29
14
  function calculateResolution(_a) {
30
- var videoWidth = _a.videoWidth,
31
- videoHeight = _a.videoHeight;
32
- var multiplyResolution = videoWidth * videoHeight;
33
- var videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.NONE;
34
-
35
- if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.HD) {
36
- videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.HD;
37
- }
38
-
39
- if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.SD && multiplyResolution < MediaConstants_1.VideoResolutionMultiplication.HD) {
40
- videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.SD;
41
- }
42
-
43
- return videoResolutionFormat;
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;
44
26
  }
45
-
46
27
  exports.calculateResolution = calculateResolution;
47
-
48
28
  function renderMediaStreamToVideoEl(container, mediaStream, streamType) {
49
- return new Promise(function (resolve, reject) {
50
- if (!document.body.contains(container)) {
51
- reject(new Error('Cannot render to container that is not attached to dom'));
52
- return;
53
- }
54
-
55
- var doResolve = function doResolve(videoEl) {
56
- trace.info('Video element created successfully', {
57
- videoEl: videoEl
58
- });
59
- resolve(videoEl);
60
- };
61
-
62
- var videoEl = document.createElement('video');
63
- videoEl.muted = true;
64
- videoEl.playsInline = true;
65
-
66
- if (isIE11 && window.WebRTCAdapter) {
67
- container.appendChild(videoEl);
68
- window.WebRTCAdapter.bindVideoElement(videoEl);
69
- }
70
-
71
- videoEl.srcObject = mediaStream; // When unplugged the headphones in ios the video element got paused.
72
-
73
- videoEl.addEventListener('pause', function () {
74
- if ([MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM].indexOf(streamType) > -1) {
75
- trace.info('Video element got paused. IOS headphones disconnected');
76
- videoEl.play();
77
- }
78
- });
79
-
80
- if (!isIE11) {
81
- // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play
82
- videoEl.setAttribute('muted', '');
83
- }
84
-
85
- try {
86
- var playRes = videoEl.play();
87
-
88
- if (playRes && playRes.then) {
89
- playRes.then(function () {
90
- trace.info('Video element play success');
91
-
92
- if (!isIE11) {
93
- doResolve(videoEl);
94
- }
95
- });
96
- } else if (!isIE11) {
97
- doResolve(videoEl);
98
- }
99
-
100
- if (playRes && playRes["catch"]) {
101
- playRes["catch"](function (error) {
102
- trace.error('Reject while executing play method on video element', error);
103
- reject(error);
104
- });
105
- }
106
- } catch (error) {
107
- reject(error);
108
- trace.error('Error while executing play method on video element', error);
109
- return;
110
- }
111
-
112
- if (isIE11) {
113
- var handleComplete = function handleComplete() {
114
- return videoEl.parentElement.tagName !== 'OBJECT';
115
- };
116
-
117
- var waitForObjectSettings = {
118
- intervalInMs: 30,
119
- timeoutInMs: 200
120
- };
121
- retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings).then(function () {
122
- //We will wait, until video is played, then we resolve
123
- var isVideoPlaying = function isVideoPlaying() {
124
- return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0;
125
- };
126
-
127
- var waitForVideoSettings = {
128
- intervalInMs: 50,
129
- timeoutInMs: 10000
29
+ return new Promise(function (resolve, reject) {
30
+ if (!document.body.contains(container)) {
31
+ reject(new Error('Cannot render to container that is not attached to dom'));
32
+ return;
33
+ }
34
+ var doResolve = function (videoEl) {
35
+ trace.info('Video element created successfully', { videoEl: videoEl });
36
+ resolve(videoEl);
130
37
  };
131
- retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings).then(function () {
132
- return doResolve(videoEl.parentElement);
133
- })["catch"](function () {
134
- return reject(new Error('Timeout while waiting for video to play'));
38
+ var videoEl = document.createElement('video');
39
+ videoEl.muted = true;
40
+ videoEl.playsInline = true;
41
+ if (isIE11 && window.WebRTCAdapter) {
42
+ container.appendChild(videoEl);
43
+ window.WebRTCAdapter.bindVideoElement(videoEl);
44
+ }
45
+ videoEl.srcObject = mediaStream;
46
+ 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
+ }
135
55
  });
136
- });
137
- } else {
138
- container.appendChild(videoEl); //doResolve(videoEl);
139
- }
140
- });
56
+ if (!isIE11) {
57
+ videoEl.setAttribute('muted', '');
58
+ }
59
+ try {
60
+ var playRes = videoEl.play();
61
+ if (playRes && playRes.then) {
62
+ playRes.then(function () {
63
+ trace.info('Video element play success');
64
+ if (!isIE11) {
65
+ doResolve(videoEl);
66
+ }
67
+ });
68
+ }
69
+ else if (!isIE11) {
70
+ doResolve(videoEl);
71
+ }
72
+ if (playRes && playRes.catch) {
73
+ playRes.catch(function (error) {
74
+ trace.error('Reject while executing play method on video element', error);
75
+ reject(error);
76
+ });
77
+ }
78
+ }
79
+ catch (error) {
80
+ reject(error);
81
+ trace.error('Error while executing play method on video element', error);
82
+ return;
83
+ }
84
+ if (isIE11) {
85
+ var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };
86
+ 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; };
89
+ 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')); });
93
+ });
94
+ }
95
+ else {
96
+ container.appendChild(videoEl);
97
+ }
98
+ });
141
99
  }
142
-
143
100
  exports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;
144
-
145
101
  function removeVideoElementFromDom(videoEl) {
146
- return new Promise(function (resolve) {
147
- if (isIE11 && window.WebRTCAdapter) {
148
- window.WebRTCAdapter.unBindVideoElement(videoEl);
149
-
150
- if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {
151
- videoEl.parentNode.removeChild(videoEl);
152
- trace.info('Video element removed successfully');
153
- } else {
154
- trace.warn('Video element not removed', videoEl, videoEl.parentNode);
155
- }
156
- } else {
157
- videoEl.remove();
158
- }
159
-
160
- resolve();
161
- });
102
+ return new Promise(function (resolve) {
103
+ if (isIE11 && window.WebRTCAdapter) {
104
+ window.WebRTCAdapter.unBindVideoElement(videoEl);
105
+ if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {
106
+ videoEl.parentNode.removeChild(videoEl);
107
+ trace.info('Video element removed successfully');
108
+ }
109
+ else {
110
+ trace.warn('Video element not removed', videoEl, videoEl.parentNode);
111
+ }
112
+ }
113
+ else {
114
+ videoEl.remove();
115
+ }
116
+ resolve();
117
+ });
162
118
  }
163
-
164
119
  exports.removeVideoElementFromDom = removeVideoElementFromDom;
165
120
  var defaultSnapshot = {
166
- format: 'image/png',
167
- quality: 0.92
121
+ format: 'image/png',
122
+ quality: 0.92
168
123
  };
169
-
170
124
  function getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions) {
171
- if (snapshotOptions === void 0) {
172
- snapshotOptions = defaultSnapshot;
173
- }
174
-
175
- var format = snapshotOptions.format,
176
- quality = snapshotOptions.quality,
177
- x = snapshotOptions.x,
178
- y = snapshotOptions.y,
179
- w = snapshotOptions.w,
180
- h = snapshotOptions.h;
181
- var crop = !isUndefined_1["default"](x) && !isUndefined_1["default"](y) && !isUndefined_1["default"](w) && !isUndefined_1["default"](h);
182
- var resize = !crop && (!isUndefined_1["default"](w) || !isUndefined_1["default"](h));
183
- return new Promise(function (resolve, reject) {
184
- var tempContainer = document.createElement('div');
185
- tempContainer.style.cssText = 'position:absolute;left: -10000px;';
186
- document.body.appendChild(tempContainer);
187
-
188
- var doneFn = function doneFn(err, image) {
189
- if (err) {
190
- reject(err);
191
- return;
192
- }
193
-
194
- setTimeout(function () {
195
- document.body.removeChild(tempContainer);
196
-
197
- if (!err) {
198
- resolve(image);
199
- }
200
- }, 50);
201
- };
202
-
203
- renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream).then(function (videoElement) {
204
- return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement)).then(function (imgData) {
205
- if (!imgData || imgData.length < 10) {
206
- throw new Error('Failed to create a snapshot - imgData is null or empty');
207
- }
208
-
209
- doneFn(null, imgData);
210
- });
211
- })["catch"](function (error) {
212
- return doneFn(error || new Error('Failed to create a snapshot - cannot render MediaStream To VideoEl'));
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));
129
+ return new Promise(function (resolve, reject) {
130
+ var tempContainer = document.createElement('div');
131
+ tempContainer.style.cssText = 'position:absolute;left: -10000px;';
132
+ document.body.appendChild(tempContainer);
133
+ var doneFn = function (err, image) {
134
+ if (err) {
135
+ reject(err);
136
+ return;
137
+ }
138
+ setTimeout(function () {
139
+ document.body.removeChild(tempContainer);
140
+ if (!err) {
141
+ resolve(image);
142
+ }
143
+ }, 50);
144
+ };
145
+ renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream)
146
+ .then(function (videoElement) {
147
+ return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement)).then(function (imgData) {
148
+ if (!imgData || imgData.length < 10) {
149
+ throw new Error('Failed to create a snapshot - imgData is null or empty');
150
+ }
151
+ doneFn(null, imgData);
152
+ });
153
+ })
154
+ .catch(function (error) {
155
+ return doneFn(error || new Error('Failed to create a snapshot - cannot render MediaStream To VideoEl'));
156
+ });
213
157
  });
214
- }); //Gets image in all browsers except of IE
215
-
216
- function getImgData(videoElement) {
217
- var videoWidth = videoElement.videoWidth,
218
- videoHeight = videoElement.videoHeight;
219
- var canvas = document.createElement('canvas');
220
- var ctx = canvas.getContext('2d');
221
-
222
- if (crop) {
223
- canvas.width = w;
224
- canvas.height = h;
225
- ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);
226
- } else if (resize) {
227
- canvas.width = w;
228
- canvas.height = h;
229
- ctx.drawImage(videoElement, 0, 0, w, h);
230
- } else {
231
- canvas.height = videoHeight;
232
- canvas.width = videoWidth;
233
- ctx.drawImage(videoElement, 0, 0);
234
- }
235
-
236
- return canvas.toDataURL(format, quality);
237
- } //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.
238
-
239
-
240
- function getImgDataIE11(videoElement) {
241
- return new Promise(function (resolve) {
242
- var videoWidth = videoElement.videoWidth,
243
- videoHeight = videoElement.videoHeight;
244
- var canvas = document.createElement('canvas');
245
- var ctx = canvas.getContext('2d');
246
-
247
- if (crop || resize) {
248
- canvas.width = w;
249
- canvas.height = h;
250
- } else {
251
- canvas.height = videoHeight;
252
- canvas.width = videoWidth;
253
- }
254
-
255
- function _drawAndRemove(image) {
158
+ function getImgData(videoElement) {
159
+ var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;
160
+ var canvas = document.createElement('canvas');
161
+ var ctx = canvas.getContext('2d');
256
162
  if (crop) {
257
- ctx.drawImage(image, x, y, w, h, 0, 0, w, h);
258
- } else if (resize) {
259
- ctx.drawImage(image, 0, 0, w, h);
260
- } else {
261
- ctx.drawImage(image, 0, 0, videoWidth, videoHeight);
163
+ canvas.width = w;
164
+ canvas.height = h;
165
+ ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);
166
+ }
167
+ else if (resize) {
168
+ canvas.width = w;
169
+ canvas.height = h;
170
+ ctx.drawImage(videoElement, 0, 0, w, h);
171
+ }
172
+ else {
173
+ canvas.height = videoHeight;
174
+ canvas.width = videoWidth;
175
+ ctx.drawImage(videoElement, 0, 0);
262
176
  }
263
-
264
177
  return canvas.toDataURL(format, quality);
265
- }
266
-
267
- var base64 = videoElement.getFrame();
268
- var image = new Image();
269
-
270
- image.onload = function () {
271
- return resolve(_drawAndRemove(image));
272
- };
273
-
274
- image.setAttribute('src', 'data:image/bmp;base64,' + base64);
275
- });
276
- }
178
+ }
179
+ function getImgDataIE11(videoElement) {
180
+ return new Promise(function (resolve) {
181
+ var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;
182
+ var canvas = document.createElement('canvas');
183
+ var ctx = canvas.getContext('2d');
184
+ if (crop || resize) {
185
+ canvas.width = w;
186
+ canvas.height = h;
187
+ }
188
+ else {
189
+ canvas.height = videoHeight;
190
+ canvas.width = videoWidth;
191
+ }
192
+ function _drawAndRemove(image) {
193
+ if (crop) {
194
+ ctx.drawImage(image, x, y, w, h, 0, 0, w, h);
195
+ }
196
+ else if (resize) {
197
+ ctx.drawImage(image, 0, 0, w, h);
198
+ }
199
+ else {
200
+ ctx.drawImage(image, 0, 0, videoWidth, videoHeight);
201
+ }
202
+ return canvas.toDataURL(format, quality);
203
+ }
204
+ var base64 = videoElement.getFrame();
205
+ var image = new Image();
206
+ image.onload = function () { return resolve(_drawAndRemove(image)); };
207
+ image.setAttribute('src', 'data:image/bmp;base64,' + base64);
208
+ });
209
+ }
277
210
  }
278
-
279
211
  exports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;
280
- //# sourceMappingURL=MediaDomUtils.js.map
212
+ //# sourceMappingURL=MediaDomUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["MediaUtils/MediaDomUtils.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","getSnapshotFromMediaStream","removeVideoElementFromDom","renderMediaStreamToVideoEl","calculateResolution","isUndefined_1","require","ts_environment_detect_1","retry_with_timeout_1","MediaTracer_1","MediaConstants_1","trace","getMediaTracer","isIE11","TsEnvironmentDetect","_a","videoWidth","videoHeight","multiplyResolution","videoResolutionFormat","VideoResolutionFormat","NONE","VideoResolutionMultiplication","HD","SD","container","mediaStream","streamType","Promise","resolve","reject","document","body","contains","Error","doResolve","videoEl","info","createElement","muted","playsInline","window","WebRTCAdapter","appendChild","bindVideoElement","srcObject","addEventListener","KnownMediaStream","USER_AUDIO_STREAM","AGENT_AUDIO_STREAM","OBSERVER_AUDIO_STREAM","indexOf","play","setAttribute","playRes","then","error","handleComplete","parentElement","tagName","waitForObjectSettings","intervalInMs","timeoutInMs","repeatWithTimeout","isVideoPlaying","waitForVideoSettings","unBindVideoElement","parentNode","removeChild","warn","remove","defaultSnapshot","format","quality","sourceStream","snapshotOptions","x","y","w","h","crop","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":"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,0BAAR,GAAqCF,OAAO,CAACG,yBAAR,GAAoCH,OAAO,CAACI,0BAAR,GAAqCJ,OAAO,CAACK,mBAAR,GAA8B,KAAK,CAAjJ;;AACA,IAAIC,aAAa,GAAGX,eAAe,CAACY,OAAO,CAAC,oBAAD,CAAR,CAAnC,C,CACA;AACA;;;AACA,IAAIC,uBAAuB,GAAGD,OAAO,CAAC,2DAAD,CAArC;;AACA,IAAIE,oBAAoB,GAAGF,OAAO,CAAC,qDAAD,CAAlC;;AACA,IAAIG,aAAa,GAAGH,OAAO,CAAC,eAAD,CAA3B;;AACA,IAAII,gBAAgB,GAAGJ,OAAO,CAAC,mBAAD,CAA9B;;AACA,IAAIK,KAAK,GAAGF,aAAa,CAACG,cAAd,CAA6B,UAA7B,CAAZ;AACA,IAAIC,MAAM,GAAG,IAAIN,uBAAuB,CAACO,mBAA5B,GAAkDD,MAAlD,EAAb;;AACA,SAAST,mBAAT,CAA6BW,EAA7B,EAAiC;EAC7B,IAAIC,UAAU,GAAGD,EAAE,CAACC,UAApB;EAAA,IAAgCC,WAAW,GAAGF,EAAE,CAACE,WAAjD;EACA,IAAIC,kBAAkB,GAAGF,UAAU,GAAGC,WAAtC;EACA,IAAIE,qBAAqB,GAAGT,gBAAgB,CAACU,qBAAjB,CAAuCC,IAAnE;;EACA,IAAIH,kBAAkB,IAAIR,gBAAgB,CAACY,6BAAjB,CAA+CC,EAAzE,EAA6E;IACzEJ,qBAAqB,GAAGT,gBAAgB,CAACU,qBAAjB,CAAuCG,EAA/D;EACH;;EACD,IAAIL,kBAAkB,IAAIR,gBAAgB,CAACY,6BAAjB,CAA+CE,EAArE,IACAN,kBAAkB,GAAGR,gBAAgB,CAACY,6BAAjB,CAA+CC,EADxE,EAC4E;IACxEJ,qBAAqB,GAAGT,gBAAgB,CAACU,qBAAjB,CAAuCI,EAA/D;EACH;;EACD,OAAOL,qBAAP;AACH;;AACDpB,OAAO,CAACK,mBAAR,GAA8BA,mBAA9B;;AACA,SAASD,0BAAT,CAAoCsB,SAApC,EAA+CC,WAA/C,EAA4DC,UAA5D,EAAwE;EACpE,OAAO,IAAIC,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;IAC1C,IAAI,CAACC,QAAQ,CAACC,IAAT,CAAcC,QAAd,CAAuBR,SAAvB,CAAL,EAAwC;MACpCK,MAAM,CAAC,IAAII,KAAJ,CAAU,wDAAV,CAAD,CAAN;MACA;IACH;;IACD,IAAIC,SAAS,GAAG,SAAZA,SAAY,CAAUC,OAAV,EAAmB;MAC/BzB,KAAK,CAAC0B,IAAN,CAAW,oCAAX,EAAiD;QAAED,OAAO,EAAEA;MAAX,CAAjD;MACAP,OAAO,CAACO,OAAD,CAAP;IACH,CAHD;;IAIA,IAAIA,OAAO,GAAGL,QAAQ,CAACO,aAAT,CAAuB,OAAvB,CAAd;IACAF,OAAO,CAACG,KAAR,GAAgB,IAAhB;IACAH,OAAO,CAACI,WAAR,GAAsB,IAAtB;;IACA,IAAI3B,MAAM,IAAI4B,MAAM,CAACC,aAArB,EAAoC;MAChCjB,SAAS,CAACkB,WAAV,CAAsBP,OAAtB;MACAK,MAAM,CAACC,aAAP,CAAqBE,gBAArB,CAAsCR,OAAtC;IACH;;IACDA,OAAO,CAACS,SAAR,GAAoBnB,WAApB,CAhB0C,CAiB1C;;IACAU,OAAO,CAACU,gBAAR,CAAyB,OAAzB,EAAkC,YAAY;MAC1C,IAAI,CACApC,gBAAgB,CAACqC,gBAAjB,CAAkCC,iBADlC,EAEAtC,gBAAgB,CAACqC,gBAAjB,CAAkCE,kBAFlC,EAGAvC,gBAAgB,CAACqC,gBAAjB,CAAkCG,qBAHlC,EAIFC,OAJE,CAIMxB,UAJN,IAIoB,CAAC,CAJzB,EAI4B;QACxBhB,KAAK,CAAC0B,IAAN,CAAW,uDAAX;QACAD,OAAO,CAACgB,IAAR;MACH;IACJ,CATD;;IAUA,IAAI,CAACvC,MAAL,EAAa;MACT;MACAuB,OAAO,CAACiB,YAAR,CAAqB,OAArB,EAA8B,EAA9B;IACH;;IACD,IAAI;MACA,IAAIC,OAAO,GAAGlB,OAAO,CAACgB,IAAR,EAAd;;MACA,IAAIE,OAAO,IAAIA,OAAO,CAACC,IAAvB,EAA6B;QACzBD,OAAO,CAACC,IAAR,CAAa,YAAY;UACrB5C,KAAK,CAAC0B,IAAN,CAAW,4BAAX;;UACA,IAAI,CAACxB,MAAL,EAAa;YACTsB,SAAS,CAACC,OAAD,CAAT;UACH;QACJ,CALD;MAMH,CAPD,MAQK,IAAI,CAACvB,MAAL,EAAa;QACdsB,SAAS,CAACC,OAAD,CAAT;MACH;;MACD,IAAIkB,OAAO,IAAIA,OAAO,SAAtB,EAA8B;QAC1BA,OAAO,SAAP,CAAc,UAAUE,KAAV,EAAiB;UAC3B7C,KAAK,CAAC6C,KAAN,CAAY,qDAAZ,EAAmEA,KAAnE;UACA1B,MAAM,CAAC0B,KAAD,CAAN;QACH,CAHD;MAIH;IACJ,CAnBD,CAoBA,OAAOA,KAAP,EAAc;MACV1B,MAAM,CAAC0B,KAAD,CAAN;MACA7C,KAAK,CAAC6C,KAAN,CAAY,oDAAZ,EAAkEA,KAAlE;MACA;IACH;;IACD,IAAI3C,MAAJ,EAAY;MACR,IAAI4C,cAAc,GAAG,SAAjBA,cAAiB,GAAY;QAAE,OAAOrB,OAAO,CAACsB,aAAR,CAAsBC,OAAtB,KAAkC,QAAzC;MAAoD,CAAvF;;MACA,IAAIC,qBAAqB,GAAG;QAAEC,YAAY,EAAE,EAAhB;QAAoBC,WAAW,EAAE;MAAjC,CAA5B;MACAtD,oBAAoB,CAACuD,iBAArB,CAAuCN,cAAvC,EAAuDG,qBAAvD,EAA8EL,IAA9E,CAAmF,YAAY;QAC3F;QACA,IAAIS,cAAc,GAAG,SAAjBA,cAAiB,GAAY;UAAE,OAAO5B,OAAO,CAACnB,WAAR,IAAuB,CAAvB,IAA4BmB,OAAO,CAACpB,UAAR,IAAsB,CAAzD;QAA6D,CAAhG;;QACA,IAAIiD,oBAAoB,GAAG;UAAEJ,YAAY,EAAE,EAAhB;UAAoBC,WAAW,EAAE;QAAjC,CAA3B;QACAtD,oBAAoB,CAACuD,iBAArB,CAAuCC,cAAvC,EAAuDC,oBAAvD,EACKV,IADL,CACU,YAAY;UAAE,OAAOpB,SAAS,CAACC,OAAO,CAACsB,aAAT,CAAhB;QAA0C,CADlE,WAEW,YAAY;UAAE,OAAO5B,MAAM,CAAC,IAAII,KAAJ,CAAU,yCAAV,CAAD,CAAb;QAAsE,CAF/F;MAGH,CAPD;IAQH,CAXD,MAYK;MACDT,SAAS,CAACkB,WAAV,CAAsBP,OAAtB,EADC,CAED;IACH;EACJ,CAzEM,CAAP;AA0EH;;AACDrC,OAAO,CAACI,0BAAR,GAAqCA,0BAArC;;AACA,SAASD,yBAAT,CAAmCkC,OAAnC,EAA4C;EACxC,OAAO,IAAIR,OAAJ,CAAY,UAAUC,OAAV,EAAmB;IAClC,IAAIhB,MAAM,IAAI4B,MAAM,CAACC,aAArB,EAAoC;MAChCD,MAAM,CAACC,aAAP,CAAqBwB,kBAArB,CAAwC9B,OAAxC;;MACA,IAAIA,OAAO,IAAIA,OAAO,CAAC+B,UAAnB,IAAiC/B,OAAO,CAAC+B,UAAR,CAAmBC,WAAxD,EAAqE;QACjEhC,OAAO,CAAC+B,UAAR,CAAmBC,WAAnB,CAA+BhC,OAA/B;QACAzB,KAAK,CAAC0B,IAAN,CAAW,oCAAX;MACH,CAHD,MAIK;QACD1B,KAAK,CAAC0D,IAAN,CAAW,2BAAX,EAAwCjC,OAAxC,EAAiDA,OAAO,CAAC+B,UAAzD;MACH;IACJ,CATD,MAUK;MACD/B,OAAO,CAACkC,MAAR;IACH;;IACDzC,OAAO;EACV,CAfM,CAAP;AAgBH;;AACD9B,OAAO,CAACG,yBAAR,GAAoCA,yBAApC;AACA,IAAIqE,eAAe,GAAG;EAClBC,MAAM,EAAE,WADU;EAElBC,OAAO,EAAE;AAFS,CAAtB;;AAIA,SAASxE,0BAAT,CAAoCyB,WAApC,EAAiDgD,YAAjD,EAA+DC,eAA/D,EAAgF;EAC5E,IAAIA,eAAe,KAAK,KAAK,CAA7B,EAAgC;IAAEA,eAAe,GAAGJ,eAAlB;EAAoC;;EACtE,IAAIC,MAAM,GAAGG,eAAe,CAACH,MAA7B;EAAA,IAAqCC,OAAO,GAAGE,eAAe,CAACF,OAA/D;EAAA,IAAwEG,CAAC,GAAGD,eAAe,CAACC,CAA5F;EAAA,IAA+FC,CAAC,GAAGF,eAAe,CAACE,CAAnH;EAAA,IAAsHC,CAAC,GAAGH,eAAe,CAACG,CAA1I;EAAA,IAA6IC,CAAC,GAAGJ,eAAe,CAACI,CAAjK;EACA,IAAIC,IAAI,GAAG,CAAC3E,aAAa,WAAb,CAAsBuE,CAAtB,CAAD,IAA6B,CAACvE,aAAa,WAAb,CAAsBwE,CAAtB,CAA9B,IAA0D,CAACxE,aAAa,WAAb,CAAsByE,CAAtB,CAA3D,IAAuF,CAACzE,aAAa,WAAb,CAAsB0E,CAAtB,CAAnG;EACA,IAAIE,MAAM,GAAG,CAACD,IAAD,KAAU,CAAC3E,aAAa,WAAb,CAAsByE,CAAtB,CAAD,IAA6B,CAACzE,aAAa,WAAb,CAAsB0E,CAAtB,CAAxC,CAAb;EACA,OAAO,IAAInD,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;IAC1C,IAAIoD,aAAa,GAAGnD,QAAQ,CAACO,aAAT,CAAuB,KAAvB,CAApB;IACA4C,aAAa,CAACC,KAAd,CAAoBC,OAApB,GAA8B,mCAA9B;IACArD,QAAQ,CAACC,IAAT,CAAcW,WAAd,CAA0BuC,aAA1B;;IACA,IAAIG,MAAM,GAAG,SAATA,MAAS,CAAUC,GAAV,EAAeC,KAAf,EAAsB;MAC/B,IAAID,GAAJ,EAAS;QACLxD,MAAM,CAACwD,GAAD,CAAN;QACA;MACH;;MACDE,UAAU,CAAC,YAAY;QACnBzD,QAAQ,CAACC,IAAT,CAAcoC,WAAd,CAA0Bc,aAA1B;;QACA,IAAI,CAACI,GAAL,EAAU;UACNzD,OAAO,CAAC0D,KAAD,CAAP;QACH;MACJ,CALS,EAKP,EALO,CAAV;IAMH,CAXD;;IAYApF,0BAA0B,CAAC+E,aAAD,EAAgBxD,WAAhB,EAA6BgD,YAA7B,CAA1B,CACKnB,IADL,CACU,UAAUkC,YAAV,EAAwB;MAC9B,OAAO7D,OAAO,CAACC,OAAR,CAAgBhB,MAAM,GAAG6E,cAAc,CAACD,YAAD,CAAjB,GAAkCE,UAAU,CAACF,YAAD,CAAlE,EAAkFlC,IAAlF,CAAuF,UAAUqC,OAAV,EAAmB;QAC7G,IAAI,CAACA,OAAD,IAAYA,OAAO,CAACC,MAAR,GAAiB,EAAjC,EAAqC;UACjC,MAAM,IAAI3D,KAAJ,CAAU,wDAAV,CAAN;QACH;;QACDmD,MAAM,CAAC,IAAD,EAAOO,OAAP,CAAN;MACH,CALM,CAAP;IAMH,CARD,WASW,UAAUpC,KAAV,EAAiB;MACxB,OAAO6B,MAAM,CAAC7B,KAAK,IAAI,IAAItB,KAAJ,CAAU,oEAAV,CAAV,CAAb;IACH,CAXD;EAYH,CA5BM,CAAP,CAL4E,CAkC5E;;EACA,SAASyD,UAAT,CAAoBF,YAApB,EAAkC;IAC9B,IAAIzE,UAAU,GAAGyE,YAAY,CAACzE,UAA9B;IAAA,IAA0CC,WAAW,GAAGwE,YAAY,CAACxE,WAArE;IACA,IAAI6E,MAAM,GAAG/D,QAAQ,CAACO,aAAT,CAAuB,QAAvB,CAAb;IACA,IAAIyD,GAAG,GAAGD,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAV;;IACA,IAAIhB,IAAJ,EAAU;MACNc,MAAM,CAACG,KAAP,GAAenB,CAAf;MACAgB,MAAM,CAACI,MAAP,GAAgBnB,CAAhB;MACAgB,GAAG,CAACI,SAAJ,CAAcV,YAAd,EAA4Bb,CAA5B,EAA+BC,CAA/B,EAAkCC,CAAlC,EAAqCC,CAArC,EAAwC,CAAxC,EAA2C,CAA3C,EAA8CD,CAA9C,EAAiDC,CAAjD;IACH,CAJD,MAKK,IAAIE,MAAJ,EAAY;MACba,MAAM,CAACG,KAAP,GAAenB,CAAf;MACAgB,MAAM,CAACI,MAAP,GAAgBnB,CAAhB;MACAgB,GAAG,CAACI,SAAJ,CAAcV,YAAd,EAA4B,CAA5B,EAA+B,CAA/B,EAAkCX,CAAlC,EAAqCC,CAArC;IACH,CAJI,MAKA;MACDe,MAAM,CAACI,MAAP,GAAgBjF,WAAhB;MACA6E,MAAM,CAACG,KAAP,GAAejF,UAAf;MACA+E,GAAG,CAACI,SAAJ,CAAcV,YAAd,EAA4B,CAA5B,EAA+B,CAA/B;IACH;;IACD,OAAOK,MAAM,CAACM,SAAP,CAAiB5B,MAAjB,EAAyBC,OAAzB,CAAP;EACH,CAvD2E,CAwD5E;;;EACA,SAASiB,cAAT,CAAwBD,YAAxB,EAAsC;IAClC,OAAO,IAAI7D,OAAJ,CAAY,UAAUC,OAAV,EAAmB;MAClC,IAAIb,UAAU,GAAGyE,YAAY,CAACzE,UAA9B;MAAA,IAA0CC,WAAW,GAAGwE,YAAY,CAACxE,WAArE;MACA,IAAI6E,MAAM,GAAG/D,QAAQ,CAACO,aAAT,CAAuB,QAAvB,CAAb;MACA,IAAIyD,GAAG,GAAGD,MAAM,CAACE,UAAP,CAAkB,IAAlB,CAAV;;MACA,IAAIhB,IAAI,IAAIC,MAAZ,EAAoB;QAChBa,MAAM,CAACG,KAAP,GAAenB,CAAf;QACAgB,MAAM,CAACI,MAAP,GAAgBnB,CAAhB;MACH,CAHD,MAIK;QACDe,MAAM,CAACI,MAAP,GAAgBjF,WAAhB;QACA6E,MAAM,CAACG,KAAP,GAAejF,UAAf;MACH;;MACD,SAASqF,cAAT,CAAwBd,KAAxB,EAA+B;QAC3B,IAAIP,IAAJ,EAAU;UACNe,GAAG,CAACI,SAAJ,CAAcZ,KAAd,EAAqBX,CAArB,EAAwBC,CAAxB,EAA2BC,CAA3B,EAA8BC,CAA9B,EAAiC,CAAjC,EAAoC,CAApC,EAAuCD,CAAvC,EAA0CC,CAA1C;QACH,CAFD,MAGK,IAAIE,MAAJ,EAAY;UACbc,GAAG,CAACI,SAAJ,CAAcZ,KAAd,EAAqB,CAArB,EAAwB,CAAxB,EAA2BT,CAA3B,EAA8BC,CAA9B;QACH,CAFI,MAGA;UACDgB,GAAG,CAACI,SAAJ,CAAcZ,KAAd,EAAqB,CAArB,EAAwB,CAAxB,EAA2BvE,UAA3B,EAAuCC,WAAvC;QACH;;QACD,OAAO6E,MAAM,CAACM,SAAP,CAAiB5B,MAAjB,EAAyBC,OAAzB,CAAP;MACH;;MACD,IAAI6B,MAAM,GAAGb,YAAY,CAACc,QAAb,EAAb;MACA,IAAIhB,KAAK,GAAG,IAAIiB,KAAJ,EAAZ;;MACAjB,KAAK,CAACkB,MAAN,GAAe,YAAY;QAAE,OAAO5E,OAAO,CAACwE,cAAc,CAACd,KAAD,CAAf,CAAd;MAAwC,CAArE;;MACAA,KAAK,CAAClC,YAAN,CAAmB,KAAnB,EAA0B,2BAA2BiD,MAArD;IACH,CA5BM,CAAP;EA6BH;AACJ;;AACDvG,OAAO,CAACE,0BAAR,GAAqCA,0BAArC","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 = exports.calculateResolution = 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 MediaConstants_1 = require(\"../MediaConstants\");\nvar trace = MediaTracer_1.getMediaTracer('DomUtils');\nvar isIE11 = new ts_environment_detect_1.TsEnvironmentDetect().isIE11();\nfunction calculateResolution(_a) {\n var videoWidth = _a.videoWidth, videoHeight = _a.videoHeight;\n var multiplyResolution = videoWidth * videoHeight;\n var videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.NONE;\n if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.HD) {\n videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.HD;\n }\n if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.SD &&\n multiplyResolution < MediaConstants_1.VideoResolutionMultiplication.HD) {\n videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.SD;\n }\n return videoResolutionFormat;\n}\nexports.calculateResolution = calculateResolution;\nfunction renderMediaStreamToVideoEl(container, mediaStream, streamType) {\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 if ([\n MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM,\n MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM,\n MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM\n ].indexOf(streamType) > -1) {\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 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).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, sourceStream, 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, sourceStream)\n .then(function (videoElement) {\n return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement)).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 })\n .catch(function (error) {\n return doneFn(error || new Error('Failed to create a snapshot - cannot 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
+ {"version":3,"file":"MediaDomUtils.js","sourceRoot":"","sources":["../../src/MediaUtils/MediaDomUtils.ts"],"names":[],"mappings":";;;;;;AAAA,mEAA6C;AAI7C,mGAA8F;AAC9F,0FAAsF;AAEtF,6CAA6C;AAC7C,oDAAyG;AAEzG,IAAM,KAAK,GAAG,IAAA,4BAAc,EAAC,UAAU,CAAC,CAAC;AAEzC,IAAM,MAAM,GAAG,IAAI,2CAAmB,EAAE,CAAC,MAAM,EAAE,CAAC;AAElD,SAAgB,mBAAmB,CAAC,EAA0C;QAAzC,UAAU,gBAAA,EAAE,WAAW,iBAAA;IACxD,IAAM,kBAAkB,GAAG,UAAU,GAAG,WAAW,CAAC;IACpD,IAAI,qBAAqB,GAAG,sCAAqB,CAAC,IAAI,CAAC;IAEvD,IAAI,kBAAkB,IAAI,8CAA6B,CAAC,EAAE,EAAE;QACxD,qBAAqB,GAAG,sCAAqB,CAAC,EAAE,CAAC;KACpD;IAED,IACI,kBAAkB,IAAI,8CAA6B,CAAC,EAAE;QACtD,kBAAkB,GAAG,8CAA6B,CAAC,EAAE,EACvD;QACE,qBAAqB,GAAG,sCAAqB,CAAC,EAAE,CAAC;KACpD;IAED,OAAO,qBAAqB,CAAC;AACjC,CAAC;AAhBD,kDAgBC;AAED,SAAgB,0BAA0B,CACtC,SAAyB,EACzB,WAAwB,EACxB,UAA4B;IAE5B,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACpC,MAAM,CAAC,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC;YAE5E,OAAO;SACV;QAED,IAAM,SAAS,GAAG,UAAC,OAAyB;YACxC,KAAK,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAC,OAAO,SAAA,EAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAQ,CAAC;QAEvD,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QACrB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAE3B,IAAI,MAAM,IAAK,MAAc,CAAC,aAAa,EAAE;YACzC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;SAC3D;QAED,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;QAGhC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC9B,IACI;gBACI,iCAAgB,CAAC,iBAAiB;gBAClC,iCAAgB,CAAC,kBAAkB;gBACnC,iCAAgB,CAAC,qBAAqB;aACzC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAC5B;gBACE,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,EAAE,CAAC;aAClB;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE;YAET,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SACrC;QAED,IAAI;YACA,IAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAE/B,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;gBACzB,OAAO,CAAC,IAAI,CAAC;oBACT,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;oBACzC,IAAI,CAAC,MAAM,EAAE;wBACT,SAAS,CAAC,OAAO,CAAC,CAAC;qBACtB;gBACL,CAAC,CAAC,CAAC;aACN;iBAAM,IAAI,CAAC,MAAM,EAAE;gBAChB,SAAS,CAAC,OAAO,CAAC,CAAC;aACtB;YAED,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;gBAC1B,OAAO,CAAC,KAAK,CAAC,UAAC,KAAU;oBACrB,KAAK,CAAC,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;oBAC1E,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACN;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,KAAK,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;YAEzE,OAAO;SACV;QAED,IAAI,MAAM,EAAE;YACR,IAAM,cAAc,GAAG,cAAe,OAAA,OAAO,CAAC,aAAa,CAAC,OAAO,KAAK,QAAQ,EAA1C,CAA0C,CAAC;YAEjF,IAAM,qBAAqB,GAAG,EAAC,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAC,CAAC;YAEnE,IAAA,sCAAiB,EAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC;gBAE1D,IAAM,cAAc,GAAG,cAAe,OAAA,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,EAAnD,CAAmD,CAAC;gBAC1F,IAAM,oBAAoB,GAAG,EAAC,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC;gBAEpE,IAAA,sCAAiB,EAAC,cAAc,EAAE,oBAAoB,CAAC;qBAClD,IAAI,CAAC,cAAM,OAAA,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EAAhC,CAAgC,CAAC;qBAC5C,KAAK,CAAC,cAAM,OAAA,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,EAA5D,CAA4D,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;SACN;aAAM;YACH,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAElC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AA9FD,gEA8FC;AAED,SAAgB,yBAAyB,CAAC,OAAyB;IAC/D,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;QACvB,IAAI,MAAM,IAAK,MAAc,CAAC,aAAa,EAAE;YACxC,MAAc,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;gBACjE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;aACpD;iBAAM;gBACH,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;aACxE;SACJ;aAAM;YACH,OAAO,CAAC,MAAM,EAAE,CAAC;SACpB;QAED,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAhBD,8DAgBC;AAED,IAAM,eAAe,GAAoB;IACrC,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,IAAI;CAChB,CAAC;AAEF,SAAgB,0BAA0B,CACtC,WAAwB,EACxB,YAA8B,EAC9B,eAAkD;IAAlD,gCAAA,EAAA,iCAAkD;IAE3C,IAAA,MAAM,GAAyB,eAAe,OAAxC,EAAE,OAAO,GAAgB,eAAe,QAA/B,EAAE,CAAC,GAAa,eAAe,EAA5B,EAAE,CAAC,GAAU,eAAe,EAAzB,EAAE,CAAC,GAAO,eAAe,EAAtB,EAAE,CAAC,GAAI,eAAe,EAAnB,CAAoB;IACtD,IAAM,IAAI,GAAG,CAAC,IAAA,qBAAW,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,CAAC,CAAC,CAAC;IACtF,IAAM,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,IAAA,qBAAW,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QAC/B,IAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEpD,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,mCAAmC,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAEzC,IAAM,MAAM,GAAG,UAAC,GAAQ,EAAE,KAAW;YACjC,IAAI,GAAG,EAAE;gBACL,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEZ,OAAO;aACV;YAED,UAAU,CAAC;gBACP,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG,EAAE;oBACN,OAAO,CAAC,KAAK,CAAC,CAAC;iBAClB;YACL,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC,CAAC;QAEF,0BAA0B,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC;aAC/D,IAAI,CAAC,UAAC,YAAY;YACf,OAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAClF,UAAC,OAAY;gBACT,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE;oBACjC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;iBAC7E;gBAED,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1B,CAAC,CACJ;QARD,CAQC,CACJ;aACA,KAAK,CAAC,UAAC,KAAK;YACT,OAAA,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QAAhG,CAAgG,CACnG,CAAC;IACV,CAAC,CAAC,CAAC;IAGH,SAAS,UAAU,CAAC,YAA8B;QACvC,IAAA,UAAU,GAAiB,YAAY,WAA7B,EAAE,WAAW,GAAI,YAAY,YAAhB,CAAiB;QAC/C,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;QAErC,IAAI,IAAI,EAAE;YACN,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YACjB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAElB,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACvD;aAAM,IAAI,MAAM,EAAE;YACf,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YACjB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAElB,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3C;aAAM;YACH,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;YAE1B,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACrC;QAED,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAGD,SAAS,cAAc,CAAC,YAAiB;QACrC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;YAChB,IAAA,UAAU,GAAiB,YAAY,WAA7B,EAAE,WAAW,GAAI,YAAY,YAAhB,CAAiB;YAC/C,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;YAErC,IAAI,IAAI,IAAI,MAAM,EAAE;gBAChB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;gBACjB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;aACrB;iBAAM;gBACH,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;gBAC5B,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;aAC7B;YAED,SAAS,cAAc,CAAC,KAAU;gBAC9B,IAAI,IAAI,EAAE;oBACN,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChD;qBAAM,IAAI,MAAM,EAAE;oBACf,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBACpC;qBAAM;oBACH,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;iBACvD;gBAED,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YAED,IAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YAE1B,KAAK,CAAC,MAAM,GAAG,cAAM,OAAA,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAA9B,CAA8B,CAAC;YACpD,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AA3GD,gEA2GC"}
@@ -1,3 +1,4 @@
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,"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
+ {"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,17 +1,10 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;
7
-
8
4
  var Tracer_1 = require("@techsee/techsee-common/lib/core/Tracer");
9
-
10
5
  exports.TECHSEE_MEDIA_TRACER = 'MediaTracer';
11
-
12
6
  function getMediaTracer(postfixName) {
13
- return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);
7
+ return (0, Tracer_1.getTracer)(exports.TECHSEE_MEDIA_TRACER, postfixName);
14
8
  }
15
-
16
9
  exports.getMediaTracer = getMediaTracer;
17
- //# sourceMappingURL=MediaTracer.js.map
10
+ //# sourceMappingURL=MediaTracer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["MediaUtils/MediaTracer.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","TECHSEE_MEDIA_TRACER","Tracer_1","require","postfixName","getTracer"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;EAAEC,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,cAAR,GAAyBF,OAAO,CAACG,oBAAR,GAA+B,KAAK,CAA7D;;AACA,IAAIC,QAAQ,GAAGC,OAAO,CAAC,yCAAD,CAAtB;;AACAL,OAAO,CAACG,oBAAR,GAA+B,aAA/B;;AACA,SAASD,cAAT,CAAwBI,WAAxB,EAAqC;EACjC,OAAOF,QAAQ,CAACG,SAAT,CAAmBP,OAAO,CAACG,oBAA3B,EAAiDG,WAAjD,CAAP;AACH;;AACDN,OAAO,CAACE,cAAR,GAAyBA,cAAzB","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"]}
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 +1,2 @@
1
1
  export { getMediaTracer } from './MediaTracer';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MediaUtils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC","file":"index.d.ts","sourcesContent":["export {getMediaTracer} from './MediaTracer';\n"]}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MediaUtils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC"}
@@ -1,16 +1,6 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.getMediaTracer = void 0;
7
-
8
4
  var MediaTracer_1 = require("./MediaTracer");
9
-
10
- Object.defineProperty(exports, "getMediaTracer", {
11
- enumerable: true,
12
- get: function get() {
13
- return MediaTracer_1.getMediaTracer;
14
- }
15
- });
16
- //# sourceMappingURL=index.js.map
5
+ Object.defineProperty(exports, "getMediaTracer", { enumerable: true, get: function () { return MediaTracer_1.getMediaTracer; } });
6
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["MediaUtils/index.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","MediaTracer_1","require","enumerable","get"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;EAAEC,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,cAAR,GAAyB,KAAK,CAA9B;;AACA,IAAIC,aAAa,GAAGC,OAAO,CAAC,eAAD,CAA3B;;AACAN,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,gBAA/B,EAAiD;EAAEK,UAAU,EAAE,IAAd;EAAoBC,GAAG,EAAE,eAAY;IAAE,OAAOH,aAAa,CAACD,cAArB;EAAsC;AAA7E,CAAjD","file":"index.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMediaTracer = void 0;\nvar MediaTracer_1 = require(\"./MediaTracer\");\nObject.defineProperty(exports, \"getMediaTracer\", { enumerable: true, get: function () { return MediaTracer_1.getMediaTracer; } });\n\n//# sourceMappingURL=index.js.map\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/MediaUtils/index.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAArC,6GAAA,cAAc,OAAA"}
@@ -16,3 +16,4 @@ export declare class DetectWebRtcService {
16
16
  private init;
17
17
  getWebRtcInfo: () => ClientWebRtcInfo;
18
18
  }
19
+ //# sourceMappingURL=DetectWebRtcService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MultiParty/DetectWebRtcService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uDAAuD,CAAC;AAEvF,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,eAAO,MAAM,mBAAmB;;;;;;CAM/B,CAAC;AAEF,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAsB;IAC9C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAoC;IAE9D,OAAO,CAAC,YAAY,CAAyC;IAE7D,OAAO;IAEP,OAAc,GAAG,QAAa,QAAQ,mBAAmB,CAAC,CAWxD;IAEF,OAAO,CAAC,IAAI,CAyBL;IAEA,aAAa,QAAO,gBAAgB,CAAsB;CACpE","file":"DetectWebRtcService.d.ts","sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport detectRTC from '@techsee/techsee-common/lib/detectrtc.js';\nimport {ClientWebRtcInfo} from '@techsee/techsee-common/lib/data-contracts/ClientInfo';\n\nexport const DETECT_RTC_ADVISED_TIMEOUT = 20000;\n\nexport const defaultWebRtcResult = {\n isWebRTCSupported: false,\n isWebsiteHasWebcamPermissions: false,\n isWebsiteHasMicrophonePermissions: false,\n isGetUserMediaSupported: false,\n isApplyConstraintsSupported: false\n};\n\nexport class DetectWebRtcService {\n // eslint-disable-next-line no-use-before-define\n private static instance?: DetectWebRtcService;\n private static initPromise: Promise<void> = Promise.resolve();\n\n private cachedResult: ClientWebRtcInfo = defaultWebRtcResult;\n\n private constructor() {}\n\n public static get = async (): Promise<DetectWebRtcService> => {\n await DetectWebRtcService.initPromise;\n\n if (!DetectWebRtcService.instance) {\n DetectWebRtcService.instance = new DetectWebRtcService();\n DetectWebRtcService.initPromise = DetectWebRtcService.instance.init();\n\n await DetectWebRtcService.initPromise;\n }\n\n return DetectWebRtcService.instance;\n };\n\n private init = async (): Promise<void> =>\n new Promise((resolve, reject) => {\n let timeoutPtr: NodeJS.Timeout | null = setTimeout(() => {\n timeoutPtr = null;\n this.cachedResult = defaultWebRtcResult;\n reject();\n }, DETECT_RTC_ADVISED_TIMEOUT);\n\n detectRTC.load(() => {\n if (timeoutPtr === null) {\n return;\n }\n\n clearTimeout(timeoutPtr);\n\n this.cachedResult = {\n isWebRTCSupported: detectRTC.isWebRTCSupported,\n isWebsiteHasWebcamPermissions: detectRTC.isWebsiteHasWebcamPermissions,\n isWebsiteHasMicrophonePermissions: detectRTC.isWebsiteHasMicrophonePermissions,\n isGetUserMediaSupported: detectRTC.isGetUserMediaSupported,\n isApplyConstraintsSupported: detectRTC.isApplyConstraintsSupported\n };\n\n resolve();\n });\n });\n\n public getWebRtcInfo = (): ClientWebRtcInfo => this.cachedResult;\n}\n"]}
1
+ {"version":3,"file":"DetectWebRtcService.d.ts","sourceRoot":"","sources":["../../src/MultiParty/DetectWebRtcService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uDAAuD,CAAC;AAEvF,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,eAAO,MAAM,mBAAmB;;;;;;CAM/B,CAAC;AAEF,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAsB;IAC9C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAoC;IAE9D,OAAO,CAAC,YAAY,CAAyC;IAE7D,OAAO;IAEP,OAAc,GAAG,QAAa,QAAQ,mBAAmB,CAAC,CAWxD;IAEF,OAAO,CAAC,IAAI,CAyBL;IAEA,aAAa,QAAO,gBAAgB,CAAsB;CACpE"}