@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.400

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 (629) hide show
  1. package/README.md +58 -8
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +11 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +347 -74
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +125 -18
  89. package/dist/index.js.map +1 -1
  90. package/dist/interceptors/index.js +15 -0
  91. package/dist/interceptors/index.js.map +1 -0
  92. package/dist/interceptors/locusRetry.js +93 -0
  93. package/dist/interceptors/locusRetry.js.map +1 -0
  94. package/dist/interpretation/collection.js +23 -0
  95. package/dist/interpretation/collection.js.map +1 -0
  96. package/dist/interpretation/index.js +380 -0
  97. package/dist/interpretation/index.js.map +1 -0
  98. package/dist/interpretation/siLanguage.js +25 -0
  99. package/dist/interpretation/siLanguage.js.map +1 -0
  100. package/dist/locus-info/controlsUtils.js +101 -29
  101. package/dist/locus-info/controlsUtils.js.map +1 -1
  102. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  103. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  104. package/dist/locus-info/fullState.js +0 -15
  105. package/dist/locus-info/fullState.js.map +1 -1
  106. package/dist/locus-info/hostUtils.js +4 -12
  107. package/dist/locus-info/hostUtils.js.map +1 -1
  108. package/dist/locus-info/index.js +564 -246
  109. package/dist/locus-info/index.js.map +1 -1
  110. package/dist/locus-info/infoUtils.js +10 -38
  111. package/dist/locus-info/infoUtils.js.map +1 -1
  112. package/dist/locus-info/mediaSharesUtils.js +82 -38
  113. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  114. package/dist/locus-info/parser.js +314 -163
  115. package/dist/locus-info/parser.js.map +1 -1
  116. package/dist/locus-info/selfUtils.js +110 -92
  117. package/dist/locus-info/selfUtils.js.map +1 -1
  118. package/dist/media/index.js +107 -231
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +137 -222
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +2 -9
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +316 -501
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +97 -14
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/meeting/index.js +5311 -3871
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/locusMediaRequest.js +292 -0
  131. package/dist/meeting/locusMediaRequest.js.map +1 -0
  132. package/dist/meeting/muteState.js +260 -183
  133. package/dist/meeting/muteState.js.map +1 -1
  134. package/dist/meeting/request.js +421 -347
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/request.type.js +7 -0
  137. package/dist/meeting/request.type.js.map +1 -0
  138. package/dist/meeting/state.js +21 -31
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/meeting/util.js +672 -585
  141. package/dist/meeting/util.js.map +1 -1
  142. package/dist/meeting/voicea-meeting.js +172 -0
  143. package/dist/meeting/voicea-meeting.js.map +1 -0
  144. package/dist/meeting-info/collection.js +6 -25
  145. package/dist/meeting-info/collection.js.map +1 -1
  146. package/dist/meeting-info/index.js +87 -39
  147. package/dist/meeting-info/index.js.map +1 -1
  148. package/dist/meeting-info/meeting-info-v2.js +352 -283
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.js +3 -15
  151. package/dist/meeting-info/request.js.map +1 -1
  152. package/dist/meeting-info/util.js +99 -183
  153. package/dist/meeting-info/util.js.map +1 -1
  154. package/dist/meeting-info/utilv2.js +147 -234
  155. package/dist/meeting-info/utilv2.js.map +1 -1
  156. package/dist/meetings/collection.js +43 -19
  157. package/dist/meetings/collection.js.map +1 -1
  158. package/dist/meetings/index.js +895 -600
  159. package/dist/meetings/index.js.map +1 -1
  160. package/dist/meetings/meetings.types.js +7 -0
  161. package/dist/meetings/meetings.types.js.map +1 -0
  162. package/dist/meetings/request.js +26 -41
  163. package/dist/meetings/request.js.map +1 -1
  164. package/dist/meetings/util.js +184 -157
  165. package/dist/meetings/util.js.map +1 -1
  166. package/dist/member/index.js +134 -85
  167. package/dist/member/index.js.map +1 -1
  168. package/dist/member/types.js +25 -0
  169. package/dist/member/types.js.map +1 -0
  170. package/dist/member/util.js +158 -88
  171. package/dist/member/util.js.map +1 -1
  172. package/dist/members/collection.js +13 -12
  173. package/dist/members/collection.js.map +1 -1
  174. package/dist/members/index.js +194 -204
  175. package/dist/members/index.js.map +1 -1
  176. package/dist/members/request.js +113 -68
  177. package/dist/members/request.js.map +1 -1
  178. package/dist/members/types.js +15 -0
  179. package/dist/members/types.js.map +1 -0
  180. package/dist/members/util.js +324 -259
  181. package/dist/members/util.js.map +1 -1
  182. package/dist/metrics/constants.js +19 -7
  183. package/dist/metrics/constants.js.map +1 -1
  184. package/dist/metrics/index.js +11 -558
  185. package/dist/metrics/index.js.map +1 -1
  186. package/dist/multistream/mediaRequestManager.js +263 -50
  187. package/dist/multistream/mediaRequestManager.js.map +1 -1
  188. package/dist/multistream/receiveSlot.js +58 -65
  189. package/dist/multistream/receiveSlot.js.map +1 -1
  190. package/dist/multistream/receiveSlotManager.js +76 -95
  191. package/dist/multistream/receiveSlotManager.js.map +1 -1
  192. package/dist/multistream/remoteMedia.js +62 -76
  193. package/dist/multistream/remoteMedia.js.map +1 -1
  194. package/dist/multistream/remoteMediaGroup.js +82 -45
  195. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  196. package/dist/multistream/remoteMediaManager.js +657 -448
  197. package/dist/multistream/remoteMediaManager.js.map +1 -1
  198. package/dist/multistream/sendSlotManager.js +255 -0
  199. package/dist/multistream/sendSlotManager.js.map +1 -0
  200. package/dist/networkQualityMonitor/index.js +40 -59
  201. package/dist/networkQualityMonitor/index.js.map +1 -1
  202. package/dist/personal-meeting-room/index.js +21 -45
  203. package/dist/personal-meeting-room/index.js.map +1 -1
  204. package/dist/personal-meeting-room/request.js +1 -31
  205. package/dist/personal-meeting-room/request.js.map +1 -1
  206. package/dist/personal-meeting-room/util.js +0 -13
  207. package/dist/personal-meeting-room/util.js.map +1 -1
  208. package/dist/reachability/clusterReachability.js +356 -0
  209. package/dist/reachability/clusterReachability.js.map +1 -0
  210. package/dist/reachability/index.js +297 -460
  211. package/dist/reachability/index.js.map +1 -1
  212. package/dist/reachability/request.js +20 -26
  213. package/dist/reachability/request.js.map +1 -1
  214. package/dist/reachability/util.js +29 -0
  215. package/dist/reachability/util.js.map +1 -0
  216. package/dist/reactions/constants.js +13 -0
  217. package/dist/reactions/constants.js.map +1 -0
  218. package/dist/reactions/reactions.js +109 -0
  219. package/dist/reactions/reactions.js.map +1 -0
  220. package/dist/reactions/reactions.type.js +36 -0
  221. package/dist/reactions/reactions.type.js.map +1 -0
  222. package/dist/reconnection-manager/index.js +413 -483
  223. package/dist/reconnection-manager/index.js.map +1 -1
  224. package/dist/recording-controller/enums.js +17 -0
  225. package/dist/recording-controller/enums.js.map +1 -0
  226. package/dist/recording-controller/index.js +362 -0
  227. package/dist/recording-controller/index.js.map +1 -0
  228. package/dist/recording-controller/util.js +64 -0
  229. package/dist/recording-controller/util.js.map +1 -0
  230. package/dist/roap/index.js +102 -86
  231. package/dist/roap/index.js.map +1 -1
  232. package/dist/roap/request.js +131 -135
  233. package/dist/roap/request.js.map +1 -1
  234. package/dist/roap/turnDiscovery.js +437 -116
  235. package/dist/roap/turnDiscovery.js.map +1 -1
  236. package/dist/rtcMetrics/constants.js +12 -0
  237. package/dist/rtcMetrics/constants.js.map +1 -0
  238. package/dist/rtcMetrics/index.js +179 -0
  239. package/dist/rtcMetrics/index.js.map +1 -0
  240. package/dist/statsAnalyzer/global.js +1 -95
  241. package/dist/statsAnalyzer/global.js.map +1 -1
  242. package/dist/statsAnalyzer/index.js +557 -583
  243. package/dist/statsAnalyzer/index.js.map +1 -1
  244. package/dist/statsAnalyzer/mqaUtil.js +326 -130
  245. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  246. package/dist/transcription/index.js +22 -47
  247. package/dist/transcription/index.js.map +1 -1
  248. package/dist/types/annotation/annotation.types.d.ts +42 -0
  249. package/dist/types/annotation/constants.d.ts +31 -0
  250. package/dist/types/annotation/index.d.ts +117 -0
  251. package/dist/types/breakouts/breakout.d.ts +8 -0
  252. package/dist/types/breakouts/collection.d.ts +5 -0
  253. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  254. package/dist/types/breakouts/events.d.ts +8 -0
  255. package/dist/types/breakouts/index.d.ts +5 -0
  256. package/dist/types/breakouts/request.d.ts +22 -0
  257. package/dist/types/breakouts/utils.d.ts +15 -0
  258. package/dist/types/common/browser-detection.d.ts +9 -0
  259. package/dist/types/common/collection.d.ts +48 -0
  260. package/dist/types/common/config.d.ts +2 -0
  261. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  262. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  263. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  264. package/dist/types/common/errors/media.d.ts +15 -0
  265. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  266. package/dist/types/common/errors/parameter.d.ts +15 -0
  267. package/dist/types/common/errors/password-error.d.ts +15 -0
  268. package/dist/types/common/errors/permission.d.ts +14 -0
  269. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  270. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  271. package/dist/types/common/errors/reconnection.d.ts +15 -0
  272. package/dist/types/common/errors/stats.d.ts +15 -0
  273. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  274. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  275. package/dist/types/common/events/events-scope.d.ts +17 -0
  276. package/dist/types/common/events/events.d.ts +12 -0
  277. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  278. package/dist/types/common/events/util.d.ts +2 -0
  279. package/dist/types/common/logs/logger-config.d.ts +2 -0
  280. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  281. package/dist/types/common/logs/request.d.ts +36 -0
  282. package/dist/types/common/queue.d.ts +34 -0
  283. package/dist/types/config.d.ts +72 -0
  284. package/dist/types/constants.d.ts +1088 -0
  285. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  286. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  287. package/dist/types/controls-options-manager/index.d.ts +136 -0
  288. package/dist/types/controls-options-manager/types.d.ts +43 -0
  289. package/dist/types/controls-options-manager/util.d.ts +1 -0
  290. package/dist/types/index.d.ts +7 -0
  291. package/dist/types/interceptors/index.d.ts +2 -0
  292. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  293. package/dist/types/interpretation/collection.d.ts +5 -0
  294. package/dist/types/interpretation/index.d.ts +5 -0
  295. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  296. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  297. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  298. package/dist/types/locus-info/fullState.d.ts +2 -0
  299. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  300. package/dist/types/locus-info/index.d.ts +322 -0
  301. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  302. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  303. package/dist/types/locus-info/parser.d.ts +272 -0
  304. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  305. package/dist/types/media/index.d.ts +34 -0
  306. package/dist/types/media/properties.d.ts +93 -0
  307. package/dist/types/media/util.d.ts +2 -0
  308. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  309. package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
  310. package/dist/types/meeting/index.d.ts +1824 -0
  311. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  312. package/dist/types/meeting/muteState.d.ts +178 -0
  313. package/dist/types/meeting/request.d.ts +293 -0
  314. package/dist/types/meeting/request.type.d.ts +11 -0
  315. package/dist/types/meeting/state.d.ts +9 -0
  316. package/dist/types/meeting/util.d.ts +118 -0
  317. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  318. package/dist/types/meeting-info/collection.d.ts +20 -0
  319. package/dist/types/meeting-info/index.d.ts +69 -0
  320. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  321. package/dist/types/meeting-info/request.d.ts +22 -0
  322. package/dist/types/meeting-info/util.d.ts +2 -0
  323. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  324. package/dist/types/meetings/collection.d.ts +40 -0
  325. package/dist/types/meetings/index.d.ts +389 -0
  326. package/dist/types/meetings/meetings.types.d.ts +4 -0
  327. package/dist/types/meetings/request.d.ts +27 -0
  328. package/dist/types/meetings/util.d.ts +18 -0
  329. package/dist/types/member/index.d.ts +160 -0
  330. package/dist/types/member/types.d.ts +32 -0
  331. package/dist/types/member/util.d.ts +2 -0
  332. package/dist/types/members/collection.d.ts +29 -0
  333. package/dist/types/members/index.d.ts +353 -0
  334. package/dist/types/members/request.d.ts +114 -0
  335. package/dist/types/members/types.d.ts +25 -0
  336. package/dist/types/members/util.d.ts +215 -0
  337. package/dist/types/metrics/constants.d.ts +70 -0
  338. package/dist/types/metrics/index.d.ts +45 -0
  339. package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
  340. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  341. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  342. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  343. package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
  344. package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
  345. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  346. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  347. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  348. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  349. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  350. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  351. package/dist/types/reachability/index.d.ts +105 -0
  352. package/dist/types/reachability/request.d.ts +39 -0
  353. package/dist/types/reachability/util.d.ts +8 -0
  354. package/dist/types/reactions/constants.d.ts +3 -0
  355. package/dist/types/reactions/reactions.d.ts +4 -0
  356. package/dist/types/reactions/reactions.type.d.ts +52 -0
  357. package/dist/types/reconnection-manager/index.d.ts +136 -0
  358. package/dist/types/recording-controller/enums.d.ts +7 -0
  359. package/dist/types/recording-controller/index.d.ts +207 -0
  360. package/dist/types/recording-controller/util.d.ts +14 -0
  361. package/dist/types/roap/index.d.ts +86 -0
  362. package/dist/types/roap/request.d.ts +39 -0
  363. package/dist/types/roap/turnDiscovery.d.ts +155 -0
  364. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  365. package/dist/types/rtcMetrics/index.d.ts +61 -0
  366. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  367. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  368. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  369. package/dist/types/transcription/index.d.ts +64 -0
  370. package/dist/types/webinar/collection.d.ts +16 -0
  371. package/dist/types/webinar/index.d.ts +5 -0
  372. package/dist/webinar/collection.js +44 -0
  373. package/dist/webinar/collection.js.map +1 -0
  374. package/dist/webinar/index.js +69 -0
  375. package/dist/webinar/index.js.map +1 -0
  376. package/internal-README.md +7 -6
  377. package/package.json +30 -21
  378. package/src/annotation/annotation.types.ts +50 -0
  379. package/src/annotation/constants.ts +36 -0
  380. package/src/annotation/index.ts +328 -0
  381. package/src/breakouts/README.md +220 -0
  382. package/src/breakouts/breakout.ts +188 -0
  383. package/src/breakouts/collection.ts +19 -0
  384. package/src/breakouts/edit-lock-error.ts +25 -0
  385. package/src/breakouts/events.ts +56 -0
  386. package/src/breakouts/index.ts +925 -0
  387. package/src/breakouts/request.ts +55 -0
  388. package/src/breakouts/utils.ts +57 -0
  389. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  390. package/src/common/collection.ts +9 -7
  391. package/src/common/{config.js → config.ts} +1 -1
  392. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  393. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  394. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  395. package/src/common/errors/{media.js → media.ts} +11 -7
  396. package/src/common/errors/no-meeting-info.ts +24 -0
  397. package/src/common/errors/parameter.ts +11 -7
  398. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  399. package/src/common/errors/{permission.js → permission.ts} +10 -6
  400. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  401. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  402. package/src/common/errors/{stats.js → stats.ts} +11 -7
  403. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  404. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  405. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  406. package/src/common/events/{events.js → events.ts} +5 -1
  407. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  408. package/src/common/events/{util.js → util.ts} +2 -3
  409. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  410. package/src/common/logs/logger-proxy.ts +44 -0
  411. package/src/common/logs/{request.js → request.ts} +26 -9
  412. package/src/common/queue.ts +22 -9
  413. package/src/{config.js → config.ts} +19 -21
  414. package/src/constants.ts +296 -27
  415. package/src/controls-options-manager/constants.ts +5 -0
  416. package/src/controls-options-manager/enums.ts +18 -0
  417. package/src/controls-options-manager/index.ts +278 -0
  418. package/src/controls-options-manager/types.ts +59 -0
  419. package/src/controls-options-manager/util.ts +300 -0
  420. package/src/index.ts +45 -0
  421. package/src/interceptors/index.ts +3 -0
  422. package/src/interceptors/locusRetry.ts +67 -0
  423. package/src/interpretation/README.md +60 -0
  424. package/src/interpretation/collection.ts +19 -0
  425. package/src/interpretation/index.ts +349 -0
  426. package/src/interpretation/siLanguage.ts +18 -0
  427. package/src/locus-info/controlsUtils.ts +222 -0
  428. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  429. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  430. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  431. package/src/locus-info/{index.js → index.ts} +561 -119
  432. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  433. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
  434. package/src/locus-info/{parser.js → parser.ts} +303 -104
  435. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  436. package/src/media/index.ts +460 -0
  437. package/src/media/properties.ts +283 -0
  438. package/src/media/{util.js → util.ts} +2 -2
  439. package/src/mediaQualityMetrics/config.ts +249 -0
  440. package/src/meeting/in-meeting-actions.ts +199 -3
  441. package/src/meeting/index.ts +8494 -0
  442. package/src/meeting/locusMediaRequest.ts +313 -0
  443. package/src/meeting/muteState.ts +465 -0
  444. package/src/meeting/request.ts +912 -0
  445. package/src/meeting/request.type.ts +13 -0
  446. package/src/meeting/{state.js → state.ts} +50 -35
  447. package/src/meeting/util.ts +799 -0
  448. package/src/meeting/voicea-meeting.ts +122 -0
  449. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  450. package/src/meeting-info/index.ts +210 -0
  451. package/src/meeting-info/meeting-info-v2.ts +423 -0
  452. package/src/meeting-info/{request.js → request.ts} +14 -4
  453. package/src/meeting-info/{util.js → util.ts} +70 -58
  454. package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
  455. package/src/meetings/collection.ts +76 -0
  456. package/src/meetings/index.ts +1539 -0
  457. package/src/meetings/meetings.types.ts +12 -0
  458. package/src/meetings/{request.js → request.ts} +34 -25
  459. package/src/meetings/{util.js → util.ts} +133 -38
  460. package/src/member/{index.js → index.ts} +159 -56
  461. package/src/member/types.ts +38 -0
  462. package/src/member/util.ts +397 -0
  463. package/src/members/{collection.js → collection.ts} +10 -2
  464. package/src/members/{index.js → index.ts} +351 -146
  465. package/src/members/request.ts +255 -0
  466. package/src/members/types.ts +29 -0
  467. package/src/members/util.ts +353 -0
  468. package/src/metrics/{constants.js → constants.ts} +17 -6
  469. package/src/metrics/index.ts +73 -0
  470. package/src/multistream/mediaRequestManager.ts +341 -64
  471. package/src/multistream/receiveSlot.ts +69 -26
  472. package/src/multistream/receiveSlotManager.ts +66 -42
  473. package/src/multistream/remoteMedia.ts +40 -5
  474. package/src/multistream/remoteMediaGroup.ts +82 -3
  475. package/src/multistream/remoteMediaManager.ts +401 -81
  476. package/src/multistream/sendSlotManager.ts +199 -0
  477. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  478. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  479. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  480. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  481. package/src/reachability/clusterReachability.ts +320 -0
  482. package/src/reachability/index.ts +371 -0
  483. package/src/reachability/request.ts +50 -35
  484. package/src/reachability/util.ts +24 -0
  485. package/src/reactions/constants.ts +4 -0
  486. package/src/reactions/reactions.ts +104 -0
  487. package/src/reactions/reactions.type.ts +62 -0
  488. package/src/reconnection-manager/index.ts +643 -0
  489. package/src/recording-controller/enums.ts +8 -0
  490. package/src/recording-controller/index.ts +332 -0
  491. package/src/recording-controller/util.ts +75 -0
  492. package/src/roap/index.ts +288 -0
  493. package/src/roap/request.ts +153 -0
  494. package/src/roap/turnDiscovery.ts +374 -70
  495. package/src/rtcMetrics/constants.ts +3 -0
  496. package/src/rtcMetrics/index.ts +166 -0
  497. package/src/statsAnalyzer/global.ts +37 -0
  498. package/src/statsAnalyzer/index.ts +1275 -0
  499. package/src/statsAnalyzer/mqaUtil.ts +440 -0
  500. package/src/transcription/{index.js → index.ts} +46 -39
  501. package/src/webinar/collection.ts +31 -0
  502. package/src/webinar/index.ts +62 -0
  503. package/test/integration/spec/converged-space-meetings.js +233 -0
  504. package/test/integration/spec/journey.js +791 -531
  505. package/test/integration/spec/space-meeting.js +391 -204
  506. package/test/integration/spec/transcription.js +7 -8
  507. package/test/unit/spec/annotation/index.ts +418 -0
  508. package/test/unit/spec/breakouts/breakout.ts +238 -0
  509. package/test/unit/spec/breakouts/collection.ts +15 -0
  510. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  511. package/test/unit/spec/breakouts/events.ts +89 -0
  512. package/test/unit/spec/breakouts/index.ts +1793 -0
  513. package/test/unit/spec/breakouts/request.ts +104 -0
  514. package/test/unit/spec/breakouts/utils.js +72 -0
  515. package/test/unit/spec/common/browser-detection.js +9 -28
  516. package/test/unit/spec/common/queue.js +31 -2
  517. package/test/unit/spec/controls-options-manager/index.js +287 -0
  518. package/test/unit/spec/controls-options-manager/util.js +582 -0
  519. package/test/unit/spec/fixture/locus.js +93 -90
  520. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  521. package/test/unit/spec/interpretation/collection.ts +15 -0
  522. package/test/unit/spec/interpretation/index.ts +625 -0
  523. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  524. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  525. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  526. package/test/unit/spec/locus-info/index.js +1458 -21
  527. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  528. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  529. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  530. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  531. package/test/unit/spec/locus-info/parser.js +119 -44
  532. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  533. package/test/unit/spec/locus-info/selfUtils.js +291 -12
  534. package/test/unit/spec/media/index.ts +194 -111
  535. package/test/unit/spec/media/properties.ts +11 -11
  536. package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
  537. package/test/unit/spec/meeting/index.js +8616 -1921
  538. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  539. package/test/unit/spec/meeting/muteState.js +568 -207
  540. package/test/unit/spec/meeting/request.js +602 -82
  541. package/test/unit/spec/meeting/utils.js +867 -179
  542. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  543. package/test/unit/spec/meeting-info/index.js +300 -0
  544. package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
  545. package/test/unit/spec/meeting-info/request.js +7 -9
  546. package/test/unit/spec/meeting-info/util.js +11 -12
  547. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  548. package/test/unit/spec/meetings/collection.js +27 -1
  549. package/test/unit/spec/meetings/index.js +1826 -374
  550. package/test/unit/spec/meetings/utils.js +243 -14
  551. package/test/unit/spec/member/index.js +61 -7
  552. package/test/unit/spec/member/util.js +526 -26
  553. package/test/unit/spec/members/index.js +536 -55
  554. package/test/unit/spec/members/request.js +228 -40
  555. package/test/unit/spec/members/utils.js +217 -4
  556. package/test/unit/spec/metrics/index.js +13 -68
  557. package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
  558. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  559. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  560. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  561. package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
  562. package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
  563. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  564. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  565. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  566. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  567. package/test/unit/spec/reachability/index.ts +606 -26
  568. package/test/unit/spec/reachability/request.js +68 -0
  569. package/test/unit/spec/reachability/util.ts +40 -0
  570. package/test/unit/spec/reconnection-manager/index.js +222 -34
  571. package/test/unit/spec/recording-controller/index.js +306 -0
  572. package/test/unit/spec/recording-controller/util.js +229 -0
  573. package/test/unit/spec/roap/index.ts +238 -82
  574. package/test/unit/spec/roap/request.ts +255 -0
  575. package/test/unit/spec/roap/turnDiscovery.ts +707 -110
  576. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  577. package/test/unit/spec/stats-analyzer/index.js +1331 -62
  578. package/test/unit/spec/webinar/collection.ts +13 -0
  579. package/test/unit/spec/webinar/index.ts +60 -0
  580. package/test/utils/cmr.js +44 -42
  581. package/test/utils/constants.js +9 -0
  582. package/test/utils/integrationTestUtils.js +46 -0
  583. package/test/utils/testUtils.js +63 -99
  584. package/test/utils/webex-config.js +22 -18
  585. package/test/utils/webex-test-users.js +65 -50
  586. package/tsconfig.json +6 -0
  587. package/dist/media/internal-media-core-wrapper.js +0 -22
  588. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  589. package/dist/meeting/effectsState.js +0 -327
  590. package/dist/meeting/effectsState.js.map +0 -1
  591. package/dist/metrics/config.js +0 -301
  592. package/dist/metrics/config.js.map +0 -1
  593. package/dist/multistream/multistreamMedia.js +0 -116
  594. package/dist/multistream/multistreamMedia.js.map +0 -1
  595. package/dist/peer-connection-manager/util.js +0 -124
  596. package/dist/peer-connection-manager/util.js.map +0 -1
  597. package/src/common/logs/logger-proxy.js +0 -33
  598. package/src/index.js +0 -15
  599. package/src/locus-info/controlsUtils.js +0 -102
  600. package/src/media/index.js +0 -459
  601. package/src/media/internal-media-core-wrapper.ts +0 -9
  602. package/src/media/properties.js +0 -289
  603. package/src/mediaQualityMetrics/config.js +0 -382
  604. package/src/meeting/effectsState.js +0 -205
  605. package/src/meeting/index.js +0 -6284
  606. package/src/meeting/muteState.js +0 -318
  607. package/src/meeting/request.js +0 -684
  608. package/src/meeting/util.js +0 -506
  609. package/src/meeting-info/index.js +0 -131
  610. package/src/meeting-info/meeting-info-v2.js +0 -255
  611. package/src/meetings/collection.js +0 -40
  612. package/src/meetings/index.js +0 -1015
  613. package/src/member/util.js +0 -254
  614. package/src/members/request.js +0 -131
  615. package/src/members/util.js +0 -258
  616. package/src/metrics/config.js +0 -324
  617. package/src/metrics/index.js +0 -530
  618. package/src/multistream/multistreamMedia.ts +0 -92
  619. package/src/peer-connection-manager/util.ts +0 -117
  620. package/src/reachability/index.js +0 -464
  621. package/src/reconnection-manager/index.js +0 -519
  622. package/src/roap/index.js +0 -220
  623. package/src/roap/request.js +0 -127
  624. package/src/statsAnalyzer/global.js +0 -133
  625. package/src/statsAnalyzer/index.js +0 -1006
  626. package/src/statsAnalyzer/mqaUtil.js +0 -173
  627. package/test/unit/spec/meeting/effectsState.js +0 -291
  628. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  629. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,47 +1,30 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
4
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
5
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
6
  _Object$defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
-
13
9
  exports.RemoteMediaEvents = exports.RemoteMedia = void 0;
14
10
  exports.getMaxFs = getMaxFs;
15
-
16
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
17
-
18
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
19
-
20
13
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
21
-
22
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
23
-
24
15
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
25
-
26
16
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
27
-
28
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
29
-
30
18
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
31
-
32
19
  var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
33
-
34
20
  var _receiveSlot = require("./receiveSlot");
35
-
36
21
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
37
-
38
22
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
-
40
23
  var RemoteMediaEvents = {
41
- SourceUpdate: _receiveSlot.ReceiveSlotEvents.SourceUpdate
24
+ SourceUpdate: _receiveSlot.ReceiveSlotEvents.SourceUpdate,
25
+ Stopped: 'stopped'
42
26
  };
43
27
  exports.RemoteMediaEvents = RemoteMediaEvents;
44
-
45
28
  // highest possible resolution
46
29
 
47
30
  /**
@@ -51,55 +34,42 @@ exports.RemoteMediaEvents = RemoteMediaEvents;
51
34
  */
52
35
  function getMaxFs(paneSize) {
53
36
  var maxFs;
54
-
55
37
  switch (paneSize) {
56
38
  case 'thumbnail':
57
39
  maxFs = 60;
58
40
  break;
59
-
60
41
  case 'very small':
61
42
  maxFs = 240;
62
43
  break;
63
-
64
44
  case 'small':
65
45
  maxFs = 920;
66
46
  break;
67
-
68
47
  case 'medium':
69
48
  maxFs = 3600;
70
49
  break;
71
-
72
50
  case 'large':
73
51
  maxFs = 8192;
74
52
  break;
75
-
76
53
  case 'best':
77
54
  maxFs = 8192; // for now 'best' is 1080p, so same as 'large'
78
-
79
55
  break;
80
-
81
56
  default:
82
57
  _loggerProxy.default.logger.warn("RemoteMedia#getMaxFs --> unsupported paneSize: ".concat(paneSize, ", using \"medium\" instead"));
83
-
84
58
  maxFs = 3600;
85
59
  }
86
-
87
60
  return maxFs;
88
61
  }
89
-
90
62
  var remoteMediaCounter = 0;
63
+
91
64
  /**
92
65
  * Class representing a remote audio/video stream.
93
66
  *
94
67
  * Internally it is associated with a specific receive slot
95
68
  * and a media request for it.
96
69
  */
97
-
98
70
  var RemoteMedia = /*#__PURE__*/function (_EventsScope) {
99
71
  (0, _inherits2.default)(RemoteMedia, _EventsScope);
100
-
101
72
  var _super = _createSuper(RemoteMedia);
102
-
103
73
  /**
104
74
  * Constructs RemoteMedia instance
105
75
  *
@@ -109,7 +79,6 @@ var RemoteMedia = /*#__PURE__*/function (_EventsScope) {
109
79
  */
110
80
  function RemoteMedia(receiveSlot, mediaRequestManager, options) {
111
81
  var _this;
112
-
113
82
  (0, _classCallCheck2.default)(this, RemoteMedia);
114
83
  _this = _super.call(this);
115
84
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receiveSlot", void 0);
@@ -121,32 +90,59 @@ var RemoteMedia = /*#__PURE__*/function (_EventsScope) {
121
90
  _this.receiveSlot = receiveSlot;
122
91
  _this.mediaRequestManager = mediaRequestManager;
123
92
  _this.options = options || {};
124
-
125
93
  _this.setupEventListeners();
126
-
127
94
  _this.id = "RM".concat(remoteMediaCounter, "-").concat(_this.receiveSlot.id);
128
95
  return _this;
129
96
  }
97
+
130
98
  /**
131
- * Invalidates the remote media by clearing the reference to a receive slot and
132
- * cancelling the media request.
133
- * After this call the remote media is unusable.
134
- *
135
- * @param {boolean} commit - whether to commit the cancellation of the media request
136
- * @internal
99
+ * Supply the width and height of the video element
100
+ * to restrict the requested resolution to this size
101
+ * @param width width of the video element
102
+ * @param height height of the video element
137
103
  */
138
-
139
-
140
104
  (0, _createClass2.default)(RemoteMedia, [{
141
- key: "stop",
142
- value: function stop() {
105
+ key: "setSizeHint",
106
+ value: function setSizeHint(width, height) {
143
107
  var _this$receiveSlot;
108
+ // only base on height for now
109
+ var fs;
110
+ if (height < 135) {
111
+ fs = 60;
112
+ } else if (height < 270) {
113
+ fs = 240;
114
+ } else if (height < 540) {
115
+ fs = 920;
116
+ } else if (height <= 720) {
117
+ fs = 3600;
118
+ } else {
119
+ fs = 8192;
120
+ }
121
+ (_this$receiveSlot = this.receiveSlot) === null || _this$receiveSlot === void 0 ? void 0 : _this$receiveSlot.setMaxFs(fs);
122
+ }
144
123
 
124
+ /**
125
+ * Invalidates the remote media by clearing the reference to a receive slot and
126
+ * cancelling the media request.
127
+ * After this call the remote media is unusable.
128
+ *
129
+ * @param {boolean} commit - whether to commit the cancellation of the media request
130
+ * @internal
131
+ */
132
+ }, {
133
+ key: "stop",
134
+ value: function stop() {
135
+ var _this$receiveSlot2;
145
136
  var commit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
146
137
  this.cancelMediaRequest(commit);
147
- (_this$receiveSlot = this.receiveSlot) === null || _this$receiveSlot === void 0 ? void 0 : _this$receiveSlot.removeAllListeners();
138
+ (_this$receiveSlot2 = this.receiveSlot) === null || _this$receiveSlot2 === void 0 ? void 0 : _this$receiveSlot2.removeAllListeners();
148
139
  this.receiveSlot = undefined;
140
+ this.emit({
141
+ file: 'multistream/remoteMedia',
142
+ function: 'stop'
143
+ }, RemoteMediaEvents.Stopped, {});
149
144
  }
145
+
150
146
  /**
151
147
  * Sends a new media request. This method can only be used for receiver-selected policy,
152
148
  * because only in that policy we have a 1-1 relationship between RemoteMedia and MediaRequest
@@ -156,18 +152,15 @@ var RemoteMedia = /*#__PURE__*/function (_EventsScope) {
156
152
  *
157
153
  * @internal
158
154
  */
159
-
160
155
  }, {
161
156
  key: "sendMediaRequest",
162
157
  value: function sendMediaRequest(csi, commit) {
163
158
  if (this.mediaRequestId) {
164
159
  this.cancelMediaRequest(false);
165
160
  }
166
-
167
161
  if (!this.receiveSlot) {
168
162
  throw new Error('sendMediaRequest() called on an invalidated RemoteMedia instance');
169
163
  }
170
-
171
164
  this.mediaRequestId = this.mediaRequestManager.addRequest({
172
165
  policyInfo: {
173
166
  policy: 'receiver-selected',
@@ -180,10 +173,10 @@ var RemoteMedia = /*#__PURE__*/function (_EventsScope) {
180
173
  }
181
174
  }, commit);
182
175
  }
176
+
183
177
  /**
184
178
  * @internal
185
179
  */
186
-
187
180
  }, {
188
181
  key: "cancelMediaRequest",
189
182
  value: function cancelMediaRequest(commit) {
@@ -192,18 +185,17 @@ var RemoteMedia = /*#__PURE__*/function (_EventsScope) {
192
185
  this.mediaRequestId = undefined;
193
186
  }
194
187
  }
188
+
195
189
  /**
196
190
  * registers event listeners on the receive slot and forwards all the events
197
191
  */
198
-
199
192
  }, {
200
193
  key: "setupEventListeners",
201
194
  value: function setupEventListeners() {
202
195
  var _this2 = this;
203
-
204
196
  if (this.receiveSlot) {
205
197
  var scope = {
206
- file: 'meeting/remoteMedia',
198
+ file: 'multistream/remoteMedia',
207
199
  function: 'setupEventListeners'
208
200
  };
209
201
  this.receiveSlot.on(_receiveSlot.ReceiveSlotEvents.SourceUpdate, function (data) {
@@ -211,66 +203,61 @@ var RemoteMedia = /*#__PURE__*/function (_EventsScope) {
211
203
  });
212
204
  }
213
205
  }
206
+
214
207
  /**
215
208
  * Getter for mediaType
216
209
  */
217
-
218
210
  }, {
219
211
  key: "mediaType",
220
212
  get: function get() {
221
- var _this$receiveSlot2;
222
-
223
- return (_this$receiveSlot2 = this.receiveSlot) === null || _this$receiveSlot2 === void 0 ? void 0 : _this$receiveSlot2.mediaType;
213
+ var _this$receiveSlot3;
214
+ return (_this$receiveSlot3 = this.receiveSlot) === null || _this$receiveSlot3 === void 0 ? void 0 : _this$receiveSlot3.mediaType;
224
215
  }
216
+
225
217
  /**
226
218
  * Getter for memberId
227
219
  */
228
-
229
220
  }, {
230
221
  key: "memberId",
231
222
  get: function get() {
232
- var _this$receiveSlot3;
233
-
234
- return (_this$receiveSlot3 = this.receiveSlot) === null || _this$receiveSlot3 === void 0 ? void 0 : _this$receiveSlot3.memberId;
223
+ var _this$receiveSlot4;
224
+ return (_this$receiveSlot4 = this.receiveSlot) === null || _this$receiveSlot4 === void 0 ? void 0 : _this$receiveSlot4.memberId;
235
225
  }
226
+
236
227
  /**
237
228
  * Getter for csi
238
229
  */
239
-
240
230
  }, {
241
231
  key: "csi",
242
232
  get: function get() {
243
- var _this$receiveSlot4;
244
-
245
- return (_this$receiveSlot4 = this.receiveSlot) === null || _this$receiveSlot4 === void 0 ? void 0 : _this$receiveSlot4.csi;
233
+ var _this$receiveSlot5;
234
+ return (_this$receiveSlot5 = this.receiveSlot) === null || _this$receiveSlot5 === void 0 ? void 0 : _this$receiveSlot5.csi;
246
235
  }
236
+
247
237
  /**
248
238
  * Getter for source state
249
239
  */
250
-
251
240
  }, {
252
241
  key: "sourceState",
253
242
  get: function get() {
254
- var _this$receiveSlot5;
255
-
256
- return (_this$receiveSlot5 = this.receiveSlot) === null || _this$receiveSlot5 === void 0 ? void 0 : _this$receiveSlot5.sourceState;
243
+ var _this$receiveSlot6;
244
+ return (_this$receiveSlot6 = this.receiveSlot) === null || _this$receiveSlot6 === void 0 ? void 0 : _this$receiveSlot6.sourceState;
257
245
  }
246
+
258
247
  /**
259
248
  * Getter for remote media stream
260
249
  */
261
-
262
250
  }, {
263
251
  key: "stream",
264
252
  get: function get() {
265
- var _this$receiveSlot6;
266
-
267
- return (_this$receiveSlot6 = this.receiveSlot) === null || _this$receiveSlot6 === void 0 ? void 0 : _this$receiveSlot6.stream;
253
+ var _this$receiveSlot7;
254
+ return (_this$receiveSlot7 = this.receiveSlot) === null || _this$receiveSlot7 === void 0 ? void 0 : _this$receiveSlot7.stream;
268
255
  }
256
+
269
257
  /**
270
258
  * @internal
271
259
  * @returns {ReceiveSlot}
272
260
  */
273
-
274
261
  }, {
275
262
  key: "getUnderlyingReceiveSlot",
276
263
  value: function getUnderlyingReceiveSlot() {
@@ -279,6 +266,5 @@ var RemoteMedia = /*#__PURE__*/function (_EventsScope) {
279
266
  }]);
280
267
  return RemoteMedia;
281
268
  }(_eventsScope.default);
282
-
283
269
  exports.RemoteMedia = RemoteMedia;
284
270
  //# sourceMappingURL=remoteMedia.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["RemoteMediaEvents","SourceUpdate","ReceiveSlotEvents","getMaxFs","paneSize","maxFs","LoggerProxy","logger","warn","remoteMediaCounter","RemoteMedia","receiveSlot","mediaRequestManager","options","setupEventListeners","id","commit","cancelMediaRequest","removeAllListeners","undefined","csi","mediaRequestId","Error","addRequest","policyInfo","policy","receiveSlots","codecInfo","resolution","codec","cancelRequest","scope","file","function","on","data","emit","mediaType","memberId","sourceState","stream","EventsScope"],"sources":["remoteMedia.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\n\nimport {MediaRequestId, MediaRequestManager} from './mediaRequestManager';\nimport {CSI, ReceiveSlot, ReceiveSlotEvents} from './receiveSlot';\n\nexport const RemoteMediaEvents = {\n SourceUpdate: ReceiveSlotEvents.SourceUpdate,\n};\n\nexport type RemoteVideoResolution =\n | 'thumbnail' // the smallest possible resolution, 90p or less\n | 'very small' // 180p or less\n | 'small' // 360p or less\n | 'medium' // 720p or less\n | 'large' // 1080p or less\n | 'best'; // highest possible resolution\n\n/**\n * Converts pane size into h264 maxFs\n * @param {PaneSize} paneSize\n * @returns {number}\n */\nexport function getMaxFs(paneSize: RemoteVideoResolution): number {\n let maxFs;\n\n switch (paneSize) {\n case 'thumbnail':\n maxFs = 60;\n break;\n case 'very small':\n maxFs = 240;\n break;\n case 'small':\n maxFs = 920;\n break;\n case 'medium':\n maxFs = 3600;\n break;\n case 'large':\n maxFs = 8192;\n break;\n case 'best':\n maxFs = 8192; // for now 'best' is 1080p, so same as 'large'\n break;\n default:\n LoggerProxy.logger.warn(\n `RemoteMedia#getMaxFs --> unsupported paneSize: ${paneSize}, using \"medium\" instead`\n );\n maxFs = 3600;\n }\n\n return maxFs;\n}\n\ntype Options = {\n resolution?: RemoteVideoResolution; // applies only to groups of type MC.MediaType.VideoMain and MC.MediaType.VideoSlides\n};\n\nexport type RemoteMediaId = string;\n\nlet remoteMediaCounter = 0;\n\n/**\n * Class representing a remote audio/video stream.\n *\n * Internally it is associated with a specific receive slot\n * and a media request for it.\n */\nexport class RemoteMedia extends EventsScope {\n private receiveSlot?: ReceiveSlot;\n\n private readonly mediaRequestManager: MediaRequestManager;\n\n private readonly options: Options;\n\n private mediaRequestId?: MediaRequestId;\n\n public readonly id: RemoteMediaId;\n\n /**\n * Constructs RemoteMedia instance\n *\n * @param receiveSlot\n * @param mediaRequestManager\n * @param options\n */\n constructor(\n receiveSlot: ReceiveSlot,\n mediaRequestManager: MediaRequestManager,\n options?: Options\n ) {\n super();\n remoteMediaCounter += 1;\n this.receiveSlot = receiveSlot;\n this.mediaRequestManager = mediaRequestManager;\n this.options = options || {};\n this.setupEventListeners();\n this.id = `RM${remoteMediaCounter}-${this.receiveSlot.id}`;\n }\n\n /**\n * Invalidates the remote media by clearing the reference to a receive slot and\n * cancelling the media request.\n * After this call the remote media is unusable.\n *\n * @param {boolean} commit - whether to commit the cancellation of the media request\n * @internal\n */\n public stop(commit: boolean = true) {\n this.cancelMediaRequest(commit);\n this.receiveSlot?.removeAllListeners();\n this.receiveSlot = undefined;\n }\n\n /**\n * Sends a new media request. This method can only be used for receiver-selected policy,\n * because only in that policy we have a 1-1 relationship between RemoteMedia and MediaRequest\n * and the request id is then stored in this RemoteMedia instance.\n * For active-speaker policy, the same request is shared among many RemoteMedia instances,\n * so it's managed through RemoteMediaGroup\n *\n * @internal\n */\n public sendMediaRequest(csi: CSI, commit: boolean) {\n if (this.mediaRequestId) {\n this.cancelMediaRequest(false);\n }\n\n if (!this.receiveSlot) {\n throw new Error('sendMediaRequest() called on an invalidated RemoteMedia instance');\n }\n\n this.mediaRequestId = this.mediaRequestManager.addRequest(\n {\n policyInfo: {\n policy: 'receiver-selected',\n csi,\n },\n receiveSlots: [this.receiveSlot],\n codecInfo: this.options.resolution && {\n codec: 'h264',\n maxFs: getMaxFs(this.options.resolution),\n },\n },\n commit\n );\n }\n\n /**\n * @internal\n */\n public cancelMediaRequest(commit: boolean) {\n if (this.mediaRequestId) {\n this.mediaRequestManager.cancelRequest(this.mediaRequestId, commit);\n this.mediaRequestId = undefined;\n }\n }\n\n /**\n * registers event listeners on the receive slot and forwards all the events\n */\n private setupEventListeners() {\n if (this.receiveSlot) {\n const scope = {\n file: 'meeting/remoteMedia',\n function: 'setupEventListeners',\n };\n\n this.receiveSlot.on(ReceiveSlotEvents.SourceUpdate, (data) => {\n this.emit(scope, RemoteMediaEvents.SourceUpdate, data);\n });\n }\n }\n\n /**\n * Getter for mediaType\n */\n public get mediaType() {\n return this.receiveSlot?.mediaType;\n }\n\n /**\n * Getter for memberId\n */\n public get memberId() {\n return this.receiveSlot?.memberId;\n }\n\n /**\n * Getter for csi\n */\n public get csi() {\n return this.receiveSlot?.csi;\n }\n\n /**\n * Getter for source state\n */\n public get sourceState() {\n return this.receiveSlot?.sourceState;\n }\n\n /**\n * Getter for remote media stream\n */\n public get stream() {\n return this.receiveSlot?.stream;\n }\n\n /**\n * @internal\n * @returns {ReceiveSlot}\n */\n public getUnderlyingReceiveSlot() {\n return this.receiveSlot;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["RemoteMediaEvents","SourceUpdate","ReceiveSlotEvents","Stopped","getMaxFs","paneSize","maxFs","LoggerProxy","logger","warn","remoteMediaCounter","RemoteMedia","receiveSlot","mediaRequestManager","options","setupEventListeners","id","width","height","fs","setMaxFs","commit","cancelMediaRequest","removeAllListeners","undefined","emit","file","function","csi","mediaRequestId","Error","addRequest","policyInfo","policy","receiveSlots","codecInfo","resolution","codec","cancelRequest","scope","on","data","mediaType","memberId","sourceState","stream","EventsScope"],"sources":["remoteMedia.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {MediaType, StreamState} from '@webex/internal-media-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\n\nimport {MediaRequestId, MediaRequestManager} from './mediaRequestManager';\nimport {CSI, ReceiveSlot, ReceiveSlotEvents} from './receiveSlot';\n\nexport const RemoteMediaEvents = {\n SourceUpdate: ReceiveSlotEvents.SourceUpdate,\n Stopped: 'stopped',\n};\n\nexport type RemoteVideoResolution =\n | 'thumbnail' // the smallest possible resolution, 90p or less\n | 'very small' // 180p or less\n | 'small' // 360p or less\n | 'medium' // 720p or less\n | 'large' // 1080p or less\n | 'best'; // highest possible resolution\n\n/**\n * Converts pane size into h264 maxFs\n * @param {PaneSize} paneSize\n * @returns {number}\n */\nexport function getMaxFs(paneSize: RemoteVideoResolution): number {\n let maxFs;\n\n switch (paneSize) {\n case 'thumbnail':\n maxFs = 60;\n break;\n case 'very small':\n maxFs = 240;\n break;\n case 'small':\n maxFs = 920;\n break;\n case 'medium':\n maxFs = 3600;\n break;\n case 'large':\n maxFs = 8192;\n break;\n case 'best':\n maxFs = 8192; // for now 'best' is 1080p, so same as 'large'\n break;\n default:\n LoggerProxy.logger.warn(\n `RemoteMedia#getMaxFs --> unsupported paneSize: ${paneSize}, using \"medium\" instead`\n );\n maxFs = 3600;\n }\n\n return maxFs;\n}\n\ntype Options = {\n resolution?: RemoteVideoResolution; // applies only to groups of type MediaType.VideoMain and MediaType.VideoSlides\n};\n\nexport type RemoteMediaId = string;\n\nlet remoteMediaCounter = 0;\n\n/**\n * Class representing a remote audio/video stream.\n *\n * Internally it is associated with a specific receive slot\n * and a media request for it.\n */\nexport class RemoteMedia extends EventsScope {\n private receiveSlot?: ReceiveSlot;\n\n private readonly mediaRequestManager: MediaRequestManager;\n\n private readonly options: Options;\n\n private mediaRequestId?: MediaRequestId;\n\n public readonly id: RemoteMediaId;\n\n /**\n * Constructs RemoteMedia instance\n *\n * @param receiveSlot\n * @param mediaRequestManager\n * @param options\n */\n constructor(\n receiveSlot: ReceiveSlot,\n mediaRequestManager: MediaRequestManager,\n options?: Options\n ) {\n super();\n remoteMediaCounter += 1;\n this.receiveSlot = receiveSlot;\n this.mediaRequestManager = mediaRequestManager;\n this.options = options || {};\n this.setupEventListeners();\n this.id = `RM${remoteMediaCounter}-${this.receiveSlot.id}`;\n }\n\n /**\n * Supply the width and height of the video element\n * to restrict the requested resolution to this size\n * @param width width of the video element\n * @param height height of the video element\n */\n public setSizeHint(width, height) {\n // only base on height for now\n let fs: number;\n\n if (height < 135) {\n fs = 60;\n } else if (height < 270) {\n fs = 240;\n } else if (height < 540) {\n fs = 920;\n } else if (height <= 720) {\n fs = 3600;\n } else {\n fs = 8192;\n }\n\n this.receiveSlot?.setMaxFs(fs);\n }\n\n /**\n * Invalidates the remote media by clearing the reference to a receive slot and\n * cancelling the media request.\n * After this call the remote media is unusable.\n *\n * @param {boolean} commit - whether to commit the cancellation of the media request\n * @internal\n */\n public stop(commit = true) {\n this.cancelMediaRequest(commit);\n this.receiveSlot?.removeAllListeners();\n this.receiveSlot = undefined;\n this.emit(\n {\n file: 'multistream/remoteMedia',\n function: 'stop',\n },\n RemoteMediaEvents.Stopped,\n {}\n );\n }\n\n /**\n * Sends a new media request. This method can only be used for receiver-selected policy,\n * because only in that policy we have a 1-1 relationship between RemoteMedia and MediaRequest\n * and the request id is then stored in this RemoteMedia instance.\n * For active-speaker policy, the same request is shared among many RemoteMedia instances,\n * so it's managed through RemoteMediaGroup\n *\n * @internal\n */\n public sendMediaRequest(csi: CSI, commit: boolean) {\n if (this.mediaRequestId) {\n this.cancelMediaRequest(false);\n }\n\n if (!this.receiveSlot) {\n throw new Error('sendMediaRequest() called on an invalidated RemoteMedia instance');\n }\n\n this.mediaRequestId = this.mediaRequestManager.addRequest(\n {\n policyInfo: {\n policy: 'receiver-selected',\n csi,\n },\n receiveSlots: [this.receiveSlot],\n codecInfo: this.options.resolution && {\n codec: 'h264',\n maxFs: getMaxFs(this.options.resolution),\n },\n },\n commit\n );\n }\n\n /**\n * @internal\n */\n public cancelMediaRequest(commit: boolean) {\n if (this.mediaRequestId) {\n this.mediaRequestManager.cancelRequest(this.mediaRequestId, commit);\n this.mediaRequestId = undefined;\n }\n }\n\n /**\n * registers event listeners on the receive slot and forwards all the events\n */\n private setupEventListeners() {\n if (this.receiveSlot) {\n const scope = {\n file: 'multistream/remoteMedia',\n function: 'setupEventListeners',\n };\n\n this.receiveSlot.on(ReceiveSlotEvents.SourceUpdate, (data) => {\n this.emit(scope, RemoteMediaEvents.SourceUpdate, data);\n });\n }\n }\n\n /**\n * Getter for mediaType\n */\n public get mediaType(): MediaType {\n return this.receiveSlot?.mediaType;\n }\n\n /**\n * Getter for memberId\n */\n public get memberId() {\n return this.receiveSlot?.memberId;\n }\n\n /**\n * Getter for csi\n */\n public get csi() {\n return this.receiveSlot?.csi;\n }\n\n /**\n * Getter for source state\n */\n public get sourceState(): StreamState {\n return this.receiveSlot?.sourceState;\n }\n\n /**\n * Getter for remote media stream\n */\n public get stream() {\n return this.receiveSlot?.stream;\n }\n\n /**\n * @internal\n * @returns {ReceiveSlot}\n */\n public getUnderlyingReceiveSlot() {\n return this.receiveSlot;\n }\n}\n"],"mappings":"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"}
@@ -1,37 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.RemoteMediaGroup = void 0;
12
-
13
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
14
-
15
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
16
-
17
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
18
-
19
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
20
-
13
+ var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
21
14
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
22
-
23
15
  var _remoteMedia = require("./remoteMedia");
24
-
25
- /* eslint-disable valid-jsdoc */
26
-
27
- /* eslint-disable require-jsdoc */
28
-
29
- /* eslint-disable import/prefer-default-export */
30
16
  var RemoteMediaGroup = /*#__PURE__*/function () {
31
17
  // id of the "active-speaker" media request id
18
+
32
19
  function RemoteMediaGroup(mediaRequestManager, receiveSlots, priority, commitMediaRequest) {
33
20
  var _this = this;
34
-
35
21
  var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
36
22
  (0, _classCallCheck2.default)(this, RemoteMediaGroup);
37
23
  (0, _defineProperty2.default)(this, "mediaRequestManager", void 0);
@@ -51,91 +37,123 @@ var RemoteMediaGroup = /*#__PURE__*/function () {
51
37
  this.pinnedRemoteMedia = [];
52
38
  this.sendActiveSpeakerMediaRequest(commitMediaRequest);
53
39
  }
40
+
54
41
  /**
55
42
  * Gets the array of remote media elements from the group
56
43
  *
57
44
  * @param {string} filter - 'all' (default) returns both pinned and unpinned
58
45
  * @returns {Array<RemoteMedia>}
59
46
  */
60
-
61
-
62
47
  (0, _createClass2.default)(RemoteMediaGroup, [{
63
48
  key: "getRemoteMedia",
64
49
  value: function getRemoteMedia() {
65
50
  var filter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'all';
66
-
67
51
  if (filter === 'unpinned') {
68
52
  // return a shallow copy so that the client cannot modify this.unpinnedRemoteMedia array
69
53
  return (0, _toConsumableArray2.default)(this.unpinnedRemoteMedia);
70
54
  }
71
-
72
55
  if (filter === 'pinned') {
73
56
  // return a shallow copy so that the client cannot modify this.pinnedRemoteMedia array
74
57
  return (0, _toConsumableArray2.default)(this.pinnedRemoteMedia);
75
58
  }
76
-
77
59
  return [].concat((0, _toConsumableArray2.default)(this.unpinnedRemoteMedia), (0, _toConsumableArray2.default)(this.pinnedRemoteMedia));
78
60
  }
61
+
62
+ /**
63
+ * Sets CSIs for multiple RemoteMedia instances belonging to this RemoteMediaGroup.
64
+ * For each entry in the remoteMediaCsis array:
65
+ * - if csi is specified, the RemoteMedia instance is pinned to that CSI
66
+ * - if csi is undefined, the RemoteMedia instance is unpinned
67
+ * @internal
68
+ */
69
+ }, {
70
+ key: "setActiveSpeakerCsis",
71
+ value: function setActiveSpeakerCsis(remoteMediaCsis) {
72
+ var _this2 = this;
73
+ var commit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
74
+ (0, _forEach2.default)(remoteMediaCsis, function (_ref) {
75
+ var csi = _ref.csi,
76
+ remoteMedia = _ref.remoteMedia;
77
+ if (csi) {
78
+ if (!(_this2.pinnedRemoteMedia.indexOf(remoteMedia) >= 0)) {
79
+ var unpinId = _this2.unpinnedRemoteMedia.indexOf(remoteMedia);
80
+ if (unpinId >= 0) {
81
+ _this2.unpinnedRemoteMedia.splice(unpinId, 1);
82
+ _this2.pinnedRemoteMedia.push(remoteMedia);
83
+ } else {
84
+ throw new Error("failed to pin a remote media object ".concat(remoteMedia.id, ", because it is not found in this remote media group"));
85
+ }
86
+ }
87
+ remoteMedia.sendMediaRequest(csi, false);
88
+ } else {
89
+ if (!(_this2.unpinnedRemoteMedia.indexOf(remoteMedia) >= 0)) {
90
+ var pinId = _this2.pinnedRemoteMedia.indexOf(remoteMedia);
91
+ if (pinId >= 0) {
92
+ _this2.pinnedRemoteMedia.splice(pinId, 1);
93
+ _this2.unpinnedRemoteMedia.push(remoteMedia);
94
+ } else {
95
+ throw new Error("failed to unpin a remote media object ".concat(remoteMedia.id, ", because it is not found in this remote media group"));
96
+ }
97
+ }
98
+ remoteMedia.cancelMediaRequest(false);
99
+ }
100
+ });
101
+ this.cancelActiveSpeakerMediaRequest(false);
102
+ this.sendActiveSpeakerMediaRequest(false);
103
+ if (commit) {
104
+ this.mediaRequestManager.commit();
105
+ }
106
+ }
107
+
79
108
  /**
80
109
  * Pins a specific remote media instance to a specfic CSI, so the media will
81
110
  * no longer come from active speaker, but from that CSI.
82
111
  * If no CSI is given, the current CSI value is used.
83
112
  *
84
113
  */
85
-
86
114
  }, {
87
115
  key: "pin",
88
116
  value: function pin(remoteMedia, csi) {
89
117
  // if csi is not specified, use the current one
90
118
  var targetCsi = csi || remoteMedia.csi;
91
-
92
119
  if (!targetCsi) {
93
120
  throw new Error("failed to pin a remote media object ".concat(remoteMedia.id, ", because it has no CSI set and no CSI value was given"));
94
121
  }
95
-
96
122
  if (this.pinnedRemoteMedia.indexOf(remoteMedia) >= 0) {
97
123
  if (targetCsi === remoteMedia.csi) {
98
124
  // remote media already pinned to target CSI, nothing to do
99
125
  _loggerProxy.default.logger.log("RemoteMediaGroup#pin --> remote media ".concat(remoteMedia.id, " already pinned"));
100
-
101
126
  return;
102
127
  }
103
128
  } else {
104
129
  var idx = this.unpinnedRemoteMedia.indexOf(remoteMedia);
105
-
106
130
  if (idx < 0) {
107
131
  throw new Error("failed to pin a remote media object ".concat(remoteMedia.id, ", because it is not found in this remote media group"));
108
132
  }
109
-
110
133
  this.unpinnedRemoteMedia.splice(idx, 1);
111
134
  this.pinnedRemoteMedia.push(remoteMedia);
112
135
  this.cancelActiveSpeakerMediaRequest(false);
113
136
  this.sendActiveSpeakerMediaRequest(false);
114
137
  }
115
-
116
138
  remoteMedia.sendMediaRequest(targetCsi, false);
117
139
  this.mediaRequestManager.commit();
118
140
  }
141
+
119
142
  /**
120
143
  * Unpins a remote media instance, so that it will again provide media from active speakers
121
144
  *
122
145
  */
123
-
124
146
  }, {
125
147
  key: "unpin",
126
148
  value: function unpin(remoteMedia) {
127
149
  if (this.unpinnedRemoteMedia.indexOf(remoteMedia) >= 0) {
128
150
  _loggerProxy.default.logger.log("RemoteMediaGroup#pin --> remote media ".concat(remoteMedia.id, " already unpinned"));
129
-
130
151
  return;
131
152
  }
132
-
133
153
  var idx = this.pinnedRemoteMedia.indexOf(remoteMedia);
134
-
135
154
  if (idx < 0) {
136
155
  throw new Error("failed to unpin a remote media object ".concat(remoteMedia.id, ", because it is not found in this remote media group"));
137
156
  }
138
-
139
157
  this.pinnedRemoteMedia.splice(idx, 1);
140
158
  this.unpinnedRemoteMedia.push(remoteMedia);
141
159
  remoteMedia.cancelMediaRequest(false);
@@ -149,18 +167,28 @@ var RemoteMediaGroup = /*#__PURE__*/function () {
149
167
  if (this.unpinnedRemoteMedia.indexOf(remoteMedia) >= 0) {
150
168
  return false;
151
169
  }
152
-
153
170
  if (this.pinnedRemoteMedia.indexOf(remoteMedia) >= 0) {
154
171
  return true;
155
172
  }
156
-
157
173
  throw new Error("remote media object ".concat(remoteMedia.id, " not found in the group"));
158
174
  }
175
+
176
+ /**
177
+ * setPreferLiveVideo - sets preferLiveVideo to true/false
178
+ * @internal
179
+ */
180
+ }, {
181
+ key: "setPreferLiveVideo",
182
+ value: function setPreferLiveVideo(preferLiveVideo, commit) {
183
+ if (this.options.preferLiveVideo !== preferLiveVideo) {
184
+ this.options.preferLiveVideo = preferLiveVideo;
185
+ this.sendActiveSpeakerMediaRequest(commit);
186
+ }
187
+ }
159
188
  }, {
160
189
  key: "sendActiveSpeakerMediaRequest",
161
190
  value: function sendActiveSpeakerMediaRequest(commit) {
162
- var _this$options;
163
-
191
+ var _this$options, _this$options$namedMe, _this$options2;
164
192
  this.cancelActiveSpeakerMediaRequest(false);
165
193
  this.mediaRequestId = this.mediaRequestManager.addRequest({
166
194
  policyInfo: {
@@ -168,7 +196,8 @@ var RemoteMediaGroup = /*#__PURE__*/function () {
168
196
  priority: this.priority,
169
197
  crossPriorityDuplication: false,
170
198
  crossPolicyDuplication: false,
171
- preferLiveVideo: !!((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.preferLiveVideo)
199
+ preferLiveVideo: !!((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.preferLiveVideo),
200
+ namedMediaGroups: (_this$options$namedMe = this.options.namedMediaGroup) !== null && _this$options$namedMe !== void 0 && _this$options$namedMe.value ? [(_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.namedMediaGroup] : undefined
172
201
  },
173
202
  receiveSlots: this.unpinnedRemoteMedia.map(function (remoteMedia) {
174
203
  return remoteMedia.getUnderlyingReceiveSlot();
@@ -187,6 +216,20 @@ var RemoteMediaGroup = /*#__PURE__*/function () {
187
216
  this.mediaRequestId = undefined;
188
217
  }
189
218
  }
219
+
220
+ /**
221
+ * setNamedMediaGroup - sets named media group type and value
222
+ * @internal
223
+ */
224
+ }, {
225
+ key: "setNamedMediaGroup",
226
+ value: function setNamedMediaGroup(namedMediaGroup, commit) {
227
+ if (this.options.namedMediaGroup.value !== namedMediaGroup.value || this.options.namedMediaGroup.type !== namedMediaGroup.type) {
228
+ this.options.namedMediaGroup = namedMediaGroup;
229
+ this.sendActiveSpeakerMediaRequest(commit);
230
+ }
231
+ }
232
+
190
233
  /**
191
234
  * Invalidates the remote media group by clearing the references to the receive slots
192
235
  * used by all remote media from that group and cancelling all media requests.
@@ -195,7 +238,6 @@ var RemoteMediaGroup = /*#__PURE__*/function () {
195
238
  * @param{boolean} commit whether to commit the cancellation of media requests
196
239
  * @internal
197
240
  */
198
-
199
241
  }, {
200
242
  key: "stop",
201
243
  value: function stop() {
@@ -207,11 +249,11 @@ var RemoteMediaGroup = /*#__PURE__*/function () {
207
249
  return remoteMedia.stop(false);
208
250
  });
209
251
  this.cancelActiveSpeakerMediaRequest(false);
210
-
211
252
  if (commit) {
212
253
  this.mediaRequestManager.commit();
213
254
  }
214
255
  }
256
+
215
257
  /**
216
258
  * Checks if a given RemoteMedia instance belongs to this group.
217
259
  *
@@ -219,25 +261,20 @@ var RemoteMediaGroup = /*#__PURE__*/function () {
219
261
  * @param filter controls which remote media from the group to check
220
262
  * @returns true if remote media is found
221
263
  */
222
-
223
264
  }, {
224
265
  key: "includes",
225
266
  value: function includes(remoteMedia) {
226
267
  var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';
227
-
228
268
  if (filter === 'pinned') {
229
269
  return this.pinnedRemoteMedia.includes(remoteMedia);
230
270
  }
231
-
232
271
  if (filter === 'unpinned') {
233
272
  return this.unpinnedRemoteMedia.includes(remoteMedia);
234
273
  }
235
-
236
274
  return this.unpinnedRemoteMedia.includes(remoteMedia) || this.pinnedRemoteMedia.includes(remoteMedia);
237
275
  }
238
276
  }]);
239
277
  return RemoteMediaGroup;
240
278
  }();
241
-
242
279
  exports.RemoteMediaGroup = RemoteMediaGroup;
243
280
  //# sourceMappingURL=remoteMediaGroup.js.map