@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.20
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.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/breakouts/breakout.js +116 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/index.js +226 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +37 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +88 -46
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +184 -190
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +34 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +67 -111
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +80 -114
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +10 -12
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +125 -190
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1692 -1925
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +36 -77
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +224 -230
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +43 -215
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +193 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +5 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +490 -560
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +24 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +99 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +78 -86
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +31 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +3 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +93 -200
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +16 -39
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +9 -38
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +0 -2
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +55 -135
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +57 -32
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/multistreamMedia.js +15 -21
- package/dist/multistream/multistreamMedia.js.map +1 -1
- package/dist/multistream/receiveSlot.js +10 -50
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +45 -82
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +18 -58
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +362 -416
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +36 -57
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +138 -182
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +3 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +322 -455
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +39 -64
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +94 -113
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +85 -94
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +85 -175
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +72 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +25 -20
- package/src/breakouts/README.md +190 -0
- package/src/breakouts/breakout.ts +110 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/index.ts +225 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +17 -12
- package/src/constants.ts +40 -1
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +114 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +148 -64
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
- package/src/media/{index.js → index.ts} +181 -131
- package/src/media/{properties.js → properties.ts} +47 -28
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
- package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
- package/src/meeting/in-meeting-actions.ts +15 -3
- package/src/meeting/{index.js → index.ts} +2263 -1427
- package/src/meeting/{muteState.js → muteState.ts} +78 -42
- package/src/meeting/{request.js → request.ts} +292 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +112 -115
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +273 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
- package/src/meetings/{collection.js → collection.ts} +6 -3
- package/src/meetings/index.ts +1159 -0
- package/src/meetings/{request.js → request.ts} +32 -25
- package/src/meetings/{util.js → util.ts} +34 -32
- package/src/member/{index.js → index.ts} +102 -56
- package/src/member/{util.js → util.ts} +52 -25
- package/src/members/{collection.js → collection.ts} +2 -2
- package/src/members/{index.js → index.ts} +219 -142
- package/src/members/{request.js → request.ts} +60 -16
- package/src/members/{util.js → util.ts} +50 -48
- package/src/metrics/{config.js → config.ts} +254 -83
- package/src/metrics/{constants.js → constants.ts} +0 -2
- package/src/metrics/{index.js → index.ts} +106 -74
- package/src/multistream/mediaRequestManager.ts +81 -15
- package/src/multistream/multistreamMedia.ts +5 -0
- package/src/multistream/receiveSlot.ts +18 -12
- package/src/multistream/receiveSlotManager.ts +23 -21
- package/src/multistream/remoteMedia.ts +15 -5
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +153 -37
- package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/{index.js → index.ts} +99 -83
- package/src/reachability/request.ts +39 -33
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/{index.js → index.ts} +195 -102
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/{index.js → index.ts} +73 -56
- package/src/roap/request.ts +157 -0
- package/src/roap/turnDiscovery.ts +77 -37
- package/src/statsAnalyzer/{global.js → global.ts} +30 -33
- package/src/statsAnalyzer/{index.js → index.ts} +468 -192
- package/src/statsAnalyzer/mqaUtil.ts +290 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/journey.js +664 -463
- package/test/integration/spec/space-meeting.js +320 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/breakouts/breakout.ts +119 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/index.ts +293 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +25 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +104 -2
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +97 -103
- package/test/unit/spec/locus-info/selfUtils.js +105 -12
- package/test/unit/spec/media/index.ts +31 -47
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/effectsState.js +39 -45
- package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
- package/test/unit/spec/meeting/index.js +2017 -742
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +115 -44
- package/test/unit/spec/meeting/utils.js +104 -171
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +439 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +31 -7
- package/test/unit/spec/members/index.js +104 -54
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
- package/test/unit/spec/multistream/receiveSlot.ts +6 -6
- package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
- package/test/unit/spec/multistream/remoteMedia.ts +10 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +58 -26
- package/test/unit/spec/reconnection-manager/index.js +102 -9
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +2 -1
- package/test/unit/spec/roap/request.ts +114 -0
- package/test/unit/spec/roap/turnDiscovery.ts +64 -45
- package/test/unit/spec/stats-analyzer/index.js +27 -22
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +54 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -1015
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Transcription","webSocketUrl","sessionId","members","sessionID","memberCSIs","params","webSocket","WebSocket","token","onopen","send","id","uuidv4","type","data","trackingId","toString","callback","onclose","event","onerror","csis","csi","member","membersCollection","find","participant","status","selfIsSpeaking","includes","speaker","transcription","onmessage","JSON","parse","voiceaPayload","getSpeaker","messageID","transcript_id","personID","timestamp","close"],"sources":["index.
|
|
1
|
+
{"version":3,"names":["Transcription","webSocketUrl","sessionId","members","sessionID","memberCSIs","params","webSocket","WebSocket","token","onopen","send","id","uuidv4","type","data","trackingId","toString","callback","onclose","event","onerror","csis","csi","member","membersCollection","find","participant","status","selfIsSpeaking","includes","speaker","transcription","onmessage","JSON","parse","voiceaPayload","getSpeaker","messageID","transcript_id","personID","timestamp","close"],"sources":["index.ts"],"sourcesContent":["import {v4 as uuidv4} from 'uuid';\n\n/**\n * @description Meeting Webex assistance transcription feature.\n * @exports\n * @class Transcription\n */\nexport default class Transcription {\n webSocketUrl: any;\n sessionID: any;\n members: any;\n memberCSIs: any;\n webSocket: any;\n\n /**\n * @param {string} webSocketUrl\n * @param {sessionID} sessionId\n * @param {object} members\n * @constructor\n * @memberof Transcription\n */\n constructor(webSocketUrl: string, sessionId: any, members: object) {\n this.webSocketUrl = webSocketUrl;\n this.sessionID = sessionId;\n this.members = members;\n this.memberCSIs = {};\n\n const params = '?outboundWireFormat=text&bufferStates=true&aliasHttpStatus=true';\n\n this.webSocket = new WebSocket(`${this.webSocketUrl}${params}`);\n }\n\n /**\n * open the Low Latency Mercury connection\n * An event parameter will be send to the callback.\n *\n * @param {string} token\n * @param {string} sessionID\n * @returns {void}\n */\n connect(token: string) {\n this.webSocket.onopen = () => {\n this.webSocket.send(\n JSON.stringify({\n id: uuidv4(),\n type: 'authorization',\n data: {token: `Bearer ${token}`},\n trackingId: `webex-js-sdk_${this.sessionID}${Date.now.toString()}`,\n })\n );\n };\n }\n\n /**\n * Sets callback to invoke when the web socket connection is closed.\n *\n * @param {Function} callback\n * @returns {void}\n */\n onCloseSocket(callback: any) {\n if (callback) {\n this.webSocket.onclose = (event) => {\n callback(event);\n };\n }\n }\n\n /**\n * Sets callback to invoke when a web socket connection error occurs.\n * An event parameter will be send to the callback.\n *\n * @param {Function} callback\n * @returns {void}\n */\n onErrorSocket(callback: any) {\n if (callback) {\n this.webSocket.onerror = (event) => {\n callback(event);\n };\n }\n }\n\n /**\n * Get current speaker from the given csis payload and update the global csis map\n *\n * @private\n * @param {object} csis\n * @returns {object}\n */\n private getSpeaker(csis: any) {\n for (const csi of csis) {\n const member = this.memberCSIs[csi];\n\n if (member) {\n return member;\n }\n }\n\n return Object.values(this.members.membersCollection.members).find((member: any) => {\n const memberCSIs = member.participant.status.csis;\n let selfIsSpeaking = false;\n\n for (const csi of csis) {\n if (memberCSIs.includes(csi)) {\n this.memberCSIs[csi] = member;\n selfIsSpeaking = true;\n break;\n }\n }\n\n return selfIsSpeaking;\n });\n }\n\n /**\n * Sends transcription data to given callback as it arrives.\n *\n * @param {Function} callback\n * @returns {void}\n */\n subscribe(callback: any) {\n let data;\n let csis;\n let speaker;\n let transcription;\n\n this.webSocket.onmessage = (event) => {\n data = JSON.parse(event.data);\n csis = data.data?.voiceaPayload?.csis || [];\n speaker = this.getSpeaker(csis);\n transcription = data.data?.voiceaPayload?.data || '';\n\n this.webSocket.send(JSON.stringify({messageID: data.id, type: 'ack'}));\n\n if (transcription) {\n callback({\n id: data.data?.voiceaPayload?.transcript_id,\n personID: speaker?.id,\n transcription,\n timestamp: data.timestamp,\n type: data?.data?.voiceaPayload?.type,\n });\n }\n };\n }\n\n /**\n * Close the LLM web socket connection\n * @returns {void}\n */\n closeSocket() {\n this.webSocket.close();\n }\n}\n"],"mappings":"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"}
|
package/internal-README.md
CHANGED
|
@@ -48,7 +48,7 @@ Install tooling dependencies.
|
|
|
48
48
|
npm install
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
_Build issues?_ See [BUILD-ISSUES.md](https://github.com/webex/webex-js-sdk/blob/master/BUILD-ISSUES.md) for help.
|
|
52
52
|
|
|
53
53
|
## Contribute to the `plugin-meetings` branch
|
|
54
54
|
|
|
@@ -93,12 +93,14 @@ yarn run build
|
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
> Individual packages containing samples can usually be run this way:
|
|
96
|
+
>
|
|
96
97
|
> ```
|
|
97
98
|
> yarn run serve:package --env.package @webex/plugin-meetings
|
|
99
|
+
> ```
|
|
98
100
|
|
|
99
101
|
> ```
|
|
100
102
|
> However, `webex` does not get compiled properly for `plugin-meetings` using this method, so do the following instead.
|
|
101
|
-
|
|
103
|
+
> ```
|
|
102
104
|
|
|
103
105
|
```bash
|
|
104
106
|
# Run the "sample app" sample.
|
|
@@ -107,8 +109,8 @@ yarn run samples:meetings
|
|
|
107
109
|
```
|
|
108
110
|
|
|
109
111
|
- Visit https://localhost:8000/
|
|
110
|
-
- Copy/paste **Your Personal Access Token** from [Cisco Webex for Developers](https://developer.webex.com/docs/api/getting-started) and click
|
|
111
|
-
- Use the **Dialer** to
|
|
112
|
+
- Copy/paste **Your Personal Access Token** from [Cisco Webex for Developers](https://developer.webex.com/docs/api/getting-started) and click _connect_.
|
|
113
|
+
- Use the **Dialer** to _create_ a Meeting object, _join_ it, and _addMedia_, like video and audio.
|
|
112
114
|
|
|
113
115
|
> This sample does not join a meeting in one click on purpose. It is meant to demonstrate the different commands available, and their sequence, to developers. Other samples will be created in the future.
|
|
114
116
|
>
|
|
@@ -124,7 +126,6 @@ yarn run samples:meetings
|
|
|
124
126
|
|
|
125
127
|
Use `yarn run distsrc` to point each package's `main` entry at the raw src and let `babel` compile on the fly.
|
|
126
128
|
|
|
127
|
-
|
|
128
129
|
```bash
|
|
129
130
|
# Point all package.json files to the src directory instead of the dist directory.
|
|
130
131
|
yarn run distsrc
|
|
@@ -156,7 +157,7 @@ yarn run srcdist
|
|
|
156
157
|
|
|
157
158
|
The SDK enforces relatively strict commit messages to version its packages and keep language similar.
|
|
158
159
|
|
|
159
|
-
Here is an example committing a new feature. Notice the
|
|
160
|
+
Here is an example committing a new feature. Notice the _package name_ in parentheses.
|
|
160
161
|
|
|
161
162
|
```bash
|
|
162
163
|
git commit -a -m 'feat(plugin-meetings): add ability to join a meeting'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.20",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"Taymoor Khan <taykhan@cisco.com>"
|
|
13
13
|
],
|
|
14
14
|
"main": "dist/index.js",
|
|
15
|
+
"types": "types/index.d.ts",
|
|
15
16
|
"devMain": "src/index.js",
|
|
16
17
|
"repository": {
|
|
17
18
|
"type": "git",
|
|
@@ -27,13 +28,16 @@
|
|
|
27
28
|
"envify"
|
|
28
29
|
]
|
|
29
30
|
},
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "yarn run -T tsc --declaration true --declarationDir ./types"
|
|
33
|
+
},
|
|
30
34
|
"devDependencies": {
|
|
31
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
32
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
33
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
34
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
35
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.20",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.20",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.20",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.20",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.20",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.20",
|
|
37
41
|
"chai": "^4.3.4",
|
|
38
42
|
"chai-as-promised": "^7.1.1",
|
|
39
43
|
"jsdom-global": "3.0.2",
|
|
@@ -41,18 +45,19 @@
|
|
|
41
45
|
"typed-emitter": "^2.1.0"
|
|
42
46
|
},
|
|
43
47
|
"dependencies": {
|
|
44
|
-
"@webex/common": "3.0.0-beta.
|
|
45
|
-
"@webex/internal-media-core": "
|
|
46
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
47
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
48
|
-
"@webex/internal-plugin-
|
|
49
|
-
"@webex/internal-plugin-
|
|
50
|
-
"@webex/internal-plugin-
|
|
51
|
-
"@webex/internal-plugin-
|
|
52
|
-
"@webex/plugin-
|
|
53
|
-
"@webex/plugin-
|
|
54
|
-
"@webex/
|
|
55
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
48
|
+
"@webex/common": "3.0.0-beta.20",
|
|
49
|
+
"@webex/internal-media-core": "1.33.0",
|
|
50
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.20",
|
|
51
|
+
"@webex/internal-plugin-device": "3.0.0-beta.20",
|
|
52
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.20",
|
|
53
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.20",
|
|
54
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.20",
|
|
55
|
+
"@webex/internal-plugin-support": "3.0.0-beta.20",
|
|
56
|
+
"@webex/internal-plugin-user": "3.0.0-beta.20",
|
|
57
|
+
"@webex/plugin-people": "3.0.0-beta.20",
|
|
58
|
+
"@webex/plugin-rooms": "3.0.0-beta.20",
|
|
59
|
+
"@webex/webex-core": "3.0.0-beta.20",
|
|
60
|
+
"ampersand-collection": "^2.0.2",
|
|
56
61
|
"bowser": "^2.11.0",
|
|
57
62
|
"btoa": "^1.2.1",
|
|
58
63
|
"dotenv": "^4.0.0",
|
|
@@ -62,6 +67,6 @@
|
|
|
62
67
|
"lodash": "^4.17.21",
|
|
63
68
|
"sdp-transform": "^2.12.0",
|
|
64
69
|
"uuid": "^3.3.2",
|
|
65
|
-
"webrtc-adapter": "^
|
|
70
|
+
"webrtc-adapter": "^8.1.2"
|
|
66
71
|
}
|
|
67
72
|
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Breakout Sessions
|
|
2
|
+
|
|
3
|
+
Breakout sessions are like meetings within meetings. They have separate roster lists and titles. Participants can move between breakouts and the main session.
|
|
4
|
+
|
|
5
|
+
### Enabling
|
|
6
|
+
|
|
7
|
+
To enable breakouts the `breakoutsSupported` parameter must be passed to the meeting join method.
|
|
8
|
+
|
|
9
|
+
### Structure
|
|
10
|
+
|
|
11
|
+
The current breakout session is accessible as follows:
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
breakouts.currentBreakoutSession;
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Other breakout sessions are available in the breakouts collection. These are breakouts that you known about. If you are an attendee, you may not know about all the breakout sessions in the meeting.
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
breakouts.breakouts;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
note: The `currentBreakoutSession` is NOT a member of the `breakouts.breakouts` collection.
|
|
24
|
+
|
|
25
|
+
Some information about the state of breakouts is available on the `meeting.breakouts` object itself
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
// The number of seconds after ending breakouts before the participants are returned to the main session
|
|
29
|
+
breakouts.delayCloseTime;
|
|
30
|
+
|
|
31
|
+
// Whether the participant is allowed back to the main session
|
|
32
|
+
breakouts.allowBackToMain;
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Attendee functionality
|
|
36
|
+
|
|
37
|
+
The normal meeting members are updated when you move in and out of a breakout session.
|
|
38
|
+
|
|
39
|
+
The following are methods available to attendees of a meeting:
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
// Join a breakout
|
|
43
|
+
// This can be used when the participant is in the main session or in a different breakout session
|
|
44
|
+
breakout.join();
|
|
45
|
+
|
|
46
|
+
// Leave a breakout
|
|
47
|
+
// This will cause the participant to return to the main session
|
|
48
|
+
breakouts.currentBreakoutSession.leave();
|
|
49
|
+
|
|
50
|
+
// Ask for help when in a breakout session. 10 second cooldown.
|
|
51
|
+
breakout.currentBreakoutSession.askForHelp();
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### Members
|
|
55
|
+
|
|
56
|
+
Each breakout session has members. Members represent other entities within the meeting.
|
|
57
|
+
The current breakout session members are accessed via the meeting object i.e. they will automatically
|
|
58
|
+
be updated when the user moves between sessions.
|
|
59
|
+
|
|
60
|
+
To see which members are in other sessions, you can access them via the breakout model. The Members
|
|
61
|
+
class is the same as that of the main meeting.
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
breakout = breakouts.breakouts.models[0];
|
|
65
|
+
breakout.members;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
#### breakouts events
|
|
69
|
+
|
|
70
|
+
```javascript
|
|
71
|
+
// When the breakouts in the breakouts collection changes. This includes updates to session members
|
|
72
|
+
on('meeting:breakouts:update', (breakouts) => {});
|
|
73
|
+
|
|
74
|
+
// When the breakout sessions end this event will be fired
|
|
75
|
+
on('meeting:breakouts:closing', () => {});
|
|
76
|
+
|
|
77
|
+
// When the host sends a message to the breakout this event will fire
|
|
78
|
+
on('meeting:breakouts:message', {senderUserId, sentTime, message, sessionId});
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
When breakouts are started there are several possibilities:
|
|
82
|
+
|
|
83
|
+
1. The attendee is forced to join a session
|
|
84
|
+
2. The attendee is assigned to a session, but can join when they feel like it
|
|
85
|
+
3. The attendee is not assigned to a session, and can choose which session they want to join
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
breakout.assigned; // Assigned to a session, but not in it yet
|
|
89
|
+
breakout.assignedCurrent; // Forced to join a session
|
|
90
|
+
breakout.active; // The session exists
|
|
91
|
+
breakout.allowed; // The user is allowed to join the session
|
|
92
|
+
breakout.requested; // The user has been requested to join the session
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The above attributes of the breakout sessions, combined with the `meeting:breakouts:update` event allow you to determine which situation you are in.
|
|
96
|
+
|
|
97
|
+
A host can signal attendees to move to a particular session. In this case the following is available. Using the same event, and the `requested` attribute of the breakout you can determine which session is to be moved to. Requesting return to the main session is the current use case of this.
|
|
98
|
+
|
|
99
|
+
### Host functionality
|
|
100
|
+
|
|
101
|
+
The following are methods available to a hosts of a meeting.
|
|
102
|
+
|
|
103
|
+
note: None of these are currently implemented
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
|
|
107
|
+
// Move a participant to breakout
|
|
108
|
+
breakout.move(participant)
|
|
109
|
+
|
|
110
|
+
// Assign a particpant to a breakout
|
|
111
|
+
// Not sure whether there is any difference from move
|
|
112
|
+
breakout.assign(participant)
|
|
113
|
+
|
|
114
|
+
// Remove someone from a breakout session
|
|
115
|
+
// This returns them to the main session
|
|
116
|
+
breakout.remove(participant)
|
|
117
|
+
|
|
118
|
+
// Deletes a breakout session
|
|
119
|
+
// This can only be done when breakouts are inactive
|
|
120
|
+
breakout.delete()
|
|
121
|
+
|
|
122
|
+
// Create a breakout session
|
|
123
|
+
breakouts.create(sessionName)
|
|
124
|
+
|
|
125
|
+
// Rename an existing breakout session
|
|
126
|
+
breakout.rename(newSessionName)
|
|
127
|
+
|
|
128
|
+
// Start breakout sessions
|
|
129
|
+
breakouts.start()
|
|
130
|
+
|
|
131
|
+
// End breakout sessions
|
|
132
|
+
breakouts.end()
|
|
133
|
+
|
|
134
|
+
// Enable breakout sessions
|
|
135
|
+
breakouts.enable()
|
|
136
|
+
|
|
137
|
+
// Disable breakout sessions
|
|
138
|
+
breakouts.disable()
|
|
139
|
+
|
|
140
|
+
// Send message asking all participants to return to the main session
|
|
141
|
+
breakouts.askAllToReturn()
|
|
142
|
+
|
|
143
|
+
// Send a message to a breakout session
|
|
144
|
+
// You can determine which participant types receive the message
|
|
145
|
+
breakout.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
|
|
146
|
+
|
|
147
|
+
// Send a message to All breakout sessions
|
|
148
|
+
// You can determine which participant types receive the message
|
|
149
|
+
breakouts.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
|
|
150
|
+
|
|
151
|
+
// When breakouts are active you can cancel the automatic end of all sessions by calling this
|
|
152
|
+
// method. It cannot be restarted, only manually ending breakouts is possible after calling this
|
|
153
|
+
breakouts.cancelAutomaticEnd()
|
|
154
|
+
|
|
155
|
+
IBreakoutConfig {
|
|
156
|
+
/*
|
|
157
|
+
Number of sessions to count down before returning users to main session. Seconds. Default 60. 0 means off
|
|
158
|
+
*/
|
|
159
|
+
countdownTimer: Number,
|
|
160
|
+
/*
|
|
161
|
+
Whether attendees are allowed to return to the main meeting
|
|
162
|
+
*/
|
|
163
|
+
allowReturntoMainMeeting: Boolean,
|
|
164
|
+
/*
|
|
165
|
+
Whether attendees are allowed to join later
|
|
166
|
+
*/
|
|
167
|
+
allowJoinLater: Boolean,
|
|
168
|
+
/*
|
|
169
|
+
The timeout after which breakouts are automatically ended. Seconds. Default 1800 (30 minutes) Miniumum 5 minutes.
|
|
170
|
+
*/
|
|
171
|
+
automaticallyEndBreakoutsAfter: Number,
|
|
172
|
+
/*
|
|
173
|
+
How participants are assigned to breakouts.
|
|
174
|
+
auto -> participants are automatically placed in sessions
|
|
175
|
+
*/
|
|
176
|
+
assignmentMethod: 'auto' | 'manual' | 'choose'
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Configure settings on breakouts
|
|
180
|
+
breakouts.configure(config)
|
|
181
|
+
|
|
182
|
+
// set whether anyone can join the breakout or whether it is just assigned participants that can join
|
|
183
|
+
breakout.setOpen(isOpen)
|
|
184
|
+
|
|
185
|
+
// When the members change for a given breakout
|
|
186
|
+
on('meeting:breakout:members:update', ({sessionId, members}) => {
|
|
187
|
+
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
```
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {WebexPlugin} from '@webex/webex-core';
|
|
6
|
+
|
|
7
|
+
import {HTTP_VERBS, MEETINGS} from '../constants';
|
|
8
|
+
import LocusInfo from '../locus-info';
|
|
9
|
+
import Members from '../members';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @class
|
|
13
|
+
*/
|
|
14
|
+
const Breakout = WebexPlugin.extend({
|
|
15
|
+
idAttribute: 'sessionId',
|
|
16
|
+
|
|
17
|
+
namespace: MEETINGS,
|
|
18
|
+
|
|
19
|
+
props: {
|
|
20
|
+
active: ['boolean', false, false], // this session is active
|
|
21
|
+
allowed: ['boolean', false, false], // allowed to join this session
|
|
22
|
+
assigned: ['boolean', false, false], // assigned to this session, but not necessarily joined yet
|
|
23
|
+
assignedCurrent: ['boolean', false, false], // assigned AND current session
|
|
24
|
+
requested: ['boolean', false, false], // requested by the host to join this session
|
|
25
|
+
current: ['boolean', false, false], // the current joined session
|
|
26
|
+
name: 'string',
|
|
27
|
+
sessionId: 'string',
|
|
28
|
+
sessionType: 'string',
|
|
29
|
+
groupId: 'string',
|
|
30
|
+
url: 'string', // where to send requests to
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
derived: {
|
|
34
|
+
isMain: {
|
|
35
|
+
deps: ['sessionType'],
|
|
36
|
+
/**
|
|
37
|
+
* If the breakout has no name, assume it is the main session
|
|
38
|
+
* @returns {boolean}
|
|
39
|
+
*/
|
|
40
|
+
fn() {
|
|
41
|
+
return this.sessionType === 'MAIN';
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
initialize() {
|
|
47
|
+
this.members = new Members({}, {parent: this.webex});
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Joins the breakout session
|
|
52
|
+
* @returns {Promise}
|
|
53
|
+
*/
|
|
54
|
+
join() {
|
|
55
|
+
return this.request({
|
|
56
|
+
method: HTTP_VERBS.POST,
|
|
57
|
+
uri: `${this.url}/move`,
|
|
58
|
+
body: {
|
|
59
|
+
groupId: this.groupId,
|
|
60
|
+
sessionId: this.sessionId,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Leaves the breakout session to return to the main session
|
|
67
|
+
* @returns {Promise}
|
|
68
|
+
* @throws {Error} if an attempt is made to leave the main session or if the main session cannot be found
|
|
69
|
+
*/
|
|
70
|
+
leave() {
|
|
71
|
+
if (this.isMain) {
|
|
72
|
+
throw new Error('Cannot leave the main session');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const mainSession = this.parent.breakouts.filter((breakout) => breakout.isMain)[0];
|
|
76
|
+
|
|
77
|
+
if (!mainSession) {
|
|
78
|
+
throw new Error('Cannot leave, no main session found');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return mainSession.join();
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Sends a help request for the current breakout
|
|
86
|
+
* @returns {Promise}
|
|
87
|
+
*/
|
|
88
|
+
askForHelp() {
|
|
89
|
+
return this.request({
|
|
90
|
+
method: HTTP_VERBS.POST,
|
|
91
|
+
uri: `${this.url}/help`,
|
|
92
|
+
body: {
|
|
93
|
+
groupId: this.groupId,
|
|
94
|
+
sessionId: this.sessionId,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Parses the participants from the locus object
|
|
101
|
+
* @param locus Locus object
|
|
102
|
+
* @returns {void}
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
parseRoster(locus) {
|
|
106
|
+
this.members.locusParticipantsUpdate(locus);
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
export default Breakout;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import AmpCollection from 'ampersand-collection';
|
|
6
|
+
|
|
7
|
+
import {MEETINGS} from '../constants';
|
|
8
|
+
|
|
9
|
+
import Breakout from './breakout';
|
|
10
|
+
|
|
11
|
+
const BreakoutCollection = AmpCollection.extend({
|
|
12
|
+
model: Breakout,
|
|
13
|
+
|
|
14
|
+
namespace: MEETINGS,
|
|
15
|
+
|
|
16
|
+
mainIndex: 'sessionId',
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export default BreakoutCollection;
|