@webex/plugin-meetings 2.60.0-next.9 → 2.60.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/README.md +8 -46
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -5
  54. package/dist/config.js +11 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +97 -217
  57. package/dist/constants.js +441 -416
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +4 -116
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +494 -591
  111. package/dist/meeting/index.js +2969 -4707
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -297
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -102
  122. package/dist/meeting/util.js +435 -605
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +21 -103
  142. package/dist/meetings/index.js +124 -486
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +7 -62
  193. package/dist/reachability/index.js +72 -265
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +231 -282
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +235 -101
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -28
  240. package/dist/statsAnalyzer/index.js +509 -374
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +83 -116
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -35
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -5
  253. package/src/constants.ts +97 -244
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -449
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2482 -3929
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -207
  273. package/src/meeting/util.ts +423 -590
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +126 -486
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +45 -238
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -98
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +642 -413
  310. package/src/statsAnalyzer/mqaUtil.ts +114 -111
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1389
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +3136 -8547
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +42 -512
  330. package/test/unit/spec/meeting/utils.js +24 -741
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +211 -1278
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -598
  347. package/test/unit/spec/reconnection-manager/index.js +24 -162
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +76 -200
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +174 -188
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interpretation/collection.d.ts +0 -5
  395. package/dist/interpretation/collection.js +0 -22
  396. package/dist/interpretation/collection.js.map +0 -1
  397. package/dist/interpretation/index.d.ts +0 -5
  398. package/dist/interpretation/index.js +0 -365
  399. package/dist/interpretation/index.js.map +0 -1
  400. package/dist/interpretation/siLanguage.d.ts +0 -5
  401. package/dist/interpretation/siLanguage.js +0 -24
  402. package/dist/interpretation/siLanguage.js.map +0 -1
  403. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  404. package/dist/meeting/locusMediaRequest.js +0 -291
  405. package/dist/meeting/locusMediaRequest.js.map +0 -1
  406. package/dist/meeting/request.type.d.ts +0 -11
  407. package/dist/meeting/request.type.js +0 -7
  408. package/dist/meeting/request.type.js.map +0 -1
  409. package/dist/meetings/meetings.types.d.ts +0 -4
  410. package/dist/meetings/meetings.types.js +0 -7
  411. package/dist/meetings/meetings.types.js.map +0 -1
  412. package/dist/member/types.d.ts +0 -32
  413. package/dist/member/types.js +0 -23
  414. package/dist/member/types.js.map +0 -1
  415. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  416. package/dist/multistream/mediaRequestManager.js +0 -344
  417. package/dist/multistream/mediaRequestManager.js.map +0 -1
  418. package/dist/multistream/receiveSlot.d.ts +0 -68
  419. package/dist/multistream/receiveSlot.js +0 -200
  420. package/dist/multistream/receiveSlot.js.map +0 -1
  421. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  422. package/dist/multistream/receiveSlotManager.js +0 -174
  423. package/dist/multistream/receiveSlotManager.js.map +0 -1
  424. package/dist/multistream/remoteMedia.d.ts +0 -72
  425. package/dist/multistream/remoteMedia.js +0 -268
  426. package/dist/multistream/remoteMedia.js.map +0 -1
  427. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  428. package/dist/multistream/remoteMediaGroup.js +0 -267
  429. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  430. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  431. package/dist/multistream/remoteMediaManager.js +0 -1211
  432. package/dist/multistream/remoteMediaManager.js.map +0 -1
  433. package/dist/multistream/sendSlotManager.d.ts +0 -61
  434. package/dist/multistream/sendSlotManager.js +0 -236
  435. package/dist/multistream/sendSlotManager.js.map +0 -1
  436. package/dist/reactions/constants.d.ts +0 -3
  437. package/dist/reactions/constants.js +0 -12
  438. package/dist/reactions/constants.js.map +0 -1
  439. package/dist/rtcMetrics/constants.d.ts +0 -4
  440. package/dist/rtcMetrics/constants.js +0 -11
  441. package/dist/rtcMetrics/constants.js.map +0 -1
  442. package/dist/rtcMetrics/index.d.ts +0 -54
  443. package/dist/rtcMetrics/index.js +0 -140
  444. package/dist/rtcMetrics/index.js.map +0 -1
  445. package/dist/webinar/collection.d.ts +0 -16
  446. package/dist/webinar/collection.js +0 -43
  447. package/dist/webinar/collection.js.map +0 -1
  448. package/dist/webinar/index.d.ts +0 -5
  449. package/dist/webinar/index.js +0 -68
  450. package/dist/webinar/index.js.map +0 -1
  451. package/src/annotation/annotation.types.ts +0 -50
  452. package/src/annotation/constants.ts +0 -36
  453. package/src/annotation/index.ts +0 -328
  454. package/src/breakouts/README.md +0 -220
  455. package/src/breakouts/breakout.ts +0 -188
  456. package/src/breakouts/collection.ts +0 -19
  457. package/src/breakouts/edit-lock-error.ts +0 -25
  458. package/src/breakouts/events.ts +0 -56
  459. package/src/breakouts/index.ts +0 -925
  460. package/src/breakouts/request.ts +0 -55
  461. package/src/breakouts/utils.ts +0 -57
  462. package/src/common/errors/no-meeting-info.ts +0 -24
  463. package/src/controls-options-manager/types.ts +0 -59
  464. package/src/index.ts +0 -40
  465. package/src/interpretation/README.md +0 -60
  466. package/src/interpretation/collection.ts +0 -19
  467. package/src/interpretation/index.ts +0 -332
  468. package/src/interpretation/siLanguage.ts +0 -18
  469. package/src/meeting/locusMediaRequest.ts +0 -313
  470. package/src/meeting/request.type.ts +0 -13
  471. package/src/meetings/meetings.types.ts +0 -12
  472. package/src/member/types.ts +0 -38
  473. package/src/multistream/mediaRequestManager.ts +0 -440
  474. package/src/multistream/receiveSlot.ts +0 -184
  475. package/src/multistream/receiveSlotManager.ts +0 -166
  476. package/src/multistream/remoteMedia.ts +0 -254
  477. package/src/multistream/remoteMediaGroup.ts +0 -284
  478. package/src/multistream/remoteMediaManager.ts +0 -1145
  479. package/src/multistream/sendSlotManager.ts +0 -170
  480. package/src/reactions/constants.ts +0 -4
  481. package/src/rtcMetrics/constants.ts +0 -3
  482. package/src/rtcMetrics/index.ts +0 -124
  483. package/src/webinar/collection.ts +0 -31
  484. package/src/webinar/index.ts +0 -62
  485. package/test/integration/spec/converged-space-meetings.js +0 -233
  486. package/test/unit/spec/annotation/index.ts +0 -418
  487. package/test/unit/spec/breakouts/breakout.ts +0 -237
  488. package/test/unit/spec/breakouts/collection.ts +0 -15
  489. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  490. package/test/unit/spec/breakouts/events.ts +0 -89
  491. package/test/unit/spec/breakouts/index.ts +0 -1790
  492. package/test/unit/spec/breakouts/request.ts +0 -104
  493. package/test/unit/spec/breakouts/utils.js +0 -72
  494. package/test/unit/spec/interpretation/collection.ts +0 -15
  495. package/test/unit/spec/interpretation/index.ts +0 -589
  496. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  497. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  498. package/test/unit/spec/media/index.ts +0 -290
  499. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  500. package/test/unit/spec/meeting-info/index.js +0 -300
  501. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  502. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  503. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  504. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  505. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  506. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  507. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  508. package/test/unit/spec/reachability/request.js +0 -68
  509. package/test/unit/spec/roap/request.ts +0 -232
  510. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  511. package/test/unit/spec/webinar/collection.ts +0 -13
  512. package/test/unit/spec/webinar/index.ts +0 -60
  513. package/test/utils/constants.js +0 -9
  514. package/test/utils/integrationTestUtils.js +0 -46
  515. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  516. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -1,1211 +0,0 @@
1
- "use strict";
2
-
3
- var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
5
- var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
- _Object$defineProperty(exports, "__esModule", {
7
- value: true
8
- });
9
- exports.RemoteMediaManager = exports.Event = exports.DefaultConfiguration = void 0;
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
11
- var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
12
- var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
13
- var _entries = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/entries"));
14
- var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
15
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
16
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
17
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
18
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
19
- var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
20
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
21
- var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
22
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
23
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
25
- var _lodash = require("lodash");
26
- var _internalMediaCore = require("@webex/internal-media-core");
27
- var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
28
- var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
29
- var _remoteMedia = require("./remoteMedia");
30
- var _remoteMediaGroup = require("./remoteMediaGroup");
31
- 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); }; }
32
- 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; } } /* eslint-disable valid-jsdoc */
33
- /* Predefined layouts: */ // An "all equal" grid, with size up to 3 x 3 = 9:
34
- var AllEqualLayout = {
35
- activeSpeakerVideoPaneGroups: [{
36
- id: 'main',
37
- numPanes: 9,
38
- size: 'best',
39
- priority: 255
40
- }]
41
- };
42
-
43
- // A layout with just a single remote active speaker video pane:
44
- var SingleLayout = {
45
- activeSpeakerVideoPaneGroups: [{
46
- id: 'main',
47
- numPanes: 1,
48
- size: 'best',
49
- priority: 255
50
- }]
51
- };
52
-
53
- // A layout with 1 big pane for the highest priority active speaker and 5 small panes for other active speakers:
54
- var OnePlusFiveLayout = {
55
- activeSpeakerVideoPaneGroups: [{
56
- id: 'mainBigOne',
57
- numPanes: 1,
58
- size: 'large',
59
- priority: 255
60
- }, {
61
- id: 'secondarySetOfSmallPanes',
62
- numPanes: 5,
63
- size: 'very small',
64
- priority: 254
65
- }]
66
- };
67
-
68
- // A layout with 2 big panes for 2 main active speakers and a strip of 6 small panes for other active speakers:
69
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
70
- var TwoMainPlusSixSmallLayout = {
71
- activeSpeakerVideoPaneGroups: [{
72
- id: 'mainGroupWith2BigPanes',
73
- numPanes: 2,
74
- size: 'large',
75
- priority: 255
76
- }, {
77
- id: 'secondaryGroupOfSmallPanes',
78
- numPanes: 6,
79
- size: 'small',
80
- priority: 254
81
- }]
82
- };
83
-
84
- // A strip of 8 small video panes (thumbnails) displayed at the top of a remote screenshare:
85
- var RemoteScreenShareWithSmallThumbnailsLayout = {
86
- screenShareVideo: {
87
- size: 'best'
88
- },
89
- activeSpeakerVideoPaneGroups: [{
90
- id: 'thumbnails',
91
- numPanes: 8,
92
- size: 'thumbnail',
93
- priority: 255
94
- }]
95
- };
96
-
97
- // A staged layout with 4 pre-selected meeting participants in the main 2x2 grid and 6 small panes for other active speakers at the top:
98
- var Stage2x2With6ThumbnailsLayout = {
99
- activeSpeakerVideoPaneGroups: [{
100
- id: 'thumbnails',
101
- numPanes: 6,
102
- size: 'thumbnail',
103
- priority: 255
104
- }],
105
- memberVideoPanes: [{
106
- id: 'stage-1',
107
- size: 'medium',
108
- csi: undefined
109
- }, {
110
- id: 'stage-2',
111
- size: 'medium',
112
- csi: undefined
113
- }, {
114
- id: 'stage-3',
115
- size: 'medium',
116
- csi: undefined
117
- }, {
118
- id: 'stage-4',
119
- size: 'medium',
120
- csi: undefined
121
- }]
122
- };
123
-
124
- /**
125
- * Default configuration:
126
- * - uses 3 audio streams
127
- * - prefers active speakers with live video (e.g. are not audio only or video muted) over active speakers without live video
128
- * - has a few layouts defined, including 1 that contains remote screen share (ScreenShareView)
129
- */
130
- var DefaultConfiguration = exports.DefaultConfiguration = {
131
- audio: {
132
- numOfActiveSpeakerStreams: 3,
133
- numOfScreenShareStreams: 1
134
- },
135
- video: {
136
- preferLiveVideo: true,
137
- initialLayoutId: 'AllEqual',
138
- layouts: {
139
- AllEqual: AllEqualLayout,
140
- OnePlusFive: OnePlusFiveLayout,
141
- Single: SingleLayout,
142
- Stage: Stage2x2With6ThumbnailsLayout,
143
- ScreenShareView: RemoteScreenShareWithSmallThumbnailsLayout
144
- }
145
- }
146
- };
147
- var Event = exports.Event = /*#__PURE__*/function (Event) {
148
- Event["AudioCreated"] = "AudioCreated";
149
- Event["ScreenShareAudioCreated"] = "ScreenShareAudioCreated";
150
- Event["VideoLayoutChanged"] = "VideoLayoutChanged";
151
- return Event;
152
- }({});
153
- /**
154
- * A helper class that manages all remote audio/video streams in order to achieve a predefined set of layouts.
155
- * It also creates a fixed number of audio streams and these don't change during the meeting.
156
- *
157
- * Things that RemoteMediaManager does:
158
- * - owns the receive slots (creates them when needed, and re-uses them when switching layouts)
159
- * - constructs appropriate RemoteMedia and RemoteMediaGroup objects and sends appropriate mediaRequests
160
- */
161
- var RemoteMediaManager = exports.RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
162
- (0, _inherits2.default)(RemoteMediaManager, _EventsScope);
163
- var _super = _createSuper(RemoteMediaManager);
164
- /**
165
- * Constructor
166
- *
167
- * @param {ReceiveSlotManager} receiveSlotManager
168
- * @param {{audio: MediaRequestManager, video: mediaRequestManagers}} mediaRequestManagers
169
- * @param {Configuration} config Configuration describing what video layouts to use during the meeting
170
- */
171
- function RemoteMediaManager(receiveSlotManager, mediaRequestManagers) {
172
- var _this;
173
- var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DefaultConfiguration;
174
- (0, _classCallCheck2.default)(this, RemoteMediaManager);
175
- _this = _super.call(this);
176
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "config", void 0);
177
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "started", void 0);
178
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receiveSlotManager", void 0);
179
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaRequestManagers", void 0);
180
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "currentLayout", void 0);
181
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "slots", void 0);
182
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "media", void 0);
183
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receiveSlotAllocations", void 0);
184
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "currentLayoutId", void 0);
185
- _this.started = false;
186
- _this.config = config;
187
- _this.receiveSlotManager = receiveSlotManager;
188
- _this.mediaRequestManagers = mediaRequestManagers;
189
- _this.media = {
190
- audio: undefined,
191
- video: {
192
- activeSpeakerGroups: {},
193
- memberPanes: {}
194
- },
195
- screenShare: {
196
- audio: undefined,
197
- video: undefined
198
- }
199
- };
200
- _this.checkConfigValidity();
201
- _this.slots = {
202
- audio: [],
203
- screenShare: {
204
- audio: [],
205
- video: undefined
206
- },
207
- video: {
208
- unused: [],
209
- activeSpeaker: [],
210
- receiverSelected: []
211
- }
212
- };
213
- _this.receiveSlotAllocations = {
214
- activeSpeaker: {},
215
- receiverSelected: {}
216
- };
217
- _loggerProxy.default.logger.log("RemoteMediaManager#constructor --> RemoteMediaManager created with config: ".concat((0, _stringify.default)(_this.config)));
218
- return _this;
219
- }
220
-
221
- /**
222
- * Checks if configuration is valid, throws an error if it's not
223
- */
224
- (0, _createClass2.default)(RemoteMediaManager, [{
225
- key: "checkConfigValidity",
226
- value: function checkConfigValidity() {
227
- if (!(this.config.video.initialLayoutId in this.config.video.layouts)) {
228
- throw new Error("invalid config: initialLayoutId \"".concat(this.config.video.initialLayoutId, "\" doesn't match any of the layouts"));
229
- }
230
-
231
- // check if each layout is valid
232
- (0, _values.default)(this.config.video.layouts).forEach(function (layout) {
233
- var _layout$activeSpeaker, _layout$memberVideoPa;
234
- var groupIds = {};
235
- var paneIds = {};
236
- var groupPriorites = {};
237
- (_layout$activeSpeaker = layout.activeSpeakerVideoPaneGroups) === null || _layout$activeSpeaker === void 0 ? void 0 : _layout$activeSpeaker.forEach(function (group) {
238
- if (groupIds[group.id]) {
239
- throw new Error("invalid config: duplicate active speaker video pane group id: ".concat(group.id));
240
- }
241
- groupIds[group.id] = true;
242
- if (groupPriorites[group.priority]) {
243
- throw new Error("invalid config: multiple active speaker video pane groups have same priority: ".concat(group.priority));
244
- }
245
- groupPriorites[group.priority] = true;
246
- });
247
- (_layout$memberVideoPa = layout.memberVideoPanes) === null || _layout$memberVideoPa === void 0 ? void 0 : _layout$memberVideoPa.forEach(function (pane) {
248
- if (paneIds[pane.id]) {
249
- throw new Error("invalid config: duplicate member video pane id: ".concat(pane.id));
250
- }
251
- paneIds[pane.id] = true;
252
- });
253
- });
254
- }
255
-
256
- /**
257
- * Starts the RemoteMediaManager.
258
- *
259
- * @returns {Promise}
260
- */
261
- }, {
262
- key: "start",
263
- value: (function () {
264
- var _start = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
265
- return _regenerator.default.wrap(function _callee$(_context) {
266
- while (1) switch (_context.prev = _context.next) {
267
- case 0:
268
- if (!this.started) {
269
- _context.next = 2;
270
- break;
271
- }
272
- throw new Error('start() failure: already started');
273
- case 2:
274
- this.started = true;
275
- _context.next = 5;
276
- return this.createAudioMedia();
277
- case 5:
278
- _context.next = 7;
279
- return this.createScreenShareReceiveSlots();
280
- case 7:
281
- this.createScreenShareAudioMedia();
282
- _context.next = 10;
283
- return this.preallocateVideoReceiveSlots();
284
- case 10:
285
- _context.next = 12;
286
- return this.setLayout(this.config.video.initialLayoutId);
287
- case 12:
288
- case "end":
289
- return _context.stop();
290
- }
291
- }, _callee, this);
292
- }));
293
- function start() {
294
- return _start.apply(this, arguments);
295
- }
296
- return start;
297
- }()
298
- /**
299
- * Releases all the used resources (like allocated receive slots). This function needs
300
- * to be called when we leave the meeting, etc.
301
- */
302
- )
303
- }, {
304
- key: "stop",
305
- value: function stop() {
306
- var _this2 = this,
307
- _this$slots$video$unu,
308
- _this$slots$video$unu2;
309
- // invalidate all remoteMedia objects
310
- this.invalidateCurrentRemoteMedia({
311
- audio: true,
312
- video: true,
313
- screenShareAudio: true,
314
- screenShareVideo: true,
315
- commit: true
316
- });
317
-
318
- // release all audio receive slots
319
- this.slots.audio.forEach(function (slot) {
320
- return _this2.receiveSlotManager.releaseSlot(slot);
321
- });
322
- this.slots.audio.length = 0;
323
-
324
- // release screen share slots
325
- this.slots.screenShare.audio.forEach(function (slot) {
326
- return _this2.receiveSlotManager.releaseSlot(slot);
327
- });
328
- this.slots.screenShare.audio.length = 0;
329
- if (this.slots.screenShare.video) {
330
- this.receiveSlotManager.releaseSlot(this.slots.screenShare.video);
331
- this.slots.screenShare.video = undefined;
332
- }
333
-
334
- // release video slots
335
- this.receiveSlotAllocations = {
336
- activeSpeaker: {},
337
- receiverSelected: {}
338
- };
339
- (_this$slots$video$unu = this.slots.video.unused).push.apply(_this$slots$video$unu, (0, _toConsumableArray2.default)(this.slots.video.activeSpeaker));
340
- this.slots.video.activeSpeaker.length = 0;
341
- (_this$slots$video$unu2 = this.slots.video.unused).push.apply(_this$slots$video$unu2, (0, _toConsumableArray2.default)(this.slots.video.receiverSelected));
342
- this.slots.video.receiverSelected.length = 0;
343
- this.releaseUnusedVideoSlots();
344
- this.currentLayout = undefined;
345
- this.currentLayoutId = undefined;
346
- this.started = false;
347
- }
348
-
349
- /**
350
- * Returns the total number of main video panes required for a given layout
351
- *
352
- * @param {VideoLayout} layout
353
- * @returns {number}
354
- */
355
- }, {
356
- key: "getRequiredNumVideoSlotsForLayout",
357
- value: function getRequiredNumVideoSlotsForLayout(layout) {
358
- var _layout$activeSpeaker2, _layout$memberVideoPa2;
359
- if (!layout) {
360
- return 0;
361
- }
362
- var activeSpeakerCount = ((_layout$activeSpeaker2 = layout.activeSpeakerVideoPaneGroups) === null || _layout$activeSpeaker2 === void 0 ? void 0 : _layout$activeSpeaker2.reduce(function (sum, paneGroup) {
363
- return sum + paneGroup.numPanes;
364
- }, 0)) || 0;
365
- var receiverSelectedCount = ((_layout$memberVideoPa2 = layout.memberVideoPanes) === null || _layout$memberVideoPa2 === void 0 ? void 0 : _layout$memberVideoPa2.length) || 0;
366
- return activeSpeakerCount + receiverSelectedCount;
367
- }
368
-
369
- /**
370
- * Allocates the maximum number of panes that any of the configured layouts will require.
371
- * We do this at the beginning, because it's more efficient (much faster) then allocating receive slots
372
- * later, after the SDP exchange was done.
373
- */
374
- }, {
375
- key: "preallocateVideoReceiveSlots",
376
- value: (function () {
377
- var _preallocateVideoReceiveSlots = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
378
- var _this3 = this;
379
- var maxNumVideoPanesRequired;
380
- return _regenerator.default.wrap(function _callee2$(_context2) {
381
- while (1) switch (_context2.prev = _context2.next) {
382
- case 0:
383
- maxNumVideoPanesRequired = (0, _values.default)(this.config.video.layouts).reduce(function (maxValue, layout) {
384
- return Math.max(maxValue, _this3.getRequiredNumVideoSlotsForLayout(layout));
385
- }, 0);
386
- case 1:
387
- if (!(this.slots.video.unused.length < maxNumVideoPanesRequired)) {
388
- _context2.next = 9;
389
- break;
390
- }
391
- _context2.t0 = this.slots.video.unused;
392
- _context2.next = 5;
393
- return this.receiveSlotManager.allocateSlot(_internalMediaCore.MediaType.VideoMain);
394
- case 5:
395
- _context2.t1 = _context2.sent;
396
- _context2.t0.push.call(_context2.t0, _context2.t1);
397
- _context2.next = 1;
398
- break;
399
- case 9:
400
- case "end":
401
- return _context2.stop();
402
- }
403
- }, _callee2, this);
404
- }));
405
- function preallocateVideoReceiveSlots() {
406
- return _preallocateVideoReceiveSlots.apply(this, arguments);
407
- }
408
- return preallocateVideoReceiveSlots;
409
- }()
410
- /**
411
- * Changes the layout (triggers Event.VideoLayoutChanged)
412
- *
413
- * @param {LayoutId} layoutId new layout id
414
- * @returns {Promise}
415
- */
416
- )
417
- }, {
418
- key: "setLayout",
419
- value: (function () {
420
- var _setLayout = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(layoutId) {
421
- return _regenerator.default.wrap(function _callee3$(_context3) {
422
- while (1) switch (_context3.prev = _context3.next) {
423
- case 0:
424
- if (layoutId in this.config.video.layouts) {
425
- _context3.next = 2;
426
- break;
427
- }
428
- throw new Error("invalid layoutId: \"".concat(layoutId, "\" doesn't match any of the configured layouts"));
429
- case 2:
430
- if (this.started) {
431
- _context3.next = 4;
432
- break;
433
- }
434
- throw new Error('setLayout() called before start()');
435
- case 4:
436
- _loggerProxy.default.logger.log("RemoteMediaManager#setLayout --> new layout selected: ".concat(layoutId));
437
- this.currentLayoutId = layoutId;
438
- this.currentLayout = (0, _lodash.cloneDeep)(this.config.video.layouts[this.currentLayoutId]);
439
- _context3.next = 9;
440
- return this.updateVideoReceiveSlots();
441
- case 9:
442
- this.updateVideoRemoteMediaObjects();
443
- this.updateScreenShareVideoRemoteMediaObject();
444
- this.emitVideoLayoutChangedEvent();
445
- case 12:
446
- case "end":
447
- return _context3.stop();
448
- }
449
- }, _callee3, this);
450
- }));
451
- function setLayout(_x) {
452
- return _setLayout.apply(this, arguments);
453
- }
454
- return setLayout;
455
- }()
456
- /**
457
- * Returns the currently selected layout id
458
- *
459
- * @returns {LayoutId}
460
- */
461
- )
462
- }, {
463
- key: "getLayoutId",
464
- value: function getLayoutId() {
465
- return this.currentLayoutId;
466
- }
467
-
468
- /**
469
- * sets the preferLiveVideo
470
- */
471
- }, {
472
- key: "setPreferLiveVideo",
473
- value: function setPreferLiveVideo(preferLiveVideo) {
474
- _loggerProxy.default.logger.log("RemoteMediaManager#setPreferLiveVideo --> setPreferLiveVideo is called to set preferLiveVideo to ".concat(preferLiveVideo));
475
- this.config.video.preferLiveVideo = preferLiveVideo;
476
- (0, _values.default)(this.media.video.activeSpeakerGroups).forEach(function (activeSpeakerGroup) {
477
- activeSpeakerGroup.setPreferLiveVideo(preferLiveVideo, false);
478
- });
479
- this.mediaRequestManagers.video.commit();
480
- }
481
-
482
- /**
483
- * Sets CSIs for multiple RemoteMedia instances belonging to RemoteMediaGroup.
484
- * For each entry in the remoteMediaCsis array:
485
- * - if csi is specified, the RemoteMedia instance is pinned to that CSI
486
- * - if csi is undefined, the RemoteMedia instance is unpinned
487
- */
488
- }, {
489
- key: "setActiveSpeakerCsis",
490
- value: function setActiveSpeakerCsis(remoteMediaCsis) {
491
- (0, _values.default)(this.media.video.activeSpeakerGroups).forEach(function (remoteMediaGroup) {
492
- var groupRemoteMediaCsis = remoteMediaCsis.filter(function (_ref) {
493
- var remoteMedia = _ref.remoteMedia;
494
- return remoteMediaGroup.includes(remoteMedia);
495
- });
496
- if (groupRemoteMediaCsis.length > 0) {
497
- remoteMediaGroup.setActiveSpeakerCsis(groupRemoteMediaCsis, false);
498
- }
499
- });
500
- this.mediaRequestManagers.video.commit();
501
- }
502
-
503
- /**
504
- * Creates the audio slots
505
- */
506
- }, {
507
- key: "createAudioMedia",
508
- value: (function () {
509
- var _createAudioMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
510
- var i, slot;
511
- return _regenerator.default.wrap(function _callee4$(_context4) {
512
- while (1) switch (_context4.prev = _context4.next) {
513
- case 0:
514
- i = 0;
515
- case 1:
516
- if (!(i < this.config.audio.numOfActiveSpeakerStreams)) {
517
- _context4.next = 9;
518
- break;
519
- }
520
- _context4.next = 4;
521
- return this.receiveSlotManager.allocateSlot(_internalMediaCore.MediaType.AudioMain);
522
- case 4:
523
- slot = _context4.sent;
524
- this.slots.audio.push(slot);
525
- case 6:
526
- i += 1;
527
- _context4.next = 1;
528
- break;
529
- case 9:
530
- // create a remote media group
531
- this.media.audio = new _remoteMediaGroup.RemoteMediaGroup(this.mediaRequestManagers.audio, this.slots.audio, 255, true);
532
- this.emit({
533
- file: 'multistream/remoteMediaManager',
534
- function: 'createAudioMedia'
535
- }, Event.AudioCreated, this.media.audio);
536
- case 11:
537
- case "end":
538
- return _context4.stop();
539
- }
540
- }, _callee4, this);
541
- }));
542
- function createAudioMedia() {
543
- return _createAudioMedia.apply(this, arguments);
544
- }
545
- return createAudioMedia;
546
- }()
547
- /**
548
- * Creates receive slots required for receiving screen share audio and video
549
- */
550
- )
551
- }, {
552
- key: "createScreenShareReceiveSlots",
553
- value: (function () {
554
- var _createScreenShareReceiveSlots = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
555
- var i, slot, isAnyLayoutContainingScreenShareVideo;
556
- return _regenerator.default.wrap(function _callee5$(_context5) {
557
- while (1) switch (_context5.prev = _context5.next) {
558
- case 0:
559
- i = 0;
560
- case 1:
561
- if (!(i < this.config.audio.numOfScreenShareStreams)) {
562
- _context5.next = 9;
563
- break;
564
- }
565
- _context5.next = 4;
566
- return this.receiveSlotManager.allocateSlot(_internalMediaCore.MediaType.AudioSlides);
567
- case 4:
568
- slot = _context5.sent;
569
- this.slots.screenShare.audio.push(slot);
570
- case 6:
571
- i += 1;
572
- _context5.next = 1;
573
- break;
574
- case 9:
575
- // video
576
- isAnyLayoutContainingScreenShareVideo = (0, _values.default)(this.config.video.layouts).some(function (layout) {
577
- return !!layout.screenShareVideo;
578
- });
579
- if (!isAnyLayoutContainingScreenShareVideo) {
580
- _context5.next = 14;
581
- break;
582
- }
583
- _context5.next = 13;
584
- return this.receiveSlotManager.allocateSlot(_internalMediaCore.MediaType.VideoSlides);
585
- case 13:
586
- this.slots.screenShare.video = _context5.sent;
587
- case 14:
588
- case "end":
589
- return _context5.stop();
590
- }
591
- }, _callee5, this);
592
- }));
593
- function createScreenShareReceiveSlots() {
594
- return _createScreenShareReceiveSlots.apply(this, arguments);
595
- }
596
- return createScreenShareReceiveSlots;
597
- }()
598
- /**
599
- * Creates RemoteMedia objects for screen share
600
- */
601
- )
602
- }, {
603
- key: "createScreenShareAudioMedia",
604
- value: function createScreenShareAudioMedia() {
605
- if (this.slots.screenShare.audio.length > 0) {
606
- this.media.screenShare.audio = new _remoteMediaGroup.RemoteMediaGroup(this.mediaRequestManagers.screenShareAudio, this.slots.screenShare.audio, 255, true);
607
- this.emit({
608
- file: 'multistream/remoteMediaManager',
609
- function: 'createScreenShareAudioMedia'
610
- }, Event.ScreenShareAudioCreated, this.media.screenShare.audio);
611
- }
612
- }
613
-
614
- /**
615
- * Goes over all receiver-selected slots and keeps only the ones that are required by a given layout,
616
- * the rest are all moved to the "unused" list
617
- */
618
- }, {
619
- key: "trimReceiverSelectedSlots",
620
- value: function trimReceiverSelectedSlots() {
621
- var _this$currentLayout, _this$currentLayout$m, _this$slots$video$unu3;
622
- var requiredCsis = {};
623
-
624
- // fill requiredCsis with all the CSIs that the given layout requires
625
- (_this$currentLayout = this.currentLayout) === null || _this$currentLayout === void 0 ? void 0 : (_this$currentLayout$m = _this$currentLayout.memberVideoPanes) === null || _this$currentLayout$m === void 0 ? void 0 : _this$currentLayout$m.forEach(function (memberVideoPane) {
626
- if (memberVideoPane.csi !== undefined) {
627
- requiredCsis[memberVideoPane.csi] = true;
628
- }
629
- });
630
- var isCsiNeededByCurrentLayout = function isCsiNeededByCurrentLayout(csi) {
631
- if (csi === undefined) {
632
- return false;
633
- }
634
- return !!requiredCsis[csi];
635
- };
636
-
637
- // keep receiverSelected slots that match our new requiredCsis, move the rest of receiverSelected slots to unused
638
- var notNeededReceiverSelectedSlots = (0, _lodash.remove)(this.slots.video.receiverSelected, function (slot) {
639
- return isCsiNeededByCurrentLayout(slot.csi) === false;
640
- });
641
- (_this$slots$video$unu3 = this.slots.video.unused).push.apply(_this$slots$video$unu3, (0, _toConsumableArray2.default)(notNeededReceiverSelectedSlots));
642
- }
643
-
644
- /**
645
- * Releases all the "unused" video slots.
646
- */
647
- }, {
648
- key: "releaseUnusedVideoSlots",
649
- value: function releaseUnusedVideoSlots() {
650
- var _this4 = this;
651
- this.slots.video.unused.forEach(function (slot) {
652
- return _this4.receiveSlotManager.releaseSlot(slot);
653
- });
654
- this.slots.video.unused.length = 0;
655
- }
656
-
657
- /**
658
- * Allocates receive slots to all active speaker video panes
659
- * in the current selected layout.
660
- *
661
- * Allocation tries to keep the same order of the slots between the previous
662
- * layout and the new one. Sorting helps making sure that highest priority slots
663
- * go in the same order in the new layout.
664
- */
665
- }, {
666
- key: "allocateSlotsToActiveSpeakerPaneGroups",
667
- value: function allocateSlotsToActiveSpeakerPaneGroups() {
668
- var _this$currentLayout2,
669
- _this$currentLayout2$,
670
- _this$currentLayout2$2,
671
- _this5 = this;
672
- (_this$currentLayout2 = this.currentLayout) === null || _this$currentLayout2 === void 0 ? void 0 : (_this$currentLayout2$ = _this$currentLayout2.activeSpeakerVideoPaneGroups
673
- // sorting in descending order based on group priority
674
- ) === null || _this$currentLayout2$ === void 0 ? void 0 : (_this$currentLayout2$2 = _this$currentLayout2$.sort(function (a, b) {
675
- return a.priority < b.priority ? 1 : -1;
676
- })) === null || _this$currentLayout2$2 === void 0 ? void 0 : _this$currentLayout2$2.forEach(function (group) {
677
- _this5.receiveSlotAllocations.activeSpeaker[group.id] = {
678
- slots: []
679
- };
680
- for (var paneIndex = 0; paneIndex < group.numPanes; paneIndex += 1) {
681
- // allocate a slot from the "unused" list, by grabbing in same order (shift) as previous layout
682
- var freeSlot = _this5.slots.video.unused.shift();
683
- if (freeSlot) {
684
- _this5.slots.video.activeSpeaker.push(freeSlot);
685
- _this5.receiveSlotAllocations.activeSpeaker[group.id].slots.push(freeSlot);
686
- }
687
- }
688
- });
689
- }
690
-
691
- /**
692
- * Allocates receive slots to all receiver selected video panes
693
- * in the current selected layout
694
- */
695
- }, {
696
- key: "allocateSlotsToReceiverSelectedVideoPaneGroups",
697
- value: function allocateSlotsToReceiverSelectedVideoPaneGroups() {
698
- var _this$currentLayout3,
699
- _this$currentLayout3$,
700
- _this6 = this;
701
- (_this$currentLayout3 = this.currentLayout) === null || _this$currentLayout3 === void 0 ? void 0 : (_this$currentLayout3$ = _this$currentLayout3.memberVideoPanes) === null || _this$currentLayout3$ === void 0 ? void 0 : _this$currentLayout3$.forEach(function (memberPane) {
702
- // check if there is existing slot for this csi
703
- var existingSlot = _this6.slots.video.receiverSelected.find(function (slot) {
704
- return slot.csi === memberPane.csi;
705
- });
706
- var isExistingSlotAlreadyAllocated = (0, _values.default)(_this6.receiveSlotAllocations.receiverSelected).includes(existingSlot);
707
- if (memberPane.csi !== undefined && existingSlot && !isExistingSlotAlreadyAllocated) {
708
- // found it, so use it
709
- _this6.receiveSlotAllocations.receiverSelected[memberPane.id] = existingSlot;
710
- } else {
711
- // allocate a slot from the "unused" list
712
- var freeSlot = _this6.slots.video.unused.pop();
713
- if (freeSlot) {
714
- _this6.slots.video.receiverSelected.push(freeSlot);
715
- _this6.receiveSlotAllocations.receiverSelected[memberPane.id] = freeSlot;
716
- }
717
- }
718
- });
719
- }
720
-
721
- /**
722
- * Ensures that we have enough slots for the current layout.
723
- */
724
- }, {
725
- key: "refillRequiredSlotsIfNeeded",
726
- value: (function () {
727
- var _refillRequiredSlotsIfNeeded = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
728
- var requiredNumSlots, totalNumSlots, numSlotsToCreate;
729
- return _regenerator.default.wrap(function _callee6$(_context6) {
730
- while (1) switch (_context6.prev = _context6.next) {
731
- case 0:
732
- requiredNumSlots = this.getRequiredNumVideoSlotsForLayout(this.currentLayout);
733
- totalNumSlots = this.slots.video.unused.length + this.slots.video.activeSpeaker.length + this.slots.video.receiverSelected.length;
734
- if (!(totalNumSlots < requiredNumSlots)) {
735
- _context6.next = 13;
736
- break;
737
- }
738
- numSlotsToCreate = requiredNumSlots - totalNumSlots;
739
- case 4:
740
- if (!(numSlotsToCreate > 0)) {
741
- _context6.next = 13;
742
- break;
743
- }
744
- _context6.t0 = this.slots.video.unused;
745
- _context6.next = 8;
746
- return this.receiveSlotManager.allocateSlot(_internalMediaCore.MediaType.VideoMain);
747
- case 8:
748
- _context6.t1 = _context6.sent;
749
- _context6.t0.push.call(_context6.t0, _context6.t1);
750
- numSlotsToCreate -= 1;
751
- _context6.next = 4;
752
- break;
753
- case 13:
754
- case "end":
755
- return _context6.stop();
756
- }
757
- }, _callee6, this);
758
- }));
759
- function refillRequiredSlotsIfNeeded() {
760
- return _refillRequiredSlotsIfNeeded.apply(this, arguments);
761
- }
762
- return refillRequiredSlotsIfNeeded;
763
- }()
764
- /**
765
- * Move all active speaker slots to "unused"
766
- */
767
- )
768
- }, {
769
- key: "trimActiveSpeakerSlots",
770
- value: function trimActiveSpeakerSlots() {
771
- var _this$slots$video$unu4;
772
- (_this$slots$video$unu4 = this.slots.video.unused).push.apply(_this$slots$video$unu4, (0, _toConsumableArray2.default)(this.slots.video.activeSpeaker));
773
- this.slots.video.activeSpeaker.length = 0;
774
- }
775
-
776
- /**
777
- * Logs the state of the receive slots
778
- */
779
- }, {
780
- key: "logMainVideoReceiveSlots",
781
- value: function logMainVideoReceiveSlots() {
782
- var logMessage = '';
783
- (0, _lodash.forEach)(this.receiveSlotAllocations.activeSpeaker, function (group, groupName) {
784
- logMessage += "\ngroup: ".concat(groupName, "\n").concat(group.slots.map(function (slot) {
785
- return slot.logString;
786
- }).join(', '));
787
- });
788
- logMessage += '\nreceiverSelected:\n';
789
- (0, _lodash.forEach)(this.receiveSlotAllocations.receiverSelected, function (slot, key) {
790
- logMessage += " ".concat(key, ": ").concat(slot.logString, "\n");
791
- });
792
- _loggerProxy.default.logger.log("RemoteMediaManager#logMainVideoReceiveSlots --> MAIN VIDEO receive slots: unused=".concat(this.slots.video.unused.length, ", activeSpeaker=").concat(this.slots.video.activeSpeaker.length, ", receiverSelected=").concat(this.slots.video.receiverSelected.length).concat(logMessage));
793
- }
794
-
795
- /** logs main audio slots */
796
- }, {
797
- key: "logMainAudioReceiveSlots",
798
- value: function logMainAudioReceiveSlots() {
799
- _loggerProxy.default.logger.log("RemoteMediaManager#logMainAudioReceiveSlots --> MAIN AUDIO receive slots: ".concat(this.slots.audio.map(function (slot) {
800
- return slot.logString;
801
- }).join(', ')));
802
- }
803
-
804
- /** logs slides video slots */
805
- }, {
806
- key: "logSlidesVideoReceiveSlots",
807
- value: function logSlidesVideoReceiveSlots() {
808
- var _this$slots$screenSha;
809
- _loggerProxy.default.logger.log("RemoteMediaManager#logSlidesVideoReceiveSlots --> SLIDES VIDEO receive slot: ".concat((_this$slots$screenSha = this.slots.screenShare.video) === null || _this$slots$screenSha === void 0 ? void 0 : _this$slots$screenSha.logString));
810
- }
811
-
812
- /** logs slides audio slots */
813
- }, {
814
- key: "logSlidesAudioReceiveSlots",
815
- value: function logSlidesAudioReceiveSlots() {
816
- _loggerProxy.default.logger.log("RemoteMediaManager#logSlidesAudioReceiveSlots --> SLIDES AUDIO receive slots: ".concat(this.slots.screenShare.audio.map(function (slot) {
817
- return slot.logString;
818
- }).join(', ')));
819
- }
820
-
821
- /** Logs all current receive slots */
822
- }, {
823
- key: "logAllReceiveSlots",
824
- value: function logAllReceiveSlots() {
825
- this.logMainVideoReceiveSlots();
826
- this.logMainAudioReceiveSlots();
827
- this.logSlidesVideoReceiveSlots();
828
- this.logSlidesAudioReceiveSlots();
829
- }
830
-
831
- /**
832
- * Makes sure we have the right number of receive slots created for the current layout
833
- * and allocates them to the right video panes / pane groups
834
- *
835
- * @returns {Promise}
836
- */
837
- }, {
838
- key: "updateVideoReceiveSlots",
839
- value: (function () {
840
- var _updateVideoReceiveSlots = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
841
- return _regenerator.default.wrap(function _callee7$(_context7) {
842
- while (1) switch (_context7.prev = _context7.next) {
843
- case 0:
844
- // move all active speaker slots to "unused"
845
- this.trimActiveSpeakerSlots();
846
-
847
- // move all no longer needed receiver-selected slots to "unused"
848
- this.trimReceiverSelectedSlots();
849
-
850
- // ensure we have enough total slots for current layout
851
- _context7.next = 4;
852
- return this.refillRequiredSlotsIfNeeded();
853
- case 4:
854
- // allocate the slots to the right panes / pane groups
855
- // reset allocations
856
- this.receiveSlotAllocations = {
857
- activeSpeaker: {},
858
- receiverSelected: {}
859
- };
860
- // allocate active speaker
861
- this.allocateSlotsToActiveSpeakerPaneGroups();
862
- // allocate receiver selected
863
- this.allocateSlotsToReceiverSelectedVideoPaneGroups();
864
- this.logMainVideoReceiveSlots();
865
-
866
- // If this is the initial layout, there may be some "unused" slots left because of the preallocation
867
- // done in this.preallocateVideoReceiveSlots(), so release them now
868
- this.releaseUnusedVideoSlots();
869
- case 9:
870
- case "end":
871
- return _context7.stop();
872
- }
873
- }, _callee7, this);
874
- }));
875
- function updateVideoReceiveSlots() {
876
- return _updateVideoReceiveSlots.apply(this, arguments);
877
- }
878
- return updateVideoReceiveSlots;
879
- }()
880
- /**
881
- * Creates new RemoteMedia and RemoteMediaGroup objects for the current layout
882
- * and sends the media requests for all of them.
883
- */
884
- )
885
- }, {
886
- key: "updateVideoRemoteMediaObjects",
887
- value: function updateVideoRemoteMediaObjects() {
888
- var _this7 = this;
889
- // invalidate all the previous remote media objects and cancel their media requests
890
- this.invalidateCurrentRemoteMedia({
891
- audio: false,
892
- video: true,
893
- screenShareAudio: false,
894
- screenShareVideo: false,
895
- commit: false
896
- });
897
-
898
- // create new remoteMediaGroup objects
899
- this.media.video.activeSpeakerGroups = {};
900
- this.media.video.memberPanes = {};
901
- var _loop = function _loop() {
902
- var _this7$currentLayout, _this7$currentLayout$;
903
- var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
904
- groupId = _Object$entries$_i[0],
905
- group = _Object$entries$_i[1];
906
- var paneGroupInCurrentLayout = (_this7$currentLayout = _this7.currentLayout) === null || _this7$currentLayout === void 0 ? void 0 : (_this7$currentLayout$ = _this7$currentLayout.activeSpeakerVideoPaneGroups) === null || _this7$currentLayout$ === void 0 ? void 0 : _this7$currentLayout$.find(function (groupInLayout) {
907
- return groupInLayout.id === groupId;
908
- });
909
- if (paneGroupInCurrentLayout) {
910
- var mediaGroup = new _remoteMediaGroup.RemoteMediaGroup(_this7.mediaRequestManagers.video, group.slots, paneGroupInCurrentLayout.priority, false, {
911
- preferLiveVideo: _this7.config.video.preferLiveVideo,
912
- resolution: paneGroupInCurrentLayout.size
913
- });
914
- _this7.media.video.activeSpeakerGroups[groupId] = mediaGroup;
915
- } else {
916
- // this should never happen, because this.receiveSlotAllocations are created based on current layout configuration
917
- _loggerProxy.default.logger.warn("a group id ".concat(groupId, " from this.receiveSlotAllocations.activeSpeaker cannot be found in the current layout configuration"));
918
- }
919
- };
920
- for (var _i = 0, _Object$entries = (0, _entries.default)(this.receiveSlotAllocations.activeSpeaker); _i < _Object$entries.length; _i++) {
921
- _loop();
922
- }
923
-
924
- // create new remoteMedia objects
925
- var _loop2 = function _loop2() {
926
- var _this7$currentLayout2, _this7$currentLayout3;
927
- var _Object$entries3$_i = (0, _slicedToArray2.default)(_Object$entries3[_i2], 2),
928
- paneId = _Object$entries3$_i[0],
929
- slot = _Object$entries3$_i[1];
930
- var paneInCurrentLayout = (_this7$currentLayout2 = _this7.currentLayout) === null || _this7$currentLayout2 === void 0 ? void 0 : (_this7$currentLayout3 = _this7$currentLayout2.memberVideoPanes) === null || _this7$currentLayout3 === void 0 ? void 0 : _this7$currentLayout3.find(function (paneInLayout) {
931
- return paneInLayout.id === paneId;
932
- });
933
- if (paneInCurrentLayout) {
934
- var remoteMedia = new _remoteMedia.RemoteMedia(slot, _this7.mediaRequestManagers.video, {
935
- resolution: paneInCurrentLayout.size
936
- });
937
- if (paneInCurrentLayout.csi) {
938
- remoteMedia.sendMediaRequest(paneInCurrentLayout.csi, false);
939
- }
940
- _this7.media.video.memberPanes[paneId] = remoteMedia;
941
- } else {
942
- // this should never happen, because this.receiveSlotAllocations are created based on current layout configuration
943
- _loggerProxy.default.logger.warn("a pane id ".concat(paneId, " from this.receiveSlotAllocations.receiverSelected cannot be found in the current layout configuration"));
944
- }
945
- };
946
- for (var _i2 = 0, _Object$entries3 = (0, _entries.default)(this.receiveSlotAllocations.receiverSelected); _i2 < _Object$entries3.length; _i2++) {
947
- _loop2();
948
- }
949
- this.mediaRequestManagers.video.commit();
950
- }
951
-
952
- /**
953
- * Checks if current layout requires a screen share.
954
- * If it does, it creates new RemoteMediaGroup object for screen share
955
- * and sends the media requests for it.
956
- * If it doesn't, it makes sure we clean up any RemoteMediaGroup objects
957
- * created earlier for screen share (for previous layout).
958
- */
959
- }, {
960
- key: "updateScreenShareVideoRemoteMediaObject",
961
- value: function updateScreenShareVideoRemoteMediaObject() {
962
- var _this$currentLayout4;
963
- this.invalidateCurrentRemoteMedia({
964
- audio: false,
965
- video: false,
966
- screenShareAudio: false,
967
- screenShareVideo: true,
968
- commit: false
969
- });
970
- this.media.screenShare.video = undefined;
971
- if ((_this$currentLayout4 = this.currentLayout) !== null && _this$currentLayout4 !== void 0 && _this$currentLayout4.screenShareVideo) {
972
- // we create a group of 1, because for screen share we need to use the "active speaker" policy
973
- this.media.screenShare.video = new _remoteMediaGroup.RemoteMediaGroup(this.mediaRequestManagers.screenShareVideo, [this.slots.screenShare.video], 255, false, {
974
- resolution: this.currentLayout.screenShareVideo.size
975
- });
976
- }
977
- this.mediaRequestManagers.screenShareVideo.commit();
978
- }
979
-
980
- /**
981
- * Invalidates all remote media objects belonging to currently selected layout
982
- */
983
- }, {
984
- key: "invalidateCurrentRemoteMedia",
985
- value: function invalidateCurrentRemoteMedia(options) {
986
- var audio = options.audio,
987
- video = options.video,
988
- screenShareAudio = options.screenShareAudio,
989
- screenShareVideo = options.screenShareVideo,
990
- commit = options.commit;
991
- if (audio && this.media.audio) {
992
- this.media.audio.stop(commit);
993
- }
994
- if (video) {
995
- (0, _values.default)(this.media.video.activeSpeakerGroups).forEach(function (remoteMediaGroup) {
996
- remoteMediaGroup.stop(false);
997
- });
998
- (0, _values.default)(this.media.video.memberPanes).forEach(function (remoteMedia) {
999
- remoteMedia.stop(false);
1000
- });
1001
- if (commit) {
1002
- this.mediaRequestManagers.video.commit();
1003
- }
1004
- }
1005
- if (screenShareAudio && this.media.screenShare.audio) {
1006
- this.media.screenShare.audio.stop(commit);
1007
- }
1008
- if (screenShareVideo && this.media.screenShare.video) {
1009
- this.media.screenShare.video.stop(commit);
1010
- }
1011
- }
1012
-
1013
- /** emits Event.VideoLayoutChanged */
1014
- }, {
1015
- key: "emitVideoLayoutChangedEvent",
1016
- value: function emitVideoLayoutChangedEvent() {
1017
- var _this$media$screenSha;
1018
- // todo: at this point the receive slots might still be showing a participant from previous layout, we should
1019
- // wait for our media requests to be fulfilled, but there is no API for that right now (we could wait for source updates
1020
- // but in some cases they might never come, or would need to always make sure to use a new set of receiver slots)
1021
- // for now it's fine to have it like this, we will re-evaluate if it needs improving after more testing
1022
-
1023
- this.emit({
1024
- file: 'multistream/remoteMediaManager',
1025
- function: 'emitVideoLayoutChangedEvent'
1026
- }, Event.VideoLayoutChanged, {
1027
- layoutId: this.currentLayoutId,
1028
- activeSpeakerVideoPanes: this.media.video.activeSpeakerGroups,
1029
- memberVideoPanes: this.media.video.memberPanes,
1030
- screenShareVideo: (_this$media$screenSha = this.media.screenShare.video) === null || _this$media$screenSha === void 0 ? void 0 : _this$media$screenSha.getRemoteMedia()[0]
1031
- });
1032
- }
1033
-
1034
- /**
1035
- * Sets a new CSI on a given remote media object
1036
- *
1037
- * @param {RemoteMedia} remoteMedia remote Media object to modify
1038
- * @param {CSI} csi new CSI value, can be null if we want to stop receiving media
1039
- */
1040
- }, {
1041
- key: "setRemoteVideoCsi",
1042
- value: function setRemoteVideoCsi(remoteMedia, csi) {
1043
- if (!(0, _values.default)(this.media.video.memberPanes).includes(remoteMedia)) {
1044
- throw new Error('remoteMedia not found');
1045
- }
1046
- if (csi) {
1047
- remoteMedia.sendMediaRequest(csi, true);
1048
- } else {
1049
- remoteMedia.cancelMediaRequest(true);
1050
- }
1051
- }
1052
-
1053
- /**
1054
- * Adds a new member video pane to the currently selected layout.
1055
- *
1056
- * Changes to the layout are lost after a layout change.
1057
- *
1058
- * @param {MemberVideoPane} newPane
1059
- * @returns {Promise<RemoteMedia>}
1060
- */
1061
- }, {
1062
- key: "addMemberVideoPane",
1063
- value: (function () {
1064
- var _addMemberVideoPane = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(newPane) {
1065
- var _this$currentLayout5;
1066
- var receiveSlot, remoteMedia;
1067
- return _regenerator.default.wrap(function _callee8$(_context8) {
1068
- while (1) switch (_context8.prev = _context8.next) {
1069
- case 0:
1070
- if (this.currentLayout) {
1071
- _context8.next = 2;
1072
- break;
1073
- }
1074
- throw new Error('There is no current layout selected, call start() first');
1075
- case 2:
1076
- if (!((_this$currentLayout5 = this.currentLayout) !== null && _this$currentLayout5 !== void 0 && _this$currentLayout5.memberVideoPanes)) {
1077
- this.currentLayout.memberVideoPanes = [];
1078
- }
1079
- if (!(newPane.id in this.currentLayout.memberVideoPanes)) {
1080
- _context8.next = 5;
1081
- break;
1082
- }
1083
- throw new Error("duplicate pane id ".concat(newPane.id, " - this pane already exists in current layout's memberVideoPanes"));
1084
- case 5:
1085
- this.currentLayout.memberVideoPanes.push(newPane);
1086
- _context8.next = 8;
1087
- return this.receiveSlotManager.allocateSlot(_internalMediaCore.MediaType.VideoMain);
1088
- case 8:
1089
- receiveSlot = _context8.sent;
1090
- this.slots.video.receiverSelected.push(receiveSlot);
1091
- remoteMedia = new _remoteMedia.RemoteMedia(receiveSlot, this.mediaRequestManagers.video, {
1092
- resolution: newPane.size
1093
- });
1094
- if (newPane.csi) {
1095
- remoteMedia.sendMediaRequest(newPane.csi, true);
1096
- }
1097
- this.media.video.memberPanes[newPane.id] = remoteMedia;
1098
- return _context8.abrupt("return", remoteMedia);
1099
- case 14:
1100
- case "end":
1101
- return _context8.stop();
1102
- }
1103
- }, _callee8, this);
1104
- }));
1105
- function addMemberVideoPane(_x2) {
1106
- return _addMemberVideoPane.apply(this, arguments);
1107
- }
1108
- return addMemberVideoPane;
1109
- }()
1110
- /**
1111
- * Removes a member video pane from the currently selected layout.
1112
- *
1113
- * Changes to the layout are lost after a layout change.
1114
- *
1115
- * @param {PaneId} paneId pane id of the pane to remove
1116
- * @returns {Promise<void>}
1117
- */
1118
- )
1119
- }, {
1120
- key: "removeMemberVideoPane",
1121
- value: function removeMemberVideoPane(paneId) {
1122
- var _this$currentLayout$m2, _this$currentLayout$m3;
1123
- if (!this.currentLayout) {
1124
- return _promise.default.reject(new Error('There is no current layout selected, call start() first'));
1125
- }
1126
- if (!((_this$currentLayout$m2 = this.currentLayout.memberVideoPanes) !== null && _this$currentLayout$m2 !== void 0 && _this$currentLayout$m2.find(function (pane) {
1127
- return pane.id === paneId;
1128
- }))) {
1129
- // pane id doesn't exist, so nothing to do
1130
- _loggerProxy.default.logger.log("RemoteMediaManager#removeMemberVideoPane --> removeMemberVideoPane() called for a non-existent paneId: ".concat(paneId, " (pane not found in currentLayout.memberVideoPanes)"));
1131
- return _promise.default.resolve();
1132
- }
1133
- if (!this.media.video.memberPanes[paneId]) {
1134
- // pane id doesn't exist, so nothing to do
1135
- _loggerProxy.default.logger.log("RemoteMediaManager#removeMemberVideoPane --> removeMemberVideoPane() called for a non-existent paneId: ".concat(paneId, " (pane not found in this.media.video.memberPanes)"));
1136
- return _promise.default.resolve();
1137
- }
1138
- var remoteMedia = this.media.video.memberPanes[paneId];
1139
- var receiveSlot = remoteMedia.getUnderlyingReceiveSlot();
1140
- if (receiveSlot) {
1141
- this.receiveSlotManager.releaseSlot(receiveSlot);
1142
- var index = this.slots.video.receiverSelected.indexOf(receiveSlot);
1143
- if (index >= 0) {
1144
- this.slots.video.receiverSelected.splice(index, 1);
1145
- }
1146
- }
1147
- remoteMedia.stop();
1148
- delete this.media.video.memberPanes[paneId];
1149
- (_this$currentLayout$m3 = this.currentLayout.memberVideoPanes) === null || _this$currentLayout$m3 === void 0 ? true : delete _this$currentLayout$m3[paneId];
1150
- return _promise.default.resolve();
1151
- }
1152
-
1153
- /**
1154
- * Pins an active speaker remote media object to the given CSI value. From that moment
1155
- * onwards the remote media will only play audio/video from that specific CSI until
1156
- * unpinActiveSpeakerVideoPane() is called or current layout is changed.
1157
- *
1158
- * @param {RemoteMedia} remoteMedia remote media object reference
1159
- * @param {CSI} csi CSI value to pin to, if undefined, then current CSI value is used
1160
- */
1161
- }, {
1162
- key: "pinActiveSpeakerVideoPane",
1163
- value: function pinActiveSpeakerVideoPane(remoteMedia, csi) {
1164
- var remoteMediaGroup = (0, _values.default)(this.media.video.activeSpeakerGroups).find(function (group) {
1165
- return group.includes(remoteMedia, 'unpinned');
1166
- });
1167
- if (!remoteMediaGroup) {
1168
- throw new Error('remoteMedia not found among the unpinned remote media from any active speaker group');
1169
- }
1170
- remoteMediaGroup.pin(remoteMedia, csi);
1171
- }
1172
-
1173
- /**
1174
- * Unpins a remote media object from the fixed CSI value it was pinned to.
1175
- *
1176
- * @param {RemoteMedia} remoteMedia remote media object reference
1177
- */
1178
- }, {
1179
- key: "unpinActiveSpeakerVideoPane",
1180
- value: function unpinActiveSpeakerVideoPane(remoteMedia) {
1181
- var remoteMediaGroup = (0, _values.default)(this.media.video.activeSpeakerGroups).find(function (group) {
1182
- return group.includes(remoteMedia, 'pinned');
1183
- });
1184
- if (!remoteMediaGroup) {
1185
- throw new Error('remoteMedia not found among the pinned remote media from any active speaker group');
1186
- }
1187
- remoteMediaGroup.unpin(remoteMedia);
1188
- }
1189
-
1190
- /**
1191
- * Returns true if a given remote media object belongs to an active speaker group and has been pinned.
1192
- * Throws an error if the remote media object doesn't belong to any active speaker remote media group.
1193
- *
1194
- * @param {RemoteMedia} remoteMedia remote media object
1195
- * @returns {boolean}
1196
- */
1197
- }, {
1198
- key: "isPinned",
1199
- value: function isPinned(remoteMedia) {
1200
- var remoteMediaGroup = (0, _values.default)(this.media.video.activeSpeakerGroups).find(function (group) {
1201
- return group.includes(remoteMedia);
1202
- });
1203
- if (!remoteMediaGroup) {
1204
- throw new Error('remoteMedia not found among any remote media (pinned or unpinned) from any active speaker group');
1205
- }
1206
- return remoteMediaGroup.isPinned(remoteMedia);
1207
- }
1208
- }]);
1209
- return RemoteMediaManager;
1210
- }(_eventsScope.default);
1211
- //# sourceMappingURL=remoteMediaManager.js.map