@webex/plugin-meetings 3.8.1-next.4 → 3.8.1-next.41

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 (94) hide show
  1. package/README.md +26 -13
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.js +24 -2
  5. package/dist/constants.js.map +1 -1
  6. package/dist/interpretation/index.js +1 -1
  7. package/dist/interpretation/siLanguage.js +1 -1
  8. package/dist/locus-info/index.js +38 -84
  9. package/dist/locus-info/index.js.map +1 -1
  10. package/dist/media/index.js +2 -2
  11. package/dist/media/index.js.map +1 -1
  12. package/dist/meeting/brbState.js +14 -12
  13. package/dist/meeting/brbState.js.map +1 -1
  14. package/dist/meeting/in-meeting-actions.js +6 -0
  15. package/dist/meeting/in-meeting-actions.js.map +1 -1
  16. package/dist/meeting/index.js +213 -77
  17. package/dist/meeting/index.js.map +1 -1
  18. package/dist/meeting/request.js +19 -0
  19. package/dist/meeting/request.js.map +1 -1
  20. package/dist/meeting/request.type.js.map +1 -1
  21. package/dist/meeting/type.js +7 -0
  22. package/dist/meeting/type.js.map +1 -0
  23. package/dist/meeting/util.js +11 -0
  24. package/dist/meeting/util.js.map +1 -1
  25. package/dist/meetings/index.js +35 -33
  26. package/dist/meetings/index.js.map +1 -1
  27. package/dist/members/index.js +11 -9
  28. package/dist/members/index.js.map +1 -1
  29. package/dist/members/request.js +3 -3
  30. package/dist/members/request.js.map +1 -1
  31. package/dist/members/util.js +18 -6
  32. package/dist/members/util.js.map +1 -1
  33. package/dist/multistream/mediaRequestManager.js +1 -1
  34. package/dist/multistream/mediaRequestManager.js.map +1 -1
  35. package/dist/multistream/remoteMedia.js +34 -5
  36. package/dist/multistream/remoteMedia.js.map +1 -1
  37. package/dist/multistream/remoteMediaGroup.js +42 -2
  38. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  39. package/dist/multistream/sendSlotManager.js +32 -2
  40. package/dist/multistream/sendSlotManager.js.map +1 -1
  41. package/dist/reachability/index.js +5 -10
  42. package/dist/reachability/index.js.map +1 -1
  43. package/dist/types/constants.d.ts +22 -0
  44. package/dist/types/locus-info/index.d.ts +0 -9
  45. package/dist/types/meeting/brbState.d.ts +0 -1
  46. package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
  47. package/dist/types/meeting/index.d.ts +35 -18
  48. package/dist/types/meeting/request.d.ts +9 -1
  49. package/dist/types/meeting/request.type.d.ts +74 -0
  50. package/dist/types/meeting/type.d.ts +9 -0
  51. package/dist/types/meeting/util.d.ts +3 -0
  52. package/dist/types/members/index.d.ts +10 -7
  53. package/dist/types/members/request.d.ts +1 -1
  54. package/dist/types/members/util.d.ts +7 -3
  55. package/dist/types/multistream/remoteMedia.d.ts +20 -1
  56. package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
  57. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  58. package/dist/types/reachability/index.d.ts +2 -2
  59. package/dist/webinar/index.js +1 -1
  60. package/package.json +24 -25
  61. package/src/constants.ts +23 -2
  62. package/src/locus-info/index.ts +47 -82
  63. package/src/media/index.ts +2 -2
  64. package/src/meeting/brbState.ts +9 -7
  65. package/src/meeting/in-meeting-actions.ts +13 -0
  66. package/src/meeting/index.ts +168 -42
  67. package/src/meeting/request.ts +16 -0
  68. package/src/meeting/request.type.ts +64 -0
  69. package/src/meeting/type.ts +9 -0
  70. package/src/meeting/util.ts +13 -0
  71. package/src/meetings/index.ts +3 -2
  72. package/src/members/index.ts +13 -10
  73. package/src/members/request.ts +2 -2
  74. package/src/members/util.ts +16 -4
  75. package/src/multistream/mediaRequestManager.ts +7 -7
  76. package/src/multistream/remoteMedia.ts +34 -4
  77. package/src/multistream/remoteMediaGroup.ts +37 -2
  78. package/src/multistream/sendSlotManager.ts +34 -2
  79. package/src/reachability/index.ts +5 -13
  80. package/test/unit/spec/locus-info/index.js +177 -83
  81. package/test/unit/spec/media/index.ts +107 -0
  82. package/test/unit/spec/meeting/brbState.ts +9 -9
  83. package/test/unit/spec/meeting/in-meeting-actions.ts +6 -0
  84. package/test/unit/spec/meeting/index.js +694 -60
  85. package/test/unit/spec/meeting/request.js +71 -0
  86. package/test/unit/spec/meeting/utils.js +21 -0
  87. package/test/unit/spec/meetings/index.js +2 -0
  88. package/test/unit/spec/members/index.js +68 -9
  89. package/test/unit/spec/members/request.js +2 -2
  90. package/test/unit/spec/members/utils.js +27 -7
  91. package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
  92. package/test/unit/spec/multistream/remoteMedia.ts +66 -2
  93. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  94. package/test/unit/spec/reachability/index.ts +2 -6
@@ -145,6 +145,7 @@ export declare const DIALER_REGEX: {
145
145
  SIP_ADDRESS: RegExp;
146
146
  PHONE_NUMBER: RegExp;
147
147
  E164_FORMAT: RegExp;
148
+ INTERNAL_NUMBER: RegExp;
148
149
  };
149
150
  export declare const IPV4_REGEX: RegExp;
150
151
  export declare const VALID_EMAIL_ADDRESS: RegExp;
@@ -778,6 +779,9 @@ export declare const DISPLAY_HINTS: {
778
779
  PREMISE_RECORDING_CONTROL_PAUSE: string;
779
780
  PREMISE_RECORDING_CONTROL_STOP: string;
780
781
  PREMISE_RECORDING_CONTROL_RESUME: string;
782
+ LOCAL_RECORDING_STATUS_STARTED: string;
783
+ LOCAL_RECORDING_STATUS_STOPPED: string;
784
+ LOCAL_RECORDING_STATUS_PAUSED: string;
781
785
  LOCK_CONTROL_UNLOCK: string;
782
786
  LOCK_CONTROL_LOCK: string;
783
787
  LOCK_STATUS_LOCKED: string;
@@ -972,6 +976,7 @@ export declare const QUALITY_LEVELS: {
972
976
  HIGH: string;
973
977
  '360p': string;
974
978
  '480p': string;
979
+ '540p': string;
975
980
  '720p': string;
976
981
  '1080p': string;
977
982
  };
@@ -1000,6 +1005,18 @@ export declare const AVAILABLE_RESOLUTIONS: {
1000
1005
  };
1001
1006
  };
1002
1007
  };
1008
+ '540p': {
1009
+ video: {
1010
+ width: {
1011
+ max: number;
1012
+ ideal: number;
1013
+ };
1014
+ height: {
1015
+ max: number;
1016
+ ideal: number;
1017
+ };
1018
+ };
1019
+ };
1003
1020
  '720p': {
1004
1021
  video: {
1005
1022
  width: {
@@ -1117,3 +1134,8 @@ export declare const INITIAL_REGISTRATION_STATUS: {
1117
1134
  mercuryConnect: boolean;
1118
1135
  checkH264Support: boolean;
1119
1136
  };
1137
+ export declare const STAGE_MANAGER_TYPE: {
1138
+ LOGO: number;
1139
+ BACKGROUND: number;
1140
+ NAME_LABEL: number;
1141
+ };
@@ -16,7 +16,6 @@ export default class LocusInfo extends EventsScope {
16
16
  aclUrl: any;
17
17
  baseSequence: any;
18
18
  created: any;
19
- deltaParticipants: any;
20
19
  identities: any;
21
20
  membership: any;
22
21
  participants: any;
@@ -148,14 +147,6 @@ export default class LocusInfo extends EventsScope {
148
147
  * @memberof LocusInfo
149
148
  */
150
149
  compareSelfAndHost(): void;
151
- /**
152
- * Update the deltaParticipants property of this object based on a list of
153
- * provided participants.
154
- *
155
- * @param {Array} [participants] - The participants to update against.
156
- * @returns {void}
157
- */
158
- updateParticipantDeltas(participants?: Array<any>): void;
159
150
  /**
160
151
  * update meeting's members
161
152
  * @param {Object} participants new participants object
@@ -40,7 +40,6 @@ export declare class BrbState {
40
40
  /**
41
41
  * Send the local brb state to the server
42
42
  *
43
- * @param {SendSlotManager} sendSlotManager
44
43
  * @returns {Promise}
45
44
  */
46
45
  private sendLocalBrbStateToServer;
@@ -34,6 +34,9 @@ interface IInMeetingActions {
34
34
  isClosedCaptionActive?: boolean;
35
35
  canStartManualCaption?: boolean;
36
36
  canStopManualCaption?: boolean;
37
+ isLocalRecordingStarted?: boolean;
38
+ isLocalRecordingStopped?: boolean;
39
+ isLocalRecordingPaused?: boolean;
37
40
  isManualCaptionActive?: boolean;
38
41
  isSaveTranscriptsEnabled?: boolean;
39
42
  isWebexAssistantActive?: boolean;
@@ -139,6 +142,9 @@ export default class InMeetingActions implements IInMeetingActions {
139
142
  isClosedCaptionActive: any;
140
143
  canStartManualCaption: any;
141
144
  canStopManualCaption: any;
145
+ isLocalRecordingStopped: any;
146
+ isLocalRecordingStarted: any;
147
+ isLocalRecordingPaused: any;
142
148
  isManualCaptionActive: any;
143
149
  isSaveTranscriptsEnabled: any;
144
150
  isWebexAssistantActive: any;
@@ -21,6 +21,8 @@ import RecordingController from '../recording-controller';
21
21
  import ControlsOptionsManager from '../controls-options-manager';
22
22
  import { LocusMediaRequest } from './locusMediaRequest';
23
23
  import { BrbState } from './brbState';
24
+ import { SetStageOptions } from './request.type';
25
+ import { Invitee } from './type';
24
26
  export type CaptionData = {
25
27
  id: string;
26
28
  isFinal: boolean;
@@ -66,6 +68,13 @@ export type AddMediaOptions = {
66
68
  remoteMediaManagerConfig?: RemoteMediaManagerConfiguration;
67
69
  bundlePolicy?: BundlePolicy;
68
70
  allowMediaInLobby?: boolean;
71
+ additionalMediaOptions?: AdditionalMediaOptions;
72
+ };
73
+ export type AdditionalMediaOptions = {
74
+ sendVideo?: boolean;
75
+ receiveVideo?: boolean;
76
+ sendAudio?: boolean;
77
+ receiveAudio?: boolean;
69
78
  };
70
79
  export type CallStateForMetrics = {
71
80
  correlationId?: string;
@@ -479,10 +488,11 @@ export default class Meeting extends StatelessWebexPlugin {
479
488
  /**
480
489
  * @param {Object} attrs
481
490
  * @param {Object} options
491
+ * @param {Function} callback - if provided, it will be called with the newly created meeting object as soon as the meeting.id is set
482
492
  * @constructor
483
493
  * @memberof Meeting
484
494
  */
485
- constructor(attrs: any, options: object);
495
+ constructor(attrs: any, options: object, callback: (meeting: Meeting) => void);
486
496
  /**
487
497
  * returns meeting is joined
488
498
  * @private
@@ -854,43 +864,37 @@ export default class Meeting extends StatelessWebexPlugin {
854
864
  private updateMeetingObject;
855
865
  /**
856
866
  * Invite a guest to the call that isn't normally part of this call
857
- * @param {Object} invitee
867
+ * @param {Invitee} invitee
858
868
  * @param {String} invitee.emailAddress
859
869
  * @param {String} invitee.email
860
870
  * @param {String} invitee.phoneNumber
861
871
  * @param {Boolean} [alertIfActive]
872
+ * @param {Boolean} [invitee.skipEmailValidation]
873
+ * @param {Boolean} [invitee.isInternalNumber]
862
874
  * @returns {Promise} see #members.addMember
863
875
  * @public
864
876
  * @memberof Meeting
865
877
  */
866
- invite(invitee: {
867
- emailAddress: string;
868
- email: string;
869
- phoneNumber: string;
870
- roles: Array<string>;
871
- }, alertIfActive?: boolean): any;
878
+ invite(invitee: Invitee, alertIfActive?: boolean): any;
872
879
  /**
873
880
  * Cancel an outgoing phone call invitation made during a meeting
874
- * @param {Object} invitee
881
+ * @param {Invitee} invitee
875
882
  * @param {String} invitee.phoneNumber
876
883
  * @returns {Promise} see #members.cancelPhoneInvite
877
884
  * @public
878
885
  * @memberof Meeting
879
886
  */
880
- cancelPhoneInvite(invitee: {
881
- phoneNumber: string;
882
- }): any;
887
+ cancelPhoneInvite(invitee: Invitee): any;
883
888
  /**
884
- * Cancel an SIP call invitation made during a meeting
885
- * @param {Object} invitee
889
+ * Cancel an SIP/phone call invitation made during a meeting
890
+ * @param {Invitee} invitee
886
891
  * @param {String} invitee.memberId
887
- * @returns {Promise} see #members.cancelSIPInvite
892
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
893
+ * @returns {Promise} see #members.cancelInviteByMemberId
888
894
  * @public
889
895
  * @memberof Meeting
890
896
  */
891
- cancelSIPInvite(invitee: {
892
- memberId: string;
893
- }): any;
897
+ cancelInviteByMemberId(invitee: Invitee): any;
894
898
  /**
895
899
  * Admit the guest(s) to the call once they are waiting.
896
900
  * If the host/cohost is in a breakout session, the locus url
@@ -1993,5 +1997,18 @@ export default class Meeting extends StatelessWebexPlugin {
1993
1997
  * @returns {Promise<MediaReachabilityMetrics>}
1994
1998
  */
1995
1999
  private getMediaReachabilityMetricFields;
2000
+ /**
2001
+ * Set the stage for the meeting
2002
+ *
2003
+ * @param {SetStageOptions} options Options to use when setting the stage
2004
+ * @returns {Promise} The locus request
2005
+ */
2006
+ setStage({ activeSpeakerProportion, customBackground, customLogo, customNameLabel, importantParticipants, lockAttendeeViewOnStage, showActiveSpeaker, }?: SetStageOptions): Promise<any>;
2007
+ /**
2008
+ * Unset the stage for the meeting
2009
+ *
2010
+ * @returns {Promise} The locus request
2011
+ */
2012
+ unsetStage(): Promise<any>;
1996
2013
  }
1997
2014
  export {};
@@ -1,5 +1,5 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions } from './request.type';
2
+ import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions, SynchronizeVideoLayout } from './request.type';
3
3
  import { AnnotationInfo } from '../annotation/annotation.types';
4
4
  import { ClientMediaPreferences } from '../reachability/reachability.types';
5
5
  /**
@@ -314,4 +314,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
314
314
  * @returns {Promise}
315
315
  */
316
316
  setPostMeetingDataConsent({ postMeetingDataConsent, locusUrl, deviceUrl, selfId, }: PostMeetingDataConsentOptions): Promise<any>;
317
+ /**
318
+ * Synchronize the stage for a meeting
319
+ *
320
+ * @param {LocusUrl} locusUrl The locus URL
321
+ * @param {SetStageVideoLayout} videoLayout The video layout to synchronize
322
+ * @returns {Promise} The locus request
323
+ */
324
+ synchronizeStage(locusUrl: string, videoLayout: SynchronizeVideoLayout): Promise<any>;
317
325
  }
@@ -21,3 +21,77 @@ export type PostMeetingDataConsentOptions = {
21
21
  deviceUrl: string;
22
22
  selfId: string;
23
23
  };
24
+ export type StageCustomLogoPositions = 'LowerLeft' | 'LowerMiddle' | 'LowerRight' | 'UpperLeft' | 'UpperMiddle' | 'UpperRight';
25
+ export type StageNameLabelType = 'Primary' | 'PrimaryInverted' | 'Secondary' | 'SecondaryInverted';
26
+ export type StageCustomBackground = {
27
+ url: string;
28
+ [others: string]: unknown;
29
+ };
30
+ export type StageCustomLogo = {
31
+ url: string;
32
+ position: StageCustomLogoPositions;
33
+ [others: string]: unknown;
34
+ };
35
+ export type StageCustomNameLabel = {
36
+ accentColor: string;
37
+ background: {
38
+ color: string;
39
+ };
40
+ border: {
41
+ color: string;
42
+ };
43
+ content: {
44
+ displayName: {
45
+ color: string;
46
+ };
47
+ subtitle: {
48
+ color: string;
49
+ };
50
+ };
51
+ decoration: {
52
+ color: string;
53
+ };
54
+ fadeOut?: {
55
+ delay: number;
56
+ };
57
+ type: StageNameLabelType;
58
+ [others: string]: unknown;
59
+ };
60
+ export type SetStageOptions = {
61
+ activeSpeakerProportion?: number;
62
+ customBackground?: StageCustomBackground;
63
+ customLogo?: StageCustomLogo;
64
+ customNameLabel?: StageCustomNameLabel;
65
+ importantParticipants?: {
66
+ mainCsi: number;
67
+ participantId: string;
68
+ }[];
69
+ lockAttendeeViewOnStage?: boolean;
70
+ showActiveSpeaker?: boolean;
71
+ };
72
+ export type SetStageVideoLayout = {
73
+ overrideDefault: true;
74
+ lockAttendeeViewOnStageOnly: boolean;
75
+ stageParameters: {
76
+ importantParticipants?: {
77
+ participantId: string;
78
+ mainCsi: number;
79
+ order: number;
80
+ }[];
81
+ showActiveSpeaker: {
82
+ show: boolean;
83
+ order: number;
84
+ };
85
+ activeSpeakerProportion: number;
86
+ stageManagerType: number;
87
+ };
88
+ customLayouts?: {
89
+ background?: StageCustomBackground;
90
+ logo?: StageCustomLogo;
91
+ };
92
+ nameLabelStyle?: StageCustomNameLabel;
93
+ };
94
+ export type UnsetStageVideoLayout = {
95
+ overrideDefault: false;
96
+ };
97
+ export type SynchronizeVideoLayout = SetStageVideoLayout | UnsetStageVideoLayout;
@@ -0,0 +1,9 @@
1
+ export type Invitee = {
2
+ memberId: string;
3
+ emailAddress: string;
4
+ email: string;
5
+ phoneNumber: string;
6
+ roles: Array<string>;
7
+ skipEmailValidation?: boolean;
8
+ isInternalNumber?: boolean;
9
+ };
@@ -71,6 +71,9 @@ declare const MeetingUtil: {
71
71
  canStopTranscribing: (displayHints: any) => any;
72
72
  isClosedCaptionActive: (displayHints: any) => any;
73
73
  canStartManualCaption: (displayHints: any) => any;
74
+ isLocalRecordingStarted: (displayHints: any) => any;
75
+ isLocalRecordingStopped: (displayHints: any) => any;
76
+ isLocalRecordingPaused: (displayHints: any) => any;
74
77
  canStopManualCaption: (displayHints: any) => any;
75
78
  isManualCaptionActive: (displayHints: any) => any;
76
79
  isWebexAssistantActive: (displayHints: any) => any;
@@ -4,6 +4,7 @@ import MembersCollection from './collection';
4
4
  import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
5
5
  import { MediaRequestManager } from '../multistream/mediaRequestManager';
6
6
  import { ServerRoleShape } from './types';
7
+ import { Invitee } from '../meeting/type';
7
8
  /**
8
9
  * @class Members
9
10
  */
@@ -212,26 +213,28 @@ export default class Members extends StatelessWebexPlugin {
212
213
  private update;
213
214
  /**
214
215
  * Adds a guest Member to the associated meeting
215
- * @param {String} invitee
216
+ * @param {Invitee} invitee
216
217
  * @param {Boolean} [alertIfActive]
217
218
  * @returns {Promise}
218
219
  * @memberof Members
219
220
  */
220
- addMember(invitee: any, alertIfActive?: boolean): any;
221
+ addMember(invitee: Invitee, alertIfActive?: boolean): any;
221
222
  /**
222
223
  * Cancels an outgoing PSTN call to the associated meeting
223
- * @param {String} invitee
224
+ * @param {Invitee} invitee
224
225
  * @returns {Promise}
225
226
  * @memberof Members
226
227
  */
227
- cancelPhoneInvite(invitee: any): any;
228
+ cancelPhoneInvite(invitee: Invitee): any;
228
229
  /**
229
- * Cancels an SIP call to the associated meeting
230
- * @param {String} invitee
230
+ * Cancels an SIP/phone call to the associated meeting
231
+ * @param {Invitee} invitee
232
+ * @param {String} invitee.memberId - The memberId of the invitee
233
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
231
234
  * @returns {Promise}
232
235
  * @memberof Members
233
236
  */
234
- cancelSIPInvite(invitee: any): any;
237
+ cancelInviteByMemberId(invitee: Invitee): any;
235
238
  /**
236
239
  * Admits waiting members (invited guests to meeting)
237
240
  * @param {Array} memberIds
@@ -136,5 +136,5 @@ export default class MembersRequest extends StatelessWebexPlugin {
136
136
  * @throws {Error} if the options are not valid and complete, must have invitee with memberId AND locusUrl
137
137
  * @memberof MembersRequest
138
138
  */
139
- cancelSIPInvite(options: any): Promise<any>;
139
+ cancelInviteByMemberId(options: any): Promise<any>;
140
140
  }
@@ -1,4 +1,5 @@
1
1
  import { RoleAssignmentOptions, RoleAssignmentRequest, ServerRoleShape } from './types';
2
+ import { Invitee } from '../meeting/type';
2
3
  declare const MembersUtil: {
3
4
  /**
4
5
  * @param {Object} invitee with emailAddress, email or phoneNumber
@@ -26,6 +27,7 @@ declare const MembersUtil: {
26
27
  */
27
28
  getAddMemberBody: (options: any) => {
28
29
  invitees: {
30
+ isInternalNumber?: any;
29
31
  roles?: any;
30
32
  address: any;
31
33
  }[];
@@ -55,13 +57,14 @@ declare const MembersUtil: {
55
57
  uri: any;
56
58
  body: {
57
59
  invitees: {
60
+ isInternalNumber?: any;
58
61
  roles?: any;
59
62
  address: any;
60
63
  }[];
61
64
  alertIfActive: any;
62
65
  };
63
66
  };
64
- isInvalidInvitee: (invitee: any) => boolean;
67
+ isInvalidInvitee: (invitee: Invitee) => boolean;
65
68
  getRemoveMemberRequestParams: (options: any) => {
66
69
  method: string;
67
70
  uri: string;
@@ -228,16 +231,17 @@ declare const MembersUtil: {
228
231
  }[];
229
232
  };
230
233
  };
231
- cancelSIPInviteOptions: (invitee: any, locusUrl: any) => {
234
+ cancelInviteByMemberIdOptions: (invitee: any, locusUrl: any) => {
232
235
  invitee: any;
233
236
  locusUrl: any;
234
237
  };
235
- generateCancelSIPInviteRequestParams: (options: any) => {
238
+ generateCancelInviteByMemberIdRequestParams: (options: any) => {
236
239
  method: string;
237
240
  uri: any;
238
241
  body: {
239
242
  actionType: string;
240
243
  invitees: {
244
+ isInternalNumber?: any;
241
245
  address: any;
242
246
  }[];
243
247
  };
@@ -7,9 +7,17 @@ export declare const RemoteMediaEvents: {
7
7
  Stopped: string;
8
8
  };
9
9
  export type RemoteVideoResolution = 'thumbnail' | 'very small' | 'small' | 'medium' | 'large' | 'best';
10
+ export declare const MAX_FS_VALUES: {
11
+ '90p': number;
12
+ '180p': number;
13
+ '360p': number;
14
+ '540p': number;
15
+ '720p': number;
16
+ '1080p': number;
17
+ };
10
18
  /**
11
19
  * Converts pane size into h264 maxFs
12
- * @param {PaneSize} paneSize
20
+ * @param {RemoteVideoResolution} paneSize
13
21
  * @returns {number}
14
22
  */
15
23
  export declare function getMaxFs(paneSize: RemoteVideoResolution): number;
@@ -29,6 +37,12 @@ export declare class RemoteMedia extends EventsScope {
29
37
  private readonly options;
30
38
  private mediaRequestId?;
31
39
  readonly id: RemoteMediaId;
40
+ /**
41
+ * The max frame size of the media request, used for logging and media requests.
42
+ * Set by setSizeHint() based on video element dimensions.
43
+ * When > 0, this value takes precedence over options.resolution in sendMediaRequest().
44
+ */
45
+ private maxFrameSize;
32
46
  /**
33
47
  * Constructs RemoteMedia instance
34
48
  *
@@ -45,6 +59,11 @@ export declare class RemoteMedia extends EventsScope {
45
59
  * @note width/height of 0 will be ignored
46
60
  */
47
61
  setSizeHint(width: any, height: any): void;
62
+ /**
63
+ * Get the current effective maxFs value that would be used in media requests
64
+ * @returns {number | undefined} The maxFs value, or undefined if no constraints
65
+ */
66
+ getEffectiveMaxFs(): number | undefined;
48
67
  /**
49
68
  * registers event listeners on the receive slot and forwards all the events
50
69
  */
@@ -45,5 +45,16 @@ export declare class RemoteMediaGroup {
45
45
  * @returns true if remote media is found
46
46
  */
47
47
  includes(remoteMedia: RemoteMedia, filter?: 'all' | 'pinned' | 'unpinned'): boolean;
48
+ /**
49
+ * Calculate the effective maxFs for the active speaker media request based on unpinned RemoteMedia instances
50
+ * @returns {number | undefined} The calculated maxFs value, or undefined if no constraints
51
+ * @private
52
+ */
53
+ private getEffectiveMaxFsForActiveSpeaker;
54
+ /**
55
+ * Get the current effective maxFs that would be used for the active speaker media request
56
+ * @returns {number | undefined} The effective maxFs value
57
+ */
58
+ getEffectiveMaxFs(): number | undefined;
48
59
  }
49
60
  export {};
@@ -1,7 +1,17 @@
1
1
  import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup, StreamState } from '@webex/internal-media-core';
2
+ /**
3
+ * This class is used to manage the sendSlots for the given media types.
4
+ */
2
5
  export default class SendSlotManager {
3
6
  private readonly slots;
4
7
  private readonly LoggerProxy;
8
+ private readonly sourceStateOverrides;
9
+ /**
10
+ * Constructor for SendSlotManager
11
+ *
12
+ * @param {any} LoggerProxy is used to log the messages
13
+ * @constructor
14
+ */
5
15
  constructor(LoggerProxy: any);
6
16
  /**
7
17
  * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
@@ -32,6 +42,12 @@ export default class SendSlotManager {
32
42
  * @returns {void}
33
43
  */
34
44
  setSourceStateOverride(mediaType: MediaType, state: StreamState | null): void;
45
+ /**
46
+ * Gets the source state override for the given media type.
47
+ * @param {MediaType} mediaType - The type of media to get the source state override for.
48
+ * @returns {StreamState | null} - The current source state override or null if not set.
49
+ */
50
+ private getSourceStateOverride;
35
51
  /**
36
52
  * This method publishes the given stream to the sendSlot for the given mediaType
37
53
  * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
@@ -68,12 +68,12 @@ export default class Reachability extends EventsScope {
68
68
  }>;
69
69
  /**
70
70
  * Checks if the given subnet is reachable
71
- * @param {string} mediaServerIp - media server ip
71
+ * @param {string} selectedSubnetFirstOctet - selected subnet first octet, e.g. "10" for "10.X.X.X"
72
72
  * @returns {boolean | null} true if reachable, false if not reachable, null if mediaServerIp is not provided
73
73
  * @public
74
74
  * @memberof Reachability
75
75
  */
76
- isSubnetReachable(mediaServerIp?: string): boolean | null;
76
+ isSubnetReachable(selectedSubnetFirstOctet: string): boolean | null;
77
77
  /**
78
78
  * Gets a list of media clusters from the backend and performs reachability checks on all the clusters
79
79
  * @param {string} trigger - explains the reason for starting reachability
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.8.1-next.4"
461
+ version: "3.8.1-next.41"
462
462
  });
463
463
  var _default = exports.default = Webinar;
464
464
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
3
  "description": "",
4
- "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
4
+ "license": "Cisco's General Terms (https://www.cisco.com/site/us/en/about/legal/contract-experience/index.html)",
5
5
  "contributors": [
6
6
  "Adam Weeks <adweeks@cisco.com> (https://adamweeks.com/)",
7
7
  "Arun Ganeshan <arungane@cisco.com>",
@@ -43,13 +43,12 @@
43
43
  "@webex/eslint-config-legacy": "0.0.0",
44
44
  "@webex/jest-config-legacy": "0.0.0",
45
45
  "@webex/legacy-tools": "0.0.0",
46
- "@webex/plugin-meetings": "3.8.1-next.4",
47
- "@webex/plugin-rooms": "3.8.0-next.30",
48
- "@webex/test-helper-chai": "3.8.1-next.1",
49
- "@webex/test-helper-mocha": "3.8.1-next.1",
50
- "@webex/test-helper-mock-webex": "3.8.1-next.1",
51
- "@webex/test-helper-retry": "3.8.1-next.1",
52
- "@webex/test-helper-test-users": "3.8.1-next.1",
46
+ "@webex/plugin-rooms": "3.8.1-next.13",
47
+ "@webex/test-helper-chai": "3.8.1-next.11",
48
+ "@webex/test-helper-mocha": "3.8.1-next.11",
49
+ "@webex/test-helper-mock-webex": "3.8.1-next.11",
50
+ "@webex/test-helper-retry": "3.8.1-next.11",
51
+ "@webex/test-helper-test-users": "3.8.1-next.11",
53
52
  "chai": "^4.3.4",
54
53
  "chai-as-promised": "^7.1.1",
55
54
  "eslint": "^8.24.0",
@@ -61,23 +60,23 @@
61
60
  "typescript": "^4.7.4"
62
61
  },
63
62
  "dependencies": {
64
- "@webex/common": "3.8.1-next.1",
65
- "@webex/event-dictionary-ts": "^1.0.1753",
66
- "@webex/internal-media-core": "2.18.1",
67
- "@webex/internal-plugin-conversation": "3.8.1-next.1",
68
- "@webex/internal-plugin-device": "3.8.1-next.1",
69
- "@webex/internal-plugin-llm": "3.8.1-next.1",
70
- "@webex/internal-plugin-mercury": "3.8.1-next.1",
71
- "@webex/internal-plugin-metrics": "3.8.1-next.1",
72
- "@webex/internal-plugin-support": "3.8.1-next.1",
73
- "@webex/internal-plugin-user": "3.8.1-next.1",
74
- "@webex/internal-plugin-voicea": "3.8.1-next.4",
75
- "@webex/media-helpers": "3.8.1-next.2",
76
- "@webex/plugin-people": "3.8.1-next.1",
77
- "@webex/plugin-rooms": "3.8.0-next.30",
63
+ "@webex/common": "3.8.1-next.11",
64
+ "@webex/event-dictionary-ts": "^1.0.1819",
65
+ "@webex/internal-media-core": "2.18.5",
66
+ "@webex/internal-plugin-conversation": "3.8.1-next.16",
67
+ "@webex/internal-plugin-device": "3.8.1-next.14",
68
+ "@webex/internal-plugin-llm": "3.8.1-next.15",
69
+ "@webex/internal-plugin-mercury": "3.8.1-next.14",
70
+ "@webex/internal-plugin-metrics": "3.8.1-next.14",
71
+ "@webex/internal-plugin-support": "3.8.1-next.16",
72
+ "@webex/internal-plugin-user": "3.8.1-next.14",
73
+ "@webex/internal-plugin-voicea": "3.8.1-next.41",
74
+ "@webex/media-helpers": "3.8.1-next.16",
75
+ "@webex/plugin-people": "3.8.1-next.14",
76
+ "@webex/plugin-rooms": "3.8.1-next.13",
78
77
  "@webex/ts-sdp": "^1.8.1",
79
- "@webex/web-capabilities": "^1.4.0",
80
- "@webex/webex-core": "3.8.1-next.1",
78
+ "@webex/web-capabilities": "^1.6.0",
79
+ "@webex/webex-core": "3.8.1-next.14",
81
80
  "ampersand-collection": "^2.0.2",
82
81
  "bowser": "^2.11.0",
83
82
  "btoa": "^1.2.1",
@@ -93,5 +92,5 @@
93
92
  "//": [
94
93
  "TODO: upgrade jwt-decode when moving to node 18"
95
94
  ],
96
- "version": "3.8.1-next.4"
95
+ "version": "3.8.1-next.41"
97
96
  }