@webex/plugin-meetings 2.38.1 → 2.39.0

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.
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
13
+ var _camelCase3 = _interopRequireDefault(require("lodash/camelCase"));
14
+ var _permission = _interopRequireDefault(require("../common/errors/permission"));
15
+ var _constants = require("../constants");
16
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
17
+ var _enums = _interopRequireDefault(require("./enums"));
18
+ var _util = _interopRequireDefault(require("./util"));
19
+ var _constants2 = require("./constants");
20
+ /**
21
+ * docs
22
+ * https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html
23
+ * https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry
24
+ * 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
25
+ * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867
26
+ * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351
27
+ */
28
+ /**
29
+ * @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting
30
+ * @export
31
+ * @private
32
+ * @class Recording
33
+ */
34
+ var ControlsOptionsManager = /*#__PURE__*/function () {
35
+ /**
36
+ * @instance
37
+ * @type {MeetingRequest}
38
+ * @private
39
+ * @memberof ControlsOptionsManager
40
+ */
41
+
42
+ /**
43
+ * @instance
44
+ * @type {Array}
45
+ * @private
46
+ * @memberof ControlsOptionsManager
47
+ */
48
+
49
+ /**
50
+ * @instance
51
+ * @type {string}
52
+ * @private
53
+ * @memberof ControlsOptionsManager
54
+ */
55
+
56
+ /**
57
+ * @param {MeetingRequest} request
58
+ * @param {Object} options
59
+ * @constructor
60
+ * @memberof ControlsOptionsManager
61
+ */
62
+ function ControlsOptionsManager(request, options) {
63
+ (0, _classCallCheck2.default)(this, ControlsOptionsManager);
64
+ (0, _defineProperty2.default)(this, "request", void 0);
65
+ (0, _defineProperty2.default)(this, "displayHints", []);
66
+ (0, _defineProperty2.default)(this, "locusUrl", void 0);
67
+ this.initialize(request);
68
+ this.set(options);
69
+ }
70
+
71
+ /**
72
+ * @param {MeetingRequest} request
73
+ * @returns {void}
74
+ * @private
75
+ * @memberof ControlsOptionsManager
76
+ */
77
+ (0, _createClass2.default)(ControlsOptionsManager, [{
78
+ key: "initialize",
79
+ value: function initialize(request) {
80
+ this.request = request;
81
+ }
82
+
83
+ /**
84
+ * @param {Object} options
85
+ * @returns {void}
86
+ * @public
87
+ * @memberof ControlsOptionsManager
88
+ */
89
+ }, {
90
+ key: "set",
91
+ value: function set(options) {
92
+ this.extract(options);
93
+ }
94
+
95
+ /**
96
+ * @param {string} url
97
+ * @returns {void}
98
+ * @public
99
+ * @memberof ControlsOptionsManager
100
+ */
101
+ }, {
102
+ key: "setLocusUrl",
103
+ value: function setLocusUrl(url) {
104
+ this.locusUrl = url;
105
+ }
106
+
107
+ /**
108
+ * @param {Array} hints
109
+ * @returns {void}
110
+ * @public
111
+ * @memberof ControlsOptionsManager
112
+ */
113
+ }, {
114
+ key: "setDisplayHints",
115
+ value: function setDisplayHints(hints) {
116
+ this.displayHints = hints;
117
+ }
118
+
119
+ /**
120
+ * @returns {string}
121
+ * @public
122
+ * @memberof ControlsOptionsManager
123
+ */
124
+ }, {
125
+ key: "getLocusUrl",
126
+ value: function getLocusUrl() {
127
+ return this.locusUrl;
128
+ }
129
+
130
+ /**
131
+ * @returns {Array}
132
+ * @public
133
+ * @memberof ControlsOptionsManager
134
+ */
135
+ }, {
136
+ key: "getDisplayHints",
137
+ value: function getDisplayHints() {
138
+ return this.displayHints;
139
+ }
140
+
141
+ /**
142
+ * @param {Object} options
143
+ * @returns {void}
144
+ * @private
145
+ * @memberof ControlsOptionsManager
146
+ */
147
+ }, {
148
+ key: "extract",
149
+ value: function extract(options) {
150
+ this.setDisplayHints(options === null || options === void 0 ? void 0 : options.displayHints);
151
+ this.setLocusUrl(options === null || options === void 0 ? void 0 : options.locusUrl);
152
+ }
153
+
154
+ /**
155
+ * @param {Setting} setting
156
+ * @param {boolean} enabled
157
+ * @private
158
+ * @memberof ControlsOptionsManager
159
+ * @returns {Promise}
160
+ */
161
+ }, {
162
+ key: "setControls",
163
+ value: function setControls(setting, enabled) {
164
+ _loggerProxy.default.logger.log("ControlsOptionsManager:index#setControls --> ".concat(setting, " [").concat(enabled, "]"));
165
+ if (_util.default !== null && _util.default !== void 0 && _util.default["".concat(enabled ? _constants2.CAN_SET : _constants2.CAN_UNSET).concat(setting)](this.displayHints)) {
166
+ // @ts-ignore
167
+ return this.request.request({
168
+ uri: "".concat(this.locusUrl, "/").concat(_constants.CONTROLS),
169
+ body: (0, _defineProperty2.default)({}, (0, _camelCase3.default)(setting), (0, _defineProperty2.default)({}, _constants2.ENABLED, enabled)),
170
+ method: _constants.HTTP_VERBS.PATCH
171
+ });
172
+ }
173
+ return _promise.default.reject(new _permission.default("".concat(setting, " [").concat(enabled, "] not allowed, due to moderator property.")));
174
+ }
175
+
176
+ /**
177
+ * @public
178
+ * @param {boolean} enabled
179
+ * @memberof ControlsOptionsManager
180
+ * @returns {Promise}
181
+ */
182
+ }, {
183
+ key: "setMuteOnEntry",
184
+ value: function setMuteOnEntry(enabled) {
185
+ return this.setControls(_enums.default.muteOnEntry, enabled);
186
+ }
187
+
188
+ /**
189
+ * @public
190
+ * @param {boolean} enabled
191
+ * @memberof ControlsOptionsManager
192
+ * @returns {Promise}
193
+ */
194
+ }, {
195
+ key: "setDisallowUnmute",
196
+ value: function setDisallowUnmute(enabled) {
197
+ return this.setControls(_enums.default.disallowUnmute, enabled);
198
+ }
199
+ }]);
200
+ return ControlsOptionsManager;
201
+ }();
202
+ exports.default = ControlsOptionsManager;
203
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ControlsOptionsManager","request","options","initialize","set","extract","url","locusUrl","hints","displayHints","setDisplayHints","setLocusUrl","setting","enabled","LoggerProxy","logger","log","Util","CAN_SET","CAN_UNSET","uri","CONTROLS","body","ENABLED","method","HTTP_VERBS","PATCH","reject","PermissionError","setControls","Setting","muteOnEntry","disallowUnmute"],"sources":["index.ts"],"sourcesContent":["import {camelCase} from 'lodash';\nimport PermissionError from '../common/errors/permission';\nimport {CONTROLS, HTTP_VERBS} from '../constants';\nimport MeetingRequest from '../meeting/request';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Setting from './enums';\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 * @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 * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setLocusUrl(url: string) {\n this.locusUrl = url;\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 * @param {Setting} setting\n * @param {boolean} enabled\n * @private\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n private setControls(setting: Setting, enabled: boolean): Promise<any> {\n LoggerProxy.logger.log(`ControlsOptionsManager:index#setControls --> ${setting} [${enabled}]`);\n\n if (Util?.[`${enabled ? CAN_SET : CAN_UNSET}${setting}`](this.displayHints)) {\n // @ts-ignore\n return this.request.request({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body: {\n [camelCase(setting)]: {\n [ENABLED]: enabled,\n },\n },\n method: HTTP_VERBS.PATCH,\n });\n }\n\n return Promise.reject(\n new PermissionError(`${setting} [${enabled}] not allowed, due to moderator property.`)\n );\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"],"mappings":";;;;;;;;;;;;;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA,IAMqBA,sBAAsB;EACzC;AACF;AACA;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;EACE,gCACEC,OAAuB,EACvBC,OAGC,EACD;IAAA;IAAA;IAAA,oDAtBoC,EAAE;IAAA;IAuBtC,IAAI,CAACC,UAAU,CAACF,OAAO,CAAC;IACxB,IAAI,CAACG,GAAG,CAACF,OAAO,CAAC;EACnB;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,oBAAmBD,OAAuB,EAAE;MAC1C,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,aAAWC,OAA0D,EAAE;MACrE,IAAI,CAACG,OAAO,CAACH,OAAO,CAAC;IACvB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,qBAAmBI,GAAW,EAAE;MAC9B,IAAI,CAACC,QAAQ,GAAGD,GAAG;IACrB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,yBAAuBE,KAAoB,EAAE;MAC3C,IAAI,CAACC,YAAY,GAAGD,KAAK;IAC3B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,uBAAqB;MACnB,OAAO,IAAI,CAACD,QAAQ;IACtB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,2BAAyB;MACvB,OAAO,IAAI,CAACE,YAAY;IAC1B;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,iBAAgBP,OAA0D,EAAE;MAC1E,IAAI,CAACQ,eAAe,CAACR,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEO,YAAY,CAAC;MAC3C,IAAI,CAACE,WAAW,CAACT,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,QAAQ,CAAC;IACrC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,qBAAoBK,OAAgB,EAAEC,OAAgB,EAAgB;MACpEC,oBAAW,CAACC,MAAM,CAACC,GAAG,wDAAiDJ,OAAO,eAAKC,OAAO,OAAI;MAE9F,IAAII,aAAI,aAAJA,aAAI,eAAJA,aAAI,WAAMJ,OAAO,GAAGK,mBAAO,GAAGC,qBAAS,SAAGP,OAAO,EAAG,CAAC,IAAI,CAACH,YAAY,CAAC,EAAE;QAC3E;QACA,OAAO,IAAI,CAACR,OAAO,CAACA,OAAO,CAAC;UAC1BmB,GAAG,YAAK,IAAI,CAACb,QAAQ,cAAIc,mBAAQ,CAAE;UACnCC,IAAI,oCACD,yBAAUV,OAAO,CAAC,oCAChBW,mBAAO,EAAGV,OAAO,EAErB;UACDW,MAAM,EAAEC,qBAAU,CAACC;QACrB,CAAC,CAAC;MACJ;MAEA,OAAO,iBAAQC,MAAM,CACnB,IAAIC,mBAAe,WAAIhB,OAAO,eAAKC,OAAO,+CAA4C,CACvF;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,wBAAsBA,OAAgB,EAAgB;MACpD,OAAO,IAAI,CAACgB,WAAW,CAACC,cAAO,CAACC,WAAW,EAAElB,OAAO,CAAC;IACvD;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,2BAAyBA,OAAgB,EAAgB;MACvD,OAAO,IAAI,CAACgB,WAAW,CAACC,cAAO,CAACE,cAAc,EAAEnB,OAAO,CAAC;IAC1D;EAAC;EAAA;AAAA;AAAA"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _constants = require("../constants");
9
+ var canSetMuteOnEntry = function canSetMuteOnEntry(displayHints) {
10
+ return displayHints.includes(_constants.DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY);
11
+ };
12
+ var canSetDisallowUnmute = function canSetDisallowUnmute(displayHints) {
13
+ return displayHints.includes(_constants.DISPLAY_HINTS.ENABLE_HARD_MUTE);
14
+ };
15
+ var canUnsetMuteOnEntry = function canUnsetMuteOnEntry(displayHints) {
16
+ return displayHints.includes(_constants.DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY);
17
+ };
18
+ var canUnsetDisallowUnmute = function canUnsetDisallowUnmute(displayHints) {
19
+ return displayHints.includes(_constants.DISPLAY_HINTS.DISABLE_HARD_MUTE);
20
+ };
21
+ var _default = {
22
+ canSetMuteOnEntry: canSetMuteOnEntry,
23
+ canSetDisallowUnmute: canSetDisallowUnmute,
24
+ canUnsetMuteOnEntry: canUnsetMuteOnEntry,
25
+ canUnsetDisallowUnmute: canUnsetDisallowUnmute
26
+ };
27
+ exports.default = _default;
28
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["canSetMuteOnEntry","displayHints","includes","DISPLAY_HINTS","ENABLE_MUTE_ON_ENTRY","canSetDisallowUnmute","ENABLE_HARD_MUTE","canUnsetMuteOnEntry","DISABLE_MUTE_ON_ENTRY","canUnsetDisallowUnmute","DISABLE_HARD_MUTE"],"sources":["util.ts"],"sourcesContent":["import {DISPLAY_HINTS} from '../constants';\n\nconst canSetMuteOnEntry = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY);\n\nconst canSetDisallowUnmute = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.ENABLE_HARD_MUTE);\n\nconst canUnsetMuteOnEntry = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY);\n\nconst canUnsetDisallowUnmute = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.DISABLE_HARD_MUTE);\n\nexport default {\n canSetMuteOnEntry,\n canSetDisallowUnmute,\n canUnsetMuteOnEntry,\n canUnsetDisallowUnmute,\n};\n"],"mappings":";;;;;;;AAAA;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIC,YAA2B;EAAA,OACpDA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACC,oBAAoB,CAAC;AAAA;AAE3D,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoB,CAAIJ,YAA2B;EAAA,OACvDA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACG,gBAAgB,CAAC;AAAA;AAEvD,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmB,CAAIN,YAA2B;EAAA,OACtDA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACK,qBAAqB,CAAC;AAAA;AAE5D,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsB,CAAIR,YAA2B;EAAA,OACzDA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACO,iBAAiB,CAAC;AAAA;AAAC,eAE1C;EACbV,iBAAiB,EAAjBA,iBAAiB;EACjBK,oBAAoB,EAApBA,oBAAoB;EACpBE,mBAAmB,EAAnBA,mBAAmB;EACnBE,sBAAsB,EAAtBA;AACF,CAAC;AAAA"}
@@ -30,6 +30,10 @@ var InMeetingActions = /*#__PURE__*/(0, _createClass2.default)(function InMeetin
30
30
  (0, _defineProperty2.default)(this, "canPauseRecording", null);
31
31
  (0, _defineProperty2.default)(this, "canResumeRecording", null);
32
32
  (0, _defineProperty2.default)(this, "canStopRecording", null);
33
+ (0, _defineProperty2.default)(this, "canSetMuteOnEntry", null);
34
+ (0, _defineProperty2.default)(this, "canUnsetMuteOnEntry", null);
35
+ (0, _defineProperty2.default)(this, "canSetDisallowUnmute", null);
36
+ (0, _defineProperty2.default)(this, "canUnsetDisallowUnmute", null);
33
37
  (0, _defineProperty2.default)(this, "canRaiseHand", null);
34
38
  (0, _defineProperty2.default)(this, "canLowerAllHands", null);
35
39
  (0, _defineProperty2.default)(this, "canLowerSomeoneElsesHand", null);
@@ -50,6 +54,10 @@ var InMeetingActions = /*#__PURE__*/(0, _createClass2.default)(function InMeetin
50
54
  canLock: _this.canLock,
51
55
  canUnlock: _this.canUnlock,
52
56
  canAssignHost: _this.canAssignHost,
57
+ canSetMuteOnEntry: _this.canSetMuteOnEntry,
58
+ canUnsetMuteOnEntry: _this.canUnsetMuteOnEntry,
59
+ canSetDisallowUnmute: _this.canSetDisallowUnmute,
60
+ canUnsetDisallowUnmute: _this.canUnsetDisallowUnmute,
53
61
  canStartRecording: _this.canStartRecording,
54
62
  canPauseRecording: _this.canPauseRecording,
55
63
  canResumeRecording: _this.canResumeRecording,
@@ -1 +1 @@
1
- {"version":3,"names":["InMeetingActions","MEETINGS","canInviteNewParticipants","canAdmitParticipant","canLock","canUnlock","canAssignHost","canStartRecording","canPauseRecording","canResumeRecording","canStopRecording","canRaiseHand","canLowerAllHands","canLowerSomeoneElsesHand","bothLeaveAndEndMeetingAvailable","canEnableClosedCaption","canStartTranscribing","canStopTranscribing","isClosedCaptionActive","isWebexAssistantActive","canViewCaptionPanel","isRealTimeTranslationEnabled","canSelectSpokenLanguages","waitingForOthersToJoin","actions","old","get","changed","forEach","actionKey","actionValue","undefined"],"sources":["in-meeting-actions.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {MEETINGS} from '../constants';\n\n/**\n * IInMeetingActions\n * Type for In-Meeting Actions\n */\ninterface IInMeetingActions {\n canInviteNewParticipants?: boolean;\n canAdmitParticipant?: boolean;\n canLock?: boolean;\n canUnlock?: boolean;\n canAssignHost?: boolean;\n canStartRecording?: boolean;\n canPauseRecording?: boolean;\n canResumeRecording?: boolean;\n canStopRecording?: boolean;\n canRaiseHand?: boolean;\n canLowerAllHands?: boolean;\n canLowerSomeoneElsesHand?: boolean;\n bothLeaveAndEndMeetingAvailable?: boolean;\n canEnableClosedCaption?: boolean;\n canStartTranscribing?: boolean;\n canStopTranscribing?: boolean;\n isClosedCaptionActive?: boolean;\n isWebexAssistantActive?: boolean;\n canViewCaptionPanel?: boolean;\n isRealTimeTranslationEnabled?: boolean;\n canSelectSpokenLanguages?: boolean;\n waitingForOthersToJoin?: boolean;\n}\n\n/**\n * @class InMeetingActions\n */\nexport default class InMeetingActions implements IInMeetingActions {\n namespace = MEETINGS;\n\n canInviteNewParticipants = null;\n\n canAdmitParticipant = null;\n\n canLock = null;\n\n canUnlock = null;\n\n canAssignHost = null;\n\n canStartRecording = null;\n\n canPauseRecording = null;\n\n canResumeRecording = null;\n\n canStopRecording = null;\n\n canRaiseHand = null;\n\n canLowerAllHands = null;\n\n canLowerSomeoneElsesHand = null;\n\n bothLeaveAndEndMeetingAvailable = null;\n\n canEnableClosedCaption = null;\n\n canStartTranscribing = null;\n\n canStopTranscribing = null;\n\n isClosedCaptionActive = null;\n\n isWebexAssistantActive = null;\n\n canViewCaptionPanel = null;\n\n isRealTimeTranslationEnabled = null;\n\n canSelectSpokenLanguages = null;\n\n waitingForOthersToJoin = null;\n\n /**\n * Returns all meeting action options\n * @returns {Object}\n */\n get = (): IInMeetingActions => ({\n canInviteNewParticipants: this.canInviteNewParticipants,\n canAdmitParticipant: this.canAdmitParticipant,\n canLock: this.canLock,\n canUnlock: this.canUnlock,\n canAssignHost: this.canAssignHost,\n canStartRecording: this.canStartRecording,\n canPauseRecording: this.canPauseRecording,\n canResumeRecording: this.canResumeRecording,\n canStopRecording: this.canStopRecording,\n canRaiseHand: this.canRaiseHand,\n canLowerAllHands: this.canLowerAllHands,\n canLowerSomeoneElsesHand: this.canLowerSomeoneElsesHand,\n bothLeaveAndEndMeetingAvailable: this.bothLeaveAndEndMeetingAvailable,\n canEnableClosedCaption: this.canEnableClosedCaption,\n canStartTranscribing: this.canStartTranscribing,\n canStopTranscribing: this.canStopTranscribing,\n isClosedCaptionActive: this.isClosedCaptionActive,\n isWebexAssistantActive: this.isWebexAssistantActive,\n canViewCaptionPanel: this.canViewCaptionPanel,\n isRealTimeTranslationEnabled: this.isRealTimeTranslationEnabled,\n canSelectSpokenLanguages: this.canSelectSpokenLanguages,\n waitingForOthersToJoin: this.waitingForOthersToJoin,\n });\n\n /**\n *\n * @param actions\n * @returns\n */\n\n set = (actions: Partial<IInMeetingActions>) => {\n const old = this.get();\n\n let changed = false;\n\n Object.keys(old).forEach((actionKey) => {\n const actionValue = actions[actionKey];\n\n if (actionValue !== undefined && actionValue !== old[actionKey]) {\n changed = true;\n this[actionKey] = actionValue;\n }\n });\n\n return changed;\n };\n}\n"],"mappings":";;;;;;;;;;;;AAIA;AAJA;AACA;AACA;AAiCA;AACA;AACA;AAFA,IAGqBA,gBAAgB;EAAA;EAAA;EAAA,iDACvBC,mBAAQ;EAAA,gEAEO,IAAI;EAAA,2DAET,IAAI;EAAA,+CAEhB,IAAI;EAAA,iDAEF,IAAI;EAAA,qDAEA,IAAI;EAAA,yDAEA,IAAI;EAAA,yDAEJ,IAAI;EAAA,0DAEH,IAAI;EAAA,wDAEN,IAAI;EAAA,oDAER,IAAI;EAAA,wDAEA,IAAI;EAAA,gEAEI,IAAI;EAAA,uEAEG,IAAI;EAAA,8DAEb,IAAI;EAAA,4DAEN,IAAI;EAAA,2DAEL,IAAI;EAAA,6DAEF,IAAI;EAAA,8DAEH,IAAI;EAAA,2DAEP,IAAI;EAAA,oEAEK,IAAI;EAAA,gEAER,IAAI;EAAA,8DAEN,IAAI;EAAA,2CAMvB;IAAA,OAA0B;MAC9BC,wBAAwB,EAAE,KAAI,CAACA,wBAAwB;MACvDC,mBAAmB,EAAE,KAAI,CAACA,mBAAmB;MAC7CC,OAAO,EAAE,KAAI,CAACA,OAAO;MACrBC,SAAS,EAAE,KAAI,CAACA,SAAS;MACzBC,aAAa,EAAE,KAAI,CAACA,aAAa;MACjCC,iBAAiB,EAAE,KAAI,CAACA,iBAAiB;MACzCC,iBAAiB,EAAE,KAAI,CAACA,iBAAiB;MACzCC,kBAAkB,EAAE,KAAI,CAACA,kBAAkB;MAC3CC,gBAAgB,EAAE,KAAI,CAACA,gBAAgB;MACvCC,YAAY,EAAE,KAAI,CAACA,YAAY;MAC/BC,gBAAgB,EAAE,KAAI,CAACA,gBAAgB;MACvCC,wBAAwB,EAAE,KAAI,CAACA,wBAAwB;MACvDC,+BAA+B,EAAE,KAAI,CAACA,+BAA+B;MACrEC,sBAAsB,EAAE,KAAI,CAACA,sBAAsB;MACnDC,oBAAoB,EAAE,KAAI,CAACA,oBAAoB;MAC/CC,mBAAmB,EAAE,KAAI,CAACA,mBAAmB;MAC7CC,qBAAqB,EAAE,KAAI,CAACA,qBAAqB;MACjDC,sBAAsB,EAAE,KAAI,CAACA,sBAAsB;MACnDC,mBAAmB,EAAE,KAAI,CAACA,mBAAmB;MAC7CC,4BAA4B,EAAE,KAAI,CAACA,4BAA4B;MAC/DC,wBAAwB,EAAE,KAAI,CAACA,wBAAwB;MACvDC,sBAAsB,EAAE,KAAI,CAACA;IAC/B,CAAC;EAAA,CAAC;EAAA,2CAQI,UAACC,OAAmC,EAAK;IAC7C,IAAMC,GAAG,GAAG,KAAI,CAACC,GAAG,EAAE;IAEtB,IAAIC,OAAO,GAAG,KAAK;IAEnB,mBAAYF,GAAG,CAAC,CAACG,OAAO,CAAC,UAACC,SAAS,EAAK;MACtC,IAAMC,WAAW,GAAGN,OAAO,CAACK,SAAS,CAAC;MAEtC,IAAIC,WAAW,KAAKC,SAAS,IAAID,WAAW,KAAKL,GAAG,CAACI,SAAS,CAAC,EAAE;QAC/DF,OAAO,GAAG,IAAI;QACd,KAAI,CAACE,SAAS,CAAC,GAAGC,WAAW;MAC/B;IACF,CAAC,CAAC;IAEF,OAAOH,OAAO;EAChB,CAAC;AAAA;AAAA"}
1
+ {"version":3,"names":["InMeetingActions","MEETINGS","canInviteNewParticipants","canAdmitParticipant","canLock","canUnlock","canAssignHost","canSetMuteOnEntry","canUnsetMuteOnEntry","canSetDisallowUnmute","canUnsetDisallowUnmute","canStartRecording","canPauseRecording","canResumeRecording","canStopRecording","canRaiseHand","canLowerAllHands","canLowerSomeoneElsesHand","bothLeaveAndEndMeetingAvailable","canEnableClosedCaption","canStartTranscribing","canStopTranscribing","isClosedCaptionActive","isWebexAssistantActive","canViewCaptionPanel","isRealTimeTranslationEnabled","canSelectSpokenLanguages","waitingForOthersToJoin","actions","old","get","changed","forEach","actionKey","actionValue","undefined"],"sources":["in-meeting-actions.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {MEETINGS} from '../constants';\n\n/**\n * IInMeetingActions\n * Type for In-Meeting Actions\n */\ninterface IInMeetingActions {\n canInviteNewParticipants?: boolean;\n canAdmitParticipant?: boolean;\n canLock?: boolean;\n canUnlock?: boolean;\n canSetMuteOnEntry?: boolean;\n canUnsetMuteOnEntry?: boolean;\n canSetDisallowUnmute?: boolean;\n canUnsetDisallowUnmute?: boolean;\n canAssignHost?: boolean;\n canStartRecording?: boolean;\n canPauseRecording?: boolean;\n canResumeRecording?: boolean;\n canStopRecording?: boolean;\n canRaiseHand?: boolean;\n canLowerAllHands?: boolean;\n canLowerSomeoneElsesHand?: boolean;\n bothLeaveAndEndMeetingAvailable?: boolean;\n canEnableClosedCaption?: boolean;\n canStartTranscribing?: boolean;\n canStopTranscribing?: boolean;\n isClosedCaptionActive?: boolean;\n isWebexAssistantActive?: boolean;\n canViewCaptionPanel?: boolean;\n isRealTimeTranslationEnabled?: boolean;\n canSelectSpokenLanguages?: boolean;\n waitingForOthersToJoin?: boolean;\n}\n\n/**\n * @class InMeetingActions\n */\nexport default class InMeetingActions implements IInMeetingActions {\n namespace = MEETINGS;\n\n canInviteNewParticipants = null;\n\n canAdmitParticipant = null;\n\n canLock = null;\n\n canUnlock = null;\n\n canAssignHost = null;\n\n canStartRecording = null;\n\n canPauseRecording = null;\n\n canResumeRecording = null;\n\n canStopRecording = null;\n\n canSetMuteOnEntry = null;\n\n canUnsetMuteOnEntry = null;\n\n canSetDisallowUnmute = null;\n\n canUnsetDisallowUnmute = null;\n\n canRaiseHand = null;\n\n canLowerAllHands = null;\n\n canLowerSomeoneElsesHand = null;\n\n bothLeaveAndEndMeetingAvailable = null;\n\n canEnableClosedCaption = null;\n\n canStartTranscribing = null;\n\n canStopTranscribing = null;\n\n isClosedCaptionActive = null;\n\n isWebexAssistantActive = null;\n\n canViewCaptionPanel = null;\n\n isRealTimeTranslationEnabled = null;\n\n canSelectSpokenLanguages = null;\n\n waitingForOthersToJoin = null;\n\n /**\n * Returns all meeting action options\n * @returns {Object}\n */\n get = (): IInMeetingActions => ({\n canInviteNewParticipants: this.canInviteNewParticipants,\n canAdmitParticipant: this.canAdmitParticipant,\n canLock: this.canLock,\n canUnlock: this.canUnlock,\n canAssignHost: this.canAssignHost,\n canSetMuteOnEntry: this.canSetMuteOnEntry,\n canUnsetMuteOnEntry: this.canUnsetMuteOnEntry,\n canSetDisallowUnmute: this.canSetDisallowUnmute,\n canUnsetDisallowUnmute: this.canUnsetDisallowUnmute,\n canStartRecording: this.canStartRecording,\n canPauseRecording: this.canPauseRecording,\n canResumeRecording: this.canResumeRecording,\n canStopRecording: this.canStopRecording,\n canRaiseHand: this.canRaiseHand,\n canLowerAllHands: this.canLowerAllHands,\n canLowerSomeoneElsesHand: this.canLowerSomeoneElsesHand,\n bothLeaveAndEndMeetingAvailable: this.bothLeaveAndEndMeetingAvailable,\n canEnableClosedCaption: this.canEnableClosedCaption,\n canStartTranscribing: this.canStartTranscribing,\n canStopTranscribing: this.canStopTranscribing,\n isClosedCaptionActive: this.isClosedCaptionActive,\n isWebexAssistantActive: this.isWebexAssistantActive,\n canViewCaptionPanel: this.canViewCaptionPanel,\n isRealTimeTranslationEnabled: this.isRealTimeTranslationEnabled,\n canSelectSpokenLanguages: this.canSelectSpokenLanguages,\n waitingForOthersToJoin: this.waitingForOthersToJoin,\n });\n\n /**\n *\n * @param actions\n * @returns\n */\n\n set = (actions: Partial<IInMeetingActions>) => {\n const old = this.get();\n\n let changed = false;\n\n Object.keys(old).forEach((actionKey) => {\n const actionValue = actions[actionKey];\n\n if (actionValue !== undefined && actionValue !== old[actionKey]) {\n changed = true;\n this[actionKey] = actionValue;\n }\n });\n\n return changed;\n };\n}\n"],"mappings":";;;;;;;;;;;;AAIA;AAJA;AACA;AACA;AAqCA;AACA;AACA;AAFA,IAGqBA,gBAAgB;EAAA;EAAA;EAAA,iDACvBC,mBAAQ;EAAA,gEAEO,IAAI;EAAA,2DAET,IAAI;EAAA,+CAEhB,IAAI;EAAA,iDAEF,IAAI;EAAA,qDAEA,IAAI;EAAA,yDAEA,IAAI;EAAA,yDAEJ,IAAI;EAAA,0DAEH,IAAI;EAAA,wDAEN,IAAI;EAAA,yDAEH,IAAI;EAAA,2DAEF,IAAI;EAAA,4DAEH,IAAI;EAAA,8DAEF,IAAI;EAAA,oDAEd,IAAI;EAAA,wDAEA,IAAI;EAAA,gEAEI,IAAI;EAAA,uEAEG,IAAI;EAAA,8DAEb,IAAI;EAAA,4DAEN,IAAI;EAAA,2DAEL,IAAI;EAAA,6DAEF,IAAI;EAAA,8DAEH,IAAI;EAAA,2DAEP,IAAI;EAAA,oEAEK,IAAI;EAAA,gEAER,IAAI;EAAA,8DAEN,IAAI;EAAA,2CAMvB;IAAA,OAA0B;MAC9BC,wBAAwB,EAAE,KAAI,CAACA,wBAAwB;MACvDC,mBAAmB,EAAE,KAAI,CAACA,mBAAmB;MAC7CC,OAAO,EAAE,KAAI,CAACA,OAAO;MACrBC,SAAS,EAAE,KAAI,CAACA,SAAS;MACzBC,aAAa,EAAE,KAAI,CAACA,aAAa;MACjCC,iBAAiB,EAAE,KAAI,CAACA,iBAAiB;MACzCC,mBAAmB,EAAE,KAAI,CAACA,mBAAmB;MAC7CC,oBAAoB,EAAE,KAAI,CAACA,oBAAoB;MAC/CC,sBAAsB,EAAE,KAAI,CAACA,sBAAsB;MACnDC,iBAAiB,EAAE,KAAI,CAACA,iBAAiB;MACzCC,iBAAiB,EAAE,KAAI,CAACA,iBAAiB;MACzCC,kBAAkB,EAAE,KAAI,CAACA,kBAAkB;MAC3CC,gBAAgB,EAAE,KAAI,CAACA,gBAAgB;MACvCC,YAAY,EAAE,KAAI,CAACA,YAAY;MAC/BC,gBAAgB,EAAE,KAAI,CAACA,gBAAgB;MACvCC,wBAAwB,EAAE,KAAI,CAACA,wBAAwB;MACvDC,+BAA+B,EAAE,KAAI,CAACA,+BAA+B;MACrEC,sBAAsB,EAAE,KAAI,CAACA,sBAAsB;MACnDC,oBAAoB,EAAE,KAAI,CAACA,oBAAoB;MAC/CC,mBAAmB,EAAE,KAAI,CAACA,mBAAmB;MAC7CC,qBAAqB,EAAE,KAAI,CAACA,qBAAqB;MACjDC,sBAAsB,EAAE,KAAI,CAACA,sBAAsB;MACnDC,mBAAmB,EAAE,KAAI,CAACA,mBAAmB;MAC7CC,4BAA4B,EAAE,KAAI,CAACA,4BAA4B;MAC/DC,wBAAwB,EAAE,KAAI,CAACA,wBAAwB;MACvDC,sBAAsB,EAAE,KAAI,CAACA;IAC/B,CAAC;EAAA,CAAC;EAAA,2CAQI,UAACC,OAAmC,EAAK;IAC7C,IAAMC,GAAG,GAAG,KAAI,CAACC,GAAG,EAAE;IAEtB,IAAIC,OAAO,GAAG,KAAK;IAEnB,mBAAYF,GAAG,CAAC,CAACG,OAAO,CAAC,UAACC,SAAS,EAAK;MACtC,IAAMC,WAAW,GAAGN,OAAO,CAACK,SAAS,CAAC;MAEtC,IAAIC,WAAW,KAAKC,SAAS,IAAID,WAAW,KAAKL,GAAG,CAACI,SAAS,CAAC,EAAE;QAC/DF,OAAO,GAAG,IAAI;QACd,KAAI,CAACE,SAAS,CAAC,GAAGC,WAAW;MAC/B;IACF,CAAC,CAAC;IAEF,OAAOH,OAAO;EAChB,CAAC;AAAA;AAAA"}
@@ -55,7 +55,8 @@ var _request = _interopRequireDefault(require("./request"));
55
55
  var _index2 = _interopRequireDefault(require("../members/index"));
56
56
  var _util = _interopRequireDefault(require("./util"));
57
57
  var _util2 = _interopRequireDefault(require("../recording-controller/util"));
58
- var _util3 = _interopRequireDefault(require("../media/util"));
58
+ var _util3 = _interopRequireDefault(require("../controls-options-manager/util"));
59
+ var _util4 = _interopRequireDefault(require("../media/util"));
59
60
  var _transcription = _interopRequireDefault(require("../transcription"));
60
61
  var _passwordError = _interopRequireDefault(require("../common/errors/password-error"));
61
62
  var _captchaError = _interopRequireDefault(require("../common/errors/captcha-error"));
@@ -71,6 +72,7 @@ var _collection = _interopRequireDefault(require("../roap/collection"));
71
72
  var _reactions = require("../reactions/reactions");
72
73
  var _inMeetingActions = _interopRequireDefault(require("./in-meeting-actions"));
73
74
  var _recordingController = _interopRequireDefault(require("../recording-controller"));
75
+ var _controlsOptionsManager = _interopRequireDefault(require("../controls-options-manager"));
74
76
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
75
77
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty3.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty2(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
76
78
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -397,7 +399,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
397
399
  * @memberof Meeting
398
400
  */
399
401
  function Meeting(attrs, _options) {
400
- var _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3;
402
+ var _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3, _this$locusInfo4;
401
403
  var _this;
402
404
  (0, _classCallCheck2.default)(this, Meeting);
403
405
  _this = _super.call(this, {}, _options);
@@ -461,6 +463,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
461
463
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "queuedMediaUpdates", void 0);
462
464
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "recording", void 0);
463
465
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "recordingController", void 0);
466
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "controlsOptionsManager", void 0);
464
467
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "requiredCaptcha", void 0);
465
468
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "shareStatus", void 0);
466
469
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "statsAnalyzer", void 0);
@@ -1242,6 +1245,18 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
1242
1245
  locusUrl: (_this$locusInfo3 = _this.locusInfo) === null || _this$locusInfo3 === void 0 ? void 0 : _this$locusInfo3.url,
1243
1246
  displayHints: []
1244
1247
  });
1248
+
1249
+ /**
1250
+ * The class that helps to control recording functions: start, stop, pause, resume, etc
1251
+ * @instance
1252
+ * @type {ControlsOptionsManager}
1253
+ * @public
1254
+ * @memberof Meeting
1255
+ */
1256
+ _this.controlsOptionsManager = new _controlsOptionsManager.default(_this.meetingRequest, {
1257
+ locusUrl: (_this$locusInfo4 = _this.locusInfo) === null || _this$locusInfo4 === void 0 ? void 0 : _this$locusInfo4.url,
1258
+ displayHints: []
1259
+ });
1245
1260
  _this.setUpLocusInfoListeners();
1246
1261
  _this.locusInfo.init(attrs.locus ? attrs.locus : {});
1247
1262
  _this.hasJoinedOnce = false;
@@ -2114,6 +2129,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
2114
2129
  _this13.locusUrl = payload;
2115
2130
  _this13.locusId = (_this13$locusUrl = _this13.locusUrl) === null || _this13$locusUrl === void 0 ? void 0 : _this13$locusUrl.split('/').pop();
2116
2131
  _this13.recordingController.setLocusUrl(_this13.locusUrl);
2132
+ _this13.controlsOptionsManager.setLocusUrl(_this13.locusUrl);
2117
2133
  });
2118
2134
  }
2119
2135
 
@@ -2174,6 +2190,10 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
2174
2190
  canAdmitParticipant: _util.default.canAdmitParticipant(payload.info.userDisplayHints),
2175
2191
  canLock: _util.default.canUserLock(payload.info.userDisplayHints),
2176
2192
  canUnlock: _util.default.canUserUnlock(payload.info.userDisplayHints),
2193
+ canSetDisallowUnmute: _util3.default.canSetDisallowUnmute(payload.info.userDisplayHints),
2194
+ canUnsetDisallowUnmute: _util3.default.canUnsetDisallowUnmute(payload.info.userDisplayHints),
2195
+ canSetMuteOnEntry: _util3.default.canSetMuteOnEntry(payload.info.userDisplayHints),
2196
+ canUnsetMuteOnEntry: _util3.default.canUnsetMuteOnEntry(payload.info.userDisplayHints),
2177
2197
  canStartRecording: _util2.default.canUserStart(payload.info.userDisplayHints),
2178
2198
  canStopRecording: _util2.default.canUserStop(payload.info.userDisplayHints),
2179
2199
  canPauseRecording: _util2.default.canUserPause(payload.info.userDisplayHints),
@@ -2193,6 +2213,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
2193
2213
  waitingForOthersToJoin: _util.default.waitingForOthersToJoin(payload.info.userDisplayHints)
2194
2214
  });
2195
2215
  _this15.recordingController.setDisplayHints(payload.info.userDisplayHints);
2216
+ _this15.controlsOptionsManager.setDisplayHints(payload.info.userDisplayHints);
2196
2217
  if (changed) {
2197
2218
  _triggerProxy.default.trigger(_this15, {
2198
2219
  file: 'meeting/index',
@@ -2833,7 +2854,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
2833
2854
  function: 'setRemoteStream:pc.ontrack'
2834
2855
  }, _constants.EVENT_TRIGGERS.MEDIA_READY, {
2835
2856
  type: eventType,
2836
- stream: _util3.default.createMediaStream([mediaTrack])
2857
+ stream: _util4.default.createMediaStream([mediaTrack])
2837
2858
  });
2838
2859
  }
2839
2860
  };
@@ -2963,7 +2984,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
2963
2984
  function: 'setLocalTracks'
2964
2985
  }, _constants.EVENT_TRIGGERS.MEDIA_READY, {
2965
2986
  type: _constants.EVENT_TYPES.LOCAL,
2966
- stream: _util3.default.createMediaStream([this.mediaProperties.audioTrack, this.mediaProperties.videoTrack])
2987
+ stream: _util4.default.createMediaStream([this.mediaProperties.audioTrack, this.mediaProperties.videoTrack])
2967
2988
  });
2968
2989
  }
2969
2990
 
@@ -4267,7 +4288,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
4267
4288
  turnDiscoverySkippedReason = turnDiscoveryObject.turnDiscoverySkippedReason;
4268
4289
  turnServerUsed = !turnDiscoverySkippedReason;
4269
4290
  var turnServerInfo = turnDiscoveryObject.turnServerInfo;
4270
- _this39.mediaProperties.setMediaPeerConnection(_util3.default.createPeerConnection(turnServerInfo));
4291
+ _this39.mediaProperties.setMediaPeerConnection(_util4.default.createPeerConnection(turnServerInfo));
4271
4292
  _this39.setMercuryListener();
4272
4293
  _peerConnectionManager.default.setPeerConnectionEvents(_this39);
4273
4294
  return _this39.preMedia(localStream, localShare, mediaSettings);
@@ -4507,27 +4528,6 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
4507
4528
  });
4508
4529
  }).then(function () {
4509
4530
  return _this41.checkForStopShare(mediaSettings.sendShare, previousSendShareStatus);
4510
- }).then(function (startShare) {
4511
- // This is a special case if we do an /floor grant followed by /media
4512
- // we actually get a OFFER from the server and a GLAR condition happens
4513
- if (startShare) {
4514
- // We are assuming that the clients are connected when doing an update
4515
- // @ts-ignore
4516
- return _this41.share();
4517
- }
4518
- return _promise.default.resolve();
4519
- }).then(function () {
4520
- return logRequest(_this41.roap.sendRoapMediaRequest({
4521
- sdp: _this41.mediaProperties.peerConnection.sdp,
4522
- roapSeq: _this41.roapSeq,
4523
- meeting: _this41 // or can pass meeting ID
4524
- }), {
4525
- header: "".concat(LOG_HEADER, " sendRoapMediaRequest being sent"),
4526
- success: "".concat(LOG_HEADER, " sendRoadMediaRequest successful"),
4527
- failure: "".concat(LOG_HEADER, " Error updateMedia on send roap media request, ")
4528
- });
4529
- }).then(function () {
4530
- return _this41.checkForStopShare(mediaSettings.sendShare, previousSendShareStatus);
4531
4531
  }).then(function (startShare) {
4532
4532
  // This is a special case if we do an /floor grant followed by /media
4533
4533
  // we actually get a OFFER from the server and a GLAR condition happens
@@ -5151,6 +5151,32 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5151
5151
  return this.recordingController.startRecording();
5152
5152
  }
5153
5153
 
5154
+ /**
5155
+ * set the mute on entry flag for participants if you're the host
5156
+ * @returns {Promise}
5157
+ * @param {boolean} enabled
5158
+ * @public
5159
+ * @memberof Meeting
5160
+ */
5161
+ }, {
5162
+ key: "setMuteOnEntry",
5163
+ value: function setMuteOnEntry(enabled) {
5164
+ return this.controlsOptionsManager.setMuteOnEntry(enabled);
5165
+ }
5166
+
5167
+ /**
5168
+ * set the disallow unmute flag for participants if you're the host
5169
+ * @returns {Promise}
5170
+ * @param {boolean} enabled
5171
+ * @public
5172
+ * @memberof Meeting
5173
+ */
5174
+ }, {
5175
+ key: "setDisallowUnmute",
5176
+ value: function setDisallowUnmute(enabled) {
5177
+ return this.controlsOptionsManager.setDisallowUnmute(enabled);
5178
+ }
5179
+
5154
5180
  /**
5155
5181
  * End the recording of this meeting
5156
5182
  * @returns {Promise}
@@ -5984,8 +6010,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
5984
6010
  * @memberof Meeting
5985
6011
  */
5986
6012
  function sendReaction(reactionType, skinToneType) {
5987
- var _this$locusInfo4, _this$locusInfo4$cont, _this$locusInfo4$cont2;
5988
- var reactionChannelUrl = (_this$locusInfo4 = this.locusInfo) === null || _this$locusInfo4 === void 0 ? void 0 : (_this$locusInfo4$cont = _this$locusInfo4.controls) === null || _this$locusInfo4$cont === void 0 ? void 0 : (_this$locusInfo4$cont2 = _this$locusInfo4$cont.reactions) === null || _this$locusInfo4$cont2 === void 0 ? void 0 : _this$locusInfo4$cont2.reactionChannelUrl;
6013
+ var _this$locusInfo5, _this$locusInfo5$cont, _this$locusInfo5$cont2;
6014
+ var reactionChannelUrl = (_this$locusInfo5 = this.locusInfo) === null || _this$locusInfo5 === void 0 ? void 0 : (_this$locusInfo5$cont = _this$locusInfo5.controls) === null || _this$locusInfo5$cont === void 0 ? void 0 : (_this$locusInfo5$cont2 = _this$locusInfo5$cont.reactions) === null || _this$locusInfo5$cont2 === void 0 ? void 0 : _this$locusInfo5$cont2.reactionChannelUrl;
5989
6015
  var participantId = this.members.selfId;
5990
6016
  var reactionData = _reactions.Reactions[reactionType];
5991
6017
  if (!reactionData) {