@webex/plugin-meetings 3.8.1-next.25 → 3.8.1-next.27

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.
@@ -25,3 +25,67 @@ export type PostMeetingDataConsentOptions = {
25
25
  deviceUrl: string;
26
26
  selfId: string;
27
27
  };
28
+
29
+ export type StageCustomLogoPositions =
30
+ | 'LowerLeft'
31
+ | 'LowerMiddle'
32
+ | 'LowerRight'
33
+ | 'UpperLeft'
34
+ | 'UpperMiddle'
35
+ | 'UpperRight';
36
+
37
+ export type StageNameLabelType = 'Primary' | 'PrimaryInverted' | 'Secondary' | 'SecondaryInverted';
38
+
39
+ export type StageCustomBackground = {
40
+ url: string;
41
+ [others: string]: unknown;
42
+ };
43
+
44
+ export type StageCustomLogo = {
45
+ url: string;
46
+ position: StageCustomLogoPositions;
47
+ [others: string]: unknown;
48
+ };
49
+
50
+ export type StageCustomNameLabel = {
51
+ accentColor: string;
52
+ background: {color: string};
53
+ border: {color: string};
54
+ content: {displayName: {color: string}; subtitle: {color: string}};
55
+ decoration: {color: string};
56
+ fadeOut?: {delay: number};
57
+ type: StageNameLabelType;
58
+ [others: string]: unknown;
59
+ };
60
+
61
+ export type SetStageOptions = {
62
+ activeSpeakerProportion?: number;
63
+ customBackground?: StageCustomBackground;
64
+ customLogo?: StageCustomLogo;
65
+ customNameLabel?: StageCustomNameLabel;
66
+ importantParticipants?: {mainCsi: number; participantId: string}[];
67
+ lockAttendeeViewOnStage?: boolean;
68
+ showActiveSpeaker?: boolean;
69
+ };
70
+
71
+ export type SetStageVideoLayout = {
72
+ overrideDefault: true;
73
+ lockAttendeeViewOnStageOnly: boolean;
74
+ stageParameters: {
75
+ importantParticipants?: {participantId: string; mainCsi: number; order: number}[];
76
+ showActiveSpeaker: {show: boolean; order: number};
77
+ activeSpeakerProportion: number;
78
+ stageManagerType: number;
79
+ };
80
+ customLayouts?: {
81
+ background?: StageCustomBackground;
82
+ logo?: StageCustomLogo;
83
+ };
84
+ nameLabelStyle?: StageCustomNameLabel;
85
+ };
86
+
87
+ export type UnsetStageVideoLayout = {
88
+ overrideDefault: false;
89
+ };
90
+
91
+ export type SynchronizeVideoLayout = SetStageVideoLayout | UnsetStageVideoLayout;
@@ -305,7 +305,7 @@ describe('plugin-meetings', () => {
305
305
  {state: newControls.rdcControl}
306
306
  );
307
307
  });
308
-
308
+
309
309
  it('should trigger the CONTROLS_POLLING_QA_CHANGED event when necessary', () => {
310
310
  locusInfo.controls = {};
311
311
  locusInfo.emitScoped = sinon.stub();
@@ -2108,6 +2108,38 @@ describe('plugin-meetings', () => {
2108
2108
  assert.isFunction(locusParser.onDeltaAction);
2109
2109
  });
2110
2110
 
2111
+ it("#updateLocusInfo invokes updateLocusUrl before updateMeetingInfo", () => {
2112
+ const callOrder = [];
2113
+ sinon.stub(locusInfo, "updateControls");
2114
+ sinon.stub(locusInfo, "updateConversationUrl");
2115
+ sinon.stub(locusInfo, "updateCreated");
2116
+ sinon.stub(locusInfo, "updateFullState");
2117
+ sinon.stub(locusInfo, "updateHostInfo");
2118
+ sinon.stub(locusInfo, "updateMeetingInfo").callsFake(() => {
2119
+ callOrder.push("updateMeetingInfo");
2120
+ });
2121
+ sinon.stub(locusInfo, "updateMediaShares");
2122
+ sinon.stub(locusInfo, "updateParticipantsUrl");
2123
+ sinon.stub(locusInfo, "updateReplace");
2124
+ sinon.stub(locusInfo, "updateSelf");
2125
+ sinon.stub(locusInfo, "updateLocusUrl").callsFake(() => {
2126
+ callOrder.push("updateLocusUrl");
2127
+ });
2128
+ sinon.stub(locusInfo, "updateAclUrl");
2129
+ sinon.stub(locusInfo, "updateBasequence");
2130
+ sinon.stub(locusInfo, "updateSequence");
2131
+ sinon.stub(locusInfo, "updateMemberShip");
2132
+ sinon.stub(locusInfo, "updateIdentifiers");
2133
+ sinon.stub(locusInfo, "updateEmbeddedApps");
2134
+ sinon.stub(locusInfo, "updateResources");
2135
+ sinon.stub(locusInfo, "compareAndUpdate");
2136
+
2137
+ locusInfo.updateLocusInfo(locus);
2138
+
2139
+ // Ensure updateLocusUrl is called before updateMeetingInfo if both are called
2140
+ assert.deepEqual(callOrder, ['updateLocusUrl', 'updateMeetingInfo']);
2141
+ });
2142
+
2111
2143
  it('#updateLocusInfo ignores breakout LEFT message', () => {
2112
2144
  const newLocus = {
2113
2145
  self: {
@@ -2159,6 +2191,8 @@ describe('plugin-meetings', () => {
2159
2191
  assert.notCalled(locusInfo.compareAndUpdate);
2160
2192
  });
2161
2193
 
2194
+
2195
+
2162
2196
  it('onFullLocus() updates the working-copy of locus parser', () => {
2163
2197
  const eventType = 'fakeEvent';
2164
2198
 
@@ -3032,8 +3066,8 @@ describe('plugin-meetings', () => {
3032
3066
 
3033
3067
  sinon.stub(locusInfo, 'updateParticipantDeltas');
3034
3068
  sinon.stub(locusInfo, 'updateParticipants');
3035
- sinon.stub(locusInfo, 'isMeetingActive'),
3036
- sinon.stub(locusInfo, 'handleOneOnOneEvent'),
3069
+ sinon.stub(locusInfo, 'isMeetingActive');
3070
+ sinon.stub(locusInfo, 'handleOneOnOneEvent');
3037
3071
  (updateLocusInfoStub = sinon.stub(locusInfo, 'updateLocusInfo'));
3038
3072
  syncRequestStub = sinon.stub().resolves({body: {}});
3039
3073