@azure/communication-react 1.19.0-alpha-202408020014 → 1.19.0-alpha-202408070015

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/communication-react.d.ts +7 -0
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-DM13Kp5W.js → ChatMessageComponentAsRichTextEditBox-BMVUY7HX.js} +2 -2
  3. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-DM13Kp5W.js.map → ChatMessageComponentAsRichTextEditBox-BMVUY7HX.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-8FsFMpKF.js → RichTextSendBoxWrapper-UkjXSVQH.js} +2 -2
  5. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-8FsFMpKF.js.map → RichTextSendBoxWrapper-UkjXSVQH.js.map} +1 -1
  6. package/dist/dist-cjs/communication-react/{index-D84PSTZV.js → index-D46R0M5v.js} +207 -180
  7. package/dist/dist-cjs/communication-react/index-D46R0M5v.js.map +1 -0
  8. package/dist/dist-cjs/communication-react/index.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +1 -0
  12. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +31 -9
  13. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  14. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +5 -1
  15. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +6 -2
  16. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  17. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +2 -1
  18. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.d.ts +2 -5
  20. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js +48 -31
  21. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js.map +1 -1
  22. package/dist/dist-esm/react-components/src/components/VideoGallery/LocalScreenShare.d.ts +5 -1
  23. package/dist/dist-esm/react-components/src/components/VideoGallery/LocalScreenShare.js +15 -12
  24. package/dist/dist-esm/react-components/src/components/VideoGallery/LocalScreenShare.js.map +1 -1
  25. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.d.ts +9 -0
  26. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.js +7 -1
  27. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.js.map +1 -1
  28. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +4 -0
  29. package/dist/dist-esm/react-components/src/components/VideoGallery.js +4 -4
  30. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  31. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +3 -1
  32. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
  33. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.d.ts +1 -0
  34. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js +1 -0
  35. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js.map +1 -1
  36. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +7 -3
  37. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
  38. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +1 -0
  39. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts +2 -0
  40. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.js.map +1 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +6 -1
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +3 -0
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  45. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js +4 -2
  46. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js.map +1 -1
  47. package/package.json +6 -6
  48. package/dist/dist-cjs/communication-react/index-D84PSTZV.js.map +0 -1
  49. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/LocalScreenShare.styles.d.ts +0 -22
  50. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/LocalScreenShare.styles.js +0 -44
  51. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/LocalScreenShare.styles.js.map +0 -1
@@ -189,7 +189,7 @@ function getDefaultExportFromCjs (x) {
189
189
  // Copyright (c) Microsoft Corporation.
190
190
  // Licensed under the MIT License.
191
191
  // GENERATED FILE. DO NOT EDIT MANUALLY.
192
- var telemetryVersion = '1.19.0-alpha-202408020014';
192
+ var telemetryVersion = '1.19.0-alpha-202408070015';
193
193
 
194
194
 
195
195
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -485,7 +485,7 @@ const Constants = {
485
485
  */
486
486
  const chatStatefulLogger = logger.createClientLogger('communication-react:chat-stateful');
487
487
 
488
- var __awaiter$Z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
488
+ var __awaiter$_ = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
489
489
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
490
490
  return new (P || (P = Promise))(function (resolve, reject) {
491
491
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -527,7 +527,7 @@ class ResourceDownloadQueue {
527
527
  this._messagesNeedingResourceRetrieval.push(copy);
528
528
  }
529
529
  startQueue(threadId, operation, options) {
530
- return __awaiter$Z(this, void 0, void 0, function* () {
530
+ return __awaiter$_(this, void 0, void 0, function* () {
531
531
  if (this.isActive) {
532
532
  return;
533
533
  }
@@ -563,7 +563,7 @@ class ResourceDownloadQueue {
563
563
  }
564
564
  }
565
565
  downloadSingleUrl(message, resourceUrl, operation) {
566
- return __awaiter$Z(this, void 0, void 0, function* () {
566
+ return __awaiter$_(this, void 0, void 0, function* () {
567
567
  const response = { sourceUrl: '' };
568
568
  try {
569
569
  const abortController = new AbortController();
@@ -579,7 +579,7 @@ class ResourceDownloadQueue {
579
579
  });
580
580
  }
581
581
  downloadAllPreviewUrls(message, operation) {
582
- return __awaiter$Z(this, void 0, void 0, function* () {
582
+ return __awaiter$_(this, void 0, void 0, function* () {
583
583
  var _a;
584
584
  const attachments = (_a = message.content) === null || _a === void 0 ? void 0 : _a.attachments;
585
585
  if (message.type === 'html' && attachments) {
@@ -606,7 +606,7 @@ class ResourceDownloadQueue {
606
606
  });
607
607
  }
608
608
  downloadResource(operation, url, abortController) {
609
- return __awaiter$Z(this, void 0, void 0, function* () {
609
+ return __awaiter$_(this, void 0, void 0, function* () {
610
610
  this._requestsToCancel[url] = { src: url, abortController };
611
611
  const blobUrl = yield operation(url, { credential: this._credential, endpoint: this._endpoint }, { abortController });
612
612
  delete this._requestsToCancel[url];
@@ -617,9 +617,9 @@ class ResourceDownloadQueue {
617
617
  /**
618
618
  * @private
619
619
  */
620
- const fetchImageSource = (src, authentication, options) => __awaiter$Z(void 0, void 0, void 0, function* () {
620
+ const fetchImageSource = (src, authentication, options) => __awaiter$_(void 0, void 0, void 0, function* () {
621
621
  function fetchWithAuthentication(url, token, options) {
622
- return __awaiter$Z(this, void 0, void 0, function* () {
622
+ return __awaiter$_(this, void 0, void 0, function* () {
623
623
  const headers = new Headers();
624
624
  headers.append('Authorization', `Bearer ${token}`);
625
625
  return yield fetchWithTimeout(url, {
@@ -630,7 +630,7 @@ const fetchImageSource = (src, authentication, options) => __awaiter$Z(void 0, v
630
630
  });
631
631
  }
632
632
  function fetchWithTimeout(resource, options) {
633
- return __awaiter$Z(this, void 0, void 0, function* () {
633
+ return __awaiter$_(this, void 0, void 0, function* () {
634
634
  // default timeout is 30 seconds
635
635
  const { timeout = 30000, abortController } = options;
636
636
  const id = setTimeout(() => {
@@ -657,7 +657,7 @@ const fetchImageSource = (src, authentication, options) => __awaiter$Z(void 0, v
657
657
 
658
658
  // Copyright (c) Microsoft Corporation.
659
659
  // Licensed under the MIT License.
660
- var __awaiter$Y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
660
+ var __awaiter$Z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
661
661
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
662
662
  return new (P || (P = Promise))(function (resolve, reject) {
663
663
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -733,7 +733,7 @@ let ChatContext$1 = class ChatContext {
733
733
  // Any item in queue should be removed.
734
734
  }
735
735
  downloadResourceToCache(threadId, messageId, resourceUrl) {
736
- return __awaiter$Y(this, void 0, void 0, function* () {
736
+ return __awaiter$Z(this, void 0, void 0, function* () {
737
737
  var _a;
738
738
  let message = (_a = this.getState().threads[threadId]) === null || _a === void 0 ? void 0 : _a.chatMessages[messageId];
739
739
  if (message && this._fullsizeImageQueue) {
@@ -1012,7 +1012,7 @@ let ChatContext$1 = class ChatContext {
1012
1012
  * @throws ChatError. Exceptions thrown from `f` are tagged with the failed `target.
1013
1013
  */
1014
1014
  withAsyncErrorTeedToState(f, target) {
1015
- return (...args) => __awaiter$Y(this, void 0, void 0, function* () {
1015
+ return (...args) => __awaiter$Z(this, void 0, void 0, function* () {
1016
1016
  try {
1017
1017
  return yield f(...args);
1018
1018
  }
@@ -1119,7 +1119,7 @@ const convertChatMessage = (message, status = 'delivered', clientMessageId) => {
1119
1119
 
1120
1120
  // Copyright (c) Microsoft Corporation.
1121
1121
  // Licensed under the MIT License.
1122
- var __awaiter$X = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1122
+ var __awaiter$Y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1123
1123
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1124
1124
  return new (P || (P = Promise))(function (resolve, reject) {
1125
1125
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1209,7 +1209,7 @@ class EventSubscriber {
1209
1209
  };
1210
1210
  // This is a temporary fix that no participant message is received for onChatMessageReceived event, which should be handled by JS SDK.
1211
1211
  // Without the temporary fix, there are missing 'participant joined' and 'participant left' system messages in the chat thread.
1212
- this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$X(this, void 0, void 0, function* () {
1212
+ this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$Y(this, void 0, void 0, function* () {
1213
1213
  var _a, e_1, _b, _c;
1214
1214
  try {
1215
1215
  for (var _d = true, _e = __asyncValues$1(this.chatClient
@@ -1303,7 +1303,7 @@ class EventSubscriber {
1303
1303
 
1304
1304
  // Copyright (c) Microsoft Corporation.
1305
1305
  // Licensed under the MIT License.
1306
- var __awaiter$W = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1306
+ var __awaiter$X = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1307
1307
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1308
1308
  return new (P || (P = Promise))(function (resolve, reject) {
1309
1309
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1325,7 +1325,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
1325
1325
  const threadsIterator = iteratorCreator(...args);
1326
1326
  return {
1327
1327
  next() {
1328
- return __awaiter$W(this, void 0, void 0, function* () {
1328
+ return __awaiter$X(this, void 0, void 0, function* () {
1329
1329
  const result = yield threadsIterator.next();
1330
1330
  if (!result.done && result.value) {
1331
1331
  decorateFn(result.value, context);
@@ -1340,7 +1340,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
1340
1340
  const pages = threadsIterator.byPage(settings);
1341
1341
  return {
1342
1342
  next() {
1343
- return __awaiter$W(this, void 0, void 0, function* () {
1343
+ return __awaiter$X(this, void 0, void 0, function* () {
1344
1344
  const result = yield pages.next();
1345
1345
  const page = result.value;
1346
1346
  if (!result.done && result.value) {
@@ -1427,7 +1427,7 @@ const createDecoratedListParticipants = (chatThreadClient, context) => {
1427
1427
 
1428
1428
  // Copyright (c) Microsoft Corporation.
1429
1429
  // Licensed under the MIT License.
1430
- var __awaiter$V = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1430
+ var __awaiter$W = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1431
1431
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1432
1432
  return new (P || (P = Promise))(function (resolve, reject) {
1433
1433
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1446,14 +1446,14 @@ class ProxyChatThreadClient {
1446
1446
  return createDecoratedListMessages(chatThreadClient, this._context);
1447
1447
  }
1448
1448
  case 'getMessage': {
1449
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$V(this, void 0, void 0, function* () {
1449
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$W(this, void 0, void 0, function* () {
1450
1450
  const message = yield chatThreadClient.getMessage(...args);
1451
1451
  this._context.setChatMessage(chatThreadClient.threadId, convertChatMessage(message));
1452
1452
  return message;
1453
1453
  }), 'ChatThreadClient.getMessage');
1454
1454
  }
1455
1455
  case 'sendMessage': {
1456
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$V(this, void 0, void 0, function* () {
1456
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$W(this, void 0, void 0, function* () {
1457
1457
  var _a;
1458
1458
  // Retry logic?
1459
1459
  const [request, options] = args;
@@ -1494,7 +1494,7 @@ class ProxyChatThreadClient {
1494
1494
  }), 'ChatThreadClient.sendMessage');
1495
1495
  }
1496
1496
  case 'addParticipants': {
1497
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$V(this, void 0, void 0, function* () {
1497
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$W(this, void 0, void 0, function* () {
1498
1498
  const result = yield chatThreadClient.addParticipants(...args);
1499
1499
  const [addRequest] = args;
1500
1500
  const participantsToAdd = addRequest.participants;
@@ -1503,7 +1503,7 @@ class ProxyChatThreadClient {
1503
1503
  }), 'ChatThreadClient.addParticipants');
1504
1504
  }
1505
1505
  case 'deleteMessage': {
1506
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$V(this, void 0, void 0, function* () {
1506
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$W(this, void 0, void 0, function* () {
1507
1507
  // DeleteMessage is able to either delete local one(for failed message) or synced message
1508
1508
  const [messageId] = args;
1509
1509
  if (this._context.deleteLocalMessage(chatThreadClient.threadId, messageId)) {
@@ -1521,12 +1521,12 @@ class ProxyChatThreadClient {
1521
1521
  return createDecoratedListReadReceipts(chatThreadClient, this._context);
1522
1522
  }
1523
1523
  case 'sendTypingNotification': {
1524
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$V(this, void 0, void 0, function* () {
1524
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$W(this, void 0, void 0, function* () {
1525
1525
  return yield chatThreadClient.sendTypingNotification(...args);
1526
1526
  }), 'ChatThreadClient.sendTypingNotification');
1527
1527
  }
1528
1528
  case 'removeParticipant': {
1529
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$V(this, void 0, void 0, function* () {
1529
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$W(this, void 0, void 0, function* () {
1530
1530
  const result = yield chatThreadClient.removeParticipant(...args);
1531
1531
  const [removeIdentifier] = args;
1532
1532
  this._context.deleteParticipant(chatThreadClient.threadId, communicationCommon.getIdentifierKind(removeIdentifier));
@@ -1534,7 +1534,7 @@ class ProxyChatThreadClient {
1534
1534
  }), 'ChatThreadClient.removeParticipant');
1535
1535
  }
1536
1536
  case 'updateMessage': {
1537
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$V(this, void 0, void 0, function* () {
1537
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$W(this, void 0, void 0, function* () {
1538
1538
  const result = yield chatThreadClient.updateMessage(...args);
1539
1539
  const [messageId, updateOption] = args;
1540
1540
  this._context.updateChatMessageContent(chatThreadClient.threadId, messageId, updateOption === null || updateOption === void 0 ? void 0 : updateOption.content);
@@ -1542,7 +1542,7 @@ class ProxyChatThreadClient {
1542
1542
  }), 'ChatThreadClient.updateMessage');
1543
1543
  }
1544
1544
  case 'updateTopic': {
1545
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$V(this, void 0, void 0, function* () {
1545
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$W(this, void 0, void 0, function* () {
1546
1546
  const result = yield chatThreadClient.updateTopic(...args);
1547
1547
  const [topic] = args;
1548
1548
  this._context.updateThreadTopic(chatThreadClient.threadId, topic);
@@ -1550,7 +1550,7 @@ class ProxyChatThreadClient {
1550
1550
  }), 'ChatThreadClient.updateTopic');
1551
1551
  }
1552
1552
  case 'getProperties': {
1553
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$V(this, void 0, void 0, function* () {
1553
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$W(this, void 0, void 0, function* () {
1554
1554
  const result = yield chatThreadClient.getProperties(...args);
1555
1555
  this._context.updateThread(chatThreadClient.threadId, result);
1556
1556
  return result;
@@ -1588,7 +1588,7 @@ const createDecoratedListThreads = (chatClient, context) => {
1588
1588
 
1589
1589
  // Copyright (c) Microsoft Corporation.
1590
1590
  // Licensed under the MIT License.
1591
- var __awaiter$U = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1591
+ var __awaiter$V = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1592
1592
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1593
1593
  return new (P || (P = Promise))(function (resolve, reject) {
1594
1594
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1607,7 +1607,7 @@ const proxyChatClient = {
1607
1607
  switch (prop) {
1608
1608
  case 'createChatThread': {
1609
1609
  return context.withAsyncErrorTeedToState(function (...args) {
1610
- return __awaiter$U(this, void 0, void 0, function* () {
1610
+ return __awaiter$V(this, void 0, void 0, function* () {
1611
1611
  const result = yield chatClient.createChatThread(...args);
1612
1612
  const thread = result.chatThread;
1613
1613
  if (thread) {
@@ -1620,7 +1620,7 @@ const proxyChatClient = {
1620
1620
  }
1621
1621
  case 'deleteChatThread': {
1622
1622
  return context.withAsyncErrorTeedToState(function (...args) {
1623
- return __awaiter$U(this, void 0, void 0, function* () {
1623
+ return __awaiter$V(this, void 0, void 0, function* () {
1624
1624
  const result = yield chatClient.deleteChatThread(...args);
1625
1625
  context.deleteThread(args[0]);
1626
1626
  return result;
@@ -1640,7 +1640,7 @@ const proxyChatClient = {
1640
1640
  }
1641
1641
  case 'startRealtimeNotifications': {
1642
1642
  return context.withAsyncErrorTeedToState(function (...args) {
1643
- return __awaiter$U(this, void 0, void 0, function* () {
1643
+ return __awaiter$V(this, void 0, void 0, function* () {
1644
1644
  const ret = yield chatClient.startRealtimeNotifications(...args);
1645
1645
  if (!receiver.eventSubscriber) {
1646
1646
  receiver.eventSubscriber = new EventSubscriber(chatClient, context);
@@ -1651,7 +1651,7 @@ const proxyChatClient = {
1651
1651
  }
1652
1652
  case 'stopRealtimeNotifications': {
1653
1653
  return context.withAsyncErrorTeedToState(function (...args) {
1654
- return __awaiter$U(this, void 0, void 0, function* () {
1654
+ return __awaiter$V(this, void 0, void 0, function* () {
1655
1655
  const ret = yield chatClient.stopRealtimeNotifications(...args);
1656
1656
  if (receiver.eventSubscriber) {
1657
1657
  receiver.eventSubscriber.unsubscribe();
@@ -1760,7 +1760,7 @@ const getImageAttachmentsFromHTMLContent = (content) => {
1760
1760
 
1761
1761
  // Copyright (c) Microsoft Corporation.
1762
1762
  // Licensed under the MIT License.
1763
- var __awaiter$T = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1763
+ var __awaiter$U = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1764
1764
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1765
1765
  return new (P || (P = Promise))(function (resolve, reject) {
1766
1766
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1786,7 +1786,7 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
1786
1786
  // due to a bug in babel, we can't use arrow function here
1787
1787
  // affecting conditional-compile-remove(attachment-upload)
1788
1788
  onSendMessage: function (content, options) {
1789
- return __awaiter$T(this, void 0, void 0, function* () {
1789
+ return __awaiter$U(this, void 0, void 0, function* () {
1790
1790
  const sendMessageRequest = {
1791
1791
  content,
1792
1792
  senderDisplayName: chatClient.getState().displayName
@@ -1822,14 +1822,14 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
1822
1822
  },
1823
1823
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
1824
1824
  onUploadImage: function (image, imageFilename) {
1825
- return __awaiter$T(this, void 0, void 0, function* () {
1825
+ return __awaiter$U(this, void 0, void 0, function* () {
1826
1826
  const imageResult = yield chatThreadClient.uploadImage(image, imageFilename);
1827
1827
  return imageResult;
1828
1828
  });
1829
1829
  },
1830
1830
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
1831
1831
  onDeleteImage: function (imageId) {
1832
- return __awaiter$T(this, void 0, void 0, function* () {
1832
+ return __awaiter$U(this, void 0, void 0, function* () {
1833
1833
  try {
1834
1834
  yield chatThreadClient.deleteImage(imageId);
1835
1835
  }
@@ -1844,7 +1844,7 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
1844
1844
  onUpdateMessage: function (messageId, content,
1845
1845
  /* @conditional-compile-remove(file-sharing-acs) */
1846
1846
  options) {
1847
- return __awaiter$T(this, void 0, void 0, function* () {
1847
+ return __awaiter$U(this, void 0, void 0, function* () {
1848
1848
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
1849
1849
  const imageAttachments = getImageAttachmentsFromHTMLContent(content);
1850
1850
  const updateMessageOptions = {
@@ -1857,23 +1857,23 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
1857
1857
  yield chatThreadClient.updateMessage(messageId, updateMessageOptions);
1858
1858
  });
1859
1859
  },
1860
- onDeleteMessage: (messageId) => __awaiter$T(void 0, void 0, void 0, function* () {
1860
+ onDeleteMessage: (messageId) => __awaiter$U(void 0, void 0, void 0, function* () {
1861
1861
  yield chatThreadClient.deleteMessage(messageId);
1862
1862
  }),
1863
1863
  // This handler is designed for chatThread to consume
1864
- onMessageSeen: (chatMessageId) => __awaiter$T(void 0, void 0, void 0, function* () {
1864
+ onMessageSeen: (chatMessageId) => __awaiter$U(void 0, void 0, void 0, function* () {
1865
1865
  yield chatThreadClient.sendReadReceipt({ chatMessageId });
1866
1866
  }),
1867
- onTyping: () => __awaiter$T(void 0, void 0, void 0, function* () {
1867
+ onTyping: () => __awaiter$U(void 0, void 0, void 0, function* () {
1868
1868
  yield chatThreadClient.sendTypingNotification();
1869
1869
  }),
1870
- onRemoveParticipant: (userId) => __awaiter$T(void 0, void 0, void 0, function* () {
1870
+ onRemoveParticipant: (userId) => __awaiter$U(void 0, void 0, void 0, function* () {
1871
1871
  yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
1872
1872
  }),
1873
- updateThreadTopicName: (topicName) => __awaiter$T(void 0, void 0, void 0, function* () {
1873
+ updateThreadTopicName: (topicName) => __awaiter$U(void 0, void 0, void 0, function* () {
1874
1874
  yield chatThreadClient.updateTopic(topicName);
1875
1875
  }),
1876
- onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$T(void 0, void 0, void 0, function* () {
1876
+ onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$U(void 0, void 0, void 0, function* () {
1877
1877
  var _a, _b, _c;
1878
1878
  if (messageIterator === undefined) {
1879
1879
  // Lazy definition so that errors in the method call are reported correctly.
@@ -2008,7 +2008,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
2008
2008
  wordBreak: 'break-word'
2009
2009
  });
2010
2010
 
2011
- var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"File is uploading, please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",attachmentMoreMenu:"More Options"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"File is uploading, please wait.",imageUploadsPendingError:"Image is uploading, please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentMoreMenu:"More Options",richTextNewBulletedListItemAnnouncement:"Bullet, new line",richTextNewNumberedListItemAnnouncement:"{0}, new line",richTextBulletedListAppliedAnnouncement:"Bulleted list applied",richTextNumberedListAppliedAnnouncement:"Numbered list applied"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$k={label:"Leave",tooltipContent:"Leave call",leaveOption:"Leave",endCallOption:"End call for everyone"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$k={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{status} {author} said {message}",messageContentMineAriaText:"{status} You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",openAttachment:"Open file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentUploadsPendingError:"File is uploading, please wait.",imageUploadsPendingError:"Image is uploading, please wait.",richTextNewBulletedListItemAnnouncement:"Bullet, new line",richTextNewNumberedListItemAnnouncement:"{0}, new line",richTextBulletedListAppliedAnnouncement:"Bulleted list applied",richTextNumberedListAppliedAnnouncement:"Numbered list applied"};var errorBar$k={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"There was an issue starting screen share.",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",teamsMeetingCallNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted.",mutedByRemoteParticipant:"You were muted by another participant."};var notificationStack$k={callingNetworkFailure:{title:"Troubling connecting call",message:"You seem to be offline. Please check your network connection and try again.",dismissButtonAriaLabel:"Close"},startVideoGeneric:{title:"Failed to start video.",dismissButtonAriaLabel:"Close"},stopVideoGeneric:{title:"Failed to stop video.",dismissButtonAriaLabel:"Close"},muteGeneric:{title:"Failed to mute microphone.",dismissButtonAriaLabel:"Close"},unmuteGeneric:{title:"Failed to unmute microphone.",dismissButtonAriaLabel:"Close"},speakingWhileMuted:{title:"You're muted.",dismissButtonAriaLabel:"Close"},startScreenShareGeneric:{title:"There was an issue starting screen share.",dismissButtonAriaLabel:"Close"},stopScreenShareGeneric:{title:"Failed to stop screen sharing.",dismissButtonAriaLabel:"Close"},callNetworkQualityLow:{title:"Network quality is low.",dismissButtonAriaLabel:"Close"},teamsMeetingCallNetworkQualityLow:{title:"Network quality is low.",dismissButtonAriaLabel:"Close",message:"Join this call from your phone for better sound. You can continue viewing the meeting on this device.",primaryButtonLabel:"Join by Phone"},callNoSpeakerFound:{title:"No speakers or headphones found",message:"Connect an audio device to hear the call.",dismissButtonAriaLabel:"Close"},callNoMicrophoneFound:{title:"No microphones found",message:"Connect an audio input device.",dismissButtonAriaLabel:"Close"},callMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Click the lock in the address bar to grant permission to this webpage.",dismissButtonAriaLabel:"Close"},callMicrophoneAccessDeniedSafari:{title:"Unable to access microphone",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",dismissButtonAriaLabel:"Close"},callMicrophoneMutedBySystem:{title:"You are muted by your system.",dismissButtonAriaLabel:"Close"},callMicrophoneUnmutedBySystem:{title:"Your microphone recovered and you were unmuted by your system.",dismissButtonAriaLabel:"Close"},callMacOsMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Grant microphone permission in your macOS privacy settings.",dismissButtonAriaLabel:"Close"},callLocalVideoFreeze:{title:"Network bandwidth is poor",message:"Your video may appear paused for others on the call.",dismissButtonAriaLabel:"Close"},callCameraAccessDenied:{title:"Unable to access camera",message:"Click the lock in the address bar to grant permission to this webpage.",dismissButtonAriaLabel:"Close"},callCameraAccessDeniedSafari:{title:"Unable to access camera",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",dismissButtonAriaLabel:"Close"},callCameraAlreadyInUse:{title:"Unable to access camera",message:"It may already be in use by another application.",dismissButtonAriaLabel:"Close"},callVideoStoppedBySystem:{title:"Your video has been stopped by your system.",dismissButtonAriaLabel:"Close"},callVideoRecoveredBySystem:{title:"Your video has resumed.",dismissButtonAriaLabel:"Close"},callMacOsCameraAccessDenied:{title:"MacOS is blocking access to your camera",message:"Update your privacy settings to allow this browser to access your camera.",dismissButtonAriaLabel:"Close"},callMacOsScreenShareAccessDenied:{title:"MacOS is blocking screen sharing",message:"Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close"},failedToJoinCallGeneric:{title:"Failed to join call.",dismissButtonAriaLabel:"Close"},failedToJoinCallInvalidMeetingLink:{title:"Unable to join Meeting. Invalid Link.",dismissButtonAriaLabel:"Close"},cameraFrozenForRemoteParticipants:{title:"Users in the call are having issues seeing your video",message:"Please check your devices and network.",dismissButtonAriaLabel:"Close"},unableToStartVideoEffect:{title:"Unable to apply video effect.",dismissButtonAriaLabel:"Close"},startSpotlightWhileMaxParticipantsAreSpotlighted:{title:"Cannot start spotlight on participant(s)",message:"The maximum number of participants are already spotlighted.",dismissButtonAriaLabel:"Close"},mutedByRemoteParticipant:{title:"You were muted by another participant.",dismissButtonAriaLabel:"Close"},recordingStarted:{title:"Recording has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",dismissButtonAriaLabel:"Close"},transcriptionStarted:{title:"Transcription has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",dismissButtonAriaLabel:"Close"},recordingStopped:{title:"Recording is being saved.",message:"Recording has stopped.",dismissButtonAriaLabel:"Close"},transcriptionStopped:{title:"Transcription is being saved.",message:"Transcription has stopped.",dismissButtonAriaLabel:"Close"},recordingAndTranscriptionStarted:{title:"Recording and transcription have started.",message:"By joining, you are giving consent for this meeting to be transcribed.",dismissButtonAriaLabel:"Close"},recordingAndTranscriptionStopped:{title:"Recording and transcription are being saved.",message:"Recording and transcription have stopped.",dismissButtonAriaLabel:"Close"},recordingStoppedStillTranscribing:{title:"Recording has stopped.",message:"You are now only transcribing this meeting.",dismissButtonAriaLabel:"Close"},transcriptionStoppedStillRecording:{title:"Transcription has stopped.",message:"You are now only recording this meeting.",dismissButtonAriaLabel:"Close"}};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoMovementAriaLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee",muteParticipantMenuItemLabel:"Mute"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold",moreOptionsButtonAriaLabel:"More Options"};var CameraAndMicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck$k={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck$k={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck$k={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied$k={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied$k={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied$k={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$k={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var verticalGallery$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var meetingConferencePhoneInfo$k={meetingConferencePhoneInfoModalTitle:"Join call from your phone",meetingConferencePhoneInfoModalDialIn:"Dial number",meetingConferencePhoneInfoModalMeetingId:"Enter meeting ID",meetingConferencePhoneInfoModalWait:"Wait to be admitted by organizer",meetingConferencePhoneInfoModalNoPhoneAvailable:"No phone available",meetingConferencePhoneInfoModalTollGeoData:"{country}, {city}",meetingConferencePhoneInfoModalTollFree:"(Toll-free)",meetingConferencePhoneInfoModalToll:"(Toll)"};var IncomingCallNotification$l={incomingCallNotificationPlaceholderId:"Unknown User",incomingCallNotificationPlaceholderAlert:"{callerName} is calling",incomingCallNoticicationAcceptWithAudioAriaLabel:"Accept with audio",incomingCallNoticicationAcceptWithVideoAriaLabel:"Accept with video",incomingCallNoticicationRejectAriaLabel:"Reject",incomingCallNotificationAcceptButtonLabel:"Accept",incomingCallNotificationRejectButtonLabel:"Decline",incomingCallNotificationAccceptWithVideoButtonLabel:"Accept with Video"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,notificationStack:notificationStack$k,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k,meetingConferencePhoneInfo:meetingConferencePhoneInfo$k,IncomingCallNotification:IncomingCallNotification$l};
2011
+ var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"File is uploading, please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",attachmentMoreMenu:"More Options"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"File is uploading, please wait.",imageUploadsPendingError:"Image is uploading, please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentMoreMenu:"More Options",richTextNewBulletedListItemAnnouncement:"Bullet, new line",richTextNewNumberedListItemAnnouncement:"{0}, new line",richTextBulletedListAppliedAnnouncement:"Bulleted list applied",richTextNumberedListAppliedAnnouncement:"Numbered list applied"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$k={label:"Leave",tooltipContent:"Leave call",leaveOption:"Leave",endCallOption:"End call for everyone"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$k={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{status} {author} said {message}",messageContentMineAriaText:"{status} You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",openAttachment:"Open file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentUploadsPendingError:"File is uploading, please wait.",imageUploadsPendingError:"Image is uploading, please wait.",richTextNewBulletedListItemAnnouncement:"Bullet, new line",richTextNewNumberedListItemAnnouncement:"{0}, new line",richTextBulletedListAppliedAnnouncement:"Bulleted list applied",richTextNumberedListAppliedAnnouncement:"Numbered list applied"};var errorBar$k={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"There was an issue starting screen share.",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",teamsMeetingCallNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted.",mutedByRemoteParticipant:"You were muted by another participant."};var notificationStack$k={callingNetworkFailure:{title:"Troubling connecting call",message:"You seem to be offline. Please check your network connection and try again.",dismissButtonAriaLabel:"Close"},startVideoGeneric:{title:"Failed to start video.",dismissButtonAriaLabel:"Close"},stopVideoGeneric:{title:"Failed to stop video.",dismissButtonAriaLabel:"Close"},muteGeneric:{title:"Failed to mute microphone.",dismissButtonAriaLabel:"Close"},unmuteGeneric:{title:"Failed to unmute microphone.",dismissButtonAriaLabel:"Close"},speakingWhileMuted:{title:"You're muted.",dismissButtonAriaLabel:"Close"},startScreenShareGeneric:{title:"There was an issue starting screen share.",dismissButtonAriaLabel:"Close"},stopScreenShareGeneric:{title:"Failed to stop screen sharing.",dismissButtonAriaLabel:"Close"},callNetworkQualityLow:{title:"Network quality is low.",dismissButtonAriaLabel:"Close"},teamsMeetingCallNetworkQualityLow:{title:"Network quality is low.",dismissButtonAriaLabel:"Close",message:"Join this call from your phone for better sound. You can continue viewing the meeting on this device.",primaryButtonLabel:"Join by Phone"},callNoSpeakerFound:{title:"No speakers or headphones found",message:"Connect an audio device to hear the call.",dismissButtonAriaLabel:"Close"},callNoMicrophoneFound:{title:"No microphones found",message:"Connect an audio input device.",dismissButtonAriaLabel:"Close"},callMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Click the lock in the address bar to grant permission to this webpage.",dismissButtonAriaLabel:"Close"},callMicrophoneAccessDeniedSafari:{title:"Unable to access microphone",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",dismissButtonAriaLabel:"Close"},callMicrophoneMutedBySystem:{title:"You are muted by your system.",dismissButtonAriaLabel:"Close"},callMicrophoneUnmutedBySystem:{title:"Your microphone recovered and you were unmuted by your system.",dismissButtonAriaLabel:"Close"},callMacOsMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Grant microphone permission in your macOS privacy settings.",dismissButtonAriaLabel:"Close"},callLocalVideoFreeze:{title:"Network bandwidth is poor",message:"Your video may appear paused for others on the call.",dismissButtonAriaLabel:"Close"},callCameraAccessDenied:{title:"Unable to access camera",message:"Click the lock in the address bar to grant permission to this webpage.",dismissButtonAriaLabel:"Close"},callCameraAccessDeniedSafari:{title:"Unable to access camera",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",dismissButtonAriaLabel:"Close"},callCameraAlreadyInUse:{title:"Unable to access camera",message:"It may already be in use by another application.",dismissButtonAriaLabel:"Close"},callVideoStoppedBySystem:{title:"Your video has been stopped by your system.",dismissButtonAriaLabel:"Close"},callVideoRecoveredBySystem:{title:"Your video has resumed.",dismissButtonAriaLabel:"Close"},callMacOsCameraAccessDenied:{title:"MacOS is blocking access to your camera",message:"Update your privacy settings to allow this browser to access your camera.",dismissButtonAriaLabel:"Close"},callMacOsScreenShareAccessDenied:{title:"MacOS is blocking screen sharing",message:"Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close"},failedToJoinCallGeneric:{title:"Failed to join call.",dismissButtonAriaLabel:"Close"},failedToJoinCallInvalidMeetingLink:{title:"Unable to join Meeting. Invalid Link.",dismissButtonAriaLabel:"Close"},cameraFrozenForRemoteParticipants:{title:"Users in the call are having issues seeing your video",message:"Please check your devices and network.",dismissButtonAriaLabel:"Close"},unableToStartVideoEffect:{title:"Unable to apply video effect.",dismissButtonAriaLabel:"Close"},startSpotlightWhileMaxParticipantsAreSpotlighted:{title:"Cannot start spotlight on participant(s)",message:"The maximum number of participants are already spotlighted.",dismissButtonAriaLabel:"Close"},mutedByRemoteParticipant:{title:"You were muted by another participant.",dismissButtonAriaLabel:"Close"},recordingStarted:{title:"Recording has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",dismissButtonAriaLabel:"Close"},transcriptionStarted:{title:"Transcription has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",dismissButtonAriaLabel:"Close"},recordingStopped:{title:"Recording is being saved.",message:"Recording has stopped.",dismissButtonAriaLabel:"Close"},transcriptionStopped:{title:"Transcription is being saved.",message:"Transcription has stopped.",dismissButtonAriaLabel:"Close"},recordingAndTranscriptionStarted:{title:"Recording and transcription have started.",message:"By joining, you are giving consent for this meeting to be transcribed.",dismissButtonAriaLabel:"Close"},recordingAndTranscriptionStopped:{title:"Recording and transcription are being saved.",message:"Recording and transcription have stopped.",dismissButtonAriaLabel:"Close"},recordingStoppedStillTranscribing:{title:"Recording has stopped.",message:"You are now only transcribing this meeting.",dismissButtonAriaLabel:"Close"},transcriptionStoppedStillRecording:{title:"Transcription has stopped.",message:"You are now only recording this meeting.",dismissButtonAriaLabel:"Close"}};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localScreenShareLoadingMessage:"Loading your screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoMovementAriaLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee",muteParticipantMenuItemLabel:"Mute"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold",moreOptionsButtonAriaLabel:"More Options"};var CameraAndMicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest$k={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest$k={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck$k={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck$k={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck$k={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied$k={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied$k={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied$k={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari$k={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari$k={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$k={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var verticalGallery$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var meetingConferencePhoneInfo$k={meetingConferencePhoneInfoModalTitle:"Join call from your phone",meetingConferencePhoneInfoModalDialIn:"Dial number",meetingConferencePhoneInfoModalMeetingId:"Enter meeting ID",meetingConferencePhoneInfoModalWait:"Wait to be admitted by organizer",meetingConferencePhoneInfoModalNoPhoneAvailable:"No phone available",meetingConferencePhoneInfoModalTollGeoData:"{country}, {city}",meetingConferencePhoneInfoModalTollFree:"(Toll-free)",meetingConferencePhoneInfoModalToll:"(Toll)"};var IncomingCallNotification$l={incomingCallNotificationPlaceholderId:"Unknown User",incomingCallNotificationPlaceholderAlert:"{callerName} is calling",incomingCallNoticicationAcceptWithAudioAriaLabel:"Accept with audio",incomingCallNoticicationAcceptWithVideoAriaLabel:"Accept with video",incomingCallNoticicationRejectAriaLabel:"Reject",incomingCallNotificationAcceptButtonLabel:"Accept",incomingCallNotificationRejectButtonLabel:"Decline",incomingCallNotificationAccceptWithVideoButtonLabel:"Accept with Video"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,notificationStack:notificationStack$k,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k,meetingConferencePhoneInfo:meetingConferencePhoneInfo$k,IncomingCallNotification:IncomingCallNotification$l};
2012
2012
 
2013
2013
  // Copyright (c) Microsoft Corporation.
2014
2014
  // Licensed under the MIT License.
@@ -4481,7 +4481,7 @@ const _MentionPopover = (props) => {
4481
4481
 
4482
4482
  // Copyright (c) Microsoft Corporation.
4483
4483
  // Licensed under the MIT License.
4484
- var __awaiter$S = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4484
+ var __awaiter$T = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4485
4485
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4486
4486
  return new (P || (P = Promise))(function (resolve, reject) {
4487
4487
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4667,7 +4667,7 @@ const TextFieldWithMention = (props) => {
4667
4667
  onSuggestionSelected,
4668
4668
  updateMentionSuggestions
4669
4669
  ]);
4670
- const debouncedQueryUpdate = useDebounce.useDebouncedCallback((query) => __awaiter$S(void 0, void 0, void 0, function* () {
4670
+ const debouncedQueryUpdate = useDebounce.useDebouncedCallback((query) => __awaiter$T(void 0, void 0, void 0, function* () {
4671
4671
  var _a;
4672
4672
  let suggestions = (_a = (yield (mentionLookupOptions === null || mentionLookupOptions === void 0 ? void 0 : mentionLookupOptions.onQueryUpdated(query)))) !== null && _a !== void 0 ? _a : [];
4673
4673
  suggestions = suggestions.filter((suggestion) => suggestion.displayText.trim() !== '');
@@ -4844,7 +4844,7 @@ const TextFieldWithMention = (props) => {
4844
4844
  });
4845
4845
  }
4846
4846
  }, [updateSelectionIndexesWithMentionIfNeeded, setSelectionStartValue, setSelectionEndValue]);
4847
- const handleOnChange = React.useCallback((_b) => __awaiter$S(void 0, [_b], void 0, function* ({ currentSelectionEnd, currentSelectionStart, currentTriggerStartIndex, event, htmlTextValue, inputTextValue, previousSelectionEnd, previousSelectionStart, tagsValue, updatedValue }) {
4847
+ const handleOnChange = React.useCallback((_b) => __awaiter$T(void 0, [_b], void 0, function* ({ currentSelectionEnd, currentSelectionStart, currentTriggerStartIndex, event, htmlTextValue, inputTextValue, previousSelectionEnd, previousSelectionStart, tagsValue, updatedValue }) {
4848
4848
  var _c;
4849
4849
  debouncedQueryUpdate.cancel();
4850
4850
  if (event.currentTarget === null) {
@@ -5397,7 +5397,7 @@ const ATTACHMENT_CARD_MIN_PROGRESS = 0.05;
5397
5397
 
5398
5398
  // Copyright (c) Microsoft Corporation.
5399
5399
  // Licensed under the MIT License.
5400
- var __awaiter$R = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5400
+ var __awaiter$S = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5401
5401
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5402
5402
  return new (P || (P = Promise))(function (resolve, reject) {
5403
5403
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -5485,7 +5485,7 @@ const MappedMenuItems = (menuActions, attachment, handleOnClickError) => {
5485
5485
  React.createElement(reactComponents.MenuTrigger, null,
5486
5486
  React.createElement(reactComponents.ToolbarButton, { "aria-label": localeStrings.attachmentMoreMenu, role: "button", icon: React.createElement(react.Icon, { iconName: "AttachmentMoreMenu" }) }))),
5487
5487
  React.createElement(reactComponents.MenuPopover, null,
5488
- React.createElement(reactComponents.MenuList, null, menuActions.map((menuItem, index) => (React.createElement(reactComponents.MenuItem, { "aria-label": menuItem.name, key: index, icon: menuItem.icon, onClick: () => __awaiter$R(void 0, void 0, void 0, function* () {
5488
+ React.createElement(reactComponents.MenuList, null, menuActions.map((menuItem, index) => (React.createElement(reactComponents.MenuItem, { "aria-label": menuItem.name, key: index, icon: menuItem.icon, onClick: () => __awaiter$S(void 0, void 0, void 0, function* () {
5489
5489
  try {
5490
5490
  yield menuItem.onClick(attachment);
5491
5491
  }
@@ -5620,7 +5620,7 @@ const _AttachmentUploadCards = (props) => {
5620
5620
 
5621
5621
  // Copyright (c) Microsoft Corporation.
5622
5622
  // Licensed under the MIT License.
5623
- var __awaiter$Q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5623
+ var __awaiter$R = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5624
5624
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5625
5625
  return new (P || (P = Promise))(function (resolve, reject) {
5626
5626
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -5669,7 +5669,7 @@ const hasInlineImageContent = (content) => {
5669
5669
  *
5670
5670
  * @returns The updated message content.
5671
5671
  */
5672
- const updateStylesOfInlineImages = (message, initialInlineImages) => __awaiter$Q(void 0, void 0, void 0, function* () {
5672
+ const updateStylesOfInlineImages = (message, initialInlineImages) => __awaiter$R(void 0, void 0, void 0, function* () {
5673
5673
  if (message === '') {
5674
5674
  return message;
5675
5675
  }
@@ -5697,8 +5697,7 @@ const updateStylesOfInlineImages = (message, initialInlineImages) => __awaiter$Q
5697
5697
  resolve();
5698
5698
  };
5699
5699
  imageElement.onerror = () => {
5700
- console.log('Error loading image', img.src);
5701
- rejects();
5700
+ rejects(`Error loading image ${img.id}`);
5702
5701
  };
5703
5702
  });
5704
5703
  });
@@ -5762,10 +5761,15 @@ const toAttachmentMetadata = (attachmentsWithProgress) => {
5762
5761
  /**
5763
5762
  * @internal
5764
5763
  */
5765
- const modifyInlineImagesInContentString = (content, initialInlineImages, onCompleted) => __awaiter$Q(void 0, void 0, void 0, function* () {
5764
+ const modifyInlineImagesInContentString = (content, initialInlineImages, onCompleted) => __awaiter$R(void 0, void 0, void 0, function* () {
5766
5765
  let newContent = content;
5767
5766
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
5768
- newContent = yield updateStylesOfInlineImages(content, initialInlineImages);
5767
+ try {
5768
+ newContent = yield updateStylesOfInlineImages(content, initialInlineImages);
5769
+ }
5770
+ catch (error) {
5771
+ console.error('Error updating inline images: ', error);
5772
+ }
5769
5773
  onCompleted === null || onCompleted === void 0 ? void 0 : onCompleted(newContent);
5770
5774
  });
5771
5775
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
@@ -6602,7 +6606,9 @@ const richTextEditorWrapperStyle = (theme) => {
6602
6606
  maxWidth: '100%',
6603
6607
  color: theme.palette.neutralPrimary,
6604
6608
  '& img': {
6605
- margin: '0.2rem'
6609
+ margin: '0.2rem',
6610
+ maxWidth: '100% !important', // Remove !important when resolving issue where rooster sets width/height in style attribute incorrectly
6611
+ height: 'auto !important' // Remove !important when resolving issue where rooster sets width/height in style attribute incorrectly
6606
6612
  },
6607
6613
  '& table': {
6608
6614
  background: 'transparent',
@@ -6881,6 +6887,7 @@ var PluginEventType;
6881
6887
  PluginEventType["BeforeSetContent"] = "beforeSetContent";
6882
6888
  PluginEventType["Input"] = "input";
6883
6889
  PluginEventType["KeyDown"] = "keyDown";
6890
+ PluginEventType["BeforeCutCopy"] = "beforeCutCopy";
6884
6891
  PluginEventType["BeforePaste"] = "beforePaste";
6885
6892
  PluginEventType["ZoomChanged"] = "zoomChanged";
6886
6893
  PluginEventType["MouseUp"] = "mouseUp";
@@ -7040,13 +7047,50 @@ const removeSingleLocalBlob = (currentLocalBlobMap, imageId) => {
7040
7047
  }
7041
7048
  };
7042
7049
 
7043
- /* @conditional-compile-remove(rich-text-editor) */
7050
+ var __awaiter$Q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7051
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7052
+ return new (P || (P = Promise))(function (resolve, reject) {
7053
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7054
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7055
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7056
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
7057
+ });
7058
+ };
7044
7059
  /**
7045
7060
  * CopyPastePlugin is a plugin for handling copy and paste events in the editor.
7046
7061
  */
7047
7062
  class CopyPastePlugin {
7048
7063
  constructor() {
7049
7064
  this.editor = null;
7065
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
7066
+ this.imageBase64DataMap = {};
7067
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
7068
+ this.handleInlineImage = (event) => {
7069
+ if (event.eventType === PluginEventType.BeforePaste && event.pasteType === 'normal' && this.onInsertInlineImage) {
7070
+ event.fragment.querySelectorAll('img').forEach((image) => {
7071
+ // Assign a unique id to the image element so Contosos can identify the image element.
7072
+ // We also use it internally such as in getRemovedInlineImages to compare images in the content with previous images
7073
+ image.id = uuid.v1();
7074
+ const clipboardImage = event.clipboardData.image;
7075
+ const fileName = (clipboardImage === null || clipboardImage === void 0 ? void 0 : clipboardImage.name) ||
7076
+ (clipboardImage === null || clipboardImage === void 0 ? void 0 : clipboardImage.type.replace('/', '.')) ||
7077
+ image.getAttribute(_IMAGE_ATTRIBUTE_INLINE_IMAGE_FILE_NAME_KEY) ||
7078
+ '';
7079
+ // If the image src is an external url, call the onInsertInlineImage callback with the url.
7080
+ let imageUrl = image.src;
7081
+ if (image.src.startsWith('data:image/')) {
7082
+ this.imageBase64DataMap[image.id] = image.src;
7083
+ const blobImage = _base64ToBlob(image.src);
7084
+ imageUrl = URL.createObjectURL(blobImage);
7085
+ }
7086
+ image.src = imageUrl;
7087
+ image.alt = image.alt || 'image';
7088
+ image.dataset.imageFileName = fileName;
7089
+ const imageAttributes = getInlineImageAttributes(image);
7090
+ this.onInsertInlineImage && this.onInsertInlineImage(imageAttributes);
7091
+ });
7092
+ }
7093
+ };
7050
7094
  }
7051
7095
  getName() {
7052
7096
  return 'CopyPastePlugin';
@@ -7056,6 +7100,15 @@ class CopyPastePlugin {
7056
7100
  }
7057
7101
  dispose() { }
7058
7102
  onPluginEvent(event) {
7103
+ /* @conditional-compile-remove(rich-text-editor-image-upload) */
7104
+ if (event.eventType === PluginEventType.BeforeCutCopy) {
7105
+ event.clonedRoot.querySelectorAll('img').forEach((image) => __awaiter$Q(this, void 0, void 0, function* () {
7106
+ if (image.src.startsWith('blob:')) {
7107
+ const base64Data = this.imageBase64DataMap[image.id];
7108
+ image.src = base64Data || image.src;
7109
+ }
7110
+ }));
7111
+ }
7059
7112
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
7060
7113
  // If onInsertInlineImage is not provided, we should remove the image tags before calling the onPaste callback
7061
7114
  if (event.eventType === PluginEventType.BeforePaste && event.pasteType === 'normal' && !this.onInsertInlineImage) {
@@ -7065,7 +7118,7 @@ class CopyPastePlugin {
7065
7118
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
7066
7119
  // We should handle the onInsertInlineImage after the onPaste callback in case Contosos want to modify the image tags, especially the src attribute.
7067
7120
  if (this.onInsertInlineImage) {
7068
- handleInlineImage(event, this.onInsertInlineImage);
7121
+ this.handleInlineImage(event);
7069
7122
  }
7070
7123
  if (this.editor !== null && !this.editor.isDisposed()) {
7071
7124
  // scroll the editor to the correct position after pasting content
@@ -7086,36 +7139,6 @@ const handleBeforePasteEvent = (event,
7086
7139
  return;
7087
7140
  }
7088
7141
  };
7089
- /* @conditional-compile-remove(rich-text-editor-image-upload) */
7090
- /**
7091
- * @internal
7092
- * Exported only for unit testing
7093
- */
7094
- const handleInlineImage = (event, onInsertInlineImage) => {
7095
- if (event.eventType === PluginEventType.BeforePaste && event.pasteType === 'normal' && onInsertInlineImage) {
7096
- event.fragment.querySelectorAll('img').forEach((image) => {
7097
- const clipboardImage = event.clipboardData.image;
7098
- const fileName = (clipboardImage === null || clipboardImage === void 0 ? void 0 : clipboardImage.name) ||
7099
- (clipboardImage === null || clipboardImage === void 0 ? void 0 : clipboardImage.type.replace('/', '.')) ||
7100
- image.getAttribute(_IMAGE_ATTRIBUTE_INLINE_IMAGE_FILE_NAME_KEY) ||
7101
- '';
7102
- // If the image src is an external url, call the onInsertInlineImage callback with the url.
7103
- let imageUrl = image.src;
7104
- if (image.src.startsWith('data:image/')) {
7105
- const blobImage = _base64ToBlob(image.src);
7106
- imageUrl = URL.createObjectURL(blobImage);
7107
- }
7108
- image.src = imageUrl;
7109
- image.alt = image.alt || 'image';
7110
- // Assign a unique id to the image element so Contosos can identify the image element.
7111
- // We also use it internally such as in getRemovedInlineImages to compare images in the content with previous images
7112
- image.id = uuid.v1();
7113
- image.dataset.imageFileName = fileName;
7114
- const imageAttributes = getInlineImageAttributes(image);
7115
- onInsertInlineImage(imageAttributes);
7116
- });
7117
- }
7118
- };
7119
7142
  /**
7120
7143
  * Update the scroll position of the editor after pasting content to ensure the content is visible.
7121
7144
  * @param event - The plugin event.
@@ -10719,7 +10742,7 @@ class _ErrorBoundary extends React.Component {
10719
10742
  // Copyright (c) Microsoft Corporation.
10720
10743
  // Licensed under the MIT License.
10721
10744
  /* @conditional-compile-remove(rich-text-editor) */
10722
- const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-DM13Kp5W.js'); }));
10745
+ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-BMVUY7HX.js'); }));
10723
10746
  /**
10724
10747
  * @private
10725
10748
  * Use this function to load RoosterJS dependencies early in the lifecycle.
@@ -10727,7 +10750,7 @@ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve()
10727
10750
  *
10728
10751
  * @conditional-compile-remove(rich-text-editor)
10729
10752
  */
10730
- const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-DM13Kp5W.js'); });
10753
+ const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-BMVUY7HX.js'); });
10731
10754
  /**
10732
10755
  * @private
10733
10756
  */
@@ -14436,74 +14459,6 @@ const convertContextualMenuItemsToDrawerMenuItemProps$1 = (contextualMenuProps,
14436
14459
  });
14437
14460
  };
14438
14461
 
14439
- // Copyright (c) Microsoft Corporation.
14440
- // Licensed under the MIT License.
14441
- /**
14442
- * @private
14443
- */
14444
- const screenSharingContainerStyle = react.mergeStyles({
14445
- width: '100%',
14446
- height: '100%'
14447
- });
14448
- /**
14449
- * @private
14450
- */
14451
- const screenSharingNotificationContainerStyle = (theme) => react.mergeStyles({
14452
- backgroundColor: 'inherit',
14453
- padding: '1rem',
14454
- maxWidth: '95%',
14455
- borderRadius: theme.effects.roundedCorner4,
14456
- color: theme.palette.neutralSecondary
14457
- });
14458
- /**
14459
- * @private
14460
- */
14461
- const screenSharingNotificationIconContainerStyle = react.mergeStyles({
14462
- height: '2rem',
14463
- lineHeight: 0
14464
- });
14465
- /**
14466
- * @private
14467
- */
14468
- const screenSharingNotificationIconStyle = (theme) => react.mergeStyles({
14469
- // svg is (20px x 20px) but path is only (16px x 12px), so need to scale at 2.5 to get 40px
14470
- transform: 'scale(2.5)',
14471
- color: theme.palette.neutralTertiary
14472
- });
14473
- /**
14474
- * @private
14475
- */
14476
- const screenSharingNotificationTextStyle = react.mergeStyles({
14477
- fontSize: '1rem',
14478
- // Text component will take body color by default (white in Dark Mode), so forcing it to be parent container color
14479
- color: 'inherit'
14480
- });
14481
-
14482
- // Copyright (c) Microsoft Corporation.
14483
- // Licensed under the MIT License.
14484
- /**
14485
- * A memoized version of local screen share component. React.memo is used for a performance
14486
- * boost by memoizing the same rendered component to avoid rerendering this when the parent component rerenders.
14487
- * https://reactjs.org/docs/react-api.html#reactmemo
14488
- */
14489
- const LocalScreenShare = React.memo((props) => {
14490
- const { localParticipant } = props;
14491
- const theme = useTheme();
14492
- const locale = useLocale$1();
14493
- if (!localParticipant || !localParticipant.isScreenSharingOn) {
14494
- return null;
14495
- }
14496
- const localScreenSharingNotification = (React.createElement(react.Stack, { horizontalAlign: "center", verticalAlign: "center", className: screenSharingContainerStyle },
14497
- React.createElement(react.Stack, { horizontalAlign: "center", verticalAlign: "center", className: screenSharingNotificationContainerStyle(theme), tokens: { childrenGap: '1rem' } },
14498
- React.createElement(react.Stack, { horizontal: true, verticalAlign: "center", className: screenSharingNotificationIconContainerStyle },
14499
- React.createElement(react.Icon, { iconName: "ControlButtonScreenShareStart", className: screenSharingNotificationIconStyle(theme) })),
14500
- React.createElement(react.Text, { className: screenSharingNotificationTextStyle, "aria-live": "polite" }, locale.strings.videoGallery.screenIsBeingSharedMessage))));
14501
- const displayName = !(localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName)
14502
- ? locale.strings.videoGallery.displayNamePlaceholder
14503
- : localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName;
14504
- return (React.createElement(VideoTile, { displayName: displayName, isMuted: localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.isMuted, onRenderPlaceholder: () => React.createElement(React.Fragment, null) }, localScreenSharingNotification));
14505
- });
14506
-
14507
14462
  // Copyright (c) Microsoft Corporation.
14508
14463
  // Licensed under the MIT License.
14509
14464
  /**
@@ -14551,11 +14506,46 @@ const RemoteScreenShare = React.memo((props) => {
14551
14506
  }
14552
14507
  return (React.createElement(VideoTile, { displayName: displayName, isMuted: isMuted, renderElement: renderElement ? (React.createElement(StreamMedia, { videoStreamElement: renderElement, loadingState: isReceiving === false ? 'loading' : 'none' })) : undefined, onRenderPlaceholder: () => React.createElement(LoadingSpinner, { loadingMessage: loadingMessage }), overlay: reactionResources && (React.createElement(MeetingReactionOverlay, { reactionResources: reactionResources, localParticipant: localParticipant, remoteParticipants: remoteParticipants, overlayMode: "screen-share" })) }));
14553
14508
  });
14509
+ /**
14510
+ * LoadingSpinner component for displaying a loading spinner.
14511
+ *
14512
+ * @param {string} props.loadingMessage - The loading message to display.
14513
+ * @returns {JSX.Element} The JSX element representing the loading spinner.
14514
+ */
14554
14515
  const LoadingSpinner = (props) => {
14555
14516
  return (React.createElement(react.Stack, { verticalAlign: "center", className: loadingStyle },
14556
14517
  React.createElement(react.Spinner, { label: props.loadingMessage, size: react.SpinnerSize.xSmall, "aria-live": 'assertive' })));
14557
14518
  };
14558
14519
 
14520
+ // Copyright (c) Microsoft Corporation.
14521
+ // Licensed under the MIT License.
14522
+ /**
14523
+ * A memoized version of local screen share component. React.memo is used for a performance
14524
+ * boost by memoizing the same rendered component to avoid rerendering this when the parent component rerenders.
14525
+ * https://reactjs.org/docs/react-api.html#reactmemo
14526
+ */
14527
+ const LocalScreenShare = React.memo((props) => {
14528
+ const { localParticipant, renderElement, isAvailable, onCreateLocalStreamView, onDisposeLocalScreenShareStreamView } = props;
14529
+ const locale = useLocale$1();
14530
+ if (!renderElement) {
14531
+ onCreateLocalStreamView && onCreateLocalStreamView();
14532
+ }
14533
+ React.useEffect(() => {
14534
+ return () => {
14535
+ // TODO: Isolate disposing behaviors for screenShare and videoStream
14536
+ onDisposeLocalScreenShareStreamView && onDisposeLocalScreenShareStreamView();
14537
+ };
14538
+ }, [onDisposeLocalScreenShareStreamView]);
14539
+ if (!localParticipant || !localParticipant.isScreenSharingOn) {
14540
+ return null;
14541
+ }
14542
+ const displayName = !(localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName)
14543
+ ? locale.strings.videoGallery.displayNamePlaceholder
14544
+ : localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName;
14545
+ const loadingMessage = locale.strings.videoGallery.localScreenShareLoadingMessage;
14546
+ return (React.createElement(VideoTile, { displayName: displayName, isMuted: localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.isMuted, renderElement: renderElement ? (React.createElement(StreamMedia, { videoStreamElement: renderElement, loadingState: isAvailable === false ? 'loading' : 'none' })) : undefined, onRenderPlaceholder: () => React.createElement(LoadingSpinner, { loadingMessage: loadingMessage }) }));
14547
+ });
14548
+
14559
14549
  // Copyright (c) Microsoft Corporation.
14560
14550
  // Licensed under the MIT License.
14561
14551
  /**
@@ -16756,8 +16746,8 @@ const MAX_PINNED_REMOTE_VIDEO_TILES$1 = 4;
16756
16746
  * @public
16757
16747
  */
16758
16748
  const VideoGallery = (props) => {
16759
- var _a, _b, _c;
16760
- const { localParticipant, remoteParticipants = [], localVideoViewOptions, remoteVideoViewOptions, dominantSpeakers, onRenderLocalVideoTile, onRenderRemoteVideoTile, onCreateLocalStreamView, onDisposeLocalStreamView, onCreateRemoteStreamView, onDisposeRemoteScreenShareStreamView, onDisposeRemoteVideoStreamView, styles, layout, onRenderAvatar, showMuteIndicator, maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEO_STREAMS, showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps, onPinParticipant: onPinParticipantHandler, onUnpinParticipant: onUnpinParticipantHandler, remoteVideoTileMenu = DEFAULT_REMOTE_VIDEO_TILE_MENU_OPTIONS, overflowGalleryPosition = 'horizontalBottom', localVideoTileSize = 'followDeviceOrientation', spotlightedParticipants, onStartLocalSpotlight, onStartRemoteSpotlight, onStopLocalSpotlight, onStopRemoteSpotlight, maxParticipantsToSpotlight, reactionResources, videoTilesOptions,
16749
+ var _a, _b, _c, _d, _e;
16750
+ const { localParticipant, remoteParticipants = [], localVideoViewOptions, remoteVideoViewOptions, dominantSpeakers, onRenderLocalVideoTile, onRenderRemoteVideoTile, onCreateLocalStreamView, onDisposeLocalStreamView, onCreateRemoteStreamView, onDisposeRemoteScreenShareStreamView, onDisposeLocalScreenShareStreamView, onDisposeRemoteVideoStreamView, styles, layout, onRenderAvatar, showMuteIndicator, maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEO_STREAMS, showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps, onPinParticipant: onPinParticipantHandler, onUnpinParticipant: onUnpinParticipantHandler, remoteVideoTileMenu = DEFAULT_REMOTE_VIDEO_TILE_MENU_OPTIONS, overflowGalleryPosition = 'horizontalBottom', localVideoTileSize = 'followDeviceOrientation', spotlightedParticipants, onStartLocalSpotlight, onStartRemoteSpotlight, onStopLocalSpotlight, onStopRemoteSpotlight, maxParticipantsToSpotlight, reactionResources, videoTilesOptions,
16761
16751
  /* @conditional-compile-remove(soft-mute) */
16762
16752
  onMuteParticipant } = props;
16763
16753
  const ids = useIdentifiers();
@@ -16926,8 +16916,8 @@ const VideoGallery = (props) => {
16926
16916
  videoTilesOptions
16927
16917
  ]);
16928
16918
  const screenShareParticipant = remoteParticipants.find((participant) => { var _a; return (_a = participant.screenShareStream) === null || _a === void 0 ? void 0 : _a.isAvailable; });
16929
- const localScreenShareStreamComponent = React.createElement(LocalScreenShare, { localParticipant: localParticipant });
16930
- const remoteScreenShareComponent = screenShareParticipant && (React.createElement(RemoteScreenShare, Object.assign({}, screenShareParticipant, { renderElement: (_a = screenShareParticipant.screenShareStream) === null || _a === void 0 ? void 0 : _a.renderElement, onCreateRemoteStreamView: onCreateRemoteStreamView, onDisposeRemoteStreamView: onDisposeRemoteScreenShareStreamView, isReceiving: (_b = screenShareParticipant.screenShareStream) === null || _b === void 0 ? void 0 : _b.isReceiving, participantVideoScalingMode: selectedScalingModeState[screenShareParticipant.userId], localParticipant: localParticipant, remoteParticipants: remoteParticipants, reactionResources: reactionResources, isPPTLive: !((_c = screenShareParticipant.screenShareStream) === null || _c === void 0 ? void 0 : _c.id) })));
16919
+ const localScreenShareStreamComponent = (React.createElement(LocalScreenShare, { localParticipant: localParticipant, renderElement: (_a = localParticipant.screenShareStream) === null || _a === void 0 ? void 0 : _a.renderElement, isAvailable: (_b = localParticipant.screenShareStream) === null || _b === void 0 ? void 0 : _b.isAvailable, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalScreenShareStreamView: onDisposeLocalScreenShareStreamView }));
16920
+ const remoteScreenShareComponent = screenShareParticipant && (React.createElement(RemoteScreenShare, Object.assign({}, screenShareParticipant, { renderElement: (_c = screenShareParticipant.screenShareStream) === null || _c === void 0 ? void 0 : _c.renderElement, onCreateRemoteStreamView: onCreateRemoteStreamView, onDisposeRemoteStreamView: onDisposeRemoteScreenShareStreamView, isReceiving: (_d = screenShareParticipant.screenShareStream) === null || _d === void 0 ? void 0 : _d.isReceiving, participantVideoScalingMode: selectedScalingModeState[screenShareParticipant.userId], localParticipant: localParticipant, remoteParticipants: remoteParticipants, reactionResources: reactionResources, isPPTLive: !((_e = screenShareParticipant.screenShareStream) === null || _e === void 0 ? void 0 : _e.id) })));
16931
16921
  const screenShareComponent = remoteScreenShareComponent
16932
16922
  ? remoteScreenShareComponent
16933
16923
  : localParticipant.isScreenSharingOn
@@ -22974,7 +22964,7 @@ const AttachmentDownloadErrorBar = (props) => {
22974
22964
  /**
22975
22965
  * Wrapper for RichTextSendBox component to allow us to use usePropsFor with richTextSendBox with lazy loading
22976
22966
  */
22977
- const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-8FsFMpKF.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
22967
+ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-UkjXSVQH.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
22978
22968
  /**
22979
22969
  * @private
22980
22970
  * Use this function to load RoosterJS dependencies early in the lifecycle.
@@ -22982,7 +22972,7 @@ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function
22982
22972
  *
22983
22973
  /* @conditional-compile-remove(rich-text-editor-composite-support)
22984
22974
  */
22985
- const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-8FsFMpKF.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper }));
22975
+ const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-UkjXSVQH.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper }));
22986
22976
  /**
22987
22977
  * @private
22988
22978
  */
@@ -23213,8 +23203,10 @@ const cancelInlineImageUpload = (imageAttributes, imageUploads, messageId, inlin
23213
23203
  id: imageUpload === null || imageUpload === void 0 ? void 0 : imageUpload.metadata.id,
23214
23204
  messageId
23215
23205
  });
23216
- if ((imageUpload === null || imageUpload === void 0 ? void 0 : imageUpload.metadata.progress) === 1) {
23217
- deleteInlineImageFromServer(imageUpload === null || imageUpload === void 0 ? void 0 : imageUpload.metadata.id, adapter);
23206
+ if ((imageUpload === null || imageUpload === void 0 ? void 0 : imageUpload.metadata.progress) === 1 && (imageUpload === null || imageUpload === void 0 ? void 0 : imageUpload.metadata.url)) {
23207
+ // The image id that we got back from the ChatSDK response is stored in the image src attribute,
23208
+ // while the metadata id is the internal image id that we assigned to the image when it was pasted in.
23209
+ deleteInlineImageFromServer(imageUpload === null || imageUpload === void 0 ? void 0 : imageUpload.metadata.url, adapter);
23218
23210
  }
23219
23211
  };
23220
23212
  /* @conditional-compile-remove(rich-text-editor-image-upload) */
@@ -24398,7 +24390,6 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
24398
24390
  /* @conditional-compile-remove(PSTN-calls) */
24399
24391
  const onToggleHold = () => __awaiter$D(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.state) === 'LocalHold' ? yield (call === null || call === void 0 ? void 0 : call.resume()) : yield (call === null || call === void 0 ? void 0 : call.hold()); });
24400
24392
  const onCreateLocalStreamView = (...args_1) => __awaiter$D(void 0, [...args_1], void 0, function* (options = { scalingMode: 'Crop', isMirrored: true }) {
24401
- var _d;
24402
24393
  if (!call || call.localVideoStreams.length === 0) {
24403
24394
  return;
24404
24395
  }
@@ -24407,11 +24398,20 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
24407
24398
  return;
24408
24399
  }
24409
24400
  const localStream = callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
24410
- if (!localStream) {
24411
- return;
24401
+ const localScreenSharingStream = callState.localVideoStreams.find((item) => item.mediaStreamType === 'ScreenSharing');
24402
+ let createViewResult = undefined;
24403
+ if (localStream && !localStream.view) {
24404
+ createViewResult = yield callClient.createView(call.id, undefined, localStream, options);
24405
+ }
24406
+ if (localScreenSharingStream && !localScreenSharingStream.view && call.isScreenSharingOn) {
24407
+ // Hardcoded `scalingMode` since it is highly unlikely that CONTOSO would ever want to use a different scaling mode for screenshare.
24408
+ // Using `Crop` would crop the contents of screenshare and `Stretch` would warp it.
24409
+ // `Fit` is the only mode that maintains the integrity of the screen being shared.
24410
+ createViewResult = yield callClient.createView(call.id, undefined, localScreenSharingStream, {
24411
+ scalingMode: 'Fit'
24412
+ });
24412
24413
  }
24413
- const { view } = (_d = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _d !== void 0 ? _d : {};
24414
- return view ? { view } : undefined;
24414
+ return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
24415
24415
  });
24416
24416
  const onCreateRemoteStreamView = (userId_1, ...args_2) => __awaiter$D(void 0, [userId_1, ...args_2], void 0, function* (userId, options = { scalingMode: 'Crop' }) {
24417
24417
  if (!call) {
@@ -24505,6 +24505,19 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
24505
24505
  callClient.disposeView(call.id, participant.identifier, screenShareStream);
24506
24506
  }
24507
24507
  });
24508
+ const onDisposeLocalScreenShareStreamView = () => __awaiter$D(void 0, void 0, void 0, function* () {
24509
+ if (!call) {
24510
+ return;
24511
+ }
24512
+ const callState = callClient.getState().calls[call.id];
24513
+ if (!callState) {
24514
+ throw new Error(`Call Not Found: ${call.id}`);
24515
+ }
24516
+ const screenShareStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'ScreenSharing');
24517
+ if (screenShareStream && screenShareStream.view) {
24518
+ callClient.disposeView(call.id, undefined, screenShareStream);
24519
+ }
24520
+ });
24508
24521
  const onDisposeLocalStreamView = () => __awaiter$D(void 0, void 0, void 0, function* () {
24509
24522
  // If the user is currently in a call, dispose of the local stream view attached to that call.
24510
24523
  const callState = call && callClient.getState().calls[call.id];
@@ -24540,7 +24553,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
24540
24553
  }
24541
24554
  });
24542
24555
  const onBlurVideoBackground = (backgroundBlurConfig) => __awaiter$D(void 0, void 0, void 0, function* () {
24543
- var _e;
24556
+ var _d;
24544
24557
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
24545
24558
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
24546
24559
  if (stream) {
@@ -24548,12 +24561,12 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
24548
24561
  throw new Error(`Video background effects dependency not resolved`);
24549
24562
  }
24550
24563
  const createEffect = (options === null || options === void 0 ? void 0 : options.onResolveVideoBackgroundEffectsDependency) &&
24551
- ((_e = (yield options.onResolveVideoBackgroundEffectsDependency())) === null || _e === void 0 ? void 0 : _e.createBackgroundBlurEffect);
24564
+ ((_d = (yield options.onResolveVideoBackgroundEffectsDependency())) === null || _d === void 0 ? void 0 : _d.createBackgroundBlurEffect);
24552
24565
  return createEffect && stream.feature(communicationCalling.Features.VideoEffects).startEffects(createEffect(backgroundBlurConfig));
24553
24566
  }
24554
24567
  });
24555
24568
  const onReplaceVideoBackground = (backgroundReplacementConfig) => __awaiter$D(void 0, void 0, void 0, function* () {
24556
- var _f;
24569
+ var _e;
24557
24570
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
24558
24571
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
24559
24572
  if (stream) {
@@ -24561,7 +24574,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
24561
24574
  throw new Error(`Video background effects dependency not resolved`);
24562
24575
  }
24563
24576
  const createEffect = (options === null || options === void 0 ? void 0 : options.onResolveVideoBackgroundEffectsDependency) &&
24564
- ((_f = (yield options.onResolveVideoBackgroundEffectsDependency())) === null || _f === void 0 ? void 0 : _f.createBackgroundReplacementEffect);
24577
+ ((_e = (yield options.onResolveVideoBackgroundEffectsDependency())) === null || _e === void 0 ? void 0 : _e.createBackgroundReplacementEffect);
24565
24578
  return (createEffect && stream.feature(communicationCalling.Features.VideoEffects).startEffects(createEffect(backgroundReplacementConfig)));
24566
24579
  }
24567
24580
  });
@@ -24649,6 +24662,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
24649
24662
  onDisposeRemoteStreamView,
24650
24663
  onDisposeLocalStreamView,
24651
24664
  onDisposeRemoteScreenShareStreamView,
24665
+ onDisposeLocalScreenShareStreamView,
24652
24666
  onDisposeRemoteVideoStreamView,
24653
24667
  onRaiseHand,
24654
24668
  onLowerHand,
@@ -29759,8 +29773,8 @@ const convertRemoteContentSharingStreamToVideoGalleryStream = (stream) => {
29759
29773
  };
29760
29774
  };
29761
29775
  /** @private */
29762
- const memoizeLocalParticipant = memoizeOne((identifier, displayName, isMuted, isScreenSharingOn, localVideoStream, role, raisedHand, reaction, localSpotlight, capabilities) => {
29763
- var _a, _b;
29776
+ const memoizeLocalParticipant = memoizeOne((identifier, displayName, isMuted, isScreenSharingOn, localVideoStream, localScreenSharingStream, role, raisedHand, reaction, localSpotlight, capabilities) => {
29777
+ var _a, _b, _c;
29764
29778
  return ({
29765
29779
  userId: identifier,
29766
29780
  displayName: displayName !== null && displayName !== void 0 ? displayName : '',
@@ -29771,6 +29785,10 @@ const memoizeLocalParticipant = memoizeOne((identifier, displayName, isMuted, is
29771
29785
  isMirrored: (_a = localVideoStream === null || localVideoStream === void 0 ? void 0 : localVideoStream.view) === null || _a === void 0 ? void 0 : _a.isMirrored,
29772
29786
  renderElement: (_b = localVideoStream === null || localVideoStream === void 0 ? void 0 : localVideoStream.view) === null || _b === void 0 ? void 0 : _b.target
29773
29787
  },
29788
+ screenShareStream: {
29789
+ isAvailable: !!localScreenSharingStream,
29790
+ renderElement: (_c = localScreenSharingStream === null || localScreenSharingStream === void 0 ? void 0 : localScreenSharingStream.view) === null || _c === void 0 ? void 0 : _c.target
29791
+ },
29774
29792
  role,
29775
29793
  raisedHand: raisedHand,
29776
29794
  reaction,
@@ -29828,6 +29846,7 @@ isHideAttendeeNamesEnabled, localParticipantReaction, spotlightCallFeature, capa
29828
29846
  ? remoteParticipants[screenShareRemoteParticipantId]
29829
29847
  : undefined;
29830
29848
  const localVideoStream = localVideoStreams === null || localVideoStreams === void 0 ? void 0 : localVideoStreams.find((i) => i.mediaStreamType === 'Video');
29849
+ const localScreenSharingStream = localVideoStreams === null || localVideoStreams === void 0 ? void 0 : localVideoStreams.find((i) => i.mediaStreamType === 'ScreenSharing');
29831
29850
  const dominantSpeakerIds = _dominantSpeakersWithFlatId(dominantSpeakers);
29832
29851
  dominantSpeakerIds === null || dominantSpeakerIds === void 0 ? void 0 : dominantSpeakerIds.forEach((speaker, idx) => (idx));
29833
29852
  const noRemoteParticipants = [];
@@ -29837,7 +29856,7 @@ isHideAttendeeNamesEnabled, localParticipantReaction, spotlightCallFeature, capa
29837
29856
  screenShareParticipant: screenShareRemoteParticipant
29838
29857
  ? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.state, screenShareRemoteParticipant.displayName, screenShareRemoteParticipant.raisedHand, screenShareRemoteParticipant.contentSharingStream, undefined, screenShareRemoteParticipant.spotlight)
29839
29858
  : undefined,
29840
- localParticipant: memoizeLocalParticipant(identifier, displayName, isMuted, isScreenSharingOn, localVideoStream, role, raisedHand, localParticipantReactionState, spotlightCallFeature === null || spotlightCallFeature === void 0 ? void 0 : spotlightCallFeature.localParticipantSpotlight, capabilities),
29859
+ localParticipant: memoizeLocalParticipant(identifier, displayName, isMuted, isScreenSharingOn, localVideoStream, localScreenSharingStream, role, raisedHand, localParticipantReactionState, spotlightCallFeature === null || spotlightCallFeature === void 0 ? void 0 : spotlightCallFeature.localParticipantSpotlight, capabilities),
29841
29860
  remoteParticipants: _videoGalleryRemoteParticipantsMemo(updateUserDisplayNamesTrampoline$2(remoteParticipants ? Object.values(remoteParticipants) : noRemoteParticipants),
29842
29861
  /* @conditional-compile-remove(hide-attendee-name) */
29843
29862
  isHideAttendeeNamesEnabled,
@@ -31148,6 +31167,9 @@ const createCompositeHandlers = memoizeOne((adapter, capabilities) => {
31148
31167
  onDisposeRemoteScreenShareStreamView: (userId) => __awaiter$o(void 0, void 0, void 0, function* () {
31149
31168
  return adapter.disposeScreenShareStreamView(userId);
31150
31169
  }),
31170
+ onDisposeLocalScreenShareStreamView: () => __awaiter$o(void 0, void 0, void 0, function* () {
31171
+ return adapter.disposeScreenShareStreamView('');
31172
+ }),
31151
31173
  onDisposeRemoteVideoStreamView: (userId) => __awaiter$o(void 0, void 0, void 0, function* () {
31152
31174
  return adapter.disposeRemoteVideoStreamView(userId);
31153
31175
  }),
@@ -40047,7 +40069,12 @@ class AzureCommunicationCallAdapter {
40047
40069
  }
40048
40070
  disposeScreenShareStreamView(remoteUserId) {
40049
40071
  return __awaiter$9(this, void 0, void 0, function* () {
40050
- yield this.handlers.onDisposeRemoteScreenShareStreamView(remoteUserId);
40072
+ if (remoteUserId !== '') {
40073
+ yield this.handlers.onDisposeRemoteScreenShareStreamView(remoteUserId);
40074
+ }
40075
+ else {
40076
+ yield this.handlers.onDisposeLocalScreenShareStreamView();
40077
+ }
40051
40078
  });
40052
40079
  }
40053
40080
  disposeRemoteVideoStreamView(remoteUserId) {
@@ -43590,4 +43617,4 @@ exports.useTeamsCall = useTeamsCall;
43590
43617
  exports.useTeamsCallAdapter = useTeamsCallAdapter;
43591
43618
  exports.useTeamsCallAgent = useTeamsCallAgent;
43592
43619
  exports.useTheme = useTheme;
43593
- //# sourceMappingURL=index-D84PSTZV.js.map
43620
+ //# sourceMappingURL=index-D46R0M5v.js.map