@webex/plugin-meetings 3.11.0-next.4 → 3.11.0-next.40

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 (146) hide show
  1. package/dist/aiEnableRequest/index.js +184 -0
  2. package/dist/aiEnableRequest/index.js.map +1 -0
  3. package/dist/aiEnableRequest/utils.js +36 -0
  4. package/dist/aiEnableRequest/utils.js.map +1 -0
  5. package/dist/annotation/index.js +3 -3
  6. package/dist/annotation/index.js.map +1 -1
  7. package/dist/breakouts/breakout.js +1 -1
  8. package/dist/breakouts/index.js +1 -1
  9. package/dist/config.js +5 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/constants.js +26 -6
  12. package/dist/constants.js.map +1 -1
  13. package/dist/hashTree/constants.js +3 -1
  14. package/dist/hashTree/constants.js.map +1 -1
  15. package/dist/hashTree/hashTree.js +18 -0
  16. package/dist/hashTree/hashTree.js.map +1 -1
  17. package/dist/hashTree/hashTreeParser.js +709 -380
  18. package/dist/hashTree/hashTreeParser.js.map +1 -1
  19. package/dist/hashTree/types.js +4 -2
  20. package/dist/hashTree/types.js.map +1 -1
  21. package/dist/hashTree/utils.js +10 -0
  22. package/dist/hashTree/utils.js.map +1 -1
  23. package/dist/index.js +11 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/interceptors/constant.js +12 -0
  26. package/dist/interceptors/constant.js.map +1 -0
  27. package/dist/interceptors/dataChannelAuthToken.js +233 -0
  28. package/dist/interceptors/dataChannelAuthToken.js.map +1 -0
  29. package/dist/interceptors/index.js +7 -0
  30. package/dist/interceptors/index.js.map +1 -1
  31. package/dist/interpretation/index.js +2 -2
  32. package/dist/interpretation/index.js.map +1 -1
  33. package/dist/interpretation/siLanguage.js +1 -1
  34. package/dist/locus-info/controlsUtils.js +5 -3
  35. package/dist/locus-info/controlsUtils.js.map +1 -1
  36. package/dist/locus-info/index.js +125 -68
  37. package/dist/locus-info/index.js.map +1 -1
  38. package/dist/locus-info/selfUtils.js +1 -0
  39. package/dist/locus-info/selfUtils.js.map +1 -1
  40. package/dist/locus-info/types.js.map +1 -1
  41. package/dist/media/MediaConnectionAwaiter.js +57 -1
  42. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  43. package/dist/media/properties.js +4 -2
  44. package/dist/media/properties.js.map +1 -1
  45. package/dist/meeting/in-meeting-actions.js +7 -1
  46. package/dist/meeting/in-meeting-actions.js.map +1 -1
  47. package/dist/meeting/index.js +209 -90
  48. package/dist/meeting/index.js.map +1 -1
  49. package/dist/meeting/request.js +50 -0
  50. package/dist/meeting/request.js.map +1 -1
  51. package/dist/meeting/request.type.js.map +1 -1
  52. package/dist/meeting/util.js +128 -2
  53. package/dist/meeting/util.js.map +1 -1
  54. package/dist/meetings/index.js +78 -36
  55. package/dist/meetings/index.js.map +1 -1
  56. package/dist/member/index.js +10 -0
  57. package/dist/member/index.js.map +1 -1
  58. package/dist/member/util.js +10 -0
  59. package/dist/member/util.js.map +1 -1
  60. package/dist/metrics/constants.js +2 -1
  61. package/dist/metrics/constants.js.map +1 -1
  62. package/dist/multistream/mediaRequestManager.js +1 -1
  63. package/dist/multistream/mediaRequestManager.js.map +1 -1
  64. package/dist/multistream/remoteMediaManager.js +11 -0
  65. package/dist/multistream/remoteMediaManager.js.map +1 -1
  66. package/dist/reactions/reactions.type.js.map +1 -1
  67. package/dist/types/aiEnableRequest/index.d.ts +5 -0
  68. package/dist/types/aiEnableRequest/utils.d.ts +2 -0
  69. package/dist/types/config.d.ts +3 -0
  70. package/dist/types/constants.d.ts +21 -1
  71. package/dist/types/hashTree/constants.d.ts +1 -0
  72. package/dist/types/hashTree/hashTree.d.ts +7 -0
  73. package/dist/types/hashTree/hashTreeParser.d.ts +99 -14
  74. package/dist/types/hashTree/types.d.ts +3 -0
  75. package/dist/types/hashTree/utils.d.ts +6 -0
  76. package/dist/types/index.d.ts +1 -0
  77. package/dist/types/interceptors/constant.d.ts +5 -0
  78. package/dist/types/interceptors/dataChannelAuthToken.d.ts +35 -0
  79. package/dist/types/interceptors/index.d.ts +2 -1
  80. package/dist/types/locus-info/index.d.ts +9 -2
  81. package/dist/types/locus-info/types.d.ts +1 -0
  82. package/dist/types/media/MediaConnectionAwaiter.d.ts +10 -1
  83. package/dist/types/media/properties.d.ts +2 -1
  84. package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
  85. package/dist/types/meeting/index.d.ts +24 -2
  86. package/dist/types/meeting/request.d.ts +16 -1
  87. package/dist/types/meeting/request.type.d.ts +5 -0
  88. package/dist/types/meeting/util.d.ts +31 -0
  89. package/dist/types/meetings/index.d.ts +4 -2
  90. package/dist/types/member/index.d.ts +1 -0
  91. package/dist/types/member/util.d.ts +5 -0
  92. package/dist/types/metrics/constants.d.ts +1 -0
  93. package/dist/types/reactions/reactions.type.d.ts +1 -0
  94. package/dist/webinar/index.js +1 -1
  95. package/package.json +22 -22
  96. package/src/aiEnableRequest/README.md +84 -0
  97. package/src/aiEnableRequest/index.ts +170 -0
  98. package/src/aiEnableRequest/utils.ts +25 -0
  99. package/src/annotation/index.ts +7 -4
  100. package/src/config.ts +3 -0
  101. package/src/constants.ts +26 -1
  102. package/src/hashTree/constants.ts +1 -0
  103. package/src/hashTree/hashTree.ts +17 -0
  104. package/src/hashTree/hashTreeParser.ts +627 -249
  105. package/src/hashTree/types.ts +4 -0
  106. package/src/hashTree/utils.ts +9 -0
  107. package/src/index.ts +8 -1
  108. package/src/interceptors/constant.ts +6 -0
  109. package/src/interceptors/dataChannelAuthToken.ts +142 -0
  110. package/src/interceptors/index.ts +2 -1
  111. package/src/interpretation/index.ts +2 -2
  112. package/src/locus-info/controlsUtils.ts +11 -0
  113. package/src/locus-info/index.ts +146 -58
  114. package/src/locus-info/selfUtils.ts +1 -0
  115. package/src/locus-info/types.ts +1 -0
  116. package/src/media/MediaConnectionAwaiter.ts +41 -1
  117. package/src/media/properties.ts +3 -1
  118. package/src/meeting/in-meeting-actions.ts +12 -0
  119. package/src/meeting/index.ts +127 -17
  120. package/src/meeting/request.ts +42 -0
  121. package/src/meeting/request.type.ts +6 -0
  122. package/src/meeting/util.ts +156 -1
  123. package/src/meetings/index.ts +94 -9
  124. package/src/member/index.ts +10 -0
  125. package/src/member/util.ts +12 -0
  126. package/src/metrics/constants.ts +1 -0
  127. package/src/multistream/mediaRequestManager.ts +1 -1
  128. package/src/multistream/remoteMediaManager.ts +13 -0
  129. package/src/reactions/reactions.type.ts +1 -0
  130. package/test/unit/spec/aiEnableRequest/index.ts +981 -0
  131. package/test/unit/spec/aiEnableRequest/utils.ts +130 -0
  132. package/test/unit/spec/hashTree/hashTree.ts +66 -0
  133. package/test/unit/spec/hashTree/hashTreeParser.ts +1869 -189
  134. package/test/unit/spec/interceptors/dataChannelAuthToken.ts +141 -0
  135. package/test/unit/spec/locus-info/controlsUtils.js +29 -0
  136. package/test/unit/spec/locus-info/index.js +201 -45
  137. package/test/unit/spec/media/MediaConnectionAwaiter.ts +41 -1
  138. package/test/unit/spec/media/properties.ts +12 -3
  139. package/test/unit/spec/meeting/in-meeting-actions.ts +8 -2
  140. package/test/unit/spec/meeting/index.js +441 -75
  141. package/test/unit/spec/meeting/request.js +64 -0
  142. package/test/unit/spec/meeting/utils.js +433 -22
  143. package/test/unit/spec/meetings/index.js +550 -10
  144. package/test/unit/spec/member/index.js +28 -4
  145. package/test/unit/spec/member/util.js +65 -27
  146. package/test/unit/spec/multistream/remoteMediaManager.ts +30 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_constants","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ControlsUtils","parse","controls","parsedControls","record","modifiedBy","getId","paused","recording","lastModified","meta","meetingContainer","meetingContainerUrl","transcribe","transcribing","caption","spokenLanguage","hesiodLlmId","manualCaptionControl","enabled","entryExitTone","mode","video","videoEnabled","muteOnEntry","shareControl","control","disallowUnmute","reactions","showDisplayNameWithReactions","viewTheParticipantList","_controls$viewThePart","_controls$viewThePart2","_controls$viewThePart3","_controls$viewThePart4","_controls$viewThePart5","_controls$viewThePart6","panelistEnabled","attendeeCount","raiseHand","webcastControl","streaming","meetingFull","_controls$meetingFull","_controls$meetingFull2","_controls$meetingFull3","_controls$meetingFull4","meetingPanelistFull","practiceSession","annotationControl","rdcControl","pollingQAControl","autoEndMeetingWarning","extensionDurationMinutes","countdownDurationMinutes","countdownStartedAt","getControls","oldControls","newControls","_current$muteOnEntry","_previous$muteOnEntry","_current$shareControl","_previous$shareContro","_current$disallowUnmu","_previous$disallowUnm","_current$reactions","_previous$reactions","_current$reactions2","_previous$reactions2","_current$viewTheParti","_previous$viewThePart","_current$viewTheParti2","_previous$viewThePart2","_current$viewTheParti3","_previous$viewThePart3","_current$raiseHand","_previous$raiseHand","_current$video","_previous$video","_previous$record","_previous$record2","_current$record","_previous$record3","_current$record2","_previous$record4","_current$record3","_previous$meetingCont","_current$meetingConta","_previous$transcribe","_current$transcribe","_previous$transcribe2","_current$transcribe2","_previous$transcribe3","_current$transcribe3","_previous$transcribe4","_current$transcribe4","_previous$transcribe5","_current$transcribe5","_previous$transcribe6","_current$transcribe6","_previous$manualCapti","_current$manualCaptio","_previous$manualCapti2","_current$manualCaptio2","_newControls$video","_previous$webcastCont","_current$webcastContr","_previous$meetingFull","_current$meetingFull","_previous$meetingFull2","_current$meetingFull2","_previous$practiceSes","_current$practiceSess","_current$annotationCo","_previous$annotationC","_current$rdcControl","_previous$rdcControl","_current$pollingQACon","_previous$pollingQACo","_current$autoEndMeeti","_previous$autoEndMeet","_current$autoEndMeeti2","_previous$autoEndMeet2","_current$autoEndMeeti3","_previous$autoEndMeet3","_current$autoEndMeeti4","_previous$autoEndMeet4","previous","current","updates","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasRecordingPausedChanged","isEqual","hasRecordingChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasHesiodLLMIdChanged","hasTranscribeSpokenLanguageChanged","hasManualCaptionChanged","hasEntryExitToneChanged","hasBreakoutChanged","breakout","hasInterpretationChanged","interpretation","hasVideoEnabledChanged","undefined","hasWebcastChanged","hasMeetingFullChanged","hasPracticeSessionEnabledChanged","hasStageViewChanged","videoLayout","hasAnnotationControlChanged","hasRemoteDesktopControlChanged","hasPollingQAControlChanged","hasAutoEndMeetingChanged","isNeedReplaceMembers","_oldControls$breakout","_controls$breakout","_oldControls$breakout2","_controls$breakout2","groupId","sessionId","getSessionSwitchStatus","oldLocus","newLocus","_oldLocus$controls","_newLocus$controls","_oldLocus$self","_newLocus$participant","_newLocus$participant2","_newLocus$participant3","_newLocus$controls2","_newLocus$controls2$b","_newLocus$controls3","_newLocus$controls3$b","_newLocus$controls3$b2","status","isReturnToMain","isJoinToBreakout","needUseCache","self","isCreator","participants","state","MEETING_STATE","STATES","JOINED","sessionType","BREAKOUTS","SESSION_TYPES","MAIN","groups","BREAKOUT","isMainSessionDTO","locus","_locus$controls","_locus$controls$break","_default","exports"],"sources":["controlsUtils.ts"],"sourcesContent":["import {isEqual} from 'lodash';\nimport {BREAKOUTS, MEETING_STATE} from '../constants';\n\nconst ControlsUtils: any = {};\n\n/**\n * Controls\n * @typedef {Object} LocusControls\n * @property {Object} record\n * @property {Boolean} record.recording\n * @property {Object} record.meta\n * @property {String} record.meta.modifiedBy\n */\n\n/**\n * parse the relevant host values that we care about: id\n * @param {LocusControls} controls\n * @returns {Object} parsedObject - parsed host or null if host was undefined\n * @returns {String} parsedObject.recordingId\n */\nControlsUtils.parse = (controls: any) => {\n const parsedControls = {...controls};\n\n if (controls && controls.record) {\n parsedControls.record = {\n modifiedBy: ControlsUtils.getId(controls),\n paused: controls.record.paused ? controls.record.paused : false,\n recording: controls.record.recording,\n lastModified: controls.record.meta.lastModified,\n };\n }\n\n if (controls && controls.meetingContainer) {\n parsedControls.meetingContainer = {\n meetingContainerUrl: controls.meetingContainer.meetingContainerUrl,\n };\n }\n\n if (controls && controls.transcribe) {\n parsedControls.transcribe = {\n transcribing: controls.transcribe.transcribing,\n caption: controls.transcribe.caption,\n spokenLanguage: controls.transcribe.spokenLanguage,\n hesiodLlmId: controls.transcribe.hesiodLlmId,\n };\n }\n\n if (controls && controls.manualCaptionControl) {\n parsedControls.manualCaptionControl = {\n enabled: controls.manualCaptionControl.enabled,\n };\n }\n\n if (controls && controls.entryExitTone) {\n parsedControls.entryExitTone = controls.entryExitTone.enabled\n ? controls.entryExitTone.mode\n : null;\n }\n\n if (controls && controls.video) {\n parsedControls.videoEnabled = controls.video.enabled;\n }\n\n if (controls?.muteOnEntry) {\n parsedControls.muteOnEntry = {enabled: controls.muteOnEntry.enabled};\n }\n\n if (controls?.shareControl) {\n parsedControls.shareControl = {control: controls.shareControl.control};\n }\n\n if (controls?.disallowUnmute) {\n parsedControls.disallowUnmute = {enabled: controls.disallowUnmute.enabled};\n }\n\n if (controls?.reactions) {\n parsedControls.reactions = {\n enabled: controls.reactions.enabled,\n showDisplayNameWithReactions: controls.reactions.showDisplayNameWithReactions,\n };\n }\n\n if (controls?.viewTheParticipantList) {\n parsedControls.viewTheParticipantList = {\n enabled: controls.viewTheParticipantList?.enabled ?? false,\n panelistEnabled: controls.viewTheParticipantList?.panelistEnabled ?? false,\n attendeeCount: controls.viewTheParticipantList?.attendeeCount ?? 0,\n };\n }\n\n if (controls?.raiseHand) {\n parsedControls.raiseHand = {enabled: controls.raiseHand.enabled};\n }\n\n if (controls?.video) {\n parsedControls.video = {enabled: controls.video.enabled};\n }\n\n if (controls?.webcastControl) {\n parsedControls.webcastControl = {streaming: controls.webcastControl.streaming};\n }\n\n if (controls?.meetingFull) {\n parsedControls.meetingFull = {\n meetingFull: controls.meetingFull?.meetingFull ?? false,\n meetingPanelistFull: controls.meetingFull?.meetingPanelistFull ?? false,\n };\n }\n\n if (controls?.practiceSession) {\n parsedControls.practiceSession = {\n enabled: controls.practiceSession.enabled,\n };\n }\n\n if (controls?.annotationControl) {\n parsedControls.annotationControl = {\n enabled: controls.annotationControl.enabled,\n };\n }\n\n if (controls?.rdcControl) {\n parsedControls.rdcControl = {\n enabled: controls.rdcControl.enabled,\n };\n }\n\n if (controls?.pollingQAControl) {\n parsedControls.pollingQAControl = {\n enabled: controls.pollingQAControl.enabled,\n };\n }\n\n if (controls?.autoEndMeetingWarning) {\n parsedControls.autoEndMeetingWarning = {\n enabled: controls.autoEndMeetingWarning.enabled,\n extensionDurationMinutes: controls.autoEndMeetingWarning.extensionDurationMinutes,\n countdownDurationMinutes: controls.autoEndMeetingWarning.countdownDurationMinutes,\n countdownStartedAt: controls.autoEndMeetingWarning.countdownStartedAt,\n };\n }\n\n return parsedControls;\n};\n\n/**\n * parses and returns previous state vs current state and triggers the changes.\n * @param {LocusControls} oldControls previous state\n * @param {LocusControls} newControls current state\n * @returns {Object} combination of state plus the changes\n */\nControlsUtils.getControls = (oldControls: any, newControls: any) => {\n const previous = ControlsUtils.parse(oldControls);\n const current = ControlsUtils.parse(newControls);\n\n return {\n previous,\n current,\n updates: {\n hasMuteOnEntryChanged: current?.muteOnEntry?.enabled !== previous?.muteOnEntry?.enabled,\n\n hasShareControlChanged: current?.shareControl?.control !== previous?.shareControl?.control,\n\n hasDisallowUnmuteChanged:\n current?.disallowUnmute?.enabled !== previous?.disallowUnmute?.enabled,\n\n hasReactionsChanged: current?.reactions?.enabled !== previous?.reactions?.enabled,\n\n hasReactionDisplayNamesChanged:\n current?.reactions?.showDisplayNameWithReactions !==\n previous?.reactions?.showDisplayNameWithReactions,\n\n hasViewTheParticipantListChanged:\n current?.viewTheParticipantList?.enabled !== previous?.viewTheParticipantList?.enabled ||\n current?.viewTheParticipantList?.panelistEnabled !==\n previous?.viewTheParticipantList?.panelistEnabled ||\n current?.viewTheParticipantList?.attendeeCount !==\n previous?.viewTheParticipantList?.attendeeCount,\n\n hasRaiseHandChanged: current?.raiseHand?.enabled !== previous?.raiseHand?.enabled,\n\n hasVideoChanged: current?.video?.enabled !== previous?.video?.enabled,\n\n hasRecordingPausedChanged:\n current?.record &&\n !isEqual(previous?.record?.paused, current.record.paused) &&\n (previous?.record?.recording || current?.record?.recording), // see comments directly below\n\n hasRecordingChanged:\n current?.record &&\n !isEqual(previous?.record?.recording, current?.record?.recording) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true\n (previous?.record?.recording || current?.record?.recording), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting\n\n hasMeetingContainerChanged:\n current?.meetingContainer &&\n !isEqual(\n previous?.meetingContainer?.meetingContainerUrl,\n current?.meetingContainer?.meetingContainerUrl\n ),\n\n hasTranscribeChanged:\n current?.transcribe &&\n !isEqual(previous?.transcribe?.transcribing, current?.transcribe?.transcribing) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true\n (previous?.transcribe?.transcribing || current?.transcribe?.transcribing), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting\n\n hasHesiodLLMIdChanged:\n current?.transcribe &&\n !isEqual(previous?.transcribe?.hesiodLlmId, current?.transcribe?.hesiodLlmId) &&\n !!(previous?.transcribe?.hesiodLlmId || current?.transcribe?.hesiodLlmId),\n\n hasTranscribeSpokenLanguageChanged:\n current?.transcribe &&\n !isEqual(previous?.transcribe?.spokenLanguage, current?.transcribe?.spokenLanguage) &&\n !!(previous?.transcribe?.spokenLanguage || current?.transcribe?.spokenLanguage),\n\n hasManualCaptionChanged:\n current?.manualCaptionControl &&\n !isEqual(previous?.manualCaptionControl?.enabled, current?.manualCaptionControl?.enabled) &&\n (previous?.manualCaptionControl?.enabled || current?.manualCaptionControl?.enabled),\n\n hasEntryExitToneChanged: !!(\n newControls.entryExitTone &&\n !isEqual(previous?.entryExitTone, current?.entryExitTone) &&\n (previous?.entryExitTone || current?.entryExitTone)\n ),\n\n hasBreakoutChanged: !isEqual(previous?.breakout, current?.breakout),\n\n hasInterpretationChanged: !isEqual(previous?.interpretation, current?.interpretation),\n\n hasVideoEnabledChanged:\n newControls.video?.enabled !== undefined &&\n !isEqual(previous?.videoEnabled, current?.videoEnabled),\n\n hasWebcastChanged: !isEqual(\n previous?.webcastControl?.streaming,\n current?.webcastControl?.streaming\n ),\n\n hasMeetingFullChanged:\n !isEqual(previous?.meetingFull?.meetingFull, current?.meetingFull?.meetingFull) ||\n !isEqual(\n previous?.meetingFull?.meetingPanelistFull,\n current?.meetingFull?.meetingPanelistFull\n ),\n\n hasPracticeSessionEnabledChanged: !isEqual(\n !!previous?.practiceSession?.enabled,\n !!current?.practiceSession?.enabled\n ),\n\n hasStageViewChanged: !isEqual(previous?.videoLayout, current?.videoLayout),\n\n hasAnnotationControlChanged:\n current?.annotationControl?.enabled !== previous?.annotationControl?.enabled,\n\n hasRemoteDesktopControlChanged:\n current?.rdcControl?.enabled !== previous?.rdcControl?.enabled,\n\n hasPollingQAControlChanged:\n current?.pollingQAControl?.enabled !== previous?.pollingQAControl?.enabled,\n\n hasAutoEndMeetingChanged:\n current?.autoEndMeetingWarning?.enabled !== previous?.autoEndMeetingWarning?.enabled ||\n current?.autoEndMeetingWarning?.extensionDurationMinutes !==\n previous?.autoEndMeetingWarning?.extensionDurationMinutes ||\n current?.autoEndMeetingWarning?.countdownDurationMinutes !==\n previous?.autoEndMeetingWarning?.countdownDurationMinutes ||\n current?.autoEndMeetingWarning?.countdownStartedAt !==\n previous?.autoEndMeetingWarning?.countdownStartedAt,\n },\n };\n};\n\n/**\n * Extract the id from the record controls object\n * @param {LocusControls} controls\n * @returns {String|null}\n */\nControlsUtils.getId = (controls: any) => {\n if (controls.record.meta) {\n return controls.record.meta.modifiedBy;\n }\n\n return null;\n};\n\n/**\n * check whether to replace the meeting's members or not.\n * For case joined breakout session, need replace meeting's members\n * @param {LocusControls} oldControls\n * @param {LocusControls} controls\n * @returns {Boolean}\n */\nControlsUtils.isNeedReplaceMembers = (oldControls: any, controls: any) => {\n // no breakout case\n if (!oldControls?.breakout || !controls?.breakout) {\n return false;\n }\n\n return (\n oldControls?.breakout?.groupId !== controls?.breakout?.groupId ||\n oldControls?.breakout?.sessionId !== controls?.breakout?.sessionId\n );\n};\n\n/**\n * determine the switch status between breakout session and main session.\n * @param {LocusInfo} oldLocus\n * @param {LocusInfo} newLocus\n * @returns {Object}\n */\nControlsUtils.getSessionSwitchStatus = (oldLocus: any, newLocus: any) => {\n const status = {isReturnToMain: false, isJoinToBreakout: false};\n // no breakout case\n if (!oldLocus.controls?.breakout || !newLocus.controls?.breakout) {\n return status;\n }\n\n // It is used to fix the timing issue triggered when the creator leaves session to ensure that the member list is complete\n const needUseCache = !!(\n oldLocus.self?.isCreator &&\n newLocus.participants?.length === 1 &&\n newLocus.participants?.[0].isCreator &&\n newLocus.participants?.[0].state === MEETING_STATE.STATES.JOINED &&\n newLocus.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&\n newLocus.controls?.breakout?.groups?.length\n );\n\n const isReturnToMain =\n oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&\n newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n\n status.isReturnToMain = needUseCache || isReturnToMain;\n status.isJoinToBreakout =\n oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&\n newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;\n\n return status;\n};\n\nControlsUtils.isMainSessionDTO = (locus: any) => {\n return locus?.controls?.breakout?.sessionType !== BREAKOUTS.SESSION_TYPES.BREAKOUT;\n};\n\nexport default ControlsUtils;\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAAsD,SAAAE,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAH,CAAA,OAAAI,6BAAA,QAAAC,CAAA,GAAAD,6BAAA,CAAAJ,CAAA,GAAAC,CAAA,KAAAI,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAL,CAAA,WAAAM,gCAAA,CAAAP,CAAA,EAAAC,CAAA,EAAAO,UAAA,OAAAN,CAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,CAAA,EAAAG,CAAA,YAAAH,CAAA;AAAA,SAAAS,cAAAX,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAW,SAAA,CAAAC,MAAA,EAAAZ,CAAA,UAAAC,CAAA,WAAAU,SAAA,CAAAX,CAAA,IAAAW,SAAA,CAAAX,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAe,MAAA,CAAAZ,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAiB,iCAAA,GAAAC,wBAAA,CAAAnB,CAAA,EAAAkB,iCAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAe,MAAA,CAAAZ,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAmB,sBAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAM,gCAAA,CAAAL,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAEtD,IAAMqB,aAAkB,GAAG,CAAC,CAAC;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACAA,aAAa,CAACC,KAAK,GAAG,UAACC,QAAa,EAAK;EACvC,IAAMC,cAAc,GAAAb,aAAA,KAAOY,QAAQ,CAAC;EAEpC,IAAIA,QAAQ,IAAIA,QAAQ,CAACE,MAAM,EAAE;IAC/BD,cAAc,CAACC,MAAM,GAAG;MACtBC,UAAU,EAAEL,aAAa,CAACM,KAAK,CAACJ,QAAQ,CAAC;MACzCK,MAAM,EAAEL,QAAQ,CAACE,MAAM,CAACG,MAAM,GAAGL,QAAQ,CAACE,MAAM,CAACG,MAAM,GAAG,KAAK;MAC/DC,SAAS,EAAEN,QAAQ,CAACE,MAAM,CAACI,SAAS;MACpCC,YAAY,EAAEP,QAAQ,CAACE,MAAM,CAACM,IAAI,CAACD;IACrC,CAAC;EACH;EAEA,IAAIP,QAAQ,IAAIA,QAAQ,CAACS,gBAAgB,EAAE;IACzCR,cAAc,CAACQ,gBAAgB,GAAG;MAChCC,mBAAmB,EAAEV,QAAQ,CAACS,gBAAgB,CAACC;IACjD,CAAC;EACH;EAEA,IAAIV,QAAQ,IAAIA,QAAQ,CAACW,UAAU,EAAE;IACnCV,cAAc,CAACU,UAAU,GAAG;MAC1BC,YAAY,EAAEZ,QAAQ,CAACW,UAAU,CAACC,YAAY;MAC9CC,OAAO,EAAEb,QAAQ,CAACW,UAAU,CAACE,OAAO;MACpCC,cAAc,EAAEd,QAAQ,CAACW,UAAU,CAACG,cAAc;MAClDC,WAAW,EAAEf,QAAQ,CAACW,UAAU,CAACI;IACnC,CAAC;EACH;EAEA,IAAIf,QAAQ,IAAIA,QAAQ,CAACgB,oBAAoB,EAAE;IAC7Cf,cAAc,CAACe,oBAAoB,GAAG;MACpCC,OAAO,EAAEjB,QAAQ,CAACgB,oBAAoB,CAACC;IACzC,CAAC;EACH;EAEA,IAAIjB,QAAQ,IAAIA,QAAQ,CAACkB,aAAa,EAAE;IACtCjB,cAAc,CAACiB,aAAa,GAAGlB,QAAQ,CAACkB,aAAa,CAACD,OAAO,GACzDjB,QAAQ,CAACkB,aAAa,CAACC,IAAI,GAC3B,IAAI;EACV;EAEA,IAAInB,QAAQ,IAAIA,QAAQ,CAACoB,KAAK,EAAE;IAC9BnB,cAAc,CAACoB,YAAY,GAAGrB,QAAQ,CAACoB,KAAK,CAACH,OAAO;EACtD;EAEA,IAAIjB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEsB,WAAW,EAAE;IACzBrB,cAAc,CAACqB,WAAW,GAAG;MAACL,OAAO,EAAEjB,QAAQ,CAACsB,WAAW,CAACL;IAAO,CAAC;EACtE;EAEA,IAAIjB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEuB,YAAY,EAAE;IAC1BtB,cAAc,CAACsB,YAAY,GAAG;MAACC,OAAO,EAAExB,QAAQ,CAACuB,YAAY,CAACC;IAAO,CAAC;EACxE;EAEA,IAAIxB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEyB,cAAc,EAAE;IAC5BxB,cAAc,CAACwB,cAAc,GAAG;MAACR,OAAO,EAAEjB,QAAQ,CAACyB,cAAc,CAACR;IAAO,CAAC;EAC5E;EAEA,IAAIjB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAE0B,SAAS,EAAE;IACvBzB,cAAc,CAACyB,SAAS,GAAG;MACzBT,OAAO,EAAEjB,QAAQ,CAAC0B,SAAS,CAACT,OAAO;MACnCU,4BAA4B,EAAE3B,QAAQ,CAAC0B,SAAS,CAACC;IACnD,CAAC;EACH;EAEA,IAAI3B,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAE4B,sBAAsB,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IACpCjC,cAAc,CAAC2B,sBAAsB,GAAG;MACtCX,OAAO,GAAAY,qBAAA,IAAAC,sBAAA,GAAE9B,QAAQ,CAAC4B,sBAAsB,cAAAE,sBAAA,uBAA/BA,sBAAA,CAAiCb,OAAO,cAAAY,qBAAA,cAAAA,qBAAA,GAAI,KAAK;MAC1DM,eAAe,GAAAJ,sBAAA,IAAAC,sBAAA,GAAEhC,QAAQ,CAAC4B,sBAAsB,cAAAI,sBAAA,uBAA/BA,sBAAA,CAAiCG,eAAe,cAAAJ,sBAAA,cAAAA,sBAAA,GAAI,KAAK;MAC1EK,aAAa,GAAAH,sBAAA,IAAAC,sBAAA,GAAElC,QAAQ,CAAC4B,sBAAsB,cAAAM,sBAAA,uBAA/BA,sBAAA,CAAiCE,aAAa,cAAAH,sBAAA,cAAAA,sBAAA,GAAI;IACnE,CAAC;EACH;EAEA,IAAIjC,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEqC,SAAS,EAAE;IACvBpC,cAAc,CAACoC,SAAS,GAAG;MAACpB,OAAO,EAAEjB,QAAQ,CAACqC,SAAS,CAACpB;IAAO,CAAC;EAClE;EAEA,IAAIjB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEoB,KAAK,EAAE;IACnBnB,cAAc,CAACmB,KAAK,GAAG;MAACH,OAAO,EAAEjB,QAAQ,CAACoB,KAAK,CAACH;IAAO,CAAC;EAC1D;EAEA,IAAIjB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEsC,cAAc,EAAE;IAC5BrC,cAAc,CAACqC,cAAc,GAAG;MAACC,SAAS,EAAEvC,QAAQ,CAACsC,cAAc,CAACC;IAAS,CAAC;EAChF;EAEA,IAAIvC,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEwC,WAAW,EAAE;IAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IACzB3C,cAAc,CAACuC,WAAW,GAAG;MAC3BA,WAAW,GAAAC,qBAAA,IAAAC,sBAAA,GAAE1C,QAAQ,CAACwC,WAAW,cAAAE,sBAAA,uBAApBA,sBAAA,CAAsBF,WAAW,cAAAC,qBAAA,cAAAA,qBAAA,GAAI,KAAK;MACvDI,mBAAmB,GAAAF,sBAAA,IAAAC,sBAAA,GAAE5C,QAAQ,CAACwC,WAAW,cAAAI,sBAAA,uBAApBA,sBAAA,CAAsBC,mBAAmB,cAAAF,sBAAA,cAAAA,sBAAA,GAAI;IACpE,CAAC;EACH;EAEA,IAAI3C,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAE8C,eAAe,EAAE;IAC7B7C,cAAc,CAAC6C,eAAe,GAAG;MAC/B7B,OAAO,EAAEjB,QAAQ,CAAC8C,eAAe,CAAC7B;IACpC,CAAC;EACH;EAEA,IAAIjB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAE+C,iBAAiB,EAAE;IAC/B9C,cAAc,CAAC8C,iBAAiB,GAAG;MACjC9B,OAAO,EAAEjB,QAAQ,CAAC+C,iBAAiB,CAAC9B;IACtC,CAAC;EACH;EAEA,IAAIjB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEgD,UAAU,EAAE;IACxB/C,cAAc,CAAC+C,UAAU,GAAG;MAC1B/B,OAAO,EAAEjB,QAAQ,CAACgD,UAAU,CAAC/B;IAC/B,CAAC;EACH;EAEA,IAAIjB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEiD,gBAAgB,EAAE;IAC9BhD,cAAc,CAACgD,gBAAgB,GAAG;MAChChC,OAAO,EAAEjB,QAAQ,CAACiD,gBAAgB,CAAChC;IACrC,CAAC;EACH;EAEA,IAAIjB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEkD,qBAAqB,EAAE;IACnCjD,cAAc,CAACiD,qBAAqB,GAAG;MACrCjC,OAAO,EAAEjB,QAAQ,CAACkD,qBAAqB,CAACjC,OAAO;MAC/CkC,wBAAwB,EAAEnD,QAAQ,CAACkD,qBAAqB,CAACC,wBAAwB;MACjFC,wBAAwB,EAAEpD,QAAQ,CAACkD,qBAAqB,CAACE,wBAAwB;MACjFC,kBAAkB,EAAErD,QAAQ,CAACkD,qBAAqB,CAACG;IACrD,CAAC;EACH;EAEA,OAAOpD,cAAc;AACvB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACAH,aAAa,CAACwD,WAAW,GAAG,UAACC,WAAgB,EAAEC,WAAgB,EAAK;EAAA,IAAAC,oBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,kBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,kBAAA,EAAAC,mBAAA,EAAAC,cAAA,EAAAC,eAAA,EAAAC,gBAAA,EAAAC,iBAAA,EAAAC,eAAA,EAAAC,iBAAA,EAAAC,gBAAA,EAAAC,iBAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,mBAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,kBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,sBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;EAClE,IAAMC,QAAQ,GAAG/H,aAAa,CAACC,KAAK,CAACwD,WAAW,CAAC;EACjD,IAAMuE,OAAO,GAAGhI,aAAa,CAACC,KAAK,CAACyD,WAAW,CAAC;EAEhD,OAAO;IACLqE,QAAQ,EAARA,QAAQ;IACRC,OAAO,EAAPA,OAAO;IACPC,OAAO,EAAE;MACPC,qBAAqB,EAAE,CAAAF,OAAO,aAAPA,OAAO,wBAAArE,oBAAA,GAAPqE,OAAO,CAAExG,WAAW,cAAAmC,oBAAA,uBAApBA,oBAAA,CAAsBxC,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAAnE,qBAAA,GAARmE,QAAQ,CAAEvG,WAAW,cAAAoC,qBAAA,uBAArBA,qBAAA,CAAuBzC,OAAO;MAEvFgH,sBAAsB,EAAE,CAAAH,OAAO,aAAPA,OAAO,wBAAAnE,qBAAA,GAAPmE,OAAO,CAAEvG,YAAY,cAAAoC,qBAAA,uBAArBA,qBAAA,CAAuBnC,OAAO,OAAKqG,QAAQ,aAARA,QAAQ,wBAAAjE,qBAAA,GAARiE,QAAQ,CAAEtG,YAAY,cAAAqC,qBAAA,uBAAtBA,qBAAA,CAAwBpC,OAAO;MAE1F0G,wBAAwB,EACtB,CAAAJ,OAAO,aAAPA,OAAO,wBAAAjE,qBAAA,GAAPiE,OAAO,CAAErG,cAAc,cAAAoC,qBAAA,uBAAvBA,qBAAA,CAAyB5C,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAA/D,qBAAA,GAAR+D,QAAQ,CAAEpG,cAAc,cAAAqC,qBAAA,uBAAxBA,qBAAA,CAA0B7C,OAAO;MAExEkH,mBAAmB,EAAE,CAAAL,OAAO,aAAPA,OAAO,wBAAA/D,kBAAA,GAAP+D,OAAO,CAAEpG,SAAS,cAAAqC,kBAAA,uBAAlBA,kBAAA,CAAoB9C,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAA7D,mBAAA,GAAR6D,QAAQ,CAAEnG,SAAS,cAAAsC,mBAAA,uBAAnBA,mBAAA,CAAqB/C,OAAO;MAEjFmH,8BAA8B,EAC5B,CAAAN,OAAO,aAAPA,OAAO,wBAAA7D,mBAAA,GAAP6D,OAAO,CAAEpG,SAAS,cAAAuC,mBAAA,uBAAlBA,mBAAA,CAAoBtC,4BAA4B,OAChDkG,QAAQ,aAARA,QAAQ,wBAAA3D,oBAAA,GAAR2D,QAAQ,CAAEnG,SAAS,cAAAwC,oBAAA,uBAAnBA,oBAAA,CAAqBvC,4BAA4B;MAEnD0G,gCAAgC,EAC9B,CAAAP,OAAO,aAAPA,OAAO,wBAAA3D,qBAAA,GAAP2D,OAAO,CAAElG,sBAAsB,cAAAuC,qBAAA,uBAA/BA,qBAAA,CAAiClD,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAAzD,qBAAA,GAARyD,QAAQ,CAAEjG,sBAAsB,cAAAwC,qBAAA,uBAAhCA,qBAAA,CAAkCnD,OAAO,KACtF,CAAA6G,OAAO,aAAPA,OAAO,wBAAAzD,sBAAA,GAAPyD,OAAO,CAAElG,sBAAsB,cAAAyC,sBAAA,uBAA/BA,sBAAA,CAAiClC,eAAe,OAC9C0F,QAAQ,aAARA,QAAQ,wBAAAvD,sBAAA,GAARuD,QAAQ,CAAEjG,sBAAsB,cAAA0C,sBAAA,uBAAhCA,sBAAA,CAAkCnC,eAAe,KACnD,CAAA2F,OAAO,aAAPA,OAAO,wBAAAvD,sBAAA,GAAPuD,OAAO,CAAElG,sBAAsB,cAAA2C,sBAAA,uBAA/BA,sBAAA,CAAiCnC,aAAa,OAC5CyF,QAAQ,aAARA,QAAQ,wBAAArD,sBAAA,GAARqD,QAAQ,CAAEjG,sBAAsB,cAAA4C,sBAAA,uBAAhCA,sBAAA,CAAkCpC,aAAa;MAEnDkG,mBAAmB,EAAE,CAAAR,OAAO,aAAPA,OAAO,wBAAArD,kBAAA,GAAPqD,OAAO,CAAEzF,SAAS,cAAAoC,kBAAA,uBAAlBA,kBAAA,CAAoBxD,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAAnD,mBAAA,GAARmD,QAAQ,CAAExF,SAAS,cAAAqC,mBAAA,uBAAnBA,mBAAA,CAAqBzD,OAAO;MAEjFsH,eAAe,EAAE,CAAAT,OAAO,aAAPA,OAAO,wBAAAnD,cAAA,GAAPmD,OAAO,CAAE1G,KAAK,cAAAuD,cAAA,uBAAdA,cAAA,CAAgB1D,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAAjD,eAAA,GAARiD,QAAQ,CAAEzG,KAAK,cAAAwD,eAAA,uBAAfA,eAAA,CAAiB3D,OAAO;MAErEuH,yBAAyB,EACvB,CAAAV,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE5H,MAAM,KACf,CAAC,IAAAuI,eAAO,EAACZ,QAAQ,aAARA,QAAQ,wBAAAhD,gBAAA,GAARgD,QAAQ,CAAE3H,MAAM,cAAA2E,gBAAA,uBAAhBA,gBAAA,CAAkBxE,MAAM,EAAEyH,OAAO,CAAC5H,MAAM,CAACG,MAAM,CAAC,KACxD,CAAAwH,QAAQ,aAARA,QAAQ,wBAAA/C,iBAAA,GAAR+C,QAAQ,CAAE3H,MAAM,cAAA4E,iBAAA,uBAAhBA,iBAAA,CAAkBxE,SAAS,MAAIwH,OAAO,aAAPA,OAAO,wBAAA/C,eAAA,GAAP+C,OAAO,CAAE5H,MAAM,cAAA6E,eAAA,uBAAfA,eAAA,CAAiBzE,SAAS,EAAC;MAAE;;MAE/DoI,mBAAmB,EACjB,CAAAZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE5H,MAAM,KACf,CAAC,IAAAuI,eAAO,EAACZ,QAAQ,aAARA,QAAQ,wBAAA7C,iBAAA,GAAR6C,QAAQ,CAAE3H,MAAM,cAAA8E,iBAAA,uBAAhBA,iBAAA,CAAkB1E,SAAS,EAAEwH,OAAO,aAAPA,OAAO,wBAAA7C,gBAAA,GAAP6C,OAAO,CAAE5H,MAAM,cAAA+E,gBAAA,uBAAfA,gBAAA,CAAiB3E,SAAS,CAAC;MAAI;MACpE,CAAAuH,QAAQ,aAARA,QAAQ,wBAAA3C,iBAAA,GAAR2C,QAAQ,CAAE3H,MAAM,cAAAgF,iBAAA,uBAAhBA,iBAAA,CAAkB5E,SAAS,MAAIwH,OAAO,aAAPA,OAAO,wBAAA3C,gBAAA,GAAP2C,OAAO,CAAE5H,MAAM,cAAAiF,gBAAA,uBAAfA,gBAAA,CAAiB7E,SAAS,EAAC;MAAE;;MAE/DqI,0BAA0B,EACxB,CAAAb,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAErH,gBAAgB,KACzB,CAAC,IAAAgI,eAAO,EACNZ,QAAQ,aAARA,QAAQ,wBAAAzC,qBAAA,GAARyC,QAAQ,CAAEpH,gBAAgB,cAAA2E,qBAAA,uBAA1BA,qBAAA,CAA4B1E,mBAAmB,EAC/CoH,OAAO,aAAPA,OAAO,wBAAAzC,qBAAA,GAAPyC,OAAO,CAAErH,gBAAgB,cAAA4E,qBAAA,uBAAzBA,qBAAA,CAA2B3E,mBAC7B,CAAC;MAEHkI,oBAAoB,EAClB,CAAAd,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEnH,UAAU,KACnB,CAAC,IAAA8H,eAAO,EAACZ,QAAQ,aAARA,QAAQ,wBAAAvC,oBAAA,GAARuC,QAAQ,CAAElH,UAAU,cAAA2E,oBAAA,uBAApBA,oBAAA,CAAsB1E,YAAY,EAAEkH,OAAO,aAAPA,OAAO,wBAAAvC,mBAAA,GAAPuC,OAAO,CAAEnH,UAAU,cAAA4E,mBAAA,uBAAnBA,mBAAA,CAAqB3E,YAAY,CAAC;MAAI;MAClF,CAAAiH,QAAQ,aAARA,QAAQ,wBAAArC,qBAAA,GAARqC,QAAQ,CAAElH,UAAU,cAAA6E,qBAAA,uBAApBA,qBAAA,CAAsB5E,YAAY,MAAIkH,OAAO,aAAPA,OAAO,wBAAArC,oBAAA,GAAPqC,OAAO,CAAEnH,UAAU,cAAA8E,oBAAA,uBAAnBA,oBAAA,CAAqB7E,YAAY,EAAC;MAAE;;MAE7EiI,qBAAqB,EACnB,CAAAf,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEnH,UAAU,KACnB,CAAC,IAAA8H,eAAO,EAACZ,QAAQ,aAARA,QAAQ,wBAAAnC,qBAAA,GAARmC,QAAQ,CAAElH,UAAU,cAAA+E,qBAAA,uBAApBA,qBAAA,CAAsB3E,WAAW,EAAE+G,OAAO,aAAPA,OAAO,wBAAAnC,oBAAA,GAAPmC,OAAO,CAAEnH,UAAU,cAAAgF,oBAAA,uBAAnBA,oBAAA,CAAqB5E,WAAW,CAAC,IAC7E,CAAC,EAAE8G,QAAQ,aAARA,QAAQ,gBAAAjC,qBAAA,GAARiC,QAAQ,CAAElH,UAAU,cAAAiF,qBAAA,eAApBA,qBAAA,CAAsB7E,WAAW,IAAI+G,OAAO,aAAPA,OAAO,gBAAAjC,oBAAA,GAAPiC,OAAO,CAAEnH,UAAU,cAAAkF,oBAAA,eAAnBA,oBAAA,CAAqB9E,WAAW,CAAC;MAE3E+H,kCAAkC,EAChC,CAAAhB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEnH,UAAU,KACnB,CAAC,IAAA8H,eAAO,EAACZ,QAAQ,aAARA,QAAQ,wBAAA/B,qBAAA,GAAR+B,QAAQ,CAAElH,UAAU,cAAAmF,qBAAA,uBAApBA,qBAAA,CAAsBhF,cAAc,EAAEgH,OAAO,aAAPA,OAAO,wBAAA/B,oBAAA,GAAP+B,OAAO,CAAEnH,UAAU,cAAAoF,oBAAA,uBAAnBA,oBAAA,CAAqBjF,cAAc,CAAC,IACnF,CAAC,EAAE+G,QAAQ,aAARA,QAAQ,gBAAA7B,qBAAA,GAAR6B,QAAQ,CAAElH,UAAU,cAAAqF,qBAAA,eAApBA,qBAAA,CAAsBlF,cAAc,IAAIgH,OAAO,aAAPA,OAAO,gBAAA7B,oBAAA,GAAP6B,OAAO,CAAEnH,UAAU,cAAAsF,oBAAA,eAAnBA,oBAAA,CAAqBnF,cAAc,CAAC;MAEjFiI,uBAAuB,EACrB,CAAAjB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE9G,oBAAoB,KAC7B,CAAC,IAAAyH,eAAO,EAACZ,QAAQ,aAARA,QAAQ,wBAAA3B,qBAAA,GAAR2B,QAAQ,CAAE7G,oBAAoB,cAAAkF,qBAAA,uBAA9BA,qBAAA,CAAgCjF,OAAO,EAAE6G,OAAO,aAAPA,OAAO,wBAAA3B,qBAAA,GAAP2B,OAAO,CAAE9G,oBAAoB,cAAAmF,qBAAA,uBAA7BA,qBAAA,CAA+BlF,OAAO,CAAC,KACxF,CAAA4G,QAAQ,aAARA,QAAQ,wBAAAzB,sBAAA,GAARyB,QAAQ,CAAE7G,oBAAoB,cAAAoF,sBAAA,uBAA9BA,sBAAA,CAAgCnF,OAAO,MAAI6G,OAAO,aAAPA,OAAO,wBAAAzB,sBAAA,GAAPyB,OAAO,CAAE9G,oBAAoB,cAAAqF,sBAAA,uBAA7BA,sBAAA,CAA+BpF,OAAO,EAAC;MAErF+H,uBAAuB,EAAE,CAAC,EACxBxF,WAAW,CAACtC,aAAa,IACzB,CAAC,IAAAuH,eAAO,EAACZ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE3G,aAAa,EAAE4G,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE5G,aAAa,CAAC,KACxD2G,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAE3G,aAAa,IAAI4G,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE5G,aAAa,CAAC,CACpD;MAED+H,kBAAkB,EAAE,CAAC,IAAAR,eAAO,EAACZ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEqB,QAAQ,EAAEpB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEoB,QAAQ,CAAC;MAEnEC,wBAAwB,EAAE,CAAC,IAAAV,eAAO,EAACZ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEuB,cAAc,EAAEtB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEsB,cAAc,CAAC;MAErFC,sBAAsB,EACpB,EAAA/C,kBAAA,GAAA9C,WAAW,CAACpC,KAAK,cAAAkF,kBAAA,uBAAjBA,kBAAA,CAAmBrF,OAAO,MAAKqI,SAAS,IACxC,CAAC,IAAAb,eAAO,EAACZ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAExG,YAAY,EAAEyG,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEzG,YAAY,CAAC;MAEzDkI,iBAAiB,EAAE,CAAC,IAAAd,eAAO,EACzBZ,QAAQ,aAARA,QAAQ,wBAAAtB,qBAAA,GAARsB,QAAQ,CAAEvF,cAAc,cAAAiE,qBAAA,uBAAxBA,qBAAA,CAA0BhE,SAAS,EACnCuF,OAAO,aAAPA,OAAO,wBAAAtB,qBAAA,GAAPsB,OAAO,CAAExF,cAAc,cAAAkE,qBAAA,uBAAvBA,qBAAA,CAAyBjE,SAC3B,CAAC;MAEDiH,qBAAqB,EACnB,CAAC,IAAAf,eAAO,EAACZ,QAAQ,aAARA,QAAQ,wBAAApB,qBAAA,GAARoB,QAAQ,CAAErF,WAAW,cAAAiE,qBAAA,uBAArBA,qBAAA,CAAuBjE,WAAW,EAAEsF,OAAO,aAAPA,OAAO,wBAAApB,oBAAA,GAAPoB,OAAO,CAAEtF,WAAW,cAAAkE,oBAAA,uBAApBA,oBAAA,CAAsBlE,WAAW,CAAC,IAC/E,CAAC,IAAAiG,eAAO,EACNZ,QAAQ,aAARA,QAAQ,wBAAAlB,sBAAA,GAARkB,QAAQ,CAAErF,WAAW,cAAAmE,sBAAA,uBAArBA,sBAAA,CAAuB9D,mBAAmB,EAC1CiF,OAAO,aAAPA,OAAO,wBAAAlB,qBAAA,GAAPkB,OAAO,CAAEtF,WAAW,cAAAoE,qBAAA,uBAApBA,qBAAA,CAAsB/D,mBACxB,CAAC;MAEH4G,gCAAgC,EAAE,CAAC,IAAAhB,eAAO,EACxC,CAAC,EAACZ,QAAQ,aAARA,QAAQ,gBAAAhB,qBAAA,GAARgB,QAAQ,CAAE/E,eAAe,cAAA+D,qBAAA,eAAzBA,qBAAA,CAA2B5F,OAAO,GACpC,CAAC,EAAC6G,OAAO,aAAPA,OAAO,gBAAAhB,qBAAA,GAAPgB,OAAO,CAAEhF,eAAe,cAAAgE,qBAAA,eAAxBA,qBAAA,CAA0B7F,OAAO,CACrC,CAAC;MAEDyI,mBAAmB,EAAE,CAAC,IAAAjB,eAAO,EAACZ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE8B,WAAW,EAAE7B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE6B,WAAW,CAAC;MAE1EC,2BAA2B,EACzB,CAAA9B,OAAO,aAAPA,OAAO,wBAAAf,qBAAA,GAAPe,OAAO,CAAE/E,iBAAiB,cAAAgE,qBAAA,uBAA1BA,qBAAA,CAA4B9F,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAAb,qBAAA,GAARa,QAAQ,CAAE9E,iBAAiB,cAAAiE,qBAAA,uBAA3BA,qBAAA,CAA6B/F,OAAO;MAE9E4I,8BAA8B,EAC5B,CAAA/B,OAAO,aAAPA,OAAO,wBAAAb,mBAAA,GAAPa,OAAO,CAAE9E,UAAU,cAAAiE,mBAAA,uBAAnBA,mBAAA,CAAqBhG,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAAX,oBAAA,GAARW,QAAQ,CAAE7E,UAAU,cAAAkE,oBAAA,uBAApBA,oBAAA,CAAsBjG,OAAO;MAEhE6I,0BAA0B,EACxB,CAAAhC,OAAO,aAAPA,OAAO,wBAAAX,qBAAA,GAAPW,OAAO,CAAE7E,gBAAgB,cAAAkE,qBAAA,uBAAzBA,qBAAA,CAA2BlG,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAAT,qBAAA,GAARS,QAAQ,CAAE5E,gBAAgB,cAAAmE,qBAAA,uBAA1BA,qBAAA,CAA4BnG,OAAO;MAE5E8I,wBAAwB,EACtB,CAAAjC,OAAO,aAAPA,OAAO,wBAAAT,qBAAA,GAAPS,OAAO,CAAE5E,qBAAqB,cAAAmE,qBAAA,uBAA9BA,qBAAA,CAAgCpG,OAAO,OAAK4G,QAAQ,aAARA,QAAQ,wBAAAP,qBAAA,GAARO,QAAQ,CAAE3E,qBAAqB,cAAAoE,qBAAA,uBAA/BA,qBAAA,CAAiCrG,OAAO,KACpF,CAAA6G,OAAO,aAAPA,OAAO,wBAAAP,sBAAA,GAAPO,OAAO,CAAE5E,qBAAqB,cAAAqE,sBAAA,uBAA9BA,sBAAA,CAAgCpE,wBAAwB,OACtD0E,QAAQ,aAARA,QAAQ,wBAAAL,sBAAA,GAARK,QAAQ,CAAE3E,qBAAqB,cAAAsE,sBAAA,uBAA/BA,sBAAA,CAAiCrE,wBAAwB,KAC3D,CAAA2E,OAAO,aAAPA,OAAO,wBAAAL,sBAAA,GAAPK,OAAO,CAAE5E,qBAAqB,cAAAuE,sBAAA,uBAA9BA,sBAAA,CAAgCrE,wBAAwB,OACtDyE,QAAQ,aAARA,QAAQ,wBAAAH,sBAAA,GAARG,QAAQ,CAAE3E,qBAAqB,cAAAwE,sBAAA,uBAA/BA,sBAAA,CAAiCtE,wBAAwB,KAC3D,CAAA0E,OAAO,aAAPA,OAAO,wBAAAH,sBAAA,GAAPG,OAAO,CAAE5E,qBAAqB,cAAAyE,sBAAA,uBAA9BA,sBAAA,CAAgCtE,kBAAkB,OAChDwE,QAAQ,aAARA,QAAQ,wBAAAD,sBAAA,GAARC,QAAQ,CAAE3E,qBAAqB,cAAA0E,sBAAA,uBAA/BA,sBAAA,CAAiCvE,kBAAkB;IACzD;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACAvD,aAAa,CAACM,KAAK,GAAG,UAACJ,QAAa,EAAK;EACvC,IAAIA,QAAQ,CAACE,MAAM,CAACM,IAAI,EAAE;IACxB,OAAOR,QAAQ,CAACE,MAAM,CAACM,IAAI,CAACL,UAAU;EACxC;EAEA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACAL,aAAa,CAACkK,oBAAoB,GAAG,UAACzG,WAAgB,EAAEvD,QAAa,EAAK;EAAA,IAAAiK,qBAAA,EAAAC,kBAAA,EAAAC,sBAAA,EAAAC,mBAAA;EACxE;EACA,IAAI,EAAC7G,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAE2F,QAAQ,KAAI,EAAClJ,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEkJ,QAAQ,GAAE;IACjD,OAAO,KAAK;EACd;EAEA,OACE,CAAA3F,WAAW,aAAXA,WAAW,wBAAA0G,qBAAA,GAAX1G,WAAW,CAAE2F,QAAQ,cAAAe,qBAAA,uBAArBA,qBAAA,CAAuBI,OAAO,OAAKrK,QAAQ,aAARA,QAAQ,wBAAAkK,kBAAA,GAARlK,QAAQ,CAAEkJ,QAAQ,cAAAgB,kBAAA,uBAAlBA,kBAAA,CAAoBG,OAAO,KAC9D,CAAA9G,WAAW,aAAXA,WAAW,wBAAA4G,sBAAA,GAAX5G,WAAW,CAAE2F,QAAQ,cAAAiB,sBAAA,uBAArBA,sBAAA,CAAuBG,SAAS,OAAKtK,QAAQ,aAARA,QAAQ,wBAAAoK,mBAAA,GAARpK,QAAQ,CAAEkJ,QAAQ,cAAAkB,mBAAA,uBAAlBA,mBAAA,CAAoBE,SAAS;AAEtE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACAxK,aAAa,CAACyK,sBAAsB,GAAG,UAACC,QAAa,EAAEC,QAAa,EAAK;EAAA,IAAAC,kBAAA,EAAAC,kBAAA,EAAAC,cAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,mBAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,qBAAA,EAAAC,sBAAA;EACvE,IAAMC,MAAM,GAAG;IAACC,cAAc,EAAE,KAAK;IAAEC,gBAAgB,EAAE;EAAK,CAAC;EAC/D;EACA,IAAI,GAAAb,kBAAA,GAACF,QAAQ,CAACxK,QAAQ,cAAA0K,kBAAA,eAAjBA,kBAAA,CAAmBxB,QAAQ,KAAI,GAAAyB,kBAAA,GAACF,QAAQ,CAACzK,QAAQ,cAAA2K,kBAAA,eAAjBA,kBAAA,CAAmBzB,QAAQ,GAAE;IAChE,OAAOmC,MAAM;EACf;;EAEA;EACA,IAAMG,YAAY,GAAG,CAAC,EACpB,CAAAZ,cAAA,GAAAJ,QAAQ,CAACiB,IAAI,cAAAb,cAAA,eAAbA,cAAA,CAAec,SAAS,IACxB,EAAAb,qBAAA,GAAAJ,QAAQ,CAACkB,YAAY,cAAAd,qBAAA,uBAArBA,qBAAA,CAAuBvL,MAAM,MAAK,CAAC,KAAAwL,sBAAA,GACnCL,QAAQ,CAACkB,YAAY,cAAAb,sBAAA,eAArBA,sBAAA,CAAwB,CAAC,CAAC,CAACY,SAAS,IACpC,EAAAX,sBAAA,GAAAN,QAAQ,CAACkB,YAAY,cAAAZ,sBAAA,uBAArBA,sBAAA,CAAwB,CAAC,CAAC,CAACa,KAAK,MAAKC,wBAAa,CAACC,MAAM,CAACC,MAAM,IAChE,EAAAf,mBAAA,GAAAP,QAAQ,CAACzK,QAAQ,cAAAgL,mBAAA,wBAAAC,qBAAA,GAAjBD,mBAAA,CAAmB9B,QAAQ,cAAA+B,qBAAA,uBAA3BA,qBAAA,CAA6Be,WAAW,MAAKC,oBAAS,CAACC,aAAa,CAACC,IAAI,KAAAjB,mBAAA,GACzET,QAAQ,CAACzK,QAAQ,cAAAkL,mBAAA,gBAAAC,qBAAA,GAAjBD,mBAAA,CAAmBhC,QAAQ,cAAAiC,qBAAA,gBAAAC,sBAAA,GAA3BD,qBAAA,CAA6BiB,MAAM,cAAAhB,sBAAA,eAAnCA,sBAAA,CAAqC9L,MAAM,CAC5C;EAED,IAAMgM,cAAc,GAClBd,QAAQ,CAACxK,QAAQ,CAACkJ,QAAQ,CAAC8C,WAAW,KAAKC,oBAAS,CAACC,aAAa,CAACG,QAAQ,IAC3E5B,QAAQ,CAACzK,QAAQ,CAACkJ,QAAQ,CAAC8C,WAAW,KAAKC,oBAAS,CAACC,aAAa,CAACC,IAAI;EAEzEd,MAAM,CAACC,cAAc,GAAGE,YAAY,IAAIF,cAAc;EACtDD,MAAM,CAACE,gBAAgB,GACrBf,QAAQ,CAACxK,QAAQ,CAACkJ,QAAQ,CAAC8C,WAAW,KAAKC,oBAAS,CAACC,aAAa,CAACC,IAAI,IACvE1B,QAAQ,CAACzK,QAAQ,CAACkJ,QAAQ,CAAC8C,WAAW,KAAKC,oBAAS,CAACC,aAAa,CAACG,QAAQ;EAE7E,OAAOhB,MAAM;AACf,CAAC;AAEDvL,aAAa,CAACwM,gBAAgB,GAAG,UAACC,KAAU,EAAK;EAAA,IAAAC,eAAA,EAAAC,qBAAA;EAC/C,OAAO,CAAAF,KAAK,aAALA,KAAK,wBAAAC,eAAA,GAALD,KAAK,CAAEvM,QAAQ,cAAAwM,eAAA,wBAAAC,qBAAA,GAAfD,eAAA,CAAiBtD,QAAQ,cAAAuD,qBAAA,uBAAzBA,qBAAA,CAA2BT,WAAW,MAAKC,oBAAS,CAACC,aAAa,CAACG,QAAQ;AACpF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAjN,OAAA,GAEaI,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["_lodash","require","_constants","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ControlsUtils","parse","controls","parsedControls","record","modifiedBy","getId","paused","recording","lastModified","meta","meetingContainer","meetingContainerUrl","transcribe","transcribing","caption","spokenLanguage","hesiodLlmId","aiSummaryNotification","manualCaptionControl","enabled","entryExitTone","mode","video","videoEnabled","muteOnEntry","shareControl","control","disallowUnmute","reactions","showDisplayNameWithReactions","viewTheParticipantList","_controls$viewThePart","_controls$viewThePart2","_controls$viewThePart3","_controls$viewThePart4","_controls$viewThePart5","_controls$viewThePart6","panelistEnabled","attendeeCount","raiseHand","webcastControl","streaming","meetingFull","_controls$meetingFull","_controls$meetingFull2","_controls$meetingFull3","_controls$meetingFull4","meetingPanelistFull","practiceSession","annotationControl","rdcControl","pollingQAControl","autoEndMeetingWarning","extensionDurationMinutes","countdownDurationMinutes","countdownStartedAt","getControls","oldControls","newControls","_current$muteOnEntry","_previous$muteOnEntry","_current$shareControl","_previous$shareContro","_current$disallowUnmu","_previous$disallowUnm","_current$reactions","_previous$reactions","_current$reactions2","_previous$reactions2","_current$viewTheParti","_previous$viewThePart","_current$viewTheParti2","_previous$viewThePart2","_current$viewTheParti3","_previous$viewThePart3","_current$raiseHand","_previous$raiseHand","_current$video","_previous$video","_previous$record","_previous$record2","_current$record","_previous$record3","_current$record2","_previous$record4","_current$record3","_previous$meetingCont","_current$meetingConta","_previous$transcribe","_current$transcribe","_previous$transcribe2","_current$transcribe2","_previous$transcribe3","_current$transcribe3","_previous$transcribe4","_current$transcribe4","_previous$transcribe5","_current$transcribe5","_previous$transcribe6","_current$transcribe6","_previous$transcribe7","_current$transcribe7","_previous$transcribe8","_current$transcribe8","_previous$manualCapti","_current$manualCaptio","_previous$manualCapti2","_current$manualCaptio2","_newControls$video","_previous$webcastCont","_current$webcastContr","_previous$meetingFull","_current$meetingFull","_previous$meetingFull2","_current$meetingFull2","_previous$practiceSes","_current$practiceSess","_current$annotationCo","_previous$annotationC","_current$rdcControl","_previous$rdcControl","_current$pollingQACon","_previous$pollingQACo","_current$autoEndMeeti","_previous$autoEndMeet","_current$autoEndMeeti2","_previous$autoEndMeet2","_current$autoEndMeeti3","_previous$autoEndMeet3","_current$autoEndMeeti4","_previous$autoEndMeet4","previous","current","updates","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasRecordingPausedChanged","isEqual","hasRecordingChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasHesiodLLMIdChanged","hasAiSummaryNotificationChanged","hasTranscribeSpokenLanguageChanged","hasManualCaptionChanged","hasEntryExitToneChanged","hasBreakoutChanged","breakout","hasInterpretationChanged","interpretation","hasVideoEnabledChanged","undefined","hasWebcastChanged","hasMeetingFullChanged","hasPracticeSessionEnabledChanged","hasStageViewChanged","videoLayout","hasAnnotationControlChanged","hasRemoteDesktopControlChanged","hasPollingQAControlChanged","hasAutoEndMeetingChanged","isNeedReplaceMembers","_oldControls$breakout","_controls$breakout","_oldControls$breakout2","_controls$breakout2","groupId","sessionId","getSessionSwitchStatus","oldLocus","newLocus","_oldLocus$controls","_newLocus$controls","_oldLocus$self","_newLocus$participant","_newLocus$participant2","_newLocus$participant3","_newLocus$controls2","_newLocus$controls2$b","_newLocus$controls3","_newLocus$controls3$b","_newLocus$controls3$b2","status","isReturnToMain","isJoinToBreakout","needUseCache","self","isCreator","participants","state","MEETING_STATE","STATES","JOINED","sessionType","BREAKOUTS","SESSION_TYPES","MAIN","groups","BREAKOUT","isMainSessionDTO","locus","_locus$controls","_locus$controls$break","_default","exports"],"sources":["controlsUtils.ts"],"sourcesContent":["import {isEqual} from 'lodash';\nimport {BREAKOUTS, MEETING_STATE} from '../constants';\n\nconst ControlsUtils: any = {};\n\n/**\n * Controls\n * @typedef {Object} LocusControls\n * @property {Object} record\n * @property {Boolean} record.recording\n * @property {Object} record.meta\n * @property {String} record.meta.modifiedBy\n */\n\n/**\n * parse the relevant host values that we care about: id\n * @param {LocusControls} controls\n * @returns {Object} parsedObject - parsed host or null if host was undefined\n * @returns {String} parsedObject.recordingId\n */\nControlsUtils.parse = (controls: any) => {\n const parsedControls = {...controls};\n\n if (controls && controls.record) {\n parsedControls.record = {\n modifiedBy: ControlsUtils.getId(controls),\n paused: controls.record.paused ? controls.record.paused : false,\n recording: controls.record.recording,\n lastModified: controls.record.meta.lastModified,\n };\n }\n\n if (controls && controls.meetingContainer) {\n parsedControls.meetingContainer = {\n meetingContainerUrl: controls.meetingContainer.meetingContainerUrl,\n };\n }\n\n if (controls && controls.transcribe) {\n parsedControls.transcribe = {\n transcribing: controls.transcribe.transcribing,\n caption: controls.transcribe.caption,\n spokenLanguage: controls.transcribe.spokenLanguage,\n hesiodLlmId: controls.transcribe.hesiodLlmId,\n aiSummaryNotification: controls.transcribe.aiSummaryNotification,\n };\n }\n\n if (controls && controls.manualCaptionControl) {\n parsedControls.manualCaptionControl = {\n enabled: controls.manualCaptionControl.enabled,\n };\n }\n\n if (controls && controls.entryExitTone) {\n parsedControls.entryExitTone = controls.entryExitTone.enabled\n ? controls.entryExitTone.mode\n : null;\n }\n\n if (controls && controls.video) {\n parsedControls.videoEnabled = controls.video.enabled;\n }\n\n if (controls?.muteOnEntry) {\n parsedControls.muteOnEntry = {enabled: controls.muteOnEntry.enabled};\n }\n\n if (controls?.shareControl) {\n parsedControls.shareControl = {control: controls.shareControl.control};\n }\n\n if (controls?.disallowUnmute) {\n parsedControls.disallowUnmute = {enabled: controls.disallowUnmute.enabled};\n }\n\n if (controls?.reactions) {\n parsedControls.reactions = {\n enabled: controls.reactions.enabled,\n showDisplayNameWithReactions: controls.reactions.showDisplayNameWithReactions,\n };\n }\n\n if (controls?.viewTheParticipantList) {\n parsedControls.viewTheParticipantList = {\n enabled: controls.viewTheParticipantList?.enabled ?? false,\n panelistEnabled: controls.viewTheParticipantList?.panelistEnabled ?? false,\n attendeeCount: controls.viewTheParticipantList?.attendeeCount ?? 0,\n };\n }\n\n if (controls?.raiseHand) {\n parsedControls.raiseHand = {enabled: controls.raiseHand.enabled};\n }\n\n if (controls?.video) {\n parsedControls.video = {enabled: controls.video.enabled};\n }\n\n if (controls?.webcastControl) {\n parsedControls.webcastControl = {streaming: controls.webcastControl.streaming};\n }\n\n if (controls?.meetingFull) {\n parsedControls.meetingFull = {\n meetingFull: controls.meetingFull?.meetingFull ?? false,\n meetingPanelistFull: controls.meetingFull?.meetingPanelistFull ?? false,\n };\n }\n\n if (controls?.practiceSession) {\n parsedControls.practiceSession = {\n enabled: controls.practiceSession.enabled,\n };\n }\n\n if (controls?.annotationControl) {\n parsedControls.annotationControl = {\n enabled: controls.annotationControl.enabled,\n };\n }\n\n if (controls?.rdcControl) {\n parsedControls.rdcControl = {\n enabled: controls.rdcControl.enabled,\n };\n }\n\n if (controls?.pollingQAControl) {\n parsedControls.pollingQAControl = {\n enabled: controls.pollingQAControl.enabled,\n };\n }\n\n if (controls?.autoEndMeetingWarning) {\n parsedControls.autoEndMeetingWarning = {\n enabled: controls.autoEndMeetingWarning.enabled,\n extensionDurationMinutes: controls.autoEndMeetingWarning.extensionDurationMinutes,\n countdownDurationMinutes: controls.autoEndMeetingWarning.countdownDurationMinutes,\n countdownStartedAt: controls.autoEndMeetingWarning.countdownStartedAt,\n };\n }\n\n return parsedControls;\n};\n\n/**\n * parses and returns previous state vs current state and triggers the changes.\n * @param {LocusControls} oldControls previous state\n * @param {LocusControls} newControls current state\n * @returns {Object} combination of state plus the changes\n */\nControlsUtils.getControls = (oldControls: any, newControls: any) => {\n const previous = ControlsUtils.parse(oldControls);\n const current = ControlsUtils.parse(newControls);\n\n return {\n previous,\n current,\n updates: {\n hasMuteOnEntryChanged: current?.muteOnEntry?.enabled !== previous?.muteOnEntry?.enabled,\n\n hasShareControlChanged: current?.shareControl?.control !== previous?.shareControl?.control,\n\n hasDisallowUnmuteChanged:\n current?.disallowUnmute?.enabled !== previous?.disallowUnmute?.enabled,\n\n hasReactionsChanged: current?.reactions?.enabled !== previous?.reactions?.enabled,\n\n hasReactionDisplayNamesChanged:\n current?.reactions?.showDisplayNameWithReactions !==\n previous?.reactions?.showDisplayNameWithReactions,\n\n hasViewTheParticipantListChanged:\n current?.viewTheParticipantList?.enabled !== previous?.viewTheParticipantList?.enabled ||\n current?.viewTheParticipantList?.panelistEnabled !==\n previous?.viewTheParticipantList?.panelistEnabled ||\n current?.viewTheParticipantList?.attendeeCount !==\n previous?.viewTheParticipantList?.attendeeCount,\n\n hasRaiseHandChanged: current?.raiseHand?.enabled !== previous?.raiseHand?.enabled,\n\n hasVideoChanged: current?.video?.enabled !== previous?.video?.enabled,\n\n hasRecordingPausedChanged:\n current?.record &&\n !isEqual(previous?.record?.paused, current.record.paused) &&\n (previous?.record?.recording || current?.record?.recording), // see comments directly below\n\n hasRecordingChanged:\n current?.record &&\n !isEqual(previous?.record?.recording, current?.record?.recording) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true\n (previous?.record?.recording || current?.record?.recording), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting\n\n hasMeetingContainerChanged:\n current?.meetingContainer &&\n !isEqual(\n previous?.meetingContainer?.meetingContainerUrl,\n current?.meetingContainer?.meetingContainerUrl\n ),\n\n hasTranscribeChanged:\n current?.transcribe &&\n !isEqual(previous?.transcribe?.transcribing, current?.transcribe?.transcribing) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true\n (previous?.transcribe?.transcribing || current?.transcribe?.transcribing), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting\n\n hasHesiodLLMIdChanged:\n current?.transcribe &&\n !isEqual(previous?.transcribe?.hesiodLlmId, current?.transcribe?.hesiodLlmId) &&\n !!(previous?.transcribe?.hesiodLlmId || current?.transcribe?.hesiodLlmId),\n\n hasAiSummaryNotificationChanged:\n current?.transcribe &&\n !isEqual(\n previous?.transcribe?.aiSummaryNotification,\n current?.transcribe?.aiSummaryNotification\n ) &&\n !!(\n previous?.transcribe?.aiSummaryNotification || current?.transcribe?.aiSummaryNotification\n ),\n\n hasTranscribeSpokenLanguageChanged:\n current?.transcribe &&\n !isEqual(previous?.transcribe?.spokenLanguage, current?.transcribe?.spokenLanguage) &&\n !!(previous?.transcribe?.spokenLanguage || current?.transcribe?.spokenLanguage),\n\n hasManualCaptionChanged:\n current?.manualCaptionControl &&\n !isEqual(previous?.manualCaptionControl?.enabled, current?.manualCaptionControl?.enabled) &&\n (previous?.manualCaptionControl?.enabled || current?.manualCaptionControl?.enabled),\n\n hasEntryExitToneChanged: !!(\n newControls.entryExitTone &&\n !isEqual(previous?.entryExitTone, current?.entryExitTone) &&\n (previous?.entryExitTone || current?.entryExitTone)\n ),\n\n hasBreakoutChanged: !isEqual(previous?.breakout, current?.breakout),\n\n hasInterpretationChanged: !isEqual(previous?.interpretation, current?.interpretation),\n\n hasVideoEnabledChanged:\n newControls.video?.enabled !== undefined &&\n !isEqual(previous?.videoEnabled, current?.videoEnabled),\n\n hasWebcastChanged: !isEqual(\n previous?.webcastControl?.streaming,\n current?.webcastControl?.streaming\n ),\n\n hasMeetingFullChanged:\n !isEqual(previous?.meetingFull?.meetingFull, current?.meetingFull?.meetingFull) ||\n !isEqual(\n previous?.meetingFull?.meetingPanelistFull,\n current?.meetingFull?.meetingPanelistFull\n ),\n\n hasPracticeSessionEnabledChanged: !isEqual(\n !!previous?.practiceSession?.enabled,\n !!current?.practiceSession?.enabled\n ),\n\n hasStageViewChanged: !isEqual(previous?.videoLayout, current?.videoLayout),\n\n hasAnnotationControlChanged:\n current?.annotationControl?.enabled !== previous?.annotationControl?.enabled,\n\n hasRemoteDesktopControlChanged:\n current?.rdcControl?.enabled !== previous?.rdcControl?.enabled,\n\n hasPollingQAControlChanged:\n current?.pollingQAControl?.enabled !== previous?.pollingQAControl?.enabled,\n\n hasAutoEndMeetingChanged:\n current?.autoEndMeetingWarning?.enabled !== previous?.autoEndMeetingWarning?.enabled ||\n current?.autoEndMeetingWarning?.extensionDurationMinutes !==\n previous?.autoEndMeetingWarning?.extensionDurationMinutes ||\n current?.autoEndMeetingWarning?.countdownDurationMinutes !==\n previous?.autoEndMeetingWarning?.countdownDurationMinutes ||\n current?.autoEndMeetingWarning?.countdownStartedAt !==\n previous?.autoEndMeetingWarning?.countdownStartedAt,\n },\n };\n};\n\n/**\n * Extract the id from the record controls object\n * @param {LocusControls} controls\n * @returns {String|null}\n */\nControlsUtils.getId = (controls: any) => {\n if (controls.record.meta) {\n return controls.record.meta.modifiedBy;\n }\n\n return null;\n};\n\n/**\n * check whether to replace the meeting's members or not.\n * For case joined breakout session, need replace meeting's members\n * @param {LocusControls} oldControls\n * @param {LocusControls} controls\n * @returns {Boolean}\n */\nControlsUtils.isNeedReplaceMembers = (oldControls: any, controls: any) => {\n // no breakout case\n if (!oldControls?.breakout || !controls?.breakout) {\n return false;\n }\n\n return (\n oldControls?.breakout?.groupId !== controls?.breakout?.groupId ||\n oldControls?.breakout?.sessionId !== controls?.breakout?.sessionId\n );\n};\n\n/**\n * determine the switch status between breakout session and main session.\n * @param {LocusInfo} oldLocus\n * @param {LocusInfo} newLocus\n * @returns {Object}\n */\nControlsUtils.getSessionSwitchStatus = (oldLocus: any, newLocus: any) => {\n const status = {isReturnToMain: false, isJoinToBreakout: false};\n // no breakout case\n if (!oldLocus.controls?.breakout || !newLocus.controls?.breakout) {\n return status;\n }\n\n // It is used to fix the timing issue triggered when the creator leaves session to ensure that the member list is complete\n const needUseCache = !!(\n oldLocus.self?.isCreator &&\n newLocus.participants?.length === 1 &&\n newLocus.participants?.[0].isCreator &&\n newLocus.participants?.[0].state === MEETING_STATE.STATES.JOINED &&\n newLocus.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&\n newLocus.controls?.breakout?.groups?.length\n );\n\n const isReturnToMain =\n oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&\n newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n\n status.isReturnToMain = needUseCache || isReturnToMain;\n status.isJoinToBreakout =\n oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&\n newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;\n\n return status;\n};\n\nControlsUtils.isMainSessionDTO = (locus: any) => {\n return locus?.controls?.breakout?.sessionType !== BREAKOUTS.SESSION_TYPES.BREAKOUT;\n};\n\nexport default ControlsUtils;\n"],"mappings":"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","ignoreList":[]}
@@ -59,7 +59,7 @@ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0,
59
59
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
60
60
  // list of top level keys in Locus DTO relevant for Hash Tree DTOs processing
61
61
  // it does not contain fields specific to classic Locus DTOs like sequence or baseSequence
62
- var LocusDtoTopLevelKeys = ['controls', 'fullState', 'host', 'info', 'links', 'mediaShares', 'meetings', 'participants', 'replaces', 'self', 'sequence', 'syncUrl', 'url', 'htMeta' // only exists when hash trees are used
62
+ var LocusDtoTopLevelKeys = ['controls', 'fullState', 'embeddedApps', 'host', 'info', 'links', 'mediaShares', 'meetings', 'participants', 'replaces', 'self', 'sequence', 'syncUrl', 'url', 'htMeta' // only exists when hash trees are used
63
63
  ];
64
64
  var LocusObjectStateAfterUpdates = {
65
65
  unchanged: 'unchanged',
@@ -210,7 +210,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
210
210
  // in some cases Locus might return us full DTO even when we asked for a delta
211
211
  _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> got full DTO when we asked for delta');
212
212
  }
213
- meeting.locusInfo.onFullLocus(res.body);
213
+ meeting.locusInfo.onFullLocus('classic Locus sync', res.body);
214
214
  }).catch(function (e) {
215
215
  _loggerProxy.default.logger.info("Locus-info:index#doLocusSync --> getLocusDTO succeeded but failed to handle result, locus parser will resume but not all data may be synced (".concat(e.toString(), ")"));
216
216
  _metrics.default.sendBehavioralMetric(_constants2.default.LOCUS_SYNC_HANDLING_FAILED, {
@@ -339,12 +339,16 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
339
339
  }, {
340
340
  key: "createHashTreeParser",
341
341
  value: function createHashTreeParser(_ref) {
342
- var initialLocus = _ref.initialLocus;
342
+ var _this$webex$config$me;
343
+ var initialLocus = _ref.initialLocus,
344
+ metadata = _ref.metadata;
343
345
  return new _hashTreeParser.default({
344
346
  initialLocus: initialLocus,
347
+ metadata: metadata,
345
348
  webexRequest: this.webex.request.bind(this.webex),
346
349
  locusInfoUpdateCallback: this.updateFromHashTree.bind(this),
347
- debugId: "HT-".concat(this.meetingId.substring(0, 4))
350
+ debugId: "HT-".concat(this.meetingId.substring(0, 4)),
351
+ excludedDataSets: (_this$webex$config$me = this.webex.config.meetings.locus) === null || _this$webex$config$me === void 0 ? void 0 : _this$webex$config$me.excludedDataSets
348
352
  });
349
353
  }
350
354
 
@@ -358,7 +362,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
358
362
  value: (function () {
359
363
  var _initialSetup = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(data) {
360
364
  var _data$locus, _data$locus$links, _data$locus$links$res, _data$locus$links$res2;
361
- var _data$hashTreeMessage, _selfObject$data, selfObject, _data$locus2, _data$locus2$self, _t;
365
+ var _data$hashTreeMessage, _metadataObject$data, metadataObject, _t;
362
366
  return _regenerator.default.wrap(function (_context) {
363
367
  while (1) switch (_context.prev = _context.next) {
364
368
  case 0:
@@ -370,29 +374,32 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
370
374
  _context.next = 4;
371
375
  break;
372
376
  }
373
- // we need the SELF object to be in the received message, because it contains visibleDataSets
377
+ // we need the Metadata object to be in the received message, because it contains visibleDataSets
374
378
  // and these are needed to initialize all the hash trees
375
- selfObject = (_data$hashTreeMessage = data.hashTreeMessage.locusStateElements) === null || _data$hashTreeMessage === void 0 ? void 0 : _data$hashTreeMessage.find(function (el) {
376
- return (0, _utils.isSelf)(el);
379
+ metadataObject = (_data$hashTreeMessage = data.hashTreeMessage.locusStateElements) === null || _data$hashTreeMessage === void 0 ? void 0 : _data$hashTreeMessage.find(function (el) {
380
+ return (0, _utils.isMetadata)(el);
377
381
  });
378
- if (selfObject !== null && selfObject !== void 0 && (_selfObject$data = selfObject.data) !== null && _selfObject$data !== void 0 && _selfObject$data.visibleDataSets) {
382
+ if (metadataObject !== null && metadataObject !== void 0 && (_metadataObject$data = metadataObject.data) !== null && _metadataObject$data !== void 0 && _metadataObject$data.visibleDataSets) {
379
383
  _context.next = 2;
380
384
  break;
381
385
  }
382
- _loggerProxy.default.logger.warn("Locus-info:index#initialSetup --> cannot initialize HashTreeParser, SELF object with visibleDataSets is missing in the message");
383
- throw new Error('SELF object with visibleDataSets is missing in the message');
386
+ // this is a common case (not an error)
387
+ // it happens for example after we leave the meeting and still get some heartbeats or delayed messages
388
+ _loggerProxy.default.logger.info("Locus-info:index#initialSetup --> cannot initialize HashTreeParser, Metadata object with visibleDataSets is missing in the message");
389
+
390
+ // throw so that handleLocusEvent() catches it and destroys the partially created meeting object
391
+ throw new Error('Metadata object with visibleDataSets is missing in the message');
384
392
  case 2:
385
393
  _loggerProxy.default.logger.info('Locus-info:index#initialSetup --> creating HashTreeParser from message');
386
394
  // first create the HashTreeParser, but don't initialize it with any data yet
387
- // pass just a fake locus that contains only the visibleDataSets
388
395
  this.hashTreeParser = this.createHashTreeParser({
389
396
  initialLocus: {
390
- locus: {
391
- self: {
392
- visibleDataSets: selfObject.data.visibleDataSets
393
- }
394
- },
397
+ locus: null,
395
398
  dataSets: [] // empty, because they will be populated in initializeFromMessage() call // dataSets: data.hashTreeMessage.dataSets,
399
+ },
400
+ metadata: {
401
+ htMeta: metadataObject.htMeta,
402
+ visibleDataSets: metadataObject.data.visibleDataSets
396
403
  }
397
404
  });
398
405
 
@@ -405,12 +412,12 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
405
412
  case 4:
406
413
  // "classic" Locus case, no hash trees involved
407
414
  this.updateLocusCache(data.locus);
408
- this.onFullLocus(data.locus, undefined);
415
+ this.onFullLocus('classic locus message', data.locus, undefined);
409
416
  case 5:
410
417
  return _context.abrupt("continue", 10);
411
418
  case 6:
412
419
  this.updateLocusCache(data.locus);
413
- this.onFullLocus(data.locus, undefined, data.dataSets);
420
+ this.onFullLocus('join response', data.locus, undefined, data.dataSets, data.metadata);
414
421
  return _context.abrupt("continue", 10);
415
422
  case 7:
416
423
  if (!((_data$locus = data.locus) !== null && _data$locus !== void 0 && (_data$locus$links = _data$locus.links) !== null && _data$locus$links !== void 0 && (_data$locus$links$res = _data$locus$links.resources) !== null && _data$locus$links$res !== void 0 && (_data$locus$links$res2 = _data$locus$links$res.visibleDataSets) !== null && _data$locus$links$res2 !== void 0 && _data$locus$links$res2.url)) {
@@ -419,16 +426,12 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
419
426
  }
420
427
  _loggerProxy.default.logger.info('Locus-info:index#initialSetup --> creating HashTreeParser from get-loci-response');
421
428
  // first create the HashTreeParser, but don't initialize it with any data yet
422
- // pass just a fake locus that contains only the visibleDataSets
423
429
  this.hashTreeParser = this.createHashTreeParser({
424
430
  initialLocus: {
425
- locus: {
426
- self: {
427
- visibleDataSets: (_data$locus2 = data.locus) === null || _data$locus2 === void 0 ? void 0 : (_data$locus2$self = _data$locus2.self) === null || _data$locus2$self === void 0 ? void 0 : _data$locus2$self.visibleDataSets
428
- }
429
- },
431
+ locus: null,
430
432
  dataSets: [] // empty, because we don't have them yet
431
- }
433
+ },
434
+ metadata: null // get-loci-response doesn't contain Metadata object
432
435
  });
433
436
 
434
437
  // now initialize all the data
@@ -440,7 +443,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
440
443
  case 9:
441
444
  // "classic" Locus case, no hash trees involved
442
445
  this.updateLocusCache(data.locus);
443
- this.onFullLocus(data.locus, undefined);
446
+ this.onFullLocus('classic get-loci-response', data.locus, undefined);
444
447
  case 10:
445
448
  // Change it to true after it receives it first locus object
446
449
  this.emitChange = true;
@@ -543,6 +546,27 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
543
546
  });
544
547
  }
545
548
  break;
549
+ case _types.ObjectType.embeddedApp:
550
+ if (object.data) {
551
+ var _locus$embeddedApps;
552
+ _loggerProxy.default.logger.info("Locus-info:index#updateLocusFromHashTreeObject --> embeddedApp id=".concat(object.htMeta.elementId.id, " url='").concat(object.data.url, "' updated version=").concat(object.htMeta.elementId.version, ":"), object.data);
553
+ var existingEmbeddedApp = (_locus$embeddedApps = locus.embeddedApps) === null || _locus$embeddedApps === void 0 ? void 0 : _locus$embeddedApps.find(function (ms) {
554
+ return ms.htMeta.elementId.id === object.htMeta.elementId.id;
555
+ });
556
+ if (existingEmbeddedApp) {
557
+ (0, _assign.default)(existingEmbeddedApp, object.data);
558
+ } else {
559
+ locus.embeddedApps = locus.embeddedApps || [];
560
+ locus.embeddedApps.push(object.data);
561
+ }
562
+ } else {
563
+ var _locus$embeddedApps2;
564
+ _loggerProxy.default.logger.info("Locus-info:index#updateLocusFromHashTreeObject --> embeddedApp id=".concat(object.htMeta.elementId.id, " removed, version=").concat(object.htMeta.elementId.version));
565
+ locus.embeddedApps = (_locus$embeddedApps2 = locus.embeddedApps) === null || _locus$embeddedApps2 === void 0 ? void 0 : _locus$embeddedApps2.filter(function (ms) {
566
+ return ms.htMeta.elementId.id !== object.htMeta.elementId.id;
567
+ });
568
+ }
569
+ break;
546
570
  case _types.ObjectType.participant:
547
571
  _loggerProxy.default.logger.info("Locus-info:index#updateLocusFromHashTreeObject --> participant id=".concat(object.htMeta.elementId.id, " ").concat(object.data ? 'updated' : 'removed', " version=").concat(object.htMeta.elementId.version));
548
572
  if (object.data) {
@@ -598,6 +622,10 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
598
622
  }
599
623
  }
600
624
  break;
625
+ case _types.ObjectType.metadata:
626
+ _loggerProxy.default.logger.info("Locus-info:index#updateLocusFromHashTreeObject --> metadata object updated to version ".concat(object.htMeta.elementId.version));
627
+ // we don't use hash tree metadata right now for anything, it's mainly used internally by HashTreeParser
628
+ break;
601
629
  default:
602
630
  _loggerProxy.default.logger.warn("Locus-info:index#updateLocusFromHashTreeObject --> received unsupported object type ".concat(type));
603
631
  break;
@@ -637,14 +665,30 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
637
665
  */
638
666
  }, {
639
667
  key: "handleHashTreeMessage",
640
- value: function handleHashTreeMessage(meeting, eventType, message) {
641
- if (eventType !== _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED) {
642
- this.sendClassicVsHashTreeMismatchMetric(meeting, "got ".concat(eventType, ", expected ").concat(_constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED));
643
- return;
668
+ value: (function () {
669
+ var _handleHashTreeMessage = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(meeting, eventType, message) {
670
+ return _regenerator.default.wrap(function (_context2) {
671
+ while (1) switch (_context2.prev = _context2.next) {
672
+ case 0:
673
+ if (!(eventType !== _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED)) {
674
+ _context2.next = 1;
675
+ break;
676
+ }
677
+ this.sendClassicVsHashTreeMismatchMetric(meeting, "got ".concat(eventType, ", expected ").concat(_constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED));
678
+ return _context2.abrupt("return");
679
+ case 1:
680
+ this.hashTreeParser.handleMessage(message);
681
+ case 2:
682
+ case "end":
683
+ return _context2.stop();
684
+ }
685
+ }, _callee2, this);
686
+ }));
687
+ function handleHashTreeMessage(_x2, _x3, _x4) {
688
+ return _handleHashTreeMessage.apply(this, arguments);
644
689
  }
645
- this.hashTreeParser.handleMessage(message);
646
- }
647
-
690
+ return handleHashTreeMessage;
691
+ }()
648
692
  /**
649
693
  * Callback registered with HashTreeParser to receive locus info updates.
650
694
  * Updates our locus info based on the data parsed by the hash tree parser.
@@ -653,6 +697,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
653
697
  * @param {Object} [data] - Additional data for the update, if applicable.
654
698
  * @returns {void}
655
699
  */
700
+ )
656
701
  }, {
657
702
  key: "updateFromHashTree",
658
703
  value: function updateFromHashTree(updateType, data) {
@@ -749,8 +794,13 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
749
794
  if (this.hashTreeParser) {
750
795
  this.handleHashTreeMessage(meeting, data.eventType, data.stateElementsMessage);
751
796
  } else {
752
- // eslint-disable-next-line @typescript-eslint/no-shadow
753
797
  var eventType = data.eventType;
798
+ if (eventType === _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED) {
799
+ // this can happen when we get an event before join http response
800
+ // it's OK to just ignore it
801
+ _loggerProxy.default.logger.info("Locus-info:index#parse --> received locus hash tree event before hashTreeParser is created");
802
+ return;
803
+ }
754
804
  var locus = this.getTheLocusToUpdate(data.locus);
755
805
  _loggerProxy.default.logger.info("Locus-info:index#parse --> received locus data: ".concat(eventType));
756
806
  locus.jsSdkMeta = {
@@ -771,14 +821,11 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
771
821
  case _constants.LOCUSEVENT.PARTICIPANT_DECLINED:
772
822
  case _constants.LOCUSEVENT.FLOOR_GRANTED:
773
823
  case _constants.LOCUSEVENT.FLOOR_RELEASED:
774
- this.onFullLocus(locus, eventType);
824
+ this.onFullLocus("classic locus event ".concat(eventType), locus, eventType);
775
825
  break;
776
826
  case _constants.LOCUSEVENT.DIFFERENCE:
777
827
  this.handleLocusDelta(locus, meeting);
778
828
  break;
779
- case _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED:
780
- this.sendClassicVsHashTreeMismatchMetric(meeting, "got ".concat(eventType, ", expected classic events"));
781
- break;
782
829
  default:
783
830
  // Why will there be a event with no eventType ????
784
831
  // we may not need this, we can get full locus
@@ -803,32 +850,36 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
803
850
  /**
804
851
  * Function for handling full locus when it's using hash trees (so not the "classic" one).
805
852
  *
853
+ * @param {string} debugText string explaining the trigger for this call, added to logs for debugging purposes
806
854
  * @param {object} locus locus object
855
+ * @param {object} metadata locus hash trees metadata
807
856
  * @param {string} eventType locus event
808
857
  * @param {DataSet[]} dataSets
809
858
  * @returns {void}
810
859
  */
811
860
  }, {
812
861
  key: "onFullLocusWithHashTrees",
813
- value: function onFullLocusWithHashTrees(locus, eventType, dataSets) {
862
+ value: function onFullLocusWithHashTrees(debugText, locus, metadata, eventType, dataSets) {
814
863
  if (!this.hashTreeParser) {
815
- _loggerProxy.default.logger.info("Locus-info:index#onFullLocus --> creating hash tree parser");
816
- _loggerProxy.default.logger.info('Locus-info:index#onFullLocus --> dataSets:', dataSets, ' and locus:', locus);
864
+ _loggerProxy.default.logger.info("Locus-info:index#onFullLocus (".concat(debugText, ") --> creating hash tree parser"));
865
+ _loggerProxy.default.logger.info("Locus-info:index#onFullLocus (".concat(debugText, ") --> dataSets:"), dataSets, ' and locus:', locus, ' and metadata:', metadata);
817
866
  this.hashTreeParser = this.createHashTreeParser({
818
867
  initialLocus: {
819
868
  locus: locus,
820
869
  dataSets: dataSets
821
- }
870
+ },
871
+ metadata: metadata
822
872
  });
823
873
  this.onFullLocusCommon(locus, eventType);
824
874
  } else {
825
875
  // in this case the Locus we're getting is not necessarily the full one
826
876
  // so treat it like if we just got it in any api response
827
877
 
828
- _loggerProxy.default.logger.info('Locus-info:index#onFullLocus --> hash tree parser already exists, handling it like a normal API response');
878
+ _loggerProxy.default.logger.info("Locus-info:index#onFullLocus (".concat(debugText, ") --> hash tree parser already exists, handling it like a normal API response"));
829
879
  this.handleLocusAPIResponse(undefined, {
830
880
  dataSets: dataSets,
831
- locus: locus
881
+ locus: locus,
882
+ metadata: metadata
832
883
  });
833
884
  }
834
885
  }
@@ -836,15 +887,16 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
836
887
  /**
837
888
  * Function for handling full locus when it's the "classic" one (not hash trees)
838
889
  *
890
+ * @param {string} debugText string explaining the trigger for this call, added to logs for debugging purposes
839
891
  * @param {object} locus locus object
840
892
  * @param {string} eventType locus event
841
893
  * @returns {void}
842
894
  */
843
895
  }, {
844
896
  key: "onFullLocusClassic",
845
- value: function onFullLocusClassic(locus, eventType) {
897
+ value: function onFullLocusClassic(debugText, locus, eventType) {
846
898
  if (!this.locusParser.isNewFullLocus(locus)) {
847
- _loggerProxy.default.logger.info("Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=".concat(eventType));
899
+ _loggerProxy.default.logger.info("Locus-info:index#onFullLocus (".concat(debugText, ") --> ignoring old full locus DTO, eventType=").concat(eventType));
848
900
  return;
849
901
  }
850
902
  this.onFullLocusCommon(locus, eventType);
@@ -852,23 +904,28 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
852
904
 
853
905
  /**
854
906
  * updates the locus with full locus object
907
+ * @param {string} debugText string explaining the trigger for this call, added to logs for debugging purposes
855
908
  * @param {object} locus locus object
856
909
  * @param {string} eventType locus event
857
910
  * @param {DataSet[]} dataSets
911
+ * @param {object} metadata locus hash trees metadata
858
912
  * @returns {object} null
859
913
  * @memberof LocusInfo
860
914
  */
861
915
  }, {
862
916
  key: "onFullLocus",
863
- value: function onFullLocus(locus, eventType, dataSets) {
917
+ value: function onFullLocus(debugText, locus, eventType, dataSets, metadata) {
864
918
  if (!locus) {
865
- _loggerProxy.default.logger.error('Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.');
919
+ _loggerProxy.default.logger.error("Locus-info:index#onFullLocus (".concat(debugText, ") --> object passed as argument was invalid, continuing."));
866
920
  }
867
921
  if (dataSets) {
922
+ if (!metadata) {
923
+ throw new Error("Locus-info:index#onFullLocus (".concat(debugText, ") --> hash tree metadata is missing with full Locus"));
924
+ }
868
925
  // this is the new hashmap Locus DTO format (only applicable to webinars for now)
869
- this.onFullLocusWithHashTrees(locus, eventType, dataSets);
926
+ this.onFullLocusWithHashTrees(debugText, locus, metadata, eventType, dataSets);
870
927
  } else {
871
- this.onFullLocusClassic(locus, eventType);
928
+ this.onFullLocusClassic(debugText, locus, eventType);
872
929
  }
873
930
  }
874
931
 
@@ -1102,23 +1159,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1102
1159
  reason: _constants.MEETING_REMOVED_REASON.MEETING_INACTIVE_TERMINATING,
1103
1160
  shouldLeave: false
1104
1161
  });
1105
- } else if (this.fullState && this.fullState.removed) {
1106
- // user has been dropped from a meeting
1107
-
1108
- // @ts-ignore
1109
- this.webex.internal.newMetrics.submitClientEvent({
1110
- name: 'client.call.remote-ended',
1111
- options: {
1112
- meetingId: this.meetingId
1113
- }
1114
- });
1115
- this.emitScoped({
1116
- file: 'locus-info',
1117
- function: 'isMeetingActive'
1118
- }, _constants.EVENTS.DESTROY_MEETING, {
1119
- reason: _constants.MEETING_REMOVED_REASON.FULLSTATE_REMOVED,
1120
- shouldLeave: false
1121
- });
1122
1162
  }
1123
1163
  // If you are guest and you are removed from the meeting
1124
1164
  // You wont get any further events
@@ -1246,6 +1286,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1246
1286
  hasMeetingContainerChanged = _ControlsUtils$getCon2.hasMeetingContainerChanged,
1247
1287
  hasTranscribeChanged = _ControlsUtils$getCon2.hasTranscribeChanged,
1248
1288
  hasHesiodLLMIdChanged = _ControlsUtils$getCon2.hasHesiodLLMIdChanged,
1289
+ hasAiSummaryNotificationChanged = _ControlsUtils$getCon2.hasAiSummaryNotificationChanged,
1249
1290
  hasTranscribeSpokenLanguageChanged = _ControlsUtils$getCon2.hasTranscribeSpokenLanguageChanged,
1250
1291
  hasManualCaptionChanged = _ControlsUtils$getCon2.hasManualCaptionChanged,
1251
1292
  hasEntryExitToneChanged = _ControlsUtils$getCon2.hasEntryExitToneChanged,
@@ -1376,6 +1417,14 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1376
1417
  hesiodLlmId: hesiodLlmId
1377
1418
  });
1378
1419
  }
1420
+ if (hasAiSummaryNotificationChanged) {
1421
+ this.emitScoped({
1422
+ file: 'locus-info',
1423
+ function: 'updateControls'
1424
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED, {
1425
+ aiSummaryNotification: current.transcribe.aiSummaryNotification
1426
+ });
1427
+ }
1379
1428
  if (hasTranscribeSpokenLanguageChanged) {
1380
1429
  var spokenLanguage = current.transcribe.spokenLanguage;
1381
1430
  this.emitScoped({
@@ -1800,6 +1849,14 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1800
1849
  brb: parsedSelves.current.brb
1801
1850
  });
1802
1851
  }
1852
+ if (parsedSelves.updates.selfIdChanged) {
1853
+ this.emitScoped({
1854
+ file: 'locus-info',
1855
+ function: 'updateSelf'
1856
+ }, _constants.LOCUSINFO.EVENTS.SELF_ID_CHANGED, {
1857
+ selfId: parsedSelves.current.selfId
1858
+ });
1859
+ }
1803
1860
  if (parsedSelves.updates.interpretationChanged) {
1804
1861
  this.emitScoped({
1805
1862
  file: 'locus-info',