@webex/plugin-meetings 3.0.0-beta.121 → 3.0.0-beta.123

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.
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["annotation.types.ts"],"sourcesContent":["/**\n * Type for an StrokeData Object\n */\ntype StrokeData = {\n fromUserId: string;\n fromDeviceUrl: string;\n toUserId: string;\n content: string;\n shareInstanceId: string;\n encryptionKeyUrl: string;\n version: string;\n};\n\ntype RequestData = {\n toUserId: string;\n toDeviceUrl: string;\n shareInstanceId: string;\n};\n\ntype CommandRequestBody = {\n actionType: string;\n resourceType: string;\n shareInstanceId: string;\n receivers?: any[];\n};\n\ninterface IAnnotationChannel {\n // === below is for presenter\n acceptRequest: (approval) => undefined | Promise<void>;\n declineRequest: (approval) => undefined | Promise<void>;\n closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n changeAnnotationOptions: (options, meeting) => undefined | Promise<void>;\n // === below is for attendee\n approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n cancelApproveAnnotation: (requestData: RequestData, approval) => undefined | Promise<void>;\n sendStrokeData: (strokeData: StrokeData) => void;\n // =====\n approvalUrlUpdate: (approvalUrl: string) => void;\n locusUrlUpdate: (locusUrl: string) => void;\n}\n\nexport type {StrokeData, RequestData, CommandRequestBody, IAnnotationChannel};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["annotation.types.ts"],"sourcesContent":["/**\n * Type for an StrokeData Object\n */\ntype StrokeData = {\n deviceId: string;\n toUserId: string;\n requesterId: string;\n content: string;\n shareInstanceId: string;\n encryptionKeyUrl: string;\n version: string;\n};\n\ntype RequestData = {\n toUserId: string;\n toDeviceUrl: string;\n shareInstanceId: string;\n};\n\ntype CommandRequestBody = {\n actionType: string;\n resourceType: string;\n shareInstanceId: string;\n receivers?: any[];\n};\n\ninterface IAnnotationChannel {\n // === below is for presenter\n acceptRequest: (approval) => undefined | Promise<void>;\n declineRequest: (approval) => undefined | Promise<void>;\n closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n changeAnnotationOptions: (options, meeting) => undefined | Promise<void>;\n // === below is for attendee\n approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n cancelApproveAnnotation: (requestData: RequestData, approval) => undefined | Promise<void>;\n sendStrokeData: (strokeData: StrokeData) => void;\n // =====\n approvalUrlUpdate: (approvalUrl: string) => void;\n locusUrlUpdate: (locusUrl: string) => void;\n}\n\nexport type {StrokeData, RequestData, CommandRequestBody, IAnnotationChannel};\n"],"mappings":""}
@@ -326,15 +326,13 @@ var AnnotationChannel = /*#__PURE__*/function (_WebexPlugin) {
326
326
  relayType: _constants.ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,
327
327
  request: {
328
328
  value: {
329
- sessionId: _uuid.default.v4(),
330
329
  type: _constants.ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,
331
- locusUrl: this.locusUrl,
332
330
  content: encryptedContent,
331
+ deviceId: strokeData.deviceId,
332
+ seq: this.seqNum,
333
+ requesterId: strokeData.requesterId,
333
334
  version: strokeData.version,
334
- fromUserId: strokeData.fromUserId,
335
- fromDeviceUrl: strokeData.fromDeviceUrl,
336
335
  shareInstanceId: strokeData.shareInstanceId,
337
- locusId: this.locusUrl && this.locusUrl.split('/').pop(),
338
336
  encryptionKeyUrl: strokeData.encryptionKeyUrl
339
337
  }
340
338
  }
@@ -1 +1 @@
1
- {"version":3,"names":["AnnotationChannel","args","ANNOTATION","actionType","requestData","body","resourceType","shareInstanceId","toUserId","receivers","participantId","deviceUrl","toDeviceUrl","request","method","HTTP_VERBS","POST","url","approvalUrl","encryptionKeyUrl","content","webex","internal","encryption","decryptText","then","res","encryptText","strokeData","llm","isConnected","encryptContent","encryptedContent","publishEncrypted","seqNum","decryptContent","decryptedContent","TriggerProxy","trigger","file","function","EVENT_TRIGGERS","ANNOTATION_STROKE_DATA","data","e","eventType","approval","ANNOTATION_RESOURCE_TYPE","ANNOTATION_COMMAND","type","payload","sequenceNumber","relayType","ANNOTATION_RELAY_TYPES","ANNOTATION_CLIENT","processStrokeMessage","hasSubscribedToEvents","mercury","on","eventCommandProcessor","eventDataProcessor","locusUrl","listenToEvents","PUT","ANNOTATION_ACTION_TYPE","ACCEPTED","DECLINED","sendAnnotationAction","REQUESTED","CANCELED","CLOSED","options","meeting","meetingRequest","changeMeetingFloor","id","recipients","route","getBinding","headers","to","value","sessionId","uuid","v4","ANNOTATION_REQUEST_TYPE","ANNOTATION_MESSAGE","version","fromUserId","fromDeviceUrl","locusId","split","pop","trackingId","config","trackingIdPrefix","toString","timestamp","Date","getTime","filterMessage","socket","send","WebexPlugin"],"sources":["index.ts"],"sourcesContent":["import uuid from 'uuid';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport TriggerProxy from '../common/events/trigger-proxy';\n\nimport {\n EVENT_TRIGGERS,\n ANNOTATION_RELAY_TYPES,\n ANNOTATION,\n ANNOTATION_REQUEST_TYPE,\n ANNOTATION_ACTION_TYPE,\n ANNOTATION_RESOURCE_TYPE,\n} from './constants';\n\nimport {StrokeData, RequestData, IAnnotationChannel, CommandRequestBody} from './annotation.types';\nimport {HTTP_VERBS} from '../constants';\n\n/**\n * @description Annotation to handle LLM and Mercury message and locus API\n * @class\n */\nclass AnnotationChannel extends WebexPlugin implements IAnnotationChannel {\n namespace = ANNOTATION;\n\n private seqNum: number;\n\n hasSubscribedToEvents: boolean;\n\n approvalUrl: string;\n locusUrl: string;\n deviceUrl: string;\n\n /**\n * Initializes annotation module\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n }\n\n /**\n * Process Stroke Data\n * @param {request} request stroke data\n * @returns {void}\n */\n private processStrokeMessage(request) {\n this.decryptContent(request.encryptionKeyUrl, request.content).then((decryptedContent) => {\n request.content = decryptedContent;\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'processStrokeMessage',\n },\n EVENT_TRIGGERS.ANNOTATION_STROKE_DATA,\n {\n data: request,\n }\n );\n });\n }\n\n /** bind all events from mercury\n * @param {Object} e\n * @returns {undefined}\n */\n private eventCommandProcessor(e) {\n if (\n e?.data?.eventType === 'locus.approval_request' &&\n e?.data?.approval?.resourceType === ANNOTATION_RESOURCE_TYPE &&\n e?.data?.approval?.actionType\n ) {\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'approval_request',\n },\n EVENT_TRIGGERS.ANNOTATION_COMMAND,\n {\n type: e.data.approval.actionType,\n payload: e.data.approval,\n }\n );\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n }\n }\n\n /** bind all events from llm\n * @param {Object} e\n * @returns {undefined}\n */\n private eventDataProcessor(e) {\n switch (e?.data?.relayType) {\n case ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT:\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n this.processStrokeMessage(e.data.request);\n break;\n default:\n break;\n }\n }\n\n /**\n * Listen to websocket messages\n * @returns {undefined}\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n // @ts-ignore\n this.webex.internal.mercury.on(\n 'event:locus.approval_request',\n this.eventCommandProcessor,\n this\n );\n // @ts-ignore\n this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);\n this.hasSubscribedToEvents = true;\n }\n }\n\n /**\n * set locusUrl\n * @param {string} locusUrl\n * @returns {void}\n */\n public locusUrlUpdate(locusUrl: string) {\n this.locusUrl = locusUrl;\n this.listenToEvents();\n }\n\n /**\n * set approved url\n * @param {string} approvalUrl\n * @returns {void}\n */\n public approvalUrlUpdate(approvalUrl: string) {\n this.approvalUrl = approvalUrl;\n }\n\n /**\n * accept request\n * @param {object} approval\n * @returns {Promise}\n */\n public acceptRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.ACCEPTED,\n },\n });\n }\n\n /**\n * presenter declined request annotation\n * @param {approval} approval\n * @returns {Promise}\n */\n public declineRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.DECLINED,\n },\n });\n }\n\n /**\n * request approved annotation\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n public approveAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.REQUESTED, requestData);\n }\n\n /**\n * cancel approved annotation\n * @param {object} requestData\n * @param {object} approval\n * @returns {Promise}\n */\n public cancelApproveAnnotation(requestData: RequestData, approval) {\n const body: CommandRequestBody = {\n actionType: ANNOTATION_ACTION_TYPE.CANCELED,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: `${approval.url}`,\n body,\n });\n }\n\n /**\n * close annotation\n * @param {object} requestData\n * @returns {Promise}\n */\n public closeAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.CLOSED, requestData);\n }\n\n /**\n * send annotation command\n * @param {ANNOTATION_ACTION_TYPE} actionType\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n private sendAnnotationAction = async (\n actionType: ANNOTATION_ACTION_TYPE,\n requestData: RequestData\n ): Promise<void> => {\n const body: CommandRequestBody = {\n actionType,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n if (requestData?.toUserId) {\n body.receivers = [{participantId: requestData.toUserId, deviceUrl: requestData.toDeviceUrl}];\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n url: `${this.approvalUrl}`,\n body,\n });\n };\n\n /**\n * decrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content encrypted content\n * @returns {string} decrypted content\n */\n private decryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * encrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content original content\n * @returns {string} encrypted content\n */\n private encryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.encryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * Sends stroke data to presenter\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n public sendStrokeData = (strokeData: StrokeData): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n this.encryptContent(strokeData.encryptionKeyUrl, strokeData.content).then(\n (encryptedContent) => {\n this.publishEncrypted(encryptedContent, strokeData);\n }\n );\n };\n\n /**\n * Change annotation options\n * @param {object} options\n * @param {object} meeting\n * @returns {Promise}\n */\n public changeAnnotationOptions(options, meeting) {\n return meeting?.meetingRequest.changeMeetingFloor(options);\n }\n\n /**\n * private encrypted the strokes data\n * @param {string} encryptedContent\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n private publishEncrypted(encryptedContent: string, strokeData: StrokeData) {\n const data = {\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: strokeData.toUserId,\n },\n data: {\n eventType: 'relay.event',\n relayType: ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,\n request: {\n value: {\n sessionId: uuid.v4(),\n type: ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,\n locusUrl: this.locusUrl,\n content: encryptedContent,\n version: strokeData.version,\n fromUserId: strokeData.fromUserId,\n fromDeviceUrl: strokeData.fromDeviceUrl,\n shareInstanceId: strokeData.shareInstanceId,\n locusId: this.locusUrl && this.locusUrl.split('/').pop(),\n encryptionKeyUrl: strokeData.encryptionKeyUrl,\n },\n },\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n timestamp: new Date().getTime(),\n sequenceNumber: this.seqNum,\n filterMessage: false,\n };\n\n // @ts-ignore\n this.webex.internal.llm.socket.send(data);\n this.seqNum += 1;\n }\n}\n\nexport default AnnotationChannel;\n"],"mappings":"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"}
1
+ {"version":3,"names":["AnnotationChannel","args","ANNOTATION","actionType","requestData","body","resourceType","shareInstanceId","toUserId","receivers","participantId","deviceUrl","toDeviceUrl","request","method","HTTP_VERBS","POST","url","approvalUrl","encryptionKeyUrl","content","webex","internal","encryption","decryptText","then","res","encryptText","strokeData","llm","isConnected","encryptContent","encryptedContent","publishEncrypted","seqNum","decryptContent","decryptedContent","TriggerProxy","trigger","file","function","EVENT_TRIGGERS","ANNOTATION_STROKE_DATA","data","e","eventType","approval","ANNOTATION_RESOURCE_TYPE","ANNOTATION_COMMAND","type","payload","sequenceNumber","relayType","ANNOTATION_RELAY_TYPES","ANNOTATION_CLIENT","processStrokeMessage","hasSubscribedToEvents","mercury","on","eventCommandProcessor","eventDataProcessor","locusUrl","listenToEvents","PUT","ANNOTATION_ACTION_TYPE","ACCEPTED","DECLINED","sendAnnotationAction","REQUESTED","CANCELED","CLOSED","options","meeting","meetingRequest","changeMeetingFloor","id","recipients","route","getBinding","headers","to","value","ANNOTATION_REQUEST_TYPE","ANNOTATION_MESSAGE","deviceId","seq","requesterId","version","trackingId","config","trackingIdPrefix","uuid","v4","toString","timestamp","Date","getTime","filterMessage","socket","send","WebexPlugin"],"sources":["index.ts"],"sourcesContent":["import uuid from 'uuid';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport TriggerProxy from '../common/events/trigger-proxy';\n\nimport {\n EVENT_TRIGGERS,\n ANNOTATION_RELAY_TYPES,\n ANNOTATION,\n ANNOTATION_REQUEST_TYPE,\n ANNOTATION_ACTION_TYPE,\n ANNOTATION_RESOURCE_TYPE,\n} from './constants';\n\nimport {StrokeData, RequestData, IAnnotationChannel, CommandRequestBody} from './annotation.types';\nimport {HTTP_VERBS} from '../constants';\n\n/**\n * @description Annotation to handle LLM and Mercury message and locus API\n * @class\n */\nclass AnnotationChannel extends WebexPlugin implements IAnnotationChannel {\n namespace = ANNOTATION;\n\n private seqNum: number;\n\n hasSubscribedToEvents: boolean;\n\n approvalUrl: string;\n locusUrl: string;\n deviceUrl: string;\n\n /**\n * Initializes annotation module\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n }\n\n /**\n * Process Stroke Data\n * @param {request} request stroke data\n * @returns {void}\n */\n private processStrokeMessage(request) {\n this.decryptContent(request.encryptionKeyUrl, request.content).then((decryptedContent) => {\n request.content = decryptedContent;\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'processStrokeMessage',\n },\n EVENT_TRIGGERS.ANNOTATION_STROKE_DATA,\n {\n data: request,\n }\n );\n });\n }\n\n /** bind all events from mercury\n * @param {Object} e\n * @returns {undefined}\n */\n private eventCommandProcessor(e) {\n if (\n e?.data?.eventType === 'locus.approval_request' &&\n e?.data?.approval?.resourceType === ANNOTATION_RESOURCE_TYPE &&\n e?.data?.approval?.actionType\n ) {\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'approval_request',\n },\n EVENT_TRIGGERS.ANNOTATION_COMMAND,\n {\n type: e.data.approval.actionType,\n payload: e.data.approval,\n }\n );\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n }\n }\n\n /** bind all events from llm\n * @param {Object} e\n * @returns {undefined}\n */\n private eventDataProcessor(e) {\n switch (e?.data?.relayType) {\n case ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT:\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n this.processStrokeMessage(e.data.request);\n break;\n default:\n break;\n }\n }\n\n /**\n * Listen to websocket messages\n * @returns {undefined}\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n // @ts-ignore\n this.webex.internal.mercury.on(\n 'event:locus.approval_request',\n this.eventCommandProcessor,\n this\n );\n // @ts-ignore\n this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);\n this.hasSubscribedToEvents = true;\n }\n }\n\n /**\n * set locusUrl\n * @param {string} locusUrl\n * @returns {void}\n */\n public locusUrlUpdate(locusUrl: string) {\n this.locusUrl = locusUrl;\n this.listenToEvents();\n }\n\n /**\n * set approved url\n * @param {string} approvalUrl\n * @returns {void}\n */\n public approvalUrlUpdate(approvalUrl: string) {\n this.approvalUrl = approvalUrl;\n }\n\n /**\n * accept request\n * @param {object} approval\n * @returns {Promise}\n */\n public acceptRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.ACCEPTED,\n },\n });\n }\n\n /**\n * presenter declined request annotation\n * @param {approval} approval\n * @returns {Promise}\n */\n public declineRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.DECLINED,\n },\n });\n }\n\n /**\n * request approved annotation\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n public approveAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.REQUESTED, requestData);\n }\n\n /**\n * cancel approved annotation\n * @param {object} requestData\n * @param {object} approval\n * @returns {Promise}\n */\n public cancelApproveAnnotation(requestData: RequestData, approval) {\n const body: CommandRequestBody = {\n actionType: ANNOTATION_ACTION_TYPE.CANCELED,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: `${approval.url}`,\n body,\n });\n }\n\n /**\n * close annotation\n * @param {object} requestData\n * @returns {Promise}\n */\n public closeAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.CLOSED, requestData);\n }\n\n /**\n * send annotation command\n * @param {ANNOTATION_ACTION_TYPE} actionType\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n private sendAnnotationAction = async (\n actionType: ANNOTATION_ACTION_TYPE,\n requestData: RequestData\n ): Promise<void> => {\n const body: CommandRequestBody = {\n actionType,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n if (requestData?.toUserId) {\n body.receivers = [{participantId: requestData.toUserId, deviceUrl: requestData.toDeviceUrl}];\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n url: `${this.approvalUrl}`,\n body,\n });\n };\n\n /**\n * decrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content encrypted content\n * @returns {string} decrypted content\n */\n private decryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * encrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content original content\n * @returns {string} encrypted content\n */\n private encryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.encryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * Sends stroke data to presenter\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n public sendStrokeData = (strokeData: StrokeData): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n this.encryptContent(strokeData.encryptionKeyUrl, strokeData.content).then(\n (encryptedContent) => {\n this.publishEncrypted(encryptedContent, strokeData);\n }\n );\n };\n\n /**\n * Change annotation options\n * @param {object} options\n * @param {object} meeting\n * @returns {Promise}\n */\n public changeAnnotationOptions(options, meeting) {\n return meeting?.meetingRequest.changeMeetingFloor(options);\n }\n\n /**\n * private encrypted the strokes data\n * @param {string} encryptedContent\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n private publishEncrypted(encryptedContent: string, strokeData: StrokeData) {\n const data = {\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: strokeData.toUserId,\n },\n data: {\n eventType: 'relay.event',\n relayType: ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,\n request: {\n value: {\n type: ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,\n content: encryptedContent,\n deviceId: strokeData.deviceId,\n seq: this.seqNum,\n requesterId: strokeData.requesterId,\n version: strokeData.version,\n shareInstanceId: strokeData.shareInstanceId,\n encryptionKeyUrl: strokeData.encryptionKeyUrl,\n },\n },\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n timestamp: new Date().getTime(),\n sequenceNumber: this.seqNum,\n filterMessage: false,\n };\n\n // @ts-ignore\n this.webex.internal.llm.socket.send(data);\n this.seqNum += 1;\n }\n}\n\nexport default AnnotationChannel;\n"],"mappings":"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"}
@@ -186,7 +186,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
186
186
  sessionId: this.sessionId
187
187
  });
188
188
  },
189
- version: "3.0.0-beta.121"
189
+ version: "3.0.0-beta.123"
190
190
  });
191
191
  var _default = Breakout;
192
192
  exports.default = _default;
@@ -988,7 +988,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
988
988
  this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
989
989
  }
990
990
  },
991
- version: "3.0.0-beta.121"
991
+ version: "3.0.0-beta.123"
992
992
  });
993
993
  var _default = Breakouts;
994
994
  exports.default = _default;
@@ -6916,6 +6916,52 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
6916
6916
  throw new Error('Webrtc media connection is missing, call addMedia() first');
6917
6917
  }
6918
6918
 
6919
+ /**
6920
+ * Method to enable or disable the 'Music mode' effect on audio track
6921
+ *
6922
+ * @param {boolean} shouldEnableMusicMode
6923
+ * @returns {Promise}
6924
+ */
6925
+ }, {
6926
+ key: "enableMusicMode",
6927
+ value: function () {
6928
+ var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(shouldEnableMusicMode) {
6929
+ return _regenerator.default.wrap(function _callee12$(_context12) {
6930
+ while (1) switch (_context12.prev = _context12.next) {
6931
+ case 0:
6932
+ this.checkMediaConnection();
6933
+ if (this.isMultistream) {
6934
+ _context12.next = 3;
6935
+ break;
6936
+ }
6937
+ throw new Error('enableMusicMode() only supported with multistream');
6938
+ case 3:
6939
+ if (!shouldEnableMusicMode) {
6940
+ _context12.next = 8;
6941
+ break;
6942
+ }
6943
+ _context12.next = 6;
6944
+ return this.mediaProperties.webrtcMediaConnection.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
6945
+ maxaveragebitrate: '64000',
6946
+ maxplaybackrate: '48000'
6947
+ });
6948
+ case 6:
6949
+ _context12.next = 10;
6950
+ break;
6951
+ case 8:
6952
+ _context12.next = 10;
6953
+ return this.mediaProperties.webrtcMediaConnection.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
6954
+ case 10:
6955
+ case "end":
6956
+ return _context12.stop();
6957
+ }
6958
+ }, _callee12, this);
6959
+ }));
6960
+ function enableMusicMode(_x7) {
6961
+ return _enableMusicMode.apply(this, arguments);
6962
+ }
6963
+ return enableMusicMode;
6964
+ }()
6919
6965
  /**
6920
6966
  * Publishes specified local tracks in the meeting
6921
6967
  *
@@ -6925,21 +6971,21 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
6925
6971
  }, {
6926
6972
  key: "publishTracks",
6927
6973
  value: function () {
6928
- var _publishTracks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(tracks) {
6974
+ var _publishTracks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(tracks) {
6929
6975
  var _tracks$screenShare;
6930
6976
  var _tracks$screenShare2, oldTrack, localDisplayTrack, _oldTrack, localTrack, _oldTrack2, _localTrack;
6931
- return _regenerator.default.wrap(function _callee12$(_context12) {
6932
- while (1) switch (_context12.prev = _context12.next) {
6977
+ return _regenerator.default.wrap(function _callee13$(_context13) {
6978
+ while (1) switch (_context13.prev = _context13.next) {
6933
6979
  case 0:
6934
6980
  this.checkMediaConnection();
6935
6981
  if (this.isMultistream) {
6936
- _context12.next = 3;
6982
+ _context13.next = 3;
6937
6983
  break;
6938
6984
  }
6939
6985
  throw new Error('publishTracks() only supported with multistream');
6940
6986
  case 3:
6941
6987
  if (!((_tracks$screenShare = tracks.screenShare) !== null && _tracks$screenShare !== void 0 && _tracks$screenShare.video)) {
6942
- _context12.next = 14;
6988
+ _context13.next = 14;
6943
6989
  break;
6944
6990
  }
6945
6991
  oldTrack = this.mediaProperties.shareTrack;
@@ -6949,15 +6995,15 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
6949
6995
  // we are starting a screen share
6950
6996
  this.mediaProperties.setLocalShareTrack(localDisplayTrack);
6951
6997
  localDisplayTrack.on(_mediaHelpers.LocalTrackEvents.Ended, this.handleShareTrackEnded);
6952
- _context12.next = 11;
6998
+ _context13.next = 11;
6953
6999
  return this.requestScreenShareFloor();
6954
7000
  case 11:
6955
7001
  this.mediaProperties.mediaDirection.sendShare = true;
6956
- _context12.next = 14;
7002
+ _context13.next = 14;
6957
7003
  return this.mediaProperties.webrtcMediaConnection.publishTrack(this.mediaProperties.shareTrack);
6958
7004
  case 14:
6959
7005
  if (!tracks.microphone) {
6960
- _context12.next = 24;
7006
+ _context13.next = 24;
6961
7007
  break;
6962
7008
  }
6963
7009
  _oldTrack = this.mediaProperties.audioTrack;
@@ -6973,11 +7019,11 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
6973
7019
  this.audio.handleLocalTrackChange(this);
6974
7020
  }
6975
7021
  localTrack.on(_mediaHelpers.LocalTrackEvents.Muted, this.localAudioTrackMuteStateHandler);
6976
- _context12.next = 24;
7022
+ _context13.next = 24;
6977
7023
  return this.mediaProperties.webrtcMediaConnection.publishTrack(this.mediaProperties.audioTrack);
6978
7024
  case 24:
6979
7025
  if (!tracks.camera) {
6980
- _context12.next = 34;
7026
+ _context13.next = 34;
6981
7027
  break;
6982
7028
  }
6983
7029
  _oldTrack2 = this.mediaProperties.videoTrack;
@@ -6993,15 +7039,15 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
6993
7039
  this.video.handleLocalTrackChange(this);
6994
7040
  }
6995
7041
  _localTrack.on(_mediaHelpers.LocalTrackEvents.Muted, this.localVideoTrackMuteStateHandler);
6996
- _context12.next = 34;
7042
+ _context13.next = 34;
6997
7043
  return this.mediaProperties.webrtcMediaConnection.publishTrack(this.mediaProperties.videoTrack);
6998
7044
  case 34:
6999
7045
  case "end":
7000
- return _context12.stop();
7046
+ return _context13.stop();
7001
7047
  }
7002
- }, _callee12, this);
7048
+ }, _callee13, this);
7003
7049
  }));
7004
- function publishTracks(_x7) {
7050
+ function publishTracks(_x8) {
7005
7051
  return _publishTracks.apply(this, arguments);
7006
7052
  }
7007
7053
  return publishTracks;
@@ -7015,14 +7061,14 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7015
7061
  }, {
7016
7062
  key: "unpublishTracks",
7017
7063
  value: function () {
7018
- var _unpublishTracks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(tracks) {
7064
+ var _unpublishTracks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(tracks) {
7019
7065
  var unpublishPromises, _iterator, _step, track;
7020
- return _regenerator.default.wrap(function _callee13$(_context13) {
7021
- while (1) switch (_context13.prev = _context13.next) {
7066
+ return _regenerator.default.wrap(function _callee14$(_context14) {
7067
+ while (1) switch (_context14.prev = _context14.next) {
7022
7068
  case 0:
7023
7069
  this.checkMediaConnection();
7024
7070
  if (this.isMultistream) {
7025
- _context13.next = 3;
7071
+ _context14.next = 3;
7026
7072
  break;
7027
7073
  }
7028
7074
  throw new Error('unpublishTracks() is only supported with multistream');
@@ -7059,15 +7105,15 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
7059
7105
  } finally {
7060
7106
  _iterator.f();
7061
7107
  }
7062
- _context13.next = 8;
7108
+ _context14.next = 8;
7063
7109
  return _promise.default.all(unpublishPromises);
7064
7110
  case 8:
7065
7111
  case "end":
7066
- return _context13.stop();
7112
+ return _context14.stop();
7067
7113
  }
7068
- }, _callee13, this);
7114
+ }, _callee14, this);
7069
7115
  }));
7070
- function unpublishTracks(_x8) {
7116
+ function unpublishTracks(_x9) {
7071
7117
  return _unpublishTracks.apply(this, arguments);
7072
7118
  }
7073
7119
  return unpublishTracks;