@webex/plugin-meetings 3.7.0 → 3.8.0

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 (351) hide show
  1. package/dist/annotation/annotation.types.d.ts +42 -0
  2. package/dist/annotation/constants.d.ts +31 -0
  3. package/dist/annotation/index.d.ts +117 -0
  4. package/dist/annotation/index.js +17 -0
  5. package/dist/annotation/index.js.map +1 -1
  6. package/dist/breakouts/breakout.d.ts +8 -0
  7. package/dist/breakouts/breakout.js +1 -1
  8. package/dist/breakouts/collection.d.ts +5 -0
  9. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  10. package/dist/breakouts/events.d.ts +8 -0
  11. package/dist/breakouts/index.d.ts +5 -0
  12. package/dist/breakouts/index.js +1 -1
  13. package/dist/breakouts/request.d.ts +22 -0
  14. package/dist/breakouts/utils.d.ts +15 -0
  15. package/dist/common/browser-detection.d.ts +9 -0
  16. package/dist/common/collection.d.ts +48 -0
  17. package/dist/common/config.d.ts +2 -0
  18. package/dist/common/errors/captcha-error.d.ts +15 -0
  19. package/dist/common/errors/intent-to-join.d.ts +16 -0
  20. package/dist/common/errors/join-forbidden-error.js +52 -0
  21. package/dist/common/errors/join-forbidden-error.js.map +1 -0
  22. package/dist/common/errors/join-meeting.d.ts +17 -0
  23. package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
  24. package/dist/common/errors/join-webinar-error.js.map +1 -0
  25. package/dist/common/errors/media.d.ts +15 -0
  26. package/dist/common/errors/multistream-not-supported-error.js +53 -0
  27. package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
  28. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  29. package/dist/common/errors/parameter.d.ts +15 -0
  30. package/dist/common/errors/password-error.d.ts +15 -0
  31. package/dist/common/errors/permission.d.ts +14 -0
  32. package/dist/common/errors/reclaim-host-role-error.js +149 -0
  33. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  34. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  35. package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
  36. package/dist/common/errors/reconnection-in-progress.js +33 -0
  37. package/dist/common/errors/reconnection-in-progress.js.map +1 -0
  38. package/dist/common/errors/reconnection.d.ts +15 -0
  39. package/dist/common/errors/stats.d.ts +15 -0
  40. package/dist/common/errors/webex-errors.d.ts +93 -0
  41. package/dist/common/errors/webex-meetings-error.d.ts +20 -0
  42. package/dist/common/events/events-scope.d.ts +17 -0
  43. package/dist/common/events/events.d.ts +12 -0
  44. package/dist/common/events/trigger-proxy.d.ts +2 -0
  45. package/dist/common/events/util.d.ts +2 -0
  46. package/dist/common/logs/logger-config.d.ts +2 -0
  47. package/dist/common/logs/logger-proxy.d.ts +2 -0
  48. package/dist/common/logs/request.d.ts +36 -0
  49. package/dist/common/queue.d.ts +34 -0
  50. package/dist/config.d.ts +72 -0
  51. package/dist/config.js +2 -1
  52. package/dist/config.js.map +1 -1
  53. package/dist/constants.d.ts +1088 -0
  54. package/dist/constants.js +68 -6
  55. package/dist/constants.js.map +1 -1
  56. package/dist/controls-options-manager/constants.d.ts +4 -0
  57. package/dist/controls-options-manager/enums.d.ts +15 -0
  58. package/dist/controls-options-manager/index.d.ts +136 -0
  59. package/dist/controls-options-manager/types.d.ts +43 -0
  60. package/dist/controls-options-manager/util.d.ts +1 -0
  61. package/dist/index.d.ts +7 -0
  62. package/dist/index.js +16 -11
  63. package/dist/index.js.map +1 -1
  64. package/dist/interceptors/index.d.ts +2 -0
  65. package/dist/interceptors/locusRetry.d.ts +27 -0
  66. package/dist/interpretation/collection.d.ts +5 -0
  67. package/dist/interpretation/index.d.ts +5 -0
  68. package/dist/interpretation/index.js +1 -1
  69. package/dist/interpretation/siLanguage.d.ts +5 -0
  70. package/dist/interpretation/siLanguage.js +1 -1
  71. package/dist/locus-info/controlsUtils.d.ts +2 -0
  72. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
  73. package/dist/locus-info/fullState.d.ts +2 -0
  74. package/dist/locus-info/hostUtils.d.ts +2 -0
  75. package/dist/locus-info/index.d.ts +322 -0
  76. package/dist/locus-info/index.js +14 -3
  77. package/dist/locus-info/index.js.map +1 -1
  78. package/dist/locus-info/infoUtils.d.ts +2 -0
  79. package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
  80. package/dist/locus-info/parser.d.ts +272 -0
  81. package/dist/locus-info/selfUtils.d.ts +2 -0
  82. package/dist/locus-info/selfUtils.js +35 -17
  83. package/dist/locus-info/selfUtils.js.map +1 -1
  84. package/dist/media/MediaConnectionAwaiter.js +1 -0
  85. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  86. package/dist/media/index.d.ts +34 -0
  87. package/dist/media/properties.d.ts +93 -0
  88. package/dist/media/properties.js +30 -16
  89. package/dist/media/properties.js.map +1 -1
  90. package/dist/media/util.d.ts +2 -0
  91. package/dist/mediaQualityMetrics/config.d.ts +241 -0
  92. package/dist/mediaQualityMetrics/config.js +502 -0
  93. package/dist/mediaQualityMetrics/config.js.map +1 -0
  94. package/dist/meeting/brbState.js +167 -0
  95. package/dist/meeting/brbState.js.map +1 -0
  96. package/dist/meeting/effectsState.js +260 -0
  97. package/dist/meeting/effectsState.js.map +1 -0
  98. package/dist/meeting/in-meeting-actions.d.ts +167 -0
  99. package/dist/meeting/in-meeting-actions.js +13 -1
  100. package/dist/meeting/in-meeting-actions.js.map +1 -1
  101. package/dist/meeting/index.d.ts +1825 -0
  102. package/dist/meeting/index.js +1331 -1051
  103. package/dist/meeting/index.js.map +1 -1
  104. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  105. package/dist/meeting/locusMediaRequest.js +11 -6
  106. package/dist/meeting/locusMediaRequest.js.map +1 -1
  107. package/dist/meeting/muteState.d.ts +178 -0
  108. package/dist/meeting/muteState.js +1 -6
  109. package/dist/meeting/muteState.js.map +1 -1
  110. package/dist/meeting/request.d.ts +295 -0
  111. package/dist/meeting/request.js +51 -29
  112. package/dist/meeting/request.js.map +1 -1
  113. package/dist/meeting/request.type.d.ts +11 -0
  114. package/dist/meeting/request.type.js.map +1 -1
  115. package/dist/meeting/state.d.ts +9 -0
  116. package/dist/meeting/util.d.ts +119 -0
  117. package/dist/meeting/util.js +103 -67
  118. package/dist/meeting/util.js.map +1 -1
  119. package/dist/meeting/voicea-meeting.d.ts +16 -0
  120. package/dist/meeting-info/collection.d.ts +20 -0
  121. package/dist/meeting-info/index.d.ts +69 -0
  122. package/dist/meeting-info/meeting-info-v2.d.ts +123 -0
  123. package/dist/meeting-info/meeting-info-v2.js +115 -45
  124. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  125. package/dist/meeting-info/request.d.ts +22 -0
  126. package/dist/meeting-info/util.d.ts +2 -0
  127. package/dist/meeting-info/utilv2.d.ts +2 -0
  128. package/dist/meeting-info/utilv2.js +6 -2
  129. package/dist/meeting-info/utilv2.js.map +1 -1
  130. package/dist/meetings/collection.d.ts +40 -0
  131. package/dist/meetings/index.d.ts +390 -0
  132. package/dist/meetings/index.js +107 -55
  133. package/dist/meetings/index.js.map +1 -1
  134. package/dist/meetings/meetings.types.d.ts +4 -0
  135. package/dist/meetings/meetings.types.js +2 -0
  136. package/dist/meetings/meetings.types.js.map +1 -1
  137. package/dist/meetings/request.d.ts +27 -0
  138. package/dist/meetings/util.d.ts +18 -0
  139. package/dist/meetings/util.js +1 -1
  140. package/dist/meetings/util.js.map +1 -1
  141. package/dist/member/index.d.ts +160 -0
  142. package/dist/member/index.js +9 -0
  143. package/dist/member/index.js.map +1 -1
  144. package/dist/member/member.types.js +17 -0
  145. package/dist/member/member.types.js.map +1 -0
  146. package/dist/member/types.d.ts +32 -0
  147. package/dist/member/types.js.map +1 -1
  148. package/dist/member/util.d.ts +2 -0
  149. package/dist/member/util.js +39 -28
  150. package/dist/member/util.js.map +1 -1
  151. package/dist/members/collection.d.ts +29 -0
  152. package/dist/members/index.d.ts +353 -0
  153. package/dist/members/request.d.ts +114 -0
  154. package/dist/members/types.d.ts +25 -0
  155. package/dist/members/util.d.ts +215 -0
  156. package/dist/members/util.js +4 -2
  157. package/dist/members/util.js.map +1 -1
  158. package/dist/metrics/config.js +276 -0
  159. package/dist/metrics/config.js.map +1 -0
  160. package/dist/metrics/constants.d.ts +70 -0
  161. package/dist/metrics/constants.js +6 -1
  162. package/dist/metrics/constants.js.map +1 -1
  163. package/dist/metrics/index.d.ts +45 -0
  164. package/dist/multistream/mediaRequestManager.d.ts +119 -0
  165. package/dist/multistream/receiveSlot.d.ts +68 -0
  166. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  167. package/dist/multistream/remoteMedia.d.ts +72 -0
  168. package/dist/multistream/remoteMedia.js +30 -15
  169. package/dist/multistream/remoteMedia.js.map +1 -1
  170. package/dist/multistream/remoteMediaGroup.d.ts +49 -0
  171. package/dist/multistream/remoteMediaManager.d.ts +300 -0
  172. package/dist/multistream/sendSlotManager.d.ts +69 -0
  173. package/dist/multistream/sendSlotManager.js +24 -0
  174. package/dist/multistream/sendSlotManager.js.map +1 -1
  175. package/dist/networkQualityMonitor/index.d.ts +70 -0
  176. package/dist/networkQualityMonitor/index.js +13 -19
  177. package/dist/networkQualityMonitor/index.js.map +1 -1
  178. package/dist/peer-connection-manager/index.js +671 -0
  179. package/dist/peer-connection-manager/index.js.map +1 -0
  180. package/dist/peer-connection-manager/util.js +109 -0
  181. package/dist/peer-connection-manager/util.js.map +1 -0
  182. package/dist/personal-meeting-room/index.d.ts +47 -0
  183. package/dist/personal-meeting-room/request.d.ts +14 -0
  184. package/dist/personal-meeting-room/util.d.ts +2 -0
  185. package/dist/reachability/clusterReachability.d.ts +109 -0
  186. package/dist/reachability/clusterReachability.js +12 -15
  187. package/dist/reachability/clusterReachability.js.map +1 -1
  188. package/dist/reachability/index.d.ts +105 -0
  189. package/dist/reachability/index.js +461 -136
  190. package/dist/reachability/index.js.map +1 -1
  191. package/dist/reachability/reachability.types.js +7 -0
  192. package/dist/reachability/reachability.types.js.map +1 -0
  193. package/dist/reachability/request.d.ts +39 -0
  194. package/dist/reachability/request.js +21 -8
  195. package/dist/reachability/request.js.map +1 -1
  196. package/dist/reachability/util.d.ts +8 -0
  197. package/dist/reactions/constants.d.ts +3 -0
  198. package/dist/reactions/reactions.d.ts +4 -0
  199. package/dist/reactions/reactions.type.d.ts +52 -0
  200. package/dist/reconnection-manager/index.d.ts +136 -0
  201. package/dist/recording-controller/enums.d.ts +7 -0
  202. package/dist/recording-controller/enums.js +8 -4
  203. package/dist/recording-controller/enums.js.map +1 -1
  204. package/dist/recording-controller/index.d.ts +207 -0
  205. package/dist/recording-controller/index.js +18 -9
  206. package/dist/recording-controller/index.js.map +1 -1
  207. package/dist/recording-controller/util.d.ts +14 -0
  208. package/dist/recording-controller/util.js +13 -9
  209. package/dist/recording-controller/util.js.map +1 -1
  210. package/dist/roap/collection.js +62 -0
  211. package/dist/roap/collection.js.map +1 -0
  212. package/dist/roap/handler.js +275 -0
  213. package/dist/roap/handler.js.map +1 -0
  214. package/dist/roap/index.d.ts +86 -0
  215. package/dist/roap/index.js +15 -15
  216. package/dist/roap/index.js.map +1 -1
  217. package/dist/roap/request.d.ts +39 -0
  218. package/dist/roap/request.js +45 -79
  219. package/dist/roap/request.js.map +1 -1
  220. package/dist/roap/state.js +126 -0
  221. package/dist/roap/state.js.map +1 -0
  222. package/dist/roap/turnDiscovery.d.ts +155 -0
  223. package/dist/roap/turnDiscovery.js +3 -6
  224. package/dist/roap/turnDiscovery.js.map +1 -1
  225. package/dist/roap/util.js +75 -0
  226. package/dist/roap/util.js.map +1 -0
  227. package/dist/rtcMetrics/constants.d.ts +4 -0
  228. package/dist/rtcMetrics/index.d.ts +61 -0
  229. package/dist/statsAnalyzer/global.d.ts +36 -0
  230. package/dist/statsAnalyzer/global.js +126 -0
  231. package/dist/statsAnalyzer/global.js.map +1 -0
  232. package/dist/statsAnalyzer/index.d.ts +217 -0
  233. package/dist/statsAnalyzer/index.js +1013 -0
  234. package/dist/statsAnalyzer/index.js.map +1 -0
  235. package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
  236. package/dist/statsAnalyzer/mqaUtil.js +179 -0
  237. package/dist/statsAnalyzer/mqaUtil.js.map +1 -0
  238. package/dist/transcription/index.d.ts +64 -0
  239. package/dist/types/annotation/index.d.ts +5 -0
  240. package/dist/types/common/errors/join-forbidden-error.d.ts +15 -0
  241. package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
  242. package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
  243. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  244. package/dist/types/config.d.ts +1 -0
  245. package/dist/types/constants.d.ts +53 -1
  246. package/dist/types/index.d.ts +3 -3
  247. package/dist/types/locus-info/index.d.ts +2 -1
  248. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  249. package/dist/types/meeting/brbState.d.ts +54 -0
  250. package/dist/types/meeting/in-meeting-actions.d.ts +12 -0
  251. package/dist/types/meeting/index.d.ts +64 -14
  252. package/dist/types/meeting/locusMediaRequest.d.ts +6 -3
  253. package/dist/types/meeting/request.d.ts +14 -3
  254. package/dist/types/meeting/request.type.d.ts +6 -0
  255. package/dist/types/meeting/util.d.ts +3 -3
  256. package/dist/types/meeting-info/meeting-info-v2.d.ts +30 -5
  257. package/dist/types/meetings/index.d.ts +20 -2
  258. package/dist/types/meetings/meetings.types.d.ts +8 -0
  259. package/dist/types/member/index.d.ts +1 -0
  260. package/dist/types/member/types.d.ts +7 -0
  261. package/dist/types/members/util.d.ts +2 -0
  262. package/dist/types/metrics/constants.d.ts +6 -1
  263. package/dist/types/multistream/sendSlotManager.d.ts +8 -1
  264. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  265. package/dist/types/reachability/index.d.ts +83 -36
  266. package/dist/types/reachability/reachability.types.d.ts +64 -0
  267. package/dist/types/reachability/request.d.ts +5 -1
  268. package/dist/types/recording-controller/enums.d.ts +5 -2
  269. package/dist/types/recording-controller/index.d.ts +1 -0
  270. package/dist/types/recording-controller/util.d.ts +2 -1
  271. package/dist/types/roap/request.d.ts +1 -13
  272. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  273. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  274. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  275. package/dist/webinar/collection.d.ts +16 -0
  276. package/dist/webinar/index.d.ts +5 -0
  277. package/dist/webinar/index.js +390 -7
  278. package/dist/webinar/index.js.map +1 -1
  279. package/package.json +23 -22
  280. package/src/annotation/index.ts +16 -0
  281. package/src/common/errors/join-forbidden-error.ts +26 -0
  282. package/src/common/errors/join-webinar-error.ts +24 -0
  283. package/src/common/errors/multistream-not-supported-error.ts +30 -0
  284. package/src/config.ts +1 -0
  285. package/src/constants.ts +61 -3
  286. package/src/index.ts +5 -3
  287. package/src/locus-info/index.ts +20 -3
  288. package/src/locus-info/selfUtils.ts +24 -6
  289. package/src/media/MediaConnectionAwaiter.ts +2 -0
  290. package/src/media/properties.ts +34 -13
  291. package/src/meeting/brbState.ts +169 -0
  292. package/src/meeting/in-meeting-actions.ts +25 -0
  293. package/src/meeting/index.ts +443 -87
  294. package/src/meeting/locusMediaRequest.ts +11 -8
  295. package/src/meeting/muteState.ts +1 -6
  296. package/src/meeting/request.ts +30 -12
  297. package/src/meeting/request.type.ts +7 -0
  298. package/src/meeting/util.ts +32 -13
  299. package/src/meeting-info/meeting-info-v2.ts +83 -12
  300. package/src/meeting-info/utilv2.ts +17 -3
  301. package/src/meetings/index.ts +79 -20
  302. package/src/meetings/meetings.types.ts +10 -0
  303. package/src/meetings/util.ts +2 -1
  304. package/src/member/index.ts +9 -0
  305. package/src/member/types.ts +8 -0
  306. package/src/member/util.ts +34 -24
  307. package/src/members/util.ts +1 -0
  308. package/src/metrics/constants.ts +6 -1
  309. package/src/multistream/remoteMedia.ts +28 -15
  310. package/src/multistream/sendSlotManager.ts +31 -0
  311. package/src/reachability/clusterReachability.ts +5 -15
  312. package/src/reachability/index.ts +311 -75
  313. package/src/reachability/reachability.types.ts +85 -0
  314. package/src/reachability/request.ts +55 -31
  315. package/src/recording-controller/enums.ts +5 -2
  316. package/src/recording-controller/index.ts +17 -4
  317. package/src/recording-controller/util.ts +20 -5
  318. package/src/roap/index.ts +14 -13
  319. package/src/roap/request.ts +30 -44
  320. package/src/roap/turnDiscovery.ts +2 -4
  321. package/src/webinar/index.ts +235 -9
  322. package/test/unit/spec/annotation/index.ts +46 -1
  323. package/test/unit/spec/locus-info/index.js +292 -60
  324. package/test/unit/spec/locus-info/selfConstant.js +7 -0
  325. package/test/unit/spec/locus-info/selfUtils.js +101 -1
  326. package/test/unit/spec/media/properties.ts +15 -0
  327. package/test/unit/spec/meeting/brbState.ts +114 -0
  328. package/test/unit/spec/meeting/in-meeting-actions.ts +15 -1
  329. package/test/unit/spec/meeting/index.js +851 -107
  330. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  331. package/test/unit/spec/meeting/muteState.js +0 -24
  332. package/test/unit/spec/meeting/request.js +3 -26
  333. package/test/unit/spec/meeting/utils.js +73 -28
  334. package/test/unit/spec/meeting-info/meetinginfov2.js +46 -4
  335. package/test/unit/spec/meeting-info/utilv2.js +26 -0
  336. package/test/unit/spec/meetings/index.js +159 -18
  337. package/test/unit/spec/meetings/utils.js +10 -0
  338. package/test/unit/spec/member/util.js +52 -11
  339. package/test/unit/spec/members/utils.js +95 -0
  340. package/test/unit/spec/multistream/remoteMedia.ts +11 -7
  341. package/test/unit/spec/reachability/clusterReachability.ts +7 -0
  342. package/test/unit/spec/reachability/index.ts +383 -9
  343. package/test/unit/spec/reachability/request.js +48 -12
  344. package/test/unit/spec/recording-controller/index.js +61 -5
  345. package/test/unit/spec/recording-controller/util.js +39 -3
  346. package/test/unit/spec/roap/index.ts +48 -1
  347. package/test/unit/spec/roap/request.ts +51 -109
  348. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  349. package/test/unit/spec/webinar/index.ts +504 -0
  350. package/dist/common/errors/webinar-registration-error.js.map +0 -1
  351. package/src/common/errors/webinar-registration-error.ts +0 -27
@@ -0,0 +1,272 @@
1
+ import SortedQueue from '../common/queue';
2
+ type LocusDeltaDto = {
3
+ url: string;
4
+ baseSequence: {
5
+ rangeStart: number;
6
+ rangeEnd: number;
7
+ entries: number[];
8
+ };
9
+ sequence: {
10
+ rangeStart: number;
11
+ rangeEnd: number;
12
+ entries: number[];
13
+ };
14
+ syncUrl: string;
15
+ };
16
+ /**
17
+ * Locus Delta Parser
18
+ * @private
19
+ * https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Delta-Events
20
+ */
21
+ export default class Parser {
22
+ status: 'IDLE' | 'PAUSED' | 'WORKING' | 'BLOCKED';
23
+ static loci: {
24
+ EQ: string;
25
+ GT: string;
26
+ LT: string;
27
+ DESYNC: string;
28
+ USE_INCOMING: string;
29
+ USE_CURRENT: string;
30
+ WAIT: string;
31
+ ERROR: string;
32
+ LOCUS_URL_CHANGED: string;
33
+ };
34
+ queue: SortedQueue<LocusDeltaDto>;
35
+ workingCopy: any;
36
+ syncTimer?: ReturnType<typeof setTimeout>;
37
+ /**
38
+ * @constructs Parser
39
+ */
40
+ constructor();
41
+ /**
42
+ * Returns a debug string representing a locus delta - useful for logging
43
+ *
44
+ * @param {LocusDeltaDto} locus Locus delta
45
+ * @returns {string}
46
+ */
47
+ static locus2string(locus: LocusDeltaDto): string;
48
+ /**
49
+ * Checks if two sequences overlap in time,
50
+ * the sequence with the higher minimum value is greater.
51
+ * Chooses sequence with most recent data.
52
+ * @param {Types~Locus} current
53
+ * @param {Types~Locus} incoming
54
+ * @returns {string} loci comparison state
55
+ */
56
+ static checkSequenceOverlap(current: any, incoming: any): any;
57
+ /**
58
+ * Checks if two sequences have unequal ranges.
59
+ * Chooses sequence with most larger range.
60
+ * @param {Types~Locus} current
61
+ * @param {Types~Locus} incoming
62
+ * @returns {object} loci comparison
63
+ */
64
+ static checkUnequalRanges(current: any, incoming: any): any;
65
+ /**
66
+ * Checks if either sequences has unique entries.
67
+ * Entries are considered unique if they do not overlap
68
+ * with other Loci sequences or range values.
69
+ * Chooses sequence with the unique entries.
70
+ * @param {Types~Locus} current
71
+ * @param {Types~Locus} incoming
72
+ * @returns {string} loci comparison state
73
+ */
74
+ static checkForUniqueEntries(current: any, incoming: any): any;
75
+ /**
76
+ * Checks both Locus Delta objects to see if they are
77
+ * out of sync with one another. If so sends a DESYNC
78
+ * request to the server.
79
+ * @param {Types~Locus} current
80
+ * @param {Types~Locus} incoming
81
+ * @returns {string} loci comparison state
82
+ */
83
+ static checkIfOutOfSync(current: any, incoming: any): any;
84
+ /**
85
+ * Compares two loci to determine which one contains the most recent state
86
+ * @instance
87
+ * @memberof Locus
88
+ * @param {Types~Locus} current
89
+ * @param {Types~Locus} incoming
90
+ * @returns {string} loci comparison state
91
+ */
92
+ static compare(current: any, incoming: any): string;
93
+ /**
94
+ * Compares two loci sequences (with delta params) and indicates what action
95
+ * to take.
96
+ * @instance
97
+ * @memberof Locus
98
+ * @param {Types~Locus} current
99
+ * @param {Types~Locus} incoming
100
+ * @private
101
+ * @returns {string} loci comparison state
102
+ */
103
+ private static compareDelta;
104
+ /**
105
+ * Compares Locus sequences - it should be called only for full Locus DTOs, not deltas
106
+ *
107
+ * @param {Types~Locus} current Current working copy
108
+ * @param {Types~Locus} incomingFullDto New Full Locus DTO
109
+ * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT
110
+ */
111
+ static compareFullDtoSequence(current: any, incomingFullDto: any): string;
112
+ /**
113
+ * Returns true if the incoming full locus DTO is newer than the current working copy
114
+ *
115
+ * @param {Types~Locus} incomingFullDto New Full Locus DTO
116
+ * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT
117
+ */
118
+ isNewFullLocus(incomingFullDto: any): boolean;
119
+ /**
120
+ * Compares Locus sequences
121
+ * @param {Types~Locus} current Current working copy
122
+ * @param {Types~Locus} incoming New Locus delta
123
+ * @returns {string}
124
+ */
125
+ static compareSequence(current: any, incoming: any): any;
126
+ /**
127
+ * Transates the result of a sequence comparison into an intended behavior
128
+ * @param {string} result
129
+ * @returns {string} Locus comparison action
130
+ */
131
+ static compareToAction(result: string): string;
132
+ /**
133
+ * Extracts a loci comparison from a string of data.
134
+ * @param {string} lociComparisonResult Comparison result with extra data
135
+ * @returns {string} Comparison of EQ, LT, GT, or DESYNC.
136
+ */
137
+ static extractComparisonState(lociComparisonResult: string): string;
138
+ /**
139
+ * @typedef {object} LociMetadata
140
+ * @property {number} start - Starting sequence number
141
+ * @property {number} end - Ending sequence number
142
+ * @property {number} first - First sequence number
143
+ * @property {number} last - Last sequence number
144
+ * @property {number} min - Minimum sequence number
145
+ * @property {number} max - Maximum sequence number
146
+ * @property {number} entries - Loci sequence entries
147
+ */
148
+ /**
149
+ * Metadata for Locus delta
150
+ * @param {Array.<number>} sequence Locus delta sequence
151
+ * @returns {LociMetadata} Locus Delta Metadata
152
+ */
153
+ static getMetaData(sequence: any): {
154
+ start: any;
155
+ end: any;
156
+ first: any;
157
+ last: any;
158
+ min: any;
159
+ max: any;
160
+ entries: any;
161
+ };
162
+ /**
163
+ * Compares two Locus delta objects and notes unique
164
+ * values contained within baseLoci.
165
+ * @param {LociMetadata} baseLoci
166
+ * @param {LociMetadata} otherLoci
167
+ * @returns {Array.<number>} List of unique sequences
168
+ */
169
+ static getUniqueSequences(baseLoci: any, otherLoci: any): number[];
170
+ /**
171
+ * Returns an array of numbers outside of a given range.
172
+ * @param {Array.<number>} list Array to filter
173
+ * @param {number} rangeStart Start of range
174
+ * @param {number} rangeEnd End of range
175
+ * @returns {Array.<number>} Array of numbers sorted ASC
176
+ */
177
+ static getNumbersOutOfRange(list: Array<number>, rangeStart: number, rangeEnd: number): number[];
178
+ /**
179
+ * Checks if newLoci or workingCopy is invalid.
180
+ * @param {Types~Locus} newLoci
181
+ * @returns {boolean}
182
+ */
183
+ isValidLocus(newLoci: any): boolean;
184
+ /**
185
+ * Determines if a paricular locus's sequence is empty
186
+ * @param {Types~Locus} locus
187
+ * @returns {bool}
188
+ */
189
+ static isSequenceEmpty(locus: any): boolean;
190
+ /**
191
+ * Determines if an object has basic
192
+ * structure of a locus object.
193
+ * @param {Types~Locus} loci
194
+ * @returns {boolean}
195
+ */
196
+ static isLoci(loci: any): boolean;
197
+ /**
198
+ * Processes next event in queue,
199
+ * if queue is empty sets status to idle.
200
+ * @returns {undefined}
201
+ */
202
+ nextEvent(): void;
203
+ /**
204
+ * Function handler for delta actions,
205
+ * is set by instance callee.
206
+ * @param {string} action Locus delta action
207
+ * @param {Types~Locus} locus Locus delta
208
+ * @returns {undefined}
209
+ */
210
+ onDeltaAction(action: string, locus: any): void;
211
+ /**
212
+ * Event handler for locus delta events
213
+ * @param {Types~Locus} loci Locus Delta
214
+ * @returns {undefined}
215
+ */
216
+ onDeltaEvent(loci: any): void;
217
+ /**
218
+ * Appends new data onto a string of existing data.
219
+ * @param {string} newData
220
+ * @param {string} oldData
221
+ * @returns {string}
222
+ */
223
+ static packComparisonResult(newData: string, oldData: string): string;
224
+ /**
225
+ * Pause locus processing
226
+ * @returns {undefined}
227
+ */
228
+ pause(): void;
229
+ /**
230
+ * Triggers a sync with Locus
231
+ *
232
+ * @param {string} reason used just for logging
233
+ * @returns {undefined}
234
+ */
235
+ private triggerSync;
236
+ /**
237
+ * Starts a timer with a random delay. When that timer expires we will do a sync.
238
+ *
239
+ * The main purpose of this timer is to handle a case when we get some out-of-order deltas,
240
+ * so we start waiting to receive the missing delta. If that delta never arrives, this timer
241
+ * will trigger a sync with Locus.
242
+ *
243
+ * @returns {undefined}
244
+ */
245
+ private startSyncTimer;
246
+ /**
247
+ * Stops the timer for triggering a sync
248
+ *
249
+ * @returns {undefined}
250
+ */
251
+ private stopSyncTimer;
252
+ /**
253
+ * Processes next locus delta in the queue,
254
+ * continues until the queue is empty
255
+ * or cleared.
256
+ * @returns {undefined}
257
+ */
258
+ processDeltaEvent(): void;
259
+ /**
260
+ * Resume from a paused state
261
+ * @returns {undefined}
262
+ */
263
+ resume(): void;
264
+ /**
265
+ * Gets related debug info for given error code
266
+ * @param {string} debugCode Debug code
267
+ * @param {string} comparison Locus comparison string
268
+ * @returns {object} Debug message
269
+ */
270
+ static getDebugMessage(debugCode: string, comparison: string): any;
271
+ }
272
+ export {};
@@ -0,0 +1,2 @@
1
+ declare const SelfUtils: any;
2
+ export default SelfUtils;
@@ -65,7 +65,8 @@ SelfUtils.parse = function (self, deviceId) {
65
65
  isSharingBlocked: SelfUtils.isSharingBlocked(self),
66
66
  breakoutSessions: SelfUtils.getBreakoutSessions(self),
67
67
  breakout: SelfUtils.getBreakout(self),
68
- interpretation: SelfUtils.getInterpretation(self)
68
+ interpretation: SelfUtils.getInterpretation(self),
69
+ brb: SelfUtils.getBrb(self)
69
70
  };
70
71
  }
71
72
  return null;
@@ -82,13 +83,17 @@ SelfUtils.getInterpretation = function (self) {
82
83
  var _self$controls3;
83
84
  return self === null || self === void 0 ? void 0 : (_self$controls3 = self.controls) === null || _self$controls3 === void 0 ? void 0 : _self$controls3.interpretation;
84
85
  };
85
- SelfUtils.getLayout = function (self) {
86
+ SelfUtils.getBrb = function (self) {
86
87
  var _self$controls4;
87
- return (0, _isArray.default)(self === null || self === void 0 ? void 0 : (_self$controls4 = self.controls) === null || _self$controls4 === void 0 ? void 0 : _self$controls4.layouts) ? self.controls.layouts[0].type : undefined;
88
+ return self === null || self === void 0 ? void 0 : (_self$controls4 = self.controls) === null || _self$controls4 === void 0 ? void 0 : _self$controls4.brb;
89
+ };
90
+ SelfUtils.getLayout = function (self) {
91
+ var _self$controls5;
92
+ return (0, _isArray.default)(self === null || self === void 0 ? void 0 : (_self$controls5 = self.controls) === null || _self$controls5 === void 0 ? void 0 : _self$controls5.layouts) ? self.controls.layouts[0].type : undefined;
88
93
  };
89
94
  SelfUtils.getRoles = function (self) {
90
- var _self$controls5, _self$controls5$role;
91
- return ((self === null || self === void 0 ? void 0 : (_self$controls5 = self.controls) === null || _self$controls5 === void 0 ? void 0 : (_self$controls5$role = _self$controls5.role) === null || _self$controls5$role === void 0 ? void 0 : _self$controls5$role.roles) || []).reduce(function (roles, role) {
95
+ var _self$controls6, _self$controls6$role;
96
+ return ((self === null || self === void 0 ? void 0 : (_self$controls6 = self.controls) === null || _self$controls6 === void 0 ? void 0 : (_self$controls6$role = _self$controls6.role) === null || _self$controls6$role === void 0 ? void 0 : _self$controls6$role.roles) || []).reduce(function (roles, role) {
92
97
  if (role.hasRole) {
93
98
  roles.push(role.type);
94
99
  }
@@ -105,7 +110,7 @@ SelfUtils.getSelves = function (oldSelf, newSelf, deviceId) {
105
110
  var previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);
106
111
  var current = newSelf && SelfUtils.parse(newSelf, deviceId);
107
112
  var updates = {};
108
- updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);
113
+ updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(previous, current);
109
114
  updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);
110
115
  updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);
111
116
  updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);
@@ -124,6 +129,7 @@ SelfUtils.getSelves = function (oldSelf, newSelf, deviceId) {
124
129
  updates.isSharingBlockedChanged = (previous === null || previous === void 0 ? void 0 : previous.isSharingBlocked) !== current.isSharingBlocked;
125
130
  updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);
126
131
  updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);
132
+ updates.brbChanged = SelfUtils.brbChanged(previous, current);
127
133
  return {
128
134
  previous: previous,
129
135
  current: current,
@@ -156,6 +162,9 @@ SelfUtils.breakoutsChanged = function (previous, current) {
156
162
  SelfUtils.interpretationChanged = function (previous, current) {
157
163
  return !(0, _lodash.isEqual)(previous === null || previous === void 0 ? void 0 : previous.interpretation, current === null || current === void 0 ? void 0 : current.interpretation) && !!(current !== null && current !== void 0 && current.interpretation);
158
164
  };
165
+ SelfUtils.brbChanged = function (previous, current) {
166
+ return !(0, _lodash.isEqual)(previous === null || previous === void 0 ? void 0 : previous.brb, current === null || current === void 0 ? void 0 : current.brb) && (current === null || current === void 0 ? void 0 : current.brb) !== undefined;
167
+ };
159
168
  SelfUtils.isMediaInactive = function (previous, current) {
160
169
  if (previous && previous.joinedWith && previous.joinedWith.mediaSessions && current && current.joinedWith && current.joinedWith.mediaSessions) {
161
170
  var previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);
@@ -222,14 +231,14 @@ SelfUtils.getRemoteMuted = function (self) {
222
231
  return self.controls.audio.muted;
223
232
  };
224
233
  SelfUtils.getLocalAudioUnmuteRequested = function (self) {
225
- var _self$controls6, _self$controls6$audio;
226
- return !!(self !== null && self !== void 0 && (_self$controls6 = self.controls) !== null && _self$controls6 !== void 0 && (_self$controls6$audio = _self$controls6.audio) !== null && _self$controls6$audio !== void 0 && _self$controls6$audio.requestedToUnmute);
234
+ var _self$controls7, _self$controls7$audio;
235
+ return !!(self !== null && self !== void 0 && (_self$controls7 = self.controls) !== null && _self$controls7 !== void 0 && (_self$controls7$audio = _self$controls7.audio) !== null && _self$controls7$audio !== void 0 && _self$controls7$audio.requestedToUnmute);
227
236
  };
228
237
 
229
238
  // requestedToUnmute timestamp
230
239
  SelfUtils.getLocalAudioUnmuteRequestedTimeStamp = function (self) {
231
- var _self$controls7, _self$controls7$audio;
232
- return Date.parse(self === null || self === void 0 ? void 0 : (_self$controls7 = self.controls) === null || _self$controls7 === void 0 ? void 0 : (_self$controls7$audio = _self$controls7.audio) === null || _self$controls7$audio === void 0 ? void 0 : _self$controls7$audio.lastModifiedRequestedToUnmute) || 0;
240
+ var _self$controls8, _self$controls8$audio;
241
+ return Date.parse(self === null || self === void 0 ? void 0 : (_self$controls8 = self.controls) === null || _self$controls8 === void 0 ? void 0 : (_self$controls8$audio = _self$controls8.audio) === null || _self$controls8$audio === void 0 ? void 0 : _self$controls8$audio.lastModifiedRequestedToUnmute) || 0;
233
242
  };
234
243
  SelfUtils.getUnmuteAllowed = function (self) {
235
244
  if (!self || !self.controls || !self.controls.audio) {
@@ -238,8 +247,8 @@ SelfUtils.getUnmuteAllowed = function (self) {
238
247
  return !self.controls.audio.disallowUnmute;
239
248
  };
240
249
  SelfUtils.getLocalAudioUnmuteRequired = function (self) {
241
- var _self$controls8, _self$controls8$audio;
242
- return !!(self !== null && self !== void 0 && (_self$controls8 = self.controls) !== null && _self$controls8 !== void 0 && (_self$controls8$audio = _self$controls8.audio) !== null && _self$controls8$audio !== void 0 && _self$controls8$audio.localAudioUnmuteRequired);
250
+ var _self$controls9, _self$controls9$audio;
251
+ return !!(self !== null && self !== void 0 && (_self$controls9 = self.controls) !== null && _self$controls9 !== void 0 && (_self$controls9$audio = _self$controls9.audio) !== null && _self$controls9$audio !== void 0 && _self$controls9$audio.localAudioUnmuteRequired);
243
252
  };
244
253
  SelfUtils.getStatus = function (status) {
245
254
  return {
@@ -279,15 +288,19 @@ SelfUtils.isLocusUserAdmitted = function (check) {
279
288
  };
280
289
 
281
290
  /**
282
- * @param {Object} self
291
+ * @param {Object} oldSelf
292
+ * @param {Object} changedSelf
283
293
  * @returns {Boolean}
284
294
  * @throws {Error} when self is undefined
285
295
  */
286
- SelfUtils.isUserUnadmitted = function (self) {
287
- if (!self) {
288
- throw new _parameter.default('self must be defined to determine if self is unadmitted as guest.');
296
+ SelfUtils.isUserUnadmitted = function (oldSelf, changedSelf) {
297
+ if (!changedSelf) {
298
+ throw new _parameter.default('changedSelf must be defined to determine if self is unadmitted as guest.');
299
+ }
300
+ if (SelfUtils.isLocusUserUnadmitted(oldSelf)) {
301
+ return false;
289
302
  }
290
- return SelfUtils.isLocusUserUnadmitted(self);
303
+ return SelfUtils.isLocusUserUnadmitted(changedSelf);
291
304
  };
292
305
  SelfUtils.moderatorChanged = function (oldSelf, changedSelf) {
293
306
  if (!oldSelf) {
@@ -365,6 +378,11 @@ SelfUtils.mutedByOthersChanged = function (oldSelf, changedSelf) {
365
378
  // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join
366
379
  return false;
367
380
  }
381
+
382
+ // there is no need to trigger user update if no one muted user
383
+ if (changedSelf.selfIdentity === changedSelf.modifiedBy) {
384
+ return false;
385
+ }
368
386
  return changedSelf.remoteMuted !== null && (oldSelf.remoteMuted !== changedSelf.remoteMuted || changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed);
369
387
  };
370
388
  SelfUtils.localAudioUnmuteRequestedByServer = function () {
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_constants","_parameter","_interopRequireDefault","SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","_joinedWith$intent","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteVideoMuted","getRemoteVideoMuted","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequestedTimeStamp","getLocalAudioUnmuteRequestedTimeStamp","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakoutSessions","breakout","getBreakout","interpretation","getInterpretation","_self$controls","_self$controls$breako","controls","sessions","_self$controls2","_self$controls3","_self$controls4","_isArray","default","layouts","undefined","_self$controls5","_self$controls5$role","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isRolesChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","interpretationChanged","isJoined","_JOINED_","isEqual","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","_self$controls6","_self$controls6$audio","requestedToUnmute","_self$controls7","_self$controls7$audio","Date","lastModifiedRequestedToUnmute","disallowUnmute","_self$controls8","_self$controls8$audio","audioStatus","videoStatus","slides","videoSlidesStatus","arguments","length","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","_check$joinedWith","_check$joinedWith$int","isLocusUserAdmitted","_check$joinedWith2","_check$joinedWith2$in","ParameterError","_oldSelf$joinedWith","_oldSelf$joinedWith$i","_changedSelf$joinedWi","_changedSelf$joinedWi2","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO","getReplacedBreakoutMoveId","joinedDevice","replaces","_joinedDevice$replace","breakoutMoveId","_default","exports"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils: any = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequestedTimeStamp: SelfUtils.getLocalAudioUnmuteRequestedTimeStamp(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakoutSessions(self),\n breakout: SelfUtils.getBreakout(self),\n interpretation: SelfUtils.getInterpretation(self),\n };\n }\n\n return null;\n};\n\nSelfUtils.getBreakoutSessions = (self) => self?.controls?.breakout?.sessions;\nSelfUtils.getBreakout = (self) => self?.controls?.breakout;\nSelfUtils.getInterpretation = (self) => self?.controls?.interpretation;\n\nSelfUtils.getLayout = (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;\n\nSelfUtils.getRoles = (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isRolesChanged = SelfUtils.isRolesChanged(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\nSelfUtils.isJoined = (self: any) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the Meeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout;\n\nSelfUtils.breakoutsChanged = (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout;\n\nSelfUtils.interpretationChanged = (previous, current) =>\n !isEqual(previous?.interpretation, current?.interpretation) && !!current?.interpretation;\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self: any) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote video mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteVideoMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.video) {\n return null;\n }\n\n return self.controls.video.muted;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\n// requestedToUnmute timestamp\nSelfUtils.getLocalAudioUnmuteRequestedTimeStamp = (self) =>\n Date.parse(self?.controls?.audio?.lastModifiedRequestedToUnmute) || 0;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n});\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} self\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (self: object) => {\n if (!self) {\n throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(self);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n/**\n * determine whether the roles of self is changed or not\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.isRolesChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n // no new self means no change\n return false;\n }\n\n return !isEqual(oldSelf?.roles, changedSelf?.roles);\n};\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.videoMutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was video muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteVideoMuted === null) {\n if (changedSelf.remoteVideoMuted) {\n return true; // this happens when host disables \"Allow start video\"\n }\n\n // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join\n return false;\n }\n\n return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return (\n changedSelf.localAudioUnmuteRequested &&\n changedSelf.localAudioUnmuteRequestedTimeStamp > oldSelf.localAudioUnmuteRequestedTimeStamp\n );\n};\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n};\n\nSelfUtils.getReplacedBreakoutMoveId = (self: any, deviceId: string) => {\n if (self && Array.isArray(self.devices)) {\n const joinedDevice = self.devices.find((device) => deviceId === device.url);\n if (Array.isArray(joinedDevice?.replaces)) {\n return joinedDevice.replaces[0]?.breakoutMoveId;\n }\n }\n\n return null;\n};\nexport default SelfUtils;\n"],"mappings":";;;;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAcA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AAjBA;;AAmBA,IAAMI,SAAc,GAAG,CAAC,CAAC;AACzB,IAAMC,gBAAgB,GAAG,aAAa;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACAD,SAAS,CAACE,KAAK,GAAG,UAACC,IAAS,EAAEC,QAAgB,EAAK;EACjD,IAAID,IAAI,EAAE;IAAA,IAAAE,kBAAA;IACR,IAAMC,UAAU,GAAGH,IAAI,CAACI,OAAO,CAACC,IAAI,CAAC,UAACC,MAAM;MAAA,OAAKL,QAAQ,KAAKK,MAAM,CAACC,GAAG;IAAA,EAAC;IACzE,IAAMC,WAAW,GAAGR,IAAI,CAACI,OAAO,CAACK,MAAM,CAAC,UAACH,MAAM;MAAA,OAAKR,gBAAgB,KAAKQ,MAAM,CAACI,UAAU;IAAA,EAAC;IAE3F,OAAO;MACLC,gBAAgB,EAAEd,SAAS,CAACe,mBAAmB,CAACZ,IAAI,CAAC;MACrDa,WAAW,EAAEhB,SAAS,CAACiB,cAAc,CAACd,IAAI,CAAC;MAC3Ce,aAAa,EAAElB,SAAS,CAACmB,gBAAgB,CAAChB,IAAI,CAAC;MAC/CiB,yBAAyB,EAAEpB,SAAS,CAACqB,4BAA4B,CAAClB,IAAI,CAAC;MACvEmB,kCAAkC,EAAEtB,SAAS,CAACuB,qCAAqC,CAACpB,IAAI,CAAC;MACzFqB,wBAAwB,EAAExB,SAAS,CAACyB,2BAA2B,CAACtB,IAAI,CAAC;MACrEuB,YAAY,EAAE1B,SAAS,CAAC2B,eAAe,CAACxB,IAAI,CAAC;MAC7CyB,UAAU,EAAE5B,SAAS,CAAC6B,aAAa,CAAC1B,IAAI,CAAC;MACzC2B,KAAK,EAAE3B,IAAI,CAAC2B,KAAK;MACjBC,SAAS,EAAE5B,IAAI,CAAC4B,SAAS;MACzB;MACAC,WAAW,EAAEhC,SAAS,CAACiC,SAAS,CAAC9B,IAAI,CAAC+B,MAAM,CAAC;MAC7C;MACA;MACAC,KAAK,EAAEhC,IAAI,CAACgC,KAAK;MACjB;MACA;MACA7B,UAAU,EAAVA,UAAU;MACVK,WAAW,EAAXA,WAAW;MACX;MACAyB,kBAAkB,EAAEpC,SAAS,CAACqC,cAAc,CAAC/B,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEgC,aAAa,CAAC;MACvEC,OAAO,EAAEpC,IAAI,CAACqC,SAAS;MAAE;MACzBC,MAAM,EAAEtC,IAAI,CAACuC,EAAE;MACfC,YAAY,EAAE3C,SAAS,CAAC4C,eAAe,CAACzC,IAAI,CAAC;MAC7C0C,OAAO,EAAE1C,IAAI,CAACO,GAAG;MACjBoC,OAAO,EAAE3C,IAAI,CAAC2C,OAAO;MACrBC,KAAK,EAAE/C,SAAS,CAACgD,QAAQ,CAAC7C,IAAI,CAAC;MAC/B8C,gBAAgB,EAAE9C,IAAI,CAACgC,KAAK,KAAKe,iBAAM,IAAI,CAAA5C,UAAU,aAAVA,UAAU,wBAAAD,kBAAA,GAAVC,UAAU,CAAE6C,MAAM,cAAA9C,kBAAA,uBAAlBA,kBAAA,CAAoB+C,IAAI,MAAKC,iBAAM;MAC9EC,MAAM,EAAEtD,SAAS,CAACuD,SAAS,CAACpD,IAAI,CAAC;MACjCqD,4BAA4B,EAAExD,SAAS,CAACwD,4BAA4B,CAACrD,IAAI,CAAC;MAC1EsD,gBAAgB,EAAEzD,SAAS,CAACyD,gBAAgB,CAACtD,IAAI,CAAC;MAClDuD,gBAAgB,EAAE1D,SAAS,CAAC2D,mBAAmB,CAACxD,IAAI,CAAC;MACrDyD,QAAQ,EAAE5D,SAAS,CAAC6D,WAAW,CAAC1D,IAAI,CAAC;MACrC2D,cAAc,EAAE9D,SAAS,CAAC+D,iBAAiB,CAAC5D,IAAI;IAClD,CAAC;EACH;EAEA,OAAO,IAAI;AACb,CAAC;AAEDH,SAAS,CAAC2D,mBAAmB,GAAG,UAACxD,IAAI;EAAA,IAAA6D,cAAA,EAAAC,qBAAA;EAAA,OAAK9D,IAAI,aAAJA,IAAI,wBAAA6D,cAAA,GAAJ7D,IAAI,CAAE+D,QAAQ,cAAAF,cAAA,wBAAAC,qBAAA,GAAdD,cAAA,CAAgBJ,QAAQ,cAAAK,qBAAA,uBAAxBA,qBAAA,CAA0BE,QAAQ;AAAA;AAC5EnE,SAAS,CAAC6D,WAAW,GAAG,UAAC1D,IAAI;EAAA,IAAAiE,eAAA;EAAA,OAAKjE,IAAI,aAAJA,IAAI,wBAAAiE,eAAA,GAAJjE,IAAI,CAAE+D,QAAQ,cAAAE,eAAA,uBAAdA,eAAA,CAAgBR,QAAQ;AAAA;AAC1D5D,SAAS,CAAC+D,iBAAiB,GAAG,UAAC5D,IAAI;EAAA,IAAAkE,eAAA;EAAA,OAAKlE,IAAI,aAAJA,IAAI,wBAAAkE,eAAA,GAAJlE,IAAI,CAAE+D,QAAQ,cAAAG,eAAA,uBAAdA,eAAA,CAAgBP,cAAc;AAAA;AAEtE9D,SAAS,CAACuD,SAAS,GAAG,UAACpD,IAAI;EAAA,IAAAmE,eAAA;EAAA,OACzB,IAAAC,QAAA,CAAAC,OAAA,EAAcrE,IAAI,aAAJA,IAAI,wBAAAmE,eAAA,GAAJnE,IAAI,CAAE+D,QAAQ,cAAAI,eAAA,uBAAdA,eAAA,CAAgBG,OAAO,CAAC,GAAGtE,IAAI,CAAC+D,QAAQ,CAACO,OAAO,CAAC,CAAC,CAAC,CAACrB,IAAI,GAAGsB,SAAS;AAAA;AAEpF1E,SAAS,CAACgD,QAAQ,GAAG,UAAC7C,IAAI;EAAA,IAAAwE,eAAA,EAAAC,oBAAA;EAAA,OACxB,CAAC,CAAAzE,IAAI,aAAJA,IAAI,wBAAAwE,eAAA,GAAJxE,IAAI,CAAE+D,QAAQ,cAAAS,eAAA,wBAAAC,oBAAA,GAAdD,eAAA,CAAgBE,IAAI,cAAAD,oBAAA,uBAApBA,oBAAA,CAAsB7B,KAAK,KAAI,EAAE,EAAE+B,MAAM,CAAC,UAAC/B,KAAK,EAAE8B,IAAI,EAAK;IAC1D,IAAIA,IAAI,CAACE,OAAO,EAAE;MAChBhC,KAAK,CAACiC,IAAI,CAACH,IAAI,CAACzB,IAAI,CAAC;IACvB;IAEA,OAAOL,KAAK;EACd,CAAC,EAAE,EAAE,CAAC;AAAA;AAER/C,SAAS,CAACwD,4BAA4B,GAAG,UAACrD,IAAI;EAAA,OAAK,CAAC,EAACA,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEqD,4BAA4B;AAAA;AAEvFxD,SAAS,CAACyD,gBAAgB,GAAG,UAACtD,IAAI;EAAA,OAAK,CAAC,EAACA,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEsD,gBAAgB;AAAA;AAE/DzD,SAAS,CAACiF,SAAS,GAAG,UAACC,OAAO,EAAEC,OAAO,EAAE/E,QAAQ,EAAK;EACpD,IAAMgF,QAAQ,GAAGF,OAAO,IAAIlF,SAAS,CAACE,KAAK,CAACgF,OAAO,EAAE9E,QAAQ,CAAC;EAC9D,IAAMiF,OAAO,GAAGF,OAAO,IAAInF,SAAS,CAACE,KAAK,CAACiF,OAAO,EAAE/E,QAAQ,CAAC;EAC7D,IAAMkF,OAAY,GAAG,CAAC,CAAC;EAEvBA,OAAO,CAACrC,gBAAgB,GAAGjD,SAAS,CAACiD,gBAAgB,CAACoC,OAAO,CAAC;EAC9DC,OAAO,CAACC,cAAc,GAAGvF,SAAS,CAACuF,cAAc,CAACH,QAAQ,EAAEC,OAAO,CAAC;EACpEC,OAAO,CAACE,2BAA2B,GAAGxF,SAAS,CAACyF,yBAAyB,CAACL,QAAQ,EAAEC,OAAO,CAAC;EAC5FC,OAAO,CAACI,sBAAsB,GAAG1F,SAAS,CAAC2F,oBAAoB,CAACP,QAAQ,EAAEC,OAAO,CAAC;EAClFC,OAAO,CAACM,iCAAiC,GAAG5F,SAAS,CAAC4F,iCAAiC,CACrFR,QAAQ,EACRC,OACF,CAAC;EACDC,OAAO,CAACO,gCAAgC,GAAG7F,SAAS,CAAC6F,gCAAgC,CACnFT,QAAQ,EACRC,OACF,CAAC;EACDC,OAAO,CAACQ,gBAAgB,GAAG9F,SAAS,CAAC8F,gBAAgB,CAACV,QAAQ,EAAEC,OAAO,CAAC;EACxEC,OAAO,CAACS,cAAc,GAAG/F,SAAS,CAAC+F,cAAc,CAACX,QAAQ,EAAEC,OAAO,CAAC;EACpEC,OAAO,CAACU,yBAAyB,GAAGhG,SAAS,CAACiG,0BAA0B,CAACb,QAAQ,EAAEC,OAAO,CAAC;EAC3FC,OAAO,CAACY,eAAe,GAAGlG,SAAS,CAACmG,iBAAiB,CAACf,QAAQ,EAAEC,OAAO,CAAC;EACxEC,OAAO,CAACc,aAAa,GAAGpG,SAAS,CAACoG,aAAa,CAAChB,QAAQ,EAAEC,OAAO,CAAC;EAElEC,OAAO,CAACe,eAAe,GAAGrG,SAAS,CAACqG,eAAe,CAACjB,QAAQ,EAAEC,OAAO,CAAC;EACtEC,OAAO,CAACgB,gBAAgB,GACtB,CAAAlB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEhD,kBAAkB,CAACmE,KAAK,MAAKlB,OAAO,CAACjD,kBAAkB,CAACmE,KAAK;EACzEjB,OAAO,CAACkB,gBAAgB,GACtB,CAAApB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEhD,kBAAkB,CAACqE,KAAK,MAAKpB,OAAO,CAACjD,kBAAkB,CAACqE,KAAK;EACzEnB,OAAO,CAACoB,gBAAgB,GACtB,CAAAtB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEhD,kBAAkB,CAACuE,KAAK,MAAKtB,OAAO,CAACjD,kBAAkB,CAACuE,KAAK;EAEzErB,OAAO,CAACsB,mCAAmC,GACzC,CAAAxB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE5B,4BAA4B,MAAK6B,OAAO,CAAC7B,4BAA4B;EACjF8B,OAAO,CAACuB,uBAAuB,GAAG,CAAAzB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE3B,gBAAgB,MAAK4B,OAAO,CAAC5B,gBAAgB;EACzF6B,OAAO,CAACwB,gBAAgB,GAAG9G,SAAS,CAAC8G,gBAAgB,CAAC1B,QAAQ,EAAEC,OAAO,CAAC;EACxEC,OAAO,CAACyB,qBAAqB,GAAG/G,SAAS,CAAC+G,qBAAqB,CAAC3B,QAAQ,EAAEC,OAAO,CAAC;EAElF,OAAO;IACLD,QAAQ,EAARA,QAAQ;IACRC,OAAO,EAAPA,OAAO;IACPC,OAAO,EAAPA;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACAtF,SAAS,CAACgH,QAAQ,GAAG,UAAC7G,IAAS;EAAA,OAAK,CAAAA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEgC,KAAK,MAAK8E,mBAAQ;AAAA;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACAjH,SAAS,CAACoG,aAAa,GAAG,UAAChB,QAAa,EAAEC,OAAY;EAAA,OACpD,CAAAA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE/B,MAAM,KAAI,CAAA8B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE9B,MAAM,OAAK+B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE/B,MAAM;AAAA;AAEzDtD,SAAS,CAAC8G,gBAAgB,GAAG,UAAC1B,QAAQ,EAAEC,OAAO;EAAA,OAC7C,CAAC,IAAA6B,eAAO,EAAC9B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE1B,gBAAgB,EAAE2B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE3B,gBAAgB,CAAC,IAAI,CAAC,EAAC2B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEzB,QAAQ;AAAA;AAExF5D,SAAS,CAAC+G,qBAAqB,GAAG,UAAC3B,QAAQ,EAAEC,OAAO;EAAA,OAClD,CAAC,IAAA6B,eAAO,EAAC9B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEtB,cAAc,EAAEuB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEvB,cAAc,CAAC,IAAI,CAAC,EAACuB,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEvB,cAAc;AAAA;AAE1F9D,SAAS,CAACqG,eAAe,GAAG,UAACjB,QAAQ,EAAEC,OAAO,EAAK;EACjD,IACED,QAAQ,IACRA,QAAQ,CAAC9E,UAAU,IACnB8E,QAAQ,CAAC9E,UAAU,CAACgC,aAAa,IACjC+C,OAAO,IACPA,OAAO,CAAC/E,UAAU,IAClB+E,OAAO,CAAC/E,UAAU,CAACgC,aAAa,EAChC;IACA,IAAM6E,mBAAmB,GAAGnH,SAAS,CAACqC,cAAc,CAAC+C,QAAQ,CAAC9E,UAAU,CAACgC,aAAa,CAAC;IACvF,IAAMF,kBAAkB,GAAGpC,SAAS,CAACqC,cAAc,CAACgD,OAAO,CAAC/E,UAAU,CAACgC,aAAa,CAAC;IAErF,IACE6E,mBAAmB,CAACZ,KAAK,IACzBnE,kBAAkB,CAACmE,KAAK,IACxBY,mBAAmB,CAACZ,KAAK,CAACpE,KAAK,KAAKiF,sBAAW,CAACC,QAAQ,IACxDjF,kBAAkB,CAACmE,KAAK,CAACpE,KAAK,KAAKiF,sBAAW,CAACC,QAAQ,IACvDjF,kBAAkB,CAACmE,KAAK,CAACe,SAAS,KAAKF,sBAAW,CAACC,QAAQ,EAC3D;MACA,OAAO,IAAI;IACb;IAEA,IACEF,mBAAmB,CAACV,KAAK,IACzBrE,kBAAkB,CAACqE,KAAK,IACxBU,mBAAmB,CAACV,KAAK,CAACtE,KAAK,KAAKiF,sBAAW,CAACC,QAAQ,IACxDjF,kBAAkB,CAACqE,KAAK,CAACtE,KAAK,KAAKiF,sBAAW,CAACC,QAAQ,IACvDjF,kBAAkB,CAACqE,KAAK,CAACa,SAAS,KAAKF,sBAAW,CAACC,QAAQ,EAC3D;MACA,OAAO,IAAI;IACb;IAEA,IACEF,mBAAmB,CAACR,KAAK,IACzBvE,kBAAkB,CAACuE,KAAK,IACxBQ,mBAAmB,CAACR,KAAK,CAACxE,KAAK,KAAKiF,sBAAW,CAACC,QAAQ,IACxDjF,kBAAkB,CAACuE,KAAK,CAACxE,KAAK,KAAKiF,sBAAW,CAACC,QAAQ,IACvDjF,kBAAkB,CAACuE,KAAK,CAACW,SAAS,KAAKF,sBAAW,CAACC,QAAQ,EAC3D;MACA,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd;EAEA,OAAO,KAAK;AACd,CAAC;AAEDrH,SAAS,CAAC2B,eAAe,GAAG,UAACxB,IAAI,EAAK;EACpC,IACE,CAACA,IAAI,IACL,CAACA,IAAI,CAAC+D,QAAQ,IACd,CAAC/D,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,IACpB,CAACpG,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,CAACgB,IAAI,IACzB,CAACpH,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,CAACgB,IAAI,CAAC7F,YAAY,EACtC;IACA,OAAO,IAAI;EACb;EAEA,OAAOvB,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,CAACgB,IAAI,CAAC7F,YAAY;AAC9C,CAAC;AAED1B,SAAS,CAAC6B,aAAa,GAAG,UAAC1B,IAAI,EAAK;EAClC,IACE,CAACA,IAAI,IACL,CAACA,IAAI,CAAC+D,QAAQ,IACd,CAAC/D,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,IACpB,CAACpG,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,CAACgB,IAAI,IACzB,CAACpH,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,CAACgB,IAAI,CAAC3F,UAAU,EACpC;IACA,OAAO,IAAI;EACb;EAEA,OAAOzB,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,CAACgB,IAAI,CAAC3F,UAAU;AAC5C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA5B,SAAS,CAAC4C,eAAe,GAAG,UAACzC,IAAS,EAAK;EACzC,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACqH,MAAM,EAAE;IACzB,OAAO,IAAI;EACb;EAEA,OAAOrH,IAAI,CAACqH,MAAM,CAAC9E,EAAE;AACvB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA1C,SAAS,CAACe,mBAAmB,GAAG,UAACZ,IAAS,EAAK;EAC7C,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAAC+D,QAAQ,IAAI,CAAC/D,IAAI,CAAC+D,QAAQ,CAACuC,KAAK,EAAE;IACnD,OAAO,IAAI;EACb;EAEA,OAAOtG,IAAI,CAAC+D,QAAQ,CAACuC,KAAK,CAACgB,KAAK;AAClC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACAzH,SAAS,CAACiB,cAAc,GAAG,UAACd,IAAS,EAAK;EACxC,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAAC+D,QAAQ,IAAI,CAAC/D,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,EAAE;IACnD,OAAO,IAAI;EACb;EAEA,OAAOpG,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,CAACkB,KAAK;AAClC,CAAC;AAEDzH,SAAS,CAACqB,4BAA4B,GAAG,UAAClB,IAAI;EAAA,IAAAuH,eAAA,EAAAC,qBAAA;EAAA,OAAK,CAAC,EAACxH,IAAI,aAAJA,IAAI,gBAAAuH,eAAA,GAAJvH,IAAI,CAAE+D,QAAQ,cAAAwD,eAAA,gBAAAC,qBAAA,GAAdD,eAAA,CAAgBnB,KAAK,cAAAoB,qBAAA,eAArBA,qBAAA,CAAuBC,iBAAiB;AAAA;;AAE7F;AACA5H,SAAS,CAACuB,qCAAqC,GAAG,UAACpB,IAAI;EAAA,IAAA0H,eAAA,EAAAC,qBAAA;EAAA,OACrDC,IAAI,CAAC7H,KAAK,CAACC,IAAI,aAAJA,IAAI,wBAAA0H,eAAA,GAAJ1H,IAAI,CAAE+D,QAAQ,cAAA2D,eAAA,wBAAAC,qBAAA,GAAdD,eAAA,CAAgBtB,KAAK,cAAAuB,qBAAA,uBAArBA,qBAAA,CAAuBE,6BAA6B,CAAC,IAAI,CAAC;AAAA;AAEvEhI,SAAS,CAACmB,gBAAgB,GAAG,UAAChB,IAAI,EAAK;EACrC,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAAC+D,QAAQ,IAAI,CAAC/D,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,EAAE;IACnD,OAAO,IAAI;EACb;EAEA,OAAO,CAACpG,IAAI,CAAC+D,QAAQ,CAACqC,KAAK,CAAC0B,cAAc;AAC5C,CAAC;AAEDjI,SAAS,CAACyB,2BAA2B,GAAG,UAACtB,IAAI;EAAA,IAAA+H,eAAA,EAAAC,qBAAA;EAAA,OAAK,CAAC,EAAChI,IAAI,aAAJA,IAAI,gBAAA+H,eAAA,GAAJ/H,IAAI,CAAE+D,QAAQ,cAAAgE,eAAA,gBAAAC,qBAAA,GAAdD,eAAA,CAAgB3B,KAAK,cAAA4B,qBAAA,eAArBA,qBAAA,CAAuB3G,wBAAwB;AAAA;AAEnGxB,SAAS,CAACiC,SAAS,GAAG,UAACC,MAAM;EAAA,OAAM;IACjCqE,KAAK,EAAErE,MAAM,CAACkG,WAAW;IACzB3B,KAAK,EAAEvE,MAAM,CAACmG,WAAW;IACzBC,MAAM,EAAEpG,MAAM,CAACqG;EACjB,CAAC;AAAA,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACAvI,SAAS,CAACiG,0BAA0B,GAAG;EAAA,IAACf,OAAY,GAAAsD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9D,SAAA,GAAA8D,SAAA,MAAG,CAAC,CAAC;EAAA,IAAEE,WAAgB,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAA9D,SAAA;EAAA,OACzEQ,OAAO,CAAC5E,UAAU,IAClB4E,OAAO,CAAC5E,UAAU,CAAC6B,KAAK,KAAK8E,mBAAQ,IACrCyB,WAAW,CAACpI,UAAU,IACtBoI,WAAW,CAACpI,UAAU,CAAC6B,KAAK,KAAKwG,iBAAM,KACtCD,WAAW,CAACpI,UAAU,CAACsI,MAAM,KAAKC,6BAAkB,CAACC,QAAQ,IAC5DJ,WAAW,CAACpI,UAAU,CAACsI,MAAM,KAAKC,6BAAkB,CAACE,cAAc,CAAC;AAAA;;AAExE;AACA;AACA;AACA;AACA/I,SAAS,CAACgJ,qBAAqB,GAAG,UAACC,KAAU;EAAA,IAAAC,iBAAA,EAAAC,qBAAA;EAAA,OAC3CF,KAAK,IAAI,EAAAC,iBAAA,GAAAD,KAAK,CAAC3I,UAAU,cAAA4I,iBAAA,wBAAAC,qBAAA,GAAhBD,iBAAA,CAAkB/F,MAAM,cAAAgG,qBAAA,uBAAxBA,qBAAA,CAA0B/F,IAAI,MAAKC,iBAAM,IAAI4F,KAAK,CAAC9G,KAAK,KAAKe,iBAAM;AAAA;;AAE9E;AACA;AACA;AACA;AACAlD,SAAS,CAACoJ,mBAAmB,GAAG,UAACH,KAAU;EAAA,IAAAI,kBAAA,EAAAC,qBAAA;EAAA,OACzCL,KAAK,IAAI,EAAAI,kBAAA,GAAAJ,KAAK,CAAC3I,UAAU,cAAA+I,kBAAA,wBAAAC,qBAAA,GAAhBD,kBAAA,CAAkBlG,MAAM,cAAAmG,qBAAA,uBAAxBA,qBAAA,CAA0BlG,IAAI,MAAKC,iBAAM,IAAI4F,KAAK,CAAC9G,KAAK,KAAK8E,mBAAQ;AAAA;;AAEhF;AACA;AACA;AACA;AACA;AACAjH,SAAS,CAACiD,gBAAgB,GAAG,UAAC9C,IAAY,EAAK;EAC7C,IAAI,CAACA,IAAI,EAAE;IACT,MAAM,IAAIoJ,kBAAc,CAAC,mEAAmE,CAAC;EAC/F;EAEA,OAAOvJ,SAAS,CAACgJ,qBAAqB,CAAC7I,IAAI,CAAC;AAC9C,CAAC;AAEDH,SAAS,CAAC8F,gBAAgB,GAAG,UAACZ,OAAO,EAAEwD,WAAW,EAAK;EACrD,IAAI,CAACxD,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EACA,IAAI,CAACwD,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,8EACF,CAAC;EACH;EAEA,OAAOrE,OAAO,CAACnD,SAAS,KAAK2G,WAAW,CAAC3G,SAAS;AACpD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA/B,SAAS,CAAC+F,cAAc,GAAG,UAACb,OAAO,EAAEwD,WAAW,EAAK;EACnD,IAAI,CAACA,WAAW,EAAE;IAChB;IACA,OAAO,KAAK;EACd;EAEA,OAAO,CAAC,IAAAxB,eAAO,EAAChC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEnC,KAAK,EAAE2F,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE3F,KAAK,CAAC;AACrD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA/C,SAAS,CAACmG,iBAAiB,GAAG,UAACjB,OAAY,EAAEwD,WAAgB;EAAA,IAAAc,mBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,sBAAA;EAAA,OAC3DzE,OAAO,IACP,EAAAsE,mBAAA,GAAAtE,OAAO,CAAC5E,UAAU,cAAAkJ,mBAAA,wBAAAC,qBAAA,GAAlBD,mBAAA,CAAoBrG,MAAM,cAAAsG,qBAAA,uBAA1BA,qBAAA,CAA4BrG,IAAI,MAAKwG,uBAAY,IACjDlB,WAAW,IACX,EAAAgB,qBAAA,GAAAhB,WAAW,CAACpI,UAAU,cAAAoJ,qBAAA,wBAAAC,sBAAA,GAAtBD,qBAAA,CAAwBvG,MAAM,cAAAwG,sBAAA,uBAA9BA,sBAAA,CAAgCvG,IAAI,MAAKyG,oBAAS;AAAA;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA7J,SAAS,CAACuF,cAAc,GAAG,UAACL,OAAe,EAAEwD,WAAmB,EAAK;EACnE,IAAI,CAACxD,OAAO,EAAE;IACZ;IACA,OAAO,KAAK;EACd;EACA,IAAI,CAACwD,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,kFACF,CAAC;EACH;EAEA,OAAOvJ,SAAS,CAACgJ,qBAAqB,CAAC9D,OAAO,CAAC,IAAIlF,SAAS,CAACoJ,mBAAmB,CAACV,WAAW,CAAC;AAC/F,CAAC;AAED1I,SAAS,CAACyF,yBAAyB,GAAG,UAACP,OAAO,EAAEwD,WAAW,EAAK;EAC9D,IAAI,CAACA,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,0EACF,CAAC;EACH;EAEA,IAAI,CAACrE,OAAO,IAAIA,OAAO,CAACpE,gBAAgB,KAAK,IAAI,EAAE;IACjD,IAAI4H,WAAW,CAAC5H,gBAAgB,EAAE;MAChC,OAAO,IAAI,CAAC,CAAC;IACf;;IAEA;IACA,OAAO,KAAK;EACd;EAEA,OAAOoE,OAAO,CAACpE,gBAAgB,KAAK4H,WAAW,CAAC5H,gBAAgB;AAClE,CAAC;AAEDd,SAAS,CAAC2F,oBAAoB,GAAG,UAACT,OAAO,EAAEwD,WAAW,EAAK;EACzD,IAAI,CAACA,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CAAC,oEAAoE,CAAC;EAChG;EAEA,IAAI,CAACrE,OAAO,IAAIA,OAAO,CAAClE,WAAW,KAAK,IAAI,EAAE;IAC5C,IAAI0H,WAAW,CAAC1H,WAAW,EAAE;MAC3B,OAAO,IAAI,CAAC,CAAC;IACf;;IAEA;IACA,OAAO,KAAK;EACd;EAEA,OACE0H,WAAW,CAAC1H,WAAW,KAAK,IAAI,KAC/BkE,OAAO,CAAClE,WAAW,KAAK0H,WAAW,CAAC1H,WAAW,IAC7C0H,WAAW,CAAC1H,WAAW,IAAIkE,OAAO,CAAChE,aAAa,KAAKwH,WAAW,CAACxH,aAAc,CAAC;AAEvF,CAAC;AAEDlB,SAAS,CAAC4F,iCAAiC,GAAG,YAAyC;EAAA,IAAxCV,OAAY,GAAAsD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9D,SAAA,GAAA8D,SAAA,MAAG,CAAC,CAAC;EAAA,IAAEE,WAAgB,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAA9D,SAAA;EAChF,IAAI,CAACgE,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,2EACF,CAAC;EACH;EAEA,OACEb,WAAW,CAACtH,yBAAyB,IACrCsH,WAAW,CAACpH,kCAAkC,GAAG4D,OAAO,CAAC5D,kCAAkC;AAE/F,CAAC;AAEDtB,SAAS,CAAC6F,gCAAgC,GAAG,YAAyC;EAAA,IAAxCX,OAAY,GAAAsD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9D,SAAA,GAAA8D,SAAA,MAAG,CAAC,CAAC;EAAA,IAAEE,WAAgB,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAA9D,SAAA;EAC/E,IAAI,CAACgE,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,4EACF,CAAC;EACH;EAEA,OACE,CAACb,WAAW,CAAC1H,WAAW,IACxB0H,WAAW,CAAClH,wBAAwB,IACpC0D,OAAO,CAAC1D,wBAAwB,KAAKkH,WAAW,CAAClH,wBAAwB;AAE7E,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEAxB,SAAS,CAAC8J,SAAS,GAAG,UAACC,OAAY,EAAE3G,IAAI,EAAE4G,MAAM,EAAK;EACpD;EACA,IAAID,OAAO,IAAI3G,IAAI,KAAK6G,iBAAM,EAAE;IAC9B,OAAO;MAACD,MAAM,EAAED,OAAO,CAACvC,MAAM,CAAC0C,MAAM,IAAIH,OAAO,CAACvC,MAAM,CAAC9E;IAAE,CAAC;EAC7D;EAEA,OAAO;IAACsH,MAAM,EAANA;EAAM,CAAC;AACjB,CAAC;AAEDhK,SAAS,CAACqC,cAAc,GAAG,YAAwB;EAAA,IAAvBC,aAAa,GAAAkG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA9D,SAAA,GAAA8D,SAAA,MAAG,EAAE;EAC5C,IAAMxG,WAAW,GAAG;IAClBuE,KAAK,EAAE,CAAC,CAAC;IACTE,KAAK,EAAE,CAAC,CAAC;IACTE,KAAK,EAAE,CAAC;EACV,CAAC;EAED3E,WAAW,CAACuE,KAAK,GAAGjE,aAAa,CAAC9B,IAAI,CACpC,UAAC2J,KAAK;IAAA,OAAKA,KAAK,CAACC,SAAS,KAAKC,gBAAK,IAAIF,KAAK,CAACG,YAAY,KAAKC,uBAAY,CAACC,IAAI;EAAA,CAClF,CAAC;EACDxI,WAAW,CAACyE,KAAK,GAAGnE,aAAa,CAAC9B,IAAI,CACpC,UAAC2J,KAAK;IAAA,OAAKA,KAAK,CAACC,SAAS,KAAKK,gBAAK,IAAIN,KAAK,CAACG,YAAY,KAAKC,uBAAY,CAACC,IAAI;EAAA,CAClF,CAAC;EACDxI,WAAW,CAAC2E,KAAK,GAAGrE,aAAa,CAAC9B,IAAI,CACpC,UAAC2J,KAAK;IAAA,OAAKA,KAAK,CAACC,SAAS,KAAKK,gBAAK,IAAIN,KAAK,CAACG,YAAY,KAAKC,uBAAY,CAACjC,MAAM;EAAA,CACpF,CAAC;EAED,OAAOtG,WAAW;AACpB,CAAC;AAEDhC,SAAS,CAAC0K,yBAAyB,GAAG,UAACvK,IAAS,EAAEC,QAAgB,EAAK;EACrE,IAAID,IAAI,IAAI,IAAAoE,QAAA,CAAAC,OAAA,EAAcrE,IAAI,CAACI,OAAO,CAAC,EAAE;IACvC,IAAMoK,YAAY,GAAGxK,IAAI,CAACI,OAAO,CAACC,IAAI,CAAC,UAACC,MAAM;MAAA,OAAKL,QAAQ,KAAKK,MAAM,CAACC,GAAG;IAAA,EAAC;IAC3E,IAAI,IAAA6D,QAAA,CAAAC,OAAA,EAAcmG,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEC,QAAQ,CAAC,EAAE;MAAA,IAAAC,qBAAA;MACzC,QAAAA,qBAAA,GAAOF,YAAY,CAACC,QAAQ,CAAC,CAAC,CAAC,cAAAC,qBAAA,uBAAxBA,qBAAA,CAA0BC,cAAc;IACjD;EACF;EAEA,OAAO,IAAI;AACb,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAxG,OAAA,GACaxE,SAAS"}
1
+ {"version":3,"names":["_lodash","require","_constants","_parameter","_interopRequireDefault","SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","_joinedWith$intent","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteVideoMuted","getRemoteVideoMuted","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequestedTimeStamp","getLocalAudioUnmuteRequestedTimeStamp","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakoutSessions","breakout","getBreakout","interpretation","getInterpretation","brb","getBrb","_self$controls","_self$controls$breako","controls","sessions","_self$controls2","_self$controls3","_self$controls4","_self$controls5","_isArray","default","layouts","undefined","_self$controls6","_self$controls6$role","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isRolesChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","interpretationChanged","brbChanged","isJoined","_JOINED_","isEqual","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","_self$controls7","_self$controls7$audio","requestedToUnmute","_self$controls8","_self$controls8$audio","Date","lastModifiedRequestedToUnmute","disallowUnmute","_self$controls9","_self$controls9$audio","audioStatus","videoStatus","slides","videoSlidesStatus","arguments","length","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","_check$joinedWith","_check$joinedWith$int","isLocusUserAdmitted","_check$joinedWith2","_check$joinedWith2$in","ParameterError","_oldSelf$joinedWith","_oldSelf$joinedWith$i","_changedSelf$joinedWi","_changedSelf$joinedWi2","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO","getReplacedBreakoutMoveId","joinedDevice","replaces","_joinedDevice$replace","breakoutMoveId","_default","exports"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils: any = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequestedTimeStamp: SelfUtils.getLocalAudioUnmuteRequestedTimeStamp(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakoutSessions(self),\n breakout: SelfUtils.getBreakout(self),\n interpretation: SelfUtils.getInterpretation(self),\n brb: SelfUtils.getBrb(self),\n };\n }\n\n return null;\n};\n\nSelfUtils.getBreakoutSessions = (self) => self?.controls?.breakout?.sessions;\nSelfUtils.getBreakout = (self) => self?.controls?.breakout;\nSelfUtils.getInterpretation = (self) => self?.controls?.interpretation;\nSelfUtils.getBrb = (self) => self?.controls?.brb;\n\nSelfUtils.getLayout = (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;\n\nSelfUtils.getRoles = (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(previous, current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isRolesChanged = SelfUtils.isRolesChanged(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);\n updates.brbChanged = SelfUtils.brbChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\nSelfUtils.isJoined = (self: any) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the Meeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout;\n\nSelfUtils.breakoutsChanged = (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout;\n\nSelfUtils.interpretationChanged = (previous, current) =>\n !isEqual(previous?.interpretation, current?.interpretation) && !!current?.interpretation;\n\nSelfUtils.brbChanged = (previous, current) =>\n !isEqual(previous?.brb, current?.brb) && current?.brb !== undefined;\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self: any) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote video mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteVideoMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.video) {\n return null;\n }\n\n return self.controls.video.muted;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\n// requestedToUnmute timestamp\nSelfUtils.getLocalAudioUnmuteRequestedTimeStamp = (self) =>\n Date.parse(self?.controls?.audio?.lastModifiedRequestedToUnmute) || 0;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n});\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (oldSelf: object, changedSelf: object) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'changedSelf must be defined to determine if self is unadmitted as guest.'\n );\n }\n\n if (SelfUtils.isLocusUserUnadmitted(oldSelf)) {\n return false;\n }\n\n return SelfUtils.isLocusUserUnadmitted(changedSelf);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n/**\n * determine whether the roles of self is changed or not\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.isRolesChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n // no new self means no change\n return false;\n }\n\n return !isEqual(oldSelf?.roles, changedSelf?.roles);\n};\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.videoMutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was video muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteVideoMuted === null) {\n if (changedSelf.remoteVideoMuted) {\n return true; // this happens when host disables \"Allow start video\"\n }\n\n // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join\n return false;\n }\n\n return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n // there is no need to trigger user update if no one muted user\n if (changedSelf.selfIdentity === changedSelf.modifiedBy) {\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return (\n changedSelf.localAudioUnmuteRequested &&\n changedSelf.localAudioUnmuteRequestedTimeStamp > oldSelf.localAudioUnmuteRequestedTimeStamp\n );\n};\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n};\n\nSelfUtils.getReplacedBreakoutMoveId = (self: any, deviceId: string) => {\n if (self && Array.isArray(self.devices)) {\n const joinedDevice = self.devices.find((device) => deviceId === device.url);\n if (Array.isArray(joinedDevice?.replaces)) {\n return joinedDevice.replaces[0]?.breakoutMoveId;\n }\n }\n\n return null;\n};\nexport default SelfUtils;\n"],"mappings":"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"}
@@ -110,6 +110,7 @@ var MediaConnectionAwaiter = exports.default = /*#__PURE__*/function () {
110
110
  }
111
111
  clearTimeout(this.timer);
112
112
  this.clearCallbacks();
113
+ _loggerProxy.default.logger.warn('Media:MediaConnectionAwaiter#connectionStateChange --> Resolving');
113
114
  this.defer.resolve();
114
115
  }
115
116