@webex/plugin-meetings 3.0.0-beta.12 → 3.0.0-beta.120

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 (519) hide show
  1. package/README.md +45 -1
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +48 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +357 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +193 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +43 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +983 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +5 -26
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +5 -26
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +6 -27
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +5 -26
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/parameter.js +5 -33
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +5 -26
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +4 -25
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reconnection-in-progress.js +0 -17
  45. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  46. package/dist/common/errors/reconnection.js +5 -26
  47. package/dist/common/errors/reconnection.js.map +1 -1
  48. package/dist/common/errors/stats.js +5 -26
  49. package/dist/common/errors/stats.js.map +1 -1
  50. package/dist/common/errors/webex-errors.js +6 -41
  51. package/dist/common/errors/webex-errors.js.map +1 -1
  52. package/dist/common/errors/webex-meetings-error.js +1 -24
  53. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  54. package/dist/common/events/events-scope.js +0 -22
  55. package/dist/common/events/events-scope.js.map +1 -1
  56. package/dist/common/events/events.js +0 -23
  57. package/dist/common/events/events.js.map +1 -1
  58. package/dist/common/events/trigger-proxy.js +0 -12
  59. package/dist/common/events/trigger-proxy.js.map +1 -1
  60. package/dist/common/events/util.js +0 -15
  61. package/dist/common/events/util.js.map +1 -1
  62. package/dist/common/logs/logger-config.js +0 -4
  63. package/dist/common/logs/logger-config.js.map +1 -1
  64. package/dist/common/logs/logger-proxy.js +1 -8
  65. package/dist/common/logs/logger-proxy.js.map +1 -1
  66. package/dist/common/logs/request.js +35 -61
  67. package/dist/common/logs/request.js.map +1 -1
  68. package/dist/common/queue.js +4 -14
  69. package/dist/common/queue.js.map +1 -1
  70. package/dist/config.js +6 -6
  71. package/dist/config.js.map +1 -1
  72. package/dist/constants.js +196 -53
  73. package/dist/constants.js.map +1 -1
  74. package/dist/controls-options-manager/constants.js +14 -0
  75. package/dist/controls-options-manager/constants.js.map +1 -0
  76. package/dist/controls-options-manager/enums.js +27 -0
  77. package/dist/controls-options-manager/enums.js.map +1 -0
  78. package/dist/controls-options-manager/index.js +297 -0
  79. package/dist/controls-options-manager/index.js.map +1 -0
  80. package/dist/controls-options-manager/types.js +7 -0
  81. package/dist/controls-options-manager/types.js.map +1 -0
  82. package/dist/controls-options-manager/util.js +294 -0
  83. package/dist/controls-options-manager/util.js.map +1 -0
  84. package/dist/index.js +72 -17
  85. package/dist/index.js.map +1 -1
  86. package/dist/locus-info/controlsUtils.js +95 -29
  87. package/dist/locus-info/controlsUtils.js.map +1 -1
  88. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  89. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  90. package/dist/locus-info/fullState.js +0 -15
  91. package/dist/locus-info/fullState.js.map +1 -1
  92. package/dist/locus-info/hostUtils.js +4 -12
  93. package/dist/locus-info/hostUtils.js.map +1 -1
  94. package/dist/locus-info/index.js +392 -212
  95. package/dist/locus-info/index.js.map +1 -1
  96. package/dist/locus-info/infoUtils.js +0 -38
  97. package/dist/locus-info/infoUtils.js.map +1 -1
  98. package/dist/locus-info/mediaSharesUtils.js +54 -38
  99. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  100. package/dist/locus-info/parser.js +88 -123
  101. package/dist/locus-info/parser.js.map +1 -1
  102. package/dist/locus-info/selfUtils.js +99 -91
  103. package/dist/locus-info/selfUtils.js.map +1 -1
  104. package/dist/media/index.js +55 -165
  105. package/dist/media/index.js.map +1 -1
  106. package/dist/media/properties.js +71 -117
  107. package/dist/media/properties.js.map +1 -1
  108. package/dist/media/util.js +2 -9
  109. package/dist/media/util.js.map +1 -1
  110. package/dist/mediaQualityMetrics/config.js +505 -495
  111. package/dist/mediaQualityMetrics/config.js.map +1 -1
  112. package/dist/meeting/in-meeting-actions.js +67 -14
  113. package/dist/meeting/in-meeting-actions.js.map +1 -1
  114. package/dist/meeting/index.js +2506 -2444
  115. package/dist/meeting/index.js.map +1 -1
  116. package/dist/meeting/locusMediaRequest.js +291 -0
  117. package/dist/meeting/locusMediaRequest.js.map +1 -0
  118. package/dist/meeting/muteState.js +292 -138
  119. package/dist/meeting/muteState.js.map +1 -1
  120. package/dist/meeting/request.js +315 -336
  121. package/dist/meeting/request.js.map +1 -1
  122. package/dist/meeting/request.type.js +7 -0
  123. package/dist/meeting/request.type.js.map +1 -0
  124. package/dist/meeting/state.js +21 -31
  125. package/dist/meeting/state.js.map +1 -1
  126. package/dist/meeting/util.js +462 -583
  127. package/dist/meeting/util.js.map +1 -1
  128. package/dist/meeting-info/collection.js +3 -25
  129. package/dist/meeting-info/collection.js.map +1 -1
  130. package/dist/meeting-info/index.js +10 -33
  131. package/dist/meeting-info/index.js.map +1 -1
  132. package/dist/meeting-info/meeting-info-v2.js +305 -286
  133. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  134. package/dist/meeting-info/request.js +1 -16
  135. package/dist/meeting-info/request.js.map +1 -1
  136. package/dist/meeting-info/util.js +98 -183
  137. package/dist/meeting-info/util.js.map +1 -1
  138. package/dist/meeting-info/utilv2.js +156 -232
  139. package/dist/meeting-info/utilv2.js.map +1 -1
  140. package/dist/meetings/collection.js +24 -20
  141. package/dist/meetings/collection.js.map +1 -1
  142. package/dist/meetings/index.js +675 -593
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +23 -42
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +177 -155
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.js +89 -88
  149. package/dist/member/index.js.map +1 -1
  150. package/dist/member/types.js +15 -0
  151. package/dist/member/types.js.map +1 -0
  152. package/dist/member/util.js +101 -69
  153. package/dist/member/util.js.map +1 -1
  154. package/dist/members/collection.js +12 -12
  155. package/dist/members/collection.js.map +1 -1
  156. package/dist/members/index.js +166 -205
  157. package/dist/members/index.js.map +1 -1
  158. package/dist/members/request.js +120 -85
  159. package/dist/members/request.js.map +1 -1
  160. package/dist/members/types.js +15 -0
  161. package/dist/members/types.js.map +1 -0
  162. package/dist/members/util.js +314 -260
  163. package/dist/members/util.js.map +1 -1
  164. package/dist/metrics/config.js +50 -16
  165. package/dist/metrics/config.js.map +1 -1
  166. package/dist/metrics/constants.js +3 -7
  167. package/dist/metrics/constants.js.map +1 -1
  168. package/dist/metrics/index.js +93 -162
  169. package/dist/metrics/index.js.map +1 -1
  170. package/dist/multistream/mediaRequestManager.js +167 -50
  171. package/dist/multistream/mediaRequestManager.js.map +1 -1
  172. package/dist/multistream/receiveSlot.js +58 -65
  173. package/dist/multistream/receiveSlot.js.map +1 -1
  174. package/dist/multistream/receiveSlotManager.js +74 -93
  175. package/dist/multistream/receiveSlotManager.js.map +1 -1
  176. package/dist/multistream/remoteMedia.js +55 -74
  177. package/dist/multistream/remoteMedia.js.map +1 -1
  178. package/dist/multistream/remoteMediaGroup.js +6 -40
  179. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  180. package/dist/multistream/remoteMediaManager.js +466 -442
  181. package/dist/multistream/remoteMediaManager.js.map +1 -1
  182. package/dist/networkQualityMonitor/index.js +32 -59
  183. package/dist/networkQualityMonitor/index.js.map +1 -1
  184. package/dist/personal-meeting-room/index.js +10 -45
  185. package/dist/personal-meeting-room/index.js.map +1 -1
  186. package/dist/personal-meeting-room/request.js +2 -33
  187. package/dist/personal-meeting-room/request.js.map +1 -1
  188. package/dist/personal-meeting-room/util.js +0 -13
  189. package/dist/personal-meeting-room/util.js.map +1 -1
  190. package/dist/reachability/index.js +190 -199
  191. package/dist/reachability/index.js.map +1 -1
  192. package/dist/reachability/request.js +14 -23
  193. package/dist/reachability/request.js.map +1 -1
  194. package/dist/reactions/constants.js +13 -0
  195. package/dist/reactions/constants.js.map +1 -0
  196. package/dist/reactions/reactions.js +2 -4
  197. package/dist/reactions/reactions.js.map +1 -1
  198. package/dist/reactions/reactions.type.js +19 -23
  199. package/dist/reactions/reactions.type.js.map +1 -1
  200. package/dist/reconnection-manager/index.js +326 -465
  201. package/dist/reconnection-manager/index.js.map +1 -1
  202. package/dist/recording-controller/enums.js +17 -0
  203. package/dist/recording-controller/enums.js.map +1 -0
  204. package/dist/recording-controller/index.js +343 -0
  205. package/dist/recording-controller/index.js.map +1 -0
  206. package/dist/recording-controller/util.js +63 -0
  207. package/dist/recording-controller/util.js.map +1 -0
  208. package/dist/roap/index.js +31 -75
  209. package/dist/roap/index.js.map +1 -1
  210. package/dist/roap/request.js +129 -136
  211. package/dist/roap/request.js.map +1 -1
  212. package/dist/roap/turnDiscovery.js +143 -103
  213. package/dist/roap/turnDiscovery.js.map +1 -1
  214. package/dist/statsAnalyzer/global.js +1 -95
  215. package/dist/statsAnalyzer/global.js.map +1 -1
  216. package/dist/statsAnalyzer/index.js +369 -461
  217. package/dist/statsAnalyzer/index.js.map +1 -1
  218. package/dist/statsAnalyzer/mqaUtil.js +144 -94
  219. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  220. package/dist/transcription/index.js +13 -45
  221. package/dist/transcription/index.js.map +1 -1
  222. package/dist/types/annotation/annotation.types.d.ts +35 -0
  223. package/dist/types/annotation/constants.d.ts +31 -0
  224. package/dist/types/annotation/index.d.ts +124 -0
  225. package/dist/types/breakouts/breakout.d.ts +8 -0
  226. package/dist/types/breakouts/collection.d.ts +5 -0
  227. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  228. package/dist/types/breakouts/events.d.ts +2 -0
  229. package/dist/types/breakouts/index.d.ts +5 -0
  230. package/dist/types/breakouts/request.d.ts +22 -0
  231. package/dist/types/breakouts/utils.d.ts +15 -0
  232. package/dist/types/common/browser-detection.d.ts +9 -0
  233. package/dist/types/common/collection.d.ts +48 -0
  234. package/dist/types/common/config.d.ts +2 -0
  235. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  236. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  237. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  238. package/dist/types/common/errors/media.d.ts +15 -0
  239. package/dist/types/common/errors/parameter.d.ts +15 -0
  240. package/dist/types/common/errors/password-error.d.ts +15 -0
  241. package/dist/types/common/errors/permission.d.ts +14 -0
  242. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  243. package/dist/types/common/errors/reconnection.d.ts +15 -0
  244. package/dist/types/common/errors/stats.d.ts +15 -0
  245. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  246. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  247. package/dist/types/common/events/events-scope.d.ts +17 -0
  248. package/dist/types/common/events/events.d.ts +12 -0
  249. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  250. package/dist/types/common/events/util.d.ts +2 -0
  251. package/dist/types/common/logs/logger-config.d.ts +2 -0
  252. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  253. package/dist/types/common/logs/request.d.ts +34 -0
  254. package/dist/types/common/queue.d.ts +32 -0
  255. package/dist/types/config.d.ts +78 -0
  256. package/dist/types/constants.d.ts +987 -0
  257. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  258. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  259. package/dist/types/controls-options-manager/index.d.ts +136 -0
  260. package/dist/types/controls-options-manager/types.d.ts +43 -0
  261. package/dist/types/controls-options-manager/util.d.ts +1 -0
  262. package/dist/types/index.d.ts +7 -0
  263. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  264. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  265. package/dist/types/locus-info/fullState.d.ts +2 -0
  266. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  267. package/dist/types/locus-info/index.d.ts +315 -0
  268. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  269. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  270. package/dist/types/locus-info/parser.d.ts +212 -0
  271. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  272. package/dist/types/media/index.d.ts +34 -0
  273. package/dist/types/media/properties.d.ts +108 -0
  274. package/dist/types/media/util.d.ts +2 -0
  275. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  276. package/dist/types/meeting/in-meeting-actions.d.ts +137 -0
  277. package/dist/types/meeting/index.d.ts +1755 -0
  278. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  279. package/dist/types/meeting/muteState.d.ts +186 -0
  280. package/dist/types/meeting/request.d.ts +269 -0
  281. package/dist/types/meeting/request.type.d.ts +11 -0
  282. package/dist/types/meeting/state.d.ts +9 -0
  283. package/dist/types/meeting/util.d.ts +76 -0
  284. package/dist/types/meeting-info/collection.d.ts +20 -0
  285. package/dist/types/meeting-info/index.d.ts +57 -0
  286. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  287. package/dist/types/meeting-info/request.d.ts +22 -0
  288. package/dist/types/meeting-info/util.d.ts +2 -0
  289. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  290. package/dist/types/meetings/collection.d.ts +31 -0
  291. package/dist/types/meetings/index.d.ts +345 -0
  292. package/dist/types/meetings/request.d.ts +27 -0
  293. package/dist/types/meetings/util.d.ts +18 -0
  294. package/dist/types/member/index.d.ts +157 -0
  295. package/dist/types/member/types.d.ts +21 -0
  296. package/dist/types/member/util.d.ts +2 -0
  297. package/dist/types/members/collection.d.ts +29 -0
  298. package/dist/types/members/index.d.ts +353 -0
  299. package/dist/types/members/request.d.ts +114 -0
  300. package/dist/types/members/types.d.ts +24 -0
  301. package/dist/types/members/util.d.ts +210 -0
  302. package/dist/types/metrics/config.d.ts +195 -0
  303. package/dist/types/metrics/constants.d.ts +54 -0
  304. package/dist/types/metrics/index.d.ts +169 -0
  305. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  306. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  307. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  308. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  309. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  310. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  311. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  312. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  313. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  314. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  315. package/dist/types/reachability/index.d.ts +152 -0
  316. package/dist/types/reachability/request.d.ts +37 -0
  317. package/dist/types/reactions/constants.d.ts +3 -0
  318. package/dist/types/reactions/reactions.d.ts +4 -0
  319. package/dist/types/reactions/reactions.type.d.ts +52 -0
  320. package/dist/types/reconnection-manager/index.d.ts +126 -0
  321. package/dist/types/recording-controller/enums.d.ts +7 -0
  322. package/dist/types/recording-controller/index.d.ts +193 -0
  323. package/dist/types/recording-controller/util.d.ts +13 -0
  324. package/dist/types/roap/index.d.ts +77 -0
  325. package/dist/types/roap/request.d.ts +36 -0
  326. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  327. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  328. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  329. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  330. package/dist/types/transcription/index.d.ts +64 -0
  331. package/internal-README.md +7 -6
  332. package/package.json +28 -21
  333. package/src/annotation/annotation.types.ts +42 -0
  334. package/src/annotation/constants.ts +36 -0
  335. package/src/annotation/index.ts +339 -0
  336. package/src/breakouts/README.md +220 -0
  337. package/src/breakouts/breakout.ts +163 -0
  338. package/src/breakouts/collection.ts +19 -0
  339. package/src/breakouts/edit-lock-error.ts +25 -0
  340. package/src/breakouts/events.ts +37 -0
  341. package/src/breakouts/index.ts +850 -0
  342. package/src/breakouts/request.ts +55 -0
  343. package/src/breakouts/utils.ts +57 -0
  344. package/src/common/browser-detection.ts +9 -6
  345. package/src/common/collection.ts +3 -1
  346. package/src/common/errors/captcha-error.ts +6 -6
  347. package/src/common/errors/intent-to-join.ts +6 -6
  348. package/src/common/errors/join-meeting.ts +12 -8
  349. package/src/common/errors/media.ts +6 -6
  350. package/src/common/errors/parameter.ts +9 -6
  351. package/src/common/errors/password-error.ts +6 -6
  352. package/src/common/errors/permission.ts +5 -5
  353. package/src/common/errors/reconnection.ts +6 -6
  354. package/src/common/errors/stats.ts +6 -6
  355. package/src/common/errors/webex-errors.ts +7 -5
  356. package/src/common/errors/webex-meetings-error.ts +1 -1
  357. package/src/common/events/events-scope.ts +5 -1
  358. package/src/common/events/events.ts +5 -1
  359. package/src/common/events/trigger-proxy.ts +8 -3
  360. package/src/common/events/util.ts +1 -2
  361. package/src/common/logs/logger-proxy.ts +21 -10
  362. package/src/common/logs/request.ts +11 -8
  363. package/src/config.ts +16 -12
  364. package/src/constants.ts +144 -6
  365. package/src/controls-options-manager/constants.ts +5 -0
  366. package/src/controls-options-manager/enums.ts +18 -0
  367. package/src/controls-options-manager/index.ts +278 -0
  368. package/src/controls-options-manager/types.ts +59 -0
  369. package/src/controls-options-manager/util.ts +281 -0
  370. package/src/index.ts +33 -0
  371. package/src/locus-info/controlsUtils.ts +148 -24
  372. package/src/locus-info/fullState.ts +15 -11
  373. package/src/locus-info/hostUtils.ts +4 -3
  374. package/src/locus-info/index.ts +335 -55
  375. package/src/locus-info/infoUtils.ts +12 -4
  376. package/src/locus-info/mediaSharesUtils.ts +52 -4
  377. package/src/locus-info/parser.ts +46 -68
  378. package/src/locus-info/selfUtils.ts +187 -56
  379. package/src/media/index.ts +139 -196
  380. package/src/media/properties.ts +43 -36
  381. package/src/media/util.ts +1 -1
  382. package/src/mediaQualityMetrics/config.ts +380 -378
  383. package/src/meeting/in-meeting-actions.ts +139 -3
  384. package/src/meeting/index.ts +2733 -1589
  385. package/src/meeting/locusMediaRequest.ts +309 -0
  386. package/src/meeting/muteState.ts +290 -72
  387. package/src/meeting/request.ts +247 -178
  388. package/src/meeting/request.type.ts +13 -0
  389. package/src/meeting/state.ts +45 -30
  390. package/src/meeting/util.ts +444 -395
  391. package/src/meeting-info/collection.ts +2 -1
  392. package/src/meeting-info/index.ts +32 -30
  393. package/src/meeting-info/meeting-info-v2.ts +235 -116
  394. package/src/meeting-info/request.ts +9 -3
  395. package/src/meeting-info/util.ts +54 -46
  396. package/src/meeting-info/utilv2.ts +71 -55
  397. package/src/meetings/collection.ts +21 -1
  398. package/src/meetings/index.ts +749 -437
  399. package/src/meetings/request.ts +29 -25
  400. package/src/meetings/util.ts +122 -33
  401. package/src/member/index.ts +95 -49
  402. package/src/member/types.ts +24 -0
  403. package/src/member/util.ts +106 -13
  404. package/src/members/collection.ts +8 -1
  405. package/src/members/index.ts +288 -130
  406. package/src/members/request.ts +144 -31
  407. package/src/members/types.ts +28 -0
  408. package/src/members/util.ts +316 -235
  409. package/src/metrics/config.ts +302 -90
  410. package/src/metrics/constants.ts +1 -6
  411. package/src/metrics/index.ts +124 -95
  412. package/src/multistream/mediaRequestManager.ts +203 -45
  413. package/src/multistream/receiveSlot.ts +69 -26
  414. package/src/multistream/receiveSlotManager.ts +62 -38
  415. package/src/multistream/remoteMedia.ts +30 -4
  416. package/src/multistream/remoteMediaGroup.ts +4 -3
  417. package/src/multistream/remoteMediaManager.ts +230 -66
  418. package/src/networkQualityMonitor/index.ts +24 -27
  419. package/src/personal-meeting-room/index.ts +12 -16
  420. package/src/personal-meeting-room/request.ts +10 -3
  421. package/src/personal-meeting-room/util.ts +3 -3
  422. package/src/reachability/index.ts +131 -79
  423. package/src/reachability/request.ts +43 -34
  424. package/src/reactions/constants.ts +4 -0
  425. package/src/reactions/reactions.ts +8 -8
  426. package/src/reactions/reactions.type.ts +31 -5
  427. package/src/reconnection-manager/index.ts +193 -111
  428. package/src/recording-controller/enums.ts +8 -0
  429. package/src/recording-controller/index.ts +315 -0
  430. package/src/recording-controller/util.ts +58 -0
  431. package/src/roap/index.ts +53 -53
  432. package/src/roap/request.ts +77 -64
  433. package/src/roap/turnDiscovery.ts +101 -48
  434. package/src/statsAnalyzer/global.ts +8 -104
  435. package/src/statsAnalyzer/index.ts +624 -376
  436. package/src/statsAnalyzer/mqaUtil.ts +203 -90
  437. package/src/transcription/index.ts +34 -32
  438. package/test/integration/spec/converged-space-meetings.js +177 -0
  439. package/test/integration/spec/journey.js +670 -466
  440. package/test/integration/spec/space-meeting.js +320 -204
  441. package/test/integration/spec/transcription.js +7 -8
  442. package/test/unit/spec/annotation/index.ts +436 -0
  443. package/test/unit/spec/breakouts/breakout.ts +203 -0
  444. package/test/unit/spec/breakouts/collection.ts +15 -0
  445. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  446. package/test/unit/spec/breakouts/events.ts +77 -0
  447. package/test/unit/spec/breakouts/index.ts +1587 -0
  448. package/test/unit/spec/breakouts/request.ts +104 -0
  449. package/test/unit/spec/breakouts/utils.js +72 -0
  450. package/test/unit/spec/common/browser-detection.js +9 -28
  451. package/test/unit/spec/controls-options-manager/index.js +287 -0
  452. package/test/unit/spec/controls-options-manager/util.js +504 -0
  453. package/test/unit/spec/fixture/locus.js +93 -90
  454. package/test/unit/spec/locus-info/controlsUtils.js +297 -32
  455. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  456. package/test/unit/spec/locus-info/index.js +598 -5
  457. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  458. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  459. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  460. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  461. package/test/unit/spec/locus-info/parser.js +3 -9
  462. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  463. package/test/unit/spec/locus-info/selfUtils.js +236 -12
  464. package/test/unit/spec/media/index.ts +104 -8
  465. package/test/unit/spec/media/properties.ts +9 -9
  466. package/test/unit/spec/meeting/in-meeting-actions.ts +66 -3
  467. package/test/unit/spec/meeting/index.js +2908 -887
  468. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  469. package/test/unit/spec/meeting/muteState.js +421 -94
  470. package/test/unit/spec/meeting/request.js +421 -79
  471. package/test/unit/spec/meeting/utils.js +308 -189
  472. package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
  473. package/test/unit/spec/meeting-info/request.js +7 -9
  474. package/test/unit/spec/meeting-info/util.js +11 -12
  475. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  476. package/test/unit/spec/meetings/collection.js +15 -1
  477. package/test/unit/spec/meetings/index.js +1052 -329
  478. package/test/unit/spec/meetings/utils.js +163 -14
  479. package/test/unit/spec/member/index.js +24 -1
  480. package/test/unit/spec/member/util.js +383 -32
  481. package/test/unit/spec/members/index.js +424 -55
  482. package/test/unit/spec/members/request.js +228 -40
  483. package/test/unit/spec/members/utils.js +191 -4
  484. package/test/unit/spec/metrics/index.js +113 -20
  485. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  486. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  487. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  488. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  489. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  490. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  491. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  492. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  493. package/test/unit/spec/reachability/index.ts +176 -27
  494. package/test/unit/spec/reachability/request.js +66 -0
  495. package/test/unit/spec/reconnection-manager/index.js +62 -31
  496. package/test/unit/spec/recording-controller/index.js +231 -0
  497. package/test/unit/spec/recording-controller/util.js +102 -0
  498. package/test/unit/spec/roap/index.ts +19 -49
  499. package/test/unit/spec/roap/request.ts +187 -0
  500. package/test/unit/spec/roap/turnDiscovery.ts +92 -50
  501. package/test/unit/spec/stats-analyzer/index.js +116 -60
  502. package/test/utils/cmr.js +44 -42
  503. package/test/utils/constants.js +9 -0
  504. package/test/utils/integrationTestUtils.js +64 -0
  505. package/test/utils/testUtils.js +63 -99
  506. package/test/utils/webex-config.js +22 -18
  507. package/test/utils/webex-test-users.js +57 -50
  508. package/tsconfig.json +6 -0
  509. package/dist/media/internal-media-core-wrapper.js +0 -22
  510. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  511. package/dist/meeting/effectsState.js +0 -334
  512. package/dist/meeting/effectsState.js.map +0 -1
  513. package/dist/multistream/multistreamMedia.js +0 -116
  514. package/dist/multistream/multistreamMedia.js.map +0 -1
  515. package/src/index.js +0 -15
  516. package/src/media/internal-media-core-wrapper.ts +0 -9
  517. package/src/meeting/effectsState.ts +0 -211
  518. package/src/multistream/multistreamMedia.ts +0 -92
  519. package/test/unit/spec/meeting/effectsState.js +0 -291
@@ -0,0 +1,983 @@
1
+ "use strict";
2
+
3
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
8
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
9
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
10
+ _Object$defineProperty(exports, "__esModule", {
11
+ value: true
12
+ });
13
+ exports.default = void 0;
14
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
15
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
16
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
17
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
19
+ var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
20
+ var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
21
+ var _webexCore = require("@webex/webex-core");
22
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
23
+ var _constants = require("../constants");
24
+ var _breakout = _interopRequireDefault(require("./breakout"));
25
+ var _collection = _interopRequireDefault(require("./collection"));
26
+ var _request = _interopRequireDefault(require("./request"));
27
+ var _events = _interopRequireDefault(require("./events"));
28
+ var _utils = require("./utils");
29
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
31
+ /**
32
+ * @class Breakouts
33
+ */
34
+ var Breakouts = _webexCore.WebexPlugin.extend({
35
+ namespace: _constants.MEETINGS,
36
+ breakoutRequest: _request.default,
37
+ collections: {
38
+ breakouts: _collection.default
39
+ },
40
+ props: {
41
+ allowBackToMain: 'boolean',
42
+ // only present when in a breakout session
43
+ delayCloseTime: 'number',
44
+ // appears once breakouts start
45
+ enableBreakoutSession: 'boolean',
46
+ // appears from the moment you enable breakouts
47
+ hasBreakoutPreAssignments: 'boolean',
48
+ // appears from the moment you enable breakouts
49
+ groupId: 'string',
50
+ // appears from the moment you enable breakouts
51
+ name: 'string',
52
+ // only present when in a breakout session
53
+ sessionId: 'string',
54
+ // appears from the moment you enable breakouts
55
+ sessionType: 'string',
56
+ // appears from the moment you enable breakouts
57
+ startTime: 'string',
58
+ // appears once breakouts start
59
+ status: 'string',
60
+ // only present when in a breakout session
61
+ url: 'string',
62
+ // appears from the moment you enable breakouts
63
+ locusUrl: 'string',
64
+ // the current locus url
65
+ breakoutServiceUrl: 'string',
66
+ // the current breakout resource url
67
+ mainLocusUrl: 'string',
68
+ // the locus url of the main session
69
+ groups: 'array',
70
+ // appears when create breakouts
71
+ manageGroups: 'array',
72
+ // appears when manage breakouts
73
+ preAssignments: 'array',
74
+ // appears when getPreAssignments info hasBreakoutPreAssignments = true
75
+ shouldFetchPreassignments: 'boolean',
76
+ // Controlling the lifecycle of the pre-assign API
77
+ editLock: 'object',
78
+ // appears when getBreakout info editlock = true
79
+ intervalID: 'number',
80
+ meetingId: 'string'
81
+ },
82
+ children: {
83
+ currentBreakoutSession: _breakout.default
84
+ },
85
+ derived: {
86
+ isInMainSession: {
87
+ cache: false,
88
+ deps: ['sessionType'],
89
+ /**
90
+ * Returns true if the user is in the main session
91
+ * @returns {boolean}
92
+ */
93
+ fn: function fn() {
94
+ return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
95
+ }
96
+ },
97
+ isActiveBreakout: {
98
+ cache: false,
99
+ // fix issue: sometimes the derived will not change even if the deps changed
100
+ deps: ['sessionType', 'status'],
101
+ /**
102
+ * Returns true if the breakout status is active
103
+ * @returns {boolean}
104
+ */
105
+ fn: function fn() {
106
+ return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT && (this.status === _constants.BREAKOUTS.STATUS.OPEN || this.status === _constants.BREAKOUTS.STATUS.CLOSING);
107
+ }
108
+ },
109
+ breakoutGroupId: {
110
+ cache: false,
111
+ deps: ['manageGroups'],
112
+ /**
113
+ * Returns the actived group id
114
+ * @returns {boolean}
115
+ */
116
+ fn: function fn() {
117
+ var _this$manageGroups;
118
+ if ((_this$manageGroups = this.manageGroups) !== null && _this$manageGroups !== void 0 && _this$manageGroups.length) {
119
+ return this.manageGroups[0].status !== _constants.BREAKOUTS.STATUS.CLOSED ? this.manageGroups[0].id : '';
120
+ }
121
+ return '';
122
+ }
123
+ }
124
+ },
125
+ /**
126
+ * initialize for the breakouts
127
+ * @returns {void}
128
+ */
129
+ initialize: function initialize() {
130
+ var _this = this;
131
+ this.listenTo(this, 'change:status', function () {
132
+ if (_this.status === _constants.BREAKOUTS.STATUS.CLOSING) {
133
+ _this.trigger(_constants.BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);
134
+ }
135
+ });
136
+ this.debouncedQueryRosters = (0, _debounce2.default)(this.queryRosters, 10, {
137
+ leading: true,
138
+ trailing: false
139
+ });
140
+ this.listenTo(this.breakouts, 'add', function (breakout) {
141
+ _this.debouncedQueryRosters();
142
+ _this.triggerReturnToMainEvent(breakout);
143
+ });
144
+ this.listenTo(this.breakouts, 'change:requestedLastModifiedTime', function (breakout) {
145
+ _this.triggerReturnToMainEvent(breakout);
146
+ });
147
+ this.listenToCurrentSessionTypeChange();
148
+ this.listenToBroadcastMessages();
149
+ this.listenToBreakoutRosters();
150
+ this.listenToBreakoutHelp();
151
+ // @ts-ignore
152
+ this.breakoutRequest = new _request.default({
153
+ webex: this.webex
154
+ });
155
+ },
156
+ /**
157
+ * Calls this to clean up listeners
158
+ * @returns {void}
159
+ */
160
+ cleanUp: function cleanUp() {
161
+ this.stopListening();
162
+ },
163
+ /**
164
+ * Update the current locus url of the meeting
165
+ * @param {string} locusUrl // locus url
166
+ * @returns {void}
167
+ */
168
+ locusUrlUpdate: function locusUrlUpdate(locusUrl) {
169
+ this.set('locusUrl', locusUrl);
170
+ var isInMainSession = this.isInMainSession,
171
+ mainLocusUrl = this.mainLocusUrl;
172
+ if (isInMainSession || !mainLocusUrl) {
173
+ this.set('mainLocusUrl', locusUrl);
174
+ }
175
+ },
176
+ /**
177
+ * Update the current breakout resource url
178
+ * @param {string} breakoutServiceUrl
179
+ * @returns {void}
180
+ */
181
+ breakoutServiceUrlUpdate: function breakoutServiceUrlUpdate(breakoutServiceUrl) {
182
+ this.set('breakoutServiceUrl', "".concat(breakoutServiceUrl, "/breakout/"));
183
+ },
184
+ /**
185
+ * The initial roster lists need to be queried because you don't
186
+ * get a breakout.roster event when you join the meeting
187
+ * @returns {void}
188
+ */
189
+ queryRosters: function queryRosters() {
190
+ var _this2 = this;
191
+ this.webex.request({
192
+ uri: "".concat(this.url, "/roster"),
193
+ qs: {
194
+ locusUrl: btoa(this.locusUrl)
195
+ }
196
+ }).then(function (result) {
197
+ var rosters = result.body.rosters;
198
+ rosters === null || rosters === void 0 ? void 0 : rosters.forEach(function (_ref) {
199
+ var locus = _ref.locus;
200
+ _this2.handleRosterUpdate(locus);
201
+ });
202
+ _this2.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
203
+ }).catch(function (error) {
204
+ _loggerProxy.default.logger.error('Meeting:breakouts#queryRosters failed', error);
205
+ });
206
+ },
207
+ /**
208
+ *
209
+ * @param {Object} locus // locus object
210
+ * @returns {void}
211
+ */
212
+ handleRosterUpdate: function handleRosterUpdate(locus) {
213
+ var _locus$controls, _locus$controls$break;
214
+ 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;
215
+ var session = this.breakouts.get(sessionId);
216
+ if (!session) {
217
+ return;
218
+ }
219
+ session.parseRoster(locus);
220
+ },
221
+ /**
222
+ *Sets up listener for currentBreakoutSession sessionType changed
223
+ * @returns {void}
224
+ */
225
+ listenToCurrentSessionTypeChange: function listenToCurrentSessionTypeChange() {
226
+ var _this3 = this;
227
+ this.listenTo(this.currentBreakoutSession, 'change:sessionType', function (currentBreakoutSession, sessionType) {
228
+ if ((0, _utils.isSessionTypeChangedFromSessionToMain)(currentBreakoutSession, sessionType)) {
229
+ _this3.trigger(_constants.BREAKOUTS.EVENTS.LEAVE_BREAKOUT);
230
+ }
231
+ });
232
+ },
233
+ /**
234
+ * Sets up listener for broadcast messages sent to the breakout session
235
+ * @returns {void}
236
+ */
237
+ listenToBroadcastMessages: function listenToBroadcastMessages() {
238
+ var _this4 = this;
239
+ this.listenTo(this.webex.internal.llm, 'event:breakout.message', function (event) {
240
+ var _event$data = event.data,
241
+ senderUserId = _event$data.senderUserId,
242
+ sentTime = _event$data.sentTime,
243
+ message = _event$data.message;
244
+ _this4.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
245
+ senderUserId: senderUserId,
246
+ sentTime: sentTime,
247
+ message: message,
248
+ // FIXME: This is only the current sessionId
249
+ // We'd need to check that the dataChannelUrl is still the same
250
+ // to guarantee that this message was sent to this session
251
+ sessionId: _this4.currentBreakoutSession.sessionId
252
+ });
253
+ });
254
+ },
255
+ /**
256
+ * Sets up a listener for roster messags from mecury
257
+ * @returns {void}
258
+ */
259
+ listenToBreakoutRosters: function listenToBreakoutRosters() {
260
+ var _this5 = this;
261
+ this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', function (event) {
262
+ _this5.handleRosterUpdate(event.data.locus);
263
+ _this5.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
264
+ });
265
+ },
266
+ /**
267
+ * Sets up a listener for ask help notify from mecury
268
+ * @returns {void}
269
+ */
270
+ listenToBreakoutHelp: function listenToBreakoutHelp() {
271
+ var _this6 = this;
272
+ this.listenTo(this.webex.internal.mercury, 'event:breakout.help', function (event) {
273
+ var _event$data2 = event.data,
274
+ participant = _event$data2.participant,
275
+ sessionId = _event$data2.sessionId;
276
+ _this6.trigger(_constants.BREAKOUTS.EVENTS.ASK_FOR_HELP, {
277
+ participant: participant,
278
+ sessionId: sessionId
279
+ });
280
+ });
281
+ },
282
+ /**
283
+ * Updates the information about the current breakout
284
+ * @param {Object} params
285
+ * @returns {void}
286
+ */
287
+ updateBreakout: function updateBreakout(params) {
288
+ var _this$set;
289
+ var preEnableBreakoutSession = this.get('enableBreakoutSession');
290
+ this.set(params);
291
+
292
+ // These values are set manually so they are unset when they are not included in params
293
+ this.set('groups', params.groups);
294
+ this.set('startTime', params.startTime);
295
+ this.set('status', params.status);
296
+ this.set('currentBreakoutSession', (_this$set = {
297
+ sessionId: params.sessionId,
298
+ groupId: params.groupId,
299
+ name: params.name,
300
+ current: true,
301
+ sessionType: params.sessionType,
302
+ url: params.url
303
+ }, (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));
304
+
305
+ // We need to call queryPreAssignments when enableBreakoutSession become true
306
+ if (preEnableBreakoutSession !== params.enableBreakoutSession) {
307
+ this.queryPreAssignments(params);
308
+ }
309
+ if (this.currentBreakoutSession.previous('sessionId') !== this.currentBreakoutSession.sessionId || this.currentBreakoutSession.previous('groupId') !== this.currentBreakoutSession.groupId) {
310
+ // should report joined session changed
311
+ var meeting = this.webex.meetings.getMeetingByType(_constants._ID_, this.meetingId);
312
+ _events.default.onBreakoutJoinResponse({
313
+ currentSession: this.currentBreakoutSession,
314
+ meeting: meeting,
315
+ breakoutMoveId: params.breakoutMoveId
316
+ });
317
+ }
318
+ },
319
+ /**
320
+ * Updates the information about available breakouts
321
+ * @param {Object} payload
322
+ * @returns {void}
323
+ */
324
+ updateBreakoutSessions: function updateBreakoutSessions(payload) {
325
+ var _this7 = this;
326
+ var breakouts = {};
327
+ if (payload.breakoutSessions) {
328
+ (0, _forEach2.default)(_constants.BREAKOUTS.SESSION_STATES, function (state) {
329
+ (0, _forEach2.default)(payload.breakoutSessions[state], function (breakout) {
330
+ var sessionId = breakout.sessionId;
331
+ if (!breakouts[sessionId]) {
332
+ breakouts[sessionId] = breakout;
333
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ACTIVE] = false;
334
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ASSIGNED] = false;
335
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ALLOWED] = false;
336
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;
337
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.REQUESTED] = false;
338
+ }
339
+ breakouts[sessionId][state] = true;
340
+ if (state === _constants.BREAKOUTS.SESSION_STATES.REQUESTED) {
341
+ breakouts[sessionId].requestedLastModifiedTime = breakout.modifiedAt;
342
+ }
343
+ });
344
+ });
345
+ }
346
+ (0, _forEach2.default)(breakouts, function (breakout) {
347
+ // eslint-disable-next-line no-param-reassign
348
+ breakout.url = _this7.url;
349
+ });
350
+ this.breakouts.set((0, _values.default)(breakouts));
351
+ },
352
+ /**
353
+ * get main session
354
+ * @returns {Breakout}
355
+ */
356
+ getMainSession: function getMainSession() {
357
+ if (this.isInMainSession) {
358
+ return this.currentBreakoutSession;
359
+ }
360
+ var mainSession = this.breakouts.filter(function (breakout) {
361
+ return breakout.isMain;
362
+ })[0];
363
+ if (!mainSession) {
364
+ throw new Error('no main session found');
365
+ }
366
+ return mainSession;
367
+ },
368
+ /**
369
+ * Host/CoHost ask all participants return to main session
370
+ * @returns {Promise}
371
+ */
372
+ askAllToReturn: function askAllToReturn() {
373
+ var mainSession = this.getMainSession();
374
+ return this.webex.request({
375
+ method: _constants.HTTP_VERBS.POST,
376
+ uri: "".concat(this.url, "/requestMove"),
377
+ body: {
378
+ groupId: mainSession.groupId,
379
+ sessionId: mainSession.sessionId
380
+ }
381
+ });
382
+ },
383
+ /**
384
+ * Broadcast message to all breakout session's participants
385
+ * @param {String} message
386
+ * @param {Object} options
387
+ * @returns {Promise}
388
+ */
389
+ broadcast: function broadcast(message, options) {
390
+ var breakoutGroupId = this.breakoutGroupId;
391
+ if (!breakoutGroupId) {
392
+ throw new Error('Cannot broadcast, no breakout session found');
393
+ }
394
+ return this.breakoutRequest.broadcast({
395
+ url: this.url,
396
+ message: message,
397
+ options: options,
398
+ groupId: breakoutGroupId
399
+ });
400
+ },
401
+ /**
402
+ * Make enable breakout resource
403
+ * @returns {Promise}
404
+ */
405
+ enableBreakouts: function enableBreakouts() {
406
+ if (this.breakoutServiceUrl) {
407
+ // @ts-ignore
408
+ return this.webex.request({
409
+ method: _constants.HTTP_VERBS.POST,
410
+ uri: this.breakoutServiceUrl,
411
+ body: {
412
+ locusUrl: this.locusUrl
413
+ }
414
+ }).catch(function (err) {
415
+ _loggerProxy.default.logger.error("Meeting:request#touchBreakout --> Error provisioning error ".concat(err));
416
+ throw err;
417
+ });
418
+ }
419
+ return _promise.default.reject(new Error("enableBreakouts: the breakoutServiceUrl is empty"));
420
+ },
421
+ /**
422
+ * Make the meeting enable or disable breakout session
423
+ * @param {boolean} enable
424
+ * @returns {Promise}
425
+ */
426
+ toggleBreakout: function toggleBreakout(enable) {
427
+ var _this8 = this;
428
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
429
+ var info;
430
+ return _regenerator.default.wrap(function _callee$(_context) {
431
+ while (1) switch (_context.prev = _context.next) {
432
+ case 0:
433
+ if (!(_this8.enableBreakoutSession === undefined)) {
434
+ _context.next = 10;
435
+ break;
436
+ }
437
+ _context.next = 3;
438
+ return _this8.enableBreakouts();
439
+ case 3:
440
+ info = _context.sent;
441
+ if (enable) {
442
+ _context.next = 8;
443
+ break;
444
+ }
445
+ // if enable is false, updateBreakout set the param then set enableBreakoutSession as false
446
+ _this8.updateBreakout(info.body);
447
+ _context.next = 8;
448
+ return _this8.doToggleBreakout(enable);
449
+ case 8:
450
+ _context.next = 12;
451
+ break;
452
+ case 10:
453
+ _context.next = 12;
454
+ return _this8.doToggleBreakout(enable);
455
+ case 12:
456
+ case "end":
457
+ return _context.stop();
458
+ }
459
+ }, _callee);
460
+ }))();
461
+ },
462
+ /**
463
+ * do toggle meeting breakout session enable or disable
464
+ * @param {boolean} enable
465
+ * @returns {Promise}
466
+ */
467
+ doToggleBreakout: function doToggleBreakout(enable) {
468
+ var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
469
+ editlock: {
470
+ token: this.editLock.token
471
+ }
472
+ } : {}), {
473
+ enableBreakoutSession: enable
474
+ });
475
+
476
+ // @ts-ignore
477
+ return this.webex.request({
478
+ method: _constants.HTTP_VERBS.PUT,
479
+ uri: this.url,
480
+ body: body
481
+ });
482
+ },
483
+ /**
484
+ * set groups to manageGroups prop
485
+ * @param {Object} breakoutInfo -- breakout groups
486
+ * @returns {void}
487
+ */
488
+ _setManageGroups: function _setManageGroups(breakoutInfo) {
489
+ var _breakoutInfo$body;
490
+ if (breakoutInfo !== null && breakoutInfo !== void 0 && (_breakoutInfo$body = breakoutInfo.body) !== null && _breakoutInfo$body !== void 0 && _breakoutInfo$body.groups) {
491
+ this.set('manageGroups', breakoutInfo.body.groups);
492
+ }
493
+ },
494
+ /**
495
+ * Create new breakout sessions
496
+ * @param {object} params -- breakout session group
497
+ * @returns {Promise}
498
+ */
499
+ create: function create(params) {
500
+ var _this9 = this;
501
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
502
+ var payload, body, breakoutInfo;
503
+ return _regenerator.default.wrap(function _callee2$(_context2) {
504
+ while (1) switch (_context2.prev = _context2.next) {
505
+ case 0:
506
+ payload = _objectSpread({}, params);
507
+ body = _objectSpread(_objectSpread({}, _this9.editLock && !!_this9.editLock.token ? {
508
+ editlock: {
509
+ token: _this9.editLock.token
510
+ }
511
+ } : {}), {
512
+ groups: [payload]
513
+ }); // @ts-ignore
514
+ _context2.next = 4;
515
+ return _this9.webex.request({
516
+ method: _constants.HTTP_VERBS.PUT,
517
+ uri: _this9.url,
518
+ body: body
519
+ }).catch(function (error) {
520
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create'));
521
+ });
522
+ case 4:
523
+ breakoutInfo = _context2.sent;
524
+ _this9._setManageGroups(breakoutInfo);
525
+
526
+ // clear edit lock info after save breakout session info
527
+ _this9._clearEditLockInfo();
528
+ return _context2.abrupt("return", breakoutInfo);
529
+ case 8:
530
+ case "end":
531
+ return _context2.stop();
532
+ }
533
+ }, _callee2);
534
+ }))();
535
+ },
536
+ /**
537
+ * Delete all breakout sessions
538
+ * @returns {Promise}
539
+ */
540
+ clearSessions: function clearSessions() {
541
+ var _this10 = this;
542
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
543
+ var body, breakoutInfo;
544
+ return _regenerator.default.wrap(function _callee3$(_context3) {
545
+ while (1) switch (_context3.prev = _context3.next) {
546
+ case 0:
547
+ body = _objectSpread(_objectSpread({}, _this10.editLock && !!_this10.editLock.token ? {
548
+ editlock: {
549
+ token: _this10.editLock.token
550
+ }
551
+ } : {}), {
552
+ groups: [{
553
+ action: _constants.BREAKOUTS.ACTION.DELETE
554
+ }]
555
+ }); // @ts-ignore
556
+ _context3.next = 3;
557
+ return _this10.webex.request({
558
+ method: _constants.HTTP_VERBS.PUT,
559
+ uri: _this10.url,
560
+ body: body
561
+ }).catch(function (error) {
562
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions'));
563
+ });
564
+ case 3:
565
+ breakoutInfo = _context3.sent;
566
+ _this10._setManageGroups(breakoutInfo);
567
+ _this10.shouldFetchPreassignments = false;
568
+ return _context3.abrupt("return", breakoutInfo);
569
+ case 7:
570
+ case "end":
571
+ return _context3.stop();
572
+ }
573
+ }, _callee3);
574
+ }))();
575
+ },
576
+ /**
577
+ * Host or cohost starts breakout sessions
578
+ * @param {object} params
579
+ * @returns {Promise}
580
+ */
581
+ start: function start() {
582
+ var _arguments = arguments,
583
+ _this11 = this;
584
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
585
+ var params, action, payload, body, breakoutInfo;
586
+ return _regenerator.default.wrap(function _callee4$(_context4) {
587
+ while (1) switch (_context4.prev = _context4.next) {
588
+ case 0:
589
+ params = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {};
590
+ action = _constants.BREAKOUTS.ACTION.START;
591
+ payload = _objectSpread({
592
+ id: _this11.breakoutGroupId,
593
+ action: action,
594
+ allowBackToMain: false,
595
+ allowToJoinLater: false,
596
+ duration: _constants.BREAKOUTS.DEFAULT_DURATION
597
+ }, params);
598
+ body = _objectSpread(_objectSpread({}, _this11.editLock && !!_this11.editLock.token ? {
599
+ editlock: {
600
+ token: _this11.editLock.token,
601
+ refresh: true
602
+ }
603
+ } : {}), {
604
+ groups: [payload]
605
+ });
606
+ _context4.next = 6;
607
+ return _this11.request({
608
+ method: _constants.HTTP_VERBS.PUT,
609
+ uri: _this11.url,
610
+ body: body
611
+ }).catch(function (error) {
612
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#start'));
613
+ });
614
+ case 6:
615
+ breakoutInfo = _context4.sent;
616
+ _this11._setManageGroups(breakoutInfo);
617
+ return _context4.abrupt("return", breakoutInfo);
618
+ case 9:
619
+ case "end":
620
+ return _context4.stop();
621
+ }
622
+ }, _callee4);
623
+ }))();
624
+ },
625
+ /**
626
+ * Host or cohost ends breakout sessions
627
+ * @param {object} params
628
+ * @returns {Promise}
629
+ */
630
+ end: function end() {
631
+ var _arguments2 = arguments,
632
+ _this12 = this;
633
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
634
+ var params, delayCloseTime, id, action, payload, body, breakoutInfo;
635
+ return _regenerator.default.wrap(function _callee5$(_context5) {
636
+ while (1) switch (_context5.prev = _context5.next) {
637
+ case 0:
638
+ params = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : {};
639
+ delayCloseTime = _this12.delayCloseTime, id = _this12.breakoutGroupId;
640
+ action = _constants.BREAKOUTS.ACTION.CLOSE;
641
+ payload = _objectSpread({
642
+ id: id,
643
+ action: action,
644
+ delayCloseTime: delayCloseTime
645
+ }, params);
646
+ body = _objectSpread(_objectSpread({}, _this12.editLock && !!_this12.editLock.token ? {
647
+ editlock: {
648
+ token: _this12.editLock.token,
649
+ refresh: true
650
+ }
651
+ } : {}), {
652
+ groups: [payload]
653
+ });
654
+ _context5.next = 7;
655
+ return _this12.request({
656
+ method: _constants.HTTP_VERBS.PUT,
657
+ uri: _this12.url,
658
+ body: body
659
+ }).catch(function (error) {
660
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#end'));
661
+ });
662
+ case 7:
663
+ breakoutInfo = _context5.sent;
664
+ _this12._setManageGroups(breakoutInfo);
665
+ return _context5.abrupt("return", breakoutInfo);
666
+ case 10:
667
+ case "end":
668
+ return _context5.stop();
669
+ }
670
+ }, _callee5);
671
+ }))();
672
+ },
673
+ /**
674
+ * Host or cohost update breakout sessions
675
+ * @param {Object} params
676
+ * @param {String} params.id
677
+ * @param {Boolean} unlockEdit
678
+ * @returns {Promise}
679
+ */
680
+ update: function update(params, unlockEdit) {
681
+ var _this13 = this;
682
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
683
+ var _this13$editLock;
684
+ var payload, body, breakoutInfo;
685
+ return _regenerator.default.wrap(function _callee6$(_context6) {
686
+ while (1) switch (_context6.prev = _context6.next) {
687
+ case 0:
688
+ if (params.id) {
689
+ _context6.next = 2;
690
+ break;
691
+ }
692
+ return _context6.abrupt("return", _promise.default.reject(new Error('Missing breakout group id')));
693
+ case 2:
694
+ payload = _objectSpread({}, params);
695
+ body = _objectSpread(_objectSpread({}, (_this13$editLock = _this13.editLock) !== null && _this13$editLock !== void 0 && _this13$editLock.token ? {
696
+ editlock: {
697
+ token: _this13.editLock.token,
698
+ refresh: !unlockEdit
699
+ }
700
+ } : {}), {
701
+ groups: [payload]
702
+ });
703
+ _context6.next = 6;
704
+ return _this13.request({
705
+ method: _constants.HTTP_VERBS.PUT,
706
+ uri: _this13.url,
707
+ body: body
708
+ }).catch(function (error) {
709
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#update'));
710
+ });
711
+ case 6:
712
+ breakoutInfo = _context6.sent;
713
+ if (unlockEdit) {
714
+ _this13._clearEditLockInfo();
715
+ }
716
+ _this13._setManageGroups(breakoutInfo);
717
+ return _context6.abrupt("return", breakoutInfo);
718
+ case 10:
719
+ case "end":
720
+ return _context6.stop();
721
+ }
722
+ }, _callee6);
723
+ }))();
724
+ },
725
+ /**
726
+ * get existed breakout sessions
727
+ * @param {boolean} editlock -- lock operations of the breakout sessions
728
+ * @returns {Promise}
729
+ */
730
+ getBreakout: function getBreakout(editlock) {
731
+ var _this14 = this;
732
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
733
+ var _breakout$body, _breakout$body$editlo;
734
+ var breakout;
735
+ return _regenerator.default.wrap(function _callee7$(_context7) {
736
+ while (1) switch (_context7.prev = _context7.next) {
737
+ case 0:
738
+ _context7.next = 2;
739
+ return _this14.request({
740
+ method: _constants.HTTP_VERBS.GET,
741
+ uri: _this14.url + (editlock ? "?editlock=".concat(editlock) : '')
742
+ });
743
+ case 2:
744
+ breakout = _context7.sent;
745
+ _this14._setManageGroups(breakout);
746
+ if (editlock && (_breakout$body = breakout.body) !== null && _breakout$body !== void 0 && (_breakout$body$editlo = _breakout$body.editlock) !== null && _breakout$body$editlo !== void 0 && _breakout$body$editlo.token) {
747
+ _this14.set('editLock', breakout.body.editlock);
748
+ _this14.keepEditLockAlive();
749
+ }
750
+ return _context7.abrupt("return", breakout);
751
+ case 6:
752
+ case "end":
753
+ return _context7.stop();
754
+ }
755
+ }, _callee7);
756
+ }))();
757
+ },
758
+ /**
759
+ * enable and edit lock breakout
760
+ * @returns {void}
761
+ */
762
+ enableAndLockBreakout: function enableAndLockBreakout() {
763
+ var _this15 = this;
764
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
765
+ var info;
766
+ return _regenerator.default.wrap(function _callee8$(_context8) {
767
+ while (1) switch (_context8.prev = _context8.next) {
768
+ case 0:
769
+ if (!_this15.enableBreakoutSession) {
770
+ _context8.next = 4;
771
+ break;
772
+ }
773
+ _this15.lockBreakout();
774
+ _context8.next = 8;
775
+ break;
776
+ case 4:
777
+ _context8.next = 6;
778
+ return _this15.enableBreakouts();
779
+ case 6:
780
+ info = _context8.sent;
781
+ if (info.body) {
782
+ _this15.lockBreakout();
783
+ }
784
+ case 8:
785
+ case "end":
786
+ return _context8.stop();
787
+ }
788
+ }, _callee8);
789
+ }))();
790
+ },
791
+ /**
792
+ * send breakout edit lock
793
+ * @returns {void}
794
+ */
795
+ lockBreakout: function lockBreakout() {
796
+ var _this16 = this;
797
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
798
+ var _breakout$body2, breakout;
799
+ return _regenerator.default.wrap(function _callee9$(_context9) {
800
+ while (1) switch (_context9.prev = _context9.next) {
801
+ case 0:
802
+ if (!(_this16.editLock && !!_this16.editLock.token)) {
803
+ _context9.next = 8;
804
+ break;
805
+ }
806
+ if (!(_this16.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED)) {
807
+ _context9.next = 5;
808
+ break;
809
+ }
810
+ throw new Error('Breakout already locked');
811
+ case 5:
812
+ _this16.keepEditLockAlive();
813
+ case 6:
814
+ _context9.next = 12;
815
+ break;
816
+ case 8:
817
+ _context9.next = 10;
818
+ return _this16.getBreakout(true);
819
+ case 10:
820
+ breakout = _context9.sent;
821
+ if ((_breakout$body2 = breakout.body) !== null && _breakout$body2 !== void 0 && _breakout$body2.editlock) {
822
+ _this16.keepEditLockAlive();
823
+ }
824
+ case 12:
825
+ case "end":
826
+ return _context9.stop();
827
+ }
828
+ }, _callee9);
829
+ }))();
830
+ },
831
+ /**
832
+ * keep edit lock alive
833
+ * @returns {void}
834
+ */
835
+ keepEditLockAlive: function keepEditLockAlive() {
836
+ var _this17 = this;
837
+ if (this.editLock && !!this.editLock.token) {
838
+ var ttl = this.editLock.ttl < 30 ? _constants.BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;
839
+ if (this.intervalID) {
840
+ window.clearInterval(this.intervalID);
841
+ }
842
+ this.intervalID = window.setInterval(function () {
843
+ _this17.request({
844
+ method: _constants.HTTP_VERBS.PUT,
845
+ uri: "".concat(_this17.url, "/editlock/").concat(_this17.editLock.token)
846
+ }).catch(function (error) {
847
+ _this17._clearEditLockInfo();
848
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#keepEditLockAlive'));
849
+ });
850
+ }, ttl / 2 * 1000);
851
+ }
852
+ },
853
+ /**
854
+ * unlock edit breakout
855
+ * @returns {void}
856
+ */
857
+ unLockEditBreakout: function unLockEditBreakout() {
858
+ var _this18 = this;
859
+ if (this.editLock && !!this.editLock.token) {
860
+ this.request({
861
+ method: _constants.HTTP_VERBS.DELETE,
862
+ uri: "".concat(this.url, "/editlock/").concat(this.editLock.token)
863
+ }).then(function () {
864
+ _this18._clearEditLockInfo();
865
+ }).catch(function (error) {
866
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#unLockEditBreakout'));
867
+ });
868
+ }
869
+ },
870
+ /**
871
+ * clear interval and edit lock info
872
+ * @private
873
+ * @returns {void}
874
+ */
875
+ _clearEditLockInfo: function _clearEditLockInfo() {
876
+ if (this.intervalID) {
877
+ clearInterval(this.intervalID);
878
+ }
879
+ this.set('editLock', {});
880
+ },
881
+ /**
882
+ * assign participants to breakout session
883
+ * @param {Array} sessions
884
+ * @returns {void}
885
+ */
886
+ assign: function assign(sessions) {
887
+ var internalSessions = sessions.map(function (item) {
888
+ return {
889
+ id: item.id,
890
+ assigned: item.memberIds,
891
+ assignedEmails: item.emails,
892
+ anyoneCanJoin: !!item.anyone
893
+ };
894
+ });
895
+ var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
896
+ editlock: {
897
+ token: this.editLock.token,
898
+ refresh: true
899
+ }
900
+ } : {}), {
901
+ groups: [{
902
+ id: this.breakoutGroupId,
903
+ sessions: internalSessions
904
+ }]
905
+ });
906
+ return this.request({
907
+ method: _constants.HTTP_VERBS.PUT,
908
+ uri: this.url,
909
+ body: body
910
+ });
911
+ },
912
+ /**
913
+ * The pre-assignments need to be queried when "hasBreakoutPreAssignments" is true
914
+ * @param {Object} params
915
+ * @returns {void}
916
+ */
917
+ queryPreAssignments: function queryPreAssignments(params) {
918
+ var _this19 = this;
919
+ if (!params || !params.enableBreakoutSession || !params.hasBreakoutPreAssignments) {
920
+ return;
921
+ }
922
+ if (!this.shouldFetchPreassignments) {
923
+ this.webex.request({
924
+ uri: "".concat(this.url, "/preassignments"),
925
+ qs: {
926
+ locusUrl: btoa(this.locusUrl)
927
+ }
928
+ }).then(function (result) {
929
+ var _result$body;
930
+ if ((_result$body = result.body) !== null && _result$body !== void 0 && _result$body.groups) {
931
+ _this19.set('preAssignments', result.body.groups);
932
+ }
933
+ }).catch(function (error) {
934
+ _loggerProxy.default.logger.error('Meeting:breakouts#queryPreAssignments failed', error);
935
+ });
936
+ this.shouldFetchPreassignments = true;
937
+ }
938
+ },
939
+ /**
940
+ * assign participants dynamically after breakout sessions started,
941
+ * but currently it only used for admitting participants from lobby into breakout directly
942
+ * @param {Array} sessions
943
+ * @returns {void}
944
+ */
945
+ dynamicAssign: function dynamicAssign(sessions) {
946
+ var updatedSessions = sessions.map(function (item) {
947
+ return {
948
+ id: item.id,
949
+ participants: item.participants,
950
+ targetState: item.targetState
951
+ };
952
+ });
953
+ var body = {
954
+ groups: [{
955
+ id: this.breakoutGroupId,
956
+ sessions: updatedSessions
957
+ }],
958
+ editlock: null
959
+ };
960
+ if (this.editLock && this.editLock.token) {
961
+ body.editlock = this.editLock;
962
+ }
963
+ return this.request({
964
+ method: _constants.HTTP_VERBS.PUT,
965
+ uri: "".concat(this.url, "/dynamicAssign"),
966
+ body: body
967
+ });
968
+ },
969
+ /**
970
+ * trigger ASK_RETURN_TO_MAIN event when main session requested
971
+ * @param {Object} breakout
972
+ * @returns {void}
973
+ */
974
+ triggerReturnToMainEvent: function triggerReturnToMainEvent(breakout) {
975
+ if (breakout.isMain && breakout.requested) {
976
+ this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
977
+ }
978
+ },
979
+ version: "3.0.0-beta.120"
980
+ });
981
+ var _default = Breakouts;
982
+ exports.default = _default;
983
+ //# sourceMappingURL=index.js.map