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

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 (365) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +116 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/index.js +226 -0
  8. package/dist/breakouts/index.js.map +1 -0
  9. package/dist/common/browser-detection.js +1 -20
  10. package/dist/common/browser-detection.js.map +1 -1
  11. package/dist/common/collection.js +5 -20
  12. package/dist/common/collection.js.map +1 -1
  13. package/dist/common/config.js +0 -7
  14. package/dist/common/config.js.map +1 -1
  15. package/dist/common/errors/captcha-error.js +10 -24
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.js +11 -24
  18. package/dist/common/errors/intent-to-join.js.map +1 -1
  19. package/dist/common/errors/join-meeting.js +12 -25
  20. package/dist/common/errors/join-meeting.js.map +1 -1
  21. package/dist/common/errors/media.js +10 -24
  22. package/dist/common/errors/media.js.map +1 -1
  23. package/dist/common/errors/parameter.js +5 -33
  24. package/dist/common/errors/parameter.js.map +1 -1
  25. package/dist/common/errors/password-error.js +10 -24
  26. package/dist/common/errors/password-error.js.map +1 -1
  27. package/dist/common/errors/permission.js +9 -23
  28. package/dist/common/errors/permission.js.map +1 -1
  29. package/dist/common/errors/reconnection-in-progress.js +0 -17
  30. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  31. package/dist/common/errors/reconnection.js +10 -24
  32. package/dist/common/errors/reconnection.js.map +1 -1
  33. package/dist/common/errors/stats.js +10 -24
  34. package/dist/common/errors/stats.js.map +1 -1
  35. package/dist/common/errors/webex-errors.js +6 -41
  36. package/dist/common/errors/webex-errors.js.map +1 -1
  37. package/dist/common/errors/webex-meetings-error.js +5 -25
  38. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  39. package/dist/common/events/events-scope.js +0 -22
  40. package/dist/common/events/events-scope.js.map +1 -1
  41. package/dist/common/events/events.js +0 -23
  42. package/dist/common/events/events.js.map +1 -1
  43. package/dist/common/events/trigger-proxy.js +0 -12
  44. package/dist/common/events/trigger-proxy.js.map +1 -1
  45. package/dist/common/events/util.js +0 -15
  46. package/dist/common/events/util.js.map +1 -1
  47. package/dist/common/logs/logger-config.js +0 -4
  48. package/dist/common/logs/logger-config.js.map +1 -1
  49. package/dist/common/logs/logger-proxy.js +1 -8
  50. package/dist/common/logs/logger-proxy.js.map +1 -1
  51. package/dist/common/logs/request.js +37 -60
  52. package/dist/common/logs/request.js.map +1 -1
  53. package/dist/common/queue.js +4 -14
  54. package/dist/common/queue.js.map +1 -1
  55. package/dist/config.js +6 -6
  56. package/dist/config.js.map +1 -1
  57. package/dist/constants.js +88 -46
  58. package/dist/constants.js.map +1 -1
  59. package/dist/index.js +4 -18
  60. package/dist/index.js.map +1 -1
  61. package/dist/locus-info/controlsUtils.js +12 -29
  62. package/dist/locus-info/controlsUtils.js.map +1 -1
  63. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  64. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  65. package/dist/locus-info/fullState.js +0 -15
  66. package/dist/locus-info/fullState.js.map +1 -1
  67. package/dist/locus-info/hostUtils.js +4 -12
  68. package/dist/locus-info/hostUtils.js.map +1 -1
  69. package/dist/locus-info/index.js +184 -190
  70. package/dist/locus-info/index.js.map +1 -1
  71. package/dist/locus-info/infoUtils.js +3 -37
  72. package/dist/locus-info/infoUtils.js.map +1 -1
  73. package/dist/locus-info/mediaSharesUtils.js +12 -38
  74. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  75. package/dist/locus-info/parser.js +92 -118
  76. package/dist/locus-info/parser.js.map +1 -1
  77. package/dist/locus-info/selfUtils.js +34 -91
  78. package/dist/locus-info/selfUtils.js.map +1 -1
  79. package/dist/media/index.js +67 -111
  80. package/dist/media/index.js.map +1 -1
  81. package/dist/media/properties.js +80 -114
  82. package/dist/media/properties.js.map +1 -1
  83. package/dist/media/util.js +2 -9
  84. package/dist/media/util.js.map +1 -1
  85. package/dist/mediaQualityMetrics/config.js +10 -12
  86. package/dist/mediaQualityMetrics/config.js.map +1 -1
  87. package/dist/meeting/effectsState.js +125 -190
  88. package/dist/meeting/effectsState.js.map +1 -1
  89. package/dist/meeting/in-meeting-actions.js +5 -14
  90. package/dist/meeting/in-meeting-actions.js.map +1 -1
  91. package/dist/meeting/index.js +1692 -1925
  92. package/dist/meeting/index.js.map +1 -1
  93. package/dist/meeting/muteState.js +36 -77
  94. package/dist/meeting/muteState.js.map +1 -1
  95. package/dist/meeting/request.js +224 -230
  96. package/dist/meeting/request.js.map +1 -1
  97. package/dist/meeting/request.type.js +7 -0
  98. package/dist/meeting/request.type.js.map +1 -0
  99. package/dist/meeting/state.js +21 -31
  100. package/dist/meeting/state.js.map +1 -1
  101. package/dist/meeting/util.js +43 -215
  102. package/dist/meeting/util.js.map +1 -1
  103. package/dist/meeting-info/collection.js +6 -25
  104. package/dist/meeting-info/collection.js.map +1 -1
  105. package/dist/meeting-info/index.js +14 -32
  106. package/dist/meeting-info/index.js.map +1 -1
  107. package/dist/meeting-info/meeting-info-v2.js +193 -268
  108. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  109. package/dist/meeting-info/request.js +3 -15
  110. package/dist/meeting-info/request.js.map +1 -1
  111. package/dist/meeting-info/util.js +98 -183
  112. package/dist/meeting-info/util.js.map +1 -1
  113. package/dist/meeting-info/utilv2.js +137 -228
  114. package/dist/meeting-info/utilv2.js.map +1 -1
  115. package/dist/meetings/collection.js +5 -20
  116. package/dist/meetings/collection.js.map +1 -1
  117. package/dist/meetings/index.js +490 -560
  118. package/dist/meetings/index.js.map +1 -1
  119. package/dist/meetings/request.js +24 -41
  120. package/dist/meetings/request.js.map +1 -1
  121. package/dist/meetings/util.js +99 -155
  122. package/dist/meetings/util.js.map +1 -1
  123. package/dist/member/index.js +78 -86
  124. package/dist/member/index.js.map +1 -1
  125. package/dist/member/util.js +31 -68
  126. package/dist/member/util.js.map +1 -1
  127. package/dist/members/collection.js +3 -12
  128. package/dist/members/collection.js.map +1 -1
  129. package/dist/members/index.js +93 -200
  130. package/dist/members/index.js.map +1 -1
  131. package/dist/members/request.js +16 -39
  132. package/dist/members/request.js.map +1 -1
  133. package/dist/members/util.js +9 -38
  134. package/dist/members/util.js.map +1 -1
  135. package/dist/metrics/config.js +0 -2
  136. package/dist/metrics/config.js.map +1 -1
  137. package/dist/metrics/constants.js +1 -2
  138. package/dist/metrics/constants.js.map +1 -1
  139. package/dist/metrics/index.js +55 -135
  140. package/dist/metrics/index.js.map +1 -1
  141. package/dist/multistream/mediaRequestManager.js +57 -32
  142. package/dist/multistream/mediaRequestManager.js.map +1 -1
  143. package/dist/multistream/multistreamMedia.js +15 -21
  144. package/dist/multistream/multistreamMedia.js.map +1 -1
  145. package/dist/multistream/receiveSlot.js +10 -50
  146. package/dist/multistream/receiveSlot.js.map +1 -1
  147. package/dist/multistream/receiveSlotManager.js +45 -82
  148. package/dist/multistream/receiveSlotManager.js.map +1 -1
  149. package/dist/multistream/remoteMedia.js +18 -58
  150. package/dist/multistream/remoteMedia.js.map +1 -1
  151. package/dist/multistream/remoteMediaGroup.js +6 -40
  152. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  153. package/dist/multistream/remoteMediaManager.js +362 -416
  154. package/dist/multistream/remoteMediaManager.js.map +1 -1
  155. package/dist/networkQualityMonitor/index.js +36 -57
  156. package/dist/networkQualityMonitor/index.js.map +1 -1
  157. package/dist/personal-meeting-room/index.js +21 -45
  158. package/dist/personal-meeting-room/index.js.map +1 -1
  159. package/dist/personal-meeting-room/request.js +1 -31
  160. package/dist/personal-meeting-room/request.js.map +1 -1
  161. package/dist/personal-meeting-room/util.js +0 -13
  162. package/dist/personal-meeting-room/util.js.map +1 -1
  163. package/dist/reachability/index.js +138 -182
  164. package/dist/reachability/index.js.map +1 -1
  165. package/dist/reachability/request.js +3 -18
  166. package/dist/reachability/request.js.map +1 -1
  167. package/dist/reactions/constants.js +13 -0
  168. package/dist/reactions/constants.js.map +1 -0
  169. package/dist/reactions/reactions.js +109 -0
  170. package/dist/reactions/reactions.js.map +1 -0
  171. package/dist/reactions/reactions.type.js +36 -0
  172. package/dist/reactions/reactions.type.js.map +1 -0
  173. package/dist/reconnection-manager/index.js +322 -455
  174. package/dist/reconnection-manager/index.js.map +1 -1
  175. package/dist/recording-controller/enums.js +17 -0
  176. package/dist/recording-controller/enums.js.map +1 -0
  177. package/dist/recording-controller/index.js +343 -0
  178. package/dist/recording-controller/index.js.map +1 -0
  179. package/dist/recording-controller/util.js +63 -0
  180. package/dist/recording-controller/util.js.map +1 -0
  181. package/dist/roap/index.js +39 -64
  182. package/dist/roap/index.js.map +1 -1
  183. package/dist/roap/request.js +94 -113
  184. package/dist/roap/request.js.map +1 -1
  185. package/dist/roap/turnDiscovery.js +85 -94
  186. package/dist/roap/turnDiscovery.js.map +1 -1
  187. package/dist/statsAnalyzer/global.js +0 -2
  188. package/dist/statsAnalyzer/global.js.map +1 -1
  189. package/dist/statsAnalyzer/index.js +85 -175
  190. package/dist/statsAnalyzer/index.js.map +1 -1
  191. package/dist/statsAnalyzer/mqaUtil.js +72 -53
  192. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  193. package/dist/transcription/index.js +22 -47
  194. package/dist/transcription/index.js.map +1 -1
  195. package/internal-README.md +7 -6
  196. package/package.json +25 -20
  197. package/src/breakouts/README.md +190 -0
  198. package/src/breakouts/breakout.ts +110 -0
  199. package/src/breakouts/collection.ts +19 -0
  200. package/src/breakouts/index.ts +225 -0
  201. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  202. package/src/common/collection.ts +9 -7
  203. package/src/common/{config.js → config.ts} +1 -1
  204. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  205. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  206. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  207. package/src/common/errors/{media.js → media.ts} +11 -7
  208. package/src/common/errors/parameter.ts +11 -7
  209. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  210. package/src/common/errors/{permission.js → permission.ts} +10 -6
  211. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  212. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  213. package/src/common/errors/{stats.js → stats.ts} +11 -7
  214. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  215. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  216. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  217. package/src/common/events/{events.js → events.ts} +5 -1
  218. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  219. package/src/common/events/{util.js → util.ts} +2 -3
  220. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  221. package/src/common/logs/logger-proxy.ts +44 -0
  222. package/src/common/logs/{request.js → request.ts} +22 -9
  223. package/src/common/queue.ts +1 -2
  224. package/src/{config.js → config.ts} +17 -12
  225. package/src/constants.ts +40 -1
  226. package/src/index.js +2 -1
  227. package/src/locus-info/controlsUtils.ts +114 -0
  228. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  229. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  230. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  231. package/src/locus-info/{index.js → index.ts} +148 -64
  232. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  233. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  234. package/src/locus-info/{parser.js → parser.ts} +67 -79
  235. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  236. package/src/media/{index.js → index.ts} +181 -131
  237. package/src/media/{properties.js → properties.ts} +47 -28
  238. package/src/media/{util.js → util.ts} +2 -2
  239. package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
  240. package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
  241. package/src/meeting/in-meeting-actions.ts +15 -3
  242. package/src/meeting/{index.js → index.ts} +2263 -1427
  243. package/src/meeting/{muteState.js → muteState.ts} +78 -42
  244. package/src/meeting/{request.js → request.ts} +292 -142
  245. package/src/meeting/request.type.ts +13 -0
  246. package/src/meeting/{state.js → state.ts} +50 -35
  247. package/src/meeting/{util.js → util.ts} +112 -115
  248. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  249. package/src/meeting-info/{index.js → index.ts} +42 -36
  250. package/src/meeting-info/meeting-info-v2.ts +273 -0
  251. package/src/meeting-info/{request.js → request.ts} +14 -4
  252. package/src/meeting-info/{util.js → util.ts} +60 -51
  253. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  254. package/src/meetings/{collection.js → collection.ts} +6 -3
  255. package/src/meetings/index.ts +1159 -0
  256. package/src/meetings/{request.js → request.ts} +32 -25
  257. package/src/meetings/{util.js → util.ts} +34 -32
  258. package/src/member/{index.js → index.ts} +102 -56
  259. package/src/member/{util.js → util.ts} +52 -25
  260. package/src/members/{collection.js → collection.ts} +2 -2
  261. package/src/members/{index.js → index.ts} +219 -142
  262. package/src/members/{request.js → request.ts} +60 -16
  263. package/src/members/{util.js → util.ts} +50 -48
  264. package/src/metrics/{config.js → config.ts} +254 -83
  265. package/src/metrics/{constants.js → constants.ts} +0 -2
  266. package/src/metrics/{index.js → index.ts} +106 -74
  267. package/src/multistream/mediaRequestManager.ts +81 -15
  268. package/src/multistream/multistreamMedia.ts +5 -0
  269. package/src/multistream/receiveSlot.ts +18 -12
  270. package/src/multistream/receiveSlotManager.ts +23 -21
  271. package/src/multistream/remoteMedia.ts +15 -5
  272. package/src/multistream/remoteMediaGroup.ts +4 -3
  273. package/src/multistream/remoteMediaManager.ts +153 -37
  274. package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
  275. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  276. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  277. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  278. package/src/reachability/{index.js → index.ts} +99 -83
  279. package/src/reachability/request.ts +39 -33
  280. package/src/reactions/constants.ts +4 -0
  281. package/src/reactions/reactions.ts +104 -0
  282. package/src/reactions/reactions.type.ts +62 -0
  283. package/src/reconnection-manager/{index.js → index.ts} +195 -102
  284. package/src/recording-controller/enums.ts +8 -0
  285. package/src/recording-controller/index.ts +315 -0
  286. package/src/recording-controller/util.ts +58 -0
  287. package/src/roap/{index.js → index.ts} +73 -56
  288. package/src/roap/request.ts +157 -0
  289. package/src/roap/turnDiscovery.ts +77 -37
  290. package/src/statsAnalyzer/{global.js → global.ts} +30 -33
  291. package/src/statsAnalyzer/{index.js → index.ts} +468 -192
  292. package/src/statsAnalyzer/mqaUtil.ts +290 -0
  293. package/src/transcription/{index.js → index.ts} +46 -39
  294. package/test/integration/spec/journey.js +664 -463
  295. package/test/integration/spec/space-meeting.js +320 -206
  296. package/test/integration/spec/transcription.js +7 -8
  297. package/test/unit/spec/breakouts/breakout.ts +119 -0
  298. package/test/unit/spec/breakouts/collection.ts +15 -0
  299. package/test/unit/spec/breakouts/index.ts +293 -0
  300. package/test/unit/spec/common/browser-detection.js +9 -28
  301. package/test/unit/spec/fixture/locus.js +92 -90
  302. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  303. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  304. package/test/unit/spec/locus-info/index.js +104 -2
  305. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  306. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  307. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  308. package/test/unit/spec/locus-info/parser.js +3 -9
  309. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  310. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  311. package/test/unit/spec/media/index.ts +31 -47
  312. package/test/unit/spec/media/properties.ts +9 -9
  313. package/test/unit/spec/meeting/effectsState.js +39 -45
  314. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
  315. package/test/unit/spec/meeting/index.js +2017 -742
  316. package/test/unit/spec/meeting/muteState.js +42 -33
  317. package/test/unit/spec/meeting/request.js +115 -44
  318. package/test/unit/spec/meeting/utils.js +104 -171
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  320. package/test/unit/spec/meeting-info/request.js +7 -9
  321. package/test/unit/spec/meeting-info/util.js +11 -12
  322. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  323. package/test/unit/spec/meetings/collection.js +1 -1
  324. package/test/unit/spec/meetings/index.js +439 -257
  325. package/test/unit/spec/meetings/utils.js +14 -12
  326. package/test/unit/spec/member/index.js +0 -1
  327. package/test/unit/spec/member/util.js +31 -7
  328. package/test/unit/spec/members/index.js +104 -54
  329. package/test/unit/spec/members/request.js +29 -20
  330. package/test/unit/spec/members/utils.js +8 -5
  331. package/test/unit/spec/metrics/index.js +16 -21
  332. package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
  333. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  334. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  335. package/test/unit/spec/multistream/remoteMedia.ts +10 -2
  336. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  337. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  338. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  339. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  340. package/test/unit/spec/reachability/index.ts +58 -26
  341. package/test/unit/spec/reconnection-manager/index.js +102 -9
  342. package/test/unit/spec/recording-controller/index.js +231 -0
  343. package/test/unit/spec/recording-controller/util.js +102 -0
  344. package/test/unit/spec/roap/index.ts +2 -1
  345. package/test/unit/spec/roap/request.ts +114 -0
  346. package/test/unit/spec/roap/turnDiscovery.ts +64 -45
  347. package/test/unit/spec/stats-analyzer/index.js +27 -22
  348. package/test/utils/cmr.js +44 -42
  349. package/test/utils/testUtils.js +83 -74
  350. package/test/utils/webex-config.js +18 -18
  351. package/test/utils/webex-test-users.js +54 -50
  352. package/tsconfig.json +6 -0
  353. package/dist/media/internal-media-core-wrapper.js +0 -22
  354. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  355. package/dist/peer-connection-manager/util.js +0 -124
  356. package/dist/peer-connection-manager/util.js.map +0 -1
  357. package/src/common/logs/logger-proxy.js +0 -33
  358. package/src/locus-info/controlsUtils.js +0 -102
  359. package/src/media/internal-media-core-wrapper.ts +0 -9
  360. package/src/meeting-info/meeting-info-v2.js +0 -255
  361. package/src/meetings/index.js +0 -1015
  362. package/src/peer-connection-manager/util.ts +0 -117
  363. package/src/roap/request.js +0 -127
  364. package/src/statsAnalyzer/mqaUtil.js +0 -173
  365. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
package/UPGRADING.md CHANGED
@@ -25,7 +25,7 @@ When using the phone plugin, this was handled automatically for you via `webex.p
25
25
  With the meetings plugin, we provide the same method:
26
26
 
27
27
  ```js
28
- webex.meetings.register()
28
+ webex.meetings.register();
29
29
  ```
30
30
 
31
31
  ## Dialing
@@ -56,7 +56,7 @@ await myMeeting.join();
56
56
  ### Joining a one-on-one meeting
57
57
 
58
58
  ```js
59
- let destination = "testuser@webex.bot";
59
+ let destination = 'testuser@webex.bot';
60
60
 
61
61
  const myMeeting = await webex.meetings.create(destination);
62
62
 
@@ -92,7 +92,7 @@ const mediaSettings = {
92
92
  receiveShare: true,
93
93
  sendVideo: true,
94
94
  sendAudio: true,
95
- sendShare: false
95
+ sendShare: false,
96
96
  };
97
97
 
98
98
  const mediaStreams = await meeting.getMediaStreams(mediaSettings);
@@ -117,7 +117,7 @@ Once you have your local streams and shares, you need to add the media to the me
117
117
  const mediaResponse = await meeting.addMedia({
118
118
  localShare,
119
119
  localStream,
120
- mediaSettings
120
+ mediaSettings,
121
121
  });
122
122
  ```
123
123
 
@@ -130,20 +130,20 @@ Just like the phone plugin, the meeting object will emit events that the develop
130
130
  ```js
131
131
  myMeeting.on('media:ready', (media) => {
132
132
  // Handle media streams
133
- })
133
+ });
134
134
  ```
135
135
 
136
136
  This event is emitted when a media stream is ready to be rendered. It contains an object with two properties:
137
137
 
138
- * `stream` the actual media stream that can be used in an html srcObject
139
- * `type` the type of stream that is ready (`local`, `remoteVideo`, etc)
138
+ - `stream` the actual media stream that can be used in an html srcObject
139
+ - `type` the type of stream that is ready (`local`, `remoteVideo`, etc)
140
140
 
141
141
  ### `media:stopped`
142
142
 
143
143
  ```js
144
144
  myMeeting.on('media:stopped', (media) => {
145
145
  // Remove media streams
146
- })
146
+ });
147
147
  ```
148
148
 
149
149
  This event is emitted when a stream has stopped sending. It has a `type` property to know which media to remove from the DOM.
@@ -197,7 +197,7 @@ With a meeting object, you use these functions:
197
197
  const mediaStreams = await meeting.getMediaStreams(mediaSettings);
198
198
  const [localStream, localShare] = mediaStreams;
199
199
  // Then, update share
200
- meeting.updateShare({sendShare: true, receiveShare:true, stream: localShare})
200
+ meeting.updateShare({sendShare: true, receiveShare: true, stream: localShare});
201
201
  ```
202
202
 
203
203
  ### Stop Sending Share
package/browsers.js CHANGED
@@ -4,7 +4,6 @@
4
4
 
5
5
  // eslint-disable-next-line strict
6
6
 
7
-
8
7
  /* eslint camelcase: [0] */
9
8
  module.exports = function createBrowsers() {
10
9
  if (process.env.SC_TUNNEL_IDENTIFIER || process.env.SAUCE) {
@@ -19,14 +18,14 @@ module.exports = function createBrowsers() {
19
18
  args: [
20
19
  '--disable-features=WebRtcHideLocalIpsWithMdns',
21
20
  '--use-fake-device-for-media-stream',
22
- '--use-fake-ui-for-media-stream'
23
- ]
21
+ '--use-fake-ui-for-media-stream',
22
+ ],
24
23
  },
25
24
  flags: [
26
25
  '--disable-features=WebRtcHideLocalIpsWithMdns',
27
26
  '--use-fake-device-for-media-stream',
28
- '--use-fake-ui-for-media-stream'
29
- ]
27
+ '--use-fake-ui-for-media-stream',
28
+ ],
30
29
  },
31
30
  sl_edge_latest_Win_10: {
32
31
  base: 'SauceLabs',
@@ -38,9 +37,9 @@ module.exports = function createBrowsers() {
38
37
  args: [
39
38
  '--disable-features=WebRtcHideLocalIpsWithMdns',
40
39
  '--use-fake-device-for-media-stream',
41
- '--use-fake-ui-for-media-stream'
42
- ]
43
- }
40
+ '--use-fake-ui-for-media-stream',
41
+ ],
42
+ },
44
43
  },
45
44
  // sl_firefox_latest_linux: {
46
45
  // base: 'SauceLabs',
@@ -54,8 +53,8 @@ module.exports = function createBrowsers() {
54
53
  browserName: 'Safari',
55
54
  version: 'latest',
56
55
  'webkit:WebRTC': {
57
- DisableInsecureMediaCapture: true
58
- }
56
+ DisableInsecureMediaCapture: true,
57
+ },
59
58
  },
60
59
  sl_firefox_macOS_Catalina: {
61
60
  base: 'SauceLabs',
@@ -63,10 +62,7 @@ module.exports = function createBrowsers() {
63
62
  browserName: 'Firefox',
64
63
  extendedDebugging: true,
65
64
  'moz:firefoxOptions': {
66
- args: [
67
- '-start-debugger-server',
68
- '9222'
69
- ],
65
+ args: ['-start-debugger-server', '9222'],
70
66
  prefs: {
71
67
  'devtools.chrome.enabled': true,
72
68
  'devtools.debugger.prompt-connection': false,
@@ -76,10 +72,10 @@ module.exports = function createBrowsers() {
76
72
  'media.getusermedia.screensharing.enabled': true,
77
73
  'media.navigator.permission.disabled': true,
78
74
  'media.navigator.streams.fake': true,
79
- 'media.peerconnection.video.h264_enabled': true
80
- }
81
- }
82
- }
75
+ 'media.peerconnection.video.h264_enabled': true,
76
+ },
77
+ },
78
+ },
83
79
  // sl_firefox_latest_win7: {
84
80
  // base: `SauceLabs`,
85
81
  // platform: `Windows 7`,
@@ -97,17 +93,16 @@ module.exports = function createBrowsers() {
97
93
  'media.getusermedia.screensharing.enabled': true,
98
94
  'media.navigator.permission.disabled': true,
99
95
  'media.navigator.streams.fake': true,
100
- 'media.peerconnection.video.h264_enabled': true
101
- }
96
+ 'media.peerconnection.video.h264_enabled': true,
97
+ },
102
98
  },
103
99
  ChromeH264: {
104
100
  base: 'ChromeHeadless',
105
101
  flags: [
106
102
  '--disable-features=WebRtcHideLocalIpsWithMdns',
107
103
  '--use-fake-device-for-media-stream',
108
- '--use-fake-ui-for-media-stream'
109
- ]
110
- }
104
+ '--use-fake-ui-for-media-stream',
105
+ ],
106
+ },
111
107
  };
112
108
  };
113
-
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _webexCore = require("@webex/webex-core");
10
+ var _constants = require("../constants");
11
+ var _members = _interopRequireDefault(require("../members"));
12
+ /*!
13
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
14
+ */
15
+
16
+ /**
17
+ * @class
18
+ */
19
+ var Breakout = _webexCore.WebexPlugin.extend({
20
+ idAttribute: 'sessionId',
21
+ namespace: _constants.MEETINGS,
22
+ props: {
23
+ active: ['boolean', false, false],
24
+ // this session is active
25
+ allowed: ['boolean', false, false],
26
+ // allowed to join this session
27
+ assigned: ['boolean', false, false],
28
+ // assigned to this session, but not necessarily joined yet
29
+ assignedCurrent: ['boolean', false, false],
30
+ // assigned AND current session
31
+ requested: ['boolean', false, false],
32
+ // requested by the host to join this session
33
+ current: ['boolean', false, false],
34
+ // the current joined session
35
+ name: 'string',
36
+ sessionId: 'string',
37
+ sessionType: 'string',
38
+ groupId: 'string',
39
+ url: 'string' // where to send requests to
40
+ },
41
+
42
+ derived: {
43
+ isMain: {
44
+ deps: ['sessionType'],
45
+ /**
46
+ * If the breakout has no name, assume it is the main session
47
+ * @returns {boolean}
48
+ */
49
+ fn: function fn() {
50
+ return this.sessionType === 'MAIN';
51
+ }
52
+ }
53
+ },
54
+ initialize: function initialize() {
55
+ this.members = new _members.default({}, {
56
+ parent: this.webex
57
+ });
58
+ },
59
+ /**
60
+ * Joins the breakout session
61
+ * @returns {Promise}
62
+ */
63
+ join: function join() {
64
+ return this.request({
65
+ method: _constants.HTTP_VERBS.POST,
66
+ uri: "".concat(this.url, "/move"),
67
+ body: {
68
+ groupId: this.groupId,
69
+ sessionId: this.sessionId
70
+ }
71
+ });
72
+ },
73
+ /**
74
+ * Leaves the breakout session to return to the main session
75
+ * @returns {Promise}
76
+ * @throws {Error} if an attempt is made to leave the main session or if the main session cannot be found
77
+ */
78
+ leave: function leave() {
79
+ if (this.isMain) {
80
+ throw new Error('Cannot leave the main session');
81
+ }
82
+ var mainSession = this.parent.breakouts.filter(function (breakout) {
83
+ return breakout.isMain;
84
+ })[0];
85
+ if (!mainSession) {
86
+ throw new Error('Cannot leave, no main session found');
87
+ }
88
+ return mainSession.join();
89
+ },
90
+ /**
91
+ * Sends a help request for the current breakout
92
+ * @returns {Promise}
93
+ */
94
+ askForHelp: function askForHelp() {
95
+ return this.request({
96
+ method: _constants.HTTP_VERBS.POST,
97
+ uri: "".concat(this.url, "/help"),
98
+ body: {
99
+ groupId: this.groupId,
100
+ sessionId: this.sessionId
101
+ }
102
+ });
103
+ },
104
+ /**
105
+ * Parses the participants from the locus object
106
+ * @param locus Locus object
107
+ * @returns {void}
108
+ */
109
+ parseRoster: function parseRoster(locus) {
110
+ this.members.locusParticipantsUpdate(locus);
111
+ },
112
+ version: "3.0.0-beta.21"
113
+ });
114
+ var _default = Breakout;
115
+ exports.default = _default;
116
+ //# sourceMappingURL=breakout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Breakout","WebexPlugin","extend","idAttribute","namespace","MEETINGS","props","active","allowed","assigned","assignedCurrent","requested","current","name","sessionId","sessionType","groupId","url","derived","isMain","deps","fn","initialize","members","Members","parent","webex","join","request","method","HTTP_VERBS","POST","uri","body","leave","Error","mainSession","breakouts","filter","breakout","askForHelp","parseRoster","locus","locusParticipantsUpdate"],"sources":["breakout.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport {HTTP_VERBS, MEETINGS} from '../constants';\nimport LocusInfo from '../locus-info';\nimport Members from '../members';\n\n/**\n * @class\n */\nconst Breakout = WebexPlugin.extend({\n idAttribute: 'sessionId',\n\n namespace: MEETINGS,\n\n props: {\n active: ['boolean', false, false], // this session is active\n allowed: ['boolean', false, false], // allowed to join this session\n assigned: ['boolean', false, false], // assigned to this session, but not necessarily joined yet\n assignedCurrent: ['boolean', false, false], // assigned AND current session\n requested: ['boolean', false, false], // requested by the host to join this session\n current: ['boolean', false, false], // the current joined session\n name: 'string',\n sessionId: 'string',\n sessionType: 'string',\n groupId: 'string',\n url: 'string', // where to send requests to\n },\n\n derived: {\n isMain: {\n deps: ['sessionType'],\n /**\n * If the breakout has no name, assume it is the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === 'MAIN';\n },\n },\n },\n\n initialize() {\n this.members = new Members({}, {parent: this.webex});\n },\n\n /**\n * Joins the breakout session\n * @returns {Promise}\n */\n join() {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/move`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n },\n\n /**\n * Leaves the breakout session to return to the main session\n * @returns {Promise}\n * @throws {Error} if an attempt is made to leave the main session or if the main session cannot be found\n */\n leave() {\n if (this.isMain) {\n throw new Error('Cannot leave the main session');\n }\n\n const mainSession = this.parent.breakouts.filter((breakout) => breakout.isMain)[0];\n\n if (!mainSession) {\n throw new Error('Cannot leave, no main session found');\n }\n\n return mainSession.join();\n },\n\n /**\n * Sends a help request for the current breakout\n * @returns {Promise}\n */\n askForHelp() {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/help`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n },\n\n /**\n * Parses the participants from the locus object\n * @param locus Locus object\n * @returns {void}\n */\n\n parseRoster(locus) {\n this.members.locusParticipantsUpdate(locus);\n },\n});\n\nexport default Breakout;\n"],"mappings":";;;;;;;;AAIA;AAEA;AAEA;AARA;AACA;AACA;;AAQA;AACA;AACA;AACA,IAAMA,QAAQ,GAAGC,sBAAW,CAACC,MAAM,CAAC;EAClCC,WAAW,EAAE,WAAW;EAExBC,SAAS,EAAEC,mBAAQ;EAEnBC,KAAK,EAAE;IACLC,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;IAAE;IACnCC,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;IAAE;IACpCC,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;IAAE;IACrCC,eAAe,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;IAAE;IAC5CC,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;IAAE;IACtCC,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;IAAE;IACpCC,IAAI,EAAE,QAAQ;IACdC,SAAS,EAAE,QAAQ;IACnBC,WAAW,EAAE,QAAQ;IACrBC,OAAO,EAAE,QAAQ;IACjBC,GAAG,EAAE,QAAQ,CAAE;EACjB,CAAC;;EAEDC,OAAO,EAAE;IACPC,MAAM,EAAE;MACNC,IAAI,EAAE,CAAC,aAAa,CAAC;MACrB;AACN;AACA;AACA;MACMC,EAAE,gBAAG;QACH,OAAO,IAAI,CAACN,WAAW,KAAK,MAAM;MACpC;IACF;EACF,CAAC;EAEDO,UAAU,wBAAG;IACX,IAAI,CAACC,OAAO,GAAG,IAAIC,gBAAO,CAAC,CAAC,CAAC,EAAE;MAACC,MAAM,EAAE,IAAI,CAACC;IAAK,CAAC,CAAC;EACtD,CAAC;EAED;AACF;AACA;AACA;EACEC,IAAI,kBAAG;IACL,OAAO,IAAI,CAACC,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACC,IAAI;MACvBC,GAAG,YAAK,IAAI,CAACf,GAAG,UAAO;MACvBgB,IAAI,EAAE;QACJjB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBF,SAAS,EAAE,IAAI,CAACA;MAClB;IACF,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EACEoB,KAAK,mBAAG;IACN,IAAI,IAAI,CAACf,MAAM,EAAE;MACf,MAAM,IAAIgB,KAAK,CAAC,+BAA+B,CAAC;IAClD;IAEA,IAAMC,WAAW,GAAG,IAAI,CAACX,MAAM,CAACY,SAAS,CAACC,MAAM,CAAC,UAACC,QAAQ;MAAA,OAAKA,QAAQ,CAACpB,MAAM;IAAA,EAAC,CAAC,CAAC,CAAC;IAElF,IAAI,CAACiB,WAAW,EAAE;MAChB,MAAM,IAAID,KAAK,CAAC,qCAAqC,CAAC;IACxD;IAEA,OAAOC,WAAW,CAACT,IAAI,EAAE;EAC3B,CAAC;EAED;AACF;AACA;AACA;EACEa,UAAU,wBAAG;IACX,OAAO,IAAI,CAACZ,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACC,IAAI;MACvBC,GAAG,YAAK,IAAI,CAACf,GAAG,UAAO;MACvBgB,IAAI,EAAE;QACJjB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBF,SAAS,EAAE,IAAI,CAACA;MAClB;IACF,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EAEE2B,WAAW,uBAACC,KAAK,EAAE;IACjB,IAAI,CAACnB,OAAO,CAACoB,uBAAuB,CAACD,KAAK,CAAC;EAC7C,CAAC;EAAA;AACH,CAAC,CAAC;AAAC,eAEY1C,QAAQ;AAAA"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _ampersandCollection = _interopRequireDefault(require("ampersand-collection"));
10
+ var _constants = require("../constants");
11
+ var _breakout = _interopRequireDefault(require("./breakout"));
12
+ /*!
13
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
14
+ */
15
+
16
+ var BreakoutCollection = _ampersandCollection.default.extend({
17
+ model: _breakout.default,
18
+ namespace: _constants.MEETINGS,
19
+ mainIndex: 'sessionId'
20
+ });
21
+ var _default = BreakoutCollection;
22
+ exports.default = _default;
23
+ //# sourceMappingURL=collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BreakoutCollection","AmpCollection","extend","model","Breakout","namespace","MEETINGS","mainIndex"],"sources":["collection.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport AmpCollection from 'ampersand-collection';\n\nimport {MEETINGS} from '../constants';\n\nimport Breakout from './breakout';\n\nconst BreakoutCollection = AmpCollection.extend({\n model: Breakout,\n\n namespace: MEETINGS,\n\n mainIndex: 'sessionId',\n});\n\nexport default BreakoutCollection;\n"],"mappings":";;;;;;;;AAIA;AAEA;AAEA;AARA;AACA;AACA;;AAQA,IAAMA,kBAAkB,GAAGC,4BAAa,CAACC,MAAM,CAAC;EAC9CC,KAAK,EAAEC,iBAAQ;EAEfC,SAAS,EAAEC,mBAAQ;EAEnBC,SAAS,EAAE;AACb,CAAC,CAAC;AAAC,eAEYP,kBAAkB;AAAA"}
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
11
+ var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
12
+ var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
13
+ var _webexCore = require("@webex/webex-core");
14
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
15
+ var _constants = require("../constants");
16
+ var _breakout = _interopRequireDefault(require("./breakout"));
17
+ var _collection = _interopRequireDefault(require("./collection"));
18
+ /*!
19
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
20
+ */
21
+
22
+ /**
23
+ * @class Breakouts
24
+ */
25
+ var Breakouts = _webexCore.WebexPlugin.extend({
26
+ namespace: _constants.MEETINGS,
27
+ collections: {
28
+ breakouts: _collection.default
29
+ },
30
+ props: {
31
+ allowBackToMain: 'boolean',
32
+ // only present when in a breakout session
33
+ delayCloseTime: 'number',
34
+ // appears once breakouts start
35
+ enableBreakoutSession: 'boolean',
36
+ // appears from the moment you enable breakouts
37
+ groupId: 'string',
38
+ // appears from the moment you enable breakouts
39
+ name: 'string',
40
+ // only present when in a breakout session
41
+ sessionId: 'string',
42
+ // appears from the moment you enable breakouts
43
+ sessionType: 'string',
44
+ // appears from the moment you enable breakouts
45
+ startTime: 'string',
46
+ // appears once breakouts start
47
+ status: 'string',
48
+ // only present when in a breakout session
49
+ url: 'string',
50
+ // appears from the moment you enable breakouts
51
+ locusUrl: 'string' // the current locus url
52
+ },
53
+
54
+ children: {
55
+ currentBreakoutSession: _breakout.default
56
+ },
57
+ derived: {
58
+ isInMainSession: {
59
+ deps: ['sessionType'],
60
+ /**
61
+ * Returns true if the user is in the main session
62
+ * @returns {boolean}
63
+ */
64
+ fn: function fn() {
65
+ return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
66
+ }
67
+ }
68
+ },
69
+ /**
70
+ * initialize for the breakouts
71
+ * @returns {void}
72
+ */
73
+ initialize: function initialize() {
74
+ var _this = this;
75
+ this.listenTo(this, 'change:status', function () {
76
+ if (_this.status === _constants.BREAKOUTS.STATUS.CLOSING) {
77
+ _this.trigger(_constants.BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);
78
+ }
79
+ });
80
+ this.debouncedQueryRosters = (0, _debounce2.default)(this.queryRosters, 10, {
81
+ leading: true,
82
+ trailing: false
83
+ });
84
+ this.listenTo(this.breakouts, 'add', function () {
85
+ _this.debouncedQueryRosters();
86
+ });
87
+ this.listenToBroadcastMessages();
88
+ this.listenToBreakoutRosters();
89
+ },
90
+ /**
91
+ * Calls this to clean up listeners
92
+ * @returns {void}
93
+ */
94
+ cleanUp: function cleanUp() {
95
+ this.stopListening();
96
+ },
97
+ /**
98
+ * Update the current locus url of the meeting
99
+ * @param {string} locusUrl // locus url
100
+ * @returns {void}
101
+ */
102
+ locusUrlUpdate: function locusUrlUpdate(locusUrl) {
103
+ this.set('locusUrl', locusUrl);
104
+ },
105
+ /**
106
+ * The initial roster lists need to be queried because you don't
107
+ * get a breakout.roster event when you join the meeting
108
+ * @returns {void}
109
+ */
110
+ queryRosters: function queryRosters() {
111
+ var _this2 = this;
112
+ this.webex.request({
113
+ uri: "".concat(this.url, "/roster"),
114
+ qs: {
115
+ locusUrl: btoa(this.locusUrl)
116
+ }
117
+ }).then(function (result) {
118
+ var rosters = result.body.rosters;
119
+ rosters.forEach(function (_ref) {
120
+ var locus = _ref.locus;
121
+ _this2.handleRosterUpdate(locus);
122
+ });
123
+ _this2.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
124
+ }).catch(function (error) {
125
+ _loggerProxy.default.logger.error('Meeting:breakouts#queryRosters failed', error);
126
+ });
127
+ },
128
+ /**
129
+ *
130
+ * @param {Object} locus // locus object
131
+ * @returns {void}
132
+ */
133
+ handleRosterUpdate: function handleRosterUpdate(locus) {
134
+ var _locus$controls, _locus$controls$break;
135
+ var sessionId = (_locus$controls = locus.controls) === null || _locus$controls === void 0 ? void 0 : (_locus$controls$break = _locus$controls.breakout) === null || _locus$controls$break === void 0 ? void 0 : _locus$controls$break.sessionId;
136
+ var session = this.breakouts.get(sessionId);
137
+ if (!session) {
138
+ return;
139
+ }
140
+ session.parseRoster(locus);
141
+ },
142
+ /**
143
+ * Sets up listener for broadcast messages sent to the breakout session
144
+ * @returns {void}
145
+ */
146
+ listenToBroadcastMessages: function listenToBroadcastMessages() {
147
+ var _this3 = this;
148
+ this.listenTo(this.webex.internal.llm, 'event:breakout.message', function (event) {
149
+ var _event$data = event.data,
150
+ senderUserId = _event$data.senderUserId,
151
+ sentTime = _event$data.sentTime,
152
+ message = _event$data.message;
153
+ _this3.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
154
+ senderUserId: senderUserId,
155
+ sentTime: sentTime,
156
+ message: message,
157
+ // FIXME: This is only the current sessionId
158
+ // We'd need to check that the dataChannelUrl is still the same
159
+ // to guarantee that this message was sent to this session
160
+ sessionId: _this3.currentBreakoutSession.sessionId
161
+ });
162
+ });
163
+ },
164
+ /**
165
+ * Sets up a listener for roster messags from mecury
166
+ * @returns {void}
167
+ */
168
+ listenToBreakoutRosters: function listenToBreakoutRosters() {
169
+ var _this4 = this;
170
+ this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', function (event) {
171
+ _this4.handleRosterUpdate(event.data.locus);
172
+ _this4.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
173
+ });
174
+ },
175
+ /**
176
+ * Updates the information about the current breakout
177
+ * @param {Object} params
178
+ * @returns {void}
179
+ */
180
+ updateBreakout: function updateBreakout(params) {
181
+ var _this$set;
182
+ this.set(params);
183
+ this.set('currentBreakoutSession', (_this$set = {
184
+ sessionId: params.sessionId,
185
+ groupId: params.groupId,
186
+ name: params.name,
187
+ current: true,
188
+ sessionType: params.sessionType,
189
+ url: params.url
190
+ }, (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ACTIVE, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.REQUESTED, false), _this$set));
191
+ },
192
+ /**
193
+ * Updates the information about available breakouts
194
+ * @param {Object} payload
195
+ * @returns {void}
196
+ */
197
+ updateBreakoutSessions: function updateBreakoutSessions(payload) {
198
+ var _this5 = this;
199
+ var breakouts = {};
200
+ if (payload.breakoutSessions) {
201
+ (0, _forEach2.default)(_constants.BREAKOUTS.SESSION_STATES, function (state) {
202
+ (0, _forEach2.default)(payload.breakoutSessions[state], function (breakout) {
203
+ var sessionId = breakout.sessionId;
204
+ if (!breakouts[sessionId]) {
205
+ breakouts[sessionId] = breakout;
206
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ACTIVE] = false;
207
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ASSIGNED] = false;
208
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ALLOWED] = false;
209
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;
210
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.REQUESTED] = false;
211
+ }
212
+ breakouts[sessionId][state] = true;
213
+ });
214
+ });
215
+ }
216
+ (0, _forEach2.default)(breakouts, function (breakout) {
217
+ // eslint-disable-next-line no-param-reassign
218
+ breakout.url = _this5.url;
219
+ });
220
+ this.breakouts.set((0, _values.default)(breakouts));
221
+ },
222
+ version: "3.0.0-beta.21"
223
+ });
224
+ var _default = Breakouts;
225
+ exports.default = _default;
226
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","cleanUp","stopListening","locusUrlUpdate","set","webex","request","uri","qs","btoa","then","result","rosters","body","forEach","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","controls","breakout","session","get","parseRoster","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","updateBreakoutSessions","payload","breakoutSessions","state","ASSIGNED"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n\n collections: {\n breakouts: BreakoutCollection,\n },\n\n props: {\n allowBackToMain: 'boolean', // only present when in a breakout session\n delayCloseTime: 'number', // appears once breakouts start\n enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts\n groupId: 'string', // appears from the moment you enable breakouts\n name: 'string', // only present when in a breakout session\n sessionId: 'string', // appears from the moment you enable breakouts\n sessionType: 'string', // appears from the moment you enable breakouts\n startTime: 'string', // appears once breakouts start\n status: 'string', // only present when in a breakout session\n url: 'string', // appears from the moment you enable breakouts\n locusUrl: 'string', // the current locus url\n },\n\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n deps: ['sessionType'],\n /**\n * Returns true if the user is in the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:status', () => {\n if (this.status === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', () => {\n this.debouncedQueryRosters();\n });\n this.listenToBroadcastMessages();\n this.listenToBreakoutRosters();\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * The initial roster lists need to be queried because you don't\n * get a breakout.roster event when you join the meeting\n * @returns {void}\n */\n queryRosters() {\n this.webex\n .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n const {\n body: {rosters},\n } = result;\n\n rosters.forEach(({locus}) => {\n this.handleRosterUpdate(locus);\n });\n\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);\n });\n },\n\n /**\n *\n * @param {Object} locus // locus object\n * @returns {void}\n */\n handleRosterUpdate(locus) {\n const sessionId = locus.controls?.breakout?.sessionId;\n\n const session = this.breakouts.get(sessionId);\n\n if (!session) {\n return;\n }\n\n session.parseRoster(locus);\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {\n const {\n data: {senderUserId, sentTime, message},\n } = event;\n\n this.trigger(BREAKOUTS.EVENTS.MESSAGE, {\n senderUserId,\n sentTime,\n message,\n // FIXME: This is only the current sessionId\n // We'd need to check that the dataChannelUrl is still the same\n // to guarantee that this message was sent to this session\n sessionId: this.currentBreakoutSession.sessionId,\n });\n });\n },\n\n /**\n * Sets up a listener for roster messags from mecury\n * @returns {void}\n */\n listenToBreakoutRosters() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {\n this.handleRosterUpdate(event.data.locus);\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n });\n },\n\n /**\n * Updates the information about the current breakout\n * @param {Object} params\n * @returns {void}\n */\n updateBreakout(params) {\n this.set(params);\n\n this.set('currentBreakoutSession', {\n sessionId: params.sessionId,\n groupId: params.groupId,\n name: params.name,\n current: true,\n sessionType: params.sessionType,\n url: params.url,\n [BREAKOUTS.SESSION_STATES.ACTIVE]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
@@ -1,20 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _memoize2 = _interopRequireDefault(require("lodash/memoize"));
14
-
15
10
  var _bowser = _interopRequireDefault(require("bowser"));
16
-
17
11
  var _window = _interopRequireDefault(require("global/window"));
12
+ /* eslint-disable @typescript-eslint/no-var-requires */
18
13
 
19
14
  var mockDetectionObject = {
20
15
  /* eslint-disable global-require */
@@ -24,7 +19,6 @@ var mockDetectionObject = {
24
19
  getOSVersion: function getOSVersion() {
25
20
  return require('os').release();
26
21
  },
27
-
28
22
  /* eslint-enable global-require */
29
23
  getBrowserName: function getBrowserName() {
30
24
  return '';
@@ -36,36 +30,26 @@ var mockDetectionObject = {
36
30
  return false;
37
31
  }
38
32
  };
39
-
40
33
  var createDetectionObject = function createDetectionObject(results) {
41
34
  var getOSName = function getOSName() {
42
35
  var _results$getOSName;
43
-
44
36
  return (_results$getOSName = results === null || results === void 0 ? void 0 : results.getOSName()) !== null && _results$getOSName !== void 0 ? _results$getOSName : '';
45
37
  };
46
-
47
38
  var getOSVersion = function getOSVersion() {
48
39
  var _results$getOSVersion;
49
-
50
40
  return (_results$getOSVersion = results === null || results === void 0 ? void 0 : results.getOSVersion()) !== null && _results$getOSVersion !== void 0 ? _results$getOSVersion : '';
51
41
  };
52
-
53
42
  var getBrowserName = function getBrowserName() {
54
43
  var _results$getBrowserNa;
55
-
56
44
  return (_results$getBrowserNa = results === null || results === void 0 ? void 0 : results.getBrowserName()) !== null && _results$getBrowserNa !== void 0 ? _results$getBrowserNa : '';
57
45
  };
58
-
59
46
  var getBrowserVersion = function getBrowserVersion() {
60
47
  var _results$getBrowserVe;
61
-
62
48
  return (_results$getBrowserVe = results === null || results === void 0 ? void 0 : results.getBrowserVersion()) !== null && _results$getBrowserVe !== void 0 ? _results$getBrowserVe : '';
63
49
  };
64
-
65
50
  var isBrowser = function isBrowser(name) {
66
51
  return !!(results !== null && results !== void 0 && results.isBrowser(name, true));
67
52
  };
68
-
69
53
  return {
70
54
  getOSName: getOSName,
71
55
  getOSVersion: getOSVersion,
@@ -74,12 +58,9 @@ var createDetectionObject = function createDetectionObject(results) {
74
58
  isBrowser: isBrowser
75
59
  };
76
60
  };
77
-
78
61
  var _default = (0, _memoize2.default)(function (agent) {
79
62
  var _window$navigator;
80
-
81
63
  return agent || (_window$navigator = _window.default.navigator) !== null && _window$navigator !== void 0 && _window$navigator.userAgent ? createDetectionObject(_bowser.default.getParser(agent || _window.default.navigator.userAgent)) : mockDetectionObject;
82
64
  });
83
-
84
65
  exports.default = _default;
85
66
  //# sourceMappingURL=browser-detection.js.map