@webex/plugin-meetings 3.0.0-beta.76 → 3.0.0-beta.78

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.
@@ -171,7 +171,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
171
171
  sessionId: this.sessionId
172
172
  });
173
173
  },
174
- version: "3.0.0-beta.76"
174
+ version: "3.0.0-beta.78"
175
175
  });
176
176
  var _default = Breakout;
177
177
  exports.default = _default;
@@ -836,7 +836,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
836
836
  body: body
837
837
  });
838
838
  },
839
- version: "3.0.0-beta.76"
839
+ version: "3.0.0-beta.78"
840
840
  });
841
841
  var _default = Breakouts;
842
842
  exports.default = _default;
@@ -239,7 +239,7 @@ SelfUtils.getStatus = function (status) {
239
239
  SelfUtils.wasMediaInactiveOrReleased = function () {
240
240
  var oldSelf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
241
241
  var changedSelf = arguments.length > 1 ? arguments[1] : undefined;
242
- return oldSelf.joinedWith && oldSelf.joinedWith.state === _constants._JOINED_ && changedSelf.joinedWith.state === _constants._LEFT_ && (changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.INACTIVE || changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.MEDIA_RELEASED);
242
+ return oldSelf.joinedWith && oldSelf.joinedWith.state === _constants._JOINED_ && changedSelf.joinedWith && changedSelf.joinedWith.state === _constants._LEFT_ && (changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.INACTIVE || changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.MEDIA_RELEASED);
243
243
  };
244
244
 
245
245
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteVideoMuted","getRemoteVideoMuted","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakoutSessions","breakout","getBreakout","controls","sessions","layouts","undefined","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isUpgradeToModeratorOrCohost","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","isJoined","_JOINED_","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","requestedToUnmute","disallowUnmute","audioStatus","videoStatus","slides","videoSlidesStatus","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","isLocusUserAdmitted","ParameterError","isAttendeeOnly","includes","SELF_ROLES","ATTENDEE","COHOST","MODERATOR","isCohost","isModerator","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n SELF_ROLES,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils: any = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakoutSessions(self),\n breakout: SelfUtils.getBreakout(self),\n };\n }\n\n return null;\n};\n\nSelfUtils.getBreakoutSessions = (self) => self?.controls?.breakout?.sessions;\nSelfUtils.getBreakout = (self) => self?.controls?.breakout;\n\nSelfUtils.getLayout = (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;\n\nSelfUtils.getRoles = (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isUpgradeToModeratorOrCohost = SelfUtils.isUpgradeToModeratorOrCohost(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\nSelfUtils.isJoined = (self: any) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the Meeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout;\n\nSelfUtils.breakoutsChanged = (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout;\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self: any) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote video mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteVideoMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.video) {\n return null;\n }\n\n return self.controls.video.muted;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n});\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} self\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (self: object) => {\n if (!self) {\n throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(self);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUpgradeToModeratorOrCohost = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator or cohost status.'\n );\n }\n const isAttendeeOnly =\n oldSelf.roles.includes(SELF_ROLES.ATTENDEE) &&\n !oldSelf.roles.includes(SELF_ROLES.COHOST) &&\n !oldSelf.roles.includes(SELF_ROLES.MODERATOR);\n const isCohost = changedSelf.roles.includes(SELF_ROLES.COHOST);\n const isModerator = changedSelf.roles.includes(SELF_ROLES.MODERATOR);\n\n return isAttendeeOnly && (isCohost || isModerator);\n};\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.videoMutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was video muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteVideoMuted === null) {\n if (changedSelf.remoteVideoMuted) {\n return true; // this happens when host disables \"Allow start video\"\n }\n\n // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join\n return false;\n }\n\n return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return changedSelf.localAudioUnmuteRequested && !oldSelf.localAudioUnmuteRequested;\n};\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n};\n\nexport default SelfUtils;\n"],"mappings":"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"}
1
+ {"version":3,"names":["SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteVideoMuted","getRemoteVideoMuted","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakoutSessions","breakout","getBreakout","controls","sessions","layouts","undefined","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isUpgradeToModeratorOrCohost","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","isJoined","_JOINED_","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","requestedToUnmute","disallowUnmute","audioStatus","videoStatus","slides","videoSlidesStatus","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","isLocusUserAdmitted","ParameterError","isAttendeeOnly","includes","SELF_ROLES","ATTENDEE","COHOST","MODERATOR","isCohost","isModerator","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n SELF_ROLES,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils: any = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakoutSessions(self),\n breakout: SelfUtils.getBreakout(self),\n };\n }\n\n return null;\n};\n\nSelfUtils.getBreakoutSessions = (self) => self?.controls?.breakout?.sessions;\nSelfUtils.getBreakout = (self) => self?.controls?.breakout;\n\nSelfUtils.getLayout = (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;\n\nSelfUtils.getRoles = (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isUpgradeToModeratorOrCohost = SelfUtils.isUpgradeToModeratorOrCohost(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\nSelfUtils.isJoined = (self: any) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the Meeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout;\n\nSelfUtils.breakoutsChanged = (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout;\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self: any) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote video mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteVideoMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.video) {\n return null;\n }\n\n return self.controls.video.muted;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n});\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} self\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (self: object) => {\n if (!self) {\n throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(self);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUpgradeToModeratorOrCohost = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator or cohost status.'\n );\n }\n const isAttendeeOnly =\n oldSelf.roles.includes(SELF_ROLES.ATTENDEE) &&\n !oldSelf.roles.includes(SELF_ROLES.COHOST) &&\n !oldSelf.roles.includes(SELF_ROLES.MODERATOR);\n const isCohost = changedSelf.roles.includes(SELF_ROLES.COHOST);\n const isModerator = changedSelf.roles.includes(SELF_ROLES.MODERATOR);\n\n return isAttendeeOnly && (isCohost || isModerator);\n};\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.videoMutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was video muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteVideoMuted === null) {\n if (changedSelf.remoteVideoMuted) {\n return true; // this happens when host disables \"Allow start video\"\n }\n\n // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join\n return false;\n }\n\n return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return changedSelf.localAudioUnmuteRequested && !oldSelf.localAudioUnmuteRequested;\n};\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n};\n\nexport default SelfUtils;\n"],"mappings":"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"}
@@ -1208,39 +1208,49 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
1208
1208
  * All multistream media requests sent out for this meeting have to go through them.
1209
1209
  */
1210
1210
  _this.mediaRequestManagers = {
1211
- // @ts-ignore - config coming from registerPlugin
1212
- audio: new _mediaRequestManager.MediaRequestManager(_this.config.degradationPreferences, function (mediaRequests) {
1211
+ audio: new _mediaRequestManager.MediaRequestManager(function (mediaRequests) {
1213
1212
  if (!_this.mediaProperties.webrtcMediaConnection) {
1214
1213
  _loggerProxy.default.logger.warn('Meeting:index#mediaRequestManager --> trying to send audio media request before media connection was created');
1215
1214
  return;
1216
1215
  }
1217
1216
  _this.mediaProperties.webrtcMediaConnection.requestMedia(_internalMediaCore.MediaType.AudioMain, mediaRequests);
1217
+ }, {
1218
+ // @ts-ignore - config coming from registerPlugin
1219
+ degradationPreferences: _this.config.degradationPreferences,
1220
+ kind: 'audio'
1218
1221
  }),
1219
- // @ts-ignore - config coming from registerPlugin
1220
- video: new _mediaRequestManager.MediaRequestManager(_this.config.degradationPreferences, function (mediaRequests) {
1222
+ video: new _mediaRequestManager.MediaRequestManager(function (mediaRequests) {
1221
1223
  if (!_this.mediaProperties.webrtcMediaConnection) {
1222
1224
  _loggerProxy.default.logger.warn('Meeting:index#mediaRequestManager --> trying to send video media request before media connection was created');
1223
1225
  return;
1224
1226
  }
1225
1227
  _this.mediaProperties.webrtcMediaConnection.requestMedia(_internalMediaCore.MediaType.VideoMain, mediaRequests);
1228
+ }, {
1229
+ // @ts-ignore - config coming from registerPlugin
1230
+ degradationPreferences: _this.config.degradationPreferences,
1231
+ kind: 'video'
1226
1232
  }),
1227
- screenShareAudio: new _mediaRequestManager.MediaRequestManager(
1228
- // @ts-ignore - config coming from registerPlugin
1229
- _this.config.degradationPreferences, function (mediaRequests) {
1233
+ screenShareAudio: new _mediaRequestManager.MediaRequestManager(function (mediaRequests) {
1230
1234
  if (!_this.mediaProperties.webrtcMediaConnection) {
1231
1235
  _loggerProxy.default.logger.warn('Meeting:index#mediaRequestManager --> trying to send screenshare audio media request before media connection was created');
1232
1236
  return;
1233
1237
  }
1234
1238
  _this.mediaProperties.webrtcMediaConnection.requestMedia(_internalMediaCore.MediaType.AudioSlides, mediaRequests);
1239
+ }, {
1240
+ // @ts-ignore - config coming from registerPlugin
1241
+ degradationPreferences: _this.config.degradationPreferences,
1242
+ kind: 'audio'
1235
1243
  }),
1236
- screenShareVideo: new _mediaRequestManager.MediaRequestManager(
1237
- // @ts-ignore - config coming from registerPlugin
1238
- _this.config.degradationPreferences, function (mediaRequests) {
1244
+ screenShareVideo: new _mediaRequestManager.MediaRequestManager(function (mediaRequests) {
1239
1245
  if (!_this.mediaProperties.webrtcMediaConnection) {
1240
1246
  _loggerProxy.default.logger.warn('Meeting:index#mediaRequestManager --> trying to send screenshare video media request before media connection was created');
1241
1247
  return;
1242
1248
  }
1243
1249
  _this.mediaProperties.webrtcMediaConnection.requestMedia(_internalMediaCore.MediaType.VideoSlides, mediaRequests);
1250
+ }, {
1251
+ // @ts-ignore - config coming from registerPlugin
1252
+ degradationPreferences: _this.config.degradationPreferences,
1253
+ kind: 'video'
1244
1254
  })
1245
1255
  };
1246
1256
  /**