@webex/plugin-meetings 3.0.0-beta.26 → 3.0.0-beta.261

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 (361) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +114 -14
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +841 -19
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/request.js +78 -0
  17. package/dist/breakouts/request.js.map +1 -0
  18. package/dist/breakouts/utils.js +67 -0
  19. package/dist/breakouts/utils.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +28 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/queue.js +24 -9
  25. package/dist/common/queue.js.map +1 -1
  26. package/dist/config.js +5 -10
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +196 -28
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/enums.js +14 -2
  31. package/dist/controls-options-manager/enums.js.map +1 -1
  32. package/dist/controls-options-manager/index.js +109 -15
  33. package/dist/controls-options-manager/index.js.map +1 -1
  34. package/dist/controls-options-manager/types.js +7 -0
  35. package/dist/controls-options-manager/types.js.map +1 -0
  36. package/dist/controls-options-manager/util.js +309 -18
  37. package/dist/controls-options-manager/util.js.map +1 -1
  38. package/dist/index.js +112 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/interpretation/collection.js +23 -0
  41. package/dist/interpretation/collection.js.map +1 -0
  42. package/dist/interpretation/index.js +366 -0
  43. package/dist/interpretation/index.js.map +1 -0
  44. package/dist/interpretation/siLanguage.js +25 -0
  45. package/dist/interpretation/siLanguage.js.map +1 -0
  46. package/dist/locus-info/controlsUtils.js +91 -2
  47. package/dist/locus-info/controlsUtils.js.map +1 -1
  48. package/dist/locus-info/index.js +381 -62
  49. package/dist/locus-info/index.js.map +1 -1
  50. package/dist/locus-info/infoUtils.js +7 -1
  51. package/dist/locus-info/infoUtils.js.map +1 -1
  52. package/dist/locus-info/mediaSharesUtils.js +43 -1
  53. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  54. package/dist/locus-info/parser.js +224 -63
  55. package/dist/locus-info/parser.js.map +1 -1
  56. package/dist/locus-info/selfUtils.js +89 -14
  57. package/dist/locus-info/selfUtils.js.map +1 -1
  58. package/dist/media/index.js +58 -116
  59. package/dist/media/index.js.map +1 -1
  60. package/dist/media/properties.js +60 -121
  61. package/dist/media/properties.js.map +1 -1
  62. package/dist/meeting/in-meeting-actions.js +82 -2
  63. package/dist/meeting/in-meeting-actions.js.map +1 -1
  64. package/dist/meeting/index.js +3022 -2795
  65. package/dist/meeting/index.js.map +1 -1
  66. package/dist/meeting/locusMediaRequest.js +292 -0
  67. package/dist/meeting/locusMediaRequest.js.map +1 -0
  68. package/dist/meeting/muteState.js +230 -124
  69. package/dist/meeting/muteState.js.map +1 -1
  70. package/dist/meeting/request.js +256 -196
  71. package/dist/meeting/request.js.map +1 -1
  72. package/dist/meeting/util.js +601 -417
  73. package/dist/meeting/util.js.map +1 -1
  74. package/dist/meeting-info/index.js +70 -7
  75. package/dist/meeting-info/index.js.map +1 -1
  76. package/dist/meeting-info/meeting-info-v2.js +189 -51
  77. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  78. package/dist/meeting-info/util.js +1 -1
  79. package/dist/meeting-info/util.js.map +1 -1
  80. package/dist/meeting-info/utilv2.js +36 -36
  81. package/dist/meeting-info/utilv2.js.map +1 -1
  82. package/dist/meetings/collection.js +22 -0
  83. package/dist/meetings/collection.js.map +1 -1
  84. package/dist/meetings/index.js +372 -90
  85. package/dist/meetings/index.js.map +1 -1
  86. package/dist/meetings/meetings.types.js +7 -0
  87. package/dist/meetings/meetings.types.js.map +1 -0
  88. package/dist/meetings/request.js +2 -0
  89. package/dist/meetings/request.js.map +1 -1
  90. package/dist/meetings/util.js +88 -1
  91. package/dist/meetings/util.js.map +1 -1
  92. package/dist/member/index.js +49 -0
  93. package/dist/member/index.js.map +1 -1
  94. package/dist/member/types.js +25 -0
  95. package/dist/member/types.js.map +1 -0
  96. package/dist/member/util.js +121 -25
  97. package/dist/member/util.js.map +1 -1
  98. package/dist/members/collection.js +10 -0
  99. package/dist/members/collection.js.map +1 -1
  100. package/dist/members/index.js +86 -5
  101. package/dist/members/index.js.map +1 -1
  102. package/dist/members/request.js +106 -38
  103. package/dist/members/request.js.map +1 -1
  104. package/dist/members/types.js +15 -0
  105. package/dist/members/types.js.map +1 -0
  106. package/dist/members/util.js +316 -233
  107. package/dist/members/util.js.map +1 -1
  108. package/dist/metrics/constants.js +10 -5
  109. package/dist/metrics/constants.js.map +1 -1
  110. package/dist/metrics/index.js +1 -468
  111. package/dist/metrics/index.js.map +1 -1
  112. package/dist/multistream/mediaRequestManager.js +238 -49
  113. package/dist/multistream/mediaRequestManager.js.map +1 -1
  114. package/dist/multistream/receiveSlot.js +49 -16
  115. package/dist/multistream/receiveSlot.js.map +1 -1
  116. package/dist/multistream/receiveSlotManager.js +52 -34
  117. package/dist/multistream/receiveSlotManager.js.map +1 -1
  118. package/dist/multistream/remoteMedia.js +44 -18
  119. package/dist/multistream/remoteMedia.js.map +1 -1
  120. package/dist/multistream/remoteMediaGroup.js +60 -3
  121. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  122. package/dist/multistream/remoteMediaManager.js +209 -59
  123. package/dist/multistream/remoteMediaManager.js.map +1 -1
  124. package/dist/multistream/sendSlotManager.js +233 -0
  125. package/dist/multistream/sendSlotManager.js.map +1 -0
  126. package/dist/reachability/index.js +161 -57
  127. package/dist/reachability/index.js.map +1 -1
  128. package/dist/reachability/request.js +17 -8
  129. package/dist/reachability/request.js.map +1 -1
  130. package/dist/reconnection-manager/index.js +199 -154
  131. package/dist/reconnection-manager/index.js.map +1 -1
  132. package/dist/recording-controller/index.js +21 -2
  133. package/dist/recording-controller/index.js.map +1 -1
  134. package/dist/recording-controller/util.js +9 -8
  135. package/dist/recording-controller/util.js.map +1 -1
  136. package/dist/roap/index.js +23 -29
  137. package/dist/roap/index.js.map +1 -1
  138. package/dist/roap/request.js +112 -97
  139. package/dist/roap/request.js.map +1 -1
  140. package/dist/roap/turnDiscovery.js +96 -36
  141. package/dist/roap/turnDiscovery.js.map +1 -1
  142. package/dist/rtcMetrics/constants.js +12 -0
  143. package/dist/rtcMetrics/constants.js.map +1 -0
  144. package/dist/rtcMetrics/index.js +117 -0
  145. package/dist/rtcMetrics/index.js.map +1 -0
  146. package/dist/statsAnalyzer/index.js +51 -34
  147. package/dist/statsAnalyzer/index.js.map +1 -1
  148. package/dist/statsAnalyzer/mqaUtil.js +6 -6
  149. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  150. package/dist/types/annotation/annotation.types.d.ts +42 -0
  151. package/dist/types/annotation/constants.d.ts +31 -0
  152. package/dist/types/annotation/index.d.ts +117 -0
  153. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  154. package/dist/types/breakouts/events.d.ts +8 -0
  155. package/dist/types/breakouts/request.d.ts +22 -0
  156. package/dist/types/breakouts/utils.d.ts +15 -0
  157. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  158. package/dist/types/common/queue.d.ts +9 -7
  159. package/dist/types/config.d.ts +1 -6
  160. package/dist/types/constants.d.ts +155 -21
  161. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  162. package/dist/types/controls-options-manager/index.d.ts +17 -1
  163. package/dist/types/controls-options-manager/types.d.ts +43 -0
  164. package/dist/types/controls-options-manager/util.d.ts +1 -7
  165. package/dist/types/index.d.ts +6 -4
  166. package/dist/types/interpretation/collection.d.ts +5 -0
  167. package/dist/types/interpretation/index.d.ts +5 -0
  168. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  169. package/dist/types/locus-info/index.d.ts +57 -4
  170. package/dist/types/locus-info/parser.d.ts +65 -6
  171. package/dist/types/media/index.d.ts +2 -0
  172. package/dist/types/media/properties.d.ts +34 -48
  173. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  174. package/dist/types/meeting/index.d.ts +344 -506
  175. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  176. package/dist/types/meeting/muteState.d.ts +99 -23
  177. package/dist/types/meeting/request.d.ts +72 -43
  178. package/dist/types/meeting/util.d.ts +101 -1
  179. package/dist/types/meeting-info/index.d.ts +13 -1
  180. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  181. package/dist/types/meetings/collection.d.ts +8 -0
  182. package/dist/types/meetings/index.d.ts +86 -12
  183. package/dist/types/meetings/meetings.types.d.ts +4 -0
  184. package/dist/types/member/index.d.ts +13 -0
  185. package/dist/types/member/types.d.ts +32 -0
  186. package/dist/types/members/collection.d.ts +5 -0
  187. package/dist/types/members/index.d.ts +35 -2
  188. package/dist/types/members/request.d.ts +73 -9
  189. package/dist/types/members/types.d.ts +24 -0
  190. package/dist/types/members/util.d.ts +209 -1
  191. package/dist/types/metrics/constants.d.ts +9 -4
  192. package/dist/types/metrics/index.d.ts +4 -119
  193. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  194. package/dist/types/multistream/receiveSlot.d.ts +16 -12
  195. package/dist/types/multistream/receiveSlotManager.d.ts +19 -4
  196. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  197. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  198. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  199. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  200. package/dist/types/reachability/index.d.ts +44 -7
  201. package/dist/types/reachability/request.d.ts +7 -3
  202. package/dist/types/reconnection-manager/index.d.ts +9 -0
  203. package/dist/types/recording-controller/index.d.ts +15 -1
  204. package/dist/types/recording-controller/util.d.ts +5 -4
  205. package/dist/types/roap/request.d.ts +15 -11
  206. package/dist/types/roap/turnDiscovery.d.ts +18 -1
  207. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  208. package/dist/types/rtcMetrics/index.d.ts +47 -0
  209. package/dist/types/statsAnalyzer/index.d.ts +6 -1
  210. package/package.json +23 -20
  211. package/src/annotation/annotation.types.ts +50 -0
  212. package/src/annotation/constants.ts +36 -0
  213. package/src/annotation/index.ts +328 -0
  214. package/src/breakouts/README.md +44 -14
  215. package/src/breakouts/breakout.ts +87 -9
  216. package/src/breakouts/edit-lock-error.ts +25 -0
  217. package/src/breakouts/events.ts +56 -0
  218. package/src/breakouts/index.ts +710 -10
  219. package/src/breakouts/request.ts +55 -0
  220. package/src/breakouts/utils.ts +57 -0
  221. package/src/common/errors/webex-errors.ts +27 -2
  222. package/src/common/logs/logger-proxy.ts +1 -1
  223. package/src/common/queue.ts +22 -8
  224. package/src/config.ts +4 -9
  225. package/src/constants.ts +178 -18
  226. package/src/controls-options-manager/enums.ts +12 -0
  227. package/src/controls-options-manager/index.ts +116 -21
  228. package/src/controls-options-manager/types.ts +59 -0
  229. package/src/controls-options-manager/util.ts +294 -14
  230. package/src/index.ts +40 -0
  231. package/src/interpretation/README.md +60 -0
  232. package/src/interpretation/collection.ts +19 -0
  233. package/src/interpretation/index.ts +332 -0
  234. package/src/interpretation/siLanguage.ts +18 -0
  235. package/src/locus-info/controlsUtils.ts +108 -0
  236. package/src/locus-info/index.ts +412 -59
  237. package/src/locus-info/infoUtils.ts +10 -2
  238. package/src/locus-info/mediaSharesUtils.ts +48 -0
  239. package/src/locus-info/parser.ts +231 -39
  240. package/src/locus-info/selfUtils.ts +81 -5
  241. package/src/media/index.ts +100 -122
  242. package/src/media/properties.ts +70 -108
  243. package/src/meeting/in-meeting-actions.ts +163 -3
  244. package/src/meeting/index.ts +2471 -2306
  245. package/src/meeting/locusMediaRequest.ts +313 -0
  246. package/src/meeting/muteState.ts +229 -131
  247. package/src/meeting/request.ts +172 -121
  248. package/src/meeting/util.ts +588 -394
  249. package/src/meeting-info/index.ts +79 -8
  250. package/src/meeting-info/meeting-info-v2.ts +168 -14
  251. package/src/meeting-info/util.ts +1 -1
  252. package/src/meeting-info/utilv2.ts +23 -23
  253. package/src/meetings/collection.ts +20 -0
  254. package/src/meetings/index.ts +414 -108
  255. package/src/meetings/meetings.types.ts +12 -0
  256. package/src/meetings/request.ts +2 -0
  257. package/src/meetings/util.ts +103 -4
  258. package/src/member/index.ts +49 -0
  259. package/src/member/types.ts +38 -0
  260. package/src/member/util.ts +127 -25
  261. package/src/members/collection.ts +8 -0
  262. package/src/members/index.ts +107 -6
  263. package/src/members/request.ts +97 -17
  264. package/src/members/types.ts +28 -0
  265. package/src/members/util.ts +319 -240
  266. package/src/metrics/constants.ts +9 -4
  267. package/src/metrics/index.ts +1 -490
  268. package/src/multistream/mediaRequestManager.ts +289 -79
  269. package/src/multistream/receiveSlot.ts +55 -18
  270. package/src/multistream/receiveSlotManager.ts +46 -24
  271. package/src/multistream/remoteMedia.ts +27 -2
  272. package/src/multistream/remoteMediaGroup.ts +59 -0
  273. package/src/multistream/remoteMediaManager.ts +148 -30
  274. package/src/multistream/sendSlotManager.ts +170 -0
  275. package/src/reachability/index.ts +165 -37
  276. package/src/reachability/request.ts +17 -8
  277. package/src/reconnection-manager/index.ts +81 -54
  278. package/src/recording-controller/index.ts +20 -3
  279. package/src/recording-controller/util.ts +26 -9
  280. package/src/roap/index.ts +23 -30
  281. package/src/roap/request.ts +100 -104
  282. package/src/roap/turnDiscovery.ts +51 -25
  283. package/src/rtcMetrics/constants.ts +3 -0
  284. package/src/rtcMetrics/index.ts +100 -0
  285. package/src/statsAnalyzer/index.ts +73 -35
  286. package/src/statsAnalyzer/mqaUtil.ts +8 -10
  287. package/test/integration/spec/converged-space-meetings.js +233 -0
  288. package/test/integration/spec/journey.js +320 -261
  289. package/test/integration/spec/space-meeting.js +76 -3
  290. package/test/unit/spec/annotation/index.ts +418 -0
  291. package/test/unit/spec/breakouts/breakout.ts +142 -24
  292. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  293. package/test/unit/spec/breakouts/events.ts +89 -0
  294. package/test/unit/spec/breakouts/index.ts +1545 -48
  295. package/test/unit/spec/breakouts/request.ts +104 -0
  296. package/test/unit/spec/breakouts/utils.js +72 -0
  297. package/test/unit/spec/common/queue.js +31 -2
  298. package/test/unit/spec/controls-options-manager/index.js +163 -0
  299. package/test/unit/spec/controls-options-manager/util.js +576 -60
  300. package/test/unit/spec/fixture/locus.js +1 -0
  301. package/test/unit/spec/interpretation/collection.ts +15 -0
  302. package/test/unit/spec/interpretation/index.ts +589 -0
  303. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  304. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  305. package/test/unit/spec/locus-info/index.js +1283 -33
  306. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  307. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  308. package/test/unit/spec/locus-info/parser.js +62 -22
  309. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  310. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  311. package/test/unit/spec/media/index.ts +104 -37
  312. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  313. package/test/unit/spec/meeting/index.js +4095 -1913
  314. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  315. package/test/unit/spec/meeting/muteState.js +408 -208
  316. package/test/unit/spec/meeting/request.js +440 -45
  317. package/test/unit/spec/meeting/utils.js +679 -64
  318. package/test/unit/spec/meeting-info/index.js +293 -0
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +517 -5
  320. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  321. package/test/unit/spec/meetings/collection.js +14 -0
  322. package/test/unit/spec/meetings/index.js +941 -151
  323. package/test/unit/spec/meetings/utils.js +206 -2
  324. package/test/unit/spec/member/index.js +58 -4
  325. package/test/unit/spec/member/util.js +479 -35
  326. package/test/unit/spec/members/index.js +319 -1
  327. package/test/unit/spec/members/request.js +206 -27
  328. package/test/unit/spec/members/utils.js +184 -0
  329. package/test/unit/spec/metrics/index.js +1 -50
  330. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  331. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  332. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  333. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  334. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  335. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  336. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  337. package/test/unit/spec/reachability/index.ts +343 -9
  338. package/test/unit/spec/reachability/request.js +68 -0
  339. package/test/unit/spec/reconnection-manager/index.js +84 -9
  340. package/test/unit/spec/recording-controller/index.js +294 -218
  341. package/test/unit/spec/recording-controller/util.js +223 -96
  342. package/test/unit/spec/roap/index.ts +31 -51
  343. package/test/unit/spec/roap/request.ts +203 -85
  344. package/test/unit/spec/roap/turnDiscovery.ts +48 -13
  345. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  346. package/test/unit/spec/stats-analyzer/index.js +29 -2
  347. package/test/utils/constants.js +9 -0
  348. package/test/utils/integrationTestUtils.js +46 -0
  349. package/test/utils/testUtils.js +0 -45
  350. package/test/utils/webex-config.js +4 -0
  351. package/test/utils/webex-test-users.js +6 -3
  352. package/dist/meeting/effectsState.js +0 -262
  353. package/dist/meeting/effectsState.js.map +0 -1
  354. package/dist/metrics/config.js +0 -299
  355. package/dist/metrics/config.js.map +0 -1
  356. package/dist/types/meeting/effectsState.d.ts +0 -42
  357. package/dist/types/metrics/config.d.ts +0 -178
  358. package/src/index.js +0 -16
  359. package/src/meeting/effectsState.ts +0 -211
  360. package/src/metrics/config.ts +0 -495
  361. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -1 +1 @@
1
- {"version":3,"names":["BrowserDetection","isBrowser","Media","setLocalTrack","enabled","track","generateLocalMedias","mediaId","audioMuted","videoMuted","localSdp","getLocalMedia","options","config","sendAudio","sendVideo","sendShare","sharePreferences","isSharing","getMedia","getDisplayMedia","resolve","undefined","createMediaConnection","isMultistream","debugId","mediaProperties","remoteQualityLevel","enableRtx","enableExtmap","turnServerInfo","iceServers","push","urls","url","username","credential","password","MultistreamRoapMediaConnection","Error","mediaDirection","audioTrack","videoTrack","shareTrack","RoapMediaConnection","skipInactiveTransceivers","requireH264","sdpMunging","convertPort9to0","addContentSlides","bandwidthLimits","audio","StaticConfig","meetings","bandwidth","video","startBitrate","periodicKeyframes","disableExtmap","disableRtx","send","screenShareVideo","receive","receiveAudio","receiveVideo","receiveShare","customResolution","screenResolution","customShareFrameRate","screenFrameRate","hasSharePreferences","hasCustomConstraints","shareConstraints","hasHighFrameRate","highFrameRate","Config","resolution","videoShareFrameRate","aspectRatio","cursor","MEDIA_TRACK_CONSTRAINT","CURSOR","AWLAYS","frameRate","height","idealHeight","width","idealWidth","mediaConfig","navigator","mediaDevices","then","stream","getVideoTracks","length","applyConstraints","getDisplayMediaParams","defaultWidth","ideal","max","maxWidth","defaultHeight","maxHeight","deviceId","facingMode","fake","process","env","NODE_ENV","getUserMedia","catch","err","logPath","LoggerProxy","logger","error","constraint","getSupportedDevice","enumerateDevices","devices","supported","filter","device","kind","AUDIO_INPUT","VIDEO_INPUT","getDevices","reject","MediaError","toggleStream","stopTracks","stop","e","readyState","mediaSetting","audioVideo","localStream","shareStream"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n/* globals navigator */\n\nimport {RoapMediaConnection, MultistreamRoapMediaConnection} from '@webex/internal-media-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {AUDIO_INPUT, VIDEO_INPUT, MEDIA_TRACK_CONSTRAINT} from '../constants';\nimport Config from '../config';\nimport StaticConfig from '../common/config';\nimport MediaError from '../common/errors/media';\nimport BrowserDetection from '../common/browser-detection';\n\nconst {isBrowser} = BrowserDetection();\n\n/**\n * MediaDirection\n * @typedef {Object} MediaDirection\n * @property {boolean} sendAudio\n * @property {boolean} receiveAudio\n * @property {boolean} sendVideo\n * @property {boolean} receiveVideo\n * @property {boolean} sendShare\n * @property {boolean} receiveShare\n */\n\n/**\n * SendOptions\n * @typedef {Object} SendOptions\n * @property sendAudio\n * @property sendVideo\n * @property sendShare\n * @property isSharing\n * @property {Object} sharePreferences\n */\n/**\n *\n * @public\n * @export\n * Mimic browser APIs as \"the ultimate browser\".\n * Handles the quirks of each browser.\n * Extends and enhances adapter.js, i.e., the \"media\" file from the web client.\n */\nconst Media: any = {};\n\n/**\n * @param {boolean} enabled\n * @param {MediaStreamTrack} track\n * @returns {Boolean}\n * @public\n */\nMedia.setLocalTrack = (enabled: boolean, track: MediaStreamTrack) => {\n if (track) {\n track.enabled = enabled;\n\n return true;\n }\n\n return false;\n};\n\n/**\n * format the media array for send\n * @param {String} mediaId\n * @param {Boolean} audioMuted\n * @param {Boolean} videoMuted\n * @returns {Array} medias\n */\nMedia.generateLocalMedias = (mediaId: string, audioMuted: boolean, videoMuted: boolean) => {\n if (mediaId) {\n return [\n {\n localSdp: JSON.stringify({\n audioMuted,\n videoMuted,\n }),\n mediaId,\n },\n ];\n }\n\n return [];\n};\n\n/**\n * make a browser call to get the media\n * @param {SendOptions} options\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Promise}\n */\nMedia.getLocalMedia = (options: any, config: object) => {\n const {sendAudio, sendVideo, sendShare, sharePreferences, isSharing} = options;\n\n if (sendAudio || sendVideo) {\n return Media.getMedia(sendAudio, sendVideo, config);\n }\n\n if (sendShare && !isSharing) {\n return Media.getDisplayMedia(\n {\n sendAudio: false,\n sendShare: true,\n sharePreferences,\n },\n config\n );\n }\n\n return Promise.resolve(undefined);\n};\n\n/**\n * creates a webrtc media connection with provided tracks and mediaDirection configuration\n *\n * @param {boolean} isMultistream\n * @param {string} debugId string useful for debugging (will appear in media connection logs)\n * @param {Object} options\n * @param {Object} [options.mediaProperties] only applicable to non-multistream connections, contains mediaDirection and local tracks:\n * audioTrack, videoTrack and shareTrack\n * @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections\n * @param {boolean} [options.enableRtx] applicable only to non-multistream connections\n * @param {boolean} [options.enableExtmap] applicable only to non-multistream connections\n * @param {Object} [options.turnServerInfo]\n * @returns {RoapMediaConnection}\n */\nMedia.createMediaConnection = (\n isMultistream: boolean,\n debugId: string,\n options: {\n mediaProperties?: {\n mediaDirection?: {\n receiveAudio: boolean;\n receiveVideo: boolean;\n receiveShare: boolean;\n };\n audioTrack?: MediaStreamTrack;\n videoTrack?: MediaStreamTrack;\n shareTrack?: MediaStreamTrack;\n };\n remoteQualityLevel?: 'LOW' | 'MEDIUM' | 'HIGH';\n enableRtx?: boolean;\n enableExtmap?: boolean;\n turnServerInfo?: {\n url: string;\n username: string;\n password: string;\n };\n }\n) => {\n const {mediaProperties, remoteQualityLevel, enableRtx, enableExtmap, turnServerInfo} = options;\n\n const iceServers = [];\n\n if (turnServerInfo) {\n iceServers.push({\n urls: turnServerInfo.url,\n username: turnServerInfo.username || '',\n credential: turnServerInfo.password || '',\n });\n }\n\n if (isMultistream) {\n return new MultistreamRoapMediaConnection(\n {\n iceServers,\n },\n debugId\n );\n }\n\n if (!mediaProperties) {\n throw new Error('mediaProperties have to be provided for non-multistream media connections');\n }\n\n const {mediaDirection, audioTrack, videoTrack, shareTrack} = mediaProperties;\n\n return new RoapMediaConnection(\n {\n iceServers,\n skipInactiveTransceivers: false,\n requireH264: true,\n sdpMunging: {\n convertPort9to0: false,\n addContentSlides: true,\n bandwidthLimits: {\n audio: StaticConfig.meetings.bandwidth.audio,\n video: StaticConfig.meetings.bandwidth.video,\n },\n startBitrate: StaticConfig.meetings.bandwidth.startBitrate,\n periodicKeyframes: 20, // it's always been hardcoded in SDK so for now keeping it that way\n disableExtmap: !enableExtmap,\n disableRtx: !enableRtx, // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP\n },\n },\n {\n send: {\n audio: audioTrack,\n video: videoTrack,\n screenShareVideo: shareTrack,\n },\n receive: {\n audio: mediaDirection.receiveAudio,\n video: mediaDirection.receiveVideo,\n screenShareVideo: mediaDirection.receiveShare,\n remoteQualityLevel,\n },\n },\n debugId\n );\n};\n\n/**\n * generates share streams\n * @param {Object} options parameter\n * @param {Boolean} options.sendAudio send audio from the display share\n * @param {Boolean} options.sendShare send video from the display share\n * @param {Object} options.sharePreferences\n * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}\n * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Promise.<MediaStream>}\n */\nMedia.getDisplayMedia = (\n options: {\n sendAudio: boolean;\n sendShare: boolean;\n sharePreferences: {\n shareConstraints: MediaTrackConstraints;\n highFrameRate: any;\n };\n },\n config: any = {}\n) => {\n // SDK screen share resolution settings from Webex.init\n const customResolution = config.screenResolution || {};\n // user defined screen share frame rate\n const customShareFrameRate = config.screenFrameRate || null;\n // user defined share preferences\n const hasSharePreferences = options.sharePreferences;\n const hasCustomConstraints = hasSharePreferences && hasSharePreferences.shareConstraints;\n const hasHighFrameRate = hasSharePreferences && hasSharePreferences.highFrameRate;\n const {screenResolution, resolution, videoShareFrameRate, screenFrameRate, aspectRatio} =\n Config.meetings;\n\n let shareConstraints: any = {\n cursor: MEDIA_TRACK_CONSTRAINT.CURSOR.AWLAYS,\n aspectRatio,\n };\n\n if (hasCustomConstraints) {\n shareConstraints = hasSharePreferences.shareConstraints;\n } else if (hasHighFrameRate) {\n shareConstraints = {\n ...shareConstraints,\n frameRate: videoShareFrameRate,\n height: resolution.idealHeight,\n width: resolution.idealWidth,\n ...config.resolution,\n };\n } else {\n shareConstraints = {\n ...shareConstraints,\n frameRate: customShareFrameRate || screenFrameRate,\n height: customResolution.idealHeight || screenResolution.idealHeight,\n width: customResolution.idealWidth || screenResolution.idealWidth,\n ...config.screenResolution,\n };\n }\n\n // chrome and webkit based browsers (edge, safari) automatically adjust everything\n // and we have noticed higher quality with those browser types\n // firefox specifically has some issues with resolution and frame rate decision making\n // so we are making it optional and configurable (with defaults) for firefox\n // to have higher quality, and for developers to control the values\n // eventually we may have to add the same functionality to chrome, OR conversely, get to with firefox\n\n if (isBrowser('firefox')) {\n const mediaConfig: any = {\n audio: options.sendAudio,\n video: options.sendShare,\n };\n\n return navigator.mediaDevices\n .getDisplayMedia({audio: options.sendAudio, video: mediaConfig})\n .then((stream) => {\n if (options.sendShare && stream.getVideoTracks().length > 0) {\n // Firefox has a bug with the spec where changing in the height and width only happens\n // after we get the inital tracks\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1321221\n stream.getVideoTracks()[0].applyConstraints(shareConstraints);\n }\n\n return stream;\n });\n }\n\n const getDisplayMediaParams: any = {video: options.sendShare ? shareConstraints : false};\n\n // safari doesn't support sending screen share audio\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia\n if (options.sendAudio && isBrowser('safari')) {\n getDisplayMediaParams.audio = options.sendAudio;\n }\n\n return navigator.mediaDevices.getDisplayMedia(getDisplayMediaParams);\n};\n\n/**\n * generates audio and video using constraints (often called after getSupportedDevices)\n * @param {Object|Boolean} audio gum constraints\n * @param {Object|Boolean} video gum constraints\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Object} {streams}\n */\nMedia.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {\n const defaultWidth = {ideal: config.resolution.idealWidth, max: config.resolution.maxWidth};\n const defaultHeight = {ideal: config.resolution.idealHeight, max: config.resolution.maxHeight};\n const mediaConfig = {\n audio,\n // TODO: Remove temporary workaround once Firefox fixes low constraint issues\n // eslint-disable-next-line no-nested-ternary\n video: video\n ? isBrowser('firefox') && video.width && video.width.max === 320\n ? {\n deviceId: video.deviceId ? video.deviceId : undefined,\n width: 320,\n height: 180,\n frameRate: video.frameRate ? video.frameRate : undefined,\n facingMode: video.facingMode ? video.facingMode : undefined,\n }\n : {\n deviceId: video.deviceId ? video.deviceId : undefined,\n width: video.width ? video.width : defaultWidth,\n height: video.height ? video.height : defaultHeight,\n frameRate: video.frameRate ? video.frameRate : undefined,\n facingMode: video.facingMode ? video.facingMode : undefined,\n }\n : false,\n fake: process.env.NODE_ENV === 'test', // Special case to get fake media for Firefox browser for testing\n };\n\n return navigator.mediaDevices.getUserMedia(mediaConfig).catch((err) => {\n const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';\n\n LoggerProxy.logger.error(`${logPath} failed - ${err} (${err.constraint})`);\n throw err;\n });\n};\n\n/**\n * Checks if the machine has at least one audio or video device (Dont use this for screen share)\n * @param {object} [options]\n * {\n * sendAudio: true/false,\n * sendVideo: true/false\n * }\n * @returns {Object} {\n * sendAudio: true/false,\n * sendVideo: true/false\n *}\n */\nMedia.getSupportedDevice = ({sendAudio, sendVideo}: {sendAudio: boolean; sendVideo: boolean}) =>\n Promise.resolve().then(() => {\n if (!navigator.mediaDevices || navigator.mediaDevices.enumerateDevices === undefined) {\n return {\n sendAudio: false,\n sendVideo: false,\n };\n }\n\n return navigator.mediaDevices.enumerateDevices().then((devices) => {\n const supported = {\n audio: devices.filter((device) => device.kind === AUDIO_INPUT).length > 0,\n video: devices.filter((device) => device.kind === VIDEO_INPUT).length > 0,\n };\n\n return {\n sendAudio: supported.audio && sendAudio,\n sendVideo: supported.video && sendVideo,\n };\n });\n });\n\n/**\n * proxy to browser navigator.mediaDevices.enumerateDevices()\n * @returns {Promise}\n */\nMedia.getDevices = () => {\n if (navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n return navigator.mediaDevices.enumerateDevices();\n }\n\n return Promise.reject(new MediaError('enumerateDevices not supported.'));\n};\n\n/**\n *\n * Toggle a specific stream\n * noop as of now, does nothing\n * @returns {null}\n */\nMedia.toggleStream = () => {};\n\n/**\n * Stop input stream\n * @param {MediaTrack} track A media stream\n * @returns {null}\n */\nMedia.stopTracks = (track: any) => {\n if (!track) {\n return Promise.resolve();\n }\n\n return Promise.resolve().then(() => {\n if (track && track.stop) {\n try {\n track.stop();\n } catch (e) {\n LoggerProxy.logger.error(\n `Media:index#stopTracks --> Unable to stop the track with state ${track.readyState}, error: ${e}`\n );\n }\n }\n });\n};\n\n/**\n * generates streams for audio video and share\n * @param {object} mediaSetting parameter\n * @param {Object} mediaSetting.sendAudio sendAudio: {Boolean} sendAudio constraints\n * @param {Object} mediaSetting.sendVideo sendVideo: {Boolean} sendVideo constraints\n * @param {Object} mediaSetting.sendShare sendShare: {Boolean} sendShare constraints\n * @param {Object} mediaSetting.isSharing isSharing: {Boolean} isSharing constraints\n * @param {Object} audioVideo parameter\n * @param {Object} audioVideo.audio {deviceId: {String}}\n * @param {Object} audioVideo.video {deviceId: {String}}\n * @param {Object} sharePreferences parameter\n * @param {Object} sharePreferences.shareConstraints parameter\n * @param {Boolean} sharePreferences.highFrameRate parameter\n * @param {Object} config SDK Config\n * @returns {Array} [localStream, shareStream]\n */\nMedia.getUserMedia = (\n mediaSetting: {\n sendAudio: object;\n sendVideo: object;\n sendShare: object;\n isSharing: object;\n },\n audioVideo: {\n audio: object;\n video: object;\n },\n sharePreferences: {\n shareConstraints: object;\n highFrameRate: boolean;\n },\n config: object\n) =>\n Media.getLocalMedia(\n {\n sendAudio: mediaSetting.sendAudio ? audioVideo.audio || mediaSetting.sendAudio : false,\n sendVideo: mediaSetting.sendVideo ? audioVideo.video || mediaSetting.sendVideo : false,\n },\n config\n ).then((localStream) =>\n Media.getLocalMedia(\n {\n sendShare: mediaSetting.sendShare,\n isSharing: mediaSetting.isSharing,\n sharePreferences,\n },\n config\n ).then((shareStream) => [localStream, shareStream])\n );\n\nexport default Media;\n"],"mappings":"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"}
1
+ {"version":3,"names":["BrowserDetection","isBrowser","Media","getLocalMedia","options","config","sendAudio","sendVideo","sendShare","sharePreferences","isSharing","getMedia","getDisplayMedia","resolve","undefined","getDirection","forceSendRecv","receive","send","createMediaConnection","isMultistream","debugId","webex","meetingId","correlationId","mediaProperties","remoteQualityLevel","enableRtx","enableExtmap","turnServerInfo","bundlePolicy","iceServers","push","urls","url","username","credential","password","rtcMetrics","RtcMetrics","MultistreamRoapMediaConnection","data","addMetrics","closeMetrics","Error","mediaDirection","audioStream","videoStream","shareVideoStream","shareAudioStream","RoapMediaConnection","skipInactiveTransceivers","requireH264","sdpMunging","convertPort9to0","addContentSlides","bandwidthLimits","audio","StaticConfig","meetings","bandwidth","video","startBitrate","periodicKeyframes","disableExtmap","disableRtx","localTracks","outputTrack","screenShareVideo","screenShareAudio","direction","receiveAudio","receiveVideo","receiveShare","customResolution","screenResolution","customShareFrameRate","screenFrameRate","hasSharePreferences","hasCustomConstraints","shareConstraints","hasHighFrameRate","highFrameRate","Config","resolution","videoShareFrameRate","aspectRatio","cursor","MEDIA_TRACK_CONSTRAINT","CURSOR","AWLAYS","frameRate","height","idealHeight","width","idealWidth","mediaConfig","navigator","mediaDevices","then","stream","getVideoTracks","length","applyConstraints","getDisplayMediaParams","defaultWidth","ideal","max","maxWidth","defaultHeight","maxHeight","deviceId","facingMode","fake","process","env","NODE_ENV","getUserMedia","catch","err","logPath","LoggerProxy","logger","error","constraint","toggleStream","stopStream","stop","e","readyState","inputTrack","mediaSetting","audioVideo","localStream","shareStream"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n/* globals navigator */\n\nimport {\n RoapMediaConnection,\n MultistreamRoapMediaConnection,\n type MultistreamConnectionConfig,\n} from '@webex/internal-media-core';\nimport {\n LocalStream,\n LocalCameraStream,\n LocalDisplayStream,\n LocalSystemAudioStream,\n LocalMicrophoneStream,\n} from '@webex/media-helpers';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {MEDIA_TRACK_CONSTRAINT} from '../constants';\nimport Config from '../config';\nimport StaticConfig from '../common/config';\nimport BrowserDetection from '../common/browser-detection';\nimport RtcMetrics from '../rtcMetrics';\n\nconst {isBrowser} = BrowserDetection();\n\nexport type BundlePolicy = MultistreamConnectionConfig['bundlePolicy'];\n\n/**\n * MediaDirection\n * @typedef {Object} MediaDirection\n * @property {boolean} sendAudio\n * @property {boolean} receiveAudio\n * @property {boolean} sendVideo\n * @property {boolean} receiveVideo\n * @property {boolean} sendShare\n * @property {boolean} receiveShare\n */\n\n/**\n * SendOptions\n * @typedef {Object} SendOptions\n * @property sendAudio\n * @property sendVideo\n * @property sendShare\n * @property isSharing\n * @property {Object} sharePreferences\n */\n/**\n *\n * @public\n * @export\n * Mimic browser APIs as \"the ultimate browser\".\n * Handles the quirks of each browser.\n * Extends and enhances adapter.js, i.e., the \"media\" file from the web client.\n */\nconst Media: any = {};\n\n/**\n * make a browser call to get the media\n * @param {SendOptions} options\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Promise}\n */\nMedia.getLocalMedia = (options: any, config: object) => {\n const {sendAudio, sendVideo, sendShare, sharePreferences, isSharing} = options;\n\n if (sendAudio || sendVideo) {\n return Media.getMedia(sendAudio, sendVideo, config);\n }\n\n if (sendShare && !isSharing) {\n return Media.getDisplayMedia(\n {\n sendAudio: false,\n sendShare: true,\n sharePreferences,\n },\n config\n );\n }\n\n return Promise.resolve(undefined);\n};\n\nMedia.getDirection = (forceSendRecv: boolean, receive: boolean, send: boolean) => {\n if (!receive && !send) {\n return 'inactive';\n }\n\n if (forceSendRecv || (receive && send)) {\n return 'sendrecv';\n }\n\n if (receive) {\n return 'recvonly';\n }\n\n return 'sendonly';\n};\n\n/**\n * creates a webrtc media connection with provided tracks and mediaDirection configuration\n *\n * @param {boolean} isMultistream\n * @param {string} debugId string useful for debugging (will appear in media connection logs)\n * @param {object} webex main `webex` object.\n * @param {string} meetingId id for the meeting using this connection\n * @param {string} correlationId id used in requests to correlate to this session\n * @param {Object} options\n * @param {Object} [options.mediaProperties] contains mediaDirection and local tracks:\n * audioTrack, videoTrack, shareVideoTrack, and shareAudioTrack\n * @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections\n * @param {boolean} [options.enableRtx] applicable only to non-multistream connections\n * @param {boolean} [options.enableExtmap] applicable only to non-multistream connections\n * @param {Object} [options.turnServerInfo]\n * @param {BundlePolicy} [options.bundlePolicy]\n * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}\n */\nMedia.createMediaConnection = (\n isMultistream: boolean,\n debugId: string,\n webex: object,\n meetingId: string,\n correlationId: string,\n options: {\n mediaProperties: {\n mediaDirection?: {\n receiveAudio: boolean;\n receiveVideo: boolean;\n receiveShare: boolean;\n sendAudio: boolean;\n sendVideo: boolean;\n sendShare: boolean;\n };\n audioStream?: LocalMicrophoneStream;\n videoStream?: LocalCameraStream;\n shareVideoStream?: LocalDisplayStream;\n shareAudioStream?: LocalSystemAudioStream;\n };\n remoteQualityLevel?: 'LOW' | 'MEDIUM' | 'HIGH';\n enableRtx?: boolean;\n enableExtmap?: boolean;\n turnServerInfo?: {\n url: string;\n username: string;\n password: string;\n };\n bundlePolicy?: BundlePolicy;\n }\n) => {\n const {\n mediaProperties,\n remoteQualityLevel,\n enableRtx,\n enableExtmap,\n turnServerInfo,\n bundlePolicy,\n } = options;\n\n const iceServers = [];\n\n if (turnServerInfo) {\n iceServers.push({\n urls: turnServerInfo.url,\n username: turnServerInfo.username || '',\n credential: turnServerInfo.password || '',\n });\n }\n\n if (isMultistream) {\n const config: MultistreamConnectionConfig = {\n iceServers,\n };\n\n if (bundlePolicy) {\n config.bundlePolicy = bundlePolicy;\n }\n\n const rtcMetrics = new RtcMetrics(webex, meetingId, correlationId);\n\n return new MultistreamRoapMediaConnection(\n config,\n meetingId,\n (data) => rtcMetrics.addMetrics(data),\n () => rtcMetrics.closeMetrics()\n );\n }\n\n if (!mediaProperties) {\n throw new Error('mediaProperties have to be provided for non-multistream media connections');\n }\n\n const {mediaDirection, audioStream, videoStream, shareVideoStream, shareAudioStream} =\n mediaProperties;\n\n return new RoapMediaConnection(\n {\n iceServers,\n skipInactiveTransceivers: false,\n requireH264: true,\n sdpMunging: {\n convertPort9to0: false,\n addContentSlides: true,\n bandwidthLimits: {\n audio: StaticConfig.meetings.bandwidth.audio,\n video: StaticConfig.meetings.bandwidth.video,\n },\n startBitrate: StaticConfig.meetings.bandwidth.startBitrate,\n periodicKeyframes: 20, // it's always been hardcoded in SDK so for now keeping it that way\n disableExtmap: !enableExtmap,\n disableRtx: !enableRtx, // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP\n },\n },\n {\n // TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now SPARK-460530\n localTracks: {\n audio: audioStream?.outputTrack,\n video: videoStream?.outputTrack,\n screenShareVideo: shareVideoStream?.outputTrack,\n screenShareAudio: shareAudioStream?.outputTrack, // TODO: add type for screenShareAudio in internal-media-core SPARK-446923\n } as unknown,\n direction: {\n audio: Media.getDirection(true, mediaDirection.receiveAudio, mediaDirection.sendAudio),\n video: Media.getDirection(true, mediaDirection.receiveVideo, mediaDirection.sendVideo),\n screenShareVideo: Media.getDirection(\n false,\n mediaDirection.receiveShare,\n mediaDirection.sendShare\n ),\n },\n remoteQualityLevel,\n },\n debugId\n );\n};\n\n/**\n * generates share streams\n * @param {Object} options parameter\n * @param {Boolean} options.sendAudio send audio from the display share\n * @param {Boolean} options.sendShare send video from the display share\n * @param {Object} options.sharePreferences\n * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}\n * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Promise.<MediaStream>}\n */\nMedia.getDisplayMedia = (\n options: {\n sendAudio: boolean;\n sendShare: boolean;\n sharePreferences: {\n shareConstraints: MediaTrackConstraints;\n highFrameRate: any;\n };\n },\n config: any = {}\n) => {\n // SDK screen share resolution settings from Webex.init\n const customResolution = config.screenResolution || {};\n // user defined screen share frame rate\n const customShareFrameRate = config.screenFrameRate || null;\n // user defined share preferences\n const hasSharePreferences = options.sharePreferences;\n const hasCustomConstraints = hasSharePreferences && hasSharePreferences.shareConstraints;\n const hasHighFrameRate = hasSharePreferences && hasSharePreferences.highFrameRate;\n const {screenResolution, resolution, videoShareFrameRate, screenFrameRate, aspectRatio} =\n Config.meetings;\n\n let shareConstraints: any = {\n cursor: MEDIA_TRACK_CONSTRAINT.CURSOR.AWLAYS,\n aspectRatio,\n };\n\n if (hasCustomConstraints) {\n shareConstraints = hasSharePreferences.shareConstraints;\n } else if (hasHighFrameRate) {\n shareConstraints = {\n ...shareConstraints,\n frameRate: videoShareFrameRate,\n height: resolution.idealHeight,\n width: resolution.idealWidth,\n ...config.resolution,\n };\n } else {\n shareConstraints = {\n ...shareConstraints,\n frameRate: customShareFrameRate || screenFrameRate,\n height: customResolution.idealHeight || screenResolution.idealHeight,\n width: customResolution.idealWidth || screenResolution.idealWidth,\n ...config.screenResolution,\n };\n }\n\n // chrome and webkit based browsers (edge, safari) automatically adjust everything\n // and we have noticed higher quality with those browser types\n // firefox specifically has some issues with resolution and frame rate decision making\n // so we are making it optional and configurable (with defaults) for firefox\n // to have higher quality, and for developers to control the values\n // eventually we may have to add the same functionality to chrome, OR conversely, get to with firefox\n\n if (isBrowser('firefox')) {\n const mediaConfig: any = {\n audio: options.sendAudio,\n video: options.sendShare,\n };\n\n return navigator.mediaDevices\n .getDisplayMedia({audio: options.sendAudio, video: mediaConfig})\n .then((stream) => {\n if (options.sendShare && stream.getVideoTracks().length > 0) {\n // Firefox has a bug with the spec where changing in the height and width only happens\n // after we get the inital tracks\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1321221\n stream.getVideoTracks()[0].applyConstraints(shareConstraints);\n }\n\n return stream;\n });\n }\n\n const getDisplayMediaParams: any = {video: options.sendShare ? shareConstraints : false};\n\n // safari doesn't support sending screen share audio\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia\n if (options.sendAudio && isBrowser('safari')) {\n getDisplayMediaParams.audio = options.sendAudio;\n }\n\n return navigator.mediaDevices.getDisplayMedia(getDisplayMediaParams);\n};\n\n/**\n * generates audio and video using constraints (often called after getSupportedDevices)\n * @param {Object|Boolean} audio gum constraints\n * @param {Object|Boolean} video gum constraints\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Object} {streams}\n */\nMedia.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {\n const defaultWidth = {ideal: config.resolution.idealWidth, max: config.resolution.maxWidth};\n const defaultHeight = {ideal: config.resolution.idealHeight, max: config.resolution.maxHeight};\n const mediaConfig = {\n audio,\n // TODO: Remove temporary workaround once Firefox fixes low constraint issues\n // eslint-disable-next-line no-nested-ternary\n video: video\n ? isBrowser('firefox') && video.width && video.width.max === 320\n ? {\n deviceId: video.deviceId ? video.deviceId : undefined,\n width: 320,\n height: 180,\n frameRate: video.frameRate ? video.frameRate : undefined,\n facingMode: video.facingMode ? video.facingMode : undefined,\n }\n : {\n deviceId: video.deviceId ? video.deviceId : undefined,\n width: video.width ? video.width : defaultWidth,\n height: video.height ? video.height : defaultHeight,\n frameRate: video.frameRate ? video.frameRate : undefined,\n facingMode: video.facingMode ? video.facingMode : undefined,\n }\n : false,\n fake: process.env.NODE_ENV === 'test', // Special case to get fake media for Firefox browser for testing\n };\n\n return navigator.mediaDevices.getUserMedia(mediaConfig).catch((err) => {\n const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';\n\n LoggerProxy.logger.error(`${logPath} failed - ${err} (${err.constraint})`);\n throw err;\n });\n};\n\n/**\n *\n * Toggle a specific stream\n * noop as of now, does nothing\n * @returns {null}\n */\nMedia.toggleStream = () => {};\n\n/**\n * Stop input stream\n * @param {LocalStream} stream A local stream\n * @returns {null}\n */\nMedia.stopStream = (stream: LocalStream) => {\n if (!stream) {\n return Promise.resolve();\n }\n\n return Promise.resolve().then(() => {\n try {\n stream.stop();\n } catch (e) {\n LoggerProxy.logger.error(\n `Media:index#stopStream --> Unable to stop the stream with ready state of the output track => ${stream.outputTrack.readyState} & input track => ${stream.inputTrack.readyState}, error: ${e}`\n );\n }\n });\n};\n\n/**\n * generates streams for audio video and share\n * @param {object} mediaSetting parameter\n * @param {Object} mediaSetting.sendAudio sendAudio: {Boolean} sendAudio constraints\n * @param {Object} mediaSetting.sendVideo sendVideo: {Boolean} sendVideo constraints\n * @param {Object} mediaSetting.sendShare sendShare: {Boolean} sendShare constraints\n * @param {Object} mediaSetting.isSharing isSharing: {Boolean} isSharing constraints\n * @param {Object} audioVideo parameter\n * @param {Object} audioVideo.audio {deviceId: {String}}\n * @param {Object} audioVideo.video {deviceId: {String}}\n * @param {Object} sharePreferences parameter\n * @param {Object} sharePreferences.shareConstraints parameter\n * @param {Boolean} sharePreferences.highFrameRate parameter\n * @param {Object} config SDK Config\n * @returns {Array} [localStream, shareStream]\n */\nMedia.getUserMedia = (\n mediaSetting: {\n sendAudio: object;\n sendVideo: object;\n sendShare: object;\n isSharing: object;\n },\n audioVideo: {\n audio: object;\n video: object;\n },\n sharePreferences: {\n shareConstraints: object;\n highFrameRate: boolean;\n },\n config: object\n) =>\n Media.getLocalMedia(\n {\n sendAudio: mediaSetting.sendAudio ? audioVideo.audio || mediaSetting.sendAudio : false,\n sendVideo: mediaSetting.sendVideo ? audioVideo.video || mediaSetting.sendVideo : false,\n },\n config\n ).then((localStream) =>\n Media.getLocalMedia(\n {\n sendShare: mediaSetting.sendShare,\n isSharing: mediaSetting.isSharing,\n sharePreferences,\n },\n config\n ).then((shareStream) => [localStream, shareStream])\n );\n\nexport default Media;\n"],"mappings":"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"}
@@ -24,31 +24,37 @@ var MediaProperties = /*#__PURE__*/function () {
24
24
  * @returns {MediaProperties}
25
25
  */
26
26
  function MediaProperties() {
27
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
28
27
  (0, _classCallCheck2.default)(this, MediaProperties);
29
- (0, _defineProperty2.default)(this, "audioTrack", void 0);
30
- (0, _defineProperty2.default)(this, "localQualityLevel", void 0);
28
+ (0, _defineProperty2.default)(this, "audioStream", void 0);
31
29
  (0, _defineProperty2.default)(this, "mediaDirection", void 0);
32
30
  (0, _defineProperty2.default)(this, "mediaSettings", void 0);
33
31
  (0, _defineProperty2.default)(this, "webrtcMediaConnection", void 0);
34
- (0, _defineProperty2.default)(this, "remoteAudioTrack", void 0);
32
+ (0, _defineProperty2.default)(this, "remoteAudioStream", void 0);
35
33
  (0, _defineProperty2.default)(this, "remoteQualityLevel", void 0);
36
- (0, _defineProperty2.default)(this, "remoteShare", void 0);
37
- (0, _defineProperty2.default)(this, "remoteVideoTrack", void 0);
38
- (0, _defineProperty2.default)(this, "shareTrack", void 0);
34
+ (0, _defineProperty2.default)(this, "remoteShareStream", void 0);
35
+ (0, _defineProperty2.default)(this, "remoteVideoStream", void 0);
36
+ (0, _defineProperty2.default)(this, "shareVideoStream", void 0);
37
+ (0, _defineProperty2.default)(this, "shareAudioStream", void 0);
39
38
  (0, _defineProperty2.default)(this, "videoDeviceId", void 0);
40
- (0, _defineProperty2.default)(this, "videoTrack", void 0);
39
+ (0, _defineProperty2.default)(this, "videoStream", void 0);
41
40
  (0, _defineProperty2.default)(this, "namespace", _constants.MEETINGS);
42
41
  this.webrtcMediaConnection = null;
43
- this.mediaDirection = options.mediaDirection;
44
- this.videoTrack = options.videoTrack;
45
- this.audioTrack = options.audioTrack;
46
- this.shareTrack = options.shareTrack;
47
- this.remoteShare = options.remoteShare;
48
- this.remoteAudioTrack = options.remoteAudioTrack;
49
- this.remoteVideoTrack = options.remoteVideoTrack;
50
- this.localQualityLevel = options.localQualityLevel || _constants.QUALITY_LEVELS['720p'];
51
- this.remoteQualityLevel = options.remoteQualityLevel || _constants.QUALITY_LEVELS.HIGH;
42
+ this.mediaDirection = {
43
+ receiveAudio: false,
44
+ receiveVideo: false,
45
+ receiveShare: false,
46
+ sendAudio: false,
47
+ sendVideo: false,
48
+ sendShare: false
49
+ };
50
+ this.videoStream = null;
51
+ this.audioStream = null;
52
+ this.shareVideoStream = null;
53
+ this.shareAudioStream = null;
54
+ this.remoteShareStream = undefined;
55
+ this.remoteAudioStream = undefined;
56
+ this.remoteVideoStream = undefined;
57
+ this.remoteQualityLevel = _constants.QUALITY_LEVELS.HIGH;
52
58
  this.mediaSettings = {};
53
59
  this.videoDeviceId = null;
54
60
  }
@@ -78,24 +84,24 @@ var MediaProperties = /*#__PURE__*/function () {
78
84
  this.webrtcMediaConnection = mediaPeerConnection;
79
85
  }
80
86
  }, {
81
- key: "setLocalVideoTrack",
82
- value: function setLocalVideoTrack(videoTrack) {
83
- this.videoTrack = videoTrack;
87
+ key: "setLocalVideoStream",
88
+ value: function setLocalVideoStream(videoStream) {
89
+ this.videoStream = videoStream;
84
90
  }
85
91
  }, {
86
- key: "setLocalAudioTrack",
87
- value: function setLocalAudioTrack(audioTrack) {
88
- this.audioTrack = audioTrack;
92
+ key: "setLocalAudioStream",
93
+ value: function setLocalAudioStream(audioStream) {
94
+ this.audioStream = audioStream;
89
95
  }
90
96
  }, {
91
- key: "setLocalQualityLevel",
92
- value: function setLocalQualityLevel(localQualityLevel) {
93
- this.localQualityLevel = localQualityLevel;
97
+ key: "setLocalShareVideoStream",
98
+ value: function setLocalShareVideoStream(shareVideoStream) {
99
+ this.shareVideoStream = shareVideoStream;
94
100
  }
95
101
  }, {
96
- key: "setLocalShareTrack",
97
- value: function setLocalShareTrack(shareTrack) {
98
- this.shareTrack = shareTrack;
102
+ key: "setLocalShareAudioStream",
103
+ value: function setLocalShareAudioStream(shareAudioStream) {
104
+ this.shareAudioStream = shareAudioStream;
99
105
  }
100
106
  }, {
101
107
  key: "setRemoteQualityLevel",
@@ -103,31 +109,31 @@ var MediaProperties = /*#__PURE__*/function () {
103
109
  this.remoteQualityLevel = remoteQualityLevel;
104
110
  }
105
111
  }, {
106
- key: "setRemoteShare",
107
- value: function setRemoteShare(remoteShare) {
108
- this.remoteShare = remoteShare;
112
+ key: "setRemoteShareStream",
113
+ value: function setRemoteShareStream(remoteShareStream) {
114
+ this.remoteShareStream = remoteShareStream;
109
115
  }
110
116
 
111
117
  /**
112
- * Sets the remote audio track
113
- * @param {MediaTrack} remoteAudioTrack MediaTrack to save
118
+ * Sets the remote audio stream
119
+ * @param {RemoteStream} remoteAudioStream RemoteStream to save
114
120
  * @returns {void}
115
121
  */
116
122
  }, {
117
- key: "setRemoteAudioTrack",
118
- value: function setRemoteAudioTrack(remoteAudioTrack) {
119
- this.remoteAudioTrack = remoteAudioTrack;
123
+ key: "setRemoteAudioStream",
124
+ value: function setRemoteAudioStream(remoteAudioStream) {
125
+ this.remoteAudioStream = remoteAudioStream;
120
126
  }
121
127
 
122
128
  /**
123
- * Sets the remote video track
124
- * @param {MediaTrack} remoteVideoTrack MediaTrack to save
129
+ * Sets the remote video stream
130
+ * @param {RemoteStream} remoteVideoStream RemoteStream to save
125
131
  * @returns {void}
126
132
  */
127
133
  }, {
128
- key: "setRemoteVideoTrack",
129
- value: function setRemoteVideoTrack(remoteVideoTrack) {
130
- this.remoteVideoTrack = remoteVideoTrack;
134
+ key: "setRemoteVideoStream",
135
+ value: function setRemoteVideoStream(remoteVideoStream) {
136
+ this.remoteVideoStream = remoteVideoStream;
131
137
  }
132
138
 
133
139
  /**
@@ -145,34 +151,6 @@ var MediaProperties = /*#__PURE__*/function () {
145
151
  value: function unsetPeerConnection() {
146
152
  this.webrtcMediaConnection = null;
147
153
  }
148
- }, {
149
- key: "unsetLocalVideoTrack",
150
- value: function unsetLocalVideoTrack() {
151
- this.videoTrack = null;
152
- }
153
- }, {
154
- key: "unsetLocalShareTrack",
155
- value: function unsetLocalShareTrack() {
156
- this.shareTrack = null;
157
- }
158
- }, {
159
- key: "unsetLocalAudioTrack",
160
- value: function unsetLocalAudioTrack() {
161
- this.audioTrack = null;
162
- }
163
-
164
- /**
165
- * Removes remote stream from class instance
166
- * @deprecated after v1.89.3
167
- * @returns {void}
168
- */
169
- }, {
170
- key: "unsetRemoteStream",
171
- value: function unsetRemoteStream() {
172
- _loggerProxy.default.logger.warn('Media:properties#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3 (use unsetRemoteTracks instead)');
173
- // unsets audio and video only
174
- this.unsetRemoteMedia();
175
- }
176
154
 
177
155
  /**
178
156
  * Removes both remote audio and video from class instance
@@ -181,73 +159,34 @@ var MediaProperties = /*#__PURE__*/function () {
181
159
  }, {
182
160
  key: "unsetRemoteMedia",
183
161
  value: function unsetRemoteMedia() {
184
- this.remoteAudioTrack = null;
185
- this.remoteVideoTrack = null;
186
- }
187
- }, {
188
- key: "unsetRemoteShare",
189
- value: function unsetRemoteShare() {
190
- this.remoteShare = null;
162
+ this.remoteAudioStream = null;
163
+ this.remoteVideoStream = null;
191
164
  }
192
165
  }, {
193
- key: "unsetLocalVideoTracks",
194
- value: function unsetLocalVideoTracks() {
195
- this.unsetLocalVideoTrack();
196
- this.unsetLocalShareTrack();
166
+ key: "unsetRemoteShareStream",
167
+ value: function unsetRemoteShareStream() {
168
+ this.remoteShareStream = null;
197
169
  }
198
170
 
199
171
  /**
200
- * Removes remote stream and remote share from class instance
201
- * @deprecated after v1.89.3
172
+ * Unsets all remote streams
202
173
  * @returns {void}
203
174
  */
204
175
  }, {
205
176
  key: "unsetRemoteStreams",
206
177
  value: function unsetRemoteStreams() {
207
- _loggerProxy.default.logger.warn('Media:properties#unsetRemoteStreams --> [DEPRECATION WARNING]: unsetRemoteStreams has been deprecated after v1.89.3 (use unsetRemoteTracks instead)');
208
- this.unsetRemoteStream();
209
- this.unsetRemoteShare();
210
- }
211
-
212
- /**
213
- * Unsets all remote tracks
214
- * @returns {void}
215
- */
216
- }, {
217
- key: "unsetRemoteTracks",
218
- value: function unsetRemoteTracks() {
219
178
  this.unsetRemoteMedia();
220
- this.unsetRemoteShare();
221
- }
222
- }, {
223
- key: "unsetShareStreams",
224
- value: function unsetShareStreams() {
225
- this.unsetLocalShareTrack();
226
- this.unsetRemoteShare();
179
+ this.unsetRemoteShareStream();
227
180
  }
228
181
 
229
182
  /**
230
- * Removes both local and remote video stream from class instance
231
- * @deprecated after v1.89.3
232
- * @returns {void}
183
+ * Returns if we have at least one local share stream or not.
184
+ * @returns {Boolean}
233
185
  */
234
186
  }, {
235
- key: "unsetMediaStreams",
236
- value: function unsetMediaStreams() {
237
- _loggerProxy.default.logger.warn('Media:properties#unsetMediaStreams --> [DEPRECATION WARNING]: unsetMediaStreams has been deprecated after v1.89.3 (use unsetMediaTracks instead)');
238
- this.unsetLocalVideoTrack();
239
- this.unsetRemoteStream();
240
- }
241
-
242
- /**
243
- * Removes both local and remote video stream from class instance
244
- * @returns {void}
245
- */
246
- }, {
247
- key: "unsetMediaTracks",
248
- value: function unsetMediaTracks() {
249
- this.unsetLocalVideoTrack();
250
- this.unsetRemoteMedia();
187
+ key: "hasLocalShareStream",
188
+ value: function hasLocalShareStream() {
189
+ return !!(this.shareAudioStream || this.shareVideoStream);
251
190
  }
252
191
 
253
192
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["MediaProperties","options","MEETINGS","webrtcMediaConnection","mediaDirection","videoTrack","audioTrack","shareTrack","remoteShare","remoteAudioTrack","remoteVideoTrack","localQualityLevel","QUALITY_LEVELS","remoteQualityLevel","HIGH","mediaSettings","videoDeviceId","type","values","mediaPeerConnection","deviceId","LoggerProxy","logger","warn","unsetRemoteMedia","unsetLocalVideoTrack","unsetLocalShareTrack","unsetRemoteStream","unsetRemoteShare","isConnected","getConnectionState","ConnectionState","Connected","resolve","reject","timer","connectionStateListener","log","clearTimeout","off","Event","CONNECTION_STATE_CHANGED","setTimeout","PC_BAIL_TIMEOUT","on","waitForMediaConnectionConnected","allStatsReports","getStats","statsResult","forEach","report","push","successfulCandidatePairs","filter","state","toLowerCase","foundConnectionType","some","pair","localCandidate","find","id","localCandidateId","undefined","connectionType","relayProtocol","toUpperCase","protocol"],"sources":["properties.ts"],"sourcesContent":["import {ConnectionState, Event} from '@webex/internal-media-core';\n\nimport {MEETINGS, PC_BAIL_TIMEOUT, QUALITY_LEVELS} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * @class MediaProperties\n */\nexport default class MediaProperties {\n audioTrack: any;\n localQualityLevel: any;\n mediaDirection: any;\n mediaSettings: any;\n webrtcMediaConnection: any;\n remoteAudioTrack: any;\n remoteQualityLevel: any;\n remoteShare: any;\n remoteVideoTrack: any;\n shareTrack: any;\n videoDeviceId: any;\n videoTrack: any;\n namespace = MEETINGS;\n\n /**\n * @param {Object} [options] -- to auto construct\n * @returns {MediaProperties}\n */\n constructor(options: any = {}) {\n this.webrtcMediaConnection = null;\n this.mediaDirection = options.mediaDirection;\n this.videoTrack = options.videoTrack;\n this.audioTrack = options.audioTrack;\n this.shareTrack = options.shareTrack;\n this.remoteShare = options.remoteShare;\n this.remoteAudioTrack = options.remoteAudioTrack;\n this.remoteVideoTrack = options.remoteVideoTrack;\n this.localQualityLevel = options.localQualityLevel || QUALITY_LEVELS['720p'];\n this.remoteQualityLevel = options.remoteQualityLevel || QUALITY_LEVELS.HIGH;\n this.mediaSettings = {};\n this.videoDeviceId = null;\n }\n\n /**\n * Retrieves the preferred video input device\n * @returns {Object|null}\n */\n getVideoDeviceId() {\n return this.videoDeviceId || null;\n }\n\n setMediaDirection(mediaDirection) {\n this.mediaDirection = mediaDirection;\n }\n\n setMediaSettings(type, values) {\n this.mediaSettings[type] = values;\n }\n\n setMediaPeerConnection(mediaPeerConnection) {\n this.webrtcMediaConnection = mediaPeerConnection;\n }\n\n setLocalVideoTrack(videoTrack) {\n this.videoTrack = videoTrack;\n }\n\n setLocalAudioTrack(audioTrack) {\n this.audioTrack = audioTrack;\n }\n\n setLocalQualityLevel(localQualityLevel) {\n this.localQualityLevel = localQualityLevel;\n }\n\n setLocalShareTrack(shareTrack) {\n this.shareTrack = shareTrack;\n }\n\n setRemoteQualityLevel(remoteQualityLevel) {\n this.remoteQualityLevel = remoteQualityLevel;\n }\n\n setRemoteShare(remoteShare) {\n this.remoteShare = remoteShare;\n }\n\n /**\n * Sets the remote audio track\n * @param {MediaTrack} remoteAudioTrack MediaTrack to save\n * @returns {void}\n */\n setRemoteAudioTrack(remoteAudioTrack: any) {\n this.remoteAudioTrack = remoteAudioTrack;\n }\n\n /**\n * Sets the remote video track\n * @param {MediaTrack} remoteVideoTrack MediaTrack to save\n * @returns {void}\n */\n setRemoteVideoTrack(remoteVideoTrack: any) {\n this.remoteVideoTrack = remoteVideoTrack;\n }\n\n /**\n * Stores the preferred video input device\n * @param {string} deviceId Preferred video input device\n * @returns {void}\n */\n setVideoDeviceId(deviceId: string) {\n this.videoDeviceId = deviceId;\n }\n\n unsetPeerConnection() {\n this.webrtcMediaConnection = null;\n }\n\n unsetLocalVideoTrack() {\n this.videoTrack = null;\n }\n\n unsetLocalShareTrack() {\n this.shareTrack = null;\n }\n\n unsetLocalAudioTrack() {\n this.audioTrack = null;\n }\n\n /**\n * Removes remote stream from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetRemoteStream() {\n LoggerProxy.logger.warn(\n 'Media:properties#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3 (use unsetRemoteTracks instead)'\n );\n // unsets audio and video only\n this.unsetRemoteMedia();\n }\n\n /**\n * Removes both remote audio and video from class instance\n * @returns {void}\n */\n unsetRemoteMedia() {\n this.remoteAudioTrack = null;\n this.remoteVideoTrack = null;\n }\n\n unsetRemoteShare() {\n this.remoteShare = null;\n }\n\n unsetLocalVideoTracks() {\n this.unsetLocalVideoTrack();\n this.unsetLocalShareTrack();\n }\n\n /**\n * Removes remote stream and remote share from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetRemoteStreams() {\n LoggerProxy.logger.warn(\n 'Media:properties#unsetRemoteStreams --> [DEPRECATION WARNING]: unsetRemoteStreams has been deprecated after v1.89.3 (use unsetRemoteTracks instead)'\n );\n this.unsetRemoteStream();\n this.unsetRemoteShare();\n }\n\n /**\n * Unsets all remote tracks\n * @returns {void}\n */\n unsetRemoteTracks() {\n this.unsetRemoteMedia();\n this.unsetRemoteShare();\n }\n\n unsetShareStreams() {\n this.unsetLocalShareTrack();\n this.unsetRemoteShare();\n }\n\n /**\n * Removes both local and remote video stream from class instance\n * @deprecated after v1.89.3\n * @returns {void}\n */\n unsetMediaStreams() {\n LoggerProxy.logger.warn(\n 'Media:properties#unsetMediaStreams --> [DEPRECATION WARNING]: unsetMediaStreams has been deprecated after v1.89.3 (use unsetMediaTracks instead)'\n );\n this.unsetLocalVideoTrack();\n this.unsetRemoteStream();\n }\n\n /**\n * Removes both local and remote video stream from class instance\n * @returns {void}\n */\n unsetMediaTracks() {\n this.unsetLocalVideoTrack();\n this.unsetRemoteMedia();\n }\n\n /**\n * Waits for the webrtc media connection to be connected.\n *\n * @returns {Promise<void>}\n */\n waitForMediaConnectionConnected(): Promise<void> {\n const isConnected = () =>\n this.webrtcMediaConnection.getConnectionState() === ConnectionState.Connected;\n\n if (isConnected()) {\n return Promise.resolve();\n }\n\n return new Promise<void>((resolve, reject) => {\n let timer;\n\n const connectionStateListener = () => {\n LoggerProxy.logger.log(\n `Media:properties#waitForMediaConnectionConnected --> connection state: ${this.webrtcMediaConnection.getConnectionState()}`\n );\n\n if (isConnected()) {\n clearTimeout(timer);\n this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n resolve();\n }\n };\n\n timer = setTimeout(() => {\n this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n reject();\n }, PC_BAIL_TIMEOUT);\n\n this.webrtcMediaConnection.on(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n });\n }\n\n /**\n * Returns the type of a connection that has been established\n *\n * @returns {Promise<'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'>}\n */\n async getCurrentConnectionType() {\n // we can only get the connection type after ICE connection has been established\n await this.waitForMediaConnectionConnected();\n\n const allStatsReports = [];\n\n try {\n const statsResult = await this.webrtcMediaConnection.getStats();\n statsResult.forEach((report) => allStatsReports.push(report));\n } catch (error) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> getStats() failed: ${error}`\n );\n }\n\n const successfulCandidatePairs = allStatsReports.filter(\n (report) => report.type === 'candidate-pair' && report.state?.toLowerCase() === 'succeeded'\n );\n\n let foundConnectionType = 'unknown';\n\n // all of the successful pairs should have the same connection type, so just return the type for the first one\n successfulCandidatePairs.some((pair) => {\n const localCandidate = allStatsReports.find(\n (report) => report.type === 'local-candidate' && report.id === pair.localCandidateId\n );\n\n if (localCandidate === undefined) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> failed to find local candidate \"${pair.localCandidateId}\" in getStats() results`\n );\n\n return false;\n }\n\n let connectionType;\n\n if (localCandidate.relayProtocol) {\n connectionType = `TURN-${localCandidate.relayProtocol.toUpperCase()}`;\n } else {\n connectionType = localCandidate.protocol?.toUpperCase(); // it will be UDP or TCP\n }\n\n if (connectionType) {\n foundConnectionType = connectionType;\n\n return true;\n }\n\n return false;\n });\n\n return foundConnectionType;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["MediaProperties","MEETINGS","webrtcMediaConnection","mediaDirection","receiveAudio","receiveVideo","receiveShare","sendAudio","sendVideo","sendShare","videoStream","audioStream","shareVideoStream","shareAudioStream","remoteShareStream","undefined","remoteAudioStream","remoteVideoStream","remoteQualityLevel","QUALITY_LEVELS","HIGH","mediaSettings","videoDeviceId","type","values","mediaPeerConnection","deviceId","unsetRemoteMedia","unsetRemoteShareStream","isConnected","getConnectionState","ConnectionState","Connected","resolve","reject","timer","connectionStateListener","LoggerProxy","logger","log","clearTimeout","off","Event","CONNECTION_STATE_CHANGED","setTimeout","PC_BAIL_TIMEOUT","on","waitForMediaConnectionConnected","allStatsReports","getStats","statsResult","forEach","report","push","warn","successfulCandidatePairs","filter","state","toLowerCase","foundConnectionType","some","pair","localCandidate","find","id","localCandidateId","connectionType","relayProtocol","toUpperCase","protocol"],"sources":["properties.ts"],"sourcesContent":["import {ConnectionState, Event} from '@webex/internal-media-core';\n\nimport {\n LocalCameraStream,\n LocalMicrophoneStream,\n LocalDisplayStream,\n LocalSystemAudioStream,\n RemoteStream,\n} from '@webex/media-helpers';\n\nimport {MEETINGS, PC_BAIL_TIMEOUT, QUALITY_LEVELS} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nexport type MediaDirection = {\n sendAudio: boolean;\n sendVideo: boolean;\n sendShare: boolean;\n receiveAudio: boolean;\n receiveVideo: boolean;\n receiveShare: boolean;\n};\n\n/**\n * @class MediaProperties\n */\nexport default class MediaProperties {\n audioStream?: LocalMicrophoneStream;\n mediaDirection: MediaDirection;\n mediaSettings: any;\n webrtcMediaConnection: any;\n remoteAudioStream: RemoteStream;\n remoteQualityLevel: any;\n remoteShareStream: RemoteStream;\n remoteVideoStream: RemoteStream;\n shareVideoStream?: LocalDisplayStream;\n shareAudioStream?: LocalSystemAudioStream;\n videoDeviceId: any;\n videoStream?: LocalCameraStream;\n namespace = MEETINGS;\n\n /**\n * @param {Object} [options] -- to auto construct\n * @returns {MediaProperties}\n */\n constructor() {\n this.webrtcMediaConnection = null;\n this.mediaDirection = {\n receiveAudio: false,\n receiveVideo: false,\n receiveShare: false,\n sendAudio: false,\n sendVideo: false,\n sendShare: false,\n };\n this.videoStream = null;\n this.audioStream = null;\n this.shareVideoStream = null;\n this.shareAudioStream = null;\n this.remoteShareStream = undefined;\n this.remoteAudioStream = undefined;\n this.remoteVideoStream = undefined;\n this.remoteQualityLevel = QUALITY_LEVELS.HIGH;\n this.mediaSettings = {};\n this.videoDeviceId = null;\n }\n\n /**\n * Retrieves the preferred video input device\n * @returns {Object|null}\n */\n getVideoDeviceId() {\n return this.videoDeviceId || null;\n }\n\n setMediaDirection(mediaDirection) {\n this.mediaDirection = mediaDirection;\n }\n\n setMediaSettings(type, values) {\n this.mediaSettings[type] = values;\n }\n\n setMediaPeerConnection(mediaPeerConnection) {\n this.webrtcMediaConnection = mediaPeerConnection;\n }\n\n setLocalVideoStream(videoStream?: LocalCameraStream) {\n this.videoStream = videoStream;\n }\n\n setLocalAudioStream(audioStream?: LocalMicrophoneStream) {\n this.audioStream = audioStream;\n }\n\n setLocalShareVideoStream(shareVideoStream?: LocalDisplayStream) {\n this.shareVideoStream = shareVideoStream;\n }\n\n setLocalShareAudioStream(shareAudioStream?: LocalSystemAudioStream) {\n this.shareAudioStream = shareAudioStream;\n }\n\n setRemoteQualityLevel(remoteQualityLevel) {\n this.remoteQualityLevel = remoteQualityLevel;\n }\n\n setRemoteShareStream(remoteShareStream: RemoteStream) {\n this.remoteShareStream = remoteShareStream;\n }\n\n /**\n * Sets the remote audio stream\n * @param {RemoteStream} remoteAudioStream RemoteStream to save\n * @returns {void}\n */\n setRemoteAudioStream(remoteAudioStream: RemoteStream) {\n this.remoteAudioStream = remoteAudioStream;\n }\n\n /**\n * Sets the remote video stream\n * @param {RemoteStream} remoteVideoStream RemoteStream to save\n * @returns {void}\n */\n setRemoteVideoStream(remoteVideoStream: RemoteStream) {\n this.remoteVideoStream = remoteVideoStream;\n }\n\n /**\n * Stores the preferred video input device\n * @param {string} deviceId Preferred video input device\n * @returns {void}\n */\n setVideoDeviceId(deviceId: string) {\n this.videoDeviceId = deviceId;\n }\n\n unsetPeerConnection() {\n this.webrtcMediaConnection = null;\n }\n\n /**\n * Removes both remote audio and video from class instance\n * @returns {void}\n */\n unsetRemoteMedia() {\n this.remoteAudioStream = null;\n this.remoteVideoStream = null;\n }\n\n unsetRemoteShareStream() {\n this.remoteShareStream = null;\n }\n\n /**\n * Unsets all remote streams\n * @returns {void}\n */\n unsetRemoteStreams() {\n this.unsetRemoteMedia();\n this.unsetRemoteShareStream();\n }\n\n /**\n * Returns if we have at least one local share stream or not.\n * @returns {Boolean}\n */\n hasLocalShareStream() {\n return !!(this.shareAudioStream || this.shareVideoStream);\n }\n\n /**\n * Waits for the webrtc media connection to be connected.\n *\n * @returns {Promise<void>}\n */\n waitForMediaConnectionConnected(): Promise<void> {\n const isConnected = () =>\n this.webrtcMediaConnection.getConnectionState() === ConnectionState.Connected;\n\n if (isConnected()) {\n return Promise.resolve();\n }\n\n return new Promise<void>((resolve, reject) => {\n let timer;\n\n const connectionStateListener = () => {\n LoggerProxy.logger.log(\n `Media:properties#waitForMediaConnectionConnected --> connection state: ${this.webrtcMediaConnection.getConnectionState()}`\n );\n\n if (isConnected()) {\n clearTimeout(timer);\n this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n resolve();\n }\n };\n\n timer = setTimeout(() => {\n this.webrtcMediaConnection.off(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n reject();\n }, PC_BAIL_TIMEOUT);\n\n this.webrtcMediaConnection.on(Event.CONNECTION_STATE_CHANGED, connectionStateListener);\n });\n }\n\n /**\n * Returns the type of a connection that has been established\n *\n * @returns {Promise<'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'>}\n */\n async getCurrentConnectionType() {\n // we can only get the connection type after ICE connection has been established\n await this.waitForMediaConnectionConnected();\n\n const allStatsReports = [];\n\n try {\n const statsResult = await this.webrtcMediaConnection.getStats();\n statsResult.forEach((report) => allStatsReports.push(report));\n } catch (error) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> getStats() failed: ${error}`\n );\n }\n\n const successfulCandidatePairs = allStatsReports.filter(\n (report) => report.type === 'candidate-pair' && report.state?.toLowerCase() === 'succeeded'\n );\n\n let foundConnectionType = 'unknown';\n\n // all of the successful pairs should have the same connection type, so just return the type for the first one\n successfulCandidatePairs.some((pair) => {\n const localCandidate = allStatsReports.find(\n (report) => report.type === 'local-candidate' && report.id === pair.localCandidateId\n );\n\n if (localCandidate === undefined) {\n LoggerProxy.logger.warn(\n `Media:properties#getCurrentConnectionType --> failed to find local candidate \"${pair.localCandidateId}\" in getStats() results`\n );\n\n return false;\n }\n\n let connectionType;\n\n if (localCandidate.relayProtocol) {\n connectionType = `TURN-${localCandidate.relayProtocol.toUpperCase()}`;\n } else {\n connectionType = localCandidate.protocol?.toUpperCase(); // it will be UDP or TCP\n }\n\n if (connectionType) {\n foundConnectionType = connectionType;\n\n return true;\n }\n\n return false;\n });\n\n return foundConnectionType;\n }\n}\n"],"mappings":"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"}
@@ -31,9 +31,13 @@ var InMeetingActions = /*#__PURE__*/(0, _createClass2.default)(function InMeetin
31
31
  (0, _defineProperty2.default)(this, "canResumeRecording", null);
32
32
  (0, _defineProperty2.default)(this, "canStopRecording", null);
33
33
  (0, _defineProperty2.default)(this, "canSetMuteOnEntry", null);
34
+ (0, _defineProperty2.default)(this, "canSetPresenter", null);
35
+ (0, _defineProperty2.default)(this, "canUnsetPresenter", null);
34
36
  (0, _defineProperty2.default)(this, "canUnsetMuteOnEntry", null);
35
37
  (0, _defineProperty2.default)(this, "canSetDisallowUnmute", null);
36
38
  (0, _defineProperty2.default)(this, "canUnsetDisallowUnmute", null);
39
+ (0, _defineProperty2.default)(this, "canSetMuted", null);
40
+ (0, _defineProperty2.default)(this, "canUnsetMuted", null);
37
41
  (0, _defineProperty2.default)(this, "canRaiseHand", null);
38
42
  (0, _defineProperty2.default)(this, "canLowerAllHands", null);
39
43
  (0, _defineProperty2.default)(this, "canLowerSomeoneElsesHand", null);
@@ -42,13 +46,49 @@ var InMeetingActions = /*#__PURE__*/(0, _createClass2.default)(function InMeetin
42
46
  (0, _defineProperty2.default)(this, "canStartTranscribing", null);
43
47
  (0, _defineProperty2.default)(this, "canStopTranscribing", null);
44
48
  (0, _defineProperty2.default)(this, "isClosedCaptionActive", null);
49
+ (0, _defineProperty2.default)(this, "isSaveTranscriptsEnabled", null);
45
50
  (0, _defineProperty2.default)(this, "isWebexAssistantActive", null);
46
51
  (0, _defineProperty2.default)(this, "canViewCaptionPanel", null);
47
52
  (0, _defineProperty2.default)(this, "isRealTimeTranslationEnabled", null);
48
53
  (0, _defineProperty2.default)(this, "canSelectSpokenLanguages", null);
49
54
  (0, _defineProperty2.default)(this, "waitingForOthersToJoin", null);
50
- (0, _defineProperty2.default)(this, "canEnableReactions", null);
51
55
  (0, _defineProperty2.default)(this, "canSendReactions", null);
56
+ (0, _defineProperty2.default)(this, "canManageBreakout", null);
57
+ (0, _defineProperty2.default)(this, "canBroadcastMessageToBreakout", null);
58
+ (0, _defineProperty2.default)(this, "canAdmitLobbyToBreakout", null);
59
+ (0, _defineProperty2.default)(this, "isBreakoutPreassignmentsEnabled", null);
60
+ (0, _defineProperty2.default)(this, "canUserAskForHelp", null);
61
+ (0, _defineProperty2.default)(this, "canUserRenameSelfAndObserved", null);
62
+ (0, _defineProperty2.default)(this, "canUserRenameOthers", null);
63
+ (0, _defineProperty2.default)(this, "canMuteAll", null);
64
+ (0, _defineProperty2.default)(this, "canUnmuteAll", null);
65
+ (0, _defineProperty2.default)(this, "canEnableHardMute", null);
66
+ (0, _defineProperty2.default)(this, "canDisableHardMute", null);
67
+ (0, _defineProperty2.default)(this, "canEnableMuteOnEntry", null);
68
+ (0, _defineProperty2.default)(this, "canDisableMuteOnEntry", null);
69
+ (0, _defineProperty2.default)(this, "canEnableReactions", null);
70
+ (0, _defineProperty2.default)(this, "canDisableReactions", null);
71
+ (0, _defineProperty2.default)(this, "canEnableReactionDisplayNames", null);
72
+ (0, _defineProperty2.default)(this, "canDisableReactionDisplayNames", null);
73
+ (0, _defineProperty2.default)(this, "canUpdateShareControl", null);
74
+ (0, _defineProperty2.default)(this, "canEnableViewTheParticipantsList", null);
75
+ (0, _defineProperty2.default)(this, "canDisableViewTheParticipantsList", null);
76
+ (0, _defineProperty2.default)(this, "canEnableRaiseHand", null);
77
+ (0, _defineProperty2.default)(this, "canDisableRaiseHand", null);
78
+ (0, _defineProperty2.default)(this, "canEnableVideo", null);
79
+ (0, _defineProperty2.default)(this, "canDisableVideo", null);
80
+ (0, _defineProperty2.default)(this, "canShareFile", null);
81
+ (0, _defineProperty2.default)(this, "canShareApplication", null);
82
+ (0, _defineProperty2.default)(this, "canShareCamera", null);
83
+ (0, _defineProperty2.default)(this, "canShareDesktop", null);
84
+ (0, _defineProperty2.default)(this, "canShareContent", null);
85
+ (0, _defineProperty2.default)(this, "canTransferFile", null);
86
+ (0, _defineProperty2.default)(this, "canDoVideo", null);
87
+ (0, _defineProperty2.default)(this, "canAnnotate", null);
88
+ (0, _defineProperty2.default)(this, "canUseVoip", null);
89
+ (0, _defineProperty2.default)(this, "supportHQV", null);
90
+ (0, _defineProperty2.default)(this, "supportHDV", null);
91
+ (0, _defineProperty2.default)(this, "canShareWhiteBoard", null);
52
92
  (0, _defineProperty2.default)(this, "get", function () {
53
93
  return {
54
94
  canInviteNewParticipants: _this.canInviteNewParticipants,
@@ -59,6 +99,10 @@ var InMeetingActions = /*#__PURE__*/(0, _createClass2.default)(function InMeetin
59
99
  canSetMuteOnEntry: _this.canSetMuteOnEntry,
60
100
  canUnsetMuteOnEntry: _this.canUnsetMuteOnEntry,
61
101
  canSetDisallowUnmute: _this.canSetDisallowUnmute,
102
+ canSetMuted: _this.canSetMuted,
103
+ canUnsetMuted: _this.canUnsetMuted,
104
+ canSetPresenter: _this.canSetPresenter,
105
+ canUnsetPresenter: _this.canUnsetPresenter,
62
106
  canUnsetDisallowUnmute: _this.canUnsetDisallowUnmute,
63
107
  canStartRecording: _this.canStartRecording,
64
108
  canPauseRecording: _this.canPauseRecording,
@@ -72,13 +116,49 @@ var InMeetingActions = /*#__PURE__*/(0, _createClass2.default)(function InMeetin
72
116
  canStartTranscribing: _this.canStartTranscribing,
73
117
  canStopTranscribing: _this.canStopTranscribing,
74
118
  isClosedCaptionActive: _this.isClosedCaptionActive,
119
+ isSaveTranscriptsEnabled: _this.isSaveTranscriptsEnabled,
75
120
  isWebexAssistantActive: _this.isWebexAssistantActive,
76
121
  canViewCaptionPanel: _this.canViewCaptionPanel,
77
122
  isRealTimeTranslationEnabled: _this.isRealTimeTranslationEnabled,
78
123
  canSelectSpokenLanguages: _this.canSelectSpokenLanguages,
79
124
  waitingForOthersToJoin: _this.waitingForOthersToJoin,
125
+ canSendReactions: _this.canSendReactions,
126
+ canManageBreakout: _this.canManageBreakout,
127
+ canBroadcastMessageToBreakout: _this.canBroadcastMessageToBreakout,
128
+ canAdmitLobbyToBreakout: _this.canAdmitLobbyToBreakout,
129
+ isBreakoutPreassignmentsEnabled: _this.isBreakoutPreassignmentsEnabled,
130
+ canUserAskForHelp: _this.canUserAskForHelp,
131
+ canUserRenameSelfAndObserved: _this.canUserRenameSelfAndObserved,
132
+ canUserRenameOthers: _this.canUserRenameOthers,
133
+ canMuteAll: _this.canMuteAll,
134
+ canUnmuteAll: _this.canUnmuteAll,
135
+ canEnableHardMute: _this.canEnableHardMute,
136
+ canDisableHardMute: _this.canDisableHardMute,
137
+ canEnableMuteOnEntry: _this.canEnableMuteOnEntry,
138
+ canDisableMuteOnEntry: _this.canDisableMuteOnEntry,
80
139
  canEnableReactions: _this.canEnableReactions,
81
- canSendReactions: _this.canSendReactions
140
+ canDisableReactions: _this.canDisableReactions,
141
+ canEnableReactionDisplayNames: _this.canEnableReactionDisplayNames,
142
+ canDisableReactionDisplayNames: _this.canDisableReactionDisplayNames,
143
+ canUpdateShareControl: _this.canUpdateShareControl,
144
+ canEnableViewTheParticipantsList: _this.canEnableViewTheParticipantsList,
145
+ canDisableViewTheParticipantsList: _this.canDisableViewTheParticipantsList,
146
+ canEnableRaiseHand: _this.canEnableRaiseHand,
147
+ canDisableRaiseHand: _this.canDisableRaiseHand,
148
+ canEnableVideo: _this.canEnableVideo,
149
+ canDisableVideo: _this.canDisableVideo,
150
+ canShareFile: _this.canShareFile,
151
+ canShareApplication: _this.canShareApplication,
152
+ canShareCamera: _this.canShareCamera,
153
+ canShareDesktop: _this.canShareDesktop,
154
+ canShareContent: _this.canShareContent,
155
+ canTransferFile: _this.canTransferFile,
156
+ canDoVideo: _this.canDoVideo,
157
+ canAnnotate: _this.canAnnotate,
158
+ canUseVoip: _this.canUseVoip,
159
+ supportHQV: _this.supportHQV,
160
+ supportHDV: _this.supportHDV,
161
+ canShareWhiteBoard: _this.canShareWhiteBoard
82
162
  };
83
163
  });
84
164
  (0, _defineProperty2.default)(this, "set", function (actions) {