@webex/plugin-meetings 2.59.8 → 2.60.0-next.10

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 (517) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.d.ts +31 -0
  6. package/dist/annotation/constants.js +41 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.d.ts +117 -0
  9. package/dist/annotation/index.js +357 -0
  10. package/dist/annotation/index.js.map +1 -0
  11. package/dist/breakouts/breakout.d.ts +8 -0
  12. package/dist/breakouts/breakout.js +215 -0
  13. package/dist/breakouts/breakout.js.map +1 -0
  14. package/dist/breakouts/collection.d.ts +5 -0
  15. package/dist/breakouts/collection.js +22 -0
  16. package/dist/breakouts/collection.js.map +1 -0
  17. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  18. package/dist/breakouts/edit-lock-error.js +51 -0
  19. package/dist/breakouts/edit-lock-error.js.map +1 -0
  20. package/dist/breakouts/events.d.ts +8 -0
  21. package/dist/breakouts/events.js +44 -0
  22. package/dist/breakouts/events.js.map +1 -0
  23. package/dist/breakouts/index.d.ts +5 -0
  24. package/dist/breakouts/index.js +1047 -0
  25. package/dist/breakouts/index.js.map +1 -0
  26. package/dist/breakouts/request.d.ts +22 -0
  27. package/dist/breakouts/request.js +77 -0
  28. package/dist/breakouts/request.js.map +1 -0
  29. package/dist/breakouts/utils.d.ts +15 -0
  30. package/dist/breakouts/utils.js +64 -0
  31. package/dist/breakouts/utils.js.map +1 -0
  32. package/dist/common/browser-detection.js +2 -3
  33. package/dist/common/browser-detection.js.map +1 -1
  34. package/dist/common/collection.js +3 -4
  35. package/dist/common/collection.js.map +1 -1
  36. package/dist/common/config.js +1 -2
  37. package/dist/common/config.js.map +1 -1
  38. package/dist/common/errors/captcha-error.js +1 -2
  39. package/dist/common/errors/captcha-error.js.map +1 -1
  40. package/dist/common/errors/intent-to-join.js +1 -2
  41. package/dist/common/errors/intent-to-join.js.map +1 -1
  42. package/dist/common/errors/join-meeting.js +1 -2
  43. package/dist/common/errors/join-meeting.js.map +1 -1
  44. package/dist/common/errors/media.js +1 -2
  45. package/dist/common/errors/media.js.map +1 -1
  46. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  47. package/dist/common/errors/no-meeting-info.js +50 -0
  48. package/dist/common/errors/no-meeting-info.js.map +1 -0
  49. package/dist/common/errors/parameter.js +3 -4
  50. package/dist/common/errors/parameter.js.map +1 -1
  51. package/dist/common/errors/password-error.js +1 -2
  52. package/dist/common/errors/password-error.js.map +1 -1
  53. package/dist/common/errors/permission.js +1 -2
  54. package/dist/common/errors/permission.js.map +1 -1
  55. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  56. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  57. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  58. package/dist/common/errors/reconnection-in-progress.js +1 -2
  59. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  60. package/dist/common/errors/reconnection.js +1 -2
  61. package/dist/common/errors/reconnection.js.map +1 -1
  62. package/dist/common/errors/stats.js +1 -2
  63. package/dist/common/errors/stats.js.map +1 -1
  64. package/dist/common/errors/webex-errors.d.ts +20 -8
  65. package/dist/common/errors/webex-errors.js +48 -28
  66. package/dist/common/errors/webex-errors.js.map +1 -1
  67. package/dist/common/errors/webex-meetings-error.js +1 -2
  68. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  69. package/dist/common/events/events-scope.js +1 -2
  70. package/dist/common/events/events-scope.js.map +1 -1
  71. package/dist/common/events/events.js +1 -2
  72. package/dist/common/events/events.js.map +1 -1
  73. package/dist/common/events/trigger-proxy.js +1 -2
  74. package/dist/common/events/trigger-proxy.js.map +1 -1
  75. package/dist/common/events/util.js +1 -2
  76. package/dist/common/events/util.js.map +1 -1
  77. package/dist/common/logs/logger-config.js +1 -2
  78. package/dist/common/logs/logger-config.js.map +1 -1
  79. package/dist/common/logs/logger-proxy.js +2 -3
  80. package/dist/common/logs/logger-proxy.js.map +1 -1
  81. package/dist/common/logs/request.d.ts +3 -1
  82. package/dist/common/logs/request.js +8 -5
  83. package/dist/common/logs/request.js.map +1 -1
  84. package/dist/common/queue.d.ts +9 -7
  85. package/dist/common/queue.js +22 -9
  86. package/dist/common/queue.js.map +1 -1
  87. package/dist/config.d.ts +5 -7
  88. package/dist/config.js +8 -11
  89. package/dist/config.js.map +1 -1
  90. package/dist/constants.d.ts +243 -97
  91. package/dist/constants.js +437 -435
  92. package/dist/constants.js.map +1 -1
  93. package/dist/controls-options-manager/constants.js +3 -6
  94. package/dist/controls-options-manager/constants.js.map +1 -1
  95. package/dist/controls-options-manager/enums.d.ts +11 -1
  96. package/dist/controls-options-manager/enums.js +15 -6
  97. package/dist/controls-options-manager/enums.js.map +1 -1
  98. package/dist/controls-options-manager/index.d.ts +17 -1
  99. package/dist/controls-options-manager/index.js +127 -38
  100. package/dist/controls-options-manager/index.js.map +1 -1
  101. package/dist/controls-options-manager/types.d.ts +43 -0
  102. package/dist/controls-options-manager/types.js +7 -0
  103. package/dist/controls-options-manager/types.js.map +1 -0
  104. package/dist/controls-options-manager/util.d.ts +1 -7
  105. package/dist/controls-options-manager/util.js +309 -19
  106. package/dist/controls-options-manager/util.js.map +1 -1
  107. package/dist/index.d.ts +6 -3
  108. package/dist/index.js +116 -4
  109. package/dist/index.js.map +1 -1
  110. package/dist/interpretation/collection.d.ts +5 -0
  111. package/dist/interpretation/collection.js +22 -0
  112. package/dist/interpretation/collection.js.map +1 -0
  113. package/dist/interpretation/index.d.ts +5 -0
  114. package/dist/interpretation/index.js +365 -0
  115. package/dist/interpretation/index.js.map +1 -0
  116. package/dist/interpretation/siLanguage.d.ts +5 -0
  117. package/dist/interpretation/siLanguage.js +24 -0
  118. package/dist/interpretation/siLanguage.js.map +1 -0
  119. package/dist/locus-info/controlsUtils.js +100 -11
  120. package/dist/locus-info/controlsUtils.js.map +1 -1
  121. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  122. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  123. package/dist/locus-info/fullState.js +1 -2
  124. package/dist/locus-info/fullState.js.map +1 -1
  125. package/dist/locus-info/hostUtils.js +1 -2
  126. package/dist/locus-info/hostUtils.js.map +1 -1
  127. package/dist/locus-info/index.d.ts +57 -4
  128. package/dist/locus-info/index.js +425 -84
  129. package/dist/locus-info/index.js.map +1 -1
  130. package/dist/locus-info/infoUtils.js +13 -5
  131. package/dist/locus-info/infoUtils.js.map +1 -1
  132. package/dist/locus-info/mediaSharesUtils.js +58 -3
  133. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  134. package/dist/locus-info/parser.d.ts +66 -6
  135. package/dist/locus-info/parser.js +253 -80
  136. package/dist/locus-info/parser.js.map +1 -1
  137. package/dist/locus-info/selfUtils.js +97 -13
  138. package/dist/locus-info/selfUtils.js.map +1 -1
  139. package/dist/media/index.d.ts +2 -0
  140. package/dist/media/index.js +107 -319
  141. package/dist/media/index.js.map +1 -1
  142. package/dist/media/properties.d.ts +38 -53
  143. package/dist/media/properties.js +96 -153
  144. package/dist/media/properties.js.map +1 -1
  145. package/dist/media/util.js +1 -22
  146. package/dist/media/util.js.map +1 -1
  147. package/dist/mediaQualityMetrics/config.d.ts +234 -230
  148. package/dist/mediaQualityMetrics/config.js +302 -498
  149. package/dist/mediaQualityMetrics/config.js.map +1 -1
  150. package/dist/meeting/in-meeting-actions.d.ts +88 -0
  151. package/dist/meeting/in-meeting-actions.js +94 -3
  152. package/dist/meeting/in-meeting-actions.js.map +1 -1
  153. package/dist/meeting/index.d.ts +591 -494
  154. package/dist/meeting/index.js +4728 -2990
  155. package/dist/meeting/index.js.map +1 -1
  156. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  157. package/dist/meeting/locusMediaRequest.js +291 -0
  158. package/dist/meeting/locusMediaRequest.js.map +1 -0
  159. package/dist/meeting/muteState.d.ts +93 -25
  160. package/dist/meeting/muteState.js +224 -133
  161. package/dist/meeting/muteState.js.map +1 -1
  162. package/dist/meeting/request.d.ts +82 -47
  163. package/dist/meeting/request.js +297 -199
  164. package/dist/meeting/request.js.map +1 -1
  165. package/dist/meeting/request.type.d.ts +11 -0
  166. package/dist/meeting/request.type.js +7 -0
  167. package/dist/meeting/request.type.js.map +1 -0
  168. package/dist/meeting/state.js +1 -2
  169. package/dist/meeting/state.js.map +1 -1
  170. package/dist/meeting/util.d.ts +102 -1
  171. package/dist/meeting/util.js +605 -435
  172. package/dist/meeting/util.js.map +1 -1
  173. package/dist/meeting-info/collection.js +3 -4
  174. package/dist/meeting-info/collection.js.map +1 -1
  175. package/dist/meeting-info/index.d.ts +13 -1
  176. package/dist/meeting-info/index.js +74 -7
  177. package/dist/meeting-info/index.js.map +1 -1
  178. package/dist/meeting-info/meeting-info-v2.d.ts +31 -1
  179. package/dist/meeting-info/meeting-info-v2.js +200 -63
  180. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  181. package/dist/meeting-info/request.js +1 -2
  182. package/dist/meeting-info/request.js.map +1 -1
  183. package/dist/meeting-info/util.js +2 -3
  184. package/dist/meeting-info/util.js.map +1 -1
  185. package/dist/meeting-info/utilv2.js +39 -41
  186. package/dist/meeting-info/utilv2.js.map +1 -1
  187. package/dist/meetings/collection.d.ts +17 -0
  188. package/dist/meetings/collection.js +42 -4
  189. package/dist/meetings/collection.js.map +1 -1
  190. package/dist/meetings/index.d.ts +103 -21
  191. package/dist/meetings/index.js +486 -124
  192. package/dist/meetings/index.js.map +1 -1
  193. package/dist/meetings/meetings.types.d.ts +4 -0
  194. package/dist/meetings/meetings.types.js +7 -0
  195. package/dist/meetings/meetings.types.js.map +1 -0
  196. package/dist/meetings/request.js +4 -3
  197. package/dist/meetings/request.js.map +1 -1
  198. package/dist/meetings/util.js +107 -6
  199. package/dist/meetings/util.js.map +1 -1
  200. package/dist/member/index.d.ts +14 -1
  201. package/dist/member/index.js +54 -2
  202. package/dist/member/index.js.map +1 -1
  203. package/dist/member/member.types.js +3 -4
  204. package/dist/member/member.types.js.map +1 -1
  205. package/dist/member/types.d.ts +32 -0
  206. package/dist/member/types.js +23 -0
  207. package/dist/member/types.js.map +1 -0
  208. package/dist/member/util.js +131 -29
  209. package/dist/member/util.js.map +1 -1
  210. package/dist/members/collection.d.ts +5 -0
  211. package/dist/members/collection.js +11 -2
  212. package/dist/members/collection.js.map +1 -1
  213. package/dist/members/index.d.ts +57 -2
  214. package/dist/members/index.js +174 -10
  215. package/dist/members/index.js.map +1 -1
  216. package/dist/members/request.d.ts +73 -9
  217. package/dist/members/request.js +108 -41
  218. package/dist/members/request.js.map +1 -1
  219. package/dist/members/types.d.ts +25 -0
  220. package/dist/members/types.js +14 -0
  221. package/dist/members/types.js.map +1 -0
  222. package/dist/members/util.d.ts +214 -1
  223. package/dist/members/util.js +327 -234
  224. package/dist/members/util.js.map +1 -1
  225. package/dist/metrics/constants.d.ts +15 -6
  226. package/dist/metrics/constants.js +17 -9
  227. package/dist/metrics/constants.js.map +1 -1
  228. package/dist/metrics/index.d.ts +4 -111
  229. package/dist/metrics/index.js +4 -452
  230. package/dist/metrics/index.js.map +1 -1
  231. package/dist/multistream/mediaRequestManager.d.ts +118 -0
  232. package/dist/multistream/mediaRequestManager.js +344 -0
  233. package/dist/multistream/mediaRequestManager.js.map +1 -0
  234. package/dist/multistream/receiveSlot.d.ts +68 -0
  235. package/dist/multistream/receiveSlot.js +200 -0
  236. package/dist/multistream/receiveSlot.js.map +1 -0
  237. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  238. package/dist/multistream/receiveSlotManager.js +174 -0
  239. package/dist/multistream/receiveSlotManager.js.map +1 -0
  240. package/dist/multistream/remoteMedia.d.ts +72 -0
  241. package/dist/multistream/remoteMedia.js +268 -0
  242. package/dist/multistream/remoteMedia.js.map +1 -0
  243. package/dist/multistream/remoteMediaGroup.d.ts +47 -0
  244. package/dist/multistream/remoteMediaGroup.js +267 -0
  245. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  246. package/dist/multistream/remoteMediaManager.d.ts +285 -0
  247. package/dist/multistream/remoteMediaManager.js +1211 -0
  248. package/dist/multistream/remoteMediaManager.js.map +1 -0
  249. package/dist/multistream/sendSlotManager.d.ts +61 -0
  250. package/dist/multistream/sendSlotManager.js +236 -0
  251. package/dist/multistream/sendSlotManager.js.map +1 -0
  252. package/dist/networkQualityMonitor/index.js +5 -4
  253. package/dist/networkQualityMonitor/index.js.map +1 -1
  254. package/dist/personal-meeting-room/index.js +2 -3
  255. package/dist/personal-meeting-room/index.js.map +1 -1
  256. package/dist/personal-meeting-room/request.js +2 -3
  257. package/dist/personal-meeting-room/request.js.map +1 -1
  258. package/dist/personal-meeting-room/util.js +1 -2
  259. package/dist/personal-meeting-room/util.js.map +1 -1
  260. package/dist/reachability/index.d.ts +62 -7
  261. package/dist/reachability/index.js +265 -72
  262. package/dist/reachability/index.js.map +1 -1
  263. package/dist/reachability/request.d.ts +7 -3
  264. package/dist/reachability/request.js +18 -10
  265. package/dist/reachability/request.js.map +1 -1
  266. package/dist/reactions/constants.d.ts +3 -0
  267. package/dist/reactions/constants.js +12 -0
  268. package/dist/reactions/constants.js.map +1 -0
  269. package/dist/reactions/reactions.d.ts +2 -2
  270. package/dist/reactions/reactions.js +4 -6
  271. package/dist/reactions/reactions.js.map +1 -1
  272. package/dist/reactions/reactions.type.d.ts +23 -3
  273. package/dist/reactions/reactions.type.js +21 -23
  274. package/dist/reactions/reactions.type.js.map +1 -1
  275. package/dist/reconnection-manager/index.d.ts +32 -8
  276. package/dist/reconnection-manager/index.js +282 -231
  277. package/dist/reconnection-manager/index.js.map +1 -1
  278. package/dist/recording-controller/enums.js +4 -5
  279. package/dist/recording-controller/enums.js.map +1 -1
  280. package/dist/recording-controller/index.d.ts +15 -1
  281. package/dist/recording-controller/index.js +57 -46
  282. package/dist/recording-controller/index.js.map +1 -1
  283. package/dist/recording-controller/util.d.ts +5 -4
  284. package/dist/recording-controller/util.js +10 -10
  285. package/dist/recording-controller/util.js.map +1 -1
  286. package/dist/roap/index.d.ts +9 -47
  287. package/dist/roap/index.js +101 -235
  288. package/dist/roap/index.js.map +1 -1
  289. package/dist/roap/request.d.ts +18 -12
  290. package/dist/roap/request.js +126 -180
  291. package/dist/roap/request.js.map +1 -1
  292. package/dist/roap/turnDiscovery.d.ts +27 -16
  293. package/dist/roap/turnDiscovery.js +115 -105
  294. package/dist/roap/turnDiscovery.js.map +1 -1
  295. package/dist/rtcMetrics/constants.d.ts +4 -0
  296. package/dist/rtcMetrics/constants.js +11 -0
  297. package/dist/rtcMetrics/constants.js.map +1 -0
  298. package/dist/rtcMetrics/index.d.ts +54 -0
  299. package/dist/rtcMetrics/index.js +140 -0
  300. package/dist/rtcMetrics/index.js.map +1 -0
  301. package/dist/statsAnalyzer/global.d.ts +1 -83
  302. package/dist/statsAnalyzer/global.js +2 -85
  303. package/dist/statsAnalyzer/global.js.map +1 -1
  304. package/dist/statsAnalyzer/index.d.ts +28 -30
  305. package/dist/statsAnalyzer/index.js +374 -509
  306. package/dist/statsAnalyzer/index.js.map +1 -1
  307. package/dist/statsAnalyzer/mqaUtil.d.ts +8 -6
  308. package/dist/statsAnalyzer/mqaUtil.js +116 -83
  309. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  310. package/dist/transcription/index.js +1 -2
  311. package/dist/transcription/index.js.map +1 -1
  312. package/dist/webinar/collection.d.ts +16 -0
  313. package/dist/webinar/collection.js +43 -0
  314. package/dist/webinar/collection.js.map +1 -0
  315. package/dist/webinar/index.d.ts +5 -0
  316. package/dist/webinar/index.js +68 -0
  317. package/dist/webinar/index.js.map +1 -0
  318. package/package.json +35 -26
  319. package/src/annotation/annotation.types.ts +50 -0
  320. package/src/annotation/constants.ts +36 -0
  321. package/src/annotation/index.ts +328 -0
  322. package/src/breakouts/README.md +220 -0
  323. package/src/breakouts/breakout.ts +188 -0
  324. package/src/breakouts/collection.ts +19 -0
  325. package/src/breakouts/edit-lock-error.ts +25 -0
  326. package/src/breakouts/events.ts +56 -0
  327. package/src/breakouts/index.ts +925 -0
  328. package/src/breakouts/request.ts +55 -0
  329. package/src/breakouts/utils.ts +57 -0
  330. package/src/common/errors/no-meeting-info.ts +24 -0
  331. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  332. package/src/common/errors/webex-errors.ts +36 -12
  333. package/src/common/logs/logger-proxy.ts +1 -1
  334. package/src/common/logs/request.ts +5 -1
  335. package/src/common/queue.ts +22 -8
  336. package/src/config.ts +5 -7
  337. package/src/constants.ts +271 -93
  338. package/src/controls-options-manager/enums.ts +12 -0
  339. package/src/controls-options-manager/index.ts +116 -21
  340. package/src/controls-options-manager/types.ts +59 -0
  341. package/src/controls-options-manager/util.ts +294 -14
  342. package/src/index.ts +40 -0
  343. package/src/interpretation/README.md +60 -0
  344. package/src/interpretation/collection.ts +19 -0
  345. package/src/interpretation/index.ts +332 -0
  346. package/src/interpretation/siLanguage.ts +18 -0
  347. package/src/locus-info/controlsUtils.ts +110 -0
  348. package/src/locus-info/index.ts +449 -61
  349. package/src/locus-info/infoUtils.ts +14 -2
  350. package/src/locus-info/mediaSharesUtils.ts +64 -0
  351. package/src/locus-info/parser.ts +258 -47
  352. package/src/locus-info/selfUtils.ts +85 -2
  353. package/src/media/index.ts +153 -370
  354. package/src/media/properties.ts +106 -136
  355. package/src/media/util.ts +0 -21
  356. package/src/mediaQualityMetrics/config.ts +244 -377
  357. package/src/meeting/in-meeting-actions.ts +176 -0
  358. package/src/meeting/index.ts +3895 -2448
  359. package/src/meeting/locusMediaRequest.ts +313 -0
  360. package/src/meeting/muteState.ts +224 -138
  361. package/src/meeting/request.ts +207 -127
  362. package/src/meeting/request.type.ts +13 -0
  363. package/src/meeting/util.ts +590 -423
  364. package/src/meeting-info/index.ts +81 -8
  365. package/src/meeting-info/meeting-info-v2.ts +163 -13
  366. package/src/meeting-info/util.ts +1 -1
  367. package/src/meeting-info/utilv2.ts +28 -28
  368. package/src/meetings/collection.ts +33 -0
  369. package/src/meetings/index.ts +486 -126
  370. package/src/meetings/meetings.types.ts +12 -0
  371. package/src/meetings/request.ts +2 -0
  372. package/src/meetings/util.ts +116 -5
  373. package/src/member/index.ts +52 -1
  374. package/src/member/types.ts +38 -0
  375. package/src/member/util.ts +139 -28
  376. package/src/members/collection.ts +8 -0
  377. package/src/members/index.ts +196 -7
  378. package/src/members/request.ts +97 -17
  379. package/src/members/types.ts +29 -0
  380. package/src/members/util.ts +333 -240
  381. package/src/metrics/constants.ts +15 -6
  382. package/src/metrics/index.ts +1 -471
  383. package/src/multistream/mediaRequestManager.ts +440 -0
  384. package/src/multistream/receiveSlot.ts +184 -0
  385. package/src/multistream/receiveSlotManager.ts +166 -0
  386. package/src/multistream/remoteMedia.ts +254 -0
  387. package/src/multistream/remoteMediaGroup.ts +284 -0
  388. package/src/multistream/remoteMediaManager.ts +1145 -0
  389. package/src/multistream/sendSlotManager.ts +170 -0
  390. package/src/networkQualityMonitor/index.ts +6 -6
  391. package/src/reachability/index.ts +238 -45
  392. package/src/reachability/request.ts +17 -8
  393. package/src/reactions/constants.ts +4 -0
  394. package/src/reactions/reactions.ts +4 -4
  395. package/src/reactions/reactions.type.ts +30 -4
  396. package/src/reconnection-manager/index.ts +168 -156
  397. package/src/recording-controller/index.ts +20 -3
  398. package/src/recording-controller/util.ts +26 -9
  399. package/src/roap/index.ts +98 -241
  400. package/src/roap/request.ts +74 -148
  401. package/src/roap/turnDiscovery.ts +62 -56
  402. package/src/rtcMetrics/constants.ts +3 -0
  403. package/src/rtcMetrics/index.ts +124 -0
  404. package/src/statsAnalyzer/global.ts +1 -84
  405. package/src/statsAnalyzer/index.ts +413 -642
  406. package/src/statsAnalyzer/mqaUtil.ts +111 -114
  407. package/src/webinar/collection.ts +31 -0
  408. package/src/webinar/index.ts +62 -0
  409. package/test/integration/spec/converged-space-meetings.js +233 -0
  410. package/test/integration/spec/journey.js +320 -264
  411. package/test/integration/spec/space-meeting.js +77 -4
  412. package/test/unit/spec/annotation/index.ts +418 -0
  413. package/test/unit/spec/breakouts/breakout.ts +237 -0
  414. package/test/unit/spec/breakouts/collection.ts +15 -0
  415. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  416. package/test/unit/spec/breakouts/events.ts +89 -0
  417. package/test/unit/spec/breakouts/index.ts +1790 -0
  418. package/test/unit/spec/breakouts/request.ts +104 -0
  419. package/test/unit/spec/breakouts/utils.js +72 -0
  420. package/test/unit/spec/common/queue.js +31 -2
  421. package/test/unit/spec/controls-options-manager/index.js +163 -0
  422. package/test/unit/spec/controls-options-manager/util.js +576 -60
  423. package/test/unit/spec/fixture/locus.js +1 -0
  424. package/test/unit/spec/interpretation/collection.ts +15 -0
  425. package/test/unit/spec/interpretation/index.ts +589 -0
  426. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  427. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  428. package/test/unit/spec/locus-info/index.js +1390 -16
  429. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  430. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  431. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  432. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  433. package/test/unit/spec/locus-info/parser.js +116 -35
  434. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  435. package/test/unit/spec/media/index.ts +290 -0
  436. package/test/unit/spec/media/properties.ts +75 -84
  437. package/test/unit/spec/meeting/in-meeting-actions.ts +86 -0
  438. package/test/unit/spec/meeting/index.js +8181 -2770
  439. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  440. package/test/unit/spec/meeting/muteState.js +409 -213
  441. package/test/unit/spec/meeting/request.js +512 -42
  442. package/test/unit/spec/meeting/utils.js +741 -24
  443. package/test/unit/spec/meeting-info/index.js +300 -0
  444. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  445. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  446. package/test/unit/spec/meetings/collection.js +26 -0
  447. package/test/unit/spec/meetings/index.js +1284 -217
  448. package/test/unit/spec/meetings/utils.js +202 -2
  449. package/test/unit/spec/member/index.js +38 -8
  450. package/test/unit/spec/member/util.js +499 -29
  451. package/test/unit/spec/members/index.js +597 -3
  452. package/test/unit/spec/members/request.js +206 -27
  453. package/test/unit/spec/members/utils.js +210 -0
  454. package/test/unit/spec/metrics/index.js +1 -50
  455. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  456. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  457. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  458. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  459. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  460. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  461. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  462. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  463. package/test/unit/spec/reachability/index.ts +598 -24
  464. package/test/unit/spec/reachability/request.js +68 -0
  465. package/test/unit/spec/reconnection-manager/index.js +162 -24
  466. package/test/unit/spec/recording-controller/index.js +293 -218
  467. package/test/unit/spec/recording-controller/util.js +223 -96
  468. package/test/unit/spec/roap/index.ts +200 -76
  469. package/test/unit/spec/roap/request.ts +232 -0
  470. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  471. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  472. package/test/unit/spec/stats-analyzer/index.js +188 -174
  473. package/test/unit/spec/webinar/collection.ts +13 -0
  474. package/test/unit/spec/webinar/index.ts +60 -0
  475. package/test/utils/constants.js +9 -0
  476. package/test/utils/integrationTestUtils.js +46 -0
  477. package/test/utils/testUtils.js +0 -45
  478. package/test/utils/webex-config.js +4 -0
  479. package/test/utils/webex-test-users.js +7 -3
  480. package/dist/meeting/effectsState.d.ts +0 -42
  481. package/dist/meeting/effectsState.js +0 -260
  482. package/dist/meeting/effectsState.js.map +0 -1
  483. package/dist/metrics/config.d.ts +0 -169
  484. package/dist/metrics/config.js +0 -289
  485. package/dist/metrics/config.js.map +0 -1
  486. package/dist/peer-connection-manager/index.d.ts +0 -6
  487. package/dist/peer-connection-manager/index.js +0 -671
  488. package/dist/peer-connection-manager/index.js.map +0 -1
  489. package/dist/peer-connection-manager/util.d.ts +0 -6
  490. package/dist/peer-connection-manager/util.js +0 -110
  491. package/dist/peer-connection-manager/util.js.map +0 -1
  492. package/dist/roap/collection.d.ts +0 -10
  493. package/dist/roap/collection.js +0 -63
  494. package/dist/roap/collection.js.map +0 -1
  495. package/dist/roap/handler.d.ts +0 -47
  496. package/dist/roap/handler.js +0 -279
  497. package/dist/roap/handler.js.map +0 -1
  498. package/dist/roap/state.d.ts +0 -9
  499. package/dist/roap/state.js +0 -127
  500. package/dist/roap/state.js.map +0 -1
  501. package/dist/roap/util.d.ts +0 -2
  502. package/dist/roap/util.js +0 -76
  503. package/dist/roap/util.js.map +0 -1
  504. package/src/index.js +0 -15
  505. package/src/meeting/effectsState.ts +0 -209
  506. package/src/metrics/config.ts +0 -485
  507. package/src/peer-connection-manager/index.ts +0 -847
  508. package/src/peer-connection-manager/util.ts +0 -119
  509. package/src/roap/collection.ts +0 -62
  510. package/src/roap/handler.ts +0 -294
  511. package/src/roap/state.ts +0 -156
  512. package/src/roap/util.ts +0 -100
  513. package/test/unit/spec/meeting/effectsState.js +0 -281
  514. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  515. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  516. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  517. package/test/unit/spec/roap/util.js +0 -30
@@ -0,0 +1,332 @@
1
+ /*!
2
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+ import {WebexPlugin} from '@webex/webex-core';
5
+ import LoggerProxy from '../common/logs/logger-proxy';
6
+ import {HTTP_VERBS, INTERPRETATION, MEETINGS} from '../constants';
7
+
8
+ import SILanguageCollection from './collection';
9
+
10
+ /**
11
+ * @class SimultaneousInterpretation
12
+ */
13
+ const SimultaneousInterpretation = WebexPlugin.extend({
14
+ namespace: MEETINGS,
15
+ collections: {
16
+ siLanguages: SILanguageCollection,
17
+ },
18
+
19
+ props: {
20
+ locusUrl: 'string', // appears current meeting's locus url
21
+ approvalUrl: 'string', // appears current meeting's approval url for handoff between interpreters
22
+ originalLanguage: 'string', // appears current meeting's original language
23
+ sourceLanguage: 'string', // appears self interpreter's source language
24
+ targetLanguage: 'string', // appears self interpreter's target language
25
+ receiveLanguage: 'string', // appears self's receive language
26
+ order: 'number', // appears the order of self as interpreter
27
+ isActive: 'boolean', // appears self is interpreter and is active
28
+ selfParticipantId: 'string', // appears the self participant id
29
+ canManageInterpreters: 'boolean', // appears the ability to manage interpreters
30
+ supportLanguages: 'array', // appears the support languages
31
+ meetingSIEnabled: 'boolean', // appears the meeting support SI feature
32
+ hostSIEnabled: 'boolean', // appears the meeting host/interpreter feature of SI enabled
33
+ selfIsInterpreter: 'boolean', // current user is interpreter or not
34
+ },
35
+ derived: {
36
+ shouldQuerySupportLanguages: {
37
+ cache: false,
38
+ deps: ['canManageInterpreters', 'hostSIEnabled'],
39
+ /**
40
+ * Returns should query support languages or not
41
+ * @returns {boolean}
42
+ */
43
+ fn() {
44
+ return !!(this.canManageInterpreters && this.hostSIEnabled);
45
+ },
46
+ },
47
+ },
48
+ /**
49
+ * initialize for interpretation
50
+ * @returns {void}
51
+ */
52
+ initialize() {
53
+ this.listenTo(this, 'change:shouldQuerySupportLanguages', () => {
54
+ if (this.canManageInterpreters && !this.supportLanguages) {
55
+ this.querySupportLanguages();
56
+ }
57
+ });
58
+ this.listenToHandoffRequests();
59
+ },
60
+
61
+ /**
62
+ * Calls this to clean up listeners
63
+ * @returns {void}
64
+ */
65
+ cleanUp() {
66
+ this.stopListening();
67
+ },
68
+ /**
69
+ * Update the current locus url of the meeting
70
+ * @param {string} locusUrl // locus url
71
+ * @returns {void}
72
+ */
73
+ locusUrlUpdate(locusUrl) {
74
+ this.set('locusUrl', locusUrl);
75
+ },
76
+ /**
77
+ * Update the approval url for handoff
78
+ * @param {string} approvalUrl // approval url
79
+ * @returns {void}
80
+ */
81
+ approvalUrlUpdate(approvalUrl) {
82
+ this.set('approvalUrl', approvalUrl);
83
+ },
84
+ /**
85
+ * Update whether self has capability to manage interpreters (only host can manage it)
86
+ * @param {boolean} canManageInterpreters
87
+ * @returns {void}
88
+ */
89
+ updateCanManageInterpreters(canManageInterpreters) {
90
+ this.set('canManageInterpreters', canManageInterpreters);
91
+ },
92
+ /**
93
+ * Update whether the meeting's host si is enabled or not
94
+ * @param {boolean} hostSIEnabled
95
+ * @returns {void}
96
+ */
97
+ updateHostSIEnabled(hostSIEnabled) {
98
+ this.set('hostSIEnabled', hostSIEnabled);
99
+ },
100
+
101
+ /**
102
+ * Update whether the meeting support SI feature or not from meeting info
103
+ * @param {boolean} meetingSIEnabled
104
+ * @param {boolean} selfIsInterpreter
105
+ * @returns {void}
106
+ */
107
+ updateMeetingSIEnabled(meetingSIEnabled: boolean, selfIsInterpreter): void {
108
+ this.set('meetingSIEnabled', meetingSIEnabled);
109
+ this.set('selfIsInterpreter', selfIsInterpreter);
110
+ },
111
+
112
+ /**
113
+ * Update the interpretation languages channels which user can choose to subscribe
114
+ * @param {Object} interpretation
115
+ * @returns {void}
116
+ */
117
+ updateInterpretation(interpretation) {
118
+ this.siLanguages.set(interpretation?.siLanguages || []);
119
+ },
120
+ /**
121
+ * Update self's interpretation information (self is interpreter)
122
+ * @param {Object} interpretation
123
+ * @param {String} selfParticipantId
124
+ * @returns {void}
125
+ */
126
+ updateSelfInterpretation({interpretation, selfParticipantId}) {
127
+ const {originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage} =
128
+ interpretation || {};
129
+ this.set({originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage});
130
+ this.set('selfParticipantId', selfParticipantId);
131
+ },
132
+ /**
133
+ * query interpretation languages
134
+ * @returns {Promise}
135
+ */
136
+ querySupportLanguages() {
137
+ return this.request({
138
+ method: HTTP_VERBS.GET,
139
+ uri: `${this.locusUrl}/languages/interpretation`,
140
+ })
141
+ .then((result) => {
142
+ this.set('supportLanguages', result.body?.siLanguages);
143
+ this.trigger(INTERPRETATION.EVENTS.SUPPORT_LANGUAGES_UPDATE);
144
+ })
145
+ .catch((error) => {
146
+ LoggerProxy.logger.error('Meeting:interpretation#querySupportLanguages failed', error);
147
+ throw error;
148
+ });
149
+ },
150
+ /**
151
+ * get interpreters of the meeting
152
+ * @returns {Promise}
153
+ */
154
+ getInterpreters() {
155
+ return this.request({
156
+ method: HTTP_VERBS.GET,
157
+ uri: `${this.locusUrl}/interpretation/interpreters`,
158
+ }).catch((error) => {
159
+ LoggerProxy.logger.error('Meeting:interpretation#getInterpreters failed', error);
160
+ throw error;
161
+ });
162
+ },
163
+ /**
164
+ * update interpreters of the meeting
165
+ * @param {Array} interpreters
166
+ * @returns {Promise}
167
+ */
168
+ updateInterpreters(interpreters) {
169
+ return this.request({
170
+ method: HTTP_VERBS.PATCH,
171
+ uri: `${this.locusUrl}/controls`,
172
+ body: {
173
+ interpretation: {
174
+ interpreters,
175
+ },
176
+ },
177
+ }).catch((error) => {
178
+ LoggerProxy.logger.error('Meeting:interpretation#updateInterpreters failed', error);
179
+ throw error;
180
+ });
181
+ },
182
+ /**
183
+ * Change direction of interpretation for an interpreter participant
184
+ * @returns {Promise}
185
+ */
186
+ changeDirection() {
187
+ if (!this.sourceLanguage || !this.targetLanguage) {
188
+ return Promise.reject(new Error('Missing sourceLanguage or targetLanguage'));
189
+ }
190
+
191
+ if (!this.selfParticipantId) {
192
+ return Promise.reject(new Error('Missing self participant id'));
193
+ }
194
+
195
+ return this.request({
196
+ method: HTTP_VERBS.PATCH,
197
+ uri: `${this.locusUrl}/participant/${this.selfParticipantId}/controls`,
198
+ body: {
199
+ interpretation: {
200
+ sourceLanguage: this.targetLanguage,
201
+ targetLanguage: this.sourceLanguage,
202
+ isActive: this.isActive,
203
+ order: this.order,
204
+ },
205
+ },
206
+ }).catch((error) => {
207
+ LoggerProxy.logger.error('Meeting:interpretation#changeDirection failed', error);
208
+ throw error;
209
+ });
210
+ },
211
+ /**
212
+ * Sets up a listener for handoff requests from mercury
213
+ * @returns {void}
214
+ */
215
+ listenToHandoffRequests() {
216
+ this.listenTo(this.webex.internal.mercury, 'event:locus.approval_request', (event) => {
217
+ if (event?.data?.approval?.resourceType === INTERPRETATION.RESOURCE_TYPE) {
218
+ const {receivers, initiator, actionType, url} = event.data.approval;
219
+ const receiverId = receivers?.[0]?.participantId;
220
+ const isReceiver = !!receiverId && receiverId === this.selfParticipantId;
221
+ const senderId = initiator?.participantId;
222
+ const isSender = !!senderId && senderId === this.selfParticipantId;
223
+ if (!isReceiver && !isSender) {
224
+ return;
225
+ }
226
+ this.trigger(INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED, {
227
+ actionType,
228
+ isReceiver,
229
+ isSender,
230
+ senderId,
231
+ receiverId,
232
+ url,
233
+ });
234
+ }
235
+ });
236
+ },
237
+ /**
238
+ * handoff the active interpreter role to another interpreter in same group, only the interpreter is allowed to call this api
239
+ * @param {string} participantId the participant id you want to hand off
240
+ * @returns {Promise}
241
+ */
242
+ handoffInterpreter(participantId) {
243
+ if (!participantId) {
244
+ return Promise.reject(new Error('Missing target participant id'));
245
+ }
246
+ if (!this.approvalUrl) {
247
+ return Promise.reject(new Error('Missing approval url'));
248
+ }
249
+
250
+ return this.request({
251
+ method: HTTP_VERBS.POST,
252
+ uri: this.approvalUrl,
253
+ body: {
254
+ actionType: INTERPRETATION.ACTION_TYPE.OFFERED,
255
+ resourceType: INTERPRETATION.RESOURCE_TYPE,
256
+ receivers: [
257
+ {
258
+ participantId,
259
+ },
260
+ ],
261
+ },
262
+ }).catch((error) => {
263
+ LoggerProxy.logger.error('Meeting:interpretation#handoffInterpreter failed', error);
264
+ throw error;
265
+ });
266
+ },
267
+ /**
268
+ * the in-active interpreter request to hand off the active role to self
269
+ * @returns {Promise}
270
+ */
271
+ requestHandoff() {
272
+ if (!this.approvalUrl) {
273
+ return Promise.reject(new Error('Missing approval url'));
274
+ }
275
+
276
+ return this.request({
277
+ method: HTTP_VERBS.POST,
278
+ uri: this.approvalUrl,
279
+ body: {
280
+ actionType: INTERPRETATION.ACTION_TYPE.REQUESTED,
281
+ resourceType: INTERPRETATION.RESOURCE_TYPE,
282
+ },
283
+ }).catch((error) => {
284
+ LoggerProxy.logger.error('Meeting:interpretation#requestHandoff failed', error);
285
+ throw error;
286
+ });
287
+ },
288
+ /**
289
+ * accept the request of handoff
290
+ * @param {String} url the url get from last approval event
291
+ * @returns {Promise}
292
+ */
293
+ acceptRequest(url) {
294
+ if (!url) {
295
+ return Promise.reject(new Error('Missing the url to accept'));
296
+ }
297
+
298
+ return this.request({
299
+ method: HTTP_VERBS.PUT,
300
+ uri: url,
301
+ body: {
302
+ actionType: INTERPRETATION.ACTION_TYPE.ACCEPTED,
303
+ },
304
+ }).catch((error) => {
305
+ LoggerProxy.logger.error('Meeting:interpretation#acceptRequest failed', error);
306
+ throw error;
307
+ });
308
+ },
309
+ /**
310
+ * decline the request of handoff
311
+ * @param {String} url the url get from last approval event
312
+ * @returns {Promise}
313
+ */
314
+ declineRequest(url) {
315
+ if (!url) {
316
+ return Promise.reject(new Error('Missing the url to decline'));
317
+ }
318
+
319
+ return this.request({
320
+ method: HTTP_VERBS.PUT,
321
+ uri: url,
322
+ body: {
323
+ actionType: INTERPRETATION.ACTION_TYPE.DECLINED,
324
+ },
325
+ }).catch((error) => {
326
+ LoggerProxy.logger.error('Meeting:interpretation#declineRequest failed', error);
327
+ throw error;
328
+ });
329
+ },
330
+ });
331
+
332
+ export default SimultaneousInterpretation;
@@ -0,0 +1,18 @@
1
+ /*!
2
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ import {WebexPlugin} from '@webex/webex-core';
6
+ import {MEETINGS} from '../constants';
7
+
8
+ const SILanguage = WebexPlugin.extend({
9
+ idAttribute: 'languageName',
10
+
11
+ namespace: MEETINGS,
12
+ props: {
13
+ languageCode: 'number',
14
+ languageName: 'string',
15
+ },
16
+ });
17
+
18
+ export default SILanguage;
@@ -1,4 +1,5 @@
1
1
  import {isEqual} from 'lodash';
2
+ import {BREAKOUTS} from '../constants';
2
3
 
3
4
  const ControlsUtils: any = {};
4
5
 
@@ -48,6 +49,41 @@ ControlsUtils.parse = (controls: any) => {
48
49
  : null;
49
50
  }
50
51
 
52
+ if (controls && controls.video) {
53
+ parsedControls.videoEnabled = controls.video.enabled;
54
+ }
55
+
56
+ if (controls?.muteOnEntry) {
57
+ parsedControls.muteOnEntry = {enabled: controls.muteOnEntry.enabled};
58
+ }
59
+
60
+ if (controls?.shareControl) {
61
+ parsedControls.shareControl = {control: controls.shareControl.control};
62
+ }
63
+
64
+ if (controls?.disallowUnmute) {
65
+ parsedControls.disallowUnmute = {enabled: controls.disallowUnmute.enabled};
66
+ }
67
+
68
+ if (controls?.reactions) {
69
+ parsedControls.reactions = {
70
+ enabled: controls.reactions.enabled,
71
+ showDisplayNameWithReactions: controls.reactions.showDisplayNameWithReactions,
72
+ };
73
+ }
74
+
75
+ if (controls?.viewTheParticipantList) {
76
+ parsedControls.viewTheParticipantList = {enabled: controls.viewTheParticipantList.enabled};
77
+ }
78
+
79
+ if (controls?.raiseHand) {
80
+ parsedControls.raiseHand = {enabled: controls.raiseHand.enabled};
81
+ }
82
+
83
+ if (controls?.video) {
84
+ parsedControls.video = {enabled: controls.video.enabled};
85
+ }
86
+
51
87
  return parsedControls;
52
88
  };
53
89
 
@@ -65,6 +101,26 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
65
101
  previous,
66
102
  current,
67
103
  updates: {
104
+ hasMuteOnEntryChanged: current?.muteOnEntry?.enabled !== previous?.muteOnEntry?.enabled,
105
+
106
+ hasShareControlChanged: current?.shareControl?.control !== previous?.shareControl?.control,
107
+
108
+ hasDisallowUnmuteChanged:
109
+ current?.disallowUnmute?.enabled !== previous?.disallowUnmute?.enabled,
110
+
111
+ hasReactionsChanged: current?.reactions?.enabled !== previous?.reactions?.enabled,
112
+
113
+ hasReactionDisplayNamesChanged:
114
+ current?.reactions?.showDisplayNameWithReactions !==
115
+ previous?.reactions?.showDisplayNameWithReactions,
116
+
117
+ hasViewTheParticipantListChanged:
118
+ current?.viewTheParticipantList?.enabled !== previous?.viewTheParticipantList?.enabled,
119
+
120
+ hasRaiseHandChanged: current?.raiseHand?.enabled !== previous?.raiseHand?.enabled,
121
+
122
+ hasVideoChanged: current?.video?.enabled !== previous?.video?.enabled,
123
+
68
124
  hasRecordingPausedChanged:
69
125
  current?.record &&
70
126
  !isEqual(previous?.record?.paused, current.record.paused) &&
@@ -92,6 +148,14 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
92
148
  !isEqual(previous?.entryExitTone, current?.entryExitTone) &&
93
149
  (previous?.entryExitTone || current?.entryExitTone)
94
150
  ),
151
+
152
+ hasBreakoutChanged: !isEqual(previous?.breakout, current?.breakout),
153
+
154
+ hasInterpretationChanged: !isEqual(previous?.interpretation, current?.interpretation),
155
+
156
+ hasVideoEnabledChanged:
157
+ newControls.video?.enabled !== undefined &&
158
+ !isEqual(previous?.videoEnabled, current?.videoEnabled),
95
159
  },
96
160
  };
97
161
  };
@@ -109,4 +173,50 @@ ControlsUtils.getId = (controls: any) => {
109
173
  return null;
110
174
  };
111
175
 
176
+ /**
177
+ * check whether to replace the meeting's members or not.
178
+ * For case joined breakout session, need replace meeting's members
179
+ * @param {LocusControls} oldControls
180
+ * @param {LocusControls} controls
181
+ * @returns {Boolean}
182
+ */
183
+ ControlsUtils.isNeedReplaceMembers = (oldControls: any, controls: any) => {
184
+ // no breakout case
185
+ if (!oldControls?.breakout || !controls?.breakout) {
186
+ return false;
187
+ }
188
+
189
+ return (
190
+ oldControls.breakout.groupId !== controls.breakout.groupId ||
191
+ oldControls.breakout.sessionId !== controls.breakout.sessionId
192
+ );
193
+ };
194
+
195
+ /**
196
+ * determine the switch status between breakout session and main session.
197
+ * @param {LocusControls} oldControls
198
+ * @param {LocusControls} controls
199
+ * @returns {Object}
200
+ */
201
+ ControlsUtils.getSessionSwitchStatus = (oldControls: any, controls: any) => {
202
+ const status = {isReturnToMain: false, isJoinToBreakout: false};
203
+ // no breakout case
204
+ if (!oldControls?.breakout || !controls?.breakout) {
205
+ return status;
206
+ }
207
+
208
+ status.isReturnToMain =
209
+ oldControls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&
210
+ controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;
211
+ status.isJoinToBreakout =
212
+ oldControls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&
213
+ controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;
214
+
215
+ return status;
216
+ };
217
+
218
+ ControlsUtils.isMainSessionDTO = (locus: any) => {
219
+ return locus?.controls?.breakout?.sessionType !== BREAKOUTS.SESSION_TYPES.BREAKOUT;
220
+ };
221
+
112
222
  export default ControlsUtils;