@azure/communication-react 1.14.1-alpha-202403290012 → 1.14.1-alpha-202404020012

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 (150) hide show
  1. package/dist/communication-react.d.ts +111 -204
  2. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CH6WvEGZ.js → RichTextSendBoxWrapper-BTyywbnH.js} +2 -2
  3. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CH6WvEGZ.js.map → RichTextSendBoxWrapper-BTyywbnH.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{index-qxnuqL7s.js → index-Bj9ORqhl.js} +920 -779
  5. package/dist/dist-cjs/communication-react/index-Bj9ORqhl.js.map +1 -0
  6. package/dist/dist-cjs/communication-react/index.js +2 -1
  7. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  8. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  10. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +4 -4
  11. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  12. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +4 -0
  13. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +6 -1
  14. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  15. package/dist/dist-esm/calling-stateful-client/src/ReactionSubscriber.d.ts +1 -1
  16. package/dist/dist-esm/calling-stateful-client/src/ReactionSubscriber.js +2 -2
  17. package/dist/dist-esm/calling-stateful-client/src/ReactionSubscriber.js.map +1 -1
  18. package/dist/dist-esm/communication-react/src/index.d.ts +2 -2
  19. package/dist/dist-esm/communication-react/src/index.js +2 -0
  20. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/AttachmentCard.d.ts +0 -4
  22. package/dist/dist-esm/react-components/src/components/AttachmentCard.js +4 -1
  23. package/dist/dist-esm/react-components/src/components/AttachmentCard.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.d.ts +5 -36
  25. package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.js +15 -24
  26. package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js +4 -8
  28. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/EndCallButton.d.ts +10 -1
  30. package/dist/dist-esm/react-components/src/components/EndCallButton.js +93 -51
  31. package/dist/dist-esm/react-components/src/components/EndCallButton.js.map +1 -1
  32. package/dist/dist-esm/react-components/src/components/ReactionButton.d.ts +2 -2
  33. package/dist/dist-esm/react-components/src/components/ReactionButton.js +8 -5
  34. package/dist/dist-esm/react-components/src/components/ReactionButton.js.map +1 -1
  35. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.d.ts +1 -1
  36. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js +3 -3
  37. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js.map +1 -1
  38. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +6 -6
  39. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +23 -23
  40. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
  41. package/dist/dist-esm/react-components/src/components/SendBox.d.ts +5 -5
  42. package/dist/dist-esm/react-components/src/components/SendBox.js +16 -16
  43. package/dist/dist-esm/react-components/src/components/SendBox.js.map +1 -1
  44. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.d.ts +8 -0
  45. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js +1 -1
  46. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/VideoGallery/ParticipantVideoTileOverlay.js +8 -4
  48. package/dist/dist-esm/react-components/src/components/VideoGallery/ParticipantVideoTileOverlay.js.map +1 -1
  49. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteContentShareReactionOverlay.js +4 -4
  50. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteContentShareReactionOverlay.js.map +1 -1
  51. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.d.ts +4 -0
  52. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +22 -1
  53. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
  54. package/dist/dist-esm/react-components/src/components/index.d.ts +1 -2
  55. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  56. package/dist/dist-esm/react-components/src/components/styles/ReactionButton.styles.d.ts +1 -1
  57. package/dist/dist-esm/react-components/src/components/styles/ReactionButton.styles.js +3 -2
  58. package/dist/dist-esm/react-components/src/components/styles/ReactionButton.styles.js.map +1 -1
  59. package/dist/dist-esm/react-components/src/components/styles/ReactionOverlay.style.d.ts +2 -1
  60. package/dist/dist-esm/react-components/src/components/styles/ReactionOverlay.style.js +10 -12
  61. package/dist/dist-esm/react-components/src/components/styles/ReactionOverlay.style.js.map +1 -1
  62. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.d.ts +1 -0
  63. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +3 -1
  64. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js.map +1 -1
  65. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.d.ts +3 -3
  66. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +7 -7
  67. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
  68. package/dist/dist-esm/react-components/src/components/utils/common.d.ts +1 -1
  69. package/dist/dist-esm/react-components/src/components/utils/common.js +1 -1
  70. package/dist/dist-esm/react-components/src/components/utils/common.js.map +1 -1
  71. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  72. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +3 -1
  73. package/dist/dist-esm/react-components/src/types/Attachment.d.ts +15 -88
  74. package/dist/dist-esm/react-components/src/types/Attachment.js.map +1 -1
  75. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +24 -0
  76. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  77. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/Prompt.js +0 -7
  78. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/Prompt.js.map +1 -1
  79. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.d.ts +2 -0
  80. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js +66 -1
  81. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js.map +1 -1
  82. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +2 -2
  83. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +3 -3
  84. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  85. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +8 -8
  86. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +21 -21
  87. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  88. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +8 -8
  89. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  90. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.d.ts +8 -8
  91. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js +15 -15
  92. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js.map +1 -1
  93. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.d.ts +3 -3
  94. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js +2 -2
  95. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
  96. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.d.ts +2 -2
  97. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js +1 -1
  98. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js.map +1 -1
  99. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.d.ts +2 -33
  100. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +23 -15
  101. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  102. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationAttachmentUploadAdapter.d.ts +47 -0
  103. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationAttachmentUploadAdapter.js +179 -0
  104. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationAttachmentUploadAdapter.js.map +1 -0
  105. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +9 -9
  106. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +29 -29
  107. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
  108. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.d.ts +4 -4
  109. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.js.map +1 -1
  110. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapterProvider.d.ts +2 -2
  111. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapterProvider.js +8 -8
  112. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapterProvider.js.map +1 -1
  113. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/{FileUpload.d.ts → AttachmentUpload.d.ts} +10 -10
  114. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/{FileUpload.js → AttachmentUpload.js} +12 -12
  115. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js.map +1 -0
  116. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.d.ts +38 -0
  117. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/{FileUploadButton.js → AttachmentUploadButton.js} +11 -9
  118. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.js.map +1 -0
  119. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.d.ts +3 -3
  120. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.js +2 -2
  121. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.js.map +1 -1
  122. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.d.ts +2 -3
  123. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.js.map +1 -1
  124. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/attachmentUploadsSelector.d.ts +29 -0
  125. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/attachmentUploadsSelector.js +12 -0
  126. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/attachmentUploadsSelector.js.map +1 -0
  127. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.d.ts +2 -2
  128. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js +2 -2
  129. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js.map +1 -1
  130. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +24 -8
  131. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  132. package/dist/dist-esm/react-composites/src/composites/common/SendBox.js +5 -5
  133. package/dist/dist-esm/react-composites/src/composites/common/SendBox.js.map +1 -1
  134. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.d.ts +7 -1
  135. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map +1 -1
  136. package/dist/dist-esm/react-composites/src/composites/common/utils.d.ts +4 -0
  137. package/dist/dist-esm/react-composites/src/composites/common/utils.js +6 -0
  138. package/dist/dist-esm/react-composites/src/composites/common/utils.js.map +1 -1
  139. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +6 -0
  140. package/package.json +7 -7
  141. package/dist/dist-cjs/communication-react/index-qxnuqL7s.js.map +0 -1
  142. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationFileUploadAdapter.d.ts +0 -48
  143. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationFileUploadAdapter.js +0 -160
  144. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationFileUploadAdapter.js.map +0 -1
  145. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUpload.js.map +0 -1
  146. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.d.ts +0 -36
  147. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.js.map +0 -1
  148. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/fileUploadsSelector.d.ts +0 -27
  149. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/fileUploadsSelector.js +0 -12
  150. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/fileUploadsSelector.js.map +0 -1
@@ -176,7 +176,7 @@ function getDefaultExportFromCjs (x) {
176
176
  // Copyright (c) Microsoft Corporation.
177
177
  // Licensed under the MIT License.
178
178
  // GENERATED FILE. DO NOT EDIT MANUALLY.
179
- var telemetryVersion = '1.14.1-alpha-202403290012';
179
+ var telemetryVersion = '1.14.1-alpha-202404020012';
180
180
 
181
181
 
182
182
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -531,7 +531,7 @@ const getSupportedSpokenLanguages = (state, props) => {
531
531
 
532
532
  // Copyright (c) Microsoft Corporation.
533
533
  // Licensed under the MIT License.
534
- var __awaiter$R = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
534
+ var __awaiter$S = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
535
535
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
536
536
  return new (P || (P = Promise))(function (resolve, reject) {
537
537
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -570,7 +570,7 @@ const _isPreviewOn = (deviceManager) => {
570
570
  *
571
571
  * @private
572
572
  */
573
- const disposeAllLocalPreviewViews = (callClient) => __awaiter$R(void 0, void 0, void 0, function* () {
573
+ const disposeAllLocalPreviewViews = (callClient) => __awaiter$S(void 0, void 0, void 0, function* () {
574
574
  const unparentedViews = callClient.getState().deviceManager.unparentedViews;
575
575
  for (const view of unparentedViews) {
576
576
  yield callClient.disposeView(undefined, undefined, view);
@@ -777,7 +777,7 @@ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (c
777
777
 
778
778
  // Copyright (c) Microsoft Corporation.
779
779
  // Licensed under the MIT License.
780
- var __awaiter$Q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
780
+ var __awaiter$R = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
781
781
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
782
782
  return new (P || (P = Promise))(function (resolve, reject) {
783
783
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -798,7 +798,7 @@ const areStreamsEqual = (prevStream, newStream) => {
798
798
  * @private
799
799
  */
800
800
  const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager, call, options) => {
801
- const onStartLocalVideo = () => __awaiter$Q(void 0, void 0, void 0, function* () {
801
+ const onStartLocalVideo = () => __awaiter$R(void 0, void 0, void 0, function* () {
802
802
  // Before the call object creates a stream, dispose of any local preview streams.
803
803
  // @TODO: is there any way to parent the unparented view to the call object instead
804
804
  // of disposing and creating a new stream?
@@ -818,7 +818,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
818
818
  yield call.startVideo(stream);
819
819
  }
820
820
  });
821
- const onStopLocalVideo = (stream) => __awaiter$Q(void 0, void 0, void 0, function* () {
821
+ const onStopLocalVideo = (stream) => __awaiter$R(void 0, void 0, void 0, function* () {
822
822
  const callId = call === null || call === void 0 ? void 0 : call.id;
823
823
  if (!callId) {
824
824
  return;
@@ -827,7 +827,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
827
827
  yield call.stopVideo(stream);
828
828
  }
829
829
  });
830
- const onToggleCamera = (options) => __awaiter$Q(void 0, void 0, void 0, function* () {
830
+ const onToggleCamera = (options) => __awaiter$R(void 0, void 0, void 0, function* () {
831
831
  const previewOn = _isPreviewOn(callClient.getState().deviceManager);
832
832
  // the disposal of the unparented views is to workaround: https://skype.visualstudio.com/SPOOL/_workitems/edit/3030558.
833
833
  // The root cause of the issue is caused by never transitioning the unparented view to the
@@ -884,19 +884,19 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
884
884
  }
885
885
  }
886
886
  });
887
- const onSelectMicrophone = (device) => __awaiter$Q(void 0, void 0, void 0, function* () {
887
+ const onSelectMicrophone = (device) => __awaiter$R(void 0, void 0, void 0, function* () {
888
888
  if (!deviceManager) {
889
889
  return;
890
890
  }
891
891
  return deviceManager.selectMicrophone(device);
892
892
  });
893
- const onSelectSpeaker = (device) => __awaiter$Q(void 0, void 0, void 0, function* () {
893
+ const onSelectSpeaker = (device) => __awaiter$R(void 0, void 0, void 0, function* () {
894
894
  if (!deviceManager) {
895
895
  return;
896
896
  }
897
897
  return deviceManager.selectSpeaker(device);
898
898
  });
899
- const onSelectCamera = (device, options) => __awaiter$Q(void 0, void 0, void 0, function* () {
899
+ const onSelectCamera = (device, options) => __awaiter$R(void 0, void 0, void 0, function* () {
900
900
  if (!deviceManager) {
901
901
  return;
902
902
  }
@@ -926,9 +926,9 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
926
926
  }, options);
927
927
  }
928
928
  });
929
- const onRaiseHand = () => __awaiter$Q(void 0, void 0, void 0, function* () { var _a; return yield ((_a = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _a === void 0 ? void 0 : _a.raiseHand()); });
930
- const onLowerHand = () => __awaiter$Q(void 0, void 0, void 0, function* () { var _b; return yield ((_b = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _b === void 0 ? void 0 : _b.lowerHand()); });
931
- const onToggleRaiseHand = () => __awaiter$Q(void 0, void 0, void 0, function* () {
929
+ const onRaiseHand = () => __awaiter$R(void 0, void 0, void 0, function* () { var _a; return yield ((_a = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _a === void 0 ? void 0 : _a.raiseHand()); });
930
+ const onLowerHand = () => __awaiter$R(void 0, void 0, void 0, function* () { var _b; return yield ((_b = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _b === void 0 ? void 0 : _b.lowerHand()); });
931
+ const onToggleRaiseHand = () => __awaiter$R(void 0, void 0, void 0, function* () {
932
932
  const raiseHandFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand);
933
933
  const localUserId = callClient.getState().userId;
934
934
  const isLocalRaisedHand = raiseHandFeature === null || raiseHandFeature === void 0 ? void 0 : raiseHandFeature.getRaisedHands().find((publishedState) => toFlatCommunicationIdentifier(publishedState.identifier) === toFlatCommunicationIdentifier(localUserId));
@@ -940,7 +940,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
940
940
  }
941
941
  });
942
942
  /* @conditional-compile-remove(reaction) */
943
- const onReactionClick = (reaction) => __awaiter$Q(void 0, void 0, void 0, function* () {
943
+ const onReactionClick = (reaction) => __awaiter$R(void 0, void 0, void 0, function* () {
944
944
  var _c;
945
945
  if (reaction === 'like' ||
946
946
  reaction === 'applause' ||
@@ -954,19 +954,19 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
954
954
  }
955
955
  return;
956
956
  });
957
- const onToggleMicrophone = () => __awaiter$Q(void 0, void 0, void 0, function* () {
957
+ const onToggleMicrophone = () => __awaiter$R(void 0, void 0, void 0, function* () {
958
958
  if (!call || !(_isInCall(call.state) || _isInLobbyOrConnecting(call.state))) {
959
959
  throw new Error(`Please invoke onToggleMicrophone after call is started`);
960
960
  }
961
961
  return call.isMuted ? yield call.unmute() : yield call.mute();
962
962
  });
963
- const onStartScreenShare = () => __awaiter$Q(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
964
- const onStopScreenShare = () => __awaiter$Q(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
965
- const onToggleScreenShare = () => __awaiter$Q(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
966
- const onHangUp = (forEveryone) => __awaiter$Q(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
963
+ const onStartScreenShare = () => __awaiter$R(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
964
+ const onStopScreenShare = () => __awaiter$R(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
965
+ const onToggleScreenShare = () => __awaiter$R(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
966
+ const onHangUp = (forEveryone) => __awaiter$R(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
967
967
  /* @conditional-compile-remove(PSTN-calls) */
968
- const onToggleHold = () => __awaiter$Q(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()); });
969
- const onCreateLocalStreamView = (...args_1) => __awaiter$Q(void 0, [...args_1], void 0, function* (options = { scalingMode: 'Crop', isMirrored: true }) {
968
+ const onToggleHold = () => __awaiter$R(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()); });
969
+ const onCreateLocalStreamView = (...args_1) => __awaiter$R(void 0, [...args_1], void 0, function* (options = { scalingMode: 'Crop', isMirrored: true }) {
970
970
  var _d;
971
971
  if (!call || call.localVideoStreams.length === 0) {
972
972
  return;
@@ -982,7 +982,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
982
982
  const { view } = (_d = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _d !== void 0 ? _d : {};
983
983
  return view ? { view } : undefined;
984
984
  });
985
- const onCreateRemoteStreamView = (userId_1, ...args_2) => __awaiter$Q(void 0, [userId_1, ...args_2], void 0, function* (userId, options = { scalingMode: 'Crop' }) {
985
+ const onCreateRemoteStreamView = (userId_1, ...args_2) => __awaiter$R(void 0, [userId_1, ...args_2], void 0, function* (userId, options = { scalingMode: 'Crop' }) {
986
986
  if (!call) {
987
987
  return;
988
988
  }
@@ -1019,7 +1019,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1019
1019
  }
1020
1020
  return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
1021
1021
  });
1022
- const onDisposeRemoteStreamView = (userId) => __awaiter$Q(void 0, void 0, void 0, function* () {
1022
+ const onDisposeRemoteStreamView = (userId) => __awaiter$R(void 0, void 0, void 0, function* () {
1023
1023
  if (!call) {
1024
1024
  return;
1025
1025
  }
@@ -1040,7 +1040,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1040
1040
  callClient.disposeView(call.id, participant.identifier, screenShareStream);
1041
1041
  }
1042
1042
  });
1043
- const onDisposeRemoteVideoStreamView = (userId) => __awaiter$Q(void 0, void 0, void 0, function* () {
1043
+ const onDisposeRemoteVideoStreamView = (userId) => __awaiter$R(void 0, void 0, void 0, function* () {
1044
1044
  if (!call) {
1045
1045
  return;
1046
1046
  }
@@ -1057,7 +1057,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1057
1057
  callClient.disposeView(call.id, participant.identifier, remoteVideoStream);
1058
1058
  }
1059
1059
  });
1060
- const onDisposeRemoteScreenShareStreamView = (userId) => __awaiter$Q(void 0, void 0, void 0, function* () {
1060
+ const onDisposeRemoteScreenShareStreamView = (userId) => __awaiter$R(void 0, void 0, void 0, function* () {
1061
1061
  if (!call) {
1062
1062
  return;
1063
1063
  }
@@ -1074,7 +1074,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1074
1074
  callClient.disposeView(call.id, participant.identifier, screenShareStream);
1075
1075
  }
1076
1076
  });
1077
- const onDisposeLocalStreamView = () => __awaiter$Q(void 0, void 0, void 0, function* () {
1077
+ const onDisposeLocalStreamView = () => __awaiter$R(void 0, void 0, void 0, function* () {
1078
1078
  // If the user is currently in a call, dispose of the local stream view attached to that call.
1079
1079
  const callState = call && callClient.getState().calls[call.id];
1080
1080
  const localStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
@@ -1086,17 +1086,17 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1086
1086
  // TODO: we need to remember which LocalVideoStream was used for LocalPreview and dispose that one.
1087
1087
  yield disposeAllLocalPreviewViews(callClient);
1088
1088
  });
1089
- const onSendDtmfTone = (dtmfTone) => __awaiter$Q(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
1089
+ const onSendDtmfTone = (dtmfTone) => __awaiter$R(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
1090
1090
  const notImplemented = () => {
1091
1091
  throw new Error('Not implemented, cannot call a method from an abstract object');
1092
1092
  };
1093
1093
  /* @conditional-compile-remove(call-readiness) */
1094
- const askDevicePermission = (constrain) => __awaiter$Q(void 0, void 0, void 0, function* () {
1094
+ const askDevicePermission = (constrain) => __awaiter$R(void 0, void 0, void 0, function* () {
1095
1095
  if (deviceManager) {
1096
1096
  yield (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.askDevicePermission(constrain));
1097
1097
  }
1098
1098
  });
1099
- const onRemoveVideoBackgroundEffects = () => __awaiter$Q(void 0, void 0, void 0, function* () {
1099
+ const onRemoveVideoBackgroundEffects = () => __awaiter$R(void 0, void 0, void 0, function* () {
1100
1100
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
1101
1101
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
1102
1102
  if (stream) {
@@ -1108,7 +1108,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1108
1108
  }
1109
1109
  }
1110
1110
  });
1111
- const onBlurVideoBackground = (backgroundBlurConfig) => __awaiter$Q(void 0, void 0, void 0, function* () {
1111
+ const onBlurVideoBackground = (backgroundBlurConfig) => __awaiter$R(void 0, void 0, void 0, function* () {
1112
1112
  var _e;
1113
1113
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
1114
1114
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
@@ -1121,7 +1121,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1121
1121
  return createEffect && stream.feature(communicationCalling.Features.VideoEffects).startEffects(createEffect(backgroundBlurConfig));
1122
1122
  }
1123
1123
  });
1124
- const onReplaceVideoBackground = (backgroundReplacementConfig) => __awaiter$Q(void 0, void 0, void 0, function* () {
1124
+ const onReplaceVideoBackground = (backgroundReplacementConfig) => __awaiter$R(void 0, void 0, void 0, function* () {
1125
1125
  var _f;
1126
1126
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
1127
1127
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
@@ -1135,39 +1135,39 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1135
1135
  }
1136
1136
  });
1137
1137
  /* @conditional-compile-remove(close-captions) */
1138
- const onStartCaptions = (options) => __awaiter$Q(void 0, void 0, void 0, function* () {
1138
+ const onStartCaptions = (options) => __awaiter$R(void 0, void 0, void 0, function* () {
1139
1139
  const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
1140
1140
  yield (captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.startCaptions(options));
1141
1141
  });
1142
1142
  /* @conditional-compile-remove(close-captions) */
1143
- const onStopCaptions = () => __awaiter$Q(void 0, void 0, void 0, function* () {
1143
+ const onStopCaptions = () => __awaiter$R(void 0, void 0, void 0, function* () {
1144
1144
  const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
1145
1145
  yield (captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.stopCaptions());
1146
1146
  });
1147
1147
  /* @conditional-compile-remove(close-captions) */
1148
- const onSetSpokenLanguage = (language) => __awaiter$Q(void 0, void 0, void 0, function* () {
1148
+ const onSetSpokenLanguage = (language) => __awaiter$R(void 0, void 0, void 0, function* () {
1149
1149
  const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
1150
1150
  yield (captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.setSpokenLanguage(language));
1151
1151
  });
1152
1152
  /* @conditional-compile-remove(close-captions) */
1153
- const onSetCaptionLanguage = (language) => __awaiter$Q(void 0, void 0, void 0, function* () {
1153
+ const onSetCaptionLanguage = (language) => __awaiter$R(void 0, void 0, void 0, function* () {
1154
1154
  const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
1155
1155
  yield captionsFeature.setCaptionLanguage(language);
1156
1156
  });
1157
1157
  /* @conditional-compile-remove(end-of-call-survey) */
1158
- const onSubmitSurvey = (survey) => __awaiter$Q(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.CallSurvey).submitSurvey(survey)); });
1158
+ const onSubmitSurvey = (survey) => __awaiter$R(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.CallSurvey).submitSurvey(survey)); });
1159
1159
  /* @conditional-compile-remove(spotlight) */
1160
- const onStartSpotlight = (userIds) => __awaiter$Q(void 0, void 0, void 0, function* () {
1160
+ const onStartSpotlight = (userIds) => __awaiter$R(void 0, void 0, void 0, function* () {
1161
1161
  const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1162
1162
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight(participants));
1163
1163
  });
1164
1164
  /* @conditional-compile-remove(spotlight) */
1165
- const onStopSpotlight = (userIds) => __awaiter$Q(void 0, void 0, void 0, function* () {
1165
+ const onStopSpotlight = (userIds) => __awaiter$R(void 0, void 0, void 0, function* () {
1166
1166
  const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1167
1167
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight(participants));
1168
1168
  });
1169
1169
  /* @conditional-compile-remove(spotlight) */
1170
- const onStopAllSpotlight = () => __awaiter$Q(void 0, void 0, void 0, function* () {
1170
+ const onStopAllSpotlight = () => __awaiter$R(void 0, void 0, void 0, function* () {
1171
1171
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopAllSpotlight());
1172
1172
  });
1173
1173
  /* @conditional-compile-remove(spotlight) */
@@ -1176,24 +1176,24 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1176
1176
  const canRemoveSpotlight = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Capabilities).capabilities.removeParticipantsSpotlight.isPresent;
1177
1177
  /* @conditional-compile-remove(spotlight) */
1178
1178
  const onStartLocalSpotlight = canStartSpotlight
1179
- ? () => __awaiter$Q(void 0, void 0, void 0, function* () {
1179
+ ? () => __awaiter$R(void 0, void 0, void 0, function* () {
1180
1180
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight());
1181
1181
  })
1182
1182
  : undefined;
1183
1183
  /* @conditional-compile-remove(spotlight) */
1184
- const onStopLocalSpotlight = () => __awaiter$Q(void 0, void 0, void 0, function* () {
1184
+ const onStopLocalSpotlight = () => __awaiter$R(void 0, void 0, void 0, function* () {
1185
1185
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight());
1186
1186
  });
1187
1187
  /* @conditional-compile-remove(spotlight) */
1188
1188
  const onStartRemoteSpotlight = canStartSpotlight
1189
- ? (userIds) => __awaiter$Q(void 0, void 0, void 0, function* () {
1189
+ ? (userIds) => __awaiter$R(void 0, void 0, void 0, function* () {
1190
1190
  const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1191
1191
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight(participants));
1192
1192
  })
1193
1193
  : undefined;
1194
1194
  /* @conditional-compile-remove(spotlight) */
1195
1195
  const onStopRemoteSpotlight = canRemoveSpotlight
1196
- ? (userIds) => __awaiter$Q(void 0, void 0, void 0, function* () {
1196
+ ? (userIds) => __awaiter$R(void 0, void 0, void 0, function* () {
1197
1197
  const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1198
1198
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight(participants));
1199
1199
  })
@@ -1261,7 +1261,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1261
1261
 
1262
1262
  // Copyright (c) Microsoft Corporation.
1263
1263
  // Licensed under the MIT License.
1264
- var __awaiter$P = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1264
+ var __awaiter$Q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1265
1265
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1266
1266
  return new (P || (P = Promise))(function (resolve, reject) {
1267
1267
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1287,7 +1287,7 @@ const createDefaultCallingHandlers = memoizeOne((...args) => {
1287
1287
  return callAgent === null || callAgent === void 0 ? void 0 : callAgent.startCall(participants, options);
1288
1288
  },
1289
1289
  /* @conditional-compile-remove(PSTN-calls) */
1290
- onAddParticipant: (userId, options) => __awaiter$P(void 0, void 0, void 0, function* () {
1290
+ onAddParticipant: (userId, options) => __awaiter$Q(void 0, void 0, void 0, function* () {
1291
1291
  const participant = _toCommunicationIdentifier(userId);
1292
1292
  if (communicationCommon.isPhoneNumberIdentifier(participant)) {
1293
1293
  call === null || call === void 0 ? void 0 : call.addParticipant(participant, options);
@@ -1295,7 +1295,7 @@ const createDefaultCallingHandlers = memoizeOne((...args) => {
1295
1295
  else if (communicationCommon.isCommunicationUserIdentifier(participant) || communicationCommon.isMicrosoftTeamsUserIdentifier(participant)) {
1296
1296
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
1297
1297
  }
1298
- }), onRemoveParticipant: (userId) => __awaiter$P(void 0, void 0, void 0, function* () {
1298
+ }), onRemoveParticipant: (userId) => __awaiter$Q(void 0, void 0, void 0, function* () {
1299
1299
  const participant = _toCommunicationIdentifier(userId);
1300
1300
  yield (call === null || call === void 0 ? void 0 : call.removeParticipant(participant));
1301
1301
  }) });
@@ -1303,7 +1303,7 @@ const createDefaultCallingHandlers = memoizeOne((...args) => {
1303
1303
 
1304
1304
  // Copyright (c) Microsoft Corporation.
1305
1305
  // Licensed under the MIT License.
1306
- var __awaiter$O = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1306
+ var __awaiter$P = (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); } }
@@ -1335,7 +1335,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne((callClient, callAgent, dev
1335
1335
  },
1336
1336
  /* @conditional-compile-remove(teams-identity-support) */
1337
1337
  /* @conditional-compile-remove(PSTN-calls) */
1338
- onAddParticipant: (userId, options) => __awaiter$O(void 0, void 0, void 0, function* () {
1338
+ onAddParticipant: (userId, options) => __awaiter$P(void 0, void 0, void 0, function* () {
1339
1339
  const participant = _toCommunicationIdentifier(userId);
1340
1340
  /* @conditional-compile-remove(teams-identity-support) */
1341
1341
  const threadId = options === null || options === void 0 ? void 0 : options.threadId;
@@ -1351,7 +1351,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne((callClient, callAgent, dev
1351
1351
  }
1352
1352
  /* @conditional-compile-remove(teams-identity-support) */
1353
1353
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
1354
- }), onRemoveParticipant: (userId) => __awaiter$O(void 0, void 0, void 0, function* () {
1354
+ }), onRemoveParticipant: (userId) => __awaiter$P(void 0, void 0, void 0, function* () {
1355
1355
  const participant = _toCommunicationIdentifier(userId);
1356
1356
  if (communicationCommon.isCommunicationUserIdentifier(participant)) {
1357
1357
  throw new Error('CommunicationIdentifier in Teams call is not supported!');
@@ -1442,7 +1442,7 @@ const getCaptionsSpeakerIdentifier = (captions) => {
1442
1442
 
1443
1443
  // Copyright (c) Microsoft Corporation.
1444
1444
  // Licensed under the MIT License.
1445
- var __awaiter$N = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1445
+ var __awaiter$O = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1446
1446
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1447
1447
  return new (P || (P = Promise))(function (resolve, reject) {
1448
1448
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1491,13 +1491,13 @@ class ProxyDeviceManager {
1491
1491
  this.selectCamera = (videoDeviceInfo) => {
1492
1492
  this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
1493
1493
  };
1494
- this.videoDevicesUpdated = () => __awaiter$N(this, void 0, void 0, function* () {
1494
+ this.videoDevicesUpdated = () => __awaiter$O(this, void 0, void 0, function* () {
1495
1495
  // Device Manager always has a camera with '' name if there are no real camera devices available.
1496
1496
  // We don't want to show that in the UI.
1497
1497
  const realCameras = (yield this._deviceManager.getCameras()).filter((c) => !!c.name);
1498
1498
  this._context.setDeviceManagerCameras(dedupeById(realCameras));
1499
1499
  });
1500
- this.audioDevicesUpdated = () => __awaiter$N(this, void 0, void 0, function* () {
1500
+ this.audioDevicesUpdated = () => __awaiter$O(this, void 0, void 0, function* () {
1501
1501
  this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
1502
1502
  this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
1503
1503
  });
@@ -1901,7 +1901,7 @@ function convertFromSDKToRaisedHandState(raisedHand) {
1901
1901
 
1902
1902
  // Copyright (c) Microsoft Corporation.
1903
1903
  // Licensed under the MIT License.
1904
- var __awaiter$M = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1904
+ var __awaiter$N = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1905
1905
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1906
1906
  return new (P || (P = Promise))(function (resolve, reject) {
1907
1907
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1918,6 +1918,11 @@ immer.enablePatches();
1918
1918
  * @private
1919
1919
  */
1920
1920
  const MAX_CALL_HISTORY_LENGTH = 10;
1921
+ /* @conditional-compile-remove(reaction) */
1922
+ /**
1923
+ * @private
1924
+ */
1925
+ const REACTION_ANIMATION_TIME_MS = 4133;
1921
1926
  /**
1922
1927
  * @private
1923
1928
  */
@@ -2298,7 +2303,7 @@ let CallContext$2 = class CallContext {
2298
2303
  if (reactionMessage) {
2299
2304
  this._timeOutId[participantKey] = setTimeout(() => {
2300
2305
  clearParticipantReactionState(this, callId, participantKey);
2301
- }, 5120);
2306
+ }, REACTION_ANIMATION_TIME_MS);
2302
2307
  }
2303
2308
  });
2304
2309
  }
@@ -2799,7 +2804,7 @@ let CallContext$2 = class CallContext {
2799
2804
  * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
2800
2805
  */
2801
2806
  withAsyncErrorTeedToState(action, target) {
2802
- return (...args) => __awaiter$M(this, void 0, void 0, function* () {
2807
+ return (...args) => __awaiter$N(this, void 0, void 0, function* () {
2803
2808
  try {
2804
2809
  return yield action(...args);
2805
2810
  }
@@ -3284,7 +3289,7 @@ function _logStreamEvent(eventName, streamLogInfo, error) {
3284
3289
 
3285
3290
  // Copyright (c) Microsoft Corporation.
3286
3291
  // Licensed under the MIT License.
3287
- var __awaiter$L = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3292
+ var __awaiter$M = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3288
3293
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3289
3294
  return new (P || (P = Promise))(function (resolve, reject) {
3290
3295
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3294,7 +3299,7 @@ var __awaiter$L = (window && window.__awaiter) || function (thisArg, _arguments,
3294
3299
  });
3295
3300
  };
3296
3301
  function createViewVideo(context, internalContext, callId, stream, participantId, options) {
3297
- return __awaiter$L(this, void 0, void 0, function* () {
3302
+ return __awaiter$M(this, void 0, void 0, function* () {
3298
3303
  // we can only have 3 types of createView
3299
3304
  let streamEventType;
3300
3305
  // we will reuse these for local as well but we need to make sure the remote stream is passed in like before.
@@ -3423,7 +3428,7 @@ function createViewVideo(context, internalContext, callId, stream, participantId
3423
3428
  });
3424
3429
  }
3425
3430
  function createViewUnparentedVideo(context, internalContext, stream, options) {
3426
- return __awaiter$L(this, void 0, void 0, function* () {
3431
+ return __awaiter$M(this, void 0, void 0, function* () {
3427
3432
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
3428
3433
  if (renderInfo && renderInfo.status === 'Rendered') {
3429
3434
  console.warn('Unparented LocalVideoStream is already rendered');
@@ -3592,7 +3597,7 @@ function createView(context, internalContext, callId, participantId, stream, opt
3592
3597
  // Render LocalVideoStream that is not part of a Call
3593
3598
  // Because it is not part of the call we don't tee errors to state naturally (e.g. via a Call Client function such as startVideo).
3594
3599
  // We do not have a startLocalPreviewVideo function, so as a workaround we ensure any errors are propagated here.
3595
- return context.withAsyncErrorTeedToState(() => __awaiter$L(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
3600
+ return context.withAsyncErrorTeedToState(() => __awaiter$M(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
3596
3601
  }
3597
3602
  else {
3598
3603
  _logStreamEvent(EventNames.CREATE_STREAM_INVALID_PARAMS, { streamType });
@@ -3778,7 +3783,7 @@ class RecordingSubscriber {
3778
3783
 
3779
3784
  // Copyright (c) Microsoft Corporation.
3780
3785
  // Licensed under the MIT License.
3781
- var __awaiter$K = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3786
+ var __awaiter$L = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3782
3787
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3783
3788
  return new (P || (P = Promise))(function (resolve, reject) {
3784
3789
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3803,7 +3808,7 @@ class PPTLiveSubscriber {
3803
3808
  this._context.setCallPPTLiveActive(this._callIdRef.callId, this._pptLive.isActive);
3804
3809
  this.checkAndUpdatePPTLiveParticipant();
3805
3810
  };
3806
- this.checkAndUpdatePPTLiveParticipant = () => __awaiter$K(this, void 0, void 0, function* () {
3811
+ this.checkAndUpdatePPTLiveParticipant = () => __awaiter$L(this, void 0, void 0, function* () {
3807
3812
  if (this._pptLive.isActive) {
3808
3813
  // TODO: need to refactor if Web Calling SDK has this logic ready
3809
3814
  if (this._call.isScreenSharingOn) {
@@ -4015,7 +4020,7 @@ class CapabilitiesSubscriber {
4015
4020
  * @private
4016
4021
  */
4017
4022
  class ReactionSubscriber {
4018
- constructor(callIdRef, context, raiseHand) {
4023
+ constructor(callIdRef, context, reaction) {
4019
4024
  this.subscribe = () => {
4020
4025
  this._reaction.on('reaction', this.onReactionEvent);
4021
4026
  };
@@ -4027,7 +4032,7 @@ class ReactionSubscriber {
4027
4032
  };
4028
4033
  this._callIdRef = callIdRef;
4029
4034
  this._context = context;
4030
- this._reaction = raiseHand;
4035
+ this._reaction = reaction;
4031
4036
  this.subscribe();
4032
4037
  }
4033
4038
  }
@@ -4312,7 +4317,7 @@ class CallSubscriber {
4312
4317
 
4313
4318
  // Copyright (c) Microsoft Corporation.
4314
4319
  // Licensed under the MIT License.
4315
- var __awaiter$J = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4320
+ var __awaiter$K = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4316
4321
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4317
4322
  return new (P || (P = Promise))(function (resolve, reject) {
4318
4323
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4332,14 +4337,14 @@ class ProxyIncomingCall {
4332
4337
  switch (prop) {
4333
4338
  case 'accept': {
4334
4339
  return this._context.withAsyncErrorTeedToState(function (...args) {
4335
- return __awaiter$J(this, void 0, void 0, function* () {
4340
+ return __awaiter$K(this, void 0, void 0, function* () {
4336
4341
  return yield target.accept(...args);
4337
4342
  });
4338
4343
  }, 'IncomingCall.accept');
4339
4344
  }
4340
4345
  case 'reject': {
4341
4346
  return this._context.withAsyncErrorTeedToState(function (...args) {
4342
- return __awaiter$J(this, void 0, void 0, function* () {
4347
+ return __awaiter$K(this, void 0, void 0, function* () {
4343
4348
  return yield target.reject(...args);
4344
4349
  });
4345
4350
  }, 'IncomingCall.reject');
@@ -4580,7 +4585,7 @@ const clearCallRelatedState = (context, internalContext) => {
4580
4585
 
4581
4586
  // Copyright (c) Microsoft Corporation.
4582
4587
  // Licensed under the MIT License.
4583
- var __awaiter$I = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4588
+ var __awaiter$J = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4584
4589
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4585
4590
  return new (P || (P = Promise))(function (resolve, reject) {
4586
4591
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4606,56 +4611,56 @@ class ProxyCallCommon {
4606
4611
  switch (prop) {
4607
4612
  case 'mute': {
4608
4613
  return this._context.withAsyncErrorTeedToState(function (...args) {
4609
- return __awaiter$I(this, void 0, void 0, function* () {
4614
+ return __awaiter$J(this, void 0, void 0, function* () {
4610
4615
  return yield target.mute(...args);
4611
4616
  });
4612
4617
  }, 'Call.mute');
4613
4618
  }
4614
4619
  case 'unmute': {
4615
4620
  return this._context.withAsyncErrorTeedToState(function (...args) {
4616
- return __awaiter$I(this, void 0, void 0, function* () {
4621
+ return __awaiter$J(this, void 0, void 0, function* () {
4617
4622
  return yield target.unmute(...args);
4618
4623
  });
4619
4624
  }, 'Call.unmute');
4620
4625
  }
4621
4626
  case 'startVideo': {
4622
4627
  return this._context.withAsyncErrorTeedToState(function (...args) {
4623
- return __awaiter$I(this, void 0, void 0, function* () {
4628
+ return __awaiter$J(this, void 0, void 0, function* () {
4624
4629
  return yield target.startVideo(...args);
4625
4630
  });
4626
4631
  }, 'Call.startVideo');
4627
4632
  }
4628
4633
  case 'stopVideo': {
4629
4634
  return this._context.withAsyncErrorTeedToState(function (...args) {
4630
- return __awaiter$I(this, void 0, void 0, function* () {
4635
+ return __awaiter$J(this, void 0, void 0, function* () {
4631
4636
  return yield target.stopVideo(...args);
4632
4637
  });
4633
4638
  }, 'Call.stopVideo');
4634
4639
  }
4635
4640
  case 'startScreenSharing': {
4636
4641
  return this._context.withAsyncErrorTeedToState(function (...args) {
4637
- return __awaiter$I(this, void 0, void 0, function* () {
4642
+ return __awaiter$J(this, void 0, void 0, function* () {
4638
4643
  return yield target.startScreenSharing(...args);
4639
4644
  });
4640
4645
  }, 'Call.startScreenSharing');
4641
4646
  }
4642
4647
  case 'stopScreenSharing': {
4643
4648
  return this._context.withAsyncErrorTeedToState(function (...args) {
4644
- return __awaiter$I(this, void 0, void 0, function* () {
4649
+ return __awaiter$J(this, void 0, void 0, function* () {
4645
4650
  return yield target.stopScreenSharing(...args);
4646
4651
  });
4647
4652
  }, 'Call.stopScreenSharing');
4648
4653
  }
4649
4654
  case 'hold': {
4650
4655
  return this._context.withAsyncErrorTeedToState(function (...args) {
4651
- return __awaiter$I(this, void 0, void 0, function* () {
4656
+ return __awaiter$J(this, void 0, void 0, function* () {
4652
4657
  return yield target.hold(...args);
4653
4658
  });
4654
4659
  }, 'Call.hold');
4655
4660
  }
4656
4661
  case 'resume': {
4657
4662
  return this._context.withAsyncErrorTeedToState(function (...args) {
4658
- return __awaiter$I(this, void 0, void 0, function* () {
4663
+ return __awaiter$J(this, void 0, void 0, function* () {
4659
4664
  return yield target.resume(...args);
4660
4665
  });
4661
4666
  }, 'Call.resume');
@@ -4707,7 +4712,7 @@ class ProxyTeamsCaptions {
4707
4712
  get(target, prop) {
4708
4713
  switch (prop) {
4709
4714
  case 'startCaptions':
4710
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4715
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$J(this, void 0, void 0, function* () {
4711
4716
  var _a, _b;
4712
4717
  this._context.setStartCaptionsInProgress(this._call.id, true);
4713
4718
  const ret = yield target.startCaptions(...args);
@@ -4715,7 +4720,7 @@ class ProxyTeamsCaptions {
4715
4720
  return ret;
4716
4721
  }), 'Call.feature');
4717
4722
  case 'stopCaptions':
4718
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4723
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$J(this, void 0, void 0, function* () {
4719
4724
  const ret = yield target.stopCaptions(...args);
4720
4725
  this._context.setIsCaptionActive(this._call.id, false);
4721
4726
  this._context.setStartCaptionsInProgress(this._call.id, false);
@@ -4723,13 +4728,13 @@ class ProxyTeamsCaptions {
4723
4728
  return ret;
4724
4729
  }), 'Call.feature');
4725
4730
  case 'setSpokenLanguage':
4726
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4731
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$J(this, void 0, void 0, function* () {
4727
4732
  const ret = yield target.setSpokenLanguage(...args);
4728
4733
  this._context.setSelectedSpokenLanguage(this._call.id, args[0]);
4729
4734
  return ret;
4730
4735
  }), 'Call.feature');
4731
4736
  case 'setCaptionLanguage':
4732
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4737
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$J(this, void 0, void 0, function* () {
4733
4738
  const ret = yield target.setCaptionLanguage(...args);
4734
4739
  this._context.setSelectedCaptionLanguage(this._call.id, args[0]);
4735
4740
  return ret;
@@ -4751,7 +4756,7 @@ class ProxyCaptions {
4751
4756
  get(target, prop) {
4752
4757
  switch (prop) {
4753
4758
  case 'startCaptions':
4754
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4759
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$J(this, void 0, void 0, function* () {
4755
4760
  var _a, _b;
4756
4761
  this._context.setStartCaptionsInProgress(this._call.id, true);
4757
4762
  const ret = yield target.startCaptions(...args);
@@ -4759,7 +4764,7 @@ class ProxyCaptions {
4759
4764
  return ret;
4760
4765
  }), 'Call.feature');
4761
4766
  case 'stopCaptions':
4762
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4767
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$J(this, void 0, void 0, function* () {
4763
4768
  const ret = yield target.stopCaptions(...args);
4764
4769
  this._context.setIsCaptionActive(this._call.id, false);
4765
4770
  this._context.setStartCaptionsInProgress(this._call.id, false);
@@ -4767,7 +4772,7 @@ class ProxyCaptions {
4767
4772
  return ret;
4768
4773
  }), 'Call.feature');
4769
4774
  case 'setSpokenLanguage':
4770
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4775
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$J(this, void 0, void 0, function* () {
4771
4776
  const ret = yield target.setSpokenLanguage(...args);
4772
4777
  this._context.setSelectedSpokenLanguage(this._call.id, args[0]);
4773
4778
  return ret;
@@ -4788,12 +4793,12 @@ class ProxySpotlightCallFeature {
4788
4793
  get(target, prop) {
4789
4794
  switch (prop) {
4790
4795
  case 'startSpotlight':
4791
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4796
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$J(this, void 0, void 0, function* () {
4792
4797
  const ret = yield target.startSpotlight(...args);
4793
4798
  return ret;
4794
4799
  }), 'Call.feature');
4795
4800
  case 'stopSpotlight':
4796
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4801
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$J(this, void 0, void 0, function* () {
4797
4802
  const ret = yield target.stopSpotlight(...args);
4798
4803
  return ret;
4799
4804
  }), 'Call.feature');
@@ -4836,7 +4841,7 @@ class ProxyTransferCallFeature {
4836
4841
 
4837
4842
  // Copyright (c) Microsoft Corporation.
4838
4843
  // Licensed under the MIT License.
4839
- var __awaiter$H = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4844
+ var __awaiter$I = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4840
4845
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4841
4846
  return new (P || (P = Promise))(function (resolve, reject) {
4842
4847
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4850,7 +4855,7 @@ class ProxyCall extends ProxyCallCommon {
4850
4855
  switch (prop) {
4851
4856
  case 'addParticipant': {
4852
4857
  return this.getContext().withAsyncErrorTeedToState(function (...args) {
4853
- return __awaiter$H(this, void 0, void 0, function* () {
4858
+ return __awaiter$I(this, void 0, void 0, function* () {
4854
4859
  return yield target.addParticipant(...args);
4855
4860
  });
4856
4861
  }, 'Call.addParticipant');
@@ -5085,7 +5090,7 @@ class InternalCallContext {
5085
5090
 
5086
5091
  // Copyright (c) Microsoft Corporation.
5087
5092
  // Licensed under the MIT License.
5088
- var __awaiter$G = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5093
+ var __awaiter$H = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5089
5094
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5090
5095
  return new (P || (P = Promise))(function (resolve, reject) {
5091
5096
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -5100,7 +5105,7 @@ class ProxyTeamsCall extends ProxyCallCommon {
5100
5105
  switch (prop) {
5101
5106
  case 'addParticipant': {
5102
5107
  return this.getContext().withAsyncErrorTeedToState(function (...args) {
5103
- return __awaiter$G(this, void 0, void 0, function* () {
5108
+ return __awaiter$H(this, void 0, void 0, function* () {
5104
5109
  return yield target.addParticipant(...args);
5105
5110
  });
5106
5111
  }, 'TeamsCall.addParticipant');
@@ -5217,7 +5222,7 @@ const teamsCallAgentDeclaratify = (callAgent, context, internalContext) => {
5217
5222
 
5218
5223
  // Copyright (c) Microsoft Corporation.
5219
5224
  // Licensed under the MIT License.
5220
- var __awaiter$F = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5225
+ var __awaiter$G = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5221
5226
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5222
5227
  return new (P || (P = Promise))(function (resolve, reject) {
5223
5228
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -5239,7 +5244,7 @@ class ProxyVideoStreamRendererView {
5239
5244
  get(target, prop) {
5240
5245
  switch (prop) {
5241
5246
  case 'updateScalingMode': {
5242
- return (...args) => __awaiter$F(this, void 0, void 0, function* () {
5247
+ return (...args) => __awaiter$G(this, void 0, void 0, function* () {
5243
5248
  yield target.updateScalingMode(...args);
5244
5249
  this._context.setRemoteVideoStreamViewScalingMode(this._callId, this._participantId, this._streamId, args[0]);
5245
5250
  });
@@ -5260,7 +5265,7 @@ const videoStreamRendererViewDeclaratify = (view, context, callId, participantId
5260
5265
 
5261
5266
  // Copyright (c) Microsoft Corporation.
5262
5267
  // Licensed under the MIT License.
5263
- var __awaiter$E = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5268
+ var __awaiter$F = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5264
5269
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5265
5270
  return new (P || (P = Promise))(function (resolve, reject) {
5266
5271
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -5282,7 +5287,7 @@ class ProxyCallClient {
5282
5287
  get(target, prop) {
5283
5288
  switch (prop) {
5284
5289
  case 'createCallAgent': {
5285
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$E(this, void 0, void 0, function* () {
5290
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$F(this, void 0, void 0, function* () {
5286
5291
  // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
5287
5292
  // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
5288
5293
  // callAgent if the createCallAgent succeeds.
@@ -5295,7 +5300,7 @@ class ProxyCallClient {
5295
5300
  }), 'CallClient.createCallAgent');
5296
5301
  }
5297
5302
  case 'createTeamsCallAgent': {
5298
- /* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$E(this, void 0, void 0, function* () {
5303
+ /* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$F(this, void 0, void 0, function* () {
5299
5304
  // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
5300
5305
  // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
5301
5306
  // callAgent if the createCallAgent succeeds.
@@ -5308,7 +5313,7 @@ class ProxyCallClient {
5308
5313
  }), 'CallClient.createTeamsCallAgent');
5309
5314
  }
5310
5315
  case 'getDeviceManager': {
5311
- return this._context.withAsyncErrorTeedToState(() => __awaiter$E(this, void 0, void 0, function* () {
5316
+ return this._context.withAsyncErrorTeedToState(() => __awaiter$F(this, void 0, void 0, function* () {
5312
5317
  // As of writing, the SDK always returns the same instance of DeviceManager so we keep a reference of
5313
5318
  // DeviceManager and if it does not change we return the cached DeclarativeDeviceManager. If it does not we'll
5314
5319
  // throw an error that indicate we need to fix this issue as our implementation has diverged from the SDK.
@@ -5337,7 +5342,7 @@ class ProxyCallClient {
5337
5342
  /**
5338
5343
  * add to this object if we want to proxy anything else off the DebugInfo feature object.
5339
5344
  */
5340
- return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$E(this, void 0, void 0, function* () {
5345
+ return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$F(this, void 0, void 0, function* () {
5341
5346
  const environmentInfo = yield feature.getEnvironmentInfo();
5342
5347
  this._context.setEnvironmentInfo(environmentInfo);
5343
5348
  return environmentInfo;
@@ -5398,7 +5403,7 @@ const createStatefulCallClientWithDeps = (callClient, context, internalContext)
5398
5403
  });
5399
5404
  Object.defineProperty(callClient, 'createView', {
5400
5405
  configurable: false,
5401
- value: (callId, participantId, stream, options) => __awaiter$E(void 0, void 0, void 0, function* () {
5406
+ value: (callId, participantId, stream, options) => __awaiter$F(void 0, void 0, void 0, function* () {
5402
5407
  const participantIdKind = participantId ? communicationCommon.getIdentifierKind(participantId) : undefined;
5403
5408
  const result = yield createView(context, internalContext, callId, participantIdKind, stream, options);
5404
5409
  // We only need to declaratify the VideoStreamRendererView object for remote participants. Because the updateScalingMode only needs to be called on remote participant stream views.
@@ -5631,7 +5636,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
5631
5636
  wordBreak: 'break-word'
5632
5637
  });
5633
5638
 
5634
- 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:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",boldTooltip:"Bold",italicTooltip:"Italic",underlineTooltip:"Underline",bulletListTooltip:"Bulleted list",numberListTooltip:"Numbered list",increaseIndentTooltip:"Increase indent",decreaseIndentTooltip:"Decrease indent",insertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",insertRowOrColumnMenu:"Insert",insertTableMenuTitle:"Insert {column} x {row} table",insertRowAboveMenu:"Insert above",insertRowBelowMenu:"Insert below",insertColumnLeftMenu:"Insert left",insertColumnRightMenu:"Insert right",deleteRowOrColumnMenu:"Delete",deleteColumnMenu:"Delete column",deleteRowMenu:"Delete row",deleteTableMenu:"Delete table"};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"};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:"{author} said {message}",messageContentMineAriaText:"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"};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.",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."};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"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"};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"};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 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,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};
5639
+ 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:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",boldTooltip:"Bold",italicTooltip:"Italic",underlineTooltip:"Underline",bulletListTooltip:"Bulleted list",numberListTooltip:"Numbered list",increaseIndentTooltip:"Increase indent",decreaseIndentTooltip:"Decrease indent",insertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",insertRowOrColumnMenu:"Insert",insertTableMenuTitle:"Insert {column} x {row} table",insertRowAboveMenu:"Insert above",insertRowBelowMenu:"Insert below",insertColumnLeftMenu:"Insert left",insertColumnRightMenu:"Insert right",deleteRowOrColumnMenu:"Delete",deleteColumnMenu:"Delete column",deleteRowMenu:"Delete row",deleteTableMenu:"Delete table"};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"};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:"{author} said {message}",messageContentMineAriaText:"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"};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.",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."};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"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"};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"};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 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,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};
5635
5640
 
5636
5641
  // Copyright (c) Microsoft Corporation.
5637
5642
  // Licensed under the MIT License.
@@ -5889,13 +5894,6 @@ const formatInlineElements = (str, vars) => {
5889
5894
 
5890
5895
  // Copyright (c) Microsoft Corporation.
5891
5896
  // Licensed under the MIT License.
5892
- /**
5893
- * @private
5894
- *
5895
- * @param fileName
5896
- * @returns string
5897
- */
5898
- const extension = (fileName) => fileName.split('.').pop() || '';
5899
5897
  /**
5900
5898
  * @private
5901
5899
  * @param dismissedErrors
@@ -7969,7 +7967,7 @@ const _MentionPopover = (props) => {
7969
7967
 
7970
7968
  // Copyright (c) Microsoft Corporation.
7971
7969
  // Licensed under the MIT License.
7972
- var __awaiter$D = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7970
+ var __awaiter$E = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7973
7971
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7974
7972
  return new (P || (P = Promise))(function (resolve, reject) {
7975
7973
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8155,7 +8153,7 @@ const TextFieldWithMention = (props) => {
8155
8153
  onSuggestionSelected,
8156
8154
  updateMentionSuggestions
8157
8155
  ]);
8158
- const debouncedQueryUpdate = useDebounce.useDebouncedCallback((query) => __awaiter$D(void 0, void 0, void 0, function* () {
8156
+ const debouncedQueryUpdate = useDebounce.useDebouncedCallback((query) => __awaiter$E(void 0, void 0, void 0, function* () {
8159
8157
  var _a;
8160
8158
  let suggestions = (_a = (yield (mentionLookupOptions === null || mentionLookupOptions === void 0 ? void 0 : mentionLookupOptions.onQueryUpdated(query)))) !== null && _a !== void 0 ? _a : [];
8161
8159
  suggestions = suggestions.filter((suggestion) => suggestion.displayText.trim() !== '');
@@ -8332,7 +8330,7 @@ const TextFieldWithMention = (props) => {
8332
8330
  });
8333
8331
  }
8334
8332
  }, [updateSelectionIndexesWithMentionIfNeeded, setSelectionStartValue, setSelectionEndValue]);
8335
- const handleOnChange = React.useCallback((_b) => __awaiter$D(void 0, [_b], void 0, function* ({ currentSelectionEnd, currentSelectionStart, currentTriggerStartIndex, event, htmlTextValue, inputTextValue, previousSelectionEnd, previousSelectionStart, tagsValue, updatedValue }) {
8333
+ const handleOnChange = React.useCallback((_b) => __awaiter$E(void 0, [_b], void 0, function* ({ currentSelectionEnd, currentSelectionStart, currentTriggerStartIndex, event, htmlTextValue, inputTextValue, previousSelectionEnd, previousSelectionStart, tagsValue, updatedValue }) {
8336
8334
  var _c;
8337
8335
  debouncedQueryUpdate.cancel();
8338
8336
  if (event.currentTarget === null) {
@@ -8770,7 +8768,7 @@ const SendBoxErrors = (props) => {
8770
8768
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
8771
8769
  /**
8772
8770
  * Conditionally modify locale strings passed to the attachment card
8773
- * @returns file upload card strings
8771
+ * @returns attachment upload card strings
8774
8772
  */
8775
8773
  const useLocaleAttachmentCardStringsTrampoline = () => {
8776
8774
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
@@ -8803,7 +8801,7 @@ const attachmentNameContainerClassName = react.mergeStyles({
8803
8801
 
8804
8802
  // Copyright (c) Microsoft Corporation.
8805
8803
  // Licensed under the MIT License.
8806
- var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8804
+ var __awaiter$D = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8807
8805
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8808
8806
  return new (P || (P = Promise))(function (resolve, reject) {
8809
8807
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8820,8 +8818,11 @@ var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments,
8820
8818
  */
8821
8819
  const _AttachmentCard = (props) => {
8822
8820
  var _a, _b, _c, _d;
8823
- const { attachment, progress, menuActions, onActionHandlerFailed } = props;
8821
+ const { attachment, menuActions, onActionHandlerFailed } = props;
8824
8822
  const attachmentCardStyles = useAttachmentCardStyles();
8823
+ const progress = React.useMemo(() => {
8824
+ return attachment.progress;
8825
+ }, [attachment.progress]);
8825
8826
  const isUploadComplete = React.useMemo(() => {
8826
8827
  return progress !== undefined && progress > 0 && progress < 1;
8827
8828
  }, [progress]);
@@ -8872,7 +8873,7 @@ const getMenuItems = (menuActions, attachment, handleOnClickError) => {
8872
8873
  React.createElement(reactComponents.MenuTrigger, null,
8873
8874
  React.createElement(reactComponents.ToolbarButton, { "aria-label": "More", icon: React.createElement(reactIcons.MoreHorizontal24Filled, null) })),
8874
8875
  React.createElement(reactComponents.MenuPopover, null,
8875
- React.createElement(reactComponents.MenuList, null, menuActions.map((menuItem, index) => (React.createElement(reactComponents.MenuItem, { key: index, icon: menuItem.icon, onClick: () => __awaiter$C(void 0, void 0, void 0, function* () {
8876
+ React.createElement(reactComponents.MenuList, null, menuActions.map((menuItem, index) => (React.createElement(reactComponents.MenuItem, { key: index, icon: menuItem.icon, onClick: () => __awaiter$D(void 0, void 0, void 0, function* () {
8876
8877
  try {
8877
8878
  yield menuItem.onClick(attachment);
8878
8879
  }
@@ -8922,7 +8923,7 @@ const actionIconStyle = { height: '1rem' };
8922
8923
  */
8923
8924
  const _AttachmentUploadCards = (props) => {
8924
8925
  var _a;
8925
- const attachments = props.activeFileUploads;
8926
+ const attachments = props.activeAttachmentUploads;
8926
8927
  const localeStrings = useLocaleAttachmentCardStringsTrampoline();
8927
8928
  const removeFileButtonString = React.useMemo(() => () => {
8928
8929
  var _a, _b;
@@ -8933,32 +8934,24 @@ const _AttachmentUploadCards = (props) => {
8933
8934
  }
8934
8935
  return (React.createElement(_AttachmentCardGroup, null, attachments &&
8935
8936
  attachments
8936
- .filter((attachment) => !attachment.error)
8937
+ .filter((attachment) => !attachment.uploadError)
8937
8938
  .map((attachment) => {
8938
- var _a, _b, _c, _d;
8939
- return (React.createElement(_AttachmentCard
8940
- // temp converter before upload is refactored
8941
- , {
8942
- // temp converter before upload is refactored
8943
- attachment: {
8944
- id: attachment.id,
8945
- name: attachment.filename,
8946
- extension: extension(attachment.filename),
8947
- progress: attachment.progress,
8948
- uploadStatus: attachment.error
8949
- ? {
8950
- message: (_a = attachment.error) === null || _a === void 0 ? void 0 : _a.message,
8951
- timestamp: (_b = attachment.error) === null || _b === void 0 ? void 0 : _b.timestamp
8952
- }
8953
- : undefined
8954
- }, progress: attachment.progress, key: attachment.id, menuActions: [
8939
+ var _a, _b;
8940
+ return (React.createElement(_AttachmentCard, { attachment: attachment, key: attachment.id, menuActions: [
8955
8941
  {
8956
- name: (_d = (_c = props.strings) === null || _c === void 0 ? void 0 : _c.removeAttachment) !== null && _d !== void 0 ? _d : 'Remove',
8942
+ name: (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.removeAttachment) !== null && _b !== void 0 ? _b : 'Remove',
8957
8943
  icon: (React.createElement("div", { "aria-label": removeFileButtonString() },
8958
8944
  React.createElement(react.Icon, { iconName: "CancelAttachmentUpload", className: react.mergeStyles(actionIconStyle) }))),
8959
- onClick: () => {
8960
- props.onCancelFileUpload && props.onCancelFileUpload(attachment.id);
8961
- return Promise.resolve();
8945
+ onClick: (attachment) => {
8946
+ return new Promise((resolve, reject) => {
8947
+ try {
8948
+ props.onCancelAttachmentUpload && props.onCancelAttachmentUpload(attachment.id);
8949
+ resolve();
8950
+ }
8951
+ catch (e) {
8952
+ reject(e.message);
8953
+ }
8954
+ });
8962
8955
  }
8963
8956
  }
8964
8957
  ], strings: props.strings }));
@@ -8976,18 +8969,18 @@ const EMPTY_MESSAGE_REGEX = /^\s*$/;
8976
8969
  /**
8977
8970
  * @private
8978
8971
  */
8979
- const hasIncompleteFileUploads = (activeFileUploads) => {
8980
- return !!((activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.length) &&
8981
- !activeFileUploads
8982
- .filter((attachmentUpload) => !attachmentUpload.error)
8983
- .every((attachmentUpload) => attachmentUpload.uploadComplete));
8972
+ const hasIncompleteAttachmentUploads = (activeAttachmentUploads) => {
8973
+ return !!((activeAttachmentUploads === null || activeAttachmentUploads === void 0 ? void 0 : activeAttachmentUploads.length) &&
8974
+ !activeAttachmentUploads
8975
+ .filter((attachmentUpload) => !attachmentUpload.uploadError)
8976
+ .every((attachmentUpload) => attachmentUpload.progress === 1 && attachmentUpload.progress !== undefined));
8984
8977
  };
8985
8978
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
8986
8979
  /**
8987
8980
  * @private
8988
8981
  */
8989
- const hasCompletedFileUploads = (activeFileUploads) => {
8990
- return !!(activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.find((file) => !file.error));
8982
+ const hasCompletedAttachmentUploads = (activeAttachmentUploads) => {
8983
+ return !!(activeAttachmentUploads === null || activeAttachmentUploads === void 0 ? void 0 : activeAttachmentUploads.find((file) => !file.uploadError));
8991
8984
  };
8992
8985
  /**
8993
8986
  * @private
@@ -9379,7 +9372,7 @@ const SendBox$1 = (props) => {
9379
9372
  /* @conditional-compile-remove(mention) */
9380
9373
  mentionLookupOptions,
9381
9374
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
9382
- activeFileUploads } = props;
9375
+ activeAttachmentUploads } = props;
9383
9376
  const theme = useTheme();
9384
9377
  const localeStrings = useLocale$1().strings.sendBox;
9385
9378
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
@@ -9399,7 +9392,7 @@ const SendBox$1 = (props) => {
9399
9392
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
9400
9393
  setAttachmentUploadsPendingError(undefined);
9401
9394
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
9402
- if (hasIncompleteFileUploads(activeFileUploads)) {
9395
+ if (hasIncompleteAttachmentUploads(activeAttachmentUploads)) {
9403
9396
  setAttachmentUploadsPendingError({ message: strings.attachmentUploadsPendingError, timestamp: Date.now() });
9404
9397
  return;
9405
9398
  }
@@ -9407,7 +9400,7 @@ const SendBox$1 = (props) => {
9407
9400
  // we don't want to send empty messages including spaces, newlines, tabs
9408
9401
  // Message can be empty if there is a valid attachment upload
9409
9402
  if (sanitizeText(message).length > 0 ||
9410
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasCompletedFileUploads(activeFileUploads)) {
9403
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasCompletedAttachmentUploads(activeAttachmentUploads)) {
9411
9404
  onSendMessage && onSendMessage(message);
9412
9405
  setTextValue('');
9413
9406
  }
@@ -9427,13 +9420,13 @@ const SendBox$1 = (props) => {
9427
9420
  const mergedSendIconStyle = React.useMemo(() => sendIconStyle({
9428
9421
  theme,
9429
9422
  hasText: !!textValue,
9430
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasFile: hasCompletedFileUploads(activeFileUploads),
9423
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasFile: hasCompletedAttachmentUploads(activeAttachmentUploads),
9431
9424
  hasErrorMessage: !!errorMessage,
9432
9425
  customSendIconStyle: styles === null || styles === void 0 ? void 0 : styles.sendMessageIcon
9433
9426
  }), [
9434
9427
  theme,
9435
9428
  textValue,
9436
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ activeFileUploads,
9429
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ activeAttachmentUploads,
9437
9430
  errorMessage,
9438
9431
  styles === null || styles === void 0 ? void 0 : styles.sendMessageIcon
9439
9432
  ]);
@@ -9441,33 +9434,33 @@ const SendBox$1 = (props) => {
9441
9434
  // Ensure that errors are cleared when there are no files in sendBox
9442
9435
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
9443
9436
  React.useEffect(() => {
9444
- if (!(activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((upload) => !upload.error).length)) {
9437
+ if (!(activeAttachmentUploads === null || activeAttachmentUploads === void 0 ? void 0 : activeAttachmentUploads.filter((upload) => !upload.uploadError).length)) {
9445
9438
  setAttachmentUploadsPendingError(undefined);
9446
9439
  }
9447
- }, [activeFileUploads]);
9440
+ }, [activeAttachmentUploads]);
9448
9441
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
9449
9442
  const sendBoxErrorsProps = React.useMemo(() => {
9450
9443
  var _a;
9451
9444
  return {
9452
9445
  attachmentUploadsPendingError: attachmentUploadsPendingError,
9453
- attachmentUploadError: (_a = activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((attachmentUpload) => attachmentUpload.error).pop()) === null || _a === void 0 ? void 0 : _a.error
9446
+ attachmentUploadError: (_a = activeAttachmentUploads === null || activeAttachmentUploads === void 0 ? void 0 : activeAttachmentUploads.filter((attachmentUpload) => attachmentUpload.uploadError).pop()) === null || _a === void 0 ? void 0 : _a.uploadError
9454
9447
  };
9455
- }, [activeFileUploads, attachmentUploadsPendingError]);
9448
+ }, [activeAttachmentUploads, attachmentUploadsPendingError]);
9456
9449
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
9457
- const onRenderFileUploads = React.useCallback(() => {
9450
+ const onRenderAttachmentUploads = React.useCallback(() => {
9458
9451
  var _a, _b, _c, _d, _e, _f;
9459
- if (!(activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((upload) => !upload.error).length)) {
9452
+ if (!(activeAttachmentUploads === null || activeAttachmentUploads === void 0 ? void 0 : activeAttachmentUploads.filter((upload) => !upload.uploadError).length)) {
9460
9453
  return null;
9461
9454
  }
9462
- return props.onRenderFileUploads ? (props.onRenderFileUploads()) : (React.createElement(react.Stack, { className: attachmentUploadCardsStyles },
9455
+ return props.onRenderAttachmentUploads ? (props.onRenderAttachmentUploads()) : (React.createElement(react.Stack, { className: attachmentUploadCardsStyles },
9463
9456
  React.createElement(FluentV9ThemeProvider, { v8Theme: theme },
9464
- React.createElement(_AttachmentUploadCards, { activeFileUploads: activeFileUploads, onCancelFileUpload: props.onCancelFileUpload, strings: {
9457
+ React.createElement(_AttachmentUploadCards, { activeAttachmentUploads: activeAttachmentUploads, onCancelAttachmentUpload: props.onCancelAttachmentUpload, strings: {
9465
9458
  removeAttachment: (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.removeAttachment) !== null && _b !== void 0 ? _b : localeStrings.removeAttachment,
9466
9459
  uploading: (_d = (_c = props.strings) === null || _c === void 0 ? void 0 : _c.uploading) !== null && _d !== void 0 ? _d : localeStrings.uploading,
9467
9460
  uploadCompleted: (_f = (_e = props.strings) === null || _e === void 0 ? void 0 : _e.uploadCompleted) !== null && _f !== void 0 ? _f : localeStrings.uploadCompleted
9468
9461
  } }))));
9469
9462
  }, [
9470
- activeFileUploads,
9463
+ activeAttachmentUploads,
9471
9464
  props,
9472
9465
  theme,
9473
9466
  localeStrings.removeAttachment,
@@ -9499,7 +9492,7 @@ const SendBox$1 = (props) => {
9499
9492
  e.stopPropagation();
9500
9493
  }, id: 'sendIconWrapper', className: mergedSendButtonStyle, ariaLabel: localeStrings.sendButtonAriaLabel, tooltipContent: localeStrings.sendButtonAriaLabel })),
9501
9494
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
9502
- onRenderFileUploads())));
9495
+ onRenderAttachmentUploads())));
9503
9496
  };
9504
9497
 
9505
9498
  // Copyright (c) Microsoft Corporation.
@@ -10472,7 +10465,7 @@ const richTextBorderBoxStyle = (props) => {
10472
10465
  const RichTextInputBoxComponent = (props) => {
10473
10466
  const { placeholderText, initialContent, onChange, onEnterKeyDown, editorComponentRef, disabled, strings, actionComponents,
10474
10467
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10475
- onRenderFileUploads,
10468
+ onRenderAttachmentUploads,
10476
10469
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10477
10470
  hasFiles, richTextEditorStyleProps, isHorizontalLayoutDisabled = false } = props;
10478
10471
  const theme = useTheme();
@@ -10526,8 +10519,8 @@ const RichTextInputBoxComponent = (props) => {
10526
10519
  React.createElement(react.Stack, { grow: true, className: inputBoxRichTextStackStyle },
10527
10520
  React.createElement(react.Stack.Item, { className: inputBoxRichTextStackItemStyle },
10528
10521
  React.createElement(RichTextEditor, { initialContent: initialContent, placeholderText: placeholderText, onChange: onChange, onKeyDown: onKeyDown, ref: editorComponentRef, strings: strings, showRichTextEditorFormatting: showRichTextEditorFormatting, styles: richTextEditorStyle })),
10529
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileUploads &&
10530
- onRenderFileUploads()),
10522
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderAttachmentUploads &&
10523
+ onRenderAttachmentUploads()),
10531
10524
  actionButtons)));
10532
10525
  };
10533
10526
 
@@ -10607,9 +10600,9 @@ const isMessageEmpty$1 = (message) => {
10607
10600
  const RichTextSendBox = (props) => {
10608
10601
  const { disabled = false, systemMessage, onSendMessage,
10609
10602
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10610
- activeFileUploads,
10603
+ activeAttachmentUploads,
10611
10604
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10612
- onCancelFileUpload } = props;
10605
+ onCancelAttachmentUpload } = props;
10613
10606
  const theme = useTheme();
10614
10607
  const locale = useLocale$1();
10615
10608
  const localeStrings = React.useMemo(() => {
@@ -10622,7 +10615,7 @@ const RichTextSendBox = (props) => {
10622
10615
  const [contentValue, setContentValue] = React.useState('');
10623
10616
  const [contentValueOverflow, setContentValueOverflow] = React.useState(false);
10624
10617
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10625
- const [attachmentUploadsPendingError, setFileUploadsPendingError] = React.useState(undefined);
10618
+ const [attachmentUploadsPendingError, setAttachmentUploadsPendingError] = React.useState(undefined);
10626
10619
  const editorComponentRef = React.useRef(null);
10627
10620
  const contentTooLongMessage = React.useMemo(() => (contentValueOverflow ? strings.textTooLong : undefined), [contentValueOverflow, strings.textTooLong]);
10628
10621
  const setContent = React.useCallback((newValue) => {
@@ -10639,17 +10632,17 @@ const RichTextSendBox = (props) => {
10639
10632
  }
10640
10633
  // Don't send message until all files have been uploaded successfully
10641
10634
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10642
- setFileUploadsPendingError(undefined);
10635
+ setAttachmentUploadsPendingError(undefined);
10643
10636
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10644
- if (hasIncompleteFileUploads(activeFileUploads)) {
10645
- setFileUploadsPendingError({ message: strings.attachmentUploadsPendingError, timestamp: Date.now() });
10637
+ if (hasIncompleteAttachmentUploads(activeAttachmentUploads)) {
10638
+ setAttachmentUploadsPendingError({ message: strings.attachmentUploadsPendingError, timestamp: Date.now() });
10646
10639
  return;
10647
10640
  }
10648
10641
  const message = contentValue;
10649
10642
  // we don't want to send empty messages including spaces, newlines, tabs
10650
- // Message can be empty if there is a valid file upload
10643
+ // Message can be empty if there is a valid attachment upload
10651
10644
  if (sanitizeText(message).length > 0 ||
10652
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasCompletedFileUploads(activeFileUploads)) {
10645
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ hasCompletedAttachmentUploads(activeAttachmentUploads)) {
10653
10646
  onSendMessage(message);
10654
10647
  setContentValue('');
10655
10648
  (_a = editorComponentRef.current) === null || _a === void 0 ? void 0 : _a.setEmptyContent();
@@ -10660,7 +10653,7 @@ const RichTextSendBox = (props) => {
10660
10653
  contentValueOverflow,
10661
10654
  disabled,
10662
10655
  onSendMessage,
10663
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ activeFileUploads,
10656
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ activeAttachmentUploads,
10664
10657
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ strings.attachmentUploadsPendingError
10665
10658
  ]);
10666
10659
  const hasErrorMessage = React.useMemo(() => {
@@ -10670,10 +10663,10 @@ const RichTextSendBox = (props) => {
10670
10663
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10671
10664
  !!attachmentUploadsPendingError ||
10672
10665
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10673
- !!((_a = activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((attachmentUpload) => attachmentUpload.error).pop()) === null || _a === void 0 ? void 0 : _a.error));
10666
+ !!((_a = activeAttachmentUploads === null || activeAttachmentUploads === void 0 ? void 0 : activeAttachmentUploads.filter((attachmentUpload) => attachmentUpload.uploadError).pop()) === null || _a === void 0 ? void 0 : _a.uploadError));
10674
10667
  }, [
10675
10668
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10676
- activeFileUploads,
10669
+ activeAttachmentUploads,
10677
10670
  contentTooLongMessage,
10678
10671
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10679
10672
  attachmentUploadsPendingError,
@@ -10694,30 +10687,30 @@ const RichTextSendBox = (props) => {
10694
10687
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10695
10688
  attachmentUploadsPendingError: attachmentUploadsPendingError,
10696
10689
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10697
- attachmentUploadError: (_a = activeFileUploads === null || activeFileUploads === void 0 ? void 0 : activeFileUploads.filter((attachmentUpload) => attachmentUpload.error).pop()) === null || _a === void 0 ? void 0 : _a.error,
10690
+ attachmentUploadError: (_a = activeAttachmentUploads === null || activeAttachmentUploads === void 0 ? void 0 : activeAttachmentUploads.filter((attachmentUpload) => attachmentUpload.uploadError).pop()) === null || _a === void 0 ? void 0 : _a.uploadError,
10698
10691
  systemMessage: systemMessage,
10699
10692
  textTooLongMessage: contentTooLongMessage
10700
10693
  };
10701
10694
  }, [
10702
10695
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10703
- activeFileUploads,
10696
+ activeAttachmentUploads,
10704
10697
  contentTooLongMessage,
10705
10698
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10706
10699
  attachmentUploadsPendingError,
10707
10700
  systemMessage
10708
10701
  ]);
10709
10702
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10710
- const onRenderFileUploads = React.useCallback(() => {
10703
+ const onRenderAttachmentUploads = React.useCallback(() => {
10711
10704
  return (React.createElement(react.Stack, { className: attachmentUploadCardsStyles },
10712
10705
  React.createElement(FluentV9ThemeProvider, { v8Theme: theme },
10713
- React.createElement(_AttachmentUploadCards, { activeFileUploads: activeFileUploads, onCancelFileUpload: onCancelFileUpload, strings: {
10706
+ React.createElement(_AttachmentUploadCards, { activeAttachmentUploads: activeAttachmentUploads, onCancelAttachmentUpload: onCancelAttachmentUpload, strings: {
10714
10707
  removeAttachment: strings.removeAttachment,
10715
10708
  uploading: strings.uploading,
10716
10709
  uploadCompleted: strings.uploadCompleted
10717
10710
  } }))));
10718
10711
  }, [
10719
- activeFileUploads,
10720
- onCancelFileUpload,
10712
+ activeAttachmentUploads,
10713
+ onCancelAttachmentUpload,
10721
10714
  strings.removeAttachment,
10722
10715
  strings.uploadCompleted,
10723
10716
  strings.uploading,
@@ -10730,16 +10723,16 @@ const RichTextSendBox = (props) => {
10730
10723
  }, className: richTextActionButtonsStyle, ariaLabel: localeStrings.sendButtonAriaLabel, tooltipContent: localeStrings.sendButtonAriaLabel }));
10731
10724
  }, [localeStrings.sendButtonAriaLabel, onRenderSendIcon, sendMessageOnClick]);
10732
10725
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10733
- const hasFileUploads = React.useMemo(() => {
10734
- return hasCompletedFileUploads(activeFileUploads) || hasIncompleteFileUploads(activeFileUploads);
10735
- }, [activeFileUploads]);
10726
+ const hasAttachmentUploads = React.useMemo(() => {
10727
+ return (hasCompletedAttachmentUploads(activeAttachmentUploads) || hasIncompleteAttachmentUploads(activeAttachmentUploads));
10728
+ }, [activeAttachmentUploads]);
10736
10729
  return (React.createElement(react.Stack, null,
10737
10730
  React.createElement(RichTextSendBoxErrors, Object.assign({}, sendBoxErrorsProps)),
10738
10731
  React.createElement(RichTextInputBoxComponent, { placeholderText: strings.placeholderText, onChange: setContent, onEnterKeyDown: sendMessageOnClick, editorComponentRef: editorComponentRef, strings: strings, disabled: disabled, actionComponents: sendButton, richTextEditorStyleProps: sendBoxRichTextEditorStyle,
10739
10732
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10740
- onRenderFileUploads: onRenderFileUploads,
10733
+ onRenderAttachmentUploads: onRenderAttachmentUploads,
10741
10734
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
10742
- hasFiles: hasFileUploads })));
10735
+ hasFiles: hasAttachmentUploads })));
10743
10736
  };
10744
10737
 
10745
10738
  // Copyright (c) Microsoft Corporation.
@@ -11713,15 +11706,11 @@ const ChatMessageComponentAsEditBox = (props) => {
11713
11706
  return react.concatStyleSets(editBoxStyleSet, { textField: { borderColor: theme.palette.themePrimary } });
11714
11707
  }, [theme.palette.themePrimary]);
11715
11708
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
11716
- const onRenderFileUploads = React.useCallback(() => {
11709
+ const onRenderAttachmentUploads = React.useCallback(() => {
11717
11710
  return (!!attachmentMetadata &&
11718
11711
  attachmentMetadata.length > 0 && (React.createElement("div", { style: { margin: '0.25rem' } },
11719
- React.createElement(_AttachmentUploadCards, { activeFileUploads: attachmentMetadata === null || attachmentMetadata === void 0 ? void 0 : attachmentMetadata.map((file) => ({
11720
- id: file.name,
11721
- filename: file.name,
11722
- progress: 1
11723
- })), onCancelFileUpload: (fileId) => {
11724
- setAttachedFilesMetadata(attachmentMetadata === null || attachmentMetadata === void 0 ? void 0 : attachmentMetadata.filter((file) => file.name !== fileId));
11712
+ React.createElement(_AttachmentUploadCards, { activeAttachmentUploads: attachmentMetadata, onCancelAttachmentUpload: (fileId) => {
11713
+ setAttachedFilesMetadata(attachmentMetadata === null || attachmentMetadata === void 0 ? void 0 : attachmentMetadata.filter((file) => file.id !== fileId));
11725
11714
  } }))));
11726
11715
  }, [attachmentMetadata]);
11727
11716
  const getContent = () => {
@@ -11755,7 +11744,7 @@ const ChatMessageComponentAsEditBox = (props) => {
11755
11744
  });
11756
11745
  e.stopPropagation();
11757
11746
  }, id: 'submitIconWrapper' }))),
11758
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderFileUploads()));
11747
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ onRenderAttachmentUploads()));
11759
11748
  };
11760
11749
  const attached = message.attached === true ? 'center' : message.attached === 'bottom' ? 'bottom' : 'top';
11761
11750
  return (React.createElement(reactChat.ChatMyMessage, { attached: attached, root: {
@@ -12510,7 +12499,7 @@ const ChatMyMessageComponentAsMessageBubble = React.memo(MessageBubble$1);
12510
12499
 
12511
12500
  // Copyright (c) Microsoft Corporation.
12512
12501
  // Licensed under the MIT License.
12513
- var __awaiter$B = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12502
+ var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12514
12503
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12515
12504
  return new (P || (P = Promise))(function (resolve, reject) {
12516
12505
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -12543,7 +12532,7 @@ const ChatMyMessageComponent = (props) => {
12543
12532
  onSendMessage && onSendMessage(content !== undefined ? content : '');
12544
12533
  }, [clientMessageId, content, onSendMessage, onDeleteMessage]);
12545
12534
  if (isEditing && message.messageType === 'chat') {
12546
- return (React.createElement(ChatMessageComponentAsEditBox, { message: message, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$B(void 0, void 0, void 0, function* () {
12535
+ return (React.createElement(ChatMessageComponentAsEditBox, { message: message, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$C(void 0, void 0, void 0, function* () {
12547
12536
  props.onUpdateMessage &&
12548
12537
  message.messageId &&
12549
12538
  (yield props.onUpdateMessage(message.messageId, text, metadata, options));
@@ -12922,7 +12911,7 @@ const fluentChatComponent = (props) => {
12922
12911
 
12923
12912
  // Copyright (c) Microsoft Corporation.
12924
12913
  // Licensed under the MIT License.
12925
- var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12914
+ var __awaiter$B = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12926
12915
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12927
12916
  return new (P || (P = Promise))(function (resolve, reject) {
12928
12917
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -13107,7 +13096,7 @@ const MessageThreadWrapper = (props) => {
13107
13096
  const previousMessagesRef = React.useRef([]);
13108
13097
  // an aria label for Narrator to notify when a message is deleted
13109
13098
  const [deletedMessageAriaLabel, setDeletedMessageAriaLabel] = React.useState(undefined);
13110
- const onDeleteMessageCallback = React.useCallback((messageId) => __awaiter$A(void 0, void 0, void 0, function* () {
13099
+ const onDeleteMessageCallback = React.useCallback((messageId) => __awaiter$B(void 0, void 0, void 0, function* () {
13111
13100
  if (!onDeleteMessage) {
13112
13101
  return;
13113
13102
  }
@@ -13188,7 +13177,7 @@ const MessageThreadWrapper = (props) => {
13188
13177
  */
13189
13178
  const clientHeight = (_a = chatThreadRef.current) === null || _a === void 0 ? void 0 : _a.clientHeight;
13190
13179
  // we try to only send those message status if user is scrolled to the bottom.
13191
- const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$A(void 0, void 0, void 0, function* () {
13180
+ const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$B(void 0, void 0, void 0, function* () {
13192
13181
  if (!isAtBottomOfScrollRef.current ||
13193
13182
  !document.hasFocus() ||
13194
13183
  !messagesRef.current ||
@@ -13239,7 +13228,7 @@ const MessageThreadWrapper = (props) => {
13239
13228
  setIsAtBottomOfScrollRef(atBottom);
13240
13229
  }, [scrollToBottom, sendMessageStatusIfAtBottom]);
13241
13230
  // Infinite scrolling + threadInitialize function
13242
- const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$A(void 0, void 0, void 0, function* () {
13231
+ const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$B(void 0, void 0, void 0, function* () {
13243
13232
  if (!isLoadingChatMessagesRef.current) {
13244
13233
  if (onLoadPreviousChatMessages) {
13245
13234
  isLoadingChatMessagesRef.current = true;
@@ -14334,8 +14323,9 @@ const playFrames$1 = react.memoizeFunction(() => react.keyframes({
14334
14323
  *
14335
14324
  * @private
14336
14325
  */
14337
- const emojiStyles = (backgroundImage, animationPlayState) => {
14326
+ const emojiStyles = (backgroundImage, animationPlayState, frameCount) => {
14338
14327
  const imageResourceUrl = `url(${backgroundImage})`;
14328
+ const steps = frameCount !== null && frameCount !== void 0 ? frameCount : 51;
14339
14329
  return {
14340
14330
  display: 'flex',
14341
14331
  flexDirection: 'column',
@@ -14344,7 +14334,7 @@ const emojiStyles = (backgroundImage, animationPlayState) => {
14344
14334
  backgroundImage: imageResourceUrl,
14345
14335
  animationName: playFrames$1(),
14346
14336
  animationDuration: '8.12s',
14347
- animationTimingFunction: `steps(102)`,
14337
+ animationTimingFunction: `steps(${steps})`,
14348
14338
  animationPlayState: animationPlayState,
14349
14339
  animationIterationCount: 'infinite',
14350
14340
  justifyContent: 'center',
@@ -14943,7 +14933,9 @@ const playFrames = react.memoizeFunction(() => react.keyframes({
14943
14933
  * @private
14944
14934
  */
14945
14935
  const reactionRenderingStyle = (args) => {
14936
+ var _a;
14946
14937
  const imageUrl = `url(${args.spriteImageUrl})`;
14938
+ const steps = (_a = args.frameCount) !== null && _a !== void 0 ? _a : 51;
14947
14939
  return react.mergeStyles({
14948
14940
  height: '100%',
14949
14941
  width: '100%',
@@ -14951,7 +14943,7 @@ const reactionRenderingStyle = (args) => {
14951
14943
  animationName: playFrames(),
14952
14944
  backgroundImage: imageUrl,
14953
14945
  animationDuration: '5.12s',
14954
- animationTimingFunction: `steps(102)`,
14946
+ animationTimingFunction: `steps(${steps})`,
14955
14947
  backgroundSize: `cover`,
14956
14948
  animationPlayState: 'running',
14957
14949
  animationIterationCount: 'infinite',
@@ -15436,7 +15428,28 @@ const getEmojiResource = (reactionName, reactionResources) => {
15436
15428
  case 'surprised':
15437
15429
  return (_e = reactionResources.surprisedReaction) === null || _e === void 0 ? void 0 : _e.url;
15438
15430
  }
15439
- return '';
15431
+ return undefined;
15432
+ };
15433
+ /* @conditional-compile-remove(reaction) */
15434
+ /**
15435
+ * @private
15436
+ */
15437
+ const getEmojiFrameCount = (reactionName, reactionResources) => {
15438
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
15439
+ switch (reactionName) {
15440
+ case 'like':
15441
+ return (_b = (_a = reactionResources.likeReaction) === null || _a === void 0 ? void 0 : _a.frameCount) !== null && _b !== void 0 ? _b : 0;
15442
+ case 'heart':
15443
+ return (_d = (_c = reactionResources.heartReaction) === null || _c === void 0 ? void 0 : _c.frameCount) !== null && _d !== void 0 ? _d : 0;
15444
+ case 'laugh':
15445
+ return (_f = (_e = reactionResources.laughReaction) === null || _e === void 0 ? void 0 : _e.frameCount) !== null && _f !== void 0 ? _f : 0;
15446
+ case 'applause':
15447
+ return (_h = (_g = reactionResources.applauseReaction) === null || _g === void 0 ? void 0 : _g.frameCount) !== null && _h !== void 0 ? _h : 0;
15448
+ case 'surprised':
15449
+ return (_k = (_j = reactionResources.surprisedReaction) === null || _j === void 0 ? void 0 : _j.frameCount) !== null && _k !== void 0 ? _k : 0;
15450
+ default:
15451
+ return 0;
15452
+ }
15440
15453
  };
15441
15454
 
15442
15455
  // Copyright (c) Microsoft Corporation.
@@ -15478,7 +15491,10 @@ const ParticipantVideoTileOverlay = React.memo((props) => {
15478
15491
  const [isValidImageSource, setIsValidImageSource] = React.useState(false);
15479
15492
  const backgroundImageUrl = reaction !== undefined && reactionResources !== undefined
15480
15493
  ? getEmojiResource(reaction === null || reaction === void 0 ? void 0 : reaction.reactionType, reactionResources)
15481
- : '';
15494
+ : undefined;
15495
+ const frameCount = reaction !== undefined && reactionResources !== undefined
15496
+ ? getEmojiFrameCount(reaction === null || reaction === void 0 ? void 0 : reaction.reactionType, reactionResources)
15497
+ : undefined;
15482
15498
  const currentUnixTimeStamp = Date.now();
15483
15499
  const receivedUnixTimestamp = reaction ? getReceivedUnixTime(reaction.receivedOn) : undefined;
15484
15500
  const canRenderReaction = (receivedUnixTimestamp
@@ -15498,8 +15514,9 @@ const ParticipantVideoTileOverlay = React.memo((props) => {
15498
15514
  const spriteImageUrl = backgroundImageUrl !== null && backgroundImageUrl !== void 0 ? backgroundImageUrl : undefined;
15499
15515
  const reactionContainerStyles = React.useCallback(() => reactionRenderingStyle({
15500
15516
  spriteImageUrl,
15501
- emojiSize: emojiSize
15502
- }), [spriteImageUrl, emojiSize]);
15517
+ emojiSize: emojiSize,
15518
+ frameCount
15519
+ }), [spriteImageUrl, emojiSize, frameCount]);
15503
15520
  return (React.createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles, {
15504
15521
  display: 'flex',
15505
15522
  justifyContent: 'center',
@@ -15515,22 +15532,6 @@ const ParticipantVideoTileOverlay = React.memo((props) => {
15515
15532
  // Licensed under the MIT License.
15516
15533
  /* @conditional-compile-remove(reaction) */
15517
15534
  /* @conditional-compile-remove(reaction) */
15518
- /**
15519
- * Generate random float between two numbers, including min and max
15520
- * @private
15521
- */
15522
- function getRandomFloat(minValue, maxValue) {
15523
- return minValue + Math.random() * (maxValue - minValue);
15524
- }
15525
- /* @conditional-compile-remove(reaction) */
15526
- /**
15527
- * Generate random int between two numbers, including min and max
15528
- * @private
15529
- */
15530
- function getRandomInt(minValue, maxValue) {
15531
- return Math.floor(getRandomFloat(minValue, maxValue + 1));
15532
- }
15533
- /* @conditional-compile-remove(reaction) */
15534
15535
  /**
15535
15536
  * Calculate the start position for a new reaction in the prescriptive wave pattern
15536
15537
  * @private
@@ -15619,23 +15620,18 @@ function scaleStartPos(index) {
15619
15620
  }
15620
15621
  /* @conditional-compile-remove(reaction) */
15621
15622
  /**
15623
+ * We have only one bucket item for presentation style of the reaction animation.
15624
+ * We are choosing to keep the array so that, in future, with styles needed to get updated, one
15625
+ * can add new styles and apply from here, rather than updating over the same style. Later we can remove
15626
+ * the old ones.
15627
+ * It is for the ease of testing and implementation.
15622
15628
  * @private
15623
15629
  */
15624
15630
  const ReactionStyleBuckets = [
15625
- {
15626
- sizeScale: 1,
15627
- heightMaxScale: 1 * 0.95,
15628
- opacityMax: 1
15629
- },
15630
15631
  {
15631
15632
  sizeScale: 0.9,
15632
15633
  heightMaxScale: 0.7 * 0.95,
15633
15634
  opacityMax: 0.9
15634
- },
15635
- {
15636
- sizeScale: 0.8,
15637
- heightMaxScale: 0.4 * 0.95,
15638
- opacityMax: 0.8
15639
15635
  }
15640
15636
  ];
15641
15637
  /* @conditional-compile-remove(reaction) */
@@ -15645,8 +15641,10 @@ const ReactionStyleBuckets = [
15645
15641
  * height, width, and opacity.
15646
15642
  * @private
15647
15643
  */
15648
- function getReactionStyleBucket(activeSpritesCount) {
15649
- const index = activeSpritesCount < 3 ? 0 : activeSpritesCount < 5 ? getRandomInt(0, 1) : getRandomInt(0, 2);
15644
+ function getReactionStyleBucket() {
15645
+ // Having dynamic emoji size on rendering animation impacts performance of the animation itself.
15646
+ // So we are choosing to use a fixed size for all cases.
15647
+ const index = 0;
15650
15648
  return ReactionStyleBuckets[index];
15651
15649
  }
15652
15650
  /* @conditional-compile-remove(reaction) */
@@ -15805,7 +15803,7 @@ const RemoteContentShareReactionOverlay = React.memo((props) => {
15805
15803
  reaction: reaction,
15806
15804
  id: combinedKey,
15807
15805
  reactionMovementIndex: reactionMovementIndex,
15808
- styleBucket: getReactionStyleBucket(reactionMovementIndex)
15806
+ styleBucket: getReactionStyleBucket()
15809
15807
  }
15810
15808
  ]);
15811
15809
  return;
@@ -15846,8 +15844,8 @@ const RemoteContentShareReactionOverlay = React.memo((props) => {
15846
15844
  };
15847
15845
  const containerHeight = hostDivHeight !== null && hostDivHeight !== void 0 ? hostDivHeight : 0;
15848
15846
  const containerWidth = hostDivWidth !== null && hostDivWidth !== void 0 ? hostDivWidth : 0;
15849
- const styleBucket = (activeSprites) => getReactionStyleBucket(activeSprites);
15850
- const displaySizePx = (activeSprites) => REACTION_START_DISPLAY_SIZE * styleBucket(activeSprites).sizeScale;
15847
+ const styleBucket = () => getReactionStyleBucket();
15848
+ const displaySizePx = () => REACTION_START_DISPLAY_SIZE * styleBucket().sizeScale;
15851
15849
  const leftPosition = (position) => generateStartPositionWave(position, containerWidth / 2, true);
15852
15850
  const reactionMovementStyle = (position) => getReactionMovementStyle(leftPosition(position));
15853
15851
  return (React.createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles, {
@@ -15870,7 +15868,7 @@ const RemoteContentShareReactionOverlay = React.memo((props) => {
15870
15868
  removeVisibleReaction(reaction.reaction.reactionType, reaction.id, reaction.reactionMovementIndex);
15871
15869
  }, style: opacityAnimationStyles(reaction.styleBucket.opacityMax) },
15872
15870
  React.createElement("div", { style: reactionMovementStyle(reaction.reactionMovementIndex) },
15873
- React.createElement("div", { style: spriteAnimationStyles(REACTION_NUMBER_OF_ANIMATION_FRAMES, displaySizePx(visibleReactions.length), (_a = getEmojiResource(reaction === null || reaction === void 0 ? void 0 : reaction.reaction.reactionType, reactionResources)) !== null && _a !== void 0 ? _a : '') }))))))));
15871
+ React.createElement("div", { style: spriteAnimationStyles(REACTION_NUMBER_OF_ANIMATION_FRAMES, displaySizePx(), (_a = getEmojiResource(reaction === null || reaction === void 0 ? void 0 : reaction.reaction.reactionType, reactionResources)) !== null && _a !== void 0 ? _a : '') }))))))));
15874
15872
  })));
15875
15873
  });
15876
15874
 
@@ -16258,7 +16256,7 @@ const localVideoTileContainerStyles = {
16258
16256
 
16259
16257
  // Copyright (c) Microsoft Corporation.
16260
16258
  // Licensed under the MIT License.
16261
- var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16259
+ var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16262
16260
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16263
16261
  return new (P || (P = Promise))(function (resolve, reject) {
16264
16262
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -16275,7 +16273,7 @@ const LocalVideoCameraCycleButton = (props) => {
16275
16273
  const { cameras, selectedCamera, onSelectCamera, label, ariaDescription, size } = props;
16276
16274
  const theme = react.useTheme();
16277
16275
  const [waitForCamera, setWaitForCamera] = React.useState(false);
16278
- const onChangeCameraClick = React.useCallback((device) => __awaiter$z(void 0, void 0, void 0, function* () {
16276
+ const onChangeCameraClick = React.useCallback((device) => __awaiter$A(void 0, void 0, void 0, function* () {
16279
16277
  // Throttle changing camera to prevent too many callbacks
16280
16278
  if (onSelectCamera) {
16281
16279
  setWaitForCamera(true);
@@ -19145,7 +19143,7 @@ const DevicesButton = (props) => {
19145
19143
 
19146
19144
  // Copyright (c) Microsoft Corporation.
19147
19145
  // Licensed under the MIT License.
19148
- var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
19146
+ var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
19149
19147
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19150
19148
  return new (P || (P = Promise))(function (resolve, reject) {
19151
19149
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -19183,7 +19181,7 @@ const CameraButton = (props) => {
19183
19181
  const toggleAnnouncerString = React.useCallback((isCameraOn) => {
19184
19182
  setAnnouncerString(!isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement);
19185
19183
  }, [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]);
19186
- const onToggleClick = React.useCallback(() => __awaiter$y(void 0, void 0, void 0, function* () {
19184
+ const onToggleClick = React.useCallback(() => __awaiter$z(void 0, void 0, void 0, function* () {
19187
19185
  // Throttle click on camera, need to await onToggleCamera then allow another click
19188
19186
  if (onToggleCamera) {
19189
19187
  setWaitForCamera(true);
@@ -19197,7 +19195,7 @@ const CameraButton = (props) => {
19197
19195
  }
19198
19196
  }
19199
19197
  }), [cameraOn, localVideoViewOptions, onToggleCamera, toggleAnnouncerString]);
19200
- const onChangeCameraClick = React.useCallback((device) => __awaiter$y(void 0, void 0, void 0, function* () {
19198
+ const onChangeCameraClick = React.useCallback((device) => __awaiter$z(void 0, void 0, void 0, function* () {
19201
19199
  // Throttle changing camera to prevent too many callbacks
19202
19200
  if (onSelectCamera) {
19203
19201
  setWaitForCamera(true);
@@ -19288,7 +19286,6 @@ const ControlBar = (props) => {
19288
19286
 
19289
19287
  // Copyright (c) Microsoft Corporation.
19290
19288
  // Licensed under the MIT License.
19291
- var _a, _b;
19292
19289
  const onRenderEndCallIcon = () => React.createElement(react.Icon, { iconName: "ControlButtonEndCall" });
19293
19290
  /**
19294
19291
  * A button to end an ongoing call.
@@ -19298,68 +19295,109 @@ const onRenderEndCallIcon = () => React.createElement(react.Icon, { iconName: "C
19298
19295
  * @public
19299
19296
  */
19300
19297
  const EndCallButton = (props) => {
19301
- var _a, _b, _c;
19302
- const { styles } = props;
19298
+ var _a, _b;
19299
+ const { styles, /* @conditional-compile-remove(end-call-options) */ enableEndCallMenu, onHangUp } = props;
19303
19300
  const localeStrings = useLocale$1().strings.endCallButton;
19304
19301
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
19305
19302
  const theme = useTheme();
19306
19303
  const isDarkTheme = isDarkThemed(theme);
19307
19304
  const componentStyles = react.concatStyleSets(isDarkTheme ? darkThemeCallButtonStyles : lightThemeCallButtonStyles, styles !== null && styles !== void 0 ? styles : {});
19308
- return (React.createElement(ControlBarButton, Object.assign({}, props, { onClick: (_a = props.onHangUp) !== null && _a !== void 0 ? _a : props.onClick, styles: componentStyles, onRenderIcon: (_b = props.onRenderIcon) !== null && _b !== void 0 ? _b : onRenderEndCallIcon, strings: strings, labelKey: (_c = props.labelKey) !== null && _c !== void 0 ? _c : 'endCallButtonLabel' })));
19305
+ /* @conditional-compile-remove(end-call-options) */
19306
+ const defaultMenuProps = {
19307
+ items: [
19308
+ {
19309
+ key: 'endForSelf',
19310
+ text: localeStrings.leaveOption,
19311
+ title: localeStrings.leaveOption,
19312
+ onClick: () => {
19313
+ onHangUp && onHangUp(false);
19314
+ }
19315
+ },
19316
+ {
19317
+ key: 'endForEveryone',
19318
+ text: localeStrings.endCallOption,
19319
+ title: localeStrings.endCallOption,
19320
+ onClick: () => {
19321
+ onHangUp && onHangUp(true);
19322
+ }
19323
+ }
19324
+ ],
19325
+ styles: props.styles,
19326
+ calloutProps: {
19327
+ styles: {
19328
+ root: {
19329
+ maxWidth: '95%'
19330
+ }
19331
+ },
19332
+ preventDismissOnEvent: _preventDismissOnEvent
19333
+ }
19334
+ };
19335
+ return (React.createElement(React.Fragment, null,
19336
+ React.createElement(ControlBarButton, Object.assign({}, props, {
19337
+ /* @conditional-compile-remove(end-call-options) */
19338
+ menuProps: enableEndCallMenu ? defaultMenuProps : undefined, onClick: onHangUp ? () => onHangUp() : props.onClick, styles: componentStyles, onRenderIcon: (_a = props.onRenderIcon) !== null && _a !== void 0 ? _a : onRenderEndCallIcon, strings: strings, labelKey: (_b = props.labelKey) !== null && _b !== void 0 ? _b : 'endCallButtonLabel' }))));
19309
19339
  };
19310
- // using media query to prevent windows from overwriting the button color
19311
- const darkThemeCallButtonStyles = {
19312
- root: {
19313
- color: darkTheme.callingPalette.iconWhite,
19314
- background: darkTheme.callingPalette.callRed,
19315
- '@media (forced-colors: active)': {
19316
- forcedColorAdjust: 'auto',
19317
- border: `1px ${(_a = lightTheme.palette) === null || _a === void 0 ? void 0 : _a.neutralQuaternaryAlt} solid`
19340
+ const getButtonStyles = (theme) => {
19341
+ var _a;
19342
+ return ({
19343
+ regular: {
19344
+ color: theme.callingPalette.iconWhite,
19345
+ background: theme.callingPalette.callRed,
19346
+ '@media (forced-colors: active)': {
19347
+ forcedColorAdjust: 'auto',
19348
+ border: `1px ${(_a = theme.palette) === null || _a === void 0 ? void 0 : _a.neutralQuaternaryAlt} solid`
19349
+ },
19350
+ ' i': {
19351
+ color: theme.callingPalette.iconWhite
19352
+ },
19353
+ ':focus::after': { outlineColor: `${theme.callingPalette.iconWhite} !important` } // added !important to avoid override by FluentUI button styles
19318
19354
  },
19319
- ':focus::after': { outlineColor: `${darkTheme.callingPalette.iconWhite} !important` } // added !important to avoid override by FluentUI button styles
19320
- },
19321
- rootHovered: {
19322
- color: darkTheme.callingPalette.iconWhite,
19323
- background: darkTheme.callingPalette.callRed,
19324
- '@media (forced-colors: active)': {
19325
- forcedColorAdjust: 'auto'
19326
- }
19327
- },
19328
- rootPressed: {
19329
- color: darkTheme.callingPalette.iconWhite,
19330
- background: darkTheme.callingPalette.callRed,
19331
- '@media (forced-colors: active)': {
19332
- forcedColorAdjust: 'auto'
19355
+ pressed: {
19356
+ color: theme.callingPalette.iconWhite,
19357
+ background: theme.callingPalette.callRedDarker,
19358
+ border: 'none',
19359
+ ' i': {
19360
+ color: theme.callingPalette.iconWhite
19361
+ },
19362
+ '@media (forced-colors: active)': {
19363
+ forcedColorAdjust: 'auto'
19364
+ }
19365
+ },
19366
+ hovered: {
19367
+ color: theme.callingPalette.iconWhite,
19368
+ background: theme.callingPalette.callRedDark,
19369
+ border: 'none',
19370
+ ' i': {
19371
+ color: theme.callingPalette.iconWhite
19372
+ },
19373
+ '@media (forced-colors: active)': {
19374
+ forcedColorAdjust: 'auto'
19375
+ }
19333
19376
  }
19334
- },
19377
+ });
19378
+ };
19379
+ const darkThemeButtonStyles = getButtonStyles(darkTheme);
19380
+ const lightThemeButtonStyles = getButtonStyles(lightTheme);
19381
+ // using media query to prevent windows from overwriting the button color
19382
+ const darkThemeCallButtonStyles = {
19383
+ root: darkThemeButtonStyles.regular,
19384
+ rootHovered: darkThemeButtonStyles.hovered,
19385
+ rootPressed: darkThemeButtonStyles.pressed,
19335
19386
  label: {
19336
19387
  color: darkTheme.callingPalette.iconWhite
19337
- }
19388
+ },
19389
+ splitButtonMenuButton: Object.assign(Object.assign({}, darkThemeButtonStyles.regular), { borderTop: 'none', borderRight: 'none', borderBottom: 'none', '&:hover': darkThemeButtonStyles.hovered }),
19390
+ splitButtonMenuButtonChecked: darkThemeButtonStyles.hovered,
19391
+ splitButtonMenuButtonExpanded: darkThemeButtonStyles.pressed
19338
19392
  };
19339
19393
  const lightThemeCallButtonStyles = {
19340
- root: {
19341
- color: lightTheme.callingPalette.iconWhite,
19342
- background: lightTheme.callingPalette.callRed,
19343
- '@media (forced-colors: active)': {
19344
- forcedColorAdjust: 'auto',
19345
- border: `1px ${(_b = lightTheme.palette) === null || _b === void 0 ? void 0 : _b.neutralQuaternaryAlt} solid`
19346
- },
19347
- ':focus::after': { outlineColor: `${lightTheme.callingPalette.iconWhite} !important` } // added !important to avoid override by FluentUI button styles
19348
- },
19349
- rootHovered: {
19350
- color: lightTheme.callingPalette.iconWhite,
19351
- background: lightTheme.callingPalette.callRed,
19352
- '@media (forced-colors: active)': {
19353
- forcedColorAdjust: 'auto'
19354
- }
19355
- },
19356
- rootPressed: {
19357
- color: lightTheme.callingPalette.iconWhite,
19358
- background: lightTheme.callingPalette.callRed,
19359
- '@media (forced-colors: active)': {
19360
- forcedColorAdjust: 'auto'
19361
- }
19362
- },
19394
+ root: lightThemeButtonStyles.regular,
19395
+ rootHovered: lightThemeButtonStyles.hovered,
19396
+ rootPressed: lightThemeButtonStyles.pressed,
19397
+ splitButtonMenuButton: Object.assign(Object.assign({}, lightThemeButtonStyles.regular), { borderTop: 'none', borderRight: 'none', borderBottom: 'none', '&:hover': lightThemeButtonStyles.hovered }),
19398
+ splitButtonMenuButtonChecked: lightThemeButtonStyles.hovered,
19399
+ splitButtonMenuButtonExpanded: lightThemeButtonStyles.pressed,
19400
+ splitButtonMenuFocused: lightThemeButtonStyles.pressed,
19363
19401
  label: {
19364
19402
  color: lightTheme.callingPalette.iconWhite
19365
19403
  }
@@ -19367,7 +19405,7 @@ const lightThemeCallButtonStyles = {
19367
19405
 
19368
19406
  // Copyright (c) Microsoft Corporation.
19369
19407
  // Licensed under the MIT License.
19370
- var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
19408
+ var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
19371
19409
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19372
19410
  return new (P || (P = Promise))(function (resolve, reject) {
19373
19411
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -19408,7 +19446,7 @@ const MicrophoneButton = (props) => {
19408
19446
  const toggleAnnouncerString = React.useCallback((isMicOn) => {
19409
19447
  setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);
19410
19448
  }, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);
19411
- const onToggleClick = React.useCallback(() => __awaiter$x(void 0, void 0, void 0, function* () {
19449
+ const onToggleClick = React.useCallback(() => __awaiter$y(void 0, void 0, void 0, function* () {
19412
19450
  if (onToggleMicrophone) {
19413
19451
  try {
19414
19452
  yield onToggleMicrophone();
@@ -19922,19 +19960,19 @@ const ReactionButton = (props) => {
19922
19960
  const styles = reactionButtonStyles(theme);
19923
19961
  const onRenderIcon = () => (React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: "ReactionButtonIcon" }));
19924
19962
  const [isHoveredMap, setIsHoveredMap] = React.useState(new Map());
19925
- const emojis = ['like', 'heart', 'laugh', 'applause', 'surprised'];
19963
+ const emojis = ['like', 'heart', 'applause', 'laugh', 'surprised'];
19926
19964
  const emojiButtonTooltip = new Map([
19927
19965
  ['like', strings.likeReactionTooltipContent],
19928
19966
  ['heart', strings.heartReactionTooltipContent],
19929
- ['laugh', strings.laughReactionTooltipContent],
19930
19967
  ['applause', strings.applauseReactionTooltipContent],
19968
+ ['laugh', strings.laughReactionTooltipContent],
19931
19969
  ['surprised', strings.surprisedReactionTooltipContent]
19932
19970
  ]);
19933
19971
  const emojiResource = new Map([
19934
19972
  ['like', (_a = props.reactionResources.likeReaction) === null || _a === void 0 ? void 0 : _a.url],
19935
19973
  ['heart', (_b = props.reactionResources.heartReaction) === null || _b === void 0 ? void 0 : _b.url],
19936
- ['laugh', (_c = props.reactionResources.laughReaction) === null || _c === void 0 ? void 0 : _c.url],
19937
- ['applause', (_d = props.reactionResources.applauseReaction) === null || _d === void 0 ? void 0 : _d.url],
19974
+ ['applause', (_c = props.reactionResources.applauseReaction) === null || _c === void 0 ? void 0 : _c.url],
19975
+ ['laugh', (_d = props.reactionResources.laughReaction) === null || _d === void 0 ? void 0 : _d.url],
19938
19976
  ['surprised', (_e = props.reactionResources.surprisedReaction) === null || _e === void 0 ? void 0 : _e.url]
19939
19977
  ]);
19940
19978
  const calloutStyle = { root: { padding: 0 }, calloutMain: { padding: '0.5rem' } };
@@ -19945,6 +19983,7 @@ const ReactionButton = (props) => {
19945
19983
  };
19946
19984
  const renderEmoji = (item, dismissMenu) => (React.createElement("div", { style: reactionEmojiMenuStyles() }, emojis.map((emoji, index) => {
19947
19985
  const resourceUrl = emojiResource.get(emoji);
19986
+ const frameCount = props.reactionResources !== undefined ? getEmojiFrameCount(emoji, props.reactionResources) : 0;
19948
19987
  return (React.createElement(react.TooltipHost, { key: index, "data-ui-id": index, hidden: props.disableTooltip, content: emojiButtonTooltip.get(emoji), styles: reactionToolTipHostStyle(), calloutProps: Object.assign({}, calloutProps) },
19949
19988
  React.createElement(react.IconButton, { key: index, onClick: () => {
19950
19989
  props.onReactionClick(emoji);
@@ -19952,7 +19991,7 @@ const ReactionButton = (props) => {
19952
19991
  return new Map(prevMap).set(emoji, false);
19953
19992
  });
19954
19993
  dismissMenu();
19955
- }, style: emojiStyles(resourceUrl ? resourceUrl : '', isHoveredMap.get(emoji) ? 'running' : 'paused'), onMouseEnter: () => setIsHoveredMap((prevMap) => {
19994
+ }, style: emojiStyles(resourceUrl ? resourceUrl : '', isHoveredMap.get(emoji) ? 'running' : 'paused', frameCount), onMouseEnter: () => setIsHoveredMap((prevMap) => {
19956
19995
  return new Map(prevMap).set(emoji, true);
19957
19996
  }), onMouseLeave: () => setIsHoveredMap((prevMap) => {
19958
19997
  return new Map(prevMap).set(emoji, false);
@@ -20518,7 +20557,7 @@ const dtmfFrequencies = {
20518
20557
 
20519
20558
  // Copyright (c) Microsoft Corporation.
20520
20559
  // Licensed under the MIT License.
20521
- var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
20560
+ var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
20522
20561
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
20523
20562
  return new (P || (P = Promise))(function (resolve, reject) {
20524
20563
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -20562,10 +20601,10 @@ const DialpadButton = (props) => {
20562
20601
  const [buttonPressed, setButtonPressed] = React.useState(false);
20563
20602
  const dtmfToneSound = React.useRef(new Tone(dtmfToneAudioContext, dtmfFrequencies[digit].f1, dtmfFrequencies[digit].f2));
20564
20603
  const useLongPressProps = React.useMemo(() => ({
20565
- onClick: () => __awaiter$w(void 0, void 0, void 0, function* () {
20604
+ onClick: () => __awaiter$x(void 0, void 0, void 0, function* () {
20566
20605
  onClick(digit, index);
20567
20606
  }),
20568
- onLongPress: () => __awaiter$w(void 0, void 0, void 0, function* () {
20607
+ onLongPress: () => __awaiter$x(void 0, void 0, void 0, function* () {
20569
20608
  onLongPress(digit, index);
20570
20609
  }),
20571
20610
  touchEventsOnly: longPressTrigger === 'touch'
@@ -21399,7 +21438,7 @@ const _VideoBackgroundEffectsPicker = (props) => {
21399
21438
  return (React.createElement(react.Stack, { className: react.mergeStyles((_a = props.styles) === null || _a === void 0 ? void 0 : _a.rowRoot), wrap: props.itemsPerRow === 'wrap', horizontal: true, key: rowIndex, tokens: { childrenGap: '0.5rem' }, "data-ui-id": "video-effects-picker-row" },
21400
21439
  options.map((option, i) => {
21401
21440
  if (i === 0 && rowIndex === 0) {
21402
- return (React.createElement(_VideoEffectsItem, Object.assign({}, option, { itemKey: option.itemKey, key: option.itemKey, focusOnMount: true })));
21441
+ return (React.createElement(_VideoEffectsItem, Object.assign({}, option, { itemKey: option.itemKey, key: option.itemKey, focusOnMount: !props.ignoreFocusOnMount })));
21403
21442
  }
21404
21443
  return React.createElement(_VideoEffectsItem, Object.assign({}, option, { itemKey: option.itemKey, key: option.itemKey }));
21405
21444
  }),
@@ -21719,7 +21758,7 @@ const _spokenLanguageToCaptionLanguage = {
21719
21758
 
21720
21759
  // Copyright (c) Microsoft Corporation.
21721
21760
  // Licensed under the MIT License.
21722
- var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
21761
+ var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
21723
21762
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
21724
21763
  return new (P || (P = Promise))(function (resolve, reject) {
21725
21764
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -21758,7 +21797,7 @@ const _CaptionsSettingsModal = (props) => {
21758
21797
  onDismissCaptionsSettings();
21759
21798
  }
21760
21799
  }, [onDismissCaptionsSettings]);
21761
- const onConfirm = React.useCallback(() => __awaiter$v(void 0, void 0, void 0, function* () {
21800
+ const onConfirm = React.useCallback(() => __awaiter$w(void 0, void 0, void 0, function* () {
21762
21801
  const spokenLanguageCode = selectedSpokenLanguage.key;
21763
21802
  const captionLanguageCode = selectedCaptionLanguage.key;
21764
21803
  if (isCaptionsFeatureActive) {
@@ -22867,7 +22906,7 @@ const findConditionalCompiledSelector = (component) => {
22867
22906
 
22868
22907
  // Copyright (c) Microsoft Corporation.
22869
22908
  // Licensed under the MIT License.
22870
- var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
22909
+ var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
22871
22910
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
22872
22911
  return new (P || (P = Promise))(function (resolve, reject) {
22873
22912
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -22890,14 +22929,14 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
22890
22929
  let messageIterator = undefined;
22891
22930
  let readReceiptIterator = undefined;
22892
22931
  return {
22893
- onSendMessage: (content, options) => __awaiter$u(void 0, void 0, void 0, function* () {
22932
+ onSendMessage: (content, options) => __awaiter$v(void 0, void 0, void 0, function* () {
22894
22933
  const sendMessageRequest = {
22895
22934
  content,
22896
22935
  senderDisplayName: chatClient.getState().displayName
22897
22936
  };
22898
22937
  yield chatThreadClient.sendMessage(sendMessageRequest, options);
22899
22938
  }),
22900
- onUpdateMessage: (messageId, content, options) => __awaiter$u(void 0, void 0, void 0, function* () {
22939
+ onUpdateMessage: (messageId, content, options) => __awaiter$v(void 0, void 0, void 0, function* () {
22901
22940
  const updatedMetadata = (options === null || options === void 0 ? void 0 : options.metadata) ? Object.assign({}, options.metadata) : {};
22902
22941
  if ((options === null || options === void 0 ? void 0 : options.attachmentMetadata) && (options === null || options === void 0 ? void 0 : options.attachmentMetadata.length) > 0) {
22903
22942
  // Only create object if there are objects to add.
@@ -22905,23 +22944,23 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
22905
22944
  }
22906
22945
  yield chatThreadClient.updateMessage(messageId, { content, metadata: updatedMetadata });
22907
22946
  }),
22908
- onDeleteMessage: (messageId) => __awaiter$u(void 0, void 0, void 0, function* () {
22947
+ onDeleteMessage: (messageId) => __awaiter$v(void 0, void 0, void 0, function* () {
22909
22948
  yield chatThreadClient.deleteMessage(messageId);
22910
22949
  }),
22911
22950
  // This handler is designed for chatThread to consume
22912
- onMessageSeen: (chatMessageId) => __awaiter$u(void 0, void 0, void 0, function* () {
22951
+ onMessageSeen: (chatMessageId) => __awaiter$v(void 0, void 0, void 0, function* () {
22913
22952
  yield chatThreadClient.sendReadReceipt({ chatMessageId });
22914
22953
  }),
22915
- onTyping: () => __awaiter$u(void 0, void 0, void 0, function* () {
22954
+ onTyping: () => __awaiter$v(void 0, void 0, void 0, function* () {
22916
22955
  yield chatThreadClient.sendTypingNotification();
22917
22956
  }),
22918
- onRemoveParticipant: (userId) => __awaiter$u(void 0, void 0, void 0, function* () {
22957
+ onRemoveParticipant: (userId) => __awaiter$v(void 0, void 0, void 0, function* () {
22919
22958
  yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
22920
22959
  }),
22921
- updateThreadTopicName: (topicName) => __awaiter$u(void 0, void 0, void 0, function* () {
22960
+ updateThreadTopicName: (topicName) => __awaiter$v(void 0, void 0, void 0, function* () {
22922
22961
  yield chatThreadClient.updateTopic(topicName);
22923
22962
  }),
22924
- onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$u(void 0, void 0, void 0, function* () {
22963
+ onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$v(void 0, void 0, void 0, function* () {
22925
22964
  var _a, _b, _c;
22926
22965
  if (messageIterator === undefined) {
22927
22966
  // Lazy definition so that errors in the method call are reported correctly.
@@ -23832,7 +23871,7 @@ const Constants = {
23832
23871
  */
23833
23872
  const chatStatefulLogger = logger.createClientLogger('communication-react:chat-stateful');
23834
23873
 
23835
- var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
23874
+ var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
23836
23875
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23837
23876
  return new (P || (P = Promise))(function (resolve, reject) {
23838
23877
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -23874,7 +23913,7 @@ class ResourceDownloadQueue {
23874
23913
  this._messagesNeedingResourceRetrieval.push(copy);
23875
23914
  }
23876
23915
  startQueue(threadId, operation, options) {
23877
- return __awaiter$t(this, void 0, void 0, function* () {
23916
+ return __awaiter$u(this, void 0, void 0, function* () {
23878
23917
  if (this.isActive) {
23879
23918
  return;
23880
23919
  }
@@ -23910,7 +23949,7 @@ class ResourceDownloadQueue {
23910
23949
  }
23911
23950
  }
23912
23951
  downloadSingleUrl(message, resourceUrl, operation) {
23913
- return __awaiter$t(this, void 0, void 0, function* () {
23952
+ return __awaiter$u(this, void 0, void 0, function* () {
23914
23953
  const response = { sourceUrl: '' };
23915
23954
  try {
23916
23955
  const abortController = new AbortController();
@@ -23926,7 +23965,7 @@ class ResourceDownloadQueue {
23926
23965
  });
23927
23966
  }
23928
23967
  downloadAllPreviewUrls(message, operation) {
23929
- return __awaiter$t(this, void 0, void 0, function* () {
23968
+ return __awaiter$u(this, void 0, void 0, function* () {
23930
23969
  var _a;
23931
23970
  const attachments = (_a = message.content) === null || _a === void 0 ? void 0 : _a.attachments;
23932
23971
  if (message.type === 'html' && attachments) {
@@ -23953,7 +23992,7 @@ class ResourceDownloadQueue {
23953
23992
  });
23954
23993
  }
23955
23994
  downloadResource(operation, url, abortController) {
23956
- return __awaiter$t(this, void 0, void 0, function* () {
23995
+ return __awaiter$u(this, void 0, void 0, function* () {
23957
23996
  this._requestsToCancel[url] = { src: url, abortController };
23958
23997
  const blobUrl = yield operation(url, { credential: this._credential, endpoint: this._endpoint }, { abortController });
23959
23998
  delete this._requestsToCancel[url];
@@ -23964,9 +24003,9 @@ class ResourceDownloadQueue {
23964
24003
  /**
23965
24004
  * @private
23966
24005
  */
23967
- const fetchImageSource = (src, authentication, options) => __awaiter$t(void 0, void 0, void 0, function* () {
24006
+ const fetchImageSource = (src, authentication, options) => __awaiter$u(void 0, void 0, void 0, function* () {
23968
24007
  function fetchWithAuthentication(url, token, options) {
23969
- return __awaiter$t(this, void 0, void 0, function* () {
24008
+ return __awaiter$u(this, void 0, void 0, function* () {
23970
24009
  const headers = new Headers();
23971
24010
  headers.append('Authorization', `Bearer ${token}`);
23972
24011
  return yield fetchWithTimeout(url, {
@@ -23977,7 +24016,7 @@ const fetchImageSource = (src, authentication, options) => __awaiter$t(void 0, v
23977
24016
  });
23978
24017
  }
23979
24018
  function fetchWithTimeout(resource, options) {
23980
- return __awaiter$t(this, void 0, void 0, function* () {
24019
+ return __awaiter$u(this, void 0, void 0, function* () {
23981
24020
  // default timeout is 30 seconds
23982
24021
  const { timeout = 30000, abortController } = options;
23983
24022
  const id = setTimeout(() => {
@@ -24001,7 +24040,7 @@ const fetchImageSource = (src, authentication, options) => __awaiter$t(void 0, v
24001
24040
 
24002
24041
  // Copyright (c) Microsoft Corporation.
24003
24042
  // Licensed under the MIT License.
24004
- var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24043
+ var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24005
24044
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
24006
24045
  return new (P || (P = Promise))(function (resolve, reject) {
24007
24046
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -24077,7 +24116,7 @@ let ChatContext$1 = class ChatContext {
24077
24116
  // Any item in queue should be removed.
24078
24117
  }
24079
24118
  downloadResourceToCache(threadId, messageId, resourceUrl) {
24080
- return __awaiter$s(this, void 0, void 0, function* () {
24119
+ return __awaiter$t(this, void 0, void 0, function* () {
24081
24120
  var _a;
24082
24121
  let message = (_a = this.getState().threads[threadId]) === null || _a === void 0 ? void 0 : _a.chatMessages[messageId];
24083
24122
  if (message && this._fullsizeImageQueue) {
@@ -24356,7 +24395,7 @@ let ChatContext$1 = class ChatContext {
24356
24395
  * @throws ChatError. Exceptions thrown from `f` are tagged with the failed `target.
24357
24396
  */
24358
24397
  withAsyncErrorTeedToState(f, target) {
24359
- return (...args) => __awaiter$s(this, void 0, void 0, function* () {
24398
+ return (...args) => __awaiter$t(this, void 0, void 0, function* () {
24360
24399
  try {
24361
24400
  return yield f(...args);
24362
24401
  }
@@ -24469,7 +24508,7 @@ const convertChatMessage = (message, status = 'delivered', clientMessageId) => {
24469
24508
 
24470
24509
  // Copyright (c) Microsoft Corporation.
24471
24510
  // Licensed under the MIT License.
24472
- var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24511
+ var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24473
24512
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
24474
24513
  return new (P || (P = Promise))(function (resolve, reject) {
24475
24514
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -24557,7 +24596,7 @@ class EventSubscriber {
24557
24596
  };
24558
24597
  // This is a temporary fix that no participant message is received for onChatMessageReceived event, which should be handled by JS SDK.
24559
24598
  // Without the temporary fix, there are missing 'participant joined' and 'participant left' system messages in the chat thread.
24560
- this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$r(this, void 0, void 0, function* () {
24599
+ this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$s(this, void 0, void 0, function* () {
24561
24600
  var _a, e_1, _b, _c;
24562
24601
  try {
24563
24602
  for (var _d = true, _e = __asyncValues$1(this.chatClient
@@ -24651,7 +24690,7 @@ class EventSubscriber {
24651
24690
 
24652
24691
  // Copyright (c) Microsoft Corporation.
24653
24692
  // Licensed under the MIT License.
24654
- var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24693
+ var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24655
24694
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
24656
24695
  return new (P || (P = Promise))(function (resolve, reject) {
24657
24696
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -24673,7 +24712,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
24673
24712
  const threadsIterator = iteratorCreator(...args);
24674
24713
  return {
24675
24714
  next() {
24676
- return __awaiter$q(this, void 0, void 0, function* () {
24715
+ return __awaiter$r(this, void 0, void 0, function* () {
24677
24716
  const result = yield threadsIterator.next();
24678
24717
  if (!result.done && result.value) {
24679
24718
  decorateFn(result.value, context);
@@ -24688,7 +24727,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
24688
24727
  const pages = threadsIterator.byPage(settings);
24689
24728
  return {
24690
24729
  next() {
24691
- return __awaiter$q(this, void 0, void 0, function* () {
24730
+ return __awaiter$r(this, void 0, void 0, function* () {
24692
24731
  const result = yield pages.next();
24693
24732
  const page = result.value;
24694
24733
  if (!result.done && result.value) {
@@ -24775,7 +24814,7 @@ const createDecoratedListParticipants = (chatThreadClient, context) => {
24775
24814
 
24776
24815
  // Copyright (c) Microsoft Corporation.
24777
24816
  // Licensed under the MIT License.
24778
- var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24817
+ var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24779
24818
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
24780
24819
  return new (P || (P = Promise))(function (resolve, reject) {
24781
24820
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -24794,14 +24833,14 @@ class ProxyChatThreadClient {
24794
24833
  return createDecoratedListMessages(chatThreadClient, this._context);
24795
24834
  }
24796
24835
  case 'getMessage': {
24797
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$p(this, void 0, void 0, function* () {
24836
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$q(this, void 0, void 0, function* () {
24798
24837
  const message = yield chatThreadClient.getMessage(...args);
24799
24838
  this._context.setChatMessage(chatThreadClient.threadId, convertChatMessage(message));
24800
24839
  return message;
24801
24840
  }), 'ChatThreadClient.getMessage');
24802
24841
  }
24803
24842
  case 'sendMessage': {
24804
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$p(this, void 0, void 0, function* () {
24843
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$q(this, void 0, void 0, function* () {
24805
24844
  var _a;
24806
24845
  // Retry logic?
24807
24846
  const [request, options] = args;
@@ -24842,7 +24881,7 @@ class ProxyChatThreadClient {
24842
24881
  }), 'ChatThreadClient.sendMessage');
24843
24882
  }
24844
24883
  case 'addParticipants': {
24845
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$p(this, void 0, void 0, function* () {
24884
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$q(this, void 0, void 0, function* () {
24846
24885
  const result = yield chatThreadClient.addParticipants(...args);
24847
24886
  const [addRequest] = args;
24848
24887
  const participantsToAdd = addRequest.participants;
@@ -24851,7 +24890,7 @@ class ProxyChatThreadClient {
24851
24890
  }), 'ChatThreadClient.addParticipants');
24852
24891
  }
24853
24892
  case 'deleteMessage': {
24854
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$p(this, void 0, void 0, function* () {
24893
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$q(this, void 0, void 0, function* () {
24855
24894
  // DeleteMessage is able to either delete local one(for failed message) or synced message
24856
24895
  const [messageId] = args;
24857
24896
  if (this._context.deleteLocalMessage(chatThreadClient.threadId, messageId)) {
@@ -24869,12 +24908,12 @@ class ProxyChatThreadClient {
24869
24908
  return createDecoratedListReadReceipts(chatThreadClient, this._context);
24870
24909
  }
24871
24910
  case 'sendTypingNotification': {
24872
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$p(this, void 0, void 0, function* () {
24911
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$q(this, void 0, void 0, function* () {
24873
24912
  return yield chatThreadClient.sendTypingNotification(...args);
24874
24913
  }), 'ChatThreadClient.sendTypingNotification');
24875
24914
  }
24876
24915
  case 'removeParticipant': {
24877
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$p(this, void 0, void 0, function* () {
24916
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$q(this, void 0, void 0, function* () {
24878
24917
  const result = yield chatThreadClient.removeParticipant(...args);
24879
24918
  const [removeIdentifier] = args;
24880
24919
  this._context.deleteParticipant(chatThreadClient.threadId, communicationCommon.getIdentifierKind(removeIdentifier));
@@ -24882,7 +24921,7 @@ class ProxyChatThreadClient {
24882
24921
  }), 'ChatThreadClient.removeParticipant');
24883
24922
  }
24884
24923
  case 'updateMessage': {
24885
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$p(this, void 0, void 0, function* () {
24924
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$q(this, void 0, void 0, function* () {
24886
24925
  const result = yield chatThreadClient.updateMessage(...args);
24887
24926
  const [messageId, updateOption] = args;
24888
24927
  this._context.updateChatMessageContent(chatThreadClient.threadId, messageId, updateOption === null || updateOption === void 0 ? void 0 : updateOption.content);
@@ -24890,7 +24929,7 @@ class ProxyChatThreadClient {
24890
24929
  }), 'ChatThreadClient.updateMessage');
24891
24930
  }
24892
24931
  case 'updateTopic': {
24893
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$p(this, void 0, void 0, function* () {
24932
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$q(this, void 0, void 0, function* () {
24894
24933
  const result = yield chatThreadClient.updateTopic(...args);
24895
24934
  const [topic] = args;
24896
24935
  this._context.updateThreadTopic(chatThreadClient.threadId, topic);
@@ -24898,7 +24937,7 @@ class ProxyChatThreadClient {
24898
24937
  }), 'ChatThreadClient.updateTopic');
24899
24938
  }
24900
24939
  case 'getProperties': {
24901
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$p(this, void 0, void 0, function* () {
24940
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$q(this, void 0, void 0, function* () {
24902
24941
  const result = yield chatThreadClient.getProperties(...args);
24903
24942
  this._context.updateThread(chatThreadClient.threadId, result);
24904
24943
  return result;
@@ -24936,7 +24975,7 @@ const createDecoratedListThreads = (chatClient, context) => {
24936
24975
 
24937
24976
  // Copyright (c) Microsoft Corporation.
24938
24977
  // Licensed under the MIT License.
24939
- var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24978
+ var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
24940
24979
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
24941
24980
  return new (P || (P = Promise))(function (resolve, reject) {
24942
24981
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -24955,7 +24994,7 @@ const proxyChatClient = {
24955
24994
  switch (prop) {
24956
24995
  case 'createChatThread': {
24957
24996
  return context.withAsyncErrorTeedToState(function (...args) {
24958
- return __awaiter$o(this, void 0, void 0, function* () {
24997
+ return __awaiter$p(this, void 0, void 0, function* () {
24959
24998
  const result = yield chatClient.createChatThread(...args);
24960
24999
  const thread = result.chatThread;
24961
25000
  if (thread) {
@@ -24968,7 +25007,7 @@ const proxyChatClient = {
24968
25007
  }
24969
25008
  case 'deleteChatThread': {
24970
25009
  return context.withAsyncErrorTeedToState(function (...args) {
24971
- return __awaiter$o(this, void 0, void 0, function* () {
25010
+ return __awaiter$p(this, void 0, void 0, function* () {
24972
25011
  const result = yield chatClient.deleteChatThread(...args);
24973
25012
  context.deleteThread(args[0]);
24974
25013
  return result;
@@ -24988,7 +25027,7 @@ const proxyChatClient = {
24988
25027
  }
24989
25028
  case 'startRealtimeNotifications': {
24990
25029
  return context.withAsyncErrorTeedToState(function (...args) {
24991
- return __awaiter$o(this, void 0, void 0, function* () {
25030
+ return __awaiter$p(this, void 0, void 0, function* () {
24992
25031
  const ret = yield chatClient.startRealtimeNotifications(...args);
24993
25032
  if (!receiver.eventSubscriber) {
24994
25033
  receiver.eventSubscriber = new EventSubscriber(chatClient, context);
@@ -24999,7 +25038,7 @@ const proxyChatClient = {
24999
25038
  }
25000
25039
  case 'stopRealtimeNotifications': {
25001
25040
  return context.withAsyncErrorTeedToState(function (...args) {
25002
- return __awaiter$o(this, void 0, void 0, function* () {
25041
+ return __awaiter$p(this, void 0, void 0, function* () {
25003
25042
  const ret = yield chatClient.stopRealtimeNotifications(...args);
25004
25043
  if (receiver.eventSubscriber) {
25005
25044
  receiver.eventSubscriber.unsubscribe();
@@ -25090,7 +25129,7 @@ const _createStatefulChatClientWithDeps = (chatClient, args, options) => {
25090
25129
  * Provides common functions for updating the upload progress, canceling an upload etc.
25091
25130
  * @private
25092
25131
  */
25093
- class FileUpload {
25132
+ class AttachmentUpload {
25094
25133
  constructor(data) {
25095
25134
  this._emitter = new EventEmitter.EventEmitter();
25096
25135
  this._emitter.setMaxListeners(_MAX_EVENT_LISTENERS);
@@ -25102,29 +25141,29 @@ class FileUpload {
25102
25141
  this.metadata = data;
25103
25142
  }
25104
25143
  const name = data === null || data === void 0 ? void 0 : data.name;
25105
- this.fileName = name;
25144
+ this.name = name;
25106
25145
  }
25107
- notifyUploadProgressChanged(value) {
25146
+ notifyProgressChanged(value) {
25108
25147
  this._emitter.emit('uploadProgressChange', this.id, value);
25109
25148
  }
25110
- notifyUploadCompleted(metadata) {
25149
+ notifyCompleted(metadata) {
25111
25150
  this._emitter.emit('uploadComplete', this.id, metadata);
25112
25151
  }
25113
- notifyUploadFailed(message) {
25152
+ notifyFailed(message) {
25114
25153
  this._emitter.emit('uploadFail', this.id, message);
25115
25154
  }
25116
25155
  /**
25117
- * File upload event subscriber.
25118
- * @param event - {@link FileUploadEvents}
25119
- * @param listener - {@link FileUploadEventListener}
25156
+ * Attachment upload event subscriber.
25157
+ * @param event - {@link AttachmentUploadEvents}
25158
+ * @param listener - {@link AttachmentUploadEventListener}
25120
25159
  */
25121
25160
  on(event, listener) {
25122
25161
  this._emitter.addListener(event, listener);
25123
25162
  }
25124
25163
  /**
25125
- * File upload event unsubscriber.
25126
- * @param event - {@link FileUploadEvents}
25127
- * @param listener - {@link FileUploadEventListener}
25164
+ * Attachment upload event unsubscriber.
25165
+ * @param event - {@link AttachmentUploadEvents}
25166
+ * @param listener - {@link AttachmentUploadEventListener}
25128
25167
  */
25129
25168
  off(event, listener) {
25130
25169
  this._emitter.removeListener(event, listener);
@@ -25230,7 +25269,7 @@ const CallCompositeIcon = (props) => (React.createElement(react.FontIcon, Object
25230
25269
  */
25231
25270
  const CallWithChatCompositeIcon = (props) => (React.createElement(react.FontIcon, Object.assign({}, props)));
25232
25271
 
25233
- var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",surveyTextboxDefaultText:"Other, please specify",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},SurveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight",invalidMeetingIdentifier:"Invalid meeting ID or passcode"};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
25272
+ var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",notInvitedToRoomDetails:"You are not able to join this room because you do not have an invite.",notInvitedToRoomTitle:"Not invited to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peoplePaneMoreButtonAriaLabel:"More",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",startSpotlightMenuLabel:"Spotlight for everyone",addSpotlightMenuLabel:"Add spotlight",stopSpotlightMenuLabel:"Stop spotlighting",stopSpotlightOnSelfMenuLabel:"Exit spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopAllSpotlightMenuLabel:"Stop all spotlights",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"The room ID provided could not be found.",roomNotFoundTitle:"Room not found",roomNotValidDetails:"This room is not valid at this current time.",roomNotValidTitle:"Room not valid",inviteToRoomRemovedDetails:"Your invite to join this room was removed.",inviteToRoomRemovedTitle:"Invite to room removed",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",dismissModalAriaLabel:"Local and remote picture and picture, press enter to return to call",callRejectedTitle:"The call could not be completed",callRejectedMoreDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutTitle:"The call could not be completed",callTimeoutDetails:"The person you are trying to reach is unavailable. Please try again later.",callTimeoutBotTitle:"The call could not be completed",callTimeoutBotDetails:"The service that you are trying to reach is unavailable. Please try again later.",dtmfDialerButtonLabel:"Dialpad",dtmfDialerButtonTooltipOn:"Show dialpad",dtmfDialerButtonTooltipOff:"Hide dialpad",dtmfDialerMoreButtonLabelOn:"Show dialpad",dtmfDialerMoreButtonLabelOff:"Hide dialpad",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"View",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic",moreButtonGalleryDefaultLayoutLabel:"Gallery view",moreButtonGalleryFocusedContentLayoutLabel:"Focus on content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}},surveyTitle:"Help us improve",starSurveyHelperText:"How was the quality of the call?",starSurveyOneStarText:"The quality was bad.",starSurveyTwoStarText:"The quality was poor.",starSurveyThreeStarText:"The quality was good.",starSurveyFourStarText:"The quality was great.",starSurveyFiveStarText:"The quality was excellent.",surveyConfirmButtonLabel:"Send Feedback",starRatingAriaLabel:"Select {0} of {1} stars",surveySkipButtonLabel:"Skip",tagsSurveyQuestion:"What could have been better?",tagsSurveyTextFieldDefaultText:"Other, please specify",tagsSurveyHelperText:"Check any issues you experienced",surveyTextboxDefaultText:"Other, please specify",endOfSurveyText:"Thank you for your feedback!",surveyIssues:{overallRating:{callCannotJoin:"I could not join call",callCannotInvite:"I could not invite others into the call",hadToRejoin:"I had to rejoin the call",callEndedUnexpectedly:"Call ended for me unexpectedly",otherIssues:"I was having other issues with the call"},audioRating:{noLocalAudio:"The other side could not hear any sound",noRemoteAudio:"I could not hear any sound",echo:"I heard echos on the call",audioNoise:"I heard noise on the call",lowVolume:"Volume was low",audioStoppedUnexpectedly:"Audio stopped unexpectedly",distortedSpeech:"Audio was distorted",audioInterruption:"Audio was interrupted",otherIssues:"I was having other audio issues in this call"},videoRating:{noVideoReceived:"I could not see any video",noVideoSent:"Others could not see me",lowQuality:"Video quality was low",freezes:"Video frozen",stoppedUnexpectedly:"Video stopped unexpectedly",darkVideoReceived:"I can only see dark screens when others turn on their camera",audioVideoOutOfSync:"Audio and Video was out of sync",otherIssues:"I was having other video issues in this call"},screenshareRating:{noContentLocal:"Other people could not see my screenshare",noContentRemote:"I could not see other people's screenshare",cannotPresent:"I could not present my screen",lowQuality:"Screen share quality was low",freezes:"Screen share frozen",stoppedUnexpectedly:"Screen share stopped unexpectedly",largeDelay:"Screen share has a large delay",otherIssues:"I was having other screen share issues in this call"}},SurveyIssuesHeadingStrings:{overallRating:"Overall",audioRating:"Audio",videoRating:"Video",screenshareRating:"Presenting"},spotlightPrompt:{startSpotlightHeading:"Spotlight for everyone?",startSpotlightText:"You'll highlight this video for everyone in the meeting.",startSpotlightOnSelfText:"You'll highlight your video for everyone in the meeting.",startSpotlightConfirmButtonLabel:"Spotlight for everyone",startSpotlightCancelButtonLabel:"Cancel",stopSpotlightHeading:"Stop spotlighting this video?",stopSpotlightOnSelfHeading:"Exit spotlight?",stopAllSpotlightHeading:"Stop spotlighting all videos?",stopSpotlightText:"This video will no longer be highlighted for everyone in the meeting.",stopSpotlightOnSelfText:"Your video will no longer be highlighted for everyone in the meeting.",stopAllSpotlightText:"The videos will no longer be highlighted for everyone in the meeting.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight",hangUpConfirmButtonLabel:"Confirm",hangUpCancelButtonLabel:"Cancel",leaveConfirmDialogTitle:"Leave the call?",leaveConfirmDialogContent:"Are you sure you want to leave the call?",endCallConfirmDialogTitle:"End the call?",endCallConfirmDialogContent:"You'll end the call for everyone.",invalidMeetingIdentifier:"Invalid meeting ID or passcode"};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
25234
25273
 
25235
25274
  // Copyright (c) Microsoft Corporation.
25236
25275
  // Licensed under the MIT License.
@@ -25272,11 +25311,13 @@ const useLocale = () => React.useContext(LocaleContext);
25272
25311
  /**
25273
25312
  * @internal
25274
25313
  */
25275
- const FileUploadButton = (props) => {
25314
+ const AttachmentUploadButton = (props) => {
25276
25315
  const inputRef = React.useRef(null);
25277
25316
  const theme = react.useTheme();
25278
- const { accept, multiple = false, onChange } = props;
25279
- const fileUploadButtonClassName = react.mergeStyles({
25317
+ // default supportedMediaTypes is ['*'], meaning all media types are supported.
25318
+ // default disableMultipleUploads is false, meaning multiple files can be selected.
25319
+ const { supportedMediaTypes = ['*'], disableMultipleUploads = false, onChange } = props;
25320
+ const attachmentUploadButtonClassName = react.mergeStyles({
25280
25321
  width: '1.5rem',
25281
25322
  height: '1.5rem',
25282
25323
  cursor: 'pointer',
@@ -25295,13 +25336,13 @@ const FileUploadButton = (props) => {
25295
25336
  }
25296
25337
  });
25297
25338
  return (React.createElement(React.Fragment, null,
25298
- React.createElement(react.Stack, { verticalAlign: "center", horizontalAlign: "center", className: fileUploadButtonClassName, onClick: () => {
25339
+ React.createElement(react.Stack, { verticalAlign: "center", horizontalAlign: "center", className: attachmentUploadButtonClassName, onClick: () => {
25299
25340
  var _a;
25300
25341
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click();
25301
25342
  } },
25302
25343
  React.createElement(react.IconButton, { className: iconButtonClassName, ariaLabel: uploadFileButtonStringTrampoline() },
25303
25344
  React.createElement(SendBoxAttachFileIconTrampoline, null))),
25304
- React.createElement("input", { ref: inputRef, hidden: true, multiple: multiple !== null && multiple !== void 0 ? multiple : true, accept: accept !== null && accept !== void 0 ? accept : '*', type: "file", onClick: (e) => {
25345
+ React.createElement("input", { ref: inputRef, hidden: true, multiple: !disableMultipleUploads, accept: supportedMediaTypes.join(','), type: "file", onClick: (e) => {
25305
25346
  // To ensure that `onChange` is fired even if the same file is picked again.
25306
25347
  e.currentTarget.value = '';
25307
25348
  }, onChange: (e) => {
@@ -25313,17 +25354,17 @@ const SendBoxAttachFileIconTrampoline = () => {
25313
25354
  return React.createElement(ChatCompositeIcon, { iconName: "SendBoxAttachFile" });
25314
25355
  };
25315
25356
  /**
25316
- * A wrapper to return {@link FileUploadButton} component conditionally.
25357
+ * A wrapper to return {@link AttachmentUploadButton} component conditionally.
25317
25358
  * It will return `<></>` for stable builds.
25318
25359
  * @internal
25319
25360
  */
25320
- const FileUploadButtonWrapper = (
25361
+ const AttachmentUploadButtonWrapper = (
25321
25362
  // To make conditional compilation not throw errors.
25322
25363
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
25323
25364
  props) => {
25324
25365
  return (React.createElement(React.Fragment, null,
25325
25366
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25326
- React.createElement(FileUploadButton, Object.assign({}, props))));
25367
+ React.createElement(AttachmentUploadButton, Object.assign({}, props))));
25327
25368
  };
25328
25369
  const uploadFileButtonStringTrampoline = () => {
25329
25370
  //@conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload)
@@ -25338,38 +25379,45 @@ const uploadFileButtonStringTrampoline = () => {
25338
25379
  /**
25339
25380
  * @internal
25340
25381
  */
25341
- class FileUploadContext {
25382
+ class AttachmentUploadContext {
25342
25383
  constructor(chatContext) {
25343
25384
  this.chatContext = chatContext;
25344
25385
  }
25345
- getFileUploads() {
25346
- return this.chatContext.getState().fileUploads;
25386
+ getAttachmentUploads() {
25387
+ return this.chatContext.getState().attachmentUploads;
25347
25388
  }
25348
- addFileUploads(fileUploads) {
25349
- const fileUploadsMap = convertObservableFileUploadToFileUploadsUiState(fileUploads);
25389
+ addAttachmentUploads(attachmentUploads) {
25390
+ const attachmentUploadsMap = convertObservableAttachmentUploadToAttachmentUploadsUiState(attachmentUploads);
25350
25391
  this.chatContext.setState(immer.produce(this.chatContext.getState(), (draft) => {
25351
- draft.fileUploads = draft.fileUploads || {};
25352
- draft.fileUploads = Object.assign(Object.assign({}, draft.fileUploads), fileUploadsMap);
25392
+ draft.attachmentUploads = draft.attachmentUploads || {};
25393
+ draft.attachmentUploads = Object.assign(Object.assign({}, draft.attachmentUploads), attachmentUploadsMap);
25353
25394
  }));
25354
25395
  }
25355
- clearFileUploads() {
25396
+ clearUploads() {
25356
25397
  this.chatContext.setState(immer.produce(this.chatContext.getState(), (draft) => {
25357
- draft.fileUploads = {};
25398
+ draft.attachmentUploads = {};
25358
25399
  }));
25359
25400
  }
25360
- updateFileUpload(id, data) {
25401
+ updateAttachmentUpload(id, data) {
25361
25402
  this.chatContext.setState(immer.produce(this.chatContext.getState(), (draft) => {
25362
- var _a, _b;
25363
- if ((_a = draft.fileUploads) === null || _a === void 0 ? void 0 : _a[id]) {
25364
- draft.fileUploads[id] = Object.assign(Object.assign({}, (_b = draft.fileUploads) === null || _b === void 0 ? void 0 : _b[id]), data);
25403
+ var _a, _b, _c, _d;
25404
+ if ((_a = draft.attachmentUploads) === null || _a === void 0 ? void 0 : _a[id]) {
25405
+ draft.attachmentUploads[(_b = data.id) !== null && _b !== void 0 ? _b : id] = Object.assign(Object.assign({}, (_c = draft.attachmentUploads) === null || _c === void 0 ? void 0 : _c[id]), data);
25406
+ if (data.id) {
25407
+ (_d = draft.attachmentUploads) === null || _d === void 0 ? true : delete _d[id];
25408
+ }
25365
25409
  }
25366
25410
  }));
25367
25411
  }
25368
- deleteFileUploads(ids) {
25412
+ deleteAttachmentUploads(ids) {
25369
25413
  this.chatContext.setState(immer.produce(this.chatContext.getState(), (draft) => {
25370
25414
  ids.forEach((id) => {
25371
25415
  var _a;
25372
- (_a = draft === null || draft === void 0 ? void 0 : draft.fileUploads) === null || _a === void 0 ? true : delete _a[id];
25416
+ const keys = Object.keys((_a = draft === null || draft === void 0 ? void 0 : draft.attachmentUploads) !== null && _a !== void 0 ? _a : []).filter((rawID) => { var _a; return ((_a = draft.attachmentUploads) === null || _a === void 0 ? void 0 : _a[rawID].id) === id; });
25417
+ keys.forEach((key) => {
25418
+ var _a;
25419
+ (_a = draft.attachmentUploads) === null || _a === void 0 ? true : delete _a[key];
25420
+ });
25373
25421
  });
25374
25422
  }));
25375
25423
  }
@@ -25378,92 +25426,104 @@ class FileUploadContext {
25378
25426
  /**
25379
25427
  * @internal
25380
25428
  */
25381
- class AzureCommunicationFileUploadAdapter {
25429
+ class AzureCommunicationAttachmentUploadAdapter {
25382
25430
  constructor(chatContext) {
25383
- this.fileUploads = [];
25384
- this.context = new FileUploadContext(chatContext);
25431
+ this.attachmentUploads = [];
25432
+ this.context = new AttachmentUploadContext(chatContext);
25385
25433
  }
25386
- findFileUpload(id) {
25387
- return this.fileUploads.find((fileUpload) => fileUpload.id === id);
25434
+ findAttachmentUpload(id) {
25435
+ return this.attachmentUploads.find((attachmentUpload) => attachmentUpload.id === id);
25388
25436
  }
25389
- deleteFileUploads(ids) {
25390
- this.fileUploads = this.fileUploads.filter((fileUpload) => !ids.includes(fileUpload.id));
25391
- this.context.deleteFileUploads(ids);
25437
+ deleteAttachmentUploads(ids) {
25438
+ this.attachmentUploads = this.attachmentUploads.filter((attachmentUpload) => !ids.includes(attachmentUpload.id));
25439
+ this.context.deleteAttachmentUploads(ids);
25392
25440
  }
25393
- deleteErroneousFileUploads() {
25394
- const fileUploads = this.context.getFileUploads() || {};
25395
- const ids = Object.values(fileUploads)
25396
- .filter((item) => item.error)
25441
+ deleteErroneousAttachmentUploads() {
25442
+ const attachmentUploads = this.context.getAttachmentUploads() || {};
25443
+ const ids = Object.values(attachmentUploads)
25444
+ .filter((item) => item.uploadError)
25397
25445
  .map((item) => item.id);
25398
25446
  ids.forEach((id) => {
25399
- const fileUpload = this.findFileUpload(id);
25400
- this.unsubscribeAllEvents(fileUpload);
25401
- });
25402
- this.deleteFileUploads(ids);
25403
- }
25404
- registerFileUploads(files) {
25405
- this.deleteErroneousFileUploads();
25406
- const fileUploads = [];
25407
- files.forEach((file) => fileUploads.push(new FileUpload(file)));
25408
- fileUploads.forEach((fileUpload) => this.subscribeAllEvents(fileUpload));
25409
- this.fileUploads = this.fileUploads.concat(fileUploads);
25410
- this.context.addFileUploads(fileUploads);
25411
- return fileUploads;
25412
- }
25413
- registerActiveFileUploads(files) {
25414
- return this.registerFileUploads(files);
25415
- }
25416
- registerCompletedFileUploads(metadata) {
25417
- return this.registerFileUploads(metadata);
25418
- }
25419
- clearFileUploads() {
25420
- this.context.clearFileUploads();
25421
- this.fileUploads.forEach((fileUpload) => this.unsubscribeAllEvents(fileUpload));
25422
- this.fileUploads = [];
25423
- }
25424
- cancelFileUpload(id) {
25425
- this.deleteErroneousFileUploads();
25426
- const fileUpload = this.findFileUpload(id);
25427
- this.unsubscribeAllEvents(fileUpload);
25428
- this.deleteFileUploads([id]);
25429
- }
25430
- updateFileUploadProgress(id, progress) {
25431
- this.context.updateFileUpload(id, { progress });
25432
- }
25433
- updateFileUploadErrorMessage(id, errorMessage) {
25434
- this.context.updateFileUpload(id, {
25435
- error: {
25447
+ const attachmentUpload = this.findAttachmentUpload(id);
25448
+ this.unsubscribeAllEvents(attachmentUpload);
25449
+ });
25450
+ this.deleteAttachmentUploads(ids);
25451
+ }
25452
+ registerAttachmentUploads(files) {
25453
+ this.deleteErroneousAttachmentUploads();
25454
+ const attachmentUploads = [];
25455
+ files.forEach((file) => attachmentUploads.push(new AttachmentUpload(file)));
25456
+ attachmentUploads.forEach((attachmentUpload) => this.subscribeAllEvents(attachmentUpload));
25457
+ this.attachmentUploads = this.attachmentUploads.concat(attachmentUploads);
25458
+ this.context.addAttachmentUploads(attachmentUploads);
25459
+ return attachmentUploads;
25460
+ }
25461
+ registerActiveUploads(files) {
25462
+ return this.registerAttachmentUploads(files);
25463
+ }
25464
+ registerCompletedUploads(metadata) {
25465
+ return this.registerAttachmentUploads(metadata);
25466
+ }
25467
+ clearUploads() {
25468
+ this.context.clearUploads();
25469
+ this.attachmentUploads.forEach((attachmentUpload) => this.unsubscribeAllEvents(attachmentUpload));
25470
+ this.attachmentUploads = [];
25471
+ }
25472
+ cancelUpload(id) {
25473
+ this.deleteErroneousAttachmentUploads();
25474
+ const attachmentUpload = this.findAttachmentUpload(id);
25475
+ this.unsubscribeAllEvents(attachmentUpload);
25476
+ this.deleteAttachmentUploads([id]);
25477
+ }
25478
+ updateUploadProgress(id, progress) {
25479
+ this.context.updateAttachmentUpload(id, { progress });
25480
+ }
25481
+ updateUploadStatusMessage(id, errorMessage) {
25482
+ this.context.updateAttachmentUpload(id, {
25483
+ uploadError: {
25436
25484
  message: errorMessage,
25437
25485
  timestamp: Date.now()
25438
25486
  }
25439
25487
  });
25440
25488
  }
25441
- updateFileUploadMetadata(id, metadata) {
25442
- this.context.updateFileUpload(id, { progress: 1, metadata });
25489
+ updateUploadMetadata(id, metadata) {
25490
+ this.context.updateAttachmentUpload(id, {
25491
+ progress: 1,
25492
+ id: metadata.id,
25493
+ name: metadata.name,
25494
+ url: metadata.url,
25495
+ extension: metadata.extension
25496
+ });
25443
25497
  }
25444
- subscribeAllEvents(fileUpload) {
25445
- fileUpload.on('uploadProgressChange', this.updateFileUploadProgress.bind(this));
25446
- fileUpload.on('uploadComplete', this.updateFileUploadMetadata.bind(this));
25447
- fileUpload.on('uploadFail', this.updateFileUploadErrorMessage.bind(this));
25498
+ subscribeAllEvents(attachmentUpload) {
25499
+ attachmentUpload.on('uploadProgressChange', this.updateUploadProgress.bind(this));
25500
+ attachmentUpload.on('uploadComplete', this.updateUploadMetadata.bind(this));
25501
+ attachmentUpload.on('uploadFail', this.updateUploadStatusMessage.bind(this));
25448
25502
  }
25449
- unsubscribeAllEvents(fileUpload) {
25450
- fileUpload === null || fileUpload === void 0 ? void 0 : fileUpload.off('uploadProgressChange', this.updateFileUploadProgress.bind(this));
25451
- fileUpload === null || fileUpload === void 0 ? void 0 : fileUpload.off('uploadComplete', this.updateFileUploadMetadata.bind(this));
25452
- fileUpload === null || fileUpload === void 0 ? void 0 : fileUpload.off('uploadFail', this.updateFileUploadErrorMessage.bind(this));
25503
+ unsubscribeAllEvents(attachmentUpload) {
25504
+ attachmentUpload === null || attachmentUpload === void 0 ? void 0 : attachmentUpload.off('uploadProgressChange', this.updateUploadProgress.bind(this));
25505
+ attachmentUpload === null || attachmentUpload === void 0 ? void 0 : attachmentUpload.off('uploadComplete', this.updateUploadMetadata.bind(this));
25506
+ attachmentUpload === null || attachmentUpload === void 0 ? void 0 : attachmentUpload.off('uploadFail', this.updateUploadStatusMessage.bind(this));
25453
25507
  }
25454
25508
  }
25455
25509
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25456
25510
  /**
25457
- * @param fileUploadUiState {@link FileUploadsUiState}
25511
+ * @param attachmentUploadUiState {@link AttachmentUploadsUiState}
25458
25512
  * @private
25459
25513
  */
25460
- const convertFileUploadsUiStateToMessageMetadata = (fileUploads) => {
25461
- if (fileUploads) {
25514
+ const convertAttachmentUploadsUiStateToMessageMetadata = (attachmentUploads) => {
25515
+ if (attachmentUploads) {
25462
25516
  const fileMetadata = [];
25463
- Object.keys(fileUploads).forEach((key) => {
25464
- const file = fileUploads[key];
25465
- if (!file.error && file.metadata) {
25466
- fileMetadata.push(file.metadata);
25517
+ Object.keys(attachmentUploads).forEach((key) => {
25518
+ const attachment = attachmentUploads[key];
25519
+ if (attachment && !attachment.uploadError) {
25520
+ fileMetadata.push({
25521
+ id: attachment.id,
25522
+ name: attachment.name,
25523
+ extension: attachment.extension,
25524
+ url: attachment.url,
25525
+ progress: attachment.progress
25526
+ });
25467
25527
  }
25468
25528
  });
25469
25529
  if (fileMetadata.length > 0) {
@@ -25476,13 +25536,13 @@ const convertFileUploadsUiStateToMessageMetadata = (fileUploads) => {
25476
25536
  /**
25477
25537
  * @private
25478
25538
  */
25479
- const convertObservableFileUploadToFileUploadsUiState = (fileUploads) => {
25480
- return fileUploads.reduce((map, fileUpload) => {
25481
- map[fileUpload.id] = {
25482
- id: fileUpload.id,
25483
- filename: fileUpload.fileName,
25539
+ const convertObservableAttachmentUploadToAttachmentUploadsUiState = (attachmentUploads) => {
25540
+ return attachmentUploads.reduce((map, attachmentUpload) => {
25541
+ map[attachmentUpload.id] = {
25542
+ id: attachmentUpload.id,
25543
+ name: attachmentUpload.name,
25484
25544
  progress: 0,
25485
- metadata: fileUpload.metadata
25545
+ extension: attachmentUpload.name.split('.').pop() || ''
25486
25546
  };
25487
25547
  return map;
25488
25548
  }, {});
@@ -25490,7 +25550,7 @@ const convertObservableFileUploadToFileUploadsUiState = (fileUploads) => {
25490
25550
 
25491
25551
  // Copyright (c) Microsoft Corporation.
25492
25552
  // Licensed under the MIT License.
25493
- var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
25553
+ var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
25494
25554
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
25495
25555
  return new (P || (P = Promise))(function (resolve, reject) {
25496
25556
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -25553,7 +25613,7 @@ class ChatContext {
25553
25613
  latestErrors: clientState.latestErrors
25554
25614
  };
25555
25615
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25556
- updatedState = Object.assign(Object.assign({}, updatedState), { fileUploads: this.state.fileUploads });
25616
+ updatedState = Object.assign(Object.assign({}, updatedState), { attachmentUploads: this.state.attachmentUploads });
25557
25617
  this.setState(updatedState);
25558
25618
  }
25559
25619
  }
@@ -25568,7 +25628,7 @@ class AzureCommunicationChatAdapter {
25568
25628
  this.chatThreadClient = chatThreadClient;
25569
25629
  this.context = new ChatContext(chatClient.getState(), chatThreadClient.threadId);
25570
25630
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25571
- this.fileUploadAdapter = new AzureCommunicationFileUploadAdapter(this.context);
25631
+ this.attachmentUploadAdapter = new AzureCommunicationAttachmentUploadAdapter(this.context);
25572
25632
  const onStateChange = (clientState) => {
25573
25633
  // unsubscribe when the instance gets disposed
25574
25634
  if (!this) {
@@ -25598,19 +25658,19 @@ class AzureCommunicationChatAdapter {
25598
25658
  this.on = this.on.bind(this);
25599
25659
  this.off = this.off.bind(this);
25600
25660
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25601
- this.registerActiveFileUploads = this.registerActiveFileUploads.bind(this);
25661
+ this.registerActiveUploads = this.registerActiveUploads.bind(this);
25602
25662
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25603
- this.registerCompletedFileUploads = this.registerCompletedFileUploads.bind(this);
25663
+ this.registerCompletedUploads = this.registerCompletedUploads.bind(this);
25604
25664
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25605
- this.clearFileUploads = this.clearFileUploads.bind(this);
25665
+ this.clearUploads = this.clearUploads.bind(this);
25606
25666
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25607
- this.cancelFileUpload = this.cancelFileUpload.bind(this);
25667
+ this.cancelUpload = this.cancelUpload.bind(this);
25608
25668
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25609
- this.updateFileUploadProgress = this.updateFileUploadProgress.bind(this);
25669
+ this.updateUploadProgress = this.updateUploadProgress.bind(this);
25610
25670
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25611
- this.updateFileUploadErrorMessage = this.updateFileUploadErrorMessage.bind(this);
25671
+ this.updateUploadStatusMessage = this.updateUploadStatusMessage.bind(this);
25612
25672
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25613
- this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);
25673
+ this.updateUploadMetadata = this.updateUploadMetadata.bind(this);
25614
25674
  this.downloadResourceToCache = this.downloadResourceToCache.bind(this);
25615
25675
  this.removeResourceFromCache = this.removeResourceFromCache.bind(this);
25616
25676
  }
@@ -25619,9 +25679,9 @@ class AzureCommunicationChatAdapter {
25619
25679
  this.chatClient.dispose();
25620
25680
  }
25621
25681
  fetchInitialData() {
25622
- return __awaiter$n(this, void 0, void 0, function* () {
25682
+ return __awaiter$o(this, void 0, void 0, function* () {
25623
25683
  // If get properties fails we dont want to try to get the participants after.
25624
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
25684
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$o(this, void 0, void 0, function* () {
25625
25685
  var _a, e_1, _b, _c;
25626
25686
  yield this.chatThreadClient.getProperties();
25627
25687
  try {
@@ -25657,61 +25717,61 @@ class AzureCommunicationChatAdapter {
25657
25717
  this.context.offStateChange(handler);
25658
25718
  }
25659
25719
  sendMessage(content_1) {
25660
- return __awaiter$n(this, arguments, void 0, function* (content, options = {}) {
25661
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
25720
+ return __awaiter$o(this, arguments, void 0, function* (content, options = {}) {
25721
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$o(this, void 0, void 0, function* () {
25662
25722
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25663
- options.metadata = Object.assign(Object.assign({}, options.metadata), convertFileUploadsUiStateToMessageMetadata(this.context.getState().fileUploads));
25723
+ options.metadata = Object.assign(Object.assign({}, options.metadata), convertAttachmentUploadsUiStateToMessageMetadata(this.context.getState().attachmentUploads));
25664
25724
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25665
25725
  /**
25666
25726
  * All the current uploads need to be clear from the state before a message has been sent.
25667
25727
  * This ensures the following behavior:
25668
25728
  * 1. File Upload cards are removed from sendbox at the same time text in sendbox is removed.
25669
- * 2. any component rendering these file uploads doesn't continue to do so.
25670
- * 3. Cleans the state for new file uploads with a fresh message.
25729
+ * 2. any component rendering these attachment uploads doesn't continue to do so.
25730
+ * 3. Cleans the state for new attachment uploads with a fresh message.
25671
25731
  */
25672
- this.fileUploadAdapter.clearFileUploads();
25732
+ this.attachmentUploadAdapter.clearUploads();
25673
25733
  yield this.handlers.onSendMessage(content, options);
25674
25734
  }));
25675
25735
  });
25676
25736
  }
25677
25737
  sendReadReceipt(chatMessageId) {
25678
- return __awaiter$n(this, void 0, void 0, function* () {
25679
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
25738
+ return __awaiter$o(this, void 0, void 0, function* () {
25739
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$o(this, void 0, void 0, function* () {
25680
25740
  yield this.handlers.onMessageSeen(chatMessageId);
25681
25741
  }));
25682
25742
  });
25683
25743
  }
25684
25744
  sendTypingIndicator() {
25685
- return __awaiter$n(this, void 0, void 0, function* () {
25686
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
25745
+ return __awaiter$o(this, void 0, void 0, function* () {
25746
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$o(this, void 0, void 0, function* () {
25687
25747
  yield this.handlers.onTyping();
25688
25748
  }));
25689
25749
  });
25690
25750
  }
25691
25751
  removeParticipant(userId) {
25692
- return __awaiter$n(this, void 0, void 0, function* () {
25693
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
25752
+ return __awaiter$o(this, void 0, void 0, function* () {
25753
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$o(this, void 0, void 0, function* () {
25694
25754
  yield this.handlers.onRemoveParticipant(userId);
25695
25755
  }));
25696
25756
  });
25697
25757
  }
25698
25758
  setTopic(topicName) {
25699
- return __awaiter$n(this, void 0, void 0, function* () {
25700
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
25759
+ return __awaiter$o(this, void 0, void 0, function* () {
25760
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$o(this, void 0, void 0, function* () {
25701
25761
  yield this.handlers.updateThreadTopicName(topicName);
25702
25762
  }));
25703
25763
  });
25704
25764
  }
25705
25765
  loadPreviousChatMessages(messagesToLoad) {
25706
- return __awaiter$n(this, void 0, void 0, function* () {
25707
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
25766
+ return __awaiter$o(this, void 0, void 0, function* () {
25767
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$o(this, void 0, void 0, function* () {
25708
25768
  return yield this.handlers.onLoadPreviousChatMessages(messagesToLoad);
25709
25769
  }));
25710
25770
  });
25711
25771
  }
25712
25772
  updateMessage(messageId, content, metadata, options) {
25713
- return __awaiter$n(this, void 0, void 0, function* () {
25714
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
25773
+ return __awaiter$o(this, void 0, void 0, function* () {
25774
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$o(this, void 0, void 0, function* () {
25715
25775
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25716
25776
  const updatedOptions = { attachmentMetadata: options === null || options === void 0 ? void 0 : options.attachmentMetadata, metadata: metadata };
25717
25777
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
@@ -25720,42 +25780,42 @@ class AzureCommunicationChatAdapter {
25720
25780
  });
25721
25781
  }
25722
25782
  deleteMessage(messageId) {
25723
- return __awaiter$n(this, void 0, void 0, function* () {
25724
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
25783
+ return __awaiter$o(this, void 0, void 0, function* () {
25784
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$o(this, void 0, void 0, function* () {
25725
25785
  return yield this.handlers.onDeleteMessage(messageId);
25726
25786
  }));
25727
25787
  });
25728
25788
  }
25729
25789
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25730
- registerActiveFileUploads(files) {
25731
- return this.fileUploadAdapter.registerActiveFileUploads(files);
25790
+ registerActiveUploads(files) {
25791
+ return this.attachmentUploadAdapter.registerActiveUploads(files);
25732
25792
  }
25733
25793
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25734
- registerCompletedFileUploads(metadata) {
25735
- return this.fileUploadAdapter.registerCompletedFileUploads(metadata);
25794
+ registerCompletedUploads(metadata) {
25795
+ return this.attachmentUploadAdapter.registerCompletedUploads(metadata);
25736
25796
  }
25737
25797
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25738
- clearFileUploads() {
25739
- this.fileUploadAdapter.clearFileUploads();
25798
+ clearUploads() {
25799
+ this.attachmentUploadAdapter.clearUploads();
25740
25800
  }
25741
25801
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25742
- cancelFileUpload(id) {
25743
- this.fileUploadAdapter.cancelFileUpload(id);
25802
+ cancelUpload(id) {
25803
+ this.attachmentUploadAdapter.cancelUpload(id);
25744
25804
  }
25745
25805
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25746
- updateFileUploadProgress(id, progress) {
25747
- this.fileUploadAdapter.updateFileUploadProgress(id, progress);
25806
+ updateUploadProgress(id, progress) {
25807
+ this.attachmentUploadAdapter.updateUploadProgress(id, progress);
25748
25808
  }
25749
25809
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25750
- updateFileUploadErrorMessage(id, errorMessage) {
25751
- this.fileUploadAdapter.updateFileUploadErrorMessage(id, errorMessage);
25810
+ updateUploadStatusMessage(id, errorMessage) {
25811
+ this.attachmentUploadAdapter.updateUploadStatusMessage(id, errorMessage);
25752
25812
  }
25753
25813
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
25754
- updateFileUploadMetadata(id, metadata) {
25755
- this.fileUploadAdapter.updateFileUploadMetadata(id, metadata);
25814
+ updateUploadMetadata(id, metadata) {
25815
+ this.attachmentUploadAdapter.updateUploadMetadata(id, metadata);
25756
25816
  }
25757
25817
  downloadResourceToCache(resourceDetails) {
25758
- return __awaiter$n(this, void 0, void 0, function* () {
25818
+ return __awaiter$o(this, void 0, void 0, function* () {
25759
25819
  this.chatClient.downloadResourceToCache(resourceDetails.threadId, resourceDetails.messageId, resourceDetails.resourceUrl);
25760
25820
  });
25761
25821
  }
@@ -25834,7 +25894,7 @@ class AzureCommunicationChatAdapter {
25834
25894
  this.emitter.off(event, listener);
25835
25895
  }
25836
25896
  asyncTeeErrorToEventEmitter(f) {
25837
- return __awaiter$n(this, void 0, void 0, function* () {
25897
+ return __awaiter$o(this, void 0, void 0, function* () {
25838
25898
  try {
25839
25899
  return yield f();
25840
25900
  }
@@ -25884,7 +25944,7 @@ const convertEventType = (type) => {
25884
25944
  *
25885
25945
  * @public
25886
25946
  */
25887
- const createAzureCommunicationChatAdapter = (_a) => __awaiter$n(void 0, [_a], void 0, function* ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) {
25947
+ const createAzureCommunicationChatAdapter = (_a) => __awaiter$o(void 0, [_a], void 0, function* ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) {
25888
25948
  return _createAzureCommunicationChatAdapterInner(endpointUrl, userId, displayName, credential, threadId);
25889
25949
  });
25890
25950
  /**
@@ -25892,7 +25952,7 @@ const createAzureCommunicationChatAdapter = (_a) => __awaiter$n(void 0, [_a], vo
25892
25952
  *
25893
25953
  * @internal
25894
25954
  */
25895
- const _createAzureCommunicationChatAdapterInner = (endpoint_1, userId_1, displayName_1, credential_1, threadId_1, ...args_1) => __awaiter$n(void 0, [endpoint_1, userId_1, displayName_1, credential_1, threadId_1, ...args_1], void 0, function* (endpoint, userId, displayName, credential, threadId, telemetryImplementationHint = 'Chat') {
25955
+ const _createAzureCommunicationChatAdapterInner = (endpoint_1, userId_1, displayName_1, credential_1, threadId_1, ...args_1) => __awaiter$o(void 0, [endpoint_1, userId_1, displayName_1, credential_1, threadId_1, ...args_1], void 0, function* (endpoint, userId, displayName, credential, threadId, telemetryImplementationHint = 'Chat') {
25896
25956
  if (!_isValidIdentifier(userId)) {
25897
25957
  throw new Error('Provided userId is invalid. Please provide valid identifier object.');
25898
25958
  }
@@ -25912,7 +25972,7 @@ const _createAzureCommunicationChatAdapterInner = (endpoint_1, userId_1, display
25912
25972
  * ThreadId is a promise to allow for lazy initialization of the adapter.
25913
25973
  * @internal
25914
25974
  */
25915
- const _createLazyAzureCommunicationChatAdapterInner = (endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2) => __awaiter$n(void 0, [endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2], void 0, function* (endpoint, userId, displayName, credential, threadId, telemetryImplementationHint = 'Chat') {
25975
+ const _createLazyAzureCommunicationChatAdapterInner = (endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2) => __awaiter$o(void 0, [endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2], void 0, function* (endpoint, userId, displayName, credential, threadId, telemetryImplementationHint = 'Chat') {
25916
25976
  if (!_isValidIdentifier(userId)) {
25917
25977
  throw new Error('Provided userId is invalid. Please provide valid identifier object.');
25918
25978
  }
@@ -25922,7 +25982,7 @@ const _createLazyAzureCommunicationChatAdapterInner = (endpoint_2, userId_2, dis
25922
25982
  endpoint,
25923
25983
  credential
25924
25984
  }, undefined, telemetryImplementationHint);
25925
- return threadId.then((threadId) => __awaiter$n(void 0, void 0, void 0, function* () {
25985
+ return threadId.then((threadId) => __awaiter$o(void 0, void 0, void 0, function* () {
25926
25986
  const chatThreadClient = yield chatClient.getChatThreadClient(threadId);
25927
25987
  yield chatClient.startRealtimeNotifications();
25928
25988
  const adapter = yield createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
@@ -25980,7 +26040,7 @@ beforeDispose) => {
25980
26040
  if (!credential || !displayName || !endpoint || !threadId || !userId) {
25981
26041
  return;
25982
26042
  }
25983
- (() => __awaiter$n(void 0, void 0, void 0, function* () {
26043
+ (() => __awaiter$o(void 0, void 0, void 0, function* () {
25984
26044
  if (adapterRef.current) {
25985
26045
  // Dispose the old adapter when a new one is created.
25986
26046
  //
@@ -26012,7 +26072,7 @@ beforeDispose) => {
26012
26072
  // Dispose any existing adapter when the component unmounts.
26013
26073
  React.useEffect(() => {
26014
26074
  return () => {
26015
- (() => __awaiter$n(void 0, void 0, void 0, function* () {
26075
+ (() => __awaiter$o(void 0, void 0, void 0, function* () {
26016
26076
  if (adapterRef.current) {
26017
26077
  if (beforeDisposeRef.current) {
26018
26078
  yield beforeDisposeRef.current(adapterRef.current);
@@ -26034,7 +26094,7 @@ beforeDispose) => {
26034
26094
  * @public
26035
26095
  */
26036
26096
  function createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient) {
26037
- return __awaiter$n(this, void 0, void 0, function* () {
26097
+ return __awaiter$o(this, void 0, void 0, function* () {
26038
26098
  return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
26039
26099
  });
26040
26100
  }
@@ -26267,7 +26327,7 @@ const sendboxContainerStyles = {
26267
26327
 
26268
26328
  // Copyright (c) Microsoft Corporation.
26269
26329
  // Licensed under the MIT License.
26270
- var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
26330
+ var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
26271
26331
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
26272
26332
  return new (P || (P = Promise))(function (resolve, reject) {
26273
26333
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -26288,7 +26348,7 @@ const AvatarPersona = (props) => {
26288
26348
  const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;
26289
26349
  const [data, setData] = React.useState();
26290
26350
  React.useEffect(() => {
26291
- (() => __awaiter$m(void 0, void 0, void 0, function* () {
26351
+ (() => __awaiter$n(void 0, void 0, void 0, function* () {
26292
26352
  if (dataProvider && userId) {
26293
26353
  const newData = yield dataProvider(userId);
26294
26354
  if (avatarDeepDifferenceCheck(data, newData)) {
@@ -26710,9 +26770,9 @@ const AttachmentDownloadErrorBar = (props) => {
26710
26770
  /**
26711
26771
  * @private
26712
26772
  */
26713
- const getFileUploads = (state) => {
26773
+ const getAttachmentUploads = (state) => {
26714
26774
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
26715
- return state === null || state === void 0 ? void 0 : state.fileUploads;
26775
+ return state === null || state === void 0 ? void 0 : state.attachmentUploads;
26716
26776
  };
26717
26777
 
26718
26778
  // Copyright (c) Microsoft Corporation.
@@ -26720,8 +26780,8 @@ const getFileUploads = (state) => {
26720
26780
  /**
26721
26781
  * @private
26722
26782
  */
26723
- const fileUploadsSelector = reselect.createSelector([getFileUploads], (fileUploads) => {
26724
- const files = Object.values(fileUploads || {}).map((fileUpload) => (Object.assign(Object.assign({}, fileUpload), { uploadComplete: !!fileUpload.metadata })));
26783
+ const attachmentUploadsSelector = reselect.createSelector([getAttachmentUploads], (attachmentUploads) => {
26784
+ const files = Object.values(attachmentUploads || {}).map((attachmentUpload) => (Object.assign(Object.assign({}, attachmentUpload), { uploadComplete: !!attachmentUpload })));
26725
26785
  return { files: files };
26726
26786
  });
26727
26787
 
@@ -26738,7 +26798,7 @@ const useSelector$2 = (selector, selectorProps) => {
26738
26798
  // Copyright (c) Microsoft Corporation.
26739
26799
  // Licensed under the MIT License.
26740
26800
  /* @conditional-compile-remove(rich-text-editor) */
26741
- const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-CH6WvEGZ.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
26801
+ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-BTyywbnH.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
26742
26802
  /**
26743
26803
  * @private
26744
26804
  */
@@ -26748,19 +26808,19 @@ const SendBox = (props) => {
26748
26808
  adapter } = props;
26749
26809
  const sendBoxProps = usePropsFor$2(SendBox$1);
26750
26810
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
26751
- const activeFileUploads = useSelector$2(fileUploadsSelector).files;
26811
+ const activeAttachmentUploads = useSelector$2(attachmentUploadsSelector).files;
26752
26812
  const sendBoxStyles = React.useMemo(() => {
26753
26813
  return Object.assign({}, styles);
26754
26814
  }, [styles]);
26755
26815
  const simpleSendBox = React.useMemo(() => (React.createElement(SendBox$1, Object.assign({}, sendBoxProps, { autoFocus: options === null || options === void 0 ? void 0 : options.autoFocus, styles: sendBoxStyles,
26756
26816
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
26757
- activeFileUploads: activeFileUploads,
26817
+ activeAttachmentUploads: activeAttachmentUploads,
26758
26818
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
26759
- onCancelFileUpload: adapter.cancelFileUpload }))), [
26819
+ onCancelAttachmentUpload: adapter.cancelUpload }))), [
26760
26820
  sendBoxProps,
26761
26821
  options,
26762
26822
  sendBoxStyles,
26763
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ activeFileUploads,
26823
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ activeAttachmentUploads,
26764
26824
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ adapter
26765
26825
  ]);
26766
26826
  // /* @conditional-compile-remove(rich-text-editor) */
@@ -26773,7 +26833,7 @@ const SendBox = (props) => {
26773
26833
 
26774
26834
  // Copyright (c) Microsoft Corporation.
26775
26835
  // Licensed under the MIT License.
26776
- var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
26836
+ var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
26777
26837
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
26778
26838
  return new (P || (P = Promise))(function (resolve, reject) {
26779
26839
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -26786,7 +26846,8 @@ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments,
26786
26846
  * @private
26787
26847
  */
26788
26848
  const ChatScreen = (props) => {
26789
- const { onFetchAvatarPersonaData, onRenderMessage, onRenderTypingIndicator, options, styles, fileSharing, formFactor } = props;
26849
+ var _a, _b, _c, _d;
26850
+ const { onFetchAvatarPersonaData, onRenderMessage, onRenderTypingIndicator, options, styles, attachmentOptions, formFactor } = props;
26790
26851
  const defaultNumberOfChatMessagesToReload = 5;
26791
26852
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
26792
26853
  const [downloadErrorMessage, setDownloadErrorMessage] = React.useState('');
@@ -26796,7 +26857,7 @@ const ChatScreen = (props) => {
26796
26857
  const theme = useTheme();
26797
26858
  React.useEffect(() => {
26798
26859
  // Initial data should be always fetched by the composite(or external caller) instead of the adapter
26799
- const fetchData = () => __awaiter$l(void 0, void 0, void 0, function* () {
26860
+ const fetchData = () => __awaiter$m(void 0, void 0, void 0, function* () {
26800
26861
  // Fetch initial data for adapter
26801
26862
  yield adapter.fetchInitialData();
26802
26863
  // Fetch initial set of messages. Without fetching messages here, if the Composite's adapter is changed the message thread does not load new messages.
@@ -26847,21 +26908,23 @@ const ChatScreen = (props) => {
26847
26908
  return Object.assign({}, styles === null || styles === void 0 ? void 0 : styles.typingIndicator);
26848
26909
  }, [styles === null || styles === void 0 ? void 0 : styles.typingIndicator]);
26849
26910
  const userId = toFlatCommunicationIdentifier(adapter.getState().userId);
26850
- const fileUploadButtonOnChange = React.useCallback((files) => {
26911
+ const attachmentUploadButtonOnChange = React.useCallback((files) => {
26912
+ var _a;
26851
26913
  if (!files) {
26852
26914
  return;
26853
26915
  }
26854
26916
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
26855
- const fileUploads = adapter.registerActiveFileUploads(Array.from(files));
26917
+ const attachmentUploads = adapter.registerActiveUploads(Array.from(files));
26856
26918
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
26857
- fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.uploadHandler(userId, fileUploads);
26858
- }, [adapter, fileSharing, userId]);
26919
+ (_a = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _a === void 0 ? void 0 : _a.handler(attachmentUploads);
26920
+ }, [adapter, attachmentOptions]);
26859
26921
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
26860
- const onRenderAttachmentDownloads = React.useCallback((userId, message) => (React.createElement(_AttachmentDownloadCards, { attachments: message.files, message: message,
26861
- // temp walkaround until upload is refactored
26862
- actionsForAttachment: fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.actionsForAttachment, onActionHandlerFailed: (errorMessage) => {
26863
- setDownloadErrorMessage(errorMessage);
26864
- } })), [fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.actionsForAttachment]);
26922
+ const onRenderAttachmentDownloads = React.useCallback((userId, message) => {
26923
+ var _a;
26924
+ return (React.createElement(_AttachmentDownloadCards, { attachments: message.files, message: message, actionsForAttachment: (_a = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.downloadOptions) === null || _a === void 0 ? void 0 : _a.actionsForAttachment, onActionHandlerFailed: (errorMessage) => {
26925
+ setDownloadErrorMessage(errorMessage);
26926
+ } }));
26927
+ }, [(_a = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.downloadOptions) === null || _a === void 0 ? void 0 : _a.actionsForAttachment]);
26865
26928
  const onInlineImageClicked = React.useCallback((attachmentId, messageId) => {
26866
26929
  var _a, _b;
26867
26930
  const message = adapter.getState().thread.chatMessages[messageId];
@@ -26950,12 +27013,17 @@ const ChatScreen = (props) => {
26950
27013
  }
26951
27014
  }, [overlayImageItem === null || overlayImageItem === void 0 ? void 0 : overlayImageItem.attachmentId]);
26952
27015
  const AttachFileButton = React.useCallback(() => {
26953
- var _a, _b;
26954
- if (!(fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.uploadHandler)) {
27016
+ var _a, _b, _c;
27017
+ if (!((_a = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _a === void 0 ? void 0 : _a.handler)) {
26955
27018
  return null;
26956
27019
  }
26957
- return (React.createElement(FileUploadButtonWrapper, { accept: (_a = fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.accept) !== null && _a !== void 0 ? _a : '*', multiple: (_b = fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.multiple) !== null && _b !== void 0 ? _b : true, onChange: fileUploadButtonOnChange }));
26958
- }, [fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.accept, fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.multiple, fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.uploadHandler, fileUploadButtonOnChange]);
27020
+ return (React.createElement(AttachmentUploadButtonWrapper, { supportedMediaTypes: (_b = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _b === void 0 ? void 0 : _b.supportedMediaTypes, disableMultipleUploads: (_c = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _c === void 0 ? void 0 : _c.disableMultipleUploads, onChange: attachmentUploadButtonOnChange }));
27021
+ }, [
27022
+ (_b = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _b === void 0 ? void 0 : _b.handler,
27023
+ (_c = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _c === void 0 ? void 0 : _c.supportedMediaTypes,
27024
+ (_d = attachmentOptions === null || attachmentOptions === void 0 ? void 0 : attachmentOptions.uploadOptions) === null || _d === void 0 ? void 0 : _d.disableMultipleUploads,
27025
+ attachmentUploadButtonOnChange
27026
+ ]);
26959
27027
  return (React.createElement(react.Stack, { className: chatContainer, grow: true },
26960
27028
  (options === null || options === void 0 ? void 0 : options.topic) !== false && React.createElement(ChatHeader, Object.assign({}, headerProps)),
26961
27029
  React.createElement(react.Stack, { className: chatArea, tokens: participantListContainerPadding, horizontal: true, grow: true },
@@ -27013,7 +27081,7 @@ const ChatComposite = (props) => {
27013
27081
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
27014
27082
  formFactor: formFactor, options: options, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onRenderTypingIndicator: onRenderTypingIndicator, onRenderMessage: onRenderMessage, onFetchParticipantMenuItems: onFetchParticipantMenuItems,
27015
27083
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
27016
- fileSharing: options === null || options === void 0 ? void 0 : options.fileSharing })))));
27084
+ attachmentOptions: options === null || options === void 0 ? void 0 : options.attachmentOptions })))));
27017
27085
  };
27018
27086
 
27019
27087
  // Copyright (c) Microsoft Corporation.
@@ -27181,7 +27249,7 @@ const END_CALL_PAGES = [
27181
27249
 
27182
27250
  // Copyright (c) Microsoft Corporation.
27183
27251
  // Licensed under the MIT License.
27184
- var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
27252
+ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
27185
27253
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27186
27254
  return new (P || (P = Promise))(function (resolve, reject) {
27187
27255
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -27530,7 +27598,7 @@ const isDisabled$4 = (option) => {
27530
27598
  /**
27531
27599
  * @returns Permissions state for the camera.
27532
27600
  */
27533
- const queryCameraPermissionFromPermissionsAPI = () => __awaiter$k(void 0, void 0, void 0, function* () {
27601
+ const queryCameraPermissionFromPermissionsAPI = () => __awaiter$l(void 0, void 0, void 0, function* () {
27534
27602
  try {
27535
27603
  return (yield navigator.permissions.query({ name: 'camera' })).state;
27536
27604
  }
@@ -27543,7 +27611,7 @@ const queryCameraPermissionFromPermissionsAPI = () => __awaiter$k(void 0, void 0
27543
27611
  /**
27544
27612
  * @returns Permissions state for the microphone.
27545
27613
  */
27546
- const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$k(void 0, void 0, void 0, function* () {
27614
+ const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$l(void 0, void 0, void 0, function* () {
27547
27615
  try {
27548
27616
  return (yield navigator.permissions.query({ name: 'microphone' })).state;
27549
27617
  }
@@ -27560,7 +27628,7 @@ const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$k(void 0, vo
27560
27628
  * If permission API is not supported on this browser, permission state is set to unsupported.
27561
27629
  * @private
27562
27630
  */
27563
- const getDevicePermissionState = (setVideoState, setAudioState) => __awaiter$k(void 0, void 0, void 0, function* () {
27631
+ const getDevicePermissionState = (setVideoState, setAudioState) => __awaiter$l(void 0, void 0, void 0, function* () {
27564
27632
  const [cameraResult, microphoneResult] = yield Promise.all([
27565
27633
  queryCameraPermissionFromPermissionsAPI(),
27566
27634
  queryMicrophonePermissionFromPermissionsAPI()
@@ -27646,7 +27714,7 @@ const getLocatorOrTargetCallees = (locatorOrTargetCallees) => {
27646
27714
 
27647
27715
  // Copyright (c) Microsoft Corporation.
27648
27716
  // Licensed under the MIT License.
27649
- var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
27717
+ var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
27650
27718
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27651
27719
  return new (P || (P = Promise))(function (resolve, reject) {
27652
27720
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -27669,22 +27737,22 @@ _component) => {
27669
27737
  };
27670
27738
  const createCompositeHandlers = memoizeOne((adapter, capabilities) => {
27671
27739
  return {
27672
- onCreateLocalStreamView: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
27740
+ onCreateLocalStreamView: (options) => __awaiter$k(void 0, void 0, void 0, function* () {
27673
27741
  return yield adapter.createStreamView(undefined, options);
27674
27742
  }),
27675
- onCreateRemoteStreamView: (userId, options) => __awaiter$j(void 0, void 0, void 0, function* () {
27743
+ onCreateRemoteStreamView: (userId, options) => __awaiter$k(void 0, void 0, void 0, function* () {
27676
27744
  return yield adapter.createStreamView(userId, options);
27677
27745
  }),
27678
- onHangUp: (forEveryone) => __awaiter$j(void 0, void 0, void 0, function* () {
27746
+ onHangUp: (forEveryone) => __awaiter$k(void 0, void 0, void 0, function* () {
27679
27747
  yield adapter.leaveCall(forEveryone);
27680
27748
  }),
27681
27749
  /* @conditional-compile-remove(PSTN-calls) */
27682
- onToggleHold: () => __awaiter$j(void 0, void 0, void 0, function* () {
27750
+ onToggleHold: () => __awaiter$k(void 0, void 0, void 0, function* () {
27683
27751
  var _a;
27684
27752
  return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();
27685
27753
  }),
27686
27754
  /* @conditional-compile-remove(PSTN-calls) */
27687
- onAddParticipant: (participant, options) => __awaiter$j(void 0, void 0, void 0, function* () {
27755
+ onAddParticipant: (participant, options) => __awaiter$k(void 0, void 0, void 0, function* () {
27688
27756
  if ('communicationUserId' in participant) {
27689
27757
  return yield adapter.addParticipant(participant);
27690
27758
  }
@@ -27692,10 +27760,10 @@ const createCompositeHandlers = memoizeOne((adapter, capabilities) => {
27692
27760
  return yield adapter.addParticipant(participant, options);
27693
27761
  }
27694
27762
  }),
27695
- onSendDtmfTone: (dtmfTone) => __awaiter$j(void 0, void 0, void 0, function* () {
27763
+ onSendDtmfTone: (dtmfTone) => __awaiter$k(void 0, void 0, void 0, function* () {
27696
27764
  yield adapter.sendDtmfTone(dtmfTone);
27697
27765
  }),
27698
- onRemoveParticipant: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
27766
+ onRemoveParticipant: (userId) => __awaiter$k(void 0, void 0, void 0, function* () {
27699
27767
  if (typeof userId === 'string') {
27700
27768
  yield adapter.removeParticipant(userId);
27701
27769
  }
@@ -27704,137 +27772,137 @@ const createCompositeHandlers = memoizeOne((adapter, capabilities) => {
27704
27772
  yield adapter.removeParticipant(_toCommunicationIdentifier(userId));
27705
27773
  }
27706
27774
  }),
27707
- onRaiseHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
27775
+ onRaiseHand: () => __awaiter$k(void 0, void 0, void 0, function* () {
27708
27776
  yield adapter.raiseHand();
27709
27777
  }),
27710
- onLowerHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
27778
+ onLowerHand: () => __awaiter$k(void 0, void 0, void 0, function* () {
27711
27779
  yield adapter.lowerHand();
27712
27780
  }),
27713
- onToggleRaiseHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
27781
+ onToggleRaiseHand: () => __awaiter$k(void 0, void 0, void 0, function* () {
27714
27782
  var _b;
27715
27783
  ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.raiseHand.localParticipantRaisedHand)
27716
27784
  ? yield adapter.lowerHand()
27717
27785
  : yield adapter.raiseHand();
27718
27786
  }),
27719
27787
  /* @conditional-compile-remove(reaction) */
27720
- onReactionClick: (reaction) => __awaiter$j(void 0, void 0, void 0, function* () {
27788
+ onReactionClick: (reaction) => __awaiter$k(void 0, void 0, void 0, function* () {
27721
27789
  yield adapter.onReactionClick(reaction);
27722
27790
  }),
27723
- onSelectCamera: (deviceInfo, options) => __awaiter$j(void 0, void 0, void 0, function* () {
27791
+ onSelectCamera: (deviceInfo, options) => __awaiter$k(void 0, void 0, void 0, function* () {
27724
27792
  yield adapter.setCamera(deviceInfo, options);
27725
27793
  }),
27726
- onSelectMicrophone: (deviceInfo) => __awaiter$j(void 0, void 0, void 0, function* () {
27794
+ onSelectMicrophone: (deviceInfo) => __awaiter$k(void 0, void 0, void 0, function* () {
27727
27795
  yield adapter.setMicrophone(deviceInfo);
27728
27796
  }),
27729
- onSelectSpeaker: (deviceInfo) => __awaiter$j(void 0, void 0, void 0, function* () {
27797
+ onSelectSpeaker: (deviceInfo) => __awaiter$k(void 0, void 0, void 0, function* () {
27730
27798
  yield adapter.setSpeaker(deviceInfo);
27731
27799
  }),
27732
27800
  onStartCall: (participants, options) => {
27733
27801
  const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
27734
27802
  return adapter.startCall(rawIds, options);
27735
27803
  },
27736
- onStartScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
27804
+ onStartScreenShare: () => __awaiter$k(void 0, void 0, void 0, function* () {
27737
27805
  yield adapter.startScreenShare();
27738
27806
  }),
27739
- onStopScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
27807
+ onStopScreenShare: () => __awaiter$k(void 0, void 0, void 0, function* () {
27740
27808
  yield adapter.stopScreenShare();
27741
27809
  }),
27742
- onToggleCamera: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
27810
+ onToggleCamera: (options) => __awaiter$k(void 0, void 0, void 0, function* () {
27743
27811
  isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
27744
27812
  }),
27745
- onToggleMicrophone: () => __awaiter$j(void 0, void 0, void 0, function* () {
27813
+ onToggleMicrophone: () => __awaiter$k(void 0, void 0, void 0, function* () {
27746
27814
  var _c;
27747
27815
  return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isMuted) ? yield adapter.unmute() : yield adapter.mute();
27748
27816
  }),
27749
- onToggleScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
27817
+ onToggleScreenShare: () => __awaiter$k(void 0, void 0, void 0, function* () {
27750
27818
  var _d;
27751
27819
  return ((_d = adapter.getState().call) === null || _d === void 0 ? void 0 : _d.isScreenSharingOn)
27752
27820
  ? yield adapter.stopScreenShare()
27753
27821
  : yield adapter.startScreenShare();
27754
27822
  }),
27755
- onStartLocalVideo: () => __awaiter$j(void 0, void 0, void 0, function* () {
27823
+ onStartLocalVideo: () => __awaiter$k(void 0, void 0, void 0, function* () {
27756
27824
  if (adapter.getState().call) {
27757
27825
  return adapter.startCamera();
27758
27826
  }
27759
27827
  }),
27760
- onDisposeLocalStreamView: () => __awaiter$j(void 0, void 0, void 0, function* () {
27828
+ onDisposeLocalStreamView: () => __awaiter$k(void 0, void 0, void 0, function* () {
27761
27829
  return adapter.disposeLocalVideoStreamView();
27762
27830
  }),
27763
- onDisposeRemoteStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
27831
+ onDisposeRemoteStreamView: (userId) => __awaiter$k(void 0, void 0, void 0, function* () {
27764
27832
  return adapter.disposeStreamView(userId);
27765
27833
  }),
27766
- onDisposeRemoteScreenShareStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
27834
+ onDisposeRemoteScreenShareStreamView: (userId) => __awaiter$k(void 0, void 0, void 0, function* () {
27767
27835
  return adapter.disposeScreenShareStreamView(userId);
27768
27836
  }),
27769
- onDisposeRemoteVideoStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
27837
+ onDisposeRemoteVideoStreamView: (userId) => __awaiter$k(void 0, void 0, void 0, function* () {
27770
27838
  return adapter.disposeRemoteVideoStreamView(userId);
27771
27839
  }),
27772
27840
  /* @conditional-compile-remove(call-readiness) */
27773
- askDevicePermission: (constrain) => __awaiter$j(void 0, void 0, void 0, function* () {
27841
+ askDevicePermission: (constrain) => __awaiter$k(void 0, void 0, void 0, function* () {
27774
27842
  return adapter.askDevicePermission(constrain);
27775
27843
  }),
27776
- onRemoveVideoBackgroundEffects: () => __awaiter$j(void 0, void 0, void 0, function* () {
27844
+ onRemoveVideoBackgroundEffects: () => __awaiter$k(void 0, void 0, void 0, function* () {
27777
27845
  return yield adapter.stopVideoBackgroundEffects();
27778
27846
  }),
27779
- onBlurVideoBackground: (backgroundBlurConfig) => __awaiter$j(void 0, void 0, void 0, function* () {
27847
+ onBlurVideoBackground: (backgroundBlurConfig) => __awaiter$k(void 0, void 0, void 0, function* () {
27780
27848
  const blurConfig = Object.assign({ effectName: 'blur' }, backgroundBlurConfig);
27781
27849
  return yield adapter.startVideoBackgroundEffect(blurConfig);
27782
27850
  }),
27783
- onReplaceVideoBackground: (backgroundReplacementConfig) => __awaiter$j(void 0, void 0, void 0, function* () {
27851
+ onReplaceVideoBackground: (backgroundReplacementConfig) => __awaiter$k(void 0, void 0, void 0, function* () {
27784
27852
  const replacementConfig = Object.assign({ effectName: 'replacement' }, backgroundReplacementConfig);
27785
27853
  return yield adapter.startVideoBackgroundEffect(replacementConfig);
27786
27854
  }),
27787
27855
  /* @conditional-compile-remove(close-captions) */
27788
- onStartCaptions: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
27856
+ onStartCaptions: (options) => __awaiter$k(void 0, void 0, void 0, function* () {
27789
27857
  yield adapter.startCaptions(options);
27790
27858
  }),
27791
27859
  /* @conditional-compile-remove(close-captions) */
27792
- onStopCaptions: () => __awaiter$j(void 0, void 0, void 0, function* () {
27860
+ onStopCaptions: () => __awaiter$k(void 0, void 0, void 0, function* () {
27793
27861
  yield adapter.stopCaptions();
27794
27862
  }),
27795
27863
  /* @conditional-compile-remove(close-captions) */
27796
- onSetSpokenLanguage: (language) => __awaiter$j(void 0, void 0, void 0, function* () {
27864
+ onSetSpokenLanguage: (language) => __awaiter$k(void 0, void 0, void 0, function* () {
27797
27865
  yield adapter.setSpokenLanguage(language);
27798
27866
  }),
27799
27867
  /* @conditional-compile-remove(close-captions) */
27800
- onSetCaptionLanguage: (language) => __awaiter$j(void 0, void 0, void 0, function* () {
27868
+ onSetCaptionLanguage: (language) => __awaiter$k(void 0, void 0, void 0, function* () {
27801
27869
  yield adapter.setCaptionLanguage(language);
27802
27870
  }),
27803
27871
  /* @conditional-compile-remove(end-of-call-survey) */
27804
- onSubmitSurvey: (survey) => __awaiter$j(void 0, void 0, void 0, function* () {
27872
+ onSubmitSurvey: (survey) => __awaiter$k(void 0, void 0, void 0, function* () {
27805
27873
  return yield adapter.submitSurvey(survey);
27806
27874
  }),
27807
27875
  /* @conditional-compile-remove(spotlight) */
27808
- onStartSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
27876
+ onStartSpotlight: (userIds) => __awaiter$k(void 0, void 0, void 0, function* () {
27809
27877
  yield adapter.startSpotlight(userIds);
27810
27878
  }),
27811
27879
  /* @conditional-compile-remove(spotlight) */
27812
- onStopSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
27880
+ onStopSpotlight: (userIds) => __awaiter$k(void 0, void 0, void 0, function* () {
27813
27881
  yield adapter.stopSpotlight(userIds);
27814
27882
  }),
27815
27883
  /* @conditional-compile-remove(spotlight) */
27816
- onStopAllSpotlight: () => __awaiter$j(void 0, void 0, void 0, function* () {
27884
+ onStopAllSpotlight: () => __awaiter$k(void 0, void 0, void 0, function* () {
27817
27885
  yield adapter.stopAllSpotlight();
27818
27886
  }),
27819
27887
  /* @conditional-compile-remove(spotlight) */
27820
27888
  onStartLocalSpotlight: (capabilities === null || capabilities === void 0 ? void 0 : capabilities.spotlightParticipant.isPresent)
27821
- ? () => __awaiter$j(void 0, void 0, void 0, function* () {
27889
+ ? () => __awaiter$k(void 0, void 0, void 0, function* () {
27822
27890
  yield adapter.startSpotlight();
27823
27891
  })
27824
27892
  : undefined,
27825
27893
  /* @conditional-compile-remove(spotlight) */
27826
- onStopLocalSpotlight: () => __awaiter$j(void 0, void 0, void 0, function* () {
27894
+ onStopLocalSpotlight: () => __awaiter$k(void 0, void 0, void 0, function* () {
27827
27895
  yield adapter.stopSpotlight();
27828
27896
  }),
27829
27897
  /* @conditional-compile-remove(spotlight) */
27830
27898
  onStartRemoteSpotlight: (capabilities === null || capabilities === void 0 ? void 0 : capabilities.spotlightParticipant.isPresent)
27831
- ? (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
27899
+ ? (userIds) => __awaiter$k(void 0, void 0, void 0, function* () {
27832
27900
  yield adapter.startSpotlight(userIds);
27833
27901
  })
27834
27902
  : undefined,
27835
27903
  /* @conditional-compile-remove(spotlight) */
27836
27904
  onStopRemoteSpotlight: (capabilities === null || capabilities === void 0 ? void 0 : capabilities.removeParticipantsSpotlight.isPresent)
27837
- ? (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
27905
+ ? (userIds) => __awaiter$k(void 0, void 0, void 0, function* () {
27838
27906
  yield adapter.stopSpotlight(userIds);
27839
27907
  })
27840
27908
  : undefined
@@ -27980,7 +28048,7 @@ const MoreButton = (props) => {
27980
28048
 
27981
28049
  // Copyright (c) Microsoft Corporation.
27982
28050
  // Licensed under the MIT License.
27983
- var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
28051
+ var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
27984
28052
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27985
28053
  return new (P || (P = Promise))(function (resolve, reject) {
27986
28054
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -28008,7 +28076,7 @@ const CaptionsBannerMoreButton = (props) => {
28008
28076
  /* @conditional-compile-remove(close-captions) */
28009
28077
  const moreButtonContextualMenuItems = [];
28010
28078
  /* @conditional-compile-remove(close-captions) */
28011
- const startCaptions = React.useCallback(() => __awaiter$i(void 0, void 0, void 0, function* () {
28079
+ const startCaptions = React.useCallback(() => __awaiter$j(void 0, void 0, void 0, function* () {
28012
28080
  yield startCaptionsButtonHandlers.onStartCaptions({
28013
28081
  spokenLanguage: startCaptionsButtonProps.currentSpokenLanguage
28014
28082
  });
@@ -28205,15 +28273,105 @@ const getLabelFromRole = (role, locale) => {
28205
28273
 
28206
28274
  // Copyright (c) Microsoft Corporation.
28207
28275
  // Licensed under the MIT License.
28276
+ /**
28277
+ * @private
28278
+ */
28279
+ const Prompt = (props) => {
28280
+ const theme = useTheme();
28281
+ return (React.createElement(react.Modal, { styles: modalStyles, isOpen: props.isOpen, onDismiss: props.onDismiss, isBlocking: false },
28282
+ React.createElement(react.Stack, { className: react.mergeStyles({ position: 'relative' }) },
28283
+ React.createElement(react.Text, { className: react.mergeStyles({ fontWeight: 600, fontSize: '1.25rem' }) }, props.heading),
28284
+ React.createElement(react.IconButton, { styles: iconButtonStyles(theme), iconProps: { iconName: 'Cancel' }, onClick: props.onCancel })),
28285
+ React.createElement(react.Stack, { verticalAlign: "center", className: react.mergeStyles({ minHeight: '6rem' }) },
28286
+ React.createElement(react.Text, { className: react.mergeStyles({ fontSize: '0.875rem' }) }, props.text)),
28287
+ React.createElement(react.Stack, { horizontal: true, horizontalAlign: "end", tokens: { childrenGap: '0.5rem' } },
28288
+ React.createElement(react.PrimaryButton, { styles: buttonTextStyles, text: props.confirmButtonLabel, onClick: props.onConfirm }),
28289
+ React.createElement(react.DefaultButton, { styles: buttonTextStyles, text: props.cancelButtonLabel, onClick: props.onCancel }))));
28290
+ };
28291
+ const iconButtonStyles = (theme) => ({
28292
+ root: {
28293
+ position: 'absolute',
28294
+ top: 0,
28295
+ right: 0,
28296
+ color: theme.palette.neutralPrimary
28297
+ },
28298
+ rootHovered: {
28299
+ color: theme.palette.neutralDark
28300
+ }
28301
+ });
28302
+ const modalStyles = { main: { padding: '1.5rem ', maxWidth: '30rem' } };
28303
+ const buttonTextStyles = { label: { fontSize: '0.875rem' } };
28304
+
28305
+ // Copyright (c) Microsoft Corporation.
28306
+ // Licensed under the MIT License.
28307
+ var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
28308
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
28309
+ return new (P || (P = Promise))(function (resolve, reject) {
28310
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
28311
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
28312
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
28313
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28314
+ });
28315
+ };
28208
28316
  /** @private */
28209
28317
  const EndCall = (props) => {
28318
+ var _a;
28210
28319
  const compactMode = props.displayType === 'compact';
28211
28320
  const hangUpButtonProps = usePropsFor$1(EndCallButton);
28321
+ /* @conditional-compile-remove(end-call-options) */
28322
+ const localeStrings = useLocale().strings;
28323
+ /* @conditional-compile-remove(end-call-options) */
28324
+ const { onHangUp, enableEndCallMenu } = hangUpButtonProps;
28325
+ /* @conditional-compile-remove(end-call-options) */
28326
+ const [showHangUpConfirm, setShowHangUpConfirm] = React.useState(false);
28327
+ /* @conditional-compile-remove(end-call-options) */
28328
+ const toggleConfirm = React.useCallback(() => {
28329
+ setShowHangUpConfirm(!showHangUpConfirm);
28330
+ }, [showHangUpConfirm]);
28331
+ /* @conditional-compile-remove(end-call-options) */
28332
+ const onHangUpConfirm = React.useCallback((hangUpForEveryone) => {
28333
+ onHangUp && onHangUp(hangUpForEveryone);
28334
+ toggleConfirm();
28335
+ }, [onHangUp, toggleConfirm]);
28336
+ /* @conditional-compile-remove(end-call-options) */
28337
+ const hangUpOverride = React.useCallback((forEveryone) => __awaiter$i(void 0, void 0, void 0, function* () {
28338
+ if (props.mobileView ||
28339
+ forEveryone === false /* value being false(not undefined) because it comes from endCall option */) {
28340
+ onHangUp();
28341
+ return;
28342
+ }
28343
+ forEveryone
28344
+ ? setPromptHeading(localeStrings.call.endCallConfirmDialogTitle)
28345
+ : setPromptHeading(localeStrings.call.leaveConfirmDialogTitle);
28346
+ forEveryone
28347
+ ? setPromptText(localeStrings.call.endCallConfirmDialogContent)
28348
+ : setPromptText(localeStrings.call.leaveConfirmDialogContent);
28349
+ toggleConfirm();
28350
+ }), [
28351
+ localeStrings.call.endCallConfirmDialogContent,
28352
+ localeStrings.call.endCallConfirmDialogTitle,
28353
+ localeStrings.call.leaveConfirmDialogContent,
28354
+ localeStrings.call.leaveConfirmDialogTitle,
28355
+ onHangUp,
28356
+ props.mobileView,
28357
+ toggleConfirm
28358
+ ]);
28359
+ /* @conditional-compile-remove(end-call-options) */
28360
+ const [promptHeading, setPromptHeading] = React.useState();
28361
+ /* @conditional-compile-remove(end-call-options) */
28362
+ const [promptText, setPromptText] = React.useState();
28212
28363
  const styles = React.useMemo(() => {
28213
28364
  var _a;
28214
28365
  return react.concatStyleSets(compactMode ? groupCallLeaveButtonCompressedStyle : groupCallLeaveButtonStyle, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
28215
28366
  }, [compactMode, props.styles]);
28216
- return (React.createElement(EndCallButton, Object.assign({ "data-ui-id": "call-composite-hangup-button" }, hangUpButtonProps, { styles: styles, showLabel: !compactMode })));
28367
+ return (React.createElement(React.Fragment, null,
28368
+ /* @conditional-compile-remove(end-call-options) */
28369
+ React.createElement(Prompt, { heading: promptHeading, text: promptText, confirmButtonLabel: localeStrings.call.hangUpConfirmButtonLabel, cancelButtonLabel: localeStrings.call.hangUpCancelButtonLabel, onConfirm: () => onHangUpConfirm(enableEndCallMenu), isOpen: showHangUpConfirm, onCancel: toggleConfirm }),
28370
+ React.createElement(EndCallButton, Object.assign({ "data-ui-id": "call-composite-hangup-button" }, hangUpButtonProps, {
28371
+ /* @conditional-compile-remove(end-call-options) */
28372
+ onHangUp: hangUpOverride, styles: styles, showLabel: !compactMode,
28373
+ /* @conditional-compile-remove(end-call-options) */
28374
+ enableEndCallMenu: (_a = props.enableEndCallMenu) !== null && _a !== void 0 ? _a : false }))));
28217
28375
  };
28218
28376
 
28219
28377
  // Copyright (c) Microsoft Corporation.
@@ -29492,6 +29650,125 @@ const ExitSpotlightButton = (props) => {
29492
29650
  return (React.createElement(ControlBarButton, Object.assign({ "data-ui-id": 'call-composite-exit-spotlight-button', labelKey: 'exitSpotlightButtonLabelKey', showLabel: props.displayType !== 'compact', onRenderIcon: () => React.createElement(_HighContrastAwareIcon, { iconName: 'ControlButtonExitSpotlight' }), onClick: props.onClick }, props)));
29493
29651
  };
29494
29652
 
29653
+ // Copyright (c) Microsoft Corporation.
29654
+ // Licensed under the MIT License.
29655
+ /**
29656
+ * Default Modal PIP related pixel measurements used for ModalLocalAndremotePIP and common/utils.
29657
+ *
29658
+ * @private
29659
+ */
29660
+ const MODAL_PIP_DEFAULT_PX = {
29661
+ rightPositionPx: 16,
29662
+ topPositionPx: 52,
29663
+ widthPx: 88,
29664
+ heightPx: 128
29665
+ };
29666
+ /**
29667
+ * @private
29668
+ */
29669
+ const getPipStyles = (theme) => ({
29670
+ modal: {
29671
+ main: Object.assign(Object.assign({ borderRadius: theme.effects.roundedCorner4, boxShadow: theme.effects.elevation8,
29672
+ // Above the message thread / people pane.
29673
+ zIndex: 2 }, (theme.rtl
29674
+ ? { left: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx) }
29675
+ : { right: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx) })), { top: _pxToRem(MODAL_PIP_DEFAULT_PX.topPositionPx) })
29676
+ }
29677
+ });
29678
+ /**
29679
+ * @private
29680
+ */
29681
+ const PIPContainerStyle = {
29682
+ root: {
29683
+ position: 'absolute',
29684
+ width: '100%',
29685
+ height: '100%',
29686
+ pointerEvents: 'none',
29687
+ ':focus-within': {
29688
+ outline: '1px solid #00000000'
29689
+ }
29690
+ }
29691
+ };
29692
+ /**
29693
+ * @private
29694
+ */
29695
+ const hiddenStyle = react.concatStyleSets(PIPContainerStyle, { root: { display: 'none' } });
29696
+ /**
29697
+ * @private
29698
+ */
29699
+ const modalStyle = {
29700
+ main: {
29701
+ minWidth: 'min-content',
29702
+ minHeight: 'min-content',
29703
+ position: 'absolute',
29704
+ overflow: 'hidden',
29705
+ // pointer events for root Modal div set to auto to make LocalAndRemotePIP interactive
29706
+ pointerEvents: 'auto',
29707
+ touchAction: 'none'
29708
+ },
29709
+ root: {
29710
+ width: '100%',
29711
+ height: '100%',
29712
+ // pointer events for root Modal div set to none to make descendants interactive
29713
+ pointerEvents: 'none',
29714
+ ':focus-within': {
29715
+ outline: '3px solid #00000000',
29716
+ outlineOffset: '-3px'
29717
+ }
29718
+ }
29719
+ };
29720
+ /**
29721
+ * Styles for layer host to bound the modal wrapping PiPiP in the mobile pane.
29722
+ * @private
29723
+ */
29724
+ const modalLayerHostStyle = {
29725
+ display: 'flex',
29726
+ position: 'absolute',
29727
+ left: 0,
29728
+ top: 0,
29729
+ width: '100%',
29730
+ height: '100%',
29731
+ overflow: 'hidden',
29732
+ zIndex: '100000',
29733
+ // pointer events for layerHost set to none to make descendants interactive
29734
+ pointerEvents: 'none'
29735
+ };
29736
+
29737
+ // Copyright (c) Microsoft Corporation.
29738
+ // Licensed under the MIT License.
29739
+ /**
29740
+ * @private
29741
+ */
29742
+ const isBoolean = (value) => {
29743
+ return value !== null && typeof value === 'boolean';
29744
+ };
29745
+ /**
29746
+ * @private
29747
+ */
29748
+ // Use document.getElementById until Fluent's Stack supports componentRef property: https://github.com/microsoft/fluentui/issues/20410
29749
+ const useMinMaxDragPosition = (modalLayerHostId, rtl) => {
29750
+ const modalHostRef = React.useRef(document.getElementById(modalLayerHostId));
29751
+ const modalHostWidth = _useContainerWidth(modalHostRef);
29752
+ const modalHostHeight = _useContainerHeight(modalHostRef);
29753
+ const minDragPosition = React.useMemo(() => modalHostWidth === undefined
29754
+ ? undefined
29755
+ : {
29756
+ x: rtl
29757
+ ? -1 * MODAL_PIP_DEFAULT_PX.rightPositionPx
29758
+ : MODAL_PIP_DEFAULT_PX.rightPositionPx - modalHostWidth + MODAL_PIP_DEFAULT_PX.widthPx,
29759
+ y: -1 * MODAL_PIP_DEFAULT_PX.topPositionPx
29760
+ }, [modalHostWidth, rtl]);
29761
+ const maxDragPosition = React.useMemo(() => modalHostWidth === undefined || modalHostHeight === undefined
29762
+ ? undefined
29763
+ : {
29764
+ x: rtl
29765
+ ? modalHostWidth - MODAL_PIP_DEFAULT_PX.rightPositionPx - MODAL_PIP_DEFAULT_PX.widthPx
29766
+ : MODAL_PIP_DEFAULT_PX.rightPositionPx,
29767
+ y: modalHostHeight - MODAL_PIP_DEFAULT_PX.topPositionPx - MODAL_PIP_DEFAULT_PX.heightPx
29768
+ }, [modalHostHeight, modalHostWidth, rtl]);
29769
+ return { minDragPosition: minDragPosition, maxDragPosition: maxDragPosition };
29770
+ };
29771
+
29495
29772
  // Copyright (c) Microsoft Corporation.
29496
29773
  // Licensed under the MIT License.
29497
29774
  const inferCommonCallControlOptions = (mobileView, commonCallControlOptions) => {
@@ -29511,7 +29788,7 @@ const inferCommonCallControlOptions = (mobileView, commonCallControlOptions) =>
29511
29788
  * @private
29512
29789
  */
29513
29790
  const CommonCallControlBar = (props) => {
29514
- var _a, _b, _c;
29791
+ var _a, _b, _c, _d, _e, _f, _g;
29515
29792
  const theme = react.useTheme();
29516
29793
  const rtl = theme.rtl;
29517
29794
  const controlBarContainerRef = React.useRef(null);
@@ -29526,6 +29803,11 @@ const CommonCallControlBar = (props) => {
29526
29803
  const options = inferCommonCallControlOptions(props.mobileView, props.callControls);
29527
29804
  /* @conditional-compile-remove(close-captions) */
29528
29805
  const [showCaptionsSettingsModal, setShowCaptionsSettingsModal] = React.useState(false);
29806
+ /* @conditional-compile-remove(end-call-options) */
29807
+ // If the hangup capability is not present, we default to true
29808
+ const isHangUpForEveryoneAllowed = (_a = useSelector$1((state) => { var _a, _b; return (_b = (_a = state.call) === null || _a === void 0 ? void 0 : _a.capabilitiesFeature) === null || _b === void 0 ? void 0 : _b.capabilities.hangUpForEveryOne.isPresent; })) !== null && _a !== void 0 ? _a : true;
29809
+ /* @conditional-compile-remove(end-call-options) */
29810
+ const isTeams = useSelector$1(getIsTeamsCall);
29529
29811
  const handleResize = React.useCallback(() => {
29530
29812
  setControlBarButtonsWidth(controlBarContainerRef.current ? controlBarContainerRef.current.offsetWidth : 0);
29531
29813
  setPanelsButtonsWidth(sidepaneControlsRef.current ? sidepaneControlsRef.current.offsetWidth : 0);
@@ -29615,7 +29897,7 @@ const CommonCallControlBar = (props) => {
29615
29897
  (/*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.holdButton) ||
29616
29898
  /* @conditional-compile-remove(close-captions) */ showCaptionsButton ||
29617
29899
  props.onUserSetGalleryLayout);
29618
- const role = (_a = props.callAdapter.getState().call) === null || _a === void 0 ? void 0 : _a.role;
29900
+ const role = (_b = props.callAdapter.getState().call) === null || _b === void 0 ? void 0 : _b.role;
29619
29901
  const hideRaiseHandButtonInRoomsCall = props.callAdapter.getState().isRoomsCall && role && ['Consumer', 'Unknown'].includes(role);
29620
29902
  /*@conditional-compile-remove(reaction) */
29621
29903
  const reactionResources = props.callAdapter.getState().reactions;
@@ -29653,8 +29935,8 @@ const CommonCallControlBar = (props) => {
29653
29935
  props.onStopLocalSpotlight && (React.createElement(ExitSpotlightButton, { displayType: options.displayType, onClick: props.onStopLocalSpotlight, styles: commonButtonStyles, strings: exitSpotlightButtonStrings })),
29654
29936
  screenShareButtonIsEnabled && (React.createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles,
29655
29937
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
29656
- disabled: props.disableButtonsForHoldScreen || isDisabled$4(options.screenShareButton) })), (_b = customButtons['primary']) === null || _b === void 0 ? void 0 :
29657
- _b.slice(0, props.mobileView
29938
+ disabled: props.disableButtonsForHoldScreen || isDisabled$4(options.screenShareButton) })), (_c = customButtons['primary']) === null || _c === void 0 ? void 0 :
29939
+ _c.slice(0, props.mobileView
29658
29940
  ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS
29659
29941
  : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
29660
29942
  return (React.createElement(CustomButton, { key: `primary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact', disableTooltip: props.mobileView }));
@@ -29667,14 +29949,21 @@ const CommonCallControlBar = (props) => {
29667
29949
  isCaptionsSupported: showCaptionsButton,
29668
29950
  /* @conditional-compile-remove(close-captions) */
29669
29951
  onCaptionsSettingsClick: openCaptionsSettingsModal, onUserSetOverflowGalleryPositionChange: props.onUserSetOverflowGalleryPositionChange, onUserSetGalleryLayout: props.onUserSetGalleryLayout, userSetGalleryLayout: props.userSetGalleryLayout, dtmfDialerPresent: props.dtmfDialerPresent, onSetDialpadPage: props.onSetDialpadPage })),
29670
- React.createElement(EndCall, { displayType: "compact", styles: endCallButtonStyles }))))))),
29952
+ React.createElement(EndCall, { displayType: "compact", mobileView: props.mobileView, styles: endCallButtonStyles,
29953
+ /* @conditional-compile-remove(end-call-options) */
29954
+ enableEndCallMenu: !isBoolean(props.callControls) &&
29955
+ !isBoolean((_d = props.callControls) === null || _d === void 0 ? void 0 : _d.endCallButton) &&
29956
+ !props.mobileView &&
29957
+ isHangUpForEveryoneAllowed &&
29958
+ !isTeams && // Temporary disable it for Teams call, since capability does not give the right value
29959
+ ((_f = (_e = props.callControls) === null || _e === void 0 ? void 0 : _e.endCallButton) === null || _f === void 0 ? void 0 : _f.hangUpForEveryone) === 'endCallOptions' }))))))),
29671
29960
  !props.mobileView && sideButtonsPresent && (React.createElement(react.Stack.Item, null,
29672
29961
  React.createElement("div", { ref: sidepaneControlsRef },
29673
29962
  React.createElement(react.Stack, { horizontal: true, className: !props.mobileView ? react.mergeStyles(desktopButtonContainerStyle) : undefined },
29674
29963
  isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React.createElement(PeopleButton, { checked: props.peopleButtonChecked, ariaLabel: props.peopleButtonChecked ? peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.selectedLabel : peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "common-call-composite-people-button", disabled: props.disableButtonsForLobbyPage ||
29675
29964
  props.disableButtonsForHoldScreen ||
29676
- isDisabled$4(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles, componentRef: props.peopleButtonRef })), (_c = customButtons['secondary']) === null || _c === void 0 ? void 0 :
29677
- _c.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
29965
+ isDisabled$4(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles, componentRef: props.peopleButtonRef })), (_g = customButtons['secondary']) === null || _g === void 0 ? void 0 :
29966
+ _g.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
29678
29967
  return (React.createElement(CustomButton, { key: `secondary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact' }));
29679
29968
  }))))))));
29680
29969
  };
@@ -31664,90 +31953,6 @@ const updateUserDisplayNamesTrampoline = (remoteParticipants) => {
31664
31953
  return _updateUserDisplayNames(remoteParticipants);
31665
31954
  };
31666
31955
 
31667
- // Copyright (c) Microsoft Corporation.
31668
- // Licensed under the MIT License.
31669
- /**
31670
- * Default Modal PIP related pixel measurements used for ModalLocalAndremotePIP and common/utils.
31671
- *
31672
- * @private
31673
- */
31674
- const MODAL_PIP_DEFAULT_PX = {
31675
- rightPositionPx: 16,
31676
- topPositionPx: 52,
31677
- widthPx: 88,
31678
- heightPx: 128
31679
- };
31680
- /**
31681
- * @private
31682
- */
31683
- const getPipStyles = (theme) => ({
31684
- modal: {
31685
- main: Object.assign(Object.assign({ borderRadius: theme.effects.roundedCorner4, boxShadow: theme.effects.elevation8,
31686
- // Above the message thread / people pane.
31687
- zIndex: 2 }, (theme.rtl
31688
- ? { left: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx) }
31689
- : { right: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx) })), { top: _pxToRem(MODAL_PIP_DEFAULT_PX.topPositionPx) })
31690
- }
31691
- });
31692
- /**
31693
- * @private
31694
- */
31695
- const PIPContainerStyle = {
31696
- root: {
31697
- position: 'absolute',
31698
- width: '100%',
31699
- height: '100%',
31700
- pointerEvents: 'none',
31701
- ':focus-within': {
31702
- outline: '1px solid #00000000'
31703
- }
31704
- }
31705
- };
31706
- /**
31707
- * @private
31708
- */
31709
- const hiddenStyle = react.concatStyleSets(PIPContainerStyle, { root: { display: 'none' } });
31710
- /**
31711
- * @private
31712
- */
31713
- const modalStyle = {
31714
- main: {
31715
- minWidth: 'min-content',
31716
- minHeight: 'min-content',
31717
- position: 'absolute',
31718
- overflow: 'hidden',
31719
- // pointer events for root Modal div set to auto to make LocalAndRemotePIP interactive
31720
- pointerEvents: 'auto',
31721
- touchAction: 'none'
31722
- },
31723
- root: {
31724
- width: '100%',
31725
- height: '100%',
31726
- // pointer events for root Modal div set to none to make descendants interactive
31727
- pointerEvents: 'none',
31728
- ':focus-within': {
31729
- outline: '3px solid #00000000',
31730
- outlineOffset: '-3px'
31731
- }
31732
- }
31733
- };
31734
- /**
31735
- * Styles for layer host to bound the modal wrapping PiPiP in the mobile pane.
31736
- * @private
31737
- */
31738
- const modalLayerHostStyle = {
31739
- display: 'flex',
31740
- position: 'absolute',
31741
- left: 0,
31742
- top: 0,
31743
- width: '100%',
31744
- height: '100%',
31745
- overflow: 'hidden',
31746
- zIndex: '100000',
31747
- // pointer events for layerHost set to none to make descendants interactive
31748
- pointerEvents: 'none'
31749
- };
31750
-
31751
31956
  // Copyright (c) Microsoft Corporation.
31752
31957
  // Licensed under the MIT License.
31753
31958
  /**
@@ -31823,35 +32028,6 @@ const ModalLocalAndRemotePIP = (props) => {
31823
32028
  !props.hidden && localAndRemotePIP))));
31824
32029
  };
31825
32030
 
31826
- // Copyright (c) Microsoft Corporation.
31827
- // Licensed under the MIT License.
31828
- /**
31829
- * @private
31830
- */
31831
- // Use document.getElementById until Fluent's Stack supports componentRef property: https://github.com/microsoft/fluentui/issues/20410
31832
- const useMinMaxDragPosition = (modalLayerHostId, rtl) => {
31833
- const modalHostRef = React.useRef(document.getElementById(modalLayerHostId));
31834
- const modalHostWidth = _useContainerWidth(modalHostRef);
31835
- const modalHostHeight = _useContainerHeight(modalHostRef);
31836
- const minDragPosition = React.useMemo(() => modalHostWidth === undefined
31837
- ? undefined
31838
- : {
31839
- x: rtl
31840
- ? -1 * MODAL_PIP_DEFAULT_PX.rightPositionPx
31841
- : MODAL_PIP_DEFAULT_PX.rightPositionPx - modalHostWidth + MODAL_PIP_DEFAULT_PX.widthPx,
31842
- y: -1 * MODAL_PIP_DEFAULT_PX.topPositionPx
31843
- }, [modalHostWidth, rtl]);
31844
- const maxDragPosition = React.useMemo(() => modalHostWidth === undefined || modalHostHeight === undefined
31845
- ? undefined
31846
- : {
31847
- x: rtl
31848
- ? modalHostWidth - MODAL_PIP_DEFAULT_PX.rightPositionPx - MODAL_PIP_DEFAULT_PX.widthPx
31849
- : MODAL_PIP_DEFAULT_PX.rightPositionPx,
31850
- y: modalHostHeight - MODAL_PIP_DEFAULT_PX.topPositionPx - MODAL_PIP_DEFAULT_PX.heightPx
31851
- }, [modalHostHeight, modalHostWidth, rtl]);
31852
- return { minDragPosition: minDragPosition, maxDragPosition: maxDragPosition };
31853
- };
31854
-
31855
32031
  // Copyright (c) Microsoft Corporation.
31856
32032
  // Licensed under the MIT License.
31857
32033
  /* @conditional-compile-remove(capabilities) */
@@ -32786,42 +32962,6 @@ const DtmfDialpadPage = (props) => {
32786
32962
  return React.createElement(DtmfDialpadPageContent, Object.assign({ adapter: adapter }, props, { mobileView: props.mobileView }));
32787
32963
  };
32788
32964
 
32789
- // Copyright (c) Microsoft Corporation.
32790
- // Licensed under the MIT License.
32791
- /* @conditional-compile-remove(spotlight) */
32792
- /* @conditional-compile-remove(spotlight) */
32793
- /**
32794
- * @private
32795
- */
32796
- const Prompt = (props) => {
32797
- const theme = useTheme();
32798
- return (React.createElement(react.Modal, { styles: modalStyles, isOpen: props.isOpen, onDismiss: props.onDismiss, isBlocking: false },
32799
- React.createElement(react.Stack, { className: react.mergeStyles({ position: 'relative' }) },
32800
- React.createElement(react.Text, { className: react.mergeStyles({ fontWeight: 600, fontSize: '1.25rem' }) }, props.heading),
32801
- React.createElement(react.IconButton, { styles: iconButtonStyles(theme), iconProps: { iconName: 'Cancel' }, onClick: props.onCancel })),
32802
- React.createElement(react.Stack, { verticalAlign: "center", className: react.mergeStyles({ minHeight: '6rem' }) },
32803
- React.createElement(react.Text, { className: react.mergeStyles({ fontSize: '0.875rem' }) }, props.text)),
32804
- React.createElement(react.Stack, { horizontal: true, horizontalAlign: "end", tokens: { childrenGap: '0.5rem' } },
32805
- React.createElement(react.PrimaryButton, { styles: buttonTextStyles, text: props.confirmButtonLabel, onClick: props.onConfirm }),
32806
- React.createElement(react.DefaultButton, { styles: buttonTextStyles, text: props.cancelButtonLabel, onClick: props.onCancel }))));
32807
- };
32808
- /* @conditional-compile-remove(spotlight) */
32809
- const iconButtonStyles = (theme) => ({
32810
- root: {
32811
- position: 'absolute',
32812
- top: 0,
32813
- right: 0,
32814
- color: theme.palette.neutralPrimary
32815
- },
32816
- rootHovered: {
32817
- color: theme.palette.neutralDark
32818
- }
32819
- });
32820
- /* @conditional-compile-remove(spotlight) */
32821
- const modalStyles = { main: { padding: '1.5rem ', maxWidth: '30rem' } };
32822
- /* @conditional-compile-remove(spotlight) */
32823
- const buttonTextStyles = { label: { fontSize: '0.875rem' } };
32824
-
32825
32965
  // Copyright (c) Microsoft Corporation.
32826
32966
  // Licensed under the MIT License.
32827
32967
  /**
@@ -37305,32 +37445,32 @@ class CallWithChatBackedChatAdapter {
37305
37445
  throw new Error(`Chat Topics are not supported in CallWithChatComposite.`);
37306
37446
  });
37307
37447
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37308
- this.registerActiveFileUploads = (files) => {
37309
- return this.callWithChatAdapter.registerActiveFileUploads(files);
37448
+ this.registerActiveUploads = (files) => {
37449
+ return this.callWithChatAdapter.registerActiveUploads(files);
37310
37450
  };
37311
37451
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37312
- this.registerCompletedFileUploads = (metadata) => {
37313
- return this.callWithChatAdapter.registerCompletedFileUploads(metadata);
37452
+ this.registerCompletedUploads = (metadata) => {
37453
+ return this.callWithChatAdapter.registerCompletedUploads(metadata);
37314
37454
  };
37315
37455
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37316
- this.clearFileUploads = () => {
37317
- this.callWithChatAdapter.clearFileUploads();
37456
+ this.clearUploads = () => {
37457
+ this.callWithChatAdapter.clearUploads();
37318
37458
  };
37319
37459
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37320
- this.cancelFileUpload = (id) => {
37321
- this.callWithChatAdapter.cancelFileUpload(id);
37460
+ this.cancelUpload = (id) => {
37461
+ this.callWithChatAdapter.cancelUpload(id);
37322
37462
  };
37323
37463
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37324
- this.updateFileUploadProgress = (id, progress) => {
37325
- this.callWithChatAdapter.updateFileUploadProgress(id, progress);
37464
+ this.updateUploadProgress = (id, progress) => {
37465
+ this.callWithChatAdapter.updateUploadProgress(id, progress);
37326
37466
  };
37327
37467
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37328
- this.updateFileUploadErrorMessage = (id, errorMessage) => {
37329
- this.callWithChatAdapter.updateFileUploadErrorMessage(id, errorMessage);
37468
+ this.updateUploadStatusMessage = (id, errorMessage) => {
37469
+ this.callWithChatAdapter.updateUploadStatusMessage(id, errorMessage);
37330
37470
  };
37331
37471
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37332
- this.updateFileUploadMetadata = (id, metadata) => {
37333
- this.callWithChatAdapter.updateFileUploadMetadata(id, metadata);
37472
+ this.updateUploadMetadata = (id, metadata) => {
37473
+ this.callWithChatAdapter.updateUploadMetadata(id, metadata);
37334
37474
  };
37335
37475
  this.callWithChatAdapter = callWithChatAdapter;
37336
37476
  }
@@ -37353,7 +37493,7 @@ function chatAdapterStateFromCallWithChatAdapterState(callWithChatAdapterState)
37353
37493
  thread: callWithChatAdapterState.chat,
37354
37494
  latestErrors: callWithChatAdapterState.latestChatErrors,
37355
37495
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37356
- fileUploads: callWithChatAdapterState.fileUploads
37496
+ attachmentUploads: callWithChatAdapterState.attachmentUploads
37357
37497
  };
37358
37498
  }
37359
37499
 
@@ -37666,10 +37806,10 @@ const CallWithChatScreen = (props) => {
37666
37806
  /* @conditional-compile-remove(chat-composite-participant-pane) */
37667
37807
  participantPane: false,
37668
37808
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37669
- fileSharing: props.fileSharing
37809
+ attachmentOptions: props.attachmentOptions
37670
37810
  }, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData })), [
37671
37811
  chatAdapter,
37672
- /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ props.fileSharing,
37812
+ /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */ props.attachmentOptions,
37673
37813
  props.onFetchAvatarPersonaData,
37674
37814
  theme
37675
37815
  ]);
@@ -37720,7 +37860,7 @@ const CallWithChatComposite = (props) => {
37720
37860
  /* @conditional-compile-remove(call-readiness) */
37721
37861
  deviceChecks: options === null || options === void 0 ? void 0 : options.deviceChecks, callWithChatAdapter: adapter, formFactor: formFactor, callControls: options === null || options === void 0 ? void 0 : options.callControls, joinInvitationURL: joinInvitationURL, fluentTheme: fluentTheme, remoteVideoTileMenuOptions: options === null || options === void 0 ? void 0 : options.remoteVideoTileMenuOptions,
37722
37862
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37723
- fileSharing: options === null || options === void 0 ? void 0 : options.fileSharing, localVideoTile: options === null || options === void 0 ? void 0 : options.localVideoTile, galleryOptions: options === null || options === void 0 ? void 0 : options.galleryOptions,
37863
+ attachmentOptions: options === null || options === void 0 ? void 0 : options.attachmentOptions, localVideoTile: options === null || options === void 0 ? void 0 : options.localVideoTile, galleryOptions: options === null || options === void 0 ? void 0 : options.galleryOptions,
37724
37864
  /* @conditional-compile-remove(custom-branding) */
37725
37865
  logo: (_a = options === null || options === void 0 ? void 0 : options.branding) === null || _a === void 0 ? void 0 : _a.logo,
37726
37866
  /* @conditional-compile-remove(custom-branding) */
@@ -37772,7 +37912,7 @@ function callWithChatAdapterStateFromBackingStates(callAdapter) {
37772
37912
  latestCallErrors: callAdapterState.latestErrors,
37773
37913
  latestChatErrors: {},
37774
37914
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37775
- fileUploads: {},
37915
+ attachmentUploads: {},
37776
37916
  /* @conditional-compile-remove(PSTN-calls) */
37777
37917
  alternateCallerId: callAdapterState.alternateCallerId,
37778
37918
  /* @conditional-compile-remove(unsupported-browser) */
@@ -37793,7 +37933,7 @@ function callWithChatAdapterStateFromBackingStates(callAdapter) {
37793
37933
  function mergeChatAdapterStateIntoCallWithChatAdapterState(existingCallWithChatAdapterState, chatAdapterState) {
37794
37934
  return Object.assign(Object.assign({}, existingCallWithChatAdapterState), { chat: chatAdapterState.thread, latestChatErrors: chatAdapterState.latestErrors,
37795
37935
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37796
- fileUploads: chatAdapterState.fileUploads });
37936
+ attachmentUploads: chatAdapterState.attachmentUploads });
37797
37937
  }
37798
37938
  /**
37799
37939
  * @private
@@ -37874,43 +38014,43 @@ class CallWithChatContext {
37874
38014
  class AzureCommunicationCallWithChatAdapter {
37875
38015
  constructor(callAdapter, chatAdapterPromise) {
37876
38016
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37877
- this.registerActiveFileUploads = (files) => {
38017
+ this.registerActiveUploads = (files) => {
37878
38018
  var _a, _b;
37879
- return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerActiveFileUploads(files)) !== null && _b !== void 0 ? _b : [];
38019
+ return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerActiveUploads(files)) !== null && _b !== void 0 ? _b : [];
37880
38020
  };
37881
38021
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37882
- this.registerCompletedFileUploads = (metadata) => {
38022
+ this.registerCompletedUploads = (metadata) => {
37883
38023
  var _a, _b;
37884
- return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerCompletedFileUploads(metadata)) !== null && _b !== void 0 ? _b : [];
38024
+ return (_b = (_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.registerCompletedUploads(metadata)) !== null && _b !== void 0 ? _b : [];
37885
38025
  };
37886
38026
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37887
- this.clearFileUploads = () => {
38027
+ this.clearUploads = () => {
37888
38028
  this.chatAdapterPromise.then((adapter) => {
37889
- adapter.clearFileUploads();
38029
+ adapter.clearUploads();
37890
38030
  });
37891
38031
  };
37892
38032
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37893
- this.cancelFileUpload = (id) => {
38033
+ this.cancelUpload = (id) => {
37894
38034
  this.chatAdapterPromise.then((adapter) => {
37895
- adapter.cancelFileUpload(id);
38035
+ adapter.cancelUpload(id);
37896
38036
  });
37897
38037
  };
37898
38038
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37899
- this.updateFileUploadProgress = (id, progress) => {
38039
+ this.updateUploadProgress = (id, progress) => {
37900
38040
  this.chatAdapterPromise.then((adapter) => {
37901
- adapter.updateFileUploadProgress(id, progress);
38041
+ adapter.updateUploadProgress(id, progress);
37902
38042
  });
37903
38043
  };
37904
38044
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37905
- this.updateFileUploadErrorMessage = (id, errorMessage) => {
38045
+ this.updateUploadStatusMessage = (id, errorMessage) => {
37906
38046
  this.chatAdapterPromise.then((adapter) => {
37907
- adapter.updateFileUploadErrorMessage(id, errorMessage);
38047
+ adapter.updateUploadStatusMessage(id, errorMessage);
37908
38048
  });
37909
38049
  };
37910
38050
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37911
- this.updateFileUploadMetadata = (id, metadata) => {
38051
+ this.updateUploadMetadata = (id, metadata) => {
37912
38052
  this.chatAdapterPromise.then((adapter) => {
37913
- adapter.updateFileUploadMetadata(id, metadata);
38053
+ adapter.updateUploadMetadata(id, metadata);
37914
38054
  });
37915
38055
  };
37916
38056
  this.bindPublicMethods();
@@ -37972,19 +38112,19 @@ class AzureCommunicationCallWithChatAdapter {
37972
38112
  this.on.bind(this);
37973
38113
  this.off.bind(this);
37974
38114
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37975
- this.registerActiveFileUploads = this.registerActiveFileUploads.bind(this);
38115
+ this.registerActiveUploads = this.registerActiveUploads.bind(this);
37976
38116
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37977
- this.registerCompletedFileUploads = this.registerCompletedFileUploads.bind(this);
38117
+ this.registerCompletedUploads = this.registerCompletedUploads.bind(this);
37978
38118
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37979
- this.clearFileUploads = this.clearFileUploads.bind(this);
38119
+ this.clearUploads = this.clearUploads.bind(this);
37980
38120
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37981
- this.cancelFileUpload = this.cancelFileUpload.bind(this);
38121
+ this.cancelUpload = this.cancelUpload.bind(this);
37982
38122
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37983
- this.updateFileUploadProgress = this.updateFileUploadProgress.bind(this);
38123
+ this.updateUploadProgress = this.updateUploadProgress.bind(this);
37984
38124
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37985
- this.updateFileUploadErrorMessage = this.updateFileUploadErrorMessage.bind(this);
38125
+ this.updateUploadStatusMessage = this.updateUploadStatusMessage.bind(this);
37986
38126
  /* @conditional-compile-remove(attachment-download) @conditional-compile-remove(attachment-upload) */
37987
- this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);
38127
+ this.updateUploadMetadata = this.updateUploadMetadata.bind(this);
37988
38128
  this.downloadResourceToCache = this.downloadResourceToCache.bind(this);
37989
38129
  this.removeResourceFromCache = this.removeResourceFromCache.bind(this);
37990
38130
  /* @conditional-compile-remove(PSTN-calls) */
@@ -39311,6 +39451,7 @@ exports.createStatefulChatClient = createStatefulChatClient;
39311
39451
  exports.createTeamsCallAdapter = createTeamsCallAdapter;
39312
39452
  exports.createTeamsCallAdapterFromClient = createTeamsCallAdapterFromClient;
39313
39453
  exports.darkTheme = darkTheme;
39454
+ exports.defaultAttachmentMenuAction = defaultAttachmentMenuAction;
39314
39455
  exports.fromFlatCommunicationIdentifier = fromFlatCommunicationIdentifier;
39315
39456
  exports.getSelector = getSelector$1;
39316
39457
  exports.getSelector$1 = getSelector;
@@ -39335,4 +39476,4 @@ exports.useTeamsCall = useTeamsCall;
39335
39476
  exports.useTeamsCallAdapter = useTeamsCallAdapter;
39336
39477
  exports.useTeamsCallAgent = useTeamsCallAgent;
39337
39478
  exports.useTheme = useTheme;
39338
- //# sourceMappingURL=index-qxnuqL7s.js.map
39479
+ //# sourceMappingURL=index-Bj9ORqhl.js.map