@webex/plugin-meetings 3.12.0-next.71 → 3.12.0-next.73

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.
@@ -191,7 +191,7 @@ var AIEnableRequest = _webexCore.WebexPlugin.extend({
191
191
  method: _constants.HTTP_VERBS.PUT
192
192
  });
193
193
  },
194
- version: "3.12.0-next.71"
194
+ version: "3.12.0-next.73"
195
195
  });
196
196
  var _default = exports.default = AIEnableRequest;
197
197
  //# sourceMappingURL=index.js.map
@@ -214,7 +214,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
214
214
  sessionId: this.sessionId
215
215
  });
216
216
  },
217
- version: "3.12.0-next.71"
217
+ version: "3.12.0-next.73"
218
218
  });
219
219
  var _default = exports.default = Breakout;
220
220
  //# sourceMappingURL=breakout.js.map
@@ -1133,7 +1133,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
1133
1133
  this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
1134
1134
  }
1135
1135
  },
1136
- version: "3.12.0-next.71"
1136
+ version: "3.12.0-next.73"
1137
1137
  });
1138
1138
  var _default = exports.default = Breakouts;
1139
1139
  //# sourceMappingURL=index.js.map
@@ -80,6 +80,12 @@ var ControlsOptionsManager = exports.default = /*#__PURE__*/function () {
80
80
  * @memberof ControlsOptionsManager
81
81
  */
82
82
  (0, _defineProperty2.default)(this, "mainLocusUrl", void 0);
83
+ (0, _defineProperty2.default)(this, "getControls", function () {
84
+ return {};
85
+ });
86
+ (0, _defineProperty2.default)(this, "isWebinar", function () {
87
+ return false;
88
+ });
83
89
  this.initialize(request);
84
90
  this.set(options);
85
91
  }
@@ -169,6 +175,12 @@ var ControlsOptionsManager = exports.default = /*#__PURE__*/function () {
169
175
  value: function extract(options) {
170
176
  this.setDisplayHints(options === null || options === void 0 ? void 0 : options.displayHints);
171
177
  this.setLocusUrl(options === null || options === void 0 ? void 0 : options.locusUrl);
178
+ if (options !== null && options !== void 0 && options.getControls) {
179
+ this.getControls = options.getControls;
180
+ }
181
+ if (options !== null && options !== void 0 && options.isWebinar) {
182
+ this.isWebinar = options.isWebinar;
183
+ }
172
184
  }
173
185
 
174
186
  /**
@@ -194,7 +206,19 @@ var ControlsOptionsManager = exports.default = /*#__PURE__*/function () {
194
206
  if (!_util.default.canUpdate(control, _this.displayHints)) {
195
207
  throw new _permission.default("updating meeting control scope \"".concat(control.scope, "\" not allowed, due to moderator property."));
196
208
  }
197
- return (0, _defineProperty2.default)({}, control.scope, control.properties);
209
+ var properties = control.properties;
210
+ if (control.scope === _enums.Control.viewTheParticipantList) {
211
+ var _this$getControls, _ref, _props$enabled, _ref2, _props$panelistEnable, _ref3, _props$attendeeCount;
212
+ var props = properties;
213
+ var current = (_this$getControls = _this.getControls()) === null || _this$getControls === void 0 ? void 0 : _this$getControls.viewTheParticipantList;
214
+ properties = _objectSpread({
215
+ enabled: (_ref = (_props$enabled = props.enabled) !== null && _props$enabled !== void 0 ? _props$enabled : current === null || current === void 0 ? void 0 : current.enabled) !== null && _ref !== void 0 ? _ref : false
216
+ }, _this.isWebinar() && {
217
+ panelistEnabled: (_ref2 = (_props$panelistEnable = props.panelistEnabled) !== null && _props$panelistEnable !== void 0 ? _props$panelistEnable : current === null || current === void 0 ? void 0 : current.panelistEnabled) !== null && _ref2 !== void 0 ? _ref2 : false,
218
+ attendeeCount: (_ref3 = (_props$attendeeCount = props.attendeeCount) !== null && _props$attendeeCount !== void 0 ? _props$attendeeCount : Boolean(current === null || current === void 0 ? void 0 : current.attendeeCount)) !== null && _ref3 !== void 0 ? _ref3 : false
219
+ });
220
+ }
221
+ return (0, _defineProperty2.default)({}, control.scope, properties);
198
222
  });
199
223
  return payloads.reduce(function (previous, payload) {
200
224
  var requestParams = _util.default.getControlsRequestParams({
@@ -225,10 +249,10 @@ var ControlsOptionsManager = exports.default = /*#__PURE__*/function () {
225
249
  var body = {};
226
250
  var error;
227
251
  var shouldSkipCheckToMergeBody = false;
228
- (0, _entries.default)(setting).forEach(function (_ref2) {
229
- var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
230
- key = _ref3[0],
231
- value = _ref3[1];
252
+ (0, _entries.default)(setting).forEach(function (_ref5) {
253
+ var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
254
+ key = _ref6[0],
255
+ value = _ref6[1];
232
256
  if (!shouldSkipCheckToMergeBody && value !== undefined && !(_util.default !== null && _util.default !== void 0 && _util.default["".concat(value ? _constants.CAN_SET : _constants.CAN_UNSET).concat(key)](_this2.displayHints))) {
233
257
  error = new _permission.default("".concat(key, " [").concat(value, "] not allowed, due to moderator property."));
234
258
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_parameter","_interopRequireDefault","_permission","_loggerProxy","_enums","_util","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ControlsOptionsManager","exports","request","options","_classCallCheck2","initialize","set","_createClass2","key","value","extract","setLocusUrl","url","isMainLocus","locusUrl","mainLocusUrl","setDisplayHints","hints","displayHints","getLocusUrl","getDisplayHints","update","_this","_promise","reject","ParameterError","_len","controls","Array","_key","payloads","map","control","_keys","Control","includes","scope","Error","concat","Util","canUpdate","PermissionError","properties","reduce","previous","payload","requestParams","getControlsRequestParams","body","then","sendControlsRequest","resolve","setControls","setting","_this2","LoggerProxy","logger","log","_stringify","error","shouldSkipCheckToMergeBody","_entries","_ref2","_ref3","_slicedToArray2","undefined","CAN_SET","CAN_UNSET","Setting","muted","audio","camelCase","disallowUnmute","muteOnEntry","ENABLED","roles","_isArray","authorizingLocusUrl","locusDeltaRequest","setMuteOnEntry","enabled","setDisallowUnmute","setMuteAll","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled"],"sources":["index.ts"],"sourcesContent":["import {camelCase} from 'lodash';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport MeetingRequest from '../meeting/request';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {Control, Setting} from './enums';\nimport {ControlConfig} from './types';\nimport Util from './util';\nimport {CAN_SET, CAN_UNSET, ENABLED} from './constants';\n\n/**\n * docs\n * https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html\n * https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351\n */\n\n/**\n * @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class ControlsOptionsManager {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof ControlsOptionsManager\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof ControlsOptionsManager\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private locusUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private mainLocusUrl: string;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof ControlsOptionsManager\n */\n constructor(\n request: MeetingRequest,\n options?: {\n locusUrl: string;\n displayHints?: Array<string>;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public set(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @param {boolean} isMainLocus\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setLocusUrl(url: string, isMainLocus?: boolean) {\n this.locusUrl = url;\n if (isMainLocus) {\n this.mainLocusUrl = url;\n }\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private extract(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n }\n\n /**\n * Set controls for this meeting.\n *\n * @param {Array<ControlConfig>} controls - Spread Array of ControlConfigs\n * @returns {Promise<Array<any>>}- Promise resolving if the request was successful.\n */\n public update(...controls: Array<ControlConfig>) {\n if (!this.locusUrl) {\n return Promise.reject(\n new ParameterError('The associated locusUrl for update() controls must be defined.')\n );\n }\n\n const payloads = controls.map((control) => {\n if (!Object.keys(Control).includes(control.scope)) {\n throw new Error(\n `updating meeting control scope \"${control.scope}\" is not a supported scope`\n );\n }\n\n if (!Util.canUpdate(control, this.displayHints)) {\n throw new PermissionError(\n `updating meeting control scope \"${control.scope}\" not allowed, due to moderator property.`\n );\n }\n\n return {\n [control.scope]: control.properties,\n };\n });\n\n return payloads.reduce((previous, payload) => {\n const requestParams = Util.getControlsRequestParams({\n body: payload,\n locusUrl: this.locusUrl,\n mainLocusUrl: this.mainLocusUrl,\n });\n\n return previous.then(() => this.sendControlsRequest(requestParams));\n }, Promise.resolve());\n }\n\n /**\n * @param {Setting} setting\n * @private\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n private setControls(setting: {\n [Setting.muted]?: boolean;\n [Setting.disallowUnmute]?: boolean;\n [Setting.muteOnEntry]?: boolean;\n [Setting.roles]?: Array<string>;\n }): Promise<any> {\n if (!this.locusUrl) {\n return Promise.reject(\n new ParameterError('The associated locusUrl for setControls() must be defined.')\n );\n }\n\n LoggerProxy.logger.log(\n `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`\n );\n\n const body: Record<string, any> = {};\n let error: PermissionError;\n\n let shouldSkipCheckToMergeBody = false;\n\n Object.entries(setting).forEach(([key, value]) => {\n if (\n !shouldSkipCheckToMergeBody &&\n value !== undefined &&\n !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)\n ) {\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n\n if (error) {\n return;\n }\n\n switch (key) {\n case Setting.muted:\n shouldSkipCheckToMergeBody = true;\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n break;\n\n case Setting.disallowUnmute:\n case Setting.muteOnEntry:\n if (Object.keys(setting).includes(Setting.muted)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n body.audio[camelCase(key)] = value;\n } else {\n body[camelCase(key)] = {[ENABLED]: value};\n }\n break;\n\n case Setting.roles:\n if (Array.isArray(value)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n }\n break;\n\n default:\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n });\n\n if (error) {\n return Promise.reject(error);\n }\n\n const requestParams = Util.getControlsRequestParams({\n body,\n locusUrl: this.locusUrl,\n mainLocusUrl: this.mainLocusUrl,\n });\n\n return this.sendControlsRequest(requestParams);\n }\n\n /**\n * Sends a controls request to Locus. When authorizingLocusUrl is present in the body,\n * we use a plain request() because the response contains the main session Locus DTO\n * instead of the breakout we're in, so we don't want to parse it as a delta.\n * Otherwise we use locusDeltaRequest() for normal delta processing.\n *\n * @param {Object} requestParams - The request parameters from getControlsRequestParams.\n * @returns {Promise<any>}\n */\n private sendControlsRequest(requestParams: {\n uri: string;\n body: Record<string, any>;\n method: string;\n }): Promise<any> {\n return requestParams.body.authorizingLocusUrl\n ? // @ts-ignore\n this.request.request(requestParams)\n : this.request.locusDeltaRequest(requestParams);\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteOnEntry(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.muteOnEntry]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setDisallowUnmute(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.disallowUnmute]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} mutedEnabled\n * @param {boolean} disallowUnmuteEnabled\n * @param {boolean} muteOnEntryEnabled\n * @param {array} roles which should be muted\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean,\n roles: Array<string>\n ): Promise<any> {\n return this.setControls({\n [Setting.muted]: mutedEnabled,\n [Setting.disallowUnmute]: disallowUnmuteEnabled,\n [Setting.muteOnEntry]: muteOnEntryEnabled,\n [Setting.roles]: roles,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_lodash","require","_parameter","_interopRequireDefault","_permission","_loggerProxy","_enums","_util","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ControlsOptionsManager","exports","request","options","_classCallCheck2","initialize","set","_createClass2","key","value","extract","setLocusUrl","url","isMainLocus","locusUrl","mainLocusUrl","setDisplayHints","hints","displayHints","getLocusUrl","getDisplayHints","getControls","isWebinar","update","_this","_promise","reject","ParameterError","_len","controls","Array","_key","payloads","map","control","_keys","Control","includes","scope","Error","concat","Util","canUpdate","PermissionError","properties","viewTheParticipantList","_this$getControls","_ref","_props$enabled","_ref2","_props$panelistEnable","_ref3","_props$attendeeCount","props","current","enabled","panelistEnabled","attendeeCount","Boolean","reduce","previous","payload","requestParams","getControlsRequestParams","body","then","sendControlsRequest","resolve","setControls","setting","_this2","LoggerProxy","logger","log","_stringify","error","shouldSkipCheckToMergeBody","_entries","_ref5","_ref6","_slicedToArray2","undefined","CAN_SET","CAN_UNSET","Setting","muted","audio","camelCase","disallowUnmute","muteOnEntry","ENABLED","roles","_isArray","authorizingLocusUrl","locusDeltaRequest","setMuteOnEntry","setDisallowUnmute","setMuteAll","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled"],"sources":["index.ts"],"sourcesContent":["import {camelCase} from 'lodash';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport MeetingRequest from '../meeting/request';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {Control, Setting} from './enums';\nimport {ControlConfig, ViewTheParticipantListProperties} from './types';\nimport Util from './util';\nimport {CAN_SET, CAN_UNSET, ENABLED} from './constants';\n\n/**\n * docs\n * https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html\n * https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351\n */\n\n/**\n * @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class ControlsOptionsManager {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof ControlsOptionsManager\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof ControlsOptionsManager\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private locusUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private mainLocusUrl: string;\n\n private getControls: () => Record<string, any> = () => ({});\n\n private isWebinar: () => boolean = () => false;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof ControlsOptionsManager\n */\n constructor(\n request: MeetingRequest,\n options?: {\n locusUrl: string;\n displayHints?: Array<string>;\n getControls?: () => Record<string, any>;\n isWebinar?: () => boolean;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public set(options?: {\n locusUrl: string;\n displayHints?: Array<string>;\n getControls?: () => Record<string, any>;\n isWebinar?: () => boolean;\n }) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @param {boolean} isMainLocus\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setLocusUrl(url: string, isMainLocus?: boolean) {\n this.locusUrl = url;\n if (isMainLocus) {\n this.mainLocusUrl = url;\n }\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private extract(options?: {\n locusUrl: string;\n displayHints?: Array<string>;\n getControls?: () => Record<string, any>;\n isWebinar?: () => boolean;\n }) {\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n if (options?.getControls) {\n this.getControls = options.getControls;\n }\n if (options?.isWebinar) {\n this.isWebinar = options.isWebinar;\n }\n }\n\n /**\n * Set controls for this meeting.\n *\n * @param {Array<ControlConfig>} controls - Spread Array of ControlConfigs\n * @returns {Promise<Array<any>>}- Promise resolving if the request was successful.\n */\n public update(...controls: Array<ControlConfig>) {\n if (!this.locusUrl) {\n return Promise.reject(\n new ParameterError('The associated locusUrl for update() controls must be defined.')\n );\n }\n\n const payloads = controls.map((control) => {\n if (!Object.keys(Control).includes(control.scope)) {\n throw new Error(\n `updating meeting control scope \"${control.scope}\" is not a supported scope`\n );\n }\n\n if (!Util.canUpdate(control, this.displayHints)) {\n throw new PermissionError(\n `updating meeting control scope \"${control.scope}\" not allowed, due to moderator property.`\n );\n }\n\n let {properties} = control;\n\n if (control.scope === Control.viewTheParticipantList) {\n const props = properties as ViewTheParticipantListProperties;\n const current = this.getControls()?.viewTheParticipantList;\n properties = {\n enabled: props.enabled ?? current?.enabled ?? false,\n ...(this.isWebinar() && {\n panelistEnabled: props.panelistEnabled ?? current?.panelistEnabled ?? false,\n attendeeCount: props.attendeeCount ?? Boolean(current?.attendeeCount) ?? false,\n }),\n };\n }\n\n return {\n [control.scope]: properties,\n };\n });\n\n return payloads.reduce((previous, payload) => {\n const requestParams = Util.getControlsRequestParams({\n body: payload,\n locusUrl: this.locusUrl,\n mainLocusUrl: this.mainLocusUrl,\n });\n\n return previous.then(() => this.sendControlsRequest(requestParams));\n }, Promise.resolve());\n }\n\n /**\n * @param {Setting} setting\n * @private\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n private setControls(setting: {\n [Setting.muted]?: boolean;\n [Setting.disallowUnmute]?: boolean;\n [Setting.muteOnEntry]?: boolean;\n [Setting.roles]?: Array<string>;\n }): Promise<any> {\n if (!this.locusUrl) {\n return Promise.reject(\n new ParameterError('The associated locusUrl for setControls() must be defined.')\n );\n }\n\n LoggerProxy.logger.log(\n `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`\n );\n\n const body: Record<string, any> = {};\n let error: PermissionError;\n\n let shouldSkipCheckToMergeBody = false;\n\n Object.entries(setting).forEach(([key, value]) => {\n if (\n !shouldSkipCheckToMergeBody &&\n value !== undefined &&\n !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)\n ) {\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n\n if (error) {\n return;\n }\n\n switch (key) {\n case Setting.muted:\n shouldSkipCheckToMergeBody = true;\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n break;\n\n case Setting.disallowUnmute:\n case Setting.muteOnEntry:\n if (Object.keys(setting).includes(Setting.muted)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n body.audio[camelCase(key)] = value;\n } else {\n body[camelCase(key)] = {[ENABLED]: value};\n }\n break;\n\n case Setting.roles:\n if (Array.isArray(value)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n }\n break;\n\n default:\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n });\n\n if (error) {\n return Promise.reject(error);\n }\n\n const requestParams = Util.getControlsRequestParams({\n body,\n locusUrl: this.locusUrl,\n mainLocusUrl: this.mainLocusUrl,\n });\n\n return this.sendControlsRequest(requestParams);\n }\n\n /**\n * Sends a controls request to Locus. When authorizingLocusUrl is present in the body,\n * we use a plain request() because the response contains the main session Locus DTO\n * instead of the breakout we're in, so we don't want to parse it as a delta.\n * Otherwise we use locusDeltaRequest() for normal delta processing.\n *\n * @param {Object} requestParams - The request parameters from getControlsRequestParams.\n * @returns {Promise<any>}\n */\n private sendControlsRequest(requestParams: {\n uri: string;\n body: Record<string, any>;\n method: string;\n }): Promise<any> {\n return requestParams.body.authorizingLocusUrl\n ? // @ts-ignore\n this.request.request(requestParams)\n : this.request.locusDeltaRequest(requestParams);\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteOnEntry(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.muteOnEntry]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setDisallowUnmute(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.disallowUnmute]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} mutedEnabled\n * @param {boolean} disallowUnmuteEnabled\n * @param {boolean} muteOnEntryEnabled\n * @param {array} roles which should be muted\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean,\n roles: Array<string>\n ): Promise<any> {\n return this.setControls({\n [Setting.muted]: mutedEnabled,\n [Setting.disallowUnmute]: disallowUnmuteEnabled,\n [Setting.muteOnEntry]: muteOnEntryEnabled,\n [Setting.roles]: roles,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -381,7 +381,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
381
381
  throw error;
382
382
  });
383
383
  },
384
- version: "3.12.0-next.71"
384
+ version: "3.12.0-next.73"
385
385
  });
386
386
  var _default = exports.default = SimultaneousInterpretation;
387
387
  //# sourceMappingURL=index.js.map
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
18
18
  languageCode: 'number',
19
19
  languageName: 'string'
20
20
  },
21
- version: "3.12.0-next.71"
21
+ version: "3.12.0-next.73"
22
22
  });
23
23
  var _default = exports.default = SILanguage;
24
24
  //# sourceMappingURL=siLanguage.js.map
@@ -2407,7 +2407,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2407
2407
  */
2408
2408
  _this.controlsOptionsManager = new _controlsOptionsManager.default(_this.meetingRequest, {
2409
2409
  locusUrl: (_this$locusInfo5 = _this.locusInfo) === null || _this$locusInfo5 === void 0 ? void 0 : _this$locusInfo5.url,
2410
- displayHints: []
2410
+ displayHints: [],
2411
+ getControls: function getControls() {
2412
+ var _this$locusInfo6;
2413
+ return (_this$locusInfo6 = _this.locusInfo) === null || _this$locusInfo6 === void 0 ? void 0 : _this$locusInfo6.controls;
2414
+ },
2415
+ isWebinar: function isWebinar() {
2416
+ var _this$locusInfo7, _this$locusInfo7$info;
2417
+ return (_this$locusInfo7 = _this.locusInfo) === null || _this$locusInfo7 === void 0 ? void 0 : (_this$locusInfo7$info = _this$locusInfo7.info) === null || _this$locusInfo7$info === void 0 ? void 0 : _this$locusInfo7$info.isWebinar;
2418
+ }
2411
2419
  });
2412
2420
  _this.setUpLocusInfoListeners();
2413
2421
  _this.locusInfo.init(attrs.locus ? attrs.locus : {});
@@ -6449,8 +6457,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6449
6457
  }, {
6450
6458
  key: "isReactionsSupported",
6451
6459
  value: function isReactionsSupported() {
6452
- var _this$locusInfo6, _this$locusInfo6$cont;
6453
- if ((_this$locusInfo6 = this.locusInfo) !== null && _this$locusInfo6 !== void 0 && (_this$locusInfo6$cont = _this$locusInfo6.controls) !== null && _this$locusInfo6$cont !== void 0 && _this$locusInfo6$cont.reactions.enabled) {
6460
+ var _this$locusInfo8, _this$locusInfo8$cont;
6461
+ if ((_this$locusInfo8 = this.locusInfo) !== null && _this$locusInfo8 !== void 0 && (_this$locusInfo8$cont = _this$locusInfo8.controls) !== null && _this$locusInfo8$cont !== void 0 && _this$locusInfo8$cont.reactions.enabled) {
6454
6462
  return true;
6455
6463
  }
6456
6464
  _loggerProxy.default.logger.error('Meeting:index#isReactionsSupported --> Reactions is not supported');
@@ -9781,8 +9789,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9781
9789
  * @memberof Meeting
9782
9790
  */
9783
9791
  function sendReaction(reactionType, skinToneType) {
9784
- var _this$locusInfo7, _this$locusInfo7$cont, _this$locusInfo7$cont2;
9785
- var reactionChannelUrl = (_this$locusInfo7 = this.locusInfo) === null || _this$locusInfo7 === void 0 ? void 0 : (_this$locusInfo7$cont = _this$locusInfo7.controls) === null || _this$locusInfo7$cont === void 0 ? void 0 : (_this$locusInfo7$cont2 = _this$locusInfo7$cont.reactions) === null || _this$locusInfo7$cont2 === void 0 ? void 0 : _this$locusInfo7$cont2.reactionChannelUrl;
9792
+ var _this$locusInfo9, _this$locusInfo9$cont, _this$locusInfo9$cont2;
9793
+ var reactionChannelUrl = (_this$locusInfo9 = this.locusInfo) === null || _this$locusInfo9 === void 0 ? void 0 : (_this$locusInfo9$cont = _this$locusInfo9.controls) === null || _this$locusInfo9$cont === void 0 ? void 0 : (_this$locusInfo9$cont2 = _this$locusInfo9$cont.reactions) === null || _this$locusInfo9$cont2 === void 0 ? void 0 : _this$locusInfo9$cont2.reactionChannelUrl;
9786
9794
  var participantId = this.members.selfId;
9787
9795
  var reactionData = _reactions.Reactions[reactionType] || {
9788
9796
  type: reactionType
@@ -9842,8 +9850,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9842
9850
  }, {
9843
9851
  key: "toggleReactions",
9844
9852
  value: function toggleReactions(enable) {
9845
- var _this$locusInfo8, _this$locusInfo8$cont, _this$locusInfo8$cont2;
9846
- var isEnabled = (_this$locusInfo8 = this.locusInfo) === null || _this$locusInfo8 === void 0 ? void 0 : (_this$locusInfo8$cont = _this$locusInfo8.controls) === null || _this$locusInfo8$cont === void 0 ? void 0 : (_this$locusInfo8$cont2 = _this$locusInfo8$cont.reactions) === null || _this$locusInfo8$cont2 === void 0 ? void 0 : _this$locusInfo8$cont2.enabled;
9853
+ var _this$locusInfo0, _this$locusInfo0$cont, _this$locusInfo0$cont2;
9854
+ var isEnabled = (_this$locusInfo0 = this.locusInfo) === null || _this$locusInfo0 === void 0 ? void 0 : (_this$locusInfo0$cont = _this$locusInfo0.controls) === null || _this$locusInfo0$cont === void 0 ? void 0 : (_this$locusInfo0$cont2 = _this$locusInfo0$cont.reactions) === null || _this$locusInfo0$cont2 === void 0 ? void 0 : _this$locusInfo0$cont2.enabled;
9847
9855
  if (isEnabled && enable || !isEnabled && !enable) {
9848
9856
  return _promise.default.resolve("Reactions are already ".concat(isEnabled ? 'enabled' : 'disabled', "."));
9849
9857
  }