@webex/plugin-meetings 3.8.0 → 3.8.1-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 (361) hide show
  1. package/README.md +26 -13
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +70 -6
  4. package/dist/breakouts/index.js.map +1 -1
  5. package/dist/common/errors/webex-errors.js +12 -2
  6. package/dist/common/errors/webex-errors.js.map +1 -1
  7. package/dist/config.js +5 -1
  8. package/dist/config.js.map +1 -1
  9. package/dist/constants.js +28 -123
  10. package/dist/constants.js.map +1 -1
  11. package/dist/controls-options-manager/enums.js +3 -0
  12. package/dist/controls-options-manager/enums.js.map +1 -1
  13. package/dist/controls-options-manager/types.js.map +1 -1
  14. package/dist/controls-options-manager/util.js +78 -0
  15. package/dist/controls-options-manager/util.js.map +1 -1
  16. package/dist/interpretation/index.js +4 -4
  17. package/dist/interpretation/index.js.map +1 -1
  18. package/dist/interpretation/siLanguage.js +1 -1
  19. package/dist/locus-info/controlsUtils.js +37 -11
  20. package/dist/locus-info/controlsUtils.js.map +1 -1
  21. package/dist/locus-info/index.js +92 -12
  22. package/dist/locus-info/index.js.map +1 -1
  23. package/dist/locus-info/selfUtils.js +432 -418
  24. package/dist/locus-info/selfUtils.js.map +1 -1
  25. package/dist/media/index.js +17 -17
  26. package/dist/media/index.js.map +1 -1
  27. package/dist/media/properties.js +94 -6
  28. package/dist/media/properties.js.map +1 -1
  29. package/dist/meeting/brbState.js +9 -2
  30. package/dist/meeting/brbState.js.map +1 -1
  31. package/dist/meeting/in-meeting-actions.js +21 -1
  32. package/dist/meeting/in-meeting-actions.js.map +1 -1
  33. package/dist/meeting/index.js +678 -344
  34. package/dist/meeting/index.js.map +1 -1
  35. package/dist/meeting/locusMediaRequest.js +21 -22
  36. package/dist/meeting/locusMediaRequest.js.map +1 -1
  37. package/dist/meeting/muteState.js +4 -4
  38. package/dist/meeting/muteState.js.map +1 -1
  39. package/dist/meeting/request.js +30 -0
  40. package/dist/meeting/request.js.map +1 -1
  41. package/dist/meeting/request.type.js.map +1 -1
  42. package/dist/meeting/util.js +13 -2
  43. package/dist/meeting/util.js.map +1 -1
  44. package/dist/meeting-info/meeting-info-v2.js +373 -68
  45. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  46. package/dist/meeting-info/utilv2.js +5 -1
  47. package/dist/meeting-info/utilv2.js.map +1 -1
  48. package/dist/meetings/index.js +136 -1
  49. package/dist/meetings/index.js.map +1 -1
  50. package/dist/meetings/util.js +14 -0
  51. package/dist/meetings/util.js.map +1 -1
  52. package/dist/member/index.js +55 -9
  53. package/dist/member/index.js.map +1 -1
  54. package/dist/member/types.js +3 -0
  55. package/dist/member/types.js.map +1 -1
  56. package/dist/member/util.js +335 -353
  57. package/dist/member/util.js.map +1 -1
  58. package/dist/members/collection.js.map +1 -1
  59. package/dist/members/index.js +137 -29
  60. package/dist/members/index.js.map +1 -1
  61. package/dist/members/request.js +38 -0
  62. package/dist/members/request.js.map +1 -1
  63. package/dist/members/util.js +36 -1
  64. package/dist/members/util.js.map +1 -1
  65. package/dist/metrics/constants.js +10 -0
  66. package/dist/metrics/constants.js.map +1 -1
  67. package/dist/multistream/remoteMediaManager.js +40 -8
  68. package/dist/multistream/remoteMediaManager.js.map +1 -1
  69. package/dist/reachability/clusterReachability.js +63 -27
  70. package/dist/reachability/clusterReachability.js.map +1 -1
  71. package/dist/reachability/index.js +107 -47
  72. package/dist/reachability/index.js.map +1 -1
  73. package/dist/reachability/reachability.types.js +14 -0
  74. package/dist/reachability/reachability.types.js.map +1 -1
  75. package/dist/reachability/request.js +19 -3
  76. package/dist/reachability/request.js.map +1 -1
  77. package/dist/reconnection-manager/index.js +2 -2
  78. package/dist/reconnection-manager/index.js.map +1 -1
  79. package/dist/recording-controller/util.js +5 -5
  80. package/dist/recording-controller/util.js.map +1 -1
  81. package/dist/roap/index.js.map +1 -1
  82. package/dist/roap/turnDiscovery.js +45 -27
  83. package/dist/roap/turnDiscovery.js.map +1 -1
  84. package/dist/roap/types.js +17 -0
  85. package/dist/roap/types.js.map +1 -0
  86. package/dist/types/common/errors/webex-errors.d.ts +7 -1
  87. package/dist/types/config.d.ts +3 -0
  88. package/dist/types/constants.d.ts +20 -85
  89. package/dist/types/controls-options-manager/enums.d.ts +4 -1
  90. package/dist/types/controls-options-manager/types.d.ts +10 -1
  91. package/dist/types/locus-info/index.d.ts +3 -3
  92. package/dist/types/locus-info/selfUtils.d.ts +216 -1
  93. package/dist/types/media/properties.d.ts +15 -0
  94. package/dist/types/meeting/in-meeting-actions.d.ts +20 -0
  95. package/dist/types/meeting/index.d.ts +65 -1
  96. package/dist/types/meeting/muteState.d.ts +0 -1
  97. package/dist/types/meeting/request.d.ts +12 -1
  98. package/dist/types/meeting/request.type.d.ts +6 -0
  99. package/dist/types/meeting/util.d.ts +3 -1
  100. package/dist/types/meeting-info/meeting-info-v2.d.ts +82 -1
  101. package/dist/types/meetings/index.d.ts +57 -0
  102. package/dist/types/member/index.d.ts +21 -6
  103. package/dist/types/member/types.d.ts +73 -14
  104. package/dist/types/member/util.d.ts +156 -1
  105. package/dist/types/members/collection.d.ts +6 -5
  106. package/dist/types/members/index.d.ts +32 -43
  107. package/dist/types/members/request.d.ts +26 -0
  108. package/dist/types/members/util.d.ts +27 -0
  109. package/dist/types/metrics/constants.d.ts +10 -0
  110. package/dist/types/multistream/remoteMediaManager.d.ts +10 -1
  111. package/dist/types/reachability/clusterReachability.d.ts +15 -7
  112. package/dist/types/reachability/index.d.ts +10 -1
  113. package/dist/types/reachability/reachability.types.d.ts +5 -0
  114. package/dist/types/roap/index.d.ts +3 -2
  115. package/dist/types/roap/turnDiscovery.d.ts +5 -17
  116. package/dist/types/roap/types.d.ts +16 -0
  117. package/dist/webinar/index.js +2 -2
  118. package/dist/webinar/index.js.map +1 -1
  119. package/package.json +24 -23
  120. package/src/breakouts/index.ts +69 -0
  121. package/src/common/errors/webex-errors.ts +8 -1
  122. package/src/config.ts +3 -0
  123. package/src/constants.ts +30 -90
  124. package/src/controls-options-manager/enums.ts +3 -0
  125. package/src/controls-options-manager/types.ts +16 -1
  126. package/src/controls-options-manager/util.ts +93 -0
  127. package/src/interpretation/index.ts +3 -3
  128. package/src/locus-info/controlsUtils.ts +59 -14
  129. package/src/locus-info/index.ts +97 -13
  130. package/src/locus-info/selfUtils.ts +496 -442
  131. package/src/media/index.ts +23 -21
  132. package/src/media/properties.ts +96 -0
  133. package/src/meeting/brbState.ts +11 -2
  134. package/src/meeting/in-meeting-actions.ts +40 -0
  135. package/src/meeting/index.ts +470 -105
  136. package/src/meeting/locusMediaRequest.ts +27 -22
  137. package/src/meeting/muteState.ts +4 -4
  138. package/src/meeting/request.ts +36 -1
  139. package/src/meeting/request.type.ts +7 -0
  140. package/src/meeting/util.ts +11 -2
  141. package/src/meeting-info/meeting-info-v2.ts +254 -8
  142. package/src/meeting-info/utilv2.ts +5 -0
  143. package/src/meetings/index.ts +148 -1
  144. package/src/meetings/util.ts +18 -0
  145. package/src/member/index.ts +68 -22
  146. package/src/member/types.ts +82 -16
  147. package/src/member/util.ts +357 -350
  148. package/src/members/collection.ts +4 -3
  149. package/src/members/index.ts +137 -18
  150. package/src/members/request.ts +44 -0
  151. package/src/members/util.ts +43 -1
  152. package/src/metrics/constants.ts +10 -0
  153. package/src/multistream/remoteMediaManager.ts +32 -10
  154. package/src/reachability/clusterReachability.ts +73 -26
  155. package/src/reachability/index.ts +62 -1
  156. package/src/reachability/reachability.types.ts +6 -0
  157. package/src/reachability/request.ts +7 -0
  158. package/src/reconnection-manager/index.ts +2 -2
  159. package/src/recording-controller/util.ts +17 -13
  160. package/src/roap/index.ts +3 -7
  161. package/src/roap/turnDiscovery.ts +34 -39
  162. package/src/roap/types.ts +23 -0
  163. package/src/webinar/index.ts +1 -1
  164. package/test/unit/spec/breakouts/index.ts +167 -95
  165. package/test/unit/spec/controls-options-manager/util.js +178 -0
  166. package/test/unit/spec/interpretation/index.ts +39 -1
  167. package/test/unit/spec/locus-info/controlsUtils.js +155 -9
  168. package/test/unit/spec/locus-info/index.js +209 -73
  169. package/test/unit/spec/locus-info/selfUtils.js +98 -24
  170. package/test/unit/spec/media/index.ts +150 -18
  171. package/test/unit/spec/media/properties.ts +130 -0
  172. package/test/unit/spec/meeting/brbState.ts +40 -2
  173. package/test/unit/spec/meeting/in-meeting-actions.ts +23 -4
  174. package/test/unit/spec/meeting/index.js +804 -139
  175. package/test/unit/spec/meeting/locusMediaRequest.ts +95 -87
  176. package/test/unit/spec/meeting/muteState.js +73 -2
  177. package/test/unit/spec/meeting/request.js +32 -1
  178. package/test/unit/spec/meeting/utils.js +119 -18
  179. package/test/unit/spec/meeting-info/meetinginfov2.js +484 -114
  180. package/test/unit/spec/meeting-info/utilv2.js +19 -0
  181. package/test/unit/spec/meetings/index.js +146 -2
  182. package/test/unit/spec/member/index.js +7 -0
  183. package/test/unit/spec/member/util.js +24 -0
  184. package/test/unit/spec/members/index.js +304 -78
  185. package/test/unit/spec/members/request.js +68 -22
  186. package/test/unit/spec/members/utils.js +75 -0
  187. package/test/unit/spec/multistream/remoteMediaManager.ts +397 -118
  188. package/test/unit/spec/reachability/clusterReachability.ts +88 -56
  189. package/test/unit/spec/reachability/index.ts +97 -0
  190. package/test/unit/spec/reachability/request.js +47 -2
  191. package/test/unit/spec/reconnection-manager/index.js +4 -4
  192. package/test/unit/spec/roap/turnDiscovery.ts +110 -28
  193. package/test/unit/spec/webinar/index.ts +5 -0
  194. package/dist/annotation/annotation.types.d.ts +0 -42
  195. package/dist/annotation/constants.d.ts +0 -31
  196. package/dist/annotation/index.d.ts +0 -117
  197. package/dist/breakouts/breakout.d.ts +0 -8
  198. package/dist/breakouts/collection.d.ts +0 -5
  199. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  200. package/dist/breakouts/events.d.ts +0 -8
  201. package/dist/breakouts/index.d.ts +0 -5
  202. package/dist/breakouts/request.d.ts +0 -22
  203. package/dist/breakouts/utils.d.ts +0 -15
  204. package/dist/common/browser-detection.d.ts +0 -9
  205. package/dist/common/collection.d.ts +0 -48
  206. package/dist/common/config.d.ts +0 -2
  207. package/dist/common/errors/captcha-error.d.ts +0 -15
  208. package/dist/common/errors/intent-to-join.d.ts +0 -16
  209. package/dist/common/errors/join-meeting.d.ts +0 -17
  210. package/dist/common/errors/media.d.ts +0 -15
  211. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  212. package/dist/common/errors/parameter.d.ts +0 -15
  213. package/dist/common/errors/password-error.d.ts +0 -15
  214. package/dist/common/errors/permission.d.ts +0 -14
  215. package/dist/common/errors/reclaim-host-role-error.js +0 -149
  216. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  217. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  218. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  219. package/dist/common/errors/reconnection-in-progress.js +0 -33
  220. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  221. package/dist/common/errors/reconnection.d.ts +0 -15
  222. package/dist/common/errors/stats.d.ts +0 -15
  223. package/dist/common/errors/webex-errors.d.ts +0 -93
  224. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  225. package/dist/common/events/events-scope.d.ts +0 -17
  226. package/dist/common/events/events.d.ts +0 -12
  227. package/dist/common/events/trigger-proxy.d.ts +0 -2
  228. package/dist/common/events/util.d.ts +0 -2
  229. package/dist/common/logs/logger-config.d.ts +0 -2
  230. package/dist/common/logs/logger-proxy.d.ts +0 -2
  231. package/dist/common/logs/request.d.ts +0 -36
  232. package/dist/common/queue.d.ts +0 -34
  233. package/dist/config.d.ts +0 -72
  234. package/dist/constants.d.ts +0 -1088
  235. package/dist/controls-options-manager/constants.d.ts +0 -4
  236. package/dist/controls-options-manager/enums.d.ts +0 -15
  237. package/dist/controls-options-manager/index.d.ts +0 -136
  238. package/dist/controls-options-manager/types.d.ts +0 -43
  239. package/dist/controls-options-manager/util.d.ts +0 -1
  240. package/dist/index.d.ts +0 -7
  241. package/dist/interceptors/index.d.ts +0 -2
  242. package/dist/interceptors/locusRetry.d.ts +0 -27
  243. package/dist/interpretation/collection.d.ts +0 -5
  244. package/dist/interpretation/index.d.ts +0 -5
  245. package/dist/interpretation/siLanguage.d.ts +0 -5
  246. package/dist/locus-info/controlsUtils.d.ts +0 -2
  247. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  248. package/dist/locus-info/fullState.d.ts +0 -2
  249. package/dist/locus-info/hostUtils.d.ts +0 -2
  250. package/dist/locus-info/index.d.ts +0 -322
  251. package/dist/locus-info/infoUtils.d.ts +0 -2
  252. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  253. package/dist/locus-info/parser.d.ts +0 -272
  254. package/dist/locus-info/selfUtils.d.ts +0 -2
  255. package/dist/media/index.d.ts +0 -34
  256. package/dist/media/properties.d.ts +0 -93
  257. package/dist/media/util.d.ts +0 -2
  258. package/dist/mediaQualityMetrics/config.d.ts +0 -241
  259. package/dist/mediaQualityMetrics/config.js +0 -502
  260. package/dist/mediaQualityMetrics/config.js.map +0 -1
  261. package/dist/meeting/effectsState.js +0 -260
  262. package/dist/meeting/effectsState.js.map +0 -1
  263. package/dist/meeting/in-meeting-actions.d.ts +0 -167
  264. package/dist/meeting/index.d.ts +0 -1825
  265. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  266. package/dist/meeting/muteState.d.ts +0 -178
  267. package/dist/meeting/request.d.ts +0 -295
  268. package/dist/meeting/request.type.d.ts +0 -11
  269. package/dist/meeting/state.d.ts +0 -9
  270. package/dist/meeting/util.d.ts +0 -119
  271. package/dist/meeting/voicea-meeting.d.ts +0 -16
  272. package/dist/meeting-info/collection.d.ts +0 -20
  273. package/dist/meeting-info/index.d.ts +0 -69
  274. package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
  275. package/dist/meeting-info/request.d.ts +0 -22
  276. package/dist/meeting-info/util.d.ts +0 -2
  277. package/dist/meeting-info/utilv2.d.ts +0 -2
  278. package/dist/meetings/collection.d.ts +0 -40
  279. package/dist/meetings/index.d.ts +0 -390
  280. package/dist/meetings/meetings.types.d.ts +0 -4
  281. package/dist/meetings/request.d.ts +0 -27
  282. package/dist/meetings/util.d.ts +0 -18
  283. package/dist/member/index.d.ts +0 -160
  284. package/dist/member/member.types.js +0 -17
  285. package/dist/member/member.types.js.map +0 -1
  286. package/dist/member/types.d.ts +0 -32
  287. package/dist/member/util.d.ts +0 -2
  288. package/dist/members/collection.d.ts +0 -29
  289. package/dist/members/index.d.ts +0 -353
  290. package/dist/members/request.d.ts +0 -114
  291. package/dist/members/types.d.ts +0 -25
  292. package/dist/members/util.d.ts +0 -215
  293. package/dist/metrics/config.js +0 -276
  294. package/dist/metrics/config.js.map +0 -1
  295. package/dist/metrics/constants.d.ts +0 -70
  296. package/dist/metrics/index.d.ts +0 -45
  297. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  298. package/dist/multistream/receiveSlot.d.ts +0 -68
  299. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  300. package/dist/multistream/remoteMedia.d.ts +0 -72
  301. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  302. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  303. package/dist/multistream/sendSlotManager.d.ts +0 -69
  304. package/dist/networkQualityMonitor/index.d.ts +0 -70
  305. package/dist/networkQualityMonitor/index.js +0 -221
  306. package/dist/networkQualityMonitor/index.js.map +0 -1
  307. package/dist/peer-connection-manager/index.js +0 -671
  308. package/dist/peer-connection-manager/index.js.map +0 -1
  309. package/dist/peer-connection-manager/util.js +0 -109
  310. package/dist/peer-connection-manager/util.js.map +0 -1
  311. package/dist/personal-meeting-room/index.d.ts +0 -47
  312. package/dist/personal-meeting-room/request.d.ts +0 -14
  313. package/dist/personal-meeting-room/util.d.ts +0 -2
  314. package/dist/reachability/clusterReachability.d.ts +0 -109
  315. package/dist/reachability/index.d.ts +0 -105
  316. package/dist/reachability/request.d.ts +0 -39
  317. package/dist/reachability/util.d.ts +0 -8
  318. package/dist/reactions/constants.d.ts +0 -3
  319. package/dist/reactions/reactions.d.ts +0 -4
  320. package/dist/reactions/reactions.type.d.ts +0 -52
  321. package/dist/reconnection-manager/index.d.ts +0 -136
  322. package/dist/recording-controller/enums.d.ts +0 -7
  323. package/dist/recording-controller/index.d.ts +0 -207
  324. package/dist/recording-controller/util.d.ts +0 -14
  325. package/dist/roap/collection.js +0 -62
  326. package/dist/roap/collection.js.map +0 -1
  327. package/dist/roap/handler.js +0 -275
  328. package/dist/roap/handler.js.map +0 -1
  329. package/dist/roap/index.d.ts +0 -86
  330. package/dist/roap/request.d.ts +0 -39
  331. package/dist/roap/state.js +0 -126
  332. package/dist/roap/state.js.map +0 -1
  333. package/dist/roap/turnDiscovery.d.ts +0 -155
  334. package/dist/roap/util.js +0 -75
  335. package/dist/roap/util.js.map +0 -1
  336. package/dist/rtcMetrics/constants.d.ts +0 -4
  337. package/dist/rtcMetrics/constants.js +0 -11
  338. package/dist/rtcMetrics/constants.js.map +0 -1
  339. package/dist/rtcMetrics/index.d.ts +0 -61
  340. package/dist/rtcMetrics/index.js +0 -197
  341. package/dist/rtcMetrics/index.js.map +0 -1
  342. package/dist/statsAnalyzer/global.d.ts +0 -36
  343. package/dist/statsAnalyzer/global.js +0 -126
  344. package/dist/statsAnalyzer/global.js.map +0 -1
  345. package/dist/statsAnalyzer/index.d.ts +0 -217
  346. package/dist/statsAnalyzer/index.js +0 -1013
  347. package/dist/statsAnalyzer/index.js.map +0 -1
  348. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
  349. package/dist/statsAnalyzer/mqaUtil.js +0 -179
  350. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  351. package/dist/transcription/index.d.ts +0 -64
  352. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  353. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  354. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  355. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  356. package/dist/types/rtcMetrics/index.d.ts +0 -71
  357. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  358. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  359. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  360. package/dist/webinar/collection.d.ts +0 -16
  361. package/dist/webinar/index.d.ts +0 -5
package/src/constants.ts CHANGED
@@ -369,6 +369,10 @@ export const EVENT_TRIGGERS = {
369
369
  MEETING_CONTROLS_MEETING_FULL_UPDATED: 'meeting:controls:meeting-full:updated',
370
370
  MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED:
371
371
  'meeting:controls:practice-session-status:updated',
372
+ MEETING_CONTROLS_ANNOTATION_UPDATED: 'meeting:controls:annotation:updated',
373
+ MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED:
374
+ 'meeting:controls:remote-desktop-control:updated',
375
+ MEETING_CONTROLS_POLLING_QA_UPDATED: 'meeting:controls:polling-qa:updated',
372
376
  // Locus URL changed
373
377
  MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
374
378
  MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
@@ -376,8 +380,10 @@ export const EVENT_TRIGGERS = {
376
380
  MEETING_TRANSCRIPTION_CONNECTED: 'meeting:transcription:connected',
377
381
  MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',
378
382
  MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',
383
+ MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED: 'meeting:transcription:spokenLanguageUpdate',
379
384
  MEETING_MANUAL_CAPTION_UPDATED: 'meeting:manualCaptionControl:updated',
380
385
  MEETING_CAPTION_RECEIVED: 'meeting:caption-received',
386
+ MEETING_PARTICIPANT_REASON_CHANGED: 'meeting:participant-reason-changed',
381
387
  };
382
388
 
383
389
  export const EVENT_TYPES = {
@@ -695,6 +701,8 @@ export const LOCUSINFO = {
695
701
  CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
696
702
  CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
697
703
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
704
+ CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED:
705
+ 'CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED',
698
706
  CONTROLS_MEETING_MANUAL_CAPTION_UPDATED: 'CONTROLS_MEETING_MANUAL_CAPTION_UPDATED',
699
707
  CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
700
708
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
@@ -711,6 +719,9 @@ export const LOCUSINFO = {
711
719
  CONTROLS_PRACTICE_SESSION_STATUS_UPDATED: 'CONTROLS_PRACTICE_SESSION_STATUS_UPDATED',
712
720
  CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',
713
721
  CONTROLS_STAGE_VIEW_UPDATED: 'CONTROLS_STAGE_VIEW_UPDATED',
722
+ CONTROLS_ANNOTATION_CHANGED: 'CONTROLS_ANNOTATION_CHANGED',
723
+ CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED: 'CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED',
724
+ CONTROLS_POLLING_QA_CHANGED: 'CONTROLS_POLLING_QA_CHANGED',
714
725
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
715
726
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
716
727
  SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
@@ -738,6 +749,7 @@ export const LOCUSINFO = {
738
749
  MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
739
750
  LINKS_SERVICES: 'LINKS_SERVICES',
740
751
  LINKS_RESOURCES: 'LINKS_RESOURCES',
752
+ PARTICIPANT_REASON_CHANGED: 'PARTICIPANT_REASON_CHANGED',
741
753
  },
742
754
  };
743
755
 
@@ -904,7 +916,9 @@ export enum SELF_POLICY {
904
916
  ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',
905
917
  SUPPORT_LOCAL_RECORD = 'supportLocalRecord',
906
918
  SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',
919
+ SUPPORT_PREMISE_RECORD = 'supportPremiseRecord',
907
920
  SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',
921
+ SUPPORT_REALTIME_CLOSE_CAPTION_MANUAL = 'supportRealtimeCloseCaptionManual',
908
922
  SUPPORT_CHAT = 'supportChat',
909
923
  SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',
910
924
  SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',
@@ -972,6 +986,7 @@ export const DISPLAY_HINTS = {
972
986
  PRESENTER_CONTROL: 'PRESENTER_CONTROL',
973
987
  CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
974
988
  CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
989
+ MOVE_TO_LOBBY: 'MOVE_TO_LOBBY',
975
990
 
976
991
  // breakout session
977
992
  BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
@@ -1025,6 +1040,21 @@ export const DISPLAY_HINTS = {
1025
1040
  PRACTICE_SESSION_OFF: 'PRACTICE_SESSION_OFF',
1026
1041
  SHOW_PRACTICE_SESSION_START: 'SHOW_PRACTICE_SESSION_START',
1027
1042
  SHOW_PRACTICE_SESSION_STOP: 'SHOW_PRACTICE_SESSION_STOP',
1043
+
1044
+ // Explicit consent for post meeting data
1045
+ SHOW_POST_MEETING_DATA_CONSENT_PROMPT: 'SHOW_POST_MEETING_DATA_CONSENT_PROMPT',
1046
+
1047
+ // Annotations
1048
+ ENABLE_ANNOTATION_MEETING_OPTION: 'ENABLE_ANNOTATION_MEETING_OPTION',
1049
+ DISABLE_ANNOTATION_MEETING_OPTION: 'DISABLE_ANNOTATION_MEETING_OPTION',
1050
+
1051
+ // Remote Desktop Control
1052
+ ENABLE_RDC_MEETING_OPTION: 'ENABLE_RDC_MEETING_OPTION',
1053
+ DISABLE_RDC_MEETING_OPTION: 'DISABLE_RDC_MEETING_OPTION',
1054
+
1055
+ // Polling QA
1056
+ ENABLE_ATTENDEE_START_POLLING_QA: 'ENABLE_ATTENDEE_START_POLLING_QA',
1057
+ DISABLE_ATTENDEE_START_POLLING_QA: 'DISABLE_ATTENDEE_START_POLLING_QA',
1028
1058
  };
1029
1059
 
1030
1060
  export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
@@ -1149,96 +1179,6 @@ export const NETWORK_STATUS = {
1149
1179
 
1150
1180
  export type NETWORK_STATUS = Enum<typeof NETWORK_STATUS>;
1151
1181
 
1152
- export const NETWORK_TYPE = {
1153
- VPN: 'vpn',
1154
- UNKNOWN: 'unknown',
1155
- WIFI: 'wifi',
1156
- ETHERNET: 'ethernet',
1157
- };
1158
-
1159
- export const STATS = {
1160
- SEND_DIRECTION: 'send',
1161
- RECEIVE_DIRECTION: 'recv',
1162
- REMOTE: 'remote',
1163
- LOCAL: 'local',
1164
- };
1165
-
1166
- export const MQA_STATS = {
1167
- MQA_SIZE: 120, // MQA is done on 60 second intervals by server def, add a buffer for missed events
1168
- CA_TYPE: 'MQA',
1169
- DEFAULT_IP: '0.0.0.0',
1170
- DEFAULT_SHARE_SENDER_STATS: {
1171
- common: {
1172
- common: {
1173
- direction: 'sendrecv', // TODO: parse from SDP and save globally
1174
- isMain: false, // always true for share sender
1175
- mariFecEnabled: false, // unavailable
1176
- mariRtxEnabled: false, // unavailable
1177
- mariLiteEnabled: false, // unavailable
1178
- mariQosEnabled: false, // unavailable
1179
- multistreamEnabled: false, // unavailable
1180
- },
1181
- availableBitrate: 0,
1182
- dtlsBitrate: 0, // unavailable
1183
- dtlsPackets: 0, // unavailable
1184
- fecBitrate: 0, // unavailable
1185
- fecPackets: 0, // unavailable
1186
- maxBitrate: 0, // unavailable
1187
- queueDelay: 0, // unavailable
1188
- remoteJitter: 0, // unavailable
1189
- remoteLossRate: 0,
1190
- roundTripTime: 0,
1191
- rtcpBitrate: 0, // unavailable
1192
- rtcpPackets: 0, // unavailable
1193
- rtpBitrate: 0, // unavailable
1194
- rtpPackets: 0,
1195
- stunBitrate: 0, // unavailable
1196
- stunPackets: 0, // unavailable
1197
- transportType: 'UDP', // TODO: parse the transport type from the SDP and save globally
1198
- },
1199
- streams: [
1200
- {
1201
- common: {
1202
- codec: 'H264', // TODO: parse the codec from the SDP and save globally
1203
- duplicateSsci: 0, // unavailable
1204
- requestedBitrate: 0, // unavailable
1205
- requestedFrames: 0, // unavailable
1206
- rtpPackets: 0,
1207
- ssci: 0, // unavailable
1208
- transmittedBitrate: 0,
1209
- transmittedFrameRate: 0,
1210
- },
1211
- h264CodecProfile: 'BP', // TODO: parse the profile level from h264 in the SDP and save globally
1212
- localConfigurationChanges: 0, // unavailable
1213
- remoteConfigurationChanges: 0, // unavailable
1214
- requestedFrameSize: 0, // unavailable
1215
- requestedKeyFrames: 0, // unavailable
1216
- transmittedFrameSize: 0, // unavailable
1217
- transmittedHeight: 0,
1218
- transmittedKeyFrames: 0,
1219
- transmittedWidth: 0,
1220
- },
1221
- ],
1222
- },
1223
- intervalMetadata: {
1224
- memoryUsage: {
1225
- cpuBitWidth: 0,
1226
- mainProcessMaximumMemoryBytes: 0,
1227
- osBitWidth: 0,
1228
- processAverageMemoryUsage: 0,
1229
- processMaximumMemoryBytes: 0,
1230
- processMaximumMemoryUsage: 0,
1231
- systemAverageMemoryUsage: 0,
1232
- systemMaximumMemoryUsage: 0,
1233
- },
1234
- peerReflexiveIP: 'NULL', // TODO: save after ice trickling completes and use as a global variable
1235
- processAverageCPU: 0,
1236
- processMaximumCPU: 0,
1237
- systemAverageCPU: 0,
1238
- systemMaximumCPU: 0,
1239
- },
1240
- };
1241
-
1242
1182
  // ****** MEDIA QUALITY CONSTANTS ****** //
1243
1183
 
1244
1184
  // these values must match allowed values of RemoteQualityLevel from the @webex/internal-media-core lib
@@ -12,6 +12,9 @@ enum Control {
12
12
  shareControl = 'shareControl',
13
13
  video = 'video',
14
14
  viewTheParticipantList = 'viewTheParticipantList',
15
+ annotation = 'annotation',
16
+ rdc = 'rdc',
17
+ pollingQA = 'pollingQA',
15
18
  }
16
19
 
17
20
  export {Control, Setting};
@@ -40,13 +40,28 @@ export interface ViewTheParticipantListProperties {
40
40
  attendeeCount?: boolean;
41
41
  }
42
42
 
43
+ export interface AnnotationProperties {
44
+ enabled?: boolean;
45
+ }
46
+
47
+ export interface RemoteDesktopControlProperties {
48
+ enabled?: boolean;
49
+ }
50
+
51
+ export interface PollingQAProperties {
52
+ enabled?: boolean;
53
+ }
54
+
43
55
  export type Properties =
44
56
  | AudioProperties
45
57
  | RaiseHandProperties
46
58
  | ReactionsProperties
47
59
  | ShareControlProperties
48
60
  | VideoProperties
49
- | ViewTheParticipantListProperties;
61
+ | ViewTheParticipantListProperties
62
+ | AnnotationProperties
63
+ | RemoteDesktopControlProperties
64
+ | PollingQAProperties;
50
65
 
51
66
  export interface ControlConfig<Props = Properties> {
52
67
  /**
@@ -7,6 +7,9 @@ import {
7
7
  ReactionsProperties,
8
8
  ViewTheParticipantListProperties,
9
9
  VideoProperties,
10
+ type RemoteDesktopControlProperties,
11
+ type AnnotationProperties,
12
+ type PollingQAProperties,
10
13
  } from './types';
11
14
 
12
15
  /**
@@ -256,6 +259,75 @@ class Utils {
256
259
  return Utils.hasHints({requiredHints, displayHints});
257
260
  }
258
261
 
262
+ /**
263
+ * Validate if a annotation-scoped control is allowed to be sent to the service.
264
+ *
265
+ * @param {ControlConfig<AnnotationProperties>} control - Annotation control config to validate
266
+ * @param {Array<string>} displayHints - All available hints
267
+ * @returns {boolean} - True if all of the actions are allowed.
268
+ */
269
+ public static canUpdateAnnotation(
270
+ control: ControlConfig<AnnotationProperties>,
271
+ displayHints: Array<string>
272
+ ): boolean {
273
+ const requiredHints = [];
274
+
275
+ if (control.properties.enabled === true) {
276
+ requiredHints.push(DISPLAY_HINTS.ENABLE_ANNOTATION_MEETING_OPTION);
277
+ }
278
+ if (control.properties.enabled === false) {
279
+ requiredHints.push(DISPLAY_HINTS.DISABLE_ANNOTATION_MEETING_OPTION);
280
+ }
281
+
282
+ return Utils.hasHints({requiredHints, displayHints});
283
+ }
284
+
285
+ /**
286
+ * Validate if a rdc-scoped control is allowed to be sent to the service.
287
+ *
288
+ * @param {ControlConfig<RemoteDesktopControlProperties>} control - Remote Desktop Control config to validate
289
+ * @param {Array<string>} displayHints - All available hints
290
+ * @returns {boolean} - True if all of the actions are allowed.
291
+ */
292
+ public static canUpdateRemoteDesktopControl(
293
+ control: ControlConfig<RemoteDesktopControlProperties>,
294
+ displayHints: Array<string>
295
+ ): boolean {
296
+ const requiredHints = [];
297
+
298
+ if (control.properties.enabled === true) {
299
+ requiredHints.push(DISPLAY_HINTS.ENABLE_RDC_MEETING_OPTION);
300
+ }
301
+ if (control.properties.enabled === false) {
302
+ requiredHints.push(DISPLAY_HINTS.DISABLE_RDC_MEETING_OPTION);
303
+ }
304
+
305
+ return Utils.hasHints({requiredHints, displayHints});
306
+ }
307
+
308
+ /**
309
+ * Validate if a pollingQA-scoped control is allowed to be sent to the service.
310
+ *
311
+ * @param {ControlConfig<PollingQAProperties>} control - Polling QA config to validate
312
+ * @param {Array<string>} displayHints - All available hints
313
+ * @returns {boolean} - True if all of the actions are allowed.
314
+ */
315
+ public static canUpdatePollingQA(
316
+ control: ControlConfig<PollingQAProperties>,
317
+ displayHints: Array<string>
318
+ ): boolean {
319
+ const requiredHints = [];
320
+
321
+ if (control.properties.enabled === true) {
322
+ requiredHints.push(DISPLAY_HINTS.ENABLE_ATTENDEE_START_POLLING_QA);
323
+ }
324
+ if (control.properties.enabled === false) {
325
+ requiredHints.push(DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA);
326
+ }
327
+
328
+ return Utils.hasHints({requiredHints, displayHints});
329
+ }
330
+
259
331
  /**
260
332
  * Validate that a control can be sent to the service based on the provided
261
333
  * display hints.
@@ -301,6 +373,27 @@ class Utils {
301
373
  );
302
374
  break;
303
375
 
376
+ case Control.annotation:
377
+ determinant = Utils.canUpdateAnnotation(
378
+ control as ControlConfig<AnnotationProperties>,
379
+ displayHints
380
+ );
381
+ break;
382
+
383
+ case Control.rdc:
384
+ determinant = Utils.canUpdateRemoteDesktopControl(
385
+ control as ControlConfig<RemoteDesktopControlProperties>,
386
+ displayHints
387
+ );
388
+ break;
389
+
390
+ case Control.pollingQA:
391
+ determinant = Utils.canUpdatePollingQA(
392
+ control as ControlConfig<PollingQAProperties>,
393
+ displayHints
394
+ );
395
+ break;
396
+
304
397
  default:
305
398
  determinant = false;
306
399
  }
@@ -35,13 +35,13 @@ const SimultaneousInterpretation = WebexPlugin.extend({
35
35
  derived: {
36
36
  shouldQuerySupportLanguages: {
37
37
  cache: false,
38
- deps: ['canManageInterpreters', 'hostSIEnabled'],
38
+ deps: ['canManageInterpreters', 'hostSIEnabled', 'locusUrl'],
39
39
  /**
40
40
  * Returns should query support languages or not
41
41
  * @returns {boolean}
42
42
  */
43
43
  fn() {
44
- return !!(this.canManageInterpreters && this.hostSIEnabled);
44
+ return !!(this.canManageInterpreters && this.hostSIEnabled && this.locusUrl);
45
45
  },
46
46
  },
47
47
  },
@@ -51,7 +51,7 @@ const SimultaneousInterpretation = WebexPlugin.extend({
51
51
  */
52
52
  initialize() {
53
53
  this.listenTo(this, 'change:shouldQuerySupportLanguages', () => {
54
- if (this.canManageInterpreters && !this.supportLanguages) {
54
+ if (this.shouldQuerySupportLanguages && !this.supportLanguages) {
55
55
  this.querySupportLanguages();
56
56
  }
57
57
  });
@@ -1,5 +1,5 @@
1
1
  import {isEqual} from 'lodash';
2
- import {BREAKOUTS} from '../constants';
2
+ import {BREAKOUTS, MEETING_STATE} from '../constants';
3
3
 
4
4
  const ControlsUtils: any = {};
5
5
 
@@ -40,6 +40,7 @@ ControlsUtils.parse = (controls: any) => {
40
40
  parsedControls.transcribe = {
41
41
  transcribing: controls.transcribe.transcribing,
42
42
  caption: controls.transcribe.caption,
43
+ spokenLanguage: controls.transcribe.spokenLanguage,
43
44
  };
44
45
  }
45
46
 
@@ -111,6 +112,24 @@ ControlsUtils.parse = (controls: any) => {
111
112
  };
112
113
  }
113
114
 
115
+ if (controls?.annotationControl) {
116
+ parsedControls.annotationControl = {
117
+ enabled: controls.annotationControl.enabled,
118
+ };
119
+ }
120
+
121
+ if (controls?.rdcControl) {
122
+ parsedControls.rdcControl = {
123
+ enabled: controls.rdcControl.enabled,
124
+ };
125
+ }
126
+
127
+ if (controls?.pollingQAControl) {
128
+ parsedControls.pollingQAControl = {
129
+ enabled: controls.pollingQAControl.enabled,
130
+ };
131
+ }
132
+
114
133
  return parsedControls;
115
134
  };
116
135
 
@@ -174,6 +193,11 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
174
193
  !isEqual(previous?.transcribe?.transcribing, current?.transcribe?.transcribing) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true
175
194
  (previous?.transcribe?.transcribing || current?.transcribe?.transcribing), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting
176
195
 
196
+ hasTranscribeSpokenLanguageChanged:
197
+ current?.transcribe &&
198
+ !isEqual(previous?.transcribe?.spokenLanguage, current?.transcribe?.spokenLanguage) &&
199
+ !!(previous?.transcribe?.spokenLanguage || current?.transcribe?.spokenLanguage),
200
+
177
201
  hasManualCaptionChanged:
178
202
  current?.manualCaptionControl &&
179
203
  !isEqual(previous?.manualCaptionControl?.enabled, current?.manualCaptionControl?.enabled) &&
@@ -206,11 +230,20 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
206
230
  ),
207
231
 
208
232
  hasPracticeSessionEnabledChanged: !isEqual(
209
- previous?.practiceSession?.enabled,
210
- current?.practiceSession?.enabled
233
+ !!previous?.practiceSession?.enabled,
234
+ !!current?.practiceSession?.enabled
211
235
  ),
212
236
 
213
237
  hasStageViewChanged: !isEqual(previous?.videoLayout, current?.videoLayout),
238
+
239
+ hasAnnotationControlChanged:
240
+ current?.annotationControl?.enabled !== previous?.annotationControl?.enabled,
241
+
242
+ hasRemoteDesktopControlChanged:
243
+ current?.rdcControl?.enabled !== previous?.rdcControl?.enabled,
244
+
245
+ hasPollingQAControlChanged:
246
+ current?.pollingQAControl?.enabled !== previous?.pollingQAControl?.enabled,
214
247
  },
215
248
  };
216
249
  };
@@ -242,30 +275,42 @@ ControlsUtils.isNeedReplaceMembers = (oldControls: any, controls: any) => {
242
275
  }
243
276
 
244
277
  return (
245
- oldControls.breakout.groupId !== controls.breakout.groupId ||
246
- oldControls.breakout.sessionId !== controls.breakout.sessionId
278
+ oldControls?.breakout?.groupId !== controls?.breakout?.groupId ||
279
+ oldControls?.breakout?.sessionId !== controls?.breakout?.sessionId
247
280
  );
248
281
  };
249
282
 
250
283
  /**
251
284
  * determine the switch status between breakout session and main session.
252
- * @param {LocusControls} oldControls
253
- * @param {LocusControls} controls
285
+ * @param {LocusInfo} oldLocus
286
+ * @param {LocusInfo} newLocus
254
287
  * @returns {Object}
255
288
  */
256
- ControlsUtils.getSessionSwitchStatus = (oldControls: any, controls: any) => {
289
+ ControlsUtils.getSessionSwitchStatus = (oldLocus: any, newLocus: any) => {
257
290
  const status = {isReturnToMain: false, isJoinToBreakout: false};
258
291
  // no breakout case
259
- if (!oldControls?.breakout || !controls?.breakout) {
292
+ if (!oldLocus.controls?.breakout || !newLocus.controls?.breakout) {
260
293
  return status;
261
294
  }
262
295
 
263
- status.isReturnToMain =
264
- oldControls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&
265
- controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;
296
+ // It is used to fix the timing issue triggered when the creator leaves session to ensure that the member list is complete
297
+ const needUseCache = !!(
298
+ oldLocus.self?.isCreator &&
299
+ newLocus.participants?.length === 1 &&
300
+ newLocus.participants?.[0].isCreator &&
301
+ newLocus.participants?.[0].state === MEETING_STATE.STATES.JOINED &&
302
+ newLocus.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&
303
+ newLocus.controls?.breakout?.groups?.length
304
+ );
305
+
306
+ const isReturnToMain =
307
+ oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&
308
+ newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;
309
+
310
+ status.isReturnToMain = needUseCache || isReturnToMain;
266
311
  status.isJoinToBreakout =
267
- oldControls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&
268
- controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;
312
+ oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&
313
+ newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;
269
314
 
270
315
  return status;
271
316
  };