@webex/plugin-meetings 3.8.1 → 3.9.0-webinar5k.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/README.md +26 -13
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.js +16 -3
  5. package/dist/constants.js.map +1 -1
  6. package/dist/controls-options-manager/enums.js +1 -0
  7. package/dist/controls-options-manager/enums.js.map +1 -1
  8. package/dist/controls-options-manager/types.js.map +1 -1
  9. package/dist/controls-options-manager/util.js +26 -0
  10. package/dist/controls-options-manager/util.js.map +1 -1
  11. package/dist/hashTree/constants.js +23 -0
  12. package/dist/hashTree/constants.js.map +1 -0
  13. package/dist/hashTree/hashTree.js +516 -0
  14. package/dist/hashTree/hashTree.js.map +1 -0
  15. package/dist/hashTree/hashTreeParser.js +521 -0
  16. package/dist/hashTree/hashTreeParser.js.map +1 -0
  17. package/dist/interpretation/index.js +1 -1
  18. package/dist/interpretation/siLanguage.js +1 -1
  19. package/dist/locus-info/controlsUtils.js +11 -3
  20. package/dist/locus-info/controlsUtils.js.map +1 -1
  21. package/dist/locus-info/index.js +331 -59
  22. package/dist/locus-info/index.js.map +1 -1
  23. package/dist/media/index.js +2 -2
  24. package/dist/media/index.js.map +1 -1
  25. package/dist/meeting/brbState.js +17 -14
  26. package/dist/meeting/brbState.js.map +1 -1
  27. package/dist/meeting/in-meeting-actions.js +5 -1
  28. package/dist/meeting/in-meeting-actions.js.map +1 -1
  29. package/dist/meeting/index.js +264 -125
  30. package/dist/meeting/index.js.map +1 -1
  31. package/dist/meeting/muteState.js +2 -5
  32. package/dist/meeting/muteState.js.map +1 -1
  33. package/dist/meeting/request.js +19 -0
  34. package/dist/meeting/request.js.map +1 -1
  35. package/dist/meeting/request.type.js.map +1 -1
  36. package/dist/meeting/util.js +8 -11
  37. package/dist/meeting/util.js.map +1 -1
  38. package/dist/meetings/index.js +6 -2
  39. package/dist/meetings/index.js.map +1 -1
  40. package/dist/member/types.js.map +1 -1
  41. package/dist/members/collection.js +13 -0
  42. package/dist/members/collection.js.map +1 -1
  43. package/dist/members/index.js +44 -23
  44. package/dist/members/index.js.map +1 -1
  45. package/dist/members/request.js +3 -3
  46. package/dist/members/request.js.map +1 -1
  47. package/dist/members/util.js +18 -6
  48. package/dist/members/util.js.map +1 -1
  49. package/dist/metrics/constants.js +1 -0
  50. package/dist/metrics/constants.js.map +1 -1
  51. package/dist/multistream/sendSlotManager.js +32 -2
  52. package/dist/multistream/sendSlotManager.js.map +1 -1
  53. package/dist/reachability/index.js +5 -10
  54. package/dist/reachability/index.js.map +1 -1
  55. package/dist/types/constants.d.ts +12 -0
  56. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  57. package/dist/types/controls-options-manager/types.d.ts +4 -1
  58. package/dist/types/hashTree/constants.d.ts +8 -0
  59. package/dist/types/hashTree/hashTree.d.ts +128 -0
  60. package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
  61. package/dist/types/locus-info/index.d.ts +93 -3
  62. package/dist/types/meeting/brbState.d.ts +0 -1
  63. package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
  64. package/dist/types/meeting/index.d.ts +36 -3
  65. package/dist/types/meeting/request.d.ts +9 -1
  66. package/dist/types/meeting/request.type.d.ts +74 -0
  67. package/dist/types/meeting/util.d.ts +3 -3
  68. package/dist/types/member/types.d.ts +1 -0
  69. package/dist/types/members/collection.d.ts +6 -0
  70. package/dist/types/members/index.d.ts +15 -3
  71. package/dist/types/members/request.d.ts +1 -1
  72. package/dist/types/members/util.d.ts +5 -2
  73. package/dist/types/metrics/constants.d.ts +1 -0
  74. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  75. package/dist/types/reachability/index.d.ts +2 -2
  76. package/dist/webinar/index.js +1 -1
  77. package/package.json +26 -25
  78. package/src/constants.ts +16 -0
  79. package/src/controls-options-manager/enums.ts +1 -0
  80. package/src/controls-options-manager/types.ts +6 -1
  81. package/src/controls-options-manager/util.ts +31 -0
  82. package/src/hashTree/constants.ts +12 -0
  83. package/src/hashTree/hashTree.ts +460 -0
  84. package/src/hashTree/hashTreeParser.ts +556 -0
  85. package/src/locus-info/controlsUtils.ts +15 -0
  86. package/src/locus-info/index.ts +434 -58
  87. package/src/media/index.ts +2 -2
  88. package/src/meeting/brbState.ts +13 -9
  89. package/src/meeting/in-meeting-actions.ts +8 -0
  90. package/src/meeting/index.ts +193 -39
  91. package/src/meeting/muteState.ts +2 -6
  92. package/src/meeting/request.ts +16 -0
  93. package/src/meeting/request.type.ts +64 -0
  94. package/src/meeting/util.ts +17 -20
  95. package/src/meetings/index.ts +17 -3
  96. package/src/member/types.ts +1 -0
  97. package/src/members/collection.ts +11 -0
  98. package/src/members/index.ts +33 -7
  99. package/src/members/request.ts +2 -2
  100. package/src/members/util.ts +14 -3
  101. package/src/metrics/constants.ts +1 -0
  102. package/src/multistream/sendSlotManager.ts +34 -2
  103. package/src/reachability/index.ts +5 -13
  104. package/test/unit/spec/controls-options-manager/util.js +58 -0
  105. package/test/unit/spec/hashTree/hashTree.ts +394 -0
  106. package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
  107. package/test/unit/spec/locus-info/controlsUtils.js +52 -0
  108. package/test/unit/spec/locus-info/index.js +547 -54
  109. package/test/unit/spec/media/index.ts +107 -0
  110. package/test/unit/spec/meeting/brbState.ts +23 -4
  111. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  112. package/test/unit/spec/meeting/index.js +647 -46
  113. package/test/unit/spec/meeting/request.js +71 -0
  114. package/test/unit/spec/members/index.js +33 -10
  115. package/test/unit/spec/members/request.js +2 -2
  116. package/test/unit/spec/members/utils.js +27 -7
  117. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  118. package/test/unit/spec/reachability/index.ts +2 -6
  119. package/dist/annotation/annotation.types.d.ts +0 -42
  120. package/dist/annotation/constants.d.ts +0 -31
  121. package/dist/annotation/index.d.ts +0 -117
  122. package/dist/breakouts/breakout.d.ts +0 -8
  123. package/dist/breakouts/collection.d.ts +0 -5
  124. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  125. package/dist/breakouts/events.d.ts +0 -8
  126. package/dist/breakouts/index.d.ts +0 -5
  127. package/dist/breakouts/request.d.ts +0 -22
  128. package/dist/breakouts/utils.d.ts +0 -15
  129. package/dist/common/browser-detection.d.ts +0 -9
  130. package/dist/common/collection.d.ts +0 -48
  131. package/dist/common/config.d.ts +0 -2
  132. package/dist/common/errors/captcha-error.d.ts +0 -15
  133. package/dist/common/errors/intent-to-join.d.ts +0 -16
  134. package/dist/common/errors/join-meeting.d.ts +0 -17
  135. package/dist/common/errors/media.d.ts +0 -15
  136. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  137. package/dist/common/errors/parameter.d.ts +0 -15
  138. package/dist/common/errors/password-error.d.ts +0 -15
  139. package/dist/common/errors/permission.d.ts +0 -14
  140. package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
  141. package/dist/common/errors/reclaim-host-role-error.js +0 -158
  142. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  143. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  144. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  145. package/dist/common/errors/reconnection-in-progress.js +0 -35
  146. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  147. package/dist/common/errors/reconnection.d.ts +0 -15
  148. package/dist/common/errors/stats.d.ts +0 -15
  149. package/dist/common/errors/webex-errors.d.ts +0 -81
  150. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  151. package/dist/common/events/events-scope.d.ts +0 -17
  152. package/dist/common/events/events.d.ts +0 -12
  153. package/dist/common/events/trigger-proxy.d.ts +0 -2
  154. package/dist/common/events/util.d.ts +0 -2
  155. package/dist/common/logs/logger-config.d.ts +0 -2
  156. package/dist/common/logs/logger-proxy.d.ts +0 -2
  157. package/dist/common/logs/request.d.ts +0 -34
  158. package/dist/common/queue.d.ts +0 -32
  159. package/dist/config.d.ts +0 -73
  160. package/dist/constants.d.ts +0 -952
  161. package/dist/controls-options-manager/constants.d.ts +0 -4
  162. package/dist/controls-options-manager/enums.d.ts +0 -5
  163. package/dist/controls-options-manager/index.d.ts +0 -120
  164. package/dist/controls-options-manager/types.d.ts +0 -43
  165. package/dist/controls-options-manager/util.d.ts +0 -7
  166. package/dist/index.d.ts +0 -4
  167. package/dist/interceptors/index.d.ts +0 -2
  168. package/dist/interceptors/locusRetry.d.ts +0 -27
  169. package/dist/interpretation/collection.d.ts +0 -5
  170. package/dist/interpretation/index.d.ts +0 -5
  171. package/dist/interpretation/siLanguage.d.ts +0 -5
  172. package/dist/locus-info/controlsUtils.d.ts +0 -2
  173. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  174. package/dist/locus-info/fullState.d.ts +0 -2
  175. package/dist/locus-info/hostUtils.d.ts +0 -2
  176. package/dist/locus-info/index.d.ts +0 -269
  177. package/dist/locus-info/infoUtils.d.ts +0 -2
  178. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  179. package/dist/locus-info/parser.d.ts +0 -212
  180. package/dist/locus-info/selfUtils.d.ts +0 -2
  181. package/dist/media/index.d.ts +0 -32
  182. package/dist/media/properties.d.ts +0 -108
  183. package/dist/media/util.d.ts +0 -2
  184. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  185. package/dist/mediaQualityMetrics/config.js +0 -513
  186. package/dist/mediaQualityMetrics/config.js.map +0 -1
  187. package/dist/meeting/effectsState.d.ts +0 -42
  188. package/dist/meeting/effectsState.js +0 -260
  189. package/dist/meeting/effectsState.js.map +0 -1
  190. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  191. package/dist/meeting/index.d.ts +0 -1622
  192. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  193. package/dist/meeting/muteState.d.ts +0 -116
  194. package/dist/meeting/request.d.ts +0 -257
  195. package/dist/meeting/request.type.d.ts +0 -11
  196. package/dist/meeting/state.d.ts +0 -9
  197. package/dist/meeting/util.d.ts +0 -2
  198. package/dist/meeting/voicea-meeting.d.ts +0 -16
  199. package/dist/meeting-info/collection.d.ts +0 -20
  200. package/dist/meeting-info/index.d.ts +0 -57
  201. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  202. package/dist/meeting-info/request.d.ts +0 -22
  203. package/dist/meeting-info/util.d.ts +0 -2
  204. package/dist/meeting-info/utilv2.d.ts +0 -2
  205. package/dist/meetings/collection.d.ts +0 -23
  206. package/dist/meetings/index.d.ts +0 -296
  207. package/dist/meetings/meetings.types.d.ts +0 -4
  208. package/dist/meetings/request.d.ts +0 -27
  209. package/dist/meetings/util.d.ts +0 -18
  210. package/dist/member/index.d.ts +0 -148
  211. package/dist/member/member.types.d.ts +0 -11
  212. package/dist/member/member.types.js +0 -18
  213. package/dist/member/member.types.js.map +0 -1
  214. package/dist/member/types.d.ts +0 -32
  215. package/dist/member/util.d.ts +0 -2
  216. package/dist/members/collection.d.ts +0 -24
  217. package/dist/members/index.d.ts +0 -308
  218. package/dist/members/request.d.ts +0 -58
  219. package/dist/members/types.d.ts +0 -25
  220. package/dist/members/util.d.ts +0 -2
  221. package/dist/metrics/config.d.ts +0 -169
  222. package/dist/metrics/config.js +0 -289
  223. package/dist/metrics/config.js.map +0 -1
  224. package/dist/metrics/constants.d.ts +0 -59
  225. package/dist/metrics/index.d.ts +0 -152
  226. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  227. package/dist/multistream/receiveSlot.d.ts +0 -68
  228. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  229. package/dist/multistream/remoteMedia.d.ts +0 -72
  230. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  231. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  232. package/dist/multistream/sendSlotManager.d.ts +0 -69
  233. package/dist/networkQualityMonitor/index.d.ts +0 -70
  234. package/dist/networkQualityMonitor/index.js +0 -226
  235. package/dist/networkQualityMonitor/index.js.map +0 -1
  236. package/dist/peer-connection-manager/index.d.ts +0 -6
  237. package/dist/peer-connection-manager/index.js +0 -671
  238. package/dist/peer-connection-manager/index.js.map +0 -1
  239. package/dist/peer-connection-manager/util.d.ts +0 -6
  240. package/dist/peer-connection-manager/util.js +0 -110
  241. package/dist/peer-connection-manager/util.js.map +0 -1
  242. package/dist/personal-meeting-room/index.d.ts +0 -47
  243. package/dist/personal-meeting-room/request.d.ts +0 -14
  244. package/dist/personal-meeting-room/util.d.ts +0 -2
  245. package/dist/reachability/clusterReachability.d.ts +0 -109
  246. package/dist/reachability/index.d.ts +0 -139
  247. package/dist/reachability/request.d.ts +0 -35
  248. package/dist/reachability/util.d.ts +0 -8
  249. package/dist/reactions/constants.d.ts +0 -3
  250. package/dist/reactions/reactions.d.ts +0 -4
  251. package/dist/reactions/reactions.type.d.ts +0 -32
  252. package/dist/reconnection-manager/index.d.ts +0 -112
  253. package/dist/recording-controller/enums.d.ts +0 -7
  254. package/dist/recording-controller/index.d.ts +0 -193
  255. package/dist/recording-controller/util.d.ts +0 -13
  256. package/dist/roap/collection.d.ts +0 -10
  257. package/dist/roap/collection.js +0 -63
  258. package/dist/roap/collection.js.map +0 -1
  259. package/dist/roap/handler.d.ts +0 -47
  260. package/dist/roap/handler.js +0 -279
  261. package/dist/roap/handler.js.map +0 -1
  262. package/dist/roap/index.d.ts +0 -116
  263. package/dist/roap/request.d.ts +0 -35
  264. package/dist/roap/state.d.ts +0 -9
  265. package/dist/roap/state.js +0 -127
  266. package/dist/roap/state.js.map +0 -1
  267. package/dist/roap/turnDiscovery.d.ts +0 -81
  268. package/dist/roap/util.d.ts +0 -2
  269. package/dist/roap/util.js +0 -76
  270. package/dist/roap/util.js.map +0 -1
  271. package/dist/rtcMetrics/constants.d.ts +0 -4
  272. package/dist/rtcMetrics/constants.js +0 -11
  273. package/dist/rtcMetrics/constants.js.map +0 -1
  274. package/dist/rtcMetrics/index.d.ts +0 -61
  275. package/dist/rtcMetrics/index.js +0 -197
  276. package/dist/rtcMetrics/index.js.map +0 -1
  277. package/dist/statsAnalyzer/global.d.ts +0 -118
  278. package/dist/statsAnalyzer/global.js +0 -127
  279. package/dist/statsAnalyzer/global.js.map +0 -1
  280. package/dist/statsAnalyzer/index.d.ts +0 -193
  281. package/dist/statsAnalyzer/index.js +0 -1019
  282. package/dist/statsAnalyzer/index.js.map +0 -1
  283. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  284. package/dist/statsAnalyzer/mqaUtil.js +0 -181
  285. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  286. package/dist/transcription/index.d.ts +0 -64
  287. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  288. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  289. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  290. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  291. package/dist/types/rtcMetrics/index.d.ts +0 -71
  292. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  293. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  294. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  295. package/dist/webinar/collection.d.ts +0 -16
  296. package/dist/webinar/index.d.ts +0 -5
@@ -563,6 +563,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
563
563
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "uploadLogsTimer", void 0);
564
564
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "logUploadIntervalIndex", void 0);
565
565
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "mediaServerIp", void 0);
566
+ /** Handles Locus LLM events
567
+ *
568
+ * @param {LocusLLMEvent} event - The Locus LLM event to process
569
+ * @returns {void}
570
+ */
571
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "processLocusLLMEvent", function (event) {
572
+ if (event.data.eventType === 'locus.state_message') {
573
+ _this.locusInfo.parse((0, _assertThisInitialized2.default)(_this), event.data);
574
+ } else {
575
+ _loggerProxy.default.logger.warn("Meeting:index#processLocusLLMEvent --> Unknown event type: ".concat(event.data.eventType));
576
+ }
577
+ });
566
578
  /**
567
579
  * Callback called when a relay event is received from meeting LLM Connection
568
580
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -1422,6 +1434,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1422
1434
 
1423
1435
  // @ts-ignore - fix types
1424
1436
  _this.webex.internal.llm.off('event:relay.event', _this.processRelayEvent);
1437
+ // @ts-ignore - Fix type
1438
+ _this.webex.internal.llm.off('event:locus.state_message', _this.processLocusLLMEvent);
1425
1439
  });
1426
1440
  /**
1427
1441
  * starts keepAlives being sent
@@ -2042,7 +2056,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2042
2056
  captions: [],
2043
2057
  isListening: false,
2044
2058
  commandText: '',
2045
- languageOptions: {},
2059
+ languageOptions: {
2060
+ currentSpokenLanguage: 'en'
2061
+ },
2046
2062
  showCaptionBox: false,
2047
2063
  transcribingRequestStatus: 'INACTIVE',
2048
2064
  isCaptioning: false,
@@ -3400,8 +3416,26 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3400
3416
  }
3401
3417
  }
3402
3418
  });
3403
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref12) {
3404
- var enable = _ref12.enable;
3419
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, function (_ref12) {
3420
+ var spokenLanguage = _ref12.spokenLanguage;
3421
+ if (spokenLanguage) {
3422
+ var _this14$transcription;
3423
+ if ((_this14$transcription = _this14.transcription) !== null && _this14$transcription !== void 0 && _this14$transcription.languageOptions) {
3424
+ _this14.transcription.languageOptions.currentSpokenLanguage = spokenLanguage;
3425
+ }
3426
+ // @ts-ignore
3427
+ _this14.webex.internal.voicea.onSpokenLanguageUpdate(spokenLanguage, _this14.id);
3428
+ _triggerProxy.default.trigger(_this14, {
3429
+ file: 'meeting/index',
3430
+ function: 'setupLocusControlsListener'
3431
+ }, _constants.EVENT_TRIGGERS.MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, {
3432
+ spokenLanguage: spokenLanguage,
3433
+ meetingId: _this14.id
3434
+ });
3435
+ }
3436
+ });
3437
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, function (_ref13) {
3438
+ var enable = _ref13.enable;
3405
3439
  _triggerProxy.default.trigger(_this14, {
3406
3440
  file: 'meeting/index',
3407
3441
  function: 'setupLocusControlsListener'
@@ -3409,24 +3443,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3409
3443
  enable: enable
3410
3444
  });
3411
3445
  });
3412
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref13) {
3413
- var breakout = _ref13.breakout;
3446
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, function (_ref14) {
3447
+ var breakout = _ref14.breakout;
3414
3448
  _this14.breakouts.updateBreakout(breakout);
3415
3449
  _triggerProxy.default.trigger(_this14, {
3416
3450
  file: 'meeting/index',
3417
3451
  function: 'setupLocusControlsListener'
3418
3452
  }, _constants.EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE);
3419
3453
  });
3420
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref14) {
3421
- var interpretation = _ref14.interpretation;
3454
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, function (_ref15) {
3455
+ var interpretation = _ref15.interpretation;
3422
3456
  _this14.simultaneousInterpretation.updateInterpretation(interpretation);
3423
3457
  _triggerProxy.default.trigger(_this14, {
3424
3458
  file: 'meeting/index',
3425
3459
  function: 'setupLocusControlsListener'
3426
3460
  }, _constants.EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE);
3427
3461
  });
3428
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref15) {
3429
- var entryExitTone = _ref15.entryExitTone;
3462
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, function (_ref16) {
3463
+ var entryExitTone = _ref16.entryExitTone;
3430
3464
  _triggerProxy.default.trigger(_this14, {
3431
3465
  file: 'meeting/index',
3432
3466
  function: 'setupLocusControlsListener'
@@ -3434,8 +3468,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3434
3468
  entryExitTone: entryExitTone
3435
3469
  });
3436
3470
  });
3437
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref16) {
3438
- var state = _ref16.state;
3471
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, function (_ref17) {
3472
+ var state = _ref17.state;
3439
3473
  _triggerProxy.default.trigger(_this14, {
3440
3474
  file: 'meeting/index',
3441
3475
  function: 'setupLocusControlsListener'
@@ -3443,8 +3477,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3443
3477
  state: state
3444
3478
  });
3445
3479
  });
3446
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref17) {
3447
- var state = _ref17.state;
3480
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, function (_ref18) {
3481
+ var state = _ref18.state;
3448
3482
  _triggerProxy.default.trigger(_this14, {
3449
3483
  file: 'meeting/index',
3450
3484
  function: 'setupLocusControlsListener'
@@ -3452,8 +3486,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3452
3486
  state: state
3453
3487
  });
3454
3488
  });
3455
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref18) {
3456
- var state = _ref18.state;
3489
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, function (_ref19) {
3490
+ var state = _ref19.state;
3457
3491
  _triggerProxy.default.trigger(_this14, {
3458
3492
  file: 'meeting/index',
3459
3493
  function: 'setupLocusControlsListener'
@@ -3461,8 +3495,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3461
3495
  state: state
3462
3496
  });
3463
3497
  });
3464
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref19) {
3465
- var state = _ref19.state;
3498
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, function (_ref20) {
3499
+ var state = _ref20.state;
3466
3500
  _triggerProxy.default.trigger(_this14, {
3467
3501
  file: 'meeting/index',
3468
3502
  function: 'setupLocusControlsListener'
@@ -3470,8 +3504,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3470
3504
  state: state
3471
3505
  });
3472
3506
  });
3473
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref20) {
3474
- var state = _ref20.state;
3507
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, function (_ref21) {
3508
+ var state = _ref21.state;
3475
3509
  _triggerProxy.default.trigger(_this14, {
3476
3510
  file: 'meeting/index',
3477
3511
  function: 'setupLocusControlsListener'
@@ -3479,8 +3513,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3479
3513
  state: state
3480
3514
  });
3481
3515
  });
3482
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref21) {
3483
- var state = _ref21.state;
3516
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, function (_ref22) {
3517
+ var state = _ref22.state;
3484
3518
  _triggerProxy.default.trigger(_this14, {
3485
3519
  file: 'meeting/index',
3486
3520
  function: 'setupLocusControlsListener'
@@ -3488,8 +3522,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3488
3522
  state: state
3489
3523
  });
3490
3524
  });
3491
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref22) {
3492
- var state = _ref22.state;
3525
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, function (_ref23) {
3526
+ var state = _ref23.state;
3493
3527
  _triggerProxy.default.trigger(_this14, {
3494
3528
  file: 'meeting/index',
3495
3529
  function: 'setupLocusControlsListener'
@@ -3497,8 +3531,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3497
3531
  state: state
3498
3532
  });
3499
3533
  });
3500
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref23) {
3501
- var state = _ref23.state;
3534
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, function (_ref24) {
3535
+ var state = _ref24.state;
3502
3536
  _triggerProxy.default.trigger(_this14, {
3503
3537
  file: 'meeting/index',
3504
3538
  function: 'setupLocusControlsListener'
@@ -3506,8 +3540,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3506
3540
  state: state
3507
3541
  });
3508
3542
  });
3509
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref24) {
3510
- var state = _ref24.state;
3543
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, function (_ref25) {
3544
+ var state = _ref25.state;
3511
3545
  _this14.webinar.updatePracticeSessionStatus(state);
3512
3546
  _triggerProxy.default.trigger(_this14, {
3513
3547
  file: 'meeting/index',
@@ -3516,8 +3550,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3516
3550
  state: state
3517
3551
  });
3518
3552
  });
3519
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref25) {
3520
- var state = _ref25.state;
3553
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, function (_ref26) {
3554
+ var state = _ref26.state;
3521
3555
  _triggerProxy.default.trigger(_this14, {
3522
3556
  file: 'meeting/index',
3523
3557
  function: 'setupLocusControlsListener'
@@ -3525,8 +3559,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3525
3559
  state: state
3526
3560
  });
3527
3561
  });
3528
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref26) {
3529
- var state = _ref26.state;
3562
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, function (_ref27) {
3563
+ var state = _ref27.state;
3530
3564
  _triggerProxy.default.trigger(_this14, {
3531
3565
  file: 'meeting/index',
3532
3566
  function: 'setupLocusControlsListener'
@@ -3534,8 +3568,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3534
3568
  state: state
3535
3569
  });
3536
3570
  });
3537
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref27) {
3538
- var state = _ref27.state;
3571
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref28) {
3572
+ var state = _ref28.state;
3539
3573
  _triggerProxy.default.trigger(_this14, {
3540
3574
  file: 'meeting/index',
3541
3575
  function: 'setupLocusControlsListener'
@@ -3543,8 +3577,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3543
3577
  state: state
3544
3578
  });
3545
3579
  });
3546
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref28) {
3547
- var state = _ref28.state;
3580
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref29) {
3581
+ var state = _ref29.state;
3548
3582
  _triggerProxy.default.trigger(_this14, {
3549
3583
  file: 'meeting/index',
3550
3584
  function: 'setupLocusControlsListener'
@@ -3552,6 +3586,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3552
3586
  state: state
3553
3587
  });
3554
3588
  });
3589
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, function (_ref30) {
3590
+ var state = _ref30.state;
3591
+ _triggerProxy.default.trigger(_this14, {
3592
+ file: 'meeting/index',
3593
+ function: 'setupLocusControlsListener'
3594
+ }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_POLLING_QA_UPDATED, {
3595
+ state: state
3596
+ });
3597
+ });
3555
3598
  }
3556
3599
 
3557
3600
  /**
@@ -3591,7 +3634,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3591
3634
  var _this15 = this;
3592
3635
  // Will get triggered on local and remote share
3593
3636
  this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
3594
- var _ref29 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3637
+ var _ref31 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
3595
3638
  var _payload$previous, _payload$previous2;
3596
3639
  var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, _this15$locusInfo, _this15$locusInfo$inf, _this15$webinar, oldShareStatus, sendStartedSharingRemote, _this15$mediaProperti;
3597
3640
  return _regenerator.default.wrap(function _callee8$(_context8) {
@@ -3794,7 +3837,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3794
3837
  }, _callee8, null, [[27,, 31, 34]]);
3795
3838
  }));
3796
3839
  return function (_x8) {
3797
- return _ref29.apply(this, arguments);
3840
+ return _ref31.apply(this, arguments);
3798
3841
  };
3799
3842
  }());
3800
3843
  }
@@ -3908,8 +3951,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3908
3951
  });
3909
3952
  }
3910
3953
  });
3911
- this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref30) {
3912
- var isInitializing = _ref30.isInitializing;
3954
+ this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref32) {
3955
+ var isInitializing = _ref32.isInitializing;
3913
3956
  _this19.updateMeetingActions();
3914
3957
  _this19.recordingController.setDisplayHints(_this19.userDisplayHints);
3915
3958
  _this19.recordingController.setUserPolicy(_this19.selfUserPolicies);
@@ -4047,7 +4090,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4047
4090
  _this21.updateLLMConnection();
4048
4091
  });
4049
4092
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
4050
- var _ref31 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
4093
+ var _ref33 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
4051
4094
  var _this21$rtcMetrics;
4052
4095
  return _regenerator.default.wrap(function _callee9$(_context9) {
4053
4096
  while (1) switch (_context9.prev = _context9.next) {
@@ -4081,7 +4124,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4081
4124
  }, _callee9);
4082
4125
  }));
4083
4126
  return function (_x9) {
4084
- return _ref31.apply(this, arguments);
4127
+ return _ref33.apply(this, arguments);
4085
4128
  };
4086
4129
  }());
4087
4130
 
@@ -4200,7 +4243,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4200
4243
  }
4201
4244
  });
4202
4245
  this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
4203
- var _ref32 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
4246
+ var _ref34 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
4204
4247
  return _regenerator.default.wrap(function _callee10$(_context10) {
4205
4248
  while (1) switch (_context10.prev = _context10.next) {
4206
4249
  case 0:
@@ -4260,7 +4303,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4260
4303
  }, _callee10, null, [[8, 14]]);
4261
4304
  }));
4262
4305
  return function (_x10) {
4263
- return _ref32.apply(this, arguments);
4306
+ return _ref34.apply(this, arguments);
4264
4307
  };
4265
4308
  }());
4266
4309
  }
@@ -4320,17 +4363,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4320
4363
  }
4321
4364
 
4322
4365
  /**
4323
- * Cancel an SIP call invitation made during a meeting
4366
+ * Cancel an SIP/phone call invitation made during a meeting
4324
4367
  * @param {Object} invitee
4325
4368
  * @param {String} invitee.memberId
4326
- * @returns {Promise} see #members.cancelSIPInvite
4369
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
4370
+ * @returns {Promise} see #members.cancelInviteByMemberId
4327
4371
  * @public
4328
4372
  * @memberof Meeting
4329
4373
  */
4330
4374
  }, {
4331
- key: "cancelSIPInvite",
4332
- value: function cancelSIPInvite(invitee) {
4333
- return this.members.cancelSIPInvite(invitee);
4375
+ key: "cancelInviteByMemberId",
4376
+ value: function cancelInviteByMemberId(invitee) {
4377
+ return this.members.cancelInviteByMemberId(invitee);
4334
4378
  }
4335
4379
 
4336
4380
  /**
@@ -4405,6 +4449,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4405
4449
  // so we need to explicitly update remote mute for correct logic flow
4406
4450
  _this24.audio.handleServerRemoteMuteUpdate(_this24, enabled);
4407
4451
  }
4452
+ }).catch(function (error) {
4453
+ return _promise.default.reject(error);
4408
4454
  }));
4409
4455
  case 11:
4410
4456
  case "end":
@@ -4822,6 +4868,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4822
4868
  canDisableRemoteDesktopControl: _util5.default.hasHints({
4823
4869
  requiredHints: [_constants.DISPLAY_HINTS.DISABLE_RDC_MEETING_OPTION],
4824
4870
  displayHints: this.userDisplayHints
4871
+ }),
4872
+ canEnablePollingQA: _util5.default.hasHints({
4873
+ requiredHints: [_constants.DISPLAY_HINTS.ENABLE_ATTENDEE_START_POLLING_QA],
4874
+ displayHints: this.userDisplayHints
4875
+ }),
4876
+ canDisablePollingQA: _util5.default.hasHints({
4877
+ requiredHints: [_constants.DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA],
4878
+ displayHints: this.userDisplayHints
4825
4879
  })
4826
4880
  }) || changed;
4827
4881
  }
@@ -4899,7 +4953,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4899
4953
  this.selfId = locus.selfId;
4900
4954
  this.mediaId = locus.mediaId;
4901
4955
  this.hostId = mtgLocus.host ? mtgLocus.host.id : this.hostId;
4902
- this.locusInfo.initialSetup(mtgLocus);
4956
+ this.locusInfo.initialSetup(mtgLocus, locus.dataSets);
4903
4957
  }
4904
4958
 
4905
4959
  /**
@@ -5343,13 +5397,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5343
5397
 
5344
5398
  // Only send restore event when it was disconnected before and for connected later
5345
5399
  if (!_this27.hasWebsocketConnected) {
5346
- // @ts-ignore
5347
- _this27.webex.internal.newMetrics.submitClientEvent({
5348
- name: 'client.mercury.connection.restored',
5349
- options: {
5350
- meetingId: _this27.id
5351
- }
5352
- });
5353
5400
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
5354
5401
  correlation_id: _this27.correlationId
5355
5402
  });
@@ -5360,13 +5407,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5360
5407
  // @ts-ignore
5361
5408
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
5362
5409
  _loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
5363
- // @ts-ignore
5364
- _this27.webex.internal.newMetrics.submitClientEvent({
5365
- name: 'client.mercury.connection.lost',
5366
- options: {
5367
- meetingId: _this27.id
5368
- }
5369
- });
5370
5410
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
5371
5411
  correlation_id: _this27.correlationId
5372
5412
  });
@@ -6376,7 +6416,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6376
6416
  isJoined = this.isJoined(); // webinar panelist should use new data channel in practice session
6377
6417
  dataChannelUrl = this.webinar.isJoinPracticeSessionDataChannel() && practiceSessionDatachannelUrl ? practiceSessionDatachannelUrl : datachannelUrl; // @ts-ignore - Fix type
6378
6418
  if (!this.webex.internal.llm.isConnected()) {
6379
- _context20.next = 9;
6419
+ _context20.next = 10;
6380
6420
  break;
6381
6421
  }
6382
6422
  if (!(
@@ -6397,22 +6437,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6397
6437
  case 8:
6398
6438
  // @ts-ignore - Fix type
6399
6439
  this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);
6400
- case 9:
6440
+ // @ts-ignore - Fix type
6441
+ this.webex.internal.llm.off('event:locus.state_message', this.processLocusLLMEvent);
6442
+ case 10:
6401
6443
  if (isJoined) {
6402
- _context20.next = 11;
6444
+ _context20.next = 12;
6403
6445
  break;
6404
6446
  }
6405
6447
  return _context20.abrupt("return", undefined);
6406
- case 11:
6448
+ case 12:
6407
6449
  return _context20.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl).then(function (registerAndConnectResult) {
6408
6450
  // @ts-ignore - Fix type
6409
6451
  _this37.webex.internal.llm.off('event:relay.event', _this37.processRelayEvent);
6410
6452
  // @ts-ignore - Fix type
6411
6453
  _this37.webex.internal.llm.on('event:relay.event', _this37.processRelayEvent);
6454
+ // @ts-ignore - Fix type
6455
+ _this37.webex.internal.llm.off('event:locus.state_message', _this37.processLocusLLMEvent);
6456
+ // @ts-ignore - Fix type
6457
+ _this37.webex.internal.llm.on('event:locus.state_message', _this37.processLocusLLMEvent);
6412
6458
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
6413
6459
  return _promise.default.resolve(registerAndConnectResult);
6414
6460
  }));
6415
- case 12:
6461
+ case 13:
6416
6462
  case "end":
6417
6463
  return _context20.stop();
6418
6464
  }
@@ -7606,6 +7652,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7606
7652
  remoteMediaManagerConfig,
7607
7653
  _options$bundlePolicy,
7608
7654
  bundlePolicy,
7655
+ _options$additionalMe,
7656
+ additionalMediaOptions,
7657
+ rawSendVideo,
7658
+ rawReceiveVideo,
7659
+ rawSendAudio,
7660
+ rawReceiveAudio,
7661
+ sendVideo,
7662
+ receiveVideo,
7663
+ sendAudio,
7664
+ receiveAudio,
7609
7665
  _this$remoteMediaMana,
7610
7666
  _yield$this$mediaProp,
7611
7667
  connectionType,
@@ -7662,17 +7718,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7662
7718
  }
7663
7719
  throw new _webexErrors.UserNotJoinedError();
7664
7720
  case 10:
7665
- localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy;
7721
+ localStreams = options.localStreams, _options$audioEnabled = options.audioEnabled, audioEnabled = _options$audioEnabled === void 0 ? true : _options$audioEnabled, _options$videoEnabled = options.videoEnabled, videoEnabled = _options$videoEnabled === void 0 ? true : _options$videoEnabled, _options$shareAudioEn = options.shareAudioEnabled, shareAudioEnabled = _options$shareAudioEn === void 0 ? true : _options$shareAudioEn, _options$shareVideoEn = options.shareVideoEnabled, shareVideoEnabled = _options$shareVideoEn === void 0 ? true : _options$shareVideoEn, remoteMediaManagerConfig = options.remoteMediaManagerConfig, _options$bundlePolicy = options.bundlePolicy, bundlePolicy = _options$bundlePolicy === void 0 ? 'max-bundle' : _options$bundlePolicy, _options$additionalMe = options.additionalMediaOptions, additionalMediaOptions = _options$additionalMe === void 0 ? {} : _options$additionalMe;
7722
+ rawSendVideo = additionalMediaOptions.sendVideo, rawReceiveVideo = additionalMediaOptions.receiveVideo, rawSendAudio = additionalMediaOptions.sendAudio, rawReceiveAudio = additionalMediaOptions.receiveAudio;
7723
+ sendVideo = videoEnabled && (rawSendVideo !== null && rawSendVideo !== void 0 ? rawSendVideo : true);
7724
+ receiveVideo = videoEnabled && (rawReceiveVideo !== null && rawReceiveVideo !== void 0 ? rawReceiveVideo : true);
7725
+ sendAudio = audioEnabled && (rawSendAudio !== null && rawSendAudio !== void 0 ? rawSendAudio : true);
7726
+ receiveAudio = audioEnabled && (rawReceiveAudio !== null && rawReceiveAudio !== void 0 ? rawReceiveAudio : true);
7666
7727
  this.allowMediaInLobby = options === null || options === void 0 ? void 0 : options.allowMediaInLobby;
7667
7728
 
7668
7729
  // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
7669
7730
  // @ts-ignore - isUserUnadmitted coming from SelfUtil
7670
7731
  if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
7671
- _context35.next = 14;
7732
+ _context35.next = 19;
7672
7733
  break;
7673
7734
  }
7674
7735
  throw new _webexErrors.UserInLobbyError();
7675
- case 14:
7736
+ case 19:
7676
7737
  // @ts-ignore
7677
7738
  this.webex.internal.newMetrics.submitClientEvent({
7678
7739
  name: 'client.media.capabilities',
@@ -7702,67 +7763,67 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7702
7763
  // when audioEnabled/videoEnabled is true, we set sendAudio/sendVideo to true even before any streams are published
7703
7764
  // to avoid doing an extra SDP exchange when they are published for the first time
7704
7765
  this.mediaProperties.setMediaDirection({
7705
- sendAudio: audioEnabled,
7706
- sendVideo: videoEnabled,
7766
+ sendAudio: sendAudio,
7767
+ sendVideo: sendVideo,
7707
7768
  sendShare: false,
7708
- receiveAudio: audioEnabled,
7709
- receiveVideo: videoEnabled,
7769
+ receiveAudio: receiveAudio,
7770
+ receiveVideo: receiveVideo,
7710
7771
  receiveShare: shareAudioEnabled || shareVideoEnabled
7711
7772
  });
7712
7773
  this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
7713
7774
  this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
7714
7775
  this.brbState = (0, _brbState.createBrbState)(this, false);
7715
- _context35.prev = 19;
7716
- _context35.next = 22;
7776
+ _context35.prev = 24;
7777
+ _context35.next = 27;
7717
7778
  return this.setUpLocalStreamReferences(localStreams);
7718
- case 22:
7779
+ case 27:
7719
7780
  this.setMercuryListener();
7720
7781
  this.createStatsAnalyzer();
7721
- _context35.prev = 24;
7722
- _context35.next = 27;
7782
+ _context35.prev = 29;
7783
+ _context35.next = 32;
7723
7784
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
7724
- case 27:
7725
- _context35.next = 40;
7785
+ case 32:
7786
+ _context35.next = 45;
7726
7787
  break;
7727
- case 29:
7728
- _context35.prev = 29;
7729
- _context35.t0 = _context35["catch"](24);
7788
+ case 34:
7789
+ _context35.prev = 34;
7790
+ _context35.t0 = _context35["catch"](29);
7730
7791
  if (!(_context35.t0 instanceof _multistreamNotSupportedError.default)) {
7731
- _context35.next = 39;
7792
+ _context35.next = 44;
7732
7793
  break;
7733
7794
  }
7734
7795
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " we asked for multistream backend (Homer), but got transcoded backend, recreating media connection..."));
7735
- _context35.next = 35;
7796
+ _context35.next = 40;
7736
7797
  return this.downgradeFromMultistreamToTranscoded();
7737
- case 35:
7738
- _context35.next = 37;
7798
+ case 40:
7799
+ _context35.next = 42;
7739
7800
  return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true, undefined);
7740
- case 37:
7741
- _context35.next = 40;
7801
+ case 42:
7802
+ _context35.next = 45;
7742
7803
  break;
7743
- case 39:
7804
+ case 44:
7744
7805
  throw _context35.t0;
7745
- case 40:
7806
+ case 45:
7746
7807
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connected, finalizing..."));
7747
7808
  if (!this.mediaProperties.hasLocalShareStream()) {
7748
- _context35.next = 44;
7809
+ _context35.next = 49;
7749
7810
  break;
7750
7811
  }
7751
- _context35.next = 44;
7812
+ _context35.next = 49;
7752
7813
  return this.enqueueScreenShareFloorRequest();
7753
- case 44:
7754
- _context35.next = 46;
7814
+ case 49:
7815
+ _context35.next = 51;
7755
7816
  return this.mediaProperties.getCurrentConnectionInfo();
7756
- case 46:
7817
+ case 51:
7757
7818
  _yield$this$mediaProp = _context35.sent;
7758
7819
  connectionType = _yield$this$mediaProp.connectionType;
7759
7820
  ipVersion = _yield$this$mediaProp.ipVersion;
7760
7821
  selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
7761
7822
  numTransports = _yield$this$mediaProp.numTransports;
7762
7823
  iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
7763
- _context35.next = 54;
7824
+ _context35.next = 59;
7764
7825
  return this.getMediaReachabilityMetricFields();
7765
- case 54:
7826
+ case 59:
7766
7827
  reachabilityMetrics = _context35.sent;
7767
7828
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
7768
7829
  correlation_id: this.correlationId,
@@ -7792,21 +7853,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7792
7853
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7793
7854
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7794
7855
  this.startPeriodicLogUpload();
7795
- _context35.next = 80;
7856
+ _context35.next = 85;
7796
7857
  break;
7797
- case 62:
7798
- _context35.prev = 62;
7799
- _context35.t1 = _context35["catch"](19);
7858
+ case 67:
7859
+ _context35.prev = 67;
7860
+ _context35.t1 = _context35["catch"](24);
7800
7861
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context35.t1);
7801
7862
 
7802
7863
  // @ts-ignore
7803
- _context35.next = 67;
7864
+ _context35.next = 72;
7804
7865
  return this.getMediaReachabilityMetricFields();
7805
- case 67:
7866
+ case 72:
7806
7867
  _reachabilityMetrics = _context35.sent;
7807
- _context35.next = 70;
7868
+ _context35.next = 75;
7808
7869
  return this.mediaProperties.getCurrentConnectionInfo();
7809
- case 70:
7870
+ case 75:
7810
7871
  _yield$this$mediaProp2 = _context35.sent;
7811
7872
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7812
7873
  _numTransports = _yield$this$mediaProp2.numTransports;
@@ -7830,9 +7891,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7830
7891
  }, _reachabilityMetrics), _iceCandidateErrors), {}, {
7831
7892
  iceCandidatesCount: this.iceCandidatesCount
7832
7893
  }));
7833
- _context35.next = 77;
7894
+ _context35.next = 82;
7834
7895
  return this.cleanUpOnAddMediaFailure();
7835
- case 77:
7896
+ case 82:
7836
7897
  // Upload logs on error while adding media
7837
7898
  _triggerProxy.default.trigger(this, {
7838
7899
  file: 'meeting/index',
@@ -7844,15 +7905,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7844
7905
  });
7845
7906
  }
7846
7907
  throw _context35.t1;
7847
- case 80:
7848
- _context35.prev = 80;
7908
+ case 85:
7909
+ _context35.prev = 85;
7849
7910
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7850
- return _context35.finish(80);
7851
- case 83:
7911
+ return _context35.finish(85);
7912
+ case 88:
7852
7913
  case "end":
7853
7914
  return _context35.stop();
7854
7915
  }
7855
- }, _callee35, this, [[19, 62, 80, 83], [24, 29]]);
7916
+ }, _callee35, this, [[24, 67, 85, 88], [29, 34]]);
7856
7917
  }));
7857
7918
  function addMediaInternal(_x33, _x34, _x35) {
7858
7919
  return _addMediaInternal.apply(this, arguments);
@@ -9401,7 +9462,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9401
9462
  key: "getMediaReachabilityMetricFields",
9402
9463
  value: (function () {
9403
9464
  var _getMediaReachabilityMetricFields = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee42() {
9404
- var reachabilityMetrics, successKeys, totalSuccessCases, isSubnetReachable, selectedCluster;
9465
+ var _this$mediaServerIp, _this$mediaConnection, _this$mediaConnection2, _this$mediaConnection3;
9466
+ var reachabilityMetrics, successKeys, totalSuccessCases, selectedSubnetFirstOctet, isSubnetReachable, selectedCluster;
9405
9467
  return _regenerator.default.wrap(function _callee42$(_context42) {
9406
9468
  while (1) switch (_context42.prev = _context42.next) {
9407
9469
  case 0:
@@ -9417,18 +9479,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9417
9479
  }
9418
9480
  return total;
9419
9481
  }, 0);
9482
+ selectedSubnetFirstOctet = (_this$mediaServerIp = this.mediaServerIp) === null || _this$mediaServerIp === void 0 ? void 0 : _this$mediaServerIp.split('.')[0];
9420
9483
  isSubnetReachable = null;
9421
- if (totalSuccessCases > 0) {
9484
+ if (totalSuccessCases > 0 && selectedSubnetFirstOctet) {
9485
+ isSubnetReachable =
9422
9486
  // @ts-ignore
9423
- isSubnetReachable = this.webex.meetings.reachability.isSubnetReachable(this.mediaServerIp);
9424
- }
9425
- selectedCluster = null;
9426
- if (this.mediaConnections && this.mediaConnections.length > 0) {
9427
- selectedCluster = this.mediaConnections[0].mediaAgentCluster;
9487
+ this.webex.meetings.reachability.isSubnetReachable(selectedSubnetFirstOctet);
9428
9488
  }
9489
+ selectedCluster = (_this$mediaConnection = (_this$mediaConnection2 = this.mediaConnections) === null || _this$mediaConnection2 === void 0 ? void 0 : (_this$mediaConnection3 = _this$mediaConnection2[0]) === null || _this$mediaConnection3 === void 0 ? void 0 : _this$mediaConnection3.mediaAgentCluster) !== null && _this$mediaConnection !== void 0 ? _this$mediaConnection : null;
9429
9490
  return _context42.abrupt("return", _objectSpread(_objectSpread({}, reachabilityMetrics), {}, {
9430
- isSubnetReachable: isSubnetReachable,
9431
- selectedCluster: selectedCluster
9491
+ subnet_reachable: isSubnetReachable,
9492
+ selected_cluster: selectedCluster,
9493
+ selected_subnet: selectedSubnetFirstOctet ? "".concat(selectedSubnetFirstOctet, ".X.X.X") : null
9432
9494
  }));
9433
9495
  case 10:
9434
9496
  case "end":
@@ -9440,7 +9502,84 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9440
9502
  return _getMediaReachabilityMetricFields.apply(this, arguments);
9441
9503
  }
9442
9504
  return getMediaReachabilityMetricFields;
9443
- }())
9505
+ }()
9506
+ /**
9507
+ * Set the stage for the meeting
9508
+ *
9509
+ * @param {SetStageOptions} options Options to use when setting the stage
9510
+ * @returns {Promise} The locus request
9511
+ */
9512
+ )
9513
+ }, {
9514
+ key: "setStage",
9515
+ value: function setStage() {
9516
+ var _ref37 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9517
+ _ref37$activeSpeakerP = _ref37.activeSpeakerProportion,
9518
+ activeSpeakerProportion = _ref37$activeSpeakerP === void 0 ? 0.5 : _ref37$activeSpeakerP,
9519
+ customBackground = _ref37.customBackground,
9520
+ customLogo = _ref37.customLogo,
9521
+ customNameLabel = _ref37.customNameLabel,
9522
+ importantParticipants = _ref37.importantParticipants,
9523
+ _ref37$lockAttendeeVi = _ref37.lockAttendeeViewOnStage,
9524
+ lockAttendeeViewOnStage = _ref37$lockAttendeeVi === void 0 ? false : _ref37$lockAttendeeVi,
9525
+ _ref37$showActiveSpea = _ref37.showActiveSpeaker,
9526
+ showActiveSpeaker = _ref37$showActiveSpea === void 0 ? false : _ref37$showActiveSpea;
9527
+ var videoLayout = {
9528
+ overrideDefault: true,
9529
+ lockAttendeeViewOnStageOnly: lockAttendeeViewOnStage,
9530
+ stageParameters: {
9531
+ activeSpeakerProportion: activeSpeakerProportion,
9532
+ showActiveSpeaker: {
9533
+ show: showActiveSpeaker,
9534
+ order: 0
9535
+ },
9536
+ stageManagerType: 0
9537
+ }
9538
+ };
9539
+ if (importantParticipants !== null && importantParticipants !== void 0 && importantParticipants.length) {
9540
+ videoLayout.stageParameters.importantParticipants = importantParticipants.map(function (importantParticipant, index) {
9541
+ return _objectSpread(_objectSpread({}, importantParticipant), {}, {
9542
+ order: index + 1
9543
+ });
9544
+ });
9545
+ }
9546
+ if (customLogo) {
9547
+ if (!videoLayout.customLayouts) {
9548
+ videoLayout.customLayouts = {};
9549
+ }
9550
+ videoLayout.customLayouts.logo = customLogo;
9551
+ // eslint-disable-next-line no-bitwise
9552
+ videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.LOGO;
9553
+ }
9554
+ if (customBackground) {
9555
+ if (!videoLayout.customLayouts) {
9556
+ videoLayout.customLayouts = {};
9557
+ }
9558
+ videoLayout.customLayouts.background = customBackground;
9559
+ // eslint-disable-next-line no-bitwise
9560
+ videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.BACKGROUND;
9561
+ }
9562
+ if (customNameLabel) {
9563
+ videoLayout.nameLabelStyle = customNameLabel;
9564
+ // eslint-disable-next-line no-bitwise
9565
+ videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.NAME_LABEL;
9566
+ }
9567
+ return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);
9568
+ }
9569
+
9570
+ /**
9571
+ * Unset the stage for the meeting
9572
+ *
9573
+ * @returns {Promise} The locus request
9574
+ */
9575
+ }, {
9576
+ key: "unsetStage",
9577
+ value: function unsetStage() {
9578
+ var videoLayout = {
9579
+ overrideDefault: false
9580
+ };
9581
+ return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);
9582
+ }
9444
9583
  }]);
9445
9584
  return Meeting;
9446
9585
  }(_webexCore.StatelessWebexPlugin);