@webex/plugin-meetings 3.0.0-beta.21 → 3.0.0-beta.211

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 (422) hide show
  1. package/README.md +45 -7
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +114 -14
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +841 -19
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/request.js +78 -0
  17. package/dist/breakouts/request.js.map +1 -0
  18. package/dist/breakouts/utils.js +67 -0
  19. package/dist/breakouts/utils.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +3 -2
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/queue.js +24 -9
  25. package/dist/common/queue.js.map +1 -1
  26. package/dist/config.js +3 -8
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +179 -30
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/constants.js +14 -0
  31. package/dist/controls-options-manager/constants.js.map +1 -0
  32. package/dist/controls-options-manager/enums.js +27 -0
  33. package/dist/controls-options-manager/enums.js.map +1 -0
  34. package/dist/controls-options-manager/index.js +297 -0
  35. package/dist/controls-options-manager/index.js.map +1 -0
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +319 -0
  39. package/dist/controls-options-manager/util.js.map +1 -0
  40. package/dist/index.js +106 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/interpretation/collection.js +23 -0
  43. package/dist/interpretation/collection.js.map +1 -0
  44. package/dist/interpretation/index.js +366 -0
  45. package/dist/interpretation/index.js.map +1 -0
  46. package/dist/interpretation/siLanguage.js +25 -0
  47. package/dist/interpretation/siLanguage.js.map +1 -0
  48. package/dist/locus-info/controlsUtils.js +91 -2
  49. package/dist/locus-info/controlsUtils.js.map +1 -1
  50. package/dist/locus-info/index.js +359 -64
  51. package/dist/locus-info/index.js.map +1 -1
  52. package/dist/locus-info/infoUtils.js +7 -1
  53. package/dist/locus-info/infoUtils.js.map +1 -1
  54. package/dist/locus-info/mediaSharesUtils.js +43 -1
  55. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  56. package/dist/locus-info/parser.js +219 -63
  57. package/dist/locus-info/parser.js.map +1 -1
  58. package/dist/locus-info/selfUtils.js +89 -14
  59. package/dist/locus-info/selfUtils.js.map +1 -1
  60. package/dist/media/index.js +48 -135
  61. package/dist/media/index.js.map +1 -1
  62. package/dist/media/properties.js +29 -90
  63. package/dist/media/properties.js.map +1 -1
  64. package/dist/mediaQualityMetrics/config.js +505 -493
  65. package/dist/mediaQualityMetrics/config.js.map +1 -1
  66. package/dist/meeting/in-meeting-actions.js +90 -2
  67. package/dist/meeting/in-meeting-actions.js.map +1 -1
  68. package/dist/meeting/index.js +2770 -2547
  69. package/dist/meeting/index.js.map +1 -1
  70. package/dist/meeting/locusMediaRequest.js +291 -0
  71. package/dist/meeting/locusMediaRequest.js.map +1 -0
  72. package/dist/meeting/muteState.js +229 -124
  73. package/dist/meeting/muteState.js.map +1 -1
  74. package/dist/meeting/request.js +199 -193
  75. package/dist/meeting/request.js.map +1 -1
  76. package/dist/meeting/util.js +532 -414
  77. package/dist/meeting/util.js.map +1 -1
  78. package/dist/meeting-info/index.js +48 -7
  79. package/dist/meeting-info/index.js.map +1 -1
  80. package/dist/meeting-info/meeting-info-v2.js +171 -51
  81. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  82. package/dist/meeting-info/utilv2.js +20 -5
  83. package/dist/meeting-info/utilv2.js.map +1 -1
  84. package/dist/meetings/collection.js +22 -0
  85. package/dist/meetings/collection.js.map +1 -1
  86. package/dist/meetings/index.js +357 -66
  87. package/dist/meetings/index.js.map +1 -1
  88. package/dist/meetings/meetings.types.js +7 -0
  89. package/dist/meetings/meetings.types.js.map +1 -0
  90. package/dist/meetings/request.js +2 -0
  91. package/dist/meetings/request.js.map +1 -1
  92. package/dist/meetings/util.js +88 -1
  93. package/dist/meetings/util.js.map +1 -1
  94. package/dist/member/index.js +49 -0
  95. package/dist/member/index.js.map +1 -1
  96. package/dist/member/types.js +25 -0
  97. package/dist/member/types.js.map +1 -0
  98. package/dist/member/util.js +121 -25
  99. package/dist/member/util.js.map +1 -1
  100. package/dist/members/collection.js +10 -0
  101. package/dist/members/collection.js.map +1 -1
  102. package/dist/members/index.js +86 -5
  103. package/dist/members/index.js.map +1 -1
  104. package/dist/members/request.js +106 -38
  105. package/dist/members/request.js.map +1 -1
  106. package/dist/members/types.js +15 -0
  107. package/dist/members/types.js.map +1 -0
  108. package/dist/members/util.js +316 -233
  109. package/dist/members/util.js.map +1 -1
  110. package/dist/metrics/constants.js +3 -5
  111. package/dist/metrics/constants.js.map +1 -1
  112. package/dist/metrics/index.js +1 -468
  113. package/dist/metrics/index.js.map +1 -1
  114. package/dist/multistream/mediaRequestManager.js +238 -49
  115. package/dist/multistream/mediaRequestManager.js.map +1 -1
  116. package/dist/multistream/receiveSlot.js +49 -16
  117. package/dist/multistream/receiveSlot.js.map +1 -1
  118. package/dist/multistream/receiveSlotManager.js +52 -34
  119. package/dist/multistream/receiveSlotManager.js.map +1 -1
  120. package/dist/multistream/remoteMedia.js +44 -18
  121. package/dist/multistream/remoteMedia.js.map +1 -1
  122. package/dist/multistream/remoteMediaGroup.js +60 -3
  123. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  124. package/dist/multistream/remoteMediaManager.js +173 -59
  125. package/dist/multistream/remoteMediaManager.js.map +1 -1
  126. package/dist/networkQualityMonitor/index.js +4 -2
  127. package/dist/networkQualityMonitor/index.js.map +1 -1
  128. package/dist/reachability/index.js +72 -27
  129. package/dist/reachability/index.js.map +1 -1
  130. package/dist/reachability/request.js +12 -5
  131. package/dist/reachability/request.js.map +1 -1
  132. package/dist/reconnection-manager/index.js +196 -155
  133. package/dist/reconnection-manager/index.js.map +1 -1
  134. package/dist/recording-controller/index.js +21 -2
  135. package/dist/recording-controller/index.js.map +1 -1
  136. package/dist/recording-controller/util.js +9 -8
  137. package/dist/recording-controller/util.js.map +1 -1
  138. package/dist/roap/index.js +21 -29
  139. package/dist/roap/index.js.map +1 -1
  140. package/dist/roap/request.js +110 -89
  141. package/dist/roap/request.js.map +1 -1
  142. package/dist/roap/turnDiscovery.js +93 -36
  143. package/dist/roap/turnDiscovery.js.map +1 -1
  144. package/dist/rtcMetrics/constants.js +12 -0
  145. package/dist/rtcMetrics/constants.js.map +1 -0
  146. package/dist/rtcMetrics/index.js +117 -0
  147. package/dist/rtcMetrics/index.js.map +1 -0
  148. package/dist/statsAnalyzer/global.js +1 -93
  149. package/dist/statsAnalyzer/global.js.map +1 -1
  150. package/dist/statsAnalyzer/index.js +326 -311
  151. package/dist/statsAnalyzer/index.js.map +1 -1
  152. package/dist/statsAnalyzer/mqaUtil.js +90 -53
  153. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  154. package/dist/types/annotation/annotation.types.d.ts +42 -0
  155. package/dist/types/annotation/constants.d.ts +31 -0
  156. package/dist/types/annotation/index.d.ts +117 -0
  157. package/dist/types/breakouts/breakout.d.ts +8 -0
  158. package/dist/types/breakouts/collection.d.ts +5 -0
  159. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  160. package/dist/types/breakouts/events.d.ts +8 -0
  161. package/dist/types/breakouts/index.d.ts +5 -0
  162. package/dist/types/breakouts/request.d.ts +22 -0
  163. package/dist/types/breakouts/utils.d.ts +15 -0
  164. package/dist/types/common/browser-detection.d.ts +9 -0
  165. package/dist/types/common/collection.d.ts +48 -0
  166. package/dist/types/common/config.d.ts +2 -0
  167. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  168. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  169. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  170. package/dist/types/common/errors/media.d.ts +15 -0
  171. package/dist/types/common/errors/parameter.d.ts +15 -0
  172. package/dist/types/common/errors/password-error.d.ts +15 -0
  173. package/dist/types/common/errors/permission.d.ts +14 -0
  174. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  175. package/dist/types/common/errors/reconnection.d.ts +15 -0
  176. package/dist/types/common/errors/stats.d.ts +15 -0
  177. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  178. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  179. package/dist/types/common/events/events-scope.d.ts +17 -0
  180. package/dist/types/common/events/events.d.ts +12 -0
  181. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  182. package/dist/types/common/events/util.d.ts +2 -0
  183. package/dist/types/common/logs/logger-config.d.ts +2 -0
  184. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  185. package/dist/types/common/logs/request.d.ts +34 -0
  186. package/dist/types/common/queue.d.ts +34 -0
  187. package/dist/types/config.d.ts +72 -0
  188. package/dist/types/constants.d.ts +1020 -0
  189. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  190. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  191. package/dist/types/controls-options-manager/index.d.ts +136 -0
  192. package/dist/types/controls-options-manager/types.d.ts +43 -0
  193. package/dist/types/controls-options-manager/util.d.ts +1 -0
  194. package/dist/types/index.d.ts +7 -0
  195. package/dist/types/interpretation/collection.d.ts +5 -0
  196. package/dist/types/interpretation/index.d.ts +5 -0
  197. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  198. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  199. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  200. package/dist/types/locus-info/fullState.d.ts +2 -0
  201. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  202. package/dist/types/locus-info/index.d.ts +322 -0
  203. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  204. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  205. package/dist/types/locus-info/parser.d.ts +271 -0
  206. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  207. package/dist/types/media/index.d.ts +34 -0
  208. package/dist/types/media/properties.d.ts +93 -0
  209. package/dist/types/media/util.d.ts +2 -0
  210. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  211. package/dist/types/meeting/in-meeting-actions.d.ts +163 -0
  212. package/dist/types/meeting/index.d.ts +1482 -0
  213. package/dist/types/meeting/locusMediaRequest.d.ts +72 -0
  214. package/dist/types/meeting/muteState.d.ts +184 -0
  215. package/dist/types/meeting/request.d.ts +257 -0
  216. package/dist/types/meeting/request.type.d.ts +11 -0
  217. package/dist/types/meeting/state.d.ts +9 -0
  218. package/dist/types/meeting/util.d.ts +79 -0
  219. package/dist/types/meeting-info/collection.d.ts +20 -0
  220. package/dist/types/meeting-info/index.d.ts +62 -0
  221. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  222. package/dist/types/meeting-info/request.d.ts +22 -0
  223. package/dist/types/meeting-info/util.d.ts +2 -0
  224. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  225. package/dist/types/meetings/collection.d.ts +31 -0
  226. package/dist/types/meetings/index.d.ts +367 -0
  227. package/dist/types/meetings/meetings.types.d.ts +4 -0
  228. package/dist/types/meetings/request.d.ts +27 -0
  229. package/dist/types/meetings/util.d.ts +18 -0
  230. package/dist/types/member/index.d.ts +159 -0
  231. package/dist/types/member/types.d.ts +32 -0
  232. package/dist/types/member/util.d.ts +2 -0
  233. package/dist/types/members/collection.d.ts +29 -0
  234. package/dist/types/members/index.d.ts +353 -0
  235. package/dist/types/members/request.d.ts +114 -0
  236. package/dist/types/members/types.d.ts +24 -0
  237. package/dist/types/members/util.d.ts +210 -0
  238. package/dist/types/metrics/constants.d.ts +55 -0
  239. package/dist/types/metrics/index.d.ts +45 -0
  240. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  241. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  242. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  243. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  244. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  245. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  246. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  247. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  248. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  249. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  250. package/dist/types/reachability/index.d.ts +152 -0
  251. package/dist/types/reachability/request.d.ts +37 -0
  252. package/dist/types/reactions/constants.d.ts +3 -0
  253. package/dist/types/reactions/reactions.d.ts +4 -0
  254. package/dist/types/reactions/reactions.type.d.ts +52 -0
  255. package/dist/types/reconnection-manager/index.d.ts +126 -0
  256. package/dist/types/recording-controller/enums.d.ts +7 -0
  257. package/dist/types/recording-controller/index.d.ts +207 -0
  258. package/dist/types/recording-controller/util.d.ts +14 -0
  259. package/dist/types/roap/index.d.ts +77 -0
  260. package/dist/types/roap/request.d.ts +36 -0
  261. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  262. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  263. package/dist/types/rtcMetrics/index.d.ts +46 -0
  264. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  265. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  266. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  267. package/dist/types/transcription/index.d.ts +64 -0
  268. package/package.json +23 -20
  269. package/src/annotation/annotation.types.ts +50 -0
  270. package/src/annotation/constants.ts +36 -0
  271. package/src/annotation/index.ts +328 -0
  272. package/src/breakouts/README.md +44 -14
  273. package/src/breakouts/breakout.ts +87 -9
  274. package/src/breakouts/edit-lock-error.ts +25 -0
  275. package/src/breakouts/events.ts +56 -0
  276. package/src/breakouts/index.ts +710 -10
  277. package/src/breakouts/request.ts +55 -0
  278. package/src/breakouts/utils.ts +57 -0
  279. package/src/common/errors/webex-errors.ts +6 -2
  280. package/src/common/logs/logger-proxy.ts +1 -1
  281. package/src/common/queue.ts +22 -8
  282. package/src/config.ts +2 -7
  283. package/src/constants.ts +165 -21
  284. package/src/controls-options-manager/constants.ts +5 -0
  285. package/src/controls-options-manager/enums.ts +18 -0
  286. package/src/controls-options-manager/index.ts +278 -0
  287. package/src/controls-options-manager/types.ts +59 -0
  288. package/src/controls-options-manager/util.ts +300 -0
  289. package/src/index.ts +39 -0
  290. package/src/interpretation/README.md +60 -0
  291. package/src/interpretation/collection.ts +19 -0
  292. package/src/interpretation/index.ts +332 -0
  293. package/src/interpretation/siLanguage.ts +18 -0
  294. package/src/locus-info/controlsUtils.ts +108 -0
  295. package/src/locus-info/index.ts +383 -61
  296. package/src/locus-info/infoUtils.ts +10 -2
  297. package/src/locus-info/mediaSharesUtils.ts +48 -0
  298. package/src/locus-info/parser.ts +224 -39
  299. package/src/locus-info/selfUtils.ts +81 -5
  300. package/src/media/index.ts +87 -140
  301. package/src/media/properties.ts +49 -90
  302. package/src/mediaQualityMetrics/config.ts +379 -377
  303. package/src/meeting/in-meeting-actions.ts +179 -3
  304. package/src/meeting/index.ts +2099 -2083
  305. package/src/meeting/locusMediaRequest.ts +311 -0
  306. package/src/meeting/muteState.ts +228 -132
  307. package/src/meeting/request.ts +105 -115
  308. package/src/meeting/util.ts +511 -397
  309. package/src/meeting-info/index.ts +54 -8
  310. package/src/meeting-info/meeting-info-v2.ts +148 -14
  311. package/src/meeting-info/utilv2.ts +13 -3
  312. package/src/meetings/collection.ts +20 -0
  313. package/src/meetings/index.ts +392 -84
  314. package/src/meetings/meetings.types.ts +12 -0
  315. package/src/meetings/request.ts +2 -0
  316. package/src/meetings/util.ts +103 -4
  317. package/src/member/index.ts +49 -0
  318. package/src/member/types.ts +38 -0
  319. package/src/member/util.ts +127 -25
  320. package/src/members/collection.ts +8 -0
  321. package/src/members/index.ts +107 -6
  322. package/src/members/request.ts +97 -17
  323. package/src/members/types.ts +28 -0
  324. package/src/members/util.ts +319 -240
  325. package/src/metrics/constants.ts +2 -4
  326. package/src/metrics/index.ts +1 -490
  327. package/src/multistream/mediaRequestManager.ts +289 -79
  328. package/src/multistream/receiveSlot.ts +55 -18
  329. package/src/multistream/receiveSlotManager.ts +46 -24
  330. package/src/multistream/remoteMedia.ts +27 -2
  331. package/src/multistream/remoteMediaGroup.ts +59 -0
  332. package/src/multistream/remoteMediaManager.ts +113 -32
  333. package/src/networkQualityMonitor/index.ts +6 -6
  334. package/src/reachability/index.ts +62 -15
  335. package/src/reachability/request.ts +10 -5
  336. package/src/reconnection-manager/index.ts +68 -43
  337. package/src/recording-controller/index.ts +20 -3
  338. package/src/recording-controller/util.ts +26 -9
  339. package/src/roap/index.ts +21 -30
  340. package/src/roap/request.ts +101 -95
  341. package/src/roap/turnDiscovery.ts +47 -25
  342. package/src/rtcMetrics/constants.ts +3 -0
  343. package/src/rtcMetrics/index.ts +100 -0
  344. package/src/statsAnalyzer/global.ts +1 -94
  345. package/src/statsAnalyzer/index.ts +376 -386
  346. package/src/statsAnalyzer/mqaUtil.ts +100 -99
  347. package/test/integration/spec/converged-space-meetings.js +233 -0
  348. package/test/integration/spec/journey.js +336 -259
  349. package/test/integration/spec/space-meeting.js +77 -4
  350. package/test/unit/spec/annotation/index.ts +418 -0
  351. package/test/unit/spec/breakouts/breakout.ts +142 -24
  352. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  353. package/test/unit/spec/breakouts/events.ts +89 -0
  354. package/test/unit/spec/breakouts/index.ts +1545 -48
  355. package/test/unit/spec/breakouts/request.ts +104 -0
  356. package/test/unit/spec/breakouts/utils.js +72 -0
  357. package/test/unit/spec/common/queue.js +31 -2
  358. package/test/unit/spec/controls-options-manager/index.js +287 -0
  359. package/test/unit/spec/controls-options-manager/util.js +582 -0
  360. package/test/unit/spec/fixture/locus.js +1 -0
  361. package/test/unit/spec/interpretation/collection.ts +15 -0
  362. package/test/unit/spec/interpretation/index.ts +589 -0
  363. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  364. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  365. package/test/unit/spec/locus-info/index.js +1169 -36
  366. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  367. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  368. package/test/unit/spec/locus-info/parser.js +62 -22
  369. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  370. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  371. package/test/unit/spec/media/index.ts +138 -28
  372. package/test/unit/spec/meeting/in-meeting-actions.ts +89 -3
  373. package/test/unit/spec/meeting/index.js +3573 -1663
  374. package/test/unit/spec/meeting/locusMediaRequest.ts +438 -0
  375. package/test/unit/spec/meeting/muteState.js +370 -208
  376. package/test/unit/spec/meeting/request.js +339 -44
  377. package/test/unit/spec/meeting/utils.js +456 -53
  378. package/test/unit/spec/meeting-info/index.js +181 -0
  379. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  380. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  381. package/test/unit/spec/meetings/collection.js +14 -0
  382. package/test/unit/spec/meetings/index.js +867 -125
  383. package/test/unit/spec/meetings/utils.js +206 -2
  384. package/test/unit/spec/member/index.js +58 -4
  385. package/test/unit/spec/member/util.js +479 -35
  386. package/test/unit/spec/members/index.js +319 -1
  387. package/test/unit/spec/members/request.js +206 -27
  388. package/test/unit/spec/members/utils.js +184 -0
  389. package/test/unit/spec/metrics/index.js +1 -50
  390. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  391. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  392. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  393. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  394. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  395. package/test/unit/spec/multistream/remoteMediaManager.ts +318 -0
  396. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  397. package/test/unit/spec/reachability/index.ts +125 -8
  398. package/test/unit/spec/reachability/request.js +66 -0
  399. package/test/unit/spec/reconnection-manager/index.js +59 -6
  400. package/test/unit/spec/recording-controller/index.js +294 -218
  401. package/test/unit/spec/recording-controller/util.js +223 -96
  402. package/test/unit/spec/roap/index.ts +26 -51
  403. package/test/unit/spec/roap/request.ts +196 -85
  404. package/test/unit/spec/roap/turnDiscovery.ts +30 -7
  405. package/test/unit/spec/rtcMetrics/index.ts +60 -0
  406. package/test/unit/spec/stats-analyzer/index.js +92 -41
  407. package/test/utils/constants.js +9 -0
  408. package/test/utils/integrationTestUtils.js +46 -0
  409. package/test/utils/testUtils.js +0 -45
  410. package/test/utils/webex-config.js +4 -0
  411. package/test/utils/webex-test-users.js +6 -3
  412. package/dist/meeting/effectsState.js +0 -262
  413. package/dist/meeting/effectsState.js.map +0 -1
  414. package/dist/metrics/config.js +0 -299
  415. package/dist/metrics/config.js.map +0 -1
  416. package/dist/multistream/multistreamMedia.js +0 -110
  417. package/dist/multistream/multistreamMedia.js.map +0 -1
  418. package/src/index.js +0 -16
  419. package/src/meeting/effectsState.ts +0 -211
  420. package/src/metrics/config.ts +0 -495
  421. package/src/multistream/multistreamMedia.ts +0 -97
  422. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -23,6 +23,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
23
23
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
24
24
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
25
25
  var _remove2 = _interopRequireDefault(require("lodash/remove"));
26
+ var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
26
27
  var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
27
28
  var _internalMediaCore = require("@webex/internal-media-core");
28
29
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
@@ -69,6 +70,7 @@ var OnePlusFiveLayout = {
69
70
  };
70
71
 
71
72
  // A layout with 2 big panes for 2 main active speakers and a strip of 6 small panes for other active speakers:
73
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
72
74
  var TwoMainPlusSixSmallLayout = {
73
75
  activeSpeakerVideoPaneGroups: [{
74
76
  id: 'mainGroupWith2BigPanes',
@@ -85,7 +87,9 @@ var TwoMainPlusSixSmallLayout = {
85
87
 
86
88
  // A strip of 8 small video panes (thumbnails) displayed at the top of a remote screenshare:
87
89
  var RemoteScreenShareWithSmallThumbnailsLayout = {
88
- // screenShareVideo: {size: 'best'}, // todo: SPARK-393485: uncomment this once backend supports screen sharing
90
+ screenShareVideo: {
91
+ size: 'best'
92
+ },
89
93
  activeSpeakerVideoPaneGroups: [{
90
94
  id: 'thumbnails',
91
95
  numPanes: 8,
@@ -130,9 +134,8 @@ var Stage2x2With6ThumbnailsLayout = {
130
134
  var DefaultConfiguration = {
131
135
  audio: {
132
136
  numOfActiveSpeakerStreams: 3,
133
- numOfScreenShareStreams: 0 // todo: SPARK-393485: change to 1 once backend supports screen sharing
137
+ numOfScreenShareStreams: 1
134
138
  },
135
-
136
139
  video: {
137
140
  preferLiveVideo: true,
138
141
  initialLayoutId: 'AllEqual',
@@ -464,6 +467,41 @@ var RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
464
467
  return this.currentLayoutId;
465
468
  }
466
469
 
470
+ /**
471
+ * sets the preferLiveVideo
472
+ */
473
+ }, {
474
+ key: "setPreferLiveVideo",
475
+ value: function setPreferLiveVideo(preferLiveVideo) {
476
+ _loggerProxy.default.logger.log("RemoteMediaManager#setPreferLiveVideo --> setPreferLiveVideo is called to set preferLiveVideo to ".concat(preferLiveVideo));
477
+ this.config.video.preferLiveVideo = preferLiveVideo;
478
+ (0, _values.default)(this.media.video.activeSpeakerGroups).forEach(function (activeSpeakerGroup) {
479
+ activeSpeakerGroup.setPreferLiveVideo(preferLiveVideo, false);
480
+ });
481
+ this.mediaRequestManagers.video.commit();
482
+ }
483
+
484
+ /**
485
+ * Sets CSIs for multiple RemoteMedia instances belonging to RemoteMediaGroup.
486
+ * For each entry in the remoteMediaCsis array:
487
+ * - if csi is specified, the RemoteMedia instance is pinned to that CSI
488
+ * - if csi is undefined, the RemoteMedia instance is unpinned
489
+ */
490
+ }, {
491
+ key: "setActiveSpeakerCsis",
492
+ value: function setActiveSpeakerCsis(remoteMediaCsis) {
493
+ (0, _values.default)(this.media.video.activeSpeakerGroups).forEach(function (remoteMediaGroup) {
494
+ var groupRemoteMediaCsis = remoteMediaCsis.filter(function (_ref) {
495
+ var remoteMedia = _ref.remoteMedia;
496
+ return remoteMediaGroup.includes(remoteMedia);
497
+ });
498
+ if (groupRemoteMediaCsis.length > 0) {
499
+ remoteMediaGroup.setActiveSpeakerCsis(groupRemoteMediaCsis, false);
500
+ }
501
+ });
502
+ this.mediaRequestManagers.video.commit();
503
+ }
504
+
467
505
  /**
468
506
  * Creates the audio slots
469
507
  */
@@ -617,70 +655,82 @@ var RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
617
655
  }
618
656
 
619
657
  /**
620
- * Allocates receive slots to all video panes in the current selected layout
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.
621
664
  */
622
665
  }, {
623
- key: "allocateSlotsToVideoPaneGroups",
624
- value: function allocateSlotsToVideoPaneGroups() {
666
+ key: "allocateSlotsToActiveSpeakerPaneGroups",
667
+ value: function allocateSlotsToActiveSpeakerPaneGroups() {
625
668
  var _this$currentLayout2,
626
669
  _this$currentLayout2$,
627
- _this5 = this,
628
- _this$currentLayout3,
629
- _this$currentLayout3$;
630
- this.receiveSlotAllocations = {
631
- activeSpeaker: {},
632
- receiverSelected: {}
633
- };
634
- (_this$currentLayout2 = this.currentLayout) === null || _this$currentLayout2 === void 0 ? void 0 : (_this$currentLayout2$ = _this$currentLayout2.activeSpeakerVideoPaneGroups) === null || _this$currentLayout2$ === void 0 ? void 0 : _this$currentLayout2$.forEach(function (group) {
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) {
635
677
  _this5.receiveSlotAllocations.activeSpeaker[group.id] = {
636
678
  slots: []
637
679
  };
638
680
  for (var paneIndex = 0; paneIndex < group.numPanes; paneIndex += 1) {
639
- // allocate a slot from the "unused" list
640
- var freeSlot = _this5.slots.video.unused.pop();
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();
641
683
  if (freeSlot) {
642
684
  _this5.slots.video.activeSpeaker.push(freeSlot);
643
685
  _this5.receiveSlotAllocations.activeSpeaker[group.id].slots.push(freeSlot);
644
686
  }
645
687
  }
646
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;
647
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) {
648
702
  // check if there is existing slot for this csi
649
- var existingSlot = _this5.slots.video.receiverSelected.find(function (slot) {
703
+ var existingSlot = _this6.slots.video.receiverSelected.find(function (slot) {
650
704
  return slot.csi === memberPane.csi;
651
705
  });
652
- var isExistingSlotAlreadyAllocated = (0, _values.default)(_this5.receiveSlotAllocations.receiverSelected).includes(existingSlot);
706
+ var isExistingSlotAlreadyAllocated = (0, _values.default)(_this6.receiveSlotAllocations.receiverSelected).includes(existingSlot);
653
707
  if (memberPane.csi !== undefined && existingSlot && !isExistingSlotAlreadyAllocated) {
654
708
  // found it, so use it
655
- _this5.receiveSlotAllocations.receiverSelected[memberPane.id] = existingSlot;
709
+ _this6.receiveSlotAllocations.receiverSelected[memberPane.id] = existingSlot;
656
710
  } else {
657
711
  // allocate a slot from the "unused" list
658
- var freeSlot = _this5.slots.video.unused.pop();
712
+ var freeSlot = _this6.slots.video.unused.pop();
659
713
  if (freeSlot) {
660
- _this5.slots.video.receiverSelected.push(freeSlot);
661
- _this5.receiveSlotAllocations.receiverSelected[memberPane.id] = freeSlot;
714
+ _this6.slots.video.receiverSelected.push(freeSlot);
715
+ _this6.receiveSlotAllocations.receiverSelected[memberPane.id] = freeSlot;
662
716
  }
663
717
  }
664
718
  });
665
719
  }
666
720
 
667
721
  /**
668
- * Makes sure we have the right number of receive slots created for the current layout
669
- * and allocates them to the right video panes / pane groups
670
- *
671
- * @returns {Promise}
722
+ * Ensures that we have enough slots for the current layout.
672
723
  */
673
724
  }, {
674
- key: "updateVideoReceiveSlots",
725
+ key: "refillRequiredSlotsIfNeeded",
675
726
  value: function () {
676
- var _updateVideoReceiveSlots = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
677
- var _this$slots$video$unu4;
727
+ var _refillRequiredSlotsIfNeeded = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
678
728
  var requiredNumSlots, totalNumSlots, numSlotsToCreate;
679
729
  return _regenerator.default.wrap(function _callee6$(_context6) {
680
730
  while (1) switch (_context6.prev = _context6.next) {
681
731
  case 0:
682
732
  requiredNumSlots = this.getRequiredNumVideoSlotsForLayout(this.currentLayout);
683
- totalNumSlots = this.slots.video.unused.length + this.slots.video.activeSpeaker.length + this.slots.video.receiverSelected.length; // ensure we have enough total slots for current layout
733
+ totalNumSlots = this.slots.video.unused.length + this.slots.video.activeSpeaker.length + this.slots.video.receiverSelected.length;
684
734
  if (!(totalNumSlots < requiredNumSlots)) {
685
735
  _context6.next = 13;
686
736
  break;
@@ -701,25 +751,89 @@ var RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
701
751
  _context6.next = 4;
702
752
  break;
703
753
  case 13:
704
- // move all no longer needed receiver-selected slots to "unused"
705
- this.trimReceiverSelectedSlots();
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
+ key: "trimActiveSpeakerSlots",
769
+ value: function trimActiveSpeakerSlots() {
770
+ var _this$slots$video$unu4;
771
+ (_this$slots$video$unu4 = this.slots.video.unused).push.apply(_this$slots$video$unu4, (0, _toConsumableArray2.default)(this.slots.video.activeSpeaker));
772
+ this.slots.video.activeSpeaker.length = 0;
773
+ }
774
+
775
+ /**
776
+ * Logs the state of the receive slots
777
+ */
778
+ }, {
779
+ key: "logReceieveSlots",
780
+ value: function logReceieveSlots() {
781
+ var logMessage = '';
782
+ (0, _forEach2.default)(this.receiveSlotAllocations.activeSpeaker, function (group, groupName) {
783
+ logMessage += "group: ".concat(groupName, "\n").concat(group.slots.map(function (slot) {
784
+ return slot.logString;
785
+ }).join(' '));
786
+ });
787
+ logMessage += '\nreceiverSelected:\n';
788
+ (0, _forEach2.default)(this.receiveSlotAllocations.receiverSelected, function (slot, key) {
789
+ logMessage += " ".concat(key, ": ").concat(slot.logString, "\n");
790
+ });
791
+ _loggerProxy.default.logger.log("RemoteMediaManager#updateVideoReceiveSlots --> receive slots updated: unused=".concat(this.slots.video.unused.length, ", activeSpeaker=").concat(this.slots.video.activeSpeaker.length, ", receiverSelected=").concat(this.slots.video.receiverSelected.length, "\n").concat(logMessage));
792
+ }
706
793
 
794
+ /**
795
+ * Makes sure we have the right number of receive slots created for the current layout
796
+ * and allocates them to the right video panes / pane groups
797
+ *
798
+ * @returns {Promise}
799
+ */
800
+ }, {
801
+ key: "updateVideoReceiveSlots",
802
+ value: function () {
803
+ var _updateVideoReceiveSlots = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
804
+ return _regenerator.default.wrap(function _callee7$(_context7) {
805
+ while (1) switch (_context7.prev = _context7.next) {
806
+ case 0:
707
807
  // move all active speaker slots to "unused"
708
- (_this$slots$video$unu4 = this.slots.video.unused).push.apply(_this$slots$video$unu4, (0, _toConsumableArray2.default)(this.slots.video.activeSpeaker));
709
- this.slots.video.activeSpeaker.length = 0;
808
+ this.trimActiveSpeakerSlots();
809
+
810
+ // move all no longer needed receiver-selected slots to "unused"
811
+ this.trimReceiverSelectedSlots();
710
812
 
813
+ // ensure we have enough total slots for current layout
814
+ _context7.next = 4;
815
+ return this.refillRequiredSlotsIfNeeded();
816
+ case 4:
711
817
  // allocate the slots to the right panes / pane groups
712
- this.allocateSlotsToVideoPaneGroups();
713
- _loggerProxy.default.logger.log("RemoteMediaManager#updateVideoReceiveSlots --> receive slots updated: unused=".concat(this.slots.video.unused.length, ", activeSpeaker=").concat(this.slots.video.activeSpeaker.length, ", receiverSelected=").concat(this.slots.video.receiverSelected.length));
818
+ // reset allocations
819
+ this.receiveSlotAllocations = {
820
+ activeSpeaker: {},
821
+ receiverSelected: {}
822
+ };
823
+ // allocate active speaker
824
+ this.allocateSlotsToActiveSpeakerPaneGroups();
825
+ // allocate receiver selected
826
+ this.allocateSlotsToReceiverSelectedVideoPaneGroups();
827
+ this.logReceieveSlots();
714
828
 
715
829
  // If this is the initial layout, there may be some "unused" slots left because of the preallocation
716
830
  // done in this.preallocateVideoReceiveSlots(), so release them now
717
831
  this.releaseUnusedVideoSlots();
718
- case 19:
832
+ case 9:
719
833
  case "end":
720
- return _context6.stop();
834
+ return _context7.stop();
721
835
  }
722
- }, _callee6, this);
836
+ }, _callee7, this);
723
837
  }));
724
838
  function updateVideoReceiveSlots() {
725
839
  return _updateVideoReceiveSlots.apply(this, arguments);
@@ -733,7 +847,7 @@ var RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
733
847
  }, {
734
848
  key: "updateVideoRemoteMediaObjects",
735
849
  value: function updateVideoRemoteMediaObjects() {
736
- var _this6 = this;
850
+ var _this7 = this;
737
851
  // invalidate all the previous remote media objects and cancel their media requests
738
852
  this.invalidateCurrentRemoteMedia({
739
853
  audio: false,
@@ -747,19 +861,19 @@ var RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
747
861
  this.media.video.activeSpeakerGroups = {};
748
862
  this.media.video.memberPanes = {};
749
863
  var _loop = function _loop() {
750
- var _this6$currentLayout, _this6$currentLayout$;
864
+ var _this7$currentLayout, _this7$currentLayout$;
751
865
  var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
752
866
  groupId = _Object$entries$_i[0],
753
867
  group = _Object$entries$_i[1];
754
- var paneGroupInCurrentLayout = (_this6$currentLayout = _this6.currentLayout) === null || _this6$currentLayout === void 0 ? void 0 : (_this6$currentLayout$ = _this6$currentLayout.activeSpeakerVideoPaneGroups) === null || _this6$currentLayout$ === void 0 ? void 0 : _this6$currentLayout$.find(function (groupInLayout) {
868
+ 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) {
755
869
  return groupInLayout.id === groupId;
756
870
  });
757
871
  if (paneGroupInCurrentLayout) {
758
- var mediaGroup = new _remoteMediaGroup.RemoteMediaGroup(_this6.mediaRequestManagers.video, group.slots, paneGroupInCurrentLayout.priority, false, {
759
- preferLiveVideo: _this6.config.video.preferLiveVideo,
872
+ var mediaGroup = new _remoteMediaGroup.RemoteMediaGroup(_this7.mediaRequestManagers.video, group.slots, paneGroupInCurrentLayout.priority, false, {
873
+ preferLiveVideo: _this7.config.video.preferLiveVideo,
760
874
  resolution: paneGroupInCurrentLayout.size
761
875
  });
762
- _this6.media.video.activeSpeakerGroups[groupId] = mediaGroup;
876
+ _this7.media.video.activeSpeakerGroups[groupId] = mediaGroup;
763
877
  } else {
764
878
  // this should never happen, because this.receiveSlotAllocations are created based on current layout configuration
765
879
  _loggerProxy.default.logger.warn("a group id ".concat(groupId, " from this.receiveSlotAllocations.activeSpeaker cannot be found in the current layout configuration"));
@@ -771,21 +885,21 @@ var RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
771
885
 
772
886
  // create new remoteMedia objects
773
887
  var _loop2 = function _loop2() {
774
- var _this6$currentLayout2, _this6$currentLayout3;
888
+ var _this7$currentLayout2, _this7$currentLayout3;
775
889
  var _Object$entries3$_i = (0, _slicedToArray2.default)(_Object$entries3[_i2], 2),
776
890
  paneId = _Object$entries3$_i[0],
777
891
  slot = _Object$entries3$_i[1];
778
- var paneInCurrentLayout = (_this6$currentLayout2 = _this6.currentLayout) === null || _this6$currentLayout2 === void 0 ? void 0 : (_this6$currentLayout3 = _this6$currentLayout2.memberVideoPanes) === null || _this6$currentLayout3 === void 0 ? void 0 : _this6$currentLayout3.find(function (paneInLayout) {
892
+ 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) {
779
893
  return paneInLayout.id === paneId;
780
894
  });
781
895
  if (paneInCurrentLayout) {
782
- var remoteMedia = new _remoteMedia.RemoteMedia(slot, _this6.mediaRequestManagers.video, {
896
+ var remoteMedia = new _remoteMedia.RemoteMedia(slot, _this7.mediaRequestManagers.video, {
783
897
  resolution: paneInCurrentLayout.size
784
898
  });
785
899
  if (paneInCurrentLayout.csi) {
786
900
  remoteMedia.sendMediaRequest(paneInCurrentLayout.csi, false);
787
901
  }
788
- _this6.media.video.memberPanes[paneId] = remoteMedia;
902
+ _this7.media.video.memberPanes[paneId] = remoteMedia;
789
903
  } else {
790
904
  // this should never happen, because this.receiveSlotAllocations are created based on current layout configuration
791
905
  _loggerProxy.default.logger.warn("a pane id ".concat(paneId, " from this.receiveSlotAllocations.receiverSelected cannot be found in the current layout configuration"));
@@ -909,14 +1023,14 @@ var RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
909
1023
  }, {
910
1024
  key: "addMemberVideoPane",
911
1025
  value: function () {
912
- var _addMemberVideoPane = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(newPane) {
1026
+ var _addMemberVideoPane = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(newPane) {
913
1027
  var _this$currentLayout5;
914
1028
  var receiveSlot, remoteMedia;
915
- return _regenerator.default.wrap(function _callee7$(_context7) {
916
- while (1) switch (_context7.prev = _context7.next) {
1029
+ return _regenerator.default.wrap(function _callee8$(_context8) {
1030
+ while (1) switch (_context8.prev = _context8.next) {
917
1031
  case 0:
918
1032
  if (this.currentLayout) {
919
- _context7.next = 2;
1033
+ _context8.next = 2;
920
1034
  break;
921
1035
  }
922
1036
  throw new Error('There is no current layout selected, call start() first');
@@ -925,16 +1039,16 @@ var RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
925
1039
  this.currentLayout.memberVideoPanes = [];
926
1040
  }
927
1041
  if (!(newPane.id in this.currentLayout.memberVideoPanes)) {
928
- _context7.next = 5;
1042
+ _context8.next = 5;
929
1043
  break;
930
1044
  }
931
1045
  throw new Error("duplicate pane id ".concat(newPane.id, " - this pane already exists in current layout's memberVideoPanes"));
932
1046
  case 5:
933
1047
  this.currentLayout.memberVideoPanes.push(newPane);
934
- _context7.next = 8;
1048
+ _context8.next = 8;
935
1049
  return this.receiveSlotManager.allocateSlot(_internalMediaCore.MediaType.VideoMain);
936
1050
  case 8:
937
- receiveSlot = _context7.sent;
1051
+ receiveSlot = _context8.sent;
938
1052
  this.slots.video.receiverSelected.push(receiveSlot);
939
1053
  remoteMedia = new _remoteMedia.RemoteMedia(receiveSlot, this.mediaRequestManagers.video, {
940
1054
  resolution: newPane.size
@@ -943,12 +1057,12 @@ var RemoteMediaManager = /*#__PURE__*/function (_EventsScope) {
943
1057
  remoteMedia.sendMediaRequest(newPane.csi, true);
944
1058
  }
945
1059
  this.media.video.memberPanes[newPane.id] = remoteMedia;
946
- return _context7.abrupt("return", remoteMedia);
1060
+ return _context8.abrupt("return", remoteMedia);
947
1061
  case 14:
948
1062
  case "end":
949
- return _context7.stop();
1063
+ return _context8.stop();
950
1064
  }
951
- }, _callee7, this);
1065
+ }, _callee8, this);
952
1066
  }));
953
1067
  function addMemberVideoPane(_x2) {
954
1068
  return _addMemberVideoPane.apply(this, arguments);