@azure/communication-react 1.13.0-alpha-202402080012 → 1.13.0-alpha-202402100012

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 (110) hide show
  1. package/dist/communication-react.d.ts +87 -61
  2. package/dist/dist-cjs/communication-react/index.js +362 -204
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.d.ts +4 -0
  7. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +8 -0
  8. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  9. package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js +5 -1
  10. package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +2 -2
  12. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +6 -6
  13. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  14. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
  16. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js +3 -3
  17. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js.map +1 -1
  18. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +1 -1
  19. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +15 -5
  20. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  21. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.d.ts +1 -0
  22. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +13 -5
  23. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  24. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +5 -1
  25. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  26. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +2 -1
  27. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +15 -3
  28. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  29. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js +32 -0
  30. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js.map +1 -1
  31. package/dist/dist-esm/calling-stateful-client/src/Converter.js +2 -2
  32. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  33. package/dist/dist-esm/calling-stateful-client/src/SpotlightSubscriber.js +6 -3
  34. package/dist/dist-esm/calling-stateful-client/src/SpotlightSubscriber.js.map +1 -1
  35. package/dist/dist-esm/chat-stateful-client/src/ChatContext.d.ts +6 -2
  36. package/dist/dist-esm/chat-stateful-client/src/ChatContext.js +57 -8
  37. package/dist/dist-esm/chat-stateful-client/src/ChatContext.js.map +1 -1
  38. package/dist/dist-esm/chat-stateful-client/src/ResourceDownloadQueue.d.ts +11 -3
  39. package/dist/dist-esm/chat-stateful-client/src/ResourceDownloadQueue.js +41 -9
  40. package/dist/dist-esm/chat-stateful-client/src/ResourceDownloadQueue.js.map +1 -1
  41. package/dist/dist-esm/chat-stateful-client/src/StatefulChatClient.d.ts +20 -0
  42. package/dist/dist-esm/chat-stateful-client/src/StatefulChatClient.js +15 -0
  43. package/dist/dist-esm/chat-stateful-client/src/StatefulChatClient.js.map +1 -1
  44. package/dist/dist-esm/chat-stateful-client/src/index.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js +4 -4
  46. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/ErrorBar.d.ts +4 -0
  48. package/dist/dist-esm/react-components/src/components/ErrorBar.js.map +1 -1
  49. package/dist/dist-esm/react-components/src/components/ImageOverlay.d.ts +3 -7
  50. package/dist/dist-esm/react-components/src/components/ImageOverlay.js +15 -14
  51. package/dist/dist-esm/react-components/src/components/ImageOverlay.js.map +1 -1
  52. package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts +0 -5
  53. package/dist/dist-esm/react-components/src/components/ParticipantList.js +1 -1
  54. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  55. package/dist/dist-esm/react-components/src/components/RTE/RichTextEditor.js.map +1 -1
  56. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts +3 -2
  57. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +4 -2
  58. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  59. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.d.ts +4 -2
  60. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js +13 -6
  61. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js.map +1 -1
  62. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +10 -4
  63. package/dist/dist-esm/react-components/src/components/VideoGallery.js +7 -4
  64. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  65. package/dist/dist-esm/react-components/src/components/styles/ChatMessageComponent.styles.d.ts +1 -1
  66. package/dist/dist-esm/react-components/src/components/styles/ChatMessageComponent.styles.js +12 -5
  67. package/dist/dist-esm/react-components/src/components/styles/ChatMessageComponent.styles.js.map +1 -1
  68. package/dist/dist-esm/react-components/src/components/styles/ImageOverlay.style.d.ts +7 -8
  69. package/dist/dist-esm/react-components/src/components/styles/ImageOverlay.style.js +27 -43
  70. package/dist/dist-esm/react-components/src/components/styles/ImageOverlay.style.js.map +1 -1
  71. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +3 -1
  72. package/dist/dist-esm/react-components/src/theming/themes.d.ts +8 -21
  73. package/dist/dist-esm/react-components/src/theming/themes.js +7 -16
  74. package/dist/dist-esm/react-components/src/theming/themes.js.map +1 -1
  75. package/dist/dist-esm/react-components/src/types/ParticipantListParticipant.d.ts +3 -7
  76. package/dist/dist-esm/react-components/src/types/ParticipantListParticipant.js.map +1 -1
  77. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts +3 -0
  78. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.js.map +1 -1
  79. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +4 -0
  80. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  81. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +7 -4
  82. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +11 -5
  83. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  84. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +20 -6
  85. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  86. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.d.ts +1 -0
  87. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
  88. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +3 -2
  89. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  90. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.d.ts +3 -2
  91. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js +18 -5
  92. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js.map +1 -1
  93. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +4 -4
  94. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  95. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -0
  96. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  97. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.d.ts +3 -3
  98. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.js +16 -8
  99. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.js.map +1 -1
  100. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +5 -2
  101. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +4 -4
  102. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  103. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +6 -7
  104. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  105. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +2 -2
  106. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +4 -4
  107. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  108. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +1 -0
  109. package/dist/tsdoc-metadata.json +1 -1
  110. package/package.json +2 -2
@@ -173,7 +173,7 @@ function getDefaultExportFromCjs (x) {
173
173
  // Copyright (c) Microsoft Corporation.
174
174
  // Licensed under the MIT License.
175
175
  // GENERATED FILE. DO NOT EDIT MANUALLY.
176
- var telemetryVersion = '1.13.0-alpha-202402080012';
176
+ var telemetryVersion = '1.13.0-alpha-202402100012';
177
177
 
178
178
 
179
179
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -417,6 +417,14 @@ const getSpotlightedParticipants = (state, props) => {
417
417
  var _a, _b;
418
418
  return (_b = (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.spotlight) === null || _b === void 0 ? void 0 : _b.spotlightedParticipants;
419
419
  };
420
+ /* @conditional-compile-remove(spotlight) */
421
+ /**
422
+ * @private
423
+ */
424
+ const getMaxParticipantsToSpotlight = (state, props) => {
425
+ var _a, _b;
426
+ return (_b = (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.spotlight) === null || _b === void 0 ? void 0 : _b.maxParticipantsToSpotlight;
427
+ };
420
428
  /* @conditional-compile-remove(reaction) */
421
429
  /**
422
430
  * @private
@@ -1153,14 +1161,14 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1153
1161
  /* @conditional-compile-remove(end-of-call-survey) */
1154
1162
  const onSubmitSurvey = (survey) => __awaiter$P(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.CallSurvey).submitSurvey(survey)); });
1155
1163
  /* @conditional-compile-remove(spotlight) */
1156
- const onStartSpotlight = (userId) => __awaiter$P(void 0, void 0, void 0, function* () {
1157
- const participant = _toCommunicationIdentifier(userId);
1158
- yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight([participant]));
1164
+ const onStartSpotlight = (userIds) => __awaiter$P(void 0, void 0, void 0, function* () {
1165
+ const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1166
+ yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight(participants));
1159
1167
  });
1160
1168
  /* @conditional-compile-remove(spotlight) */
1161
- const onStopSpotlight = (userId) => __awaiter$P(void 0, void 0, void 0, function* () {
1162
- const participant = _toCommunicationIdentifier(userId);
1163
- yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight([participant]));
1169
+ const onStopSpotlight = (userIds) => __awaiter$P(void 0, void 0, void 0, function* () {
1170
+ const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1171
+ yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight(participants));
1164
1172
  });
1165
1173
  return {
1166
1174
  onHangUp,
@@ -1743,7 +1751,7 @@ function convertSdkParticipantToDeclarativeParticipant(participant) {
1743
1751
  /* @conditional-compile-remove(hide-attendee-name) */
1744
1752
  role: participant.role,
1745
1753
  /* @conditional-compile-remove(spotlight) */
1746
- spotlighted: undefined
1754
+ spotlight: undefined
1747
1755
  };
1748
1756
  }
1749
1757
  /**
@@ -1809,7 +1817,7 @@ function convertSdkCallToDeclarativeCall(call) {
1809
1817
  },
1810
1818
  /* @conditional-compile-remove(hide-attendee-name) */
1811
1819
  // TODO: Replace this once the SDK supports hide attendee name
1812
- hideAttendeeNames: true
1820
+ hideAttendeeNames: false
1813
1821
  };
1814
1822
  }
1815
1823
  /**
@@ -2226,11 +2234,11 @@ let CallContext$2 = class CallContext {
2226
2234
  });
2227
2235
  }
2228
2236
  /* @conditional-compile-remove(spotlight) */
2229
- setSpotlight(callId, spotlightedParticipants) {
2237
+ setSpotlight(callId, spotlightedParticipants, maxParticipantsToSpotlight) {
2230
2238
  this.modifyState((draft) => {
2231
2239
  const call = draft.calls[this._callIdHistory.latestCallId(callId)];
2232
2240
  if (call) {
2233
- call.spotlight = { spotlightedParticipants };
2241
+ call.spotlight = { spotlightedParticipants, maxParticipantsToSpotlight };
2234
2242
  }
2235
2243
  });
2236
2244
  }
@@ -2241,7 +2249,19 @@ let CallContext$2 = class CallContext {
2241
2249
  if (call) {
2242
2250
  const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];
2243
2251
  if (participant) {
2244
- participant.spotlighted = { spotlightedOrderPosition: spotlightedParticipant.order };
2252
+ participant.spotlight = { spotlightedOrderPosition: spotlightedParticipant.order };
2253
+ }
2254
+ }
2255
+ });
2256
+ }
2257
+ /* @conditional-compile-remove(spotlight) */
2258
+ setParticipantNotSpotlighted(callId, spotlightedParticipant) {
2259
+ this.modifyState((draft) => {
2260
+ const call = draft.calls[this._callIdHistory.latestCallId(callId)];
2261
+ if (call) {
2262
+ const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];
2263
+ if (participant) {
2264
+ participant.spotlight = undefined;
2245
2265
  }
2246
2266
  }
2247
2267
  });
@@ -3838,11 +3858,14 @@ class SpotlightSubscriber {
3838
3858
  this.unsubscribe = () => {
3839
3859
  this._spotlightFeature.off('spotlightChanged', this.spotlightChanged);
3840
3860
  };
3841
- this.spotlightChanged = () => {
3842
- this._context.setSpotlight(this._callIdRef.callId, this._spotlightFeature.getSpotlightedParticipants());
3843
- for (const addedParticipant of this._spotlightFeature.getSpotlightedParticipants()) {
3861
+ this.spotlightChanged = (args) => {
3862
+ this._context.setSpotlight(this._callIdRef.callId, this._spotlightFeature.getSpotlightedParticipants(), this._spotlightFeature.maxParticipantsToSpotlight);
3863
+ for (const addedParticipant of args.added) {
3844
3864
  this._context.setParticipantSpotlighted(this._callIdRef.callId, addedParticipant);
3845
3865
  }
3866
+ for (const removedParticipant of args.removed) {
3867
+ this._context.setParticipantNotSpotlighted(this._callIdRef.callId, removedParticipant);
3868
+ }
3846
3869
  };
3847
3870
  this._callIdRef = callIdRef;
3848
3871
  this._context = context;
@@ -4409,6 +4432,12 @@ class ProxyCallCommon {
4409
4432
  const proxyFeature = new ProxyTransferCallFeature(this._context, target);
4410
4433
  return new Proxy(transferFeature, proxyFeature);
4411
4434
  }
4435
+ /* @conditional-compile-remove(spotlight) */
4436
+ if (args[0] === communicationCalling.Features.Spotlight) {
4437
+ const spotlightFeature = target.feature(communicationCalling.Features.Spotlight);
4438
+ const proxyFeature = new ProxySpotlightCallFeature(this._context);
4439
+ return new Proxy(spotlightFeature, proxyFeature);
4440
+ }
4412
4441
  return target.feature(...args);
4413
4442
  }, 'Call.feature');
4414
4443
  }
@@ -4461,6 +4490,31 @@ class ProxyTeamsCaptions {
4461
4490
  }
4462
4491
  }
4463
4492
  }
4493
+ /* @conditional-compile-remove(spotlight) */
4494
+ /**
4495
+ * @private
4496
+ */
4497
+ class ProxySpotlightCallFeature {
4498
+ constructor(context) {
4499
+ this._context = context;
4500
+ }
4501
+ get(target, prop) {
4502
+ switch (prop) {
4503
+ case 'startSpotlight':
4504
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4505
+ const ret = yield target.startSpotlight(...args);
4506
+ return ret;
4507
+ }), 'Call.feature');
4508
+ case 'stopSpotlight':
4509
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$I(this, void 0, void 0, function* () {
4510
+ const ret = yield target.stopSpotlight(...args);
4511
+ return ret;
4512
+ }), 'Call.feature');
4513
+ default:
4514
+ return Reflect.get(target, prop);
4515
+ }
4516
+ }
4517
+ }
4464
4518
  /* @conditional-compile-remove(call-transfer) */
4465
4519
  /**
4466
4520
  * @private
@@ -5297,7 +5351,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
5297
5351
  wordBreak: 'break-word'
5298
5352
  });
5299
5353
 
5300
- var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold"};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",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};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",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",downloadFile:"Download file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",fileCardGroupMessage:"The message has {fileCount} 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."};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",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight"};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 AttendeeRole$k="Attendee";var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$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,AttendeeRole:AttendeeRole$k};
5354
+ var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold"};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",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};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",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",downloadFile:"Download file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",fileCardGroupMessage:"The message has {fileCount} 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"};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 AttendeeRole$k="Attendee";var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$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,AttendeeRole:AttendeeRole$k};
5301
5355
 
5302
5356
  // Copyright (c) Microsoft Corporation.
5303
5357
  // Licensed under the MIT License.
@@ -6124,14 +6178,6 @@ const lightTheme = {
6124
6178
  /* @conditional-compile-remove(raise-hand) */
6125
6179
  raiseHandGold: '#eaa300'
6126
6180
  },
6127
- /* @conditional-compile-remove(image-overlay) */
6128
- chatPalette: {
6129
- modalOverlayBlack: '#000000',
6130
- modalTitleWhite: '#ffffff',
6131
- modalButtonBackground: '#1b1a19',
6132
- modalButtonBackgroundHover: '#252423',
6133
- modalButtonBackgroundActive: '#292827'
6134
- },
6135
6181
  semanticColors: {
6136
6182
  errorText: '#a80000'
6137
6183
  }
@@ -6175,18 +6221,17 @@ const darkTheme = {
6175
6221
  /* @conditional-compile-remove(raise-hand) */
6176
6222
  raiseHandGold: '#eaa300'
6177
6223
  },
6178
- /* @conditional-compile-remove(image-overlay) */
6179
- chatPalette: {
6180
- modalOverlayBlack: '#000000',
6181
- modalTitleWhite: '#ffffff',
6182
- modalButtonBackground: '#1b1a19',
6183
- modalButtonBackgroundHover: '#252423',
6184
- modalButtonBackgroundActive: '#292827'
6185
- },
6186
6224
  semanticColors: {
6187
6225
  errorText: '#f1707b'
6188
6226
  }
6189
6227
  };
6228
+ /* @conditional-compile-remove(image-overlay) */
6229
+ /**
6230
+ * Preset dark theme for the ImageOverlay component.
6231
+ *
6232
+ * @beta
6233
+ */
6234
+ const imageOverlayTheme = { palette: darkTheme.palette };
6190
6235
 
6191
6236
  // Copyright (c) Microsoft Corporation.
6192
6237
  // Licensed under the MIT License.
@@ -8761,10 +8806,11 @@ const downloadIcon = {
8761
8806
  * @private
8762
8807
  */
8763
8808
  const overlayStyles = (theme) => {
8809
+ var _a;
8764
8810
  return {
8765
8811
  root: {
8766
- background: theme.chatPalette.modalOverlayBlack,
8767
- opacity: '0.85'
8812
+ background: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.white,
8813
+ opacity: '0.95'
8768
8814
  }
8769
8815
  };
8770
8816
  };
@@ -8813,14 +8859,14 @@ const titleBarContainerStyle = {
8813
8859
  alignContent: 'center',
8814
8860
  alignItems: 'center'
8815
8861
  };
8816
- /* @conditional-compile-remove(image-overlay) */
8817
8862
  /**
8818
8863
  * @private
8819
8864
  */
8820
8865
  const titleStyle$2 = (theme) => {
8866
+ var _a;
8821
8867
  return {
8822
8868
  paddingLeft: '0.5rem',
8823
- color: theme.chatPalette.modalTitleWhite,
8869
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black,
8824
8870
  fontFamily: 'inherit',
8825
8871
  fontSize: '0.875rem',
8826
8872
  fontStyle: 'normal',
@@ -8868,77 +8914,60 @@ const normalImageStyle = {
8868
8914
  maxHeight: '100%',
8869
8915
  maxWidth: '100%'
8870
8916
  };
8871
- /* @conditional-compile-remove(image-overlay) */
8872
8917
  /**
8873
8918
  * @private
8874
8919
  */
8875
8920
  const brokenImageStyle = (theme) => {
8921
+ var _a;
8876
8922
  return {
8877
- color: theme.chatPalette.modalTitleWhite
8923
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black
8878
8924
  };
8879
8925
  };
8880
- /* @conditional-compile-remove(image-overlay) */
8881
8926
  /**
8882
8927
  * @private
8883
8928
  */
8884
8929
  const closeButtonStyles = (theme) => {
8930
+ var _a, _b, _c;
8885
8931
  return {
8886
- color: theme.chatPalette.modalTitleWhite,
8932
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black,
8887
8933
  ':hover': {
8888
- color: theme.chatPalette.modalTitleWhite,
8889
- backgroundColor: theme.chatPalette.modalButtonBackgroundHover
8934
+ color: (_b = theme.palette) === null || _b === void 0 ? void 0 : _b.black
8890
8935
  },
8891
8936
  ':active': {
8892
- color: theme.chatPalette.modalTitleWhite,
8893
- backgroundColor: theme.chatPalette.modalButtonBackgroundActive
8937
+ color: (_c = theme.palette) === null || _c === void 0 ? void 0 : _c.black
8894
8938
  }
8895
8939
  };
8896
8940
  };
8897
- /* @conditional-compile-remove(image-overlay) */
8898
8941
  /**
8899
8942
  * @private
8900
8943
  */
8901
- const downloadButtonStyle = (theme) => {
8902
- return {
8903
- margin: '0 0.5rem',
8904
- height: '32px',
8905
- borderWidth: '1px',
8906
- fontSize: '0.875rem', // 14px
8907
- fontWeight: 600,
8908
- padding: '0.38rem 0.75rem',
8909
- borderRadius: '4px',
8910
- backgroundColor: theme.chatPalette.modalButtonBackground,
8911
- color: theme.chatPalette.modalTitleWhite,
8912
- whiteSpace: 'nowrap',
8913
- ':hover': {
8914
- color: theme.chatPalette.modalTitleWhite,
8915
- backgroundColor: theme.chatPalette.modalButtonBackgroundHover
8916
- },
8917
- ':active': {
8918
- color: theme.chatPalette.modalTitleWhite,
8919
- backgroundColor: theme.chatPalette.modalButtonBackgroundActive
8920
- },
8921
- '@media (max-width: 25rem)': {
8922
- display: 'none'
8923
- }
8924
- };
8944
+ const downloadButtonStyle = {
8945
+ margin: '0 0.5rem',
8946
+ height: '32px',
8947
+ borderWidth: '1px',
8948
+ fontSize: '0.875rem', // 14px
8949
+ fontWeight: 600,
8950
+ padding: '0.38rem 0.75rem',
8951
+ borderRadius: '4px',
8952
+ whiteSpace: 'nowrap',
8953
+ '@media (max-width: 25rem)': {
8954
+ display: 'none'
8955
+ }
8925
8956
  };
8926
- /* @conditional-compile-remove(image-overlay) */
8927
8957
  /**
8928
8958
  * @private
8929
8959
  */
8930
8960
  const smallDownloadButtonContainerStyle = (theme) => {
8961
+ var _a, _b, _c;
8931
8962
  return {
8932
8963
  marginRight: '0.5rem',
8933
- color: theme.chatPalette.modalTitleWhite,
8934
8964
  whiteSpace: 'nowrap',
8965
+ color: (_a = theme.palette) === null || _a === void 0 ? void 0 : _a.black,
8935
8966
  ':hover': {
8936
- color: theme.chatPalette.modalTitleWhite,
8937
- backgroundColor: theme.chatPalette.modalButtonBackgroundHover
8967
+ color: (_b = theme.palette) === null || _b === void 0 ? void 0 : _b.black
8938
8968
  },
8939
8969
  ':active': {
8940
- color: theme.chatPalette.modalTitleWhite,
8941
- backgroundColor: theme.chatPalette.modalButtonBackgroundActive
8970
+ color: (_c = theme.palette) === null || _c === void 0 ? void 0 : _c.black
8942
8971
  },
8943
8972
  '@media (min-width: 25rem)': {
8944
8973
  display: 'none'
@@ -8956,37 +8985,36 @@ const smallDownloadButtonContainerStyle = (theme) => {
8956
8985
  * @beta
8957
8986
  */
8958
8987
  const ImageOverlay = (props) => {
8959
- const { isOpen, imageSrc, title, titleIcon, altText, onDownloadButtonClicked, onDismiss, onError } = props;
8960
- const theme = useTheme();
8988
+ const { isOpen, imageSrc, title, titleIcon, altText, onDownloadButtonClicked, onDismiss } = props;
8961
8989
  /* @conditional-compile-remove(image-overlay) */
8962
8990
  const localeStrings = useLocale$1().strings.imageOverlay;
8963
8991
  const [isImageLoaded, setIsImageLoaded] = React.useState(true);
8964
- const imageStyle = isImageLoaded ? normalImageStyle : brokenImageStyle(theme);
8992
+ const imageStyle = isImageLoaded ? normalImageStyle : brokenImageStyle(imageOverlayTheme);
8965
8993
  const renderHeaderBar = () => {
8966
8994
  return (React.createElement(react.Stack, { className: react.mergeStyles(headerStyle) },
8967
8995
  React.createElement(react.Stack, { className: react.mergeStyles(titleBarContainerStyle) },
8968
8996
  titleIcon,
8969
- React.createElement(react.Stack.Item, { className: react.mergeStyles(titleStyle$2(theme)), "aria-label": title || 'Image' }, title)),
8997
+ React.createElement(react.Stack.Item, { className: react.mergeStyles(titleStyle$2(imageOverlayTheme)), "aria-label": title || 'Image' }, title)),
8970
8998
  React.createElement(react.Stack, { className: react.mergeStyles(controlBarContainerStyle) },
8971
- React.createElement(react.DefaultButton, { className: react.mergeStyles(downloadButtonStyle(theme)),
8999
+ onDownloadButtonClicked && (React.createElement(react.DefaultButton, { className: react.mergeStyles(downloadButtonStyle),
8972
9000
  /* @conditional-compile-remove(image-overlay) */
8973
- text: localeStrings.downloadButtonLabel, onClick: () => onDownloadButtonClicked(imageSrc), onRenderIcon: () => React.createElement(react.Icon, { iconName: downloadIcon.iconName, className: react.mergeStyles(downloadIconStyle) }), "aria-live": 'polite', "aria-label": localeStrings.downloadButtonLabel }),
8974
- React.createElement(react.IconButton, { iconProps: downloadIcon, className: react.mergeStyles(smallDownloadButtonContainerStyle(theme)), onClick: () => onDownloadButtonClicked(imageSrc), "aria-label": localeStrings.downloadButtonLabel, "aria-live": 'polite' }),
8975
- React.createElement(react.IconButton, { iconProps: cancelIcon, className: react.mergeStyles(closeButtonStyles(theme)), onClick: onDismiss,
9001
+ text: localeStrings.downloadButtonLabel, onClick: () => onDownloadButtonClicked && onDownloadButtonClicked(imageSrc), onRenderIcon: () => React.createElement(react.Icon, { iconName: downloadIcon.iconName, className: react.mergeStyles(downloadIconStyle) }), "aria-live": 'polite', "aria-label": localeStrings.downloadButtonLabel })),
9002
+ onDownloadButtonClicked && (React.createElement(react.IconButton, { iconProps: downloadIcon, className: react.mergeStyles(smallDownloadButtonContainerStyle(imageOverlayTheme)), onClick: () => onDownloadButtonClicked && onDownloadButtonClicked(imageSrc), "aria-label": localeStrings.downloadButtonLabel, "aria-live": 'polite' })),
9003
+ React.createElement(react.IconButton, { iconProps: cancelIcon, className: react.mergeStyles(closeButtonStyles(imageOverlayTheme)), onClick: onDismiss,
8976
9004
  /* @conditional-compile-remove(image-overlay) */
8977
9005
  ariaLabel: localeStrings.dismissButtonAriaLabel, "aria-live": 'polite' }))));
8978
9006
  };
8979
9007
  const renderBodyWithLightDismiss = () => {
8980
- return (React.createElement(react.Stack, { className: react.mergeStyles(bodyContainer), onClick: () => props.onDismiss() }, imageSrc && (React.createElement("img", { src: imageSrc, className: react.mergeStyles(imageStyle), alt: altText || 'image', "aria-label": 'image-overlay-main-image', "aria-live": 'polite', onError: (event) => {
9008
+ return (React.createElement(react.Stack, { className: react.mergeStyles(bodyContainer), onClick: () => props.onDismiss() }, imageSrc && (React.createElement("img", { src: imageSrc, className: react.mergeStyles(imageStyle), alt: altText || 'image', "aria-label": 'image-overlay-main-image', "aria-live": 'polite', onError: () => {
8981
9009
  setIsImageLoaded(false);
8982
- onError && onError(event);
8983
9010
  }, onClick: (event) => event.stopPropagation(), onDoubleClick: (event) => {
8984
9011
  event.persist();
8985
9012
  } }))));
8986
9013
  };
8987
- return (React.createElement(react.Modal, { titleAriaId: title, isOpen: isOpen, onDismiss: onDismiss, overlay: { styles: Object.assign({}, overlayStyles(theme)) }, styles: { main: focusTrapZoneStyle, scrollableContent: scrollableContentStyle }, isDarkOverlay: true },
8988
- renderHeaderBar(),
8989
- renderBodyWithLightDismiss()));
9014
+ return (React.createElement(FluentThemeProvider, { fluentTheme: imageOverlayTheme },
9015
+ React.createElement(react.Modal, { titleAriaId: title, isOpen: isOpen, onDismiss: onDismiss, overlay: { styles: Object.assign({}, overlayStyles(imageOverlayTheme)) }, styles: { main: focusTrapZoneStyle, scrollableContent: scrollableContentStyle }, isDarkOverlay: true },
9016
+ renderHeaderBar(),
9017
+ renderBodyWithLightDismiss())));
8990
9018
  };
8991
9019
 
8992
9020
  // Copyright (c) Microsoft Corporation.
@@ -10122,12 +10150,19 @@ const chatMessageMenuStyle = react.mergeStyles({
10122
10150
  * @private
10123
10151
  */
10124
10152
  const useChatMessageEditContainerStyles = reactComponents.makeStyles({
10125
- root: {
10126
- paddingTop: '1.25rem' //height of the menu button + marginBottom
10127
- },
10128
- body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, reactComponents.shorthands.padding(0)), { backgroundColor: 'transparent', boxSizing: 'border-box' }), reactComponents.shorthands.border(`${defaultSendBoxInactiveBorderThicknessREM}rem`, 'solid')), reactComponents.shorthands.borderRadius(reactComponents.tokens.borderRadiusMedium)), reactComponents.shorthands.margin(`${defaultSendBoxActiveBorderThicknessREM - defaultSendBoxInactiveBorderThicknessREM}rem`)), {
10153
+ body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, reactComponents.shorthands.padding(0)), { backgroundColor: 'transparent', boxSizing: 'border-box' }), reactComponents.shorthands.border(`${defaultSendBoxInactiveBorderThicknessREM}rem`, 'solid')), reactComponents.shorthands.borderRadius(reactComponents.tokens.borderRadiusMedium)), reactComponents.shorthands.margin('21px', '1px', '1px', '1px')), {
10154
+ // Width should be updated on hover to include the border width change
10155
+ width: `calc(100% - ${defaultSendBoxActiveBorderThicknessREM}rem)`, '&:hover, &:active, &:focus, &:focus-within': Object.assign(Object.assign(Object.assign({}, reactComponents.shorthands.borderWidth(`${defaultSendBoxActiveBorderThicknessREM}rem`)), reactComponents.shorthands.margin('20px', 0, 0, 0)), { width: '100%' }) }),
10156
+ bodyAttached: {
10157
+ marginBottom: '1px',
10158
+ marginTop: '3px',
10129
10159
  // Width should be updated on hover to include the border width change
10130
- width: `calc(100% - ${defaultSendBoxActiveBorderThicknessREM}rem)`, '&:hover, &:active, &:focus, &:focus-within': Object.assign(Object.assign(Object.assign({}, reactComponents.shorthands.margin('0rem')), reactComponents.shorthands.borderWidth(`${defaultSendBoxActiveBorderThicknessREM}rem`)), { width: '100%' }) }),
10160
+ width: `calc(100% - ${defaultSendBoxActiveBorderThicknessREM}rem)`,
10161
+ '&:hover, &:active, &:focus, &:focus-within': {
10162
+ marginTop: '2px',
10163
+ marginBottom: 0
10164
+ }
10165
+ },
10131
10166
  bodyError: Object.assign({}, reactComponents.shorthands.borderColor(errorTextColor)),
10132
10167
  bodyDefault: Object.assign(Object.assign({}, reactComponents.shorthands.borderColor(reactComponents.tokens.colorNeutralStrokeAccessible)), { '&:hover, &:active, &:focus, &:focus-within': Object.assign({}, reactComponents.shorthands.borderColor(reactComponents.tokens.colorCompoundBrandStroke)) })
10133
10168
  });
@@ -10259,11 +10294,11 @@ const ChatMessageComponentAsEditBox = (props) => {
10259
10294
  }, id: 'submitIconWrapper' }))), /* @conditional-compile-remove(file-sharing) */
10260
10295
  onRenderFileUploads()));
10261
10296
  };
10262
- const bodyClassName = reactComponents.mergeClasses(editContainerStyles.body, message.failureReason !== undefined ? editContainerStyles.bodyError : editContainerStyles.bodyDefault);
10263
- return (React.createElement(reactChat.ChatMyMessage, { root: {
10264
- className: reactComponents.mergeClasses(chatMyMessageStyles.root, editContainerStyles.root)
10297
+ const attached = message.attached === true ? 'center' : message.attached === 'bottom' ? 'bottom' : 'top';
10298
+ return (React.createElement(reactChat.ChatMyMessage, { attached: attached, root: {
10299
+ className: chatMyMessageStyles.root
10265
10300
  }, body: {
10266
- className: bodyClassName
10301
+ className: reactComponents.mergeClasses(editContainerStyles.body, message.failureReason !== undefined ? editContainerStyles.bodyError : editContainerStyles.bodyDefault, attached !== 'top' ? editContainerStyles.bodyAttached : undefined)
10267
10302
  } }, getContent()));
10268
10303
  };
10269
10304
  const isMessageTooLong = (messageText) => messageText.length > MAXIMUM_LENGTH_OF_MESSAGE;
@@ -12341,7 +12376,7 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
12341
12376
  React.createElement(RaisedHandIcon, null)))),
12342
12377
  callingParticipant.isScreenSharing && (React.createElement(react.Icon, { iconName: "ParticipantItemScreenShareStart", className: iconStyles$2, ariaLabel: strings.sharingIconLabel })),
12343
12378
  callingParticipant.isMuted && (React.createElement(react.Icon, { iconName: "ParticipantItemMicOff", className: iconStyles$2, ariaLabel: strings.mutedIconLabel })),
12344
- /* @conditional-compile-remove(spotlight) */ callingParticipant.isSpotlighted && (React.createElement(react.Icon, { iconName: "ParticipantItemSpotlighted", className: iconStyles$2 }))));
12379
+ /* @conditional-compile-remove(spotlight) */ callingParticipant.spotlight && (React.createElement(react.Icon, { iconName: "ParticipantItemSpotlighted", className: iconStyles$2 }))));
12345
12380
  }
12346
12381
  : () => null;
12347
12382
  /* @conditional-compile-remove(raise-hand) */
@@ -12807,10 +12842,11 @@ const useRemoteVideoStreamLifecycleMaintainer = (props) => {
12807
12842
  const useVideoTileContextualMenuProps = (props) => {
12808
12843
  var _a;
12809
12844
  const { remoteParticipant, view, strings, isPinned, onPinParticipant, onUnpinParticipant, onUpdateScalingMode, disablePinMenuItem, toggleAnnouncerString,
12810
- /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds,
12845
+ /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds = [],
12811
12846
  /* @conditional-compile-remove(spotlight) */ isSpotlighted,
12812
12847
  /* @conditional-compile-remove(spotlight) */ onStartSpotlight,
12813
- /* @conditional-compile-remove(spotlight) */ onStopSpotlight } = props;
12848
+ /* @conditional-compile-remove(spotlight) */ onStopSpotlight,
12849
+ /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight } = props;
12814
12850
  const scalingMode = React.useMemo(() => {
12815
12851
  var _a;
12816
12852
  return (_a = props.remoteParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.scalingMode;
@@ -12874,7 +12910,7 @@ const useVideoTileContextualMenuProps = (props) => {
12874
12910
  iconName: 'StopSpotlightContextualMenuItem',
12875
12911
  styles: { root: { lineHeight: 0 } }
12876
12912
  },
12877
- onClick: () => onStopSpotlight(remoteParticipant.userId),
12913
+ onClick: () => onStopSpotlight([remoteParticipant.userId]),
12878
12914
  ariaLabel: strings.stopSpotlightVideoTileMenuLabel
12879
12915
  });
12880
12916
  }
@@ -12883,6 +12919,9 @@ const useVideoTileContextualMenuProps = (props) => {
12883
12919
  const startSpotlightMenuLabel = spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0
12884
12920
  ? strings === null || strings === void 0 ? void 0 : strings.addSpotlightVideoTileMenuLabel
12885
12921
  : strings === null || strings === void 0 ? void 0 : strings.startSpotlightVideoTileMenuLabel;
12922
+ const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight
12923
+ ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight
12924
+ : false;
12886
12925
  if (onStartSpotlight && remoteParticipant.userId && startSpotlightMenuLabel) {
12887
12926
  items.push({
12888
12927
  key: 'startSpotlight',
@@ -12891,8 +12930,10 @@ const useVideoTileContextualMenuProps = (props) => {
12891
12930
  iconName: 'StartSpotlightContextualMenuItem',
12892
12931
  styles: { root: { lineHeight: 0 } }
12893
12932
  },
12894
- onClick: () => onStartSpotlight(remoteParticipant.userId),
12895
- ariaLabel: startSpotlightMenuLabel
12933
+ onClick: () => onStartSpotlight([remoteParticipant.userId]),
12934
+ ariaLabel: startSpotlightMenuLabel,
12935
+ disabled: maxSpotlightedParticipantsReached,
12936
+ title: maxSpotlightedParticipantsReached ? strings === null || strings === void 0 ? void 0 : strings.spotlightLimitReachedMenuTitle : undefined
12896
12937
  });
12897
12938
  }
12898
12939
  }
@@ -12949,7 +12990,8 @@ const useVideoTileContextualMenuProps = (props) => {
12949
12990
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds,
12950
12991
  /* @conditional-compile-remove(spotlight) */ isSpotlighted,
12951
12992
  /* @conditional-compile-remove(spotlight) */ onStartSpotlight,
12952
- /* @conditional-compile-remove(spotlight) */ onStopSpotlight
12993
+ /* @conditional-compile-remove(spotlight) */ onStopSpotlight,
12994
+ /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight
12953
12995
  ]);
12954
12996
  return contextualMenuProps;
12955
12997
  };
@@ -13715,7 +13757,8 @@ const _RemoteVideoTile = React.memo((props) => {
13715
13757
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds,
13716
13758
  /* @conditional-compile-remove(spotlight) */ isSpotlighted,
13717
13759
  /* @conditional-compile-remove(spotlight) */ onStartSpotlight,
13718
- /* @conditional-compile-remove(spotlight) */ onStopSpotlight, onUpdateScalingMode, disablePinMenuItem, toggleAnnouncerString, strings,
13760
+ /* @conditional-compile-remove(spotlight) */ onStopSpotlight,
13761
+ /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight, onUpdateScalingMode, disablePinMenuItem, toggleAnnouncerString, strings,
13719
13762
  /* @conditional-compile-remove(reaction) */ reactionResources } = props;
13720
13763
  const remoteVideoStreamProps = React.useMemo(() => ({
13721
13764
  isMirrored: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored,
@@ -13753,7 +13796,8 @@ const _RemoteVideoTile = React.memo((props) => {
13753
13796
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds,
13754
13797
  /* @conditional-compile-remove(spotlight) */ isSpotlighted,
13755
13798
  /* @conditional-compile-remove(spotlight) */ onStartSpotlight,
13756
- /* @conditional-compile-remove(spotlight) */ onStopSpotlight
13799
+ /* @conditional-compile-remove(spotlight) */ onStopSpotlight,
13800
+ /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight
13757
13801
  });
13758
13802
  const videoTileContextualMenuProps = React.useMemo(() => {
13759
13803
  if (menuKind !== 'contextual' || !contextualMenuProps) {
@@ -16213,6 +16257,8 @@ const VideoGallery = (props) => {
16213
16257
  onStartSpotlight,
16214
16258
  /* @conditional-compile-remove(spotlight) */
16215
16259
  onStopSpotlight,
16260
+ /* @conditional-compile-remove(spotlight) */
16261
+ maxParticipantsToSpotlight,
16216
16262
  /* @conditional-compile-remove(reaction) */
16217
16263
  reactionResources } = props;
16218
16264
  const ids = useIdentifiers();
@@ -16265,7 +16311,7 @@ const VideoGallery = (props) => {
16265
16311
  return onRenderLocalVideoTile(localParticipant);
16266
16312
  }
16267
16313
  /* @conditional-compile-remove(spotlight) */
16268
- const isSpotlighted = spotlightedParticipants === null || spotlightedParticipants === void 0 ? void 0 : spotlightedParticipants.includes(localParticipant.userId);
16314
+ const isSpotlighted = !!localParticipant.spotlight;
16269
16315
  const localVideoTileStyles = react.concatStyleSets(localTileNotInGrid ? floatingLocalVideoTileStyle : {}, {
16270
16316
  root: { borderRadius: theme.effects.roundedCorner4 }
16271
16317
  }, styles === null || styles === void 0 ? void 0 : styles.localVideo);
@@ -16307,8 +16353,6 @@ const VideoGallery = (props) => {
16307
16353
  /* @conditional-compile-remove(gallery-layouts) */
16308
16354
  layout,
16309
16355
  showLocalVideoTileLabel,
16310
- /* @conditional-compile-remove(spotlight) */
16311
- spotlightedParticipants,
16312
16356
  /* @conditional-compile-remove(reaction) */
16313
16357
  reactionResources
16314
16358
  ]);
@@ -16343,7 +16387,7 @@ const VideoGallery = (props) => {
16343
16387
  const selectedScalingMode = remoteVideoStream ? selectedScalingModeState[participant.userId] : undefined;
16344
16388
  let isPinned = pinnedParticipants === null || pinnedParticipants === void 0 ? void 0 : pinnedParticipants.includes(participant.userId);
16345
16389
  /* @conditional-compile-remove(spotlight) */
16346
- const isSpotlighted = spotlightedParticipants === null || spotlightedParticipants === void 0 ? void 0 : spotlightedParticipants.includes(participant.userId);
16390
+ const isSpotlighted = !!participant.spotlight;
16347
16391
  /* @conditional-compile-remove(spotlight) */
16348
16392
  isPinned = isSpotlighted ? false : isPinned;
16349
16393
  const createViewOptions = () => {
@@ -16376,6 +16420,8 @@ const VideoGallery = (props) => {
16376
16420
  onStartSpotlight: onStartSpotlight,
16377
16421
  /* @conditional-compile-remove(spotlight) */
16378
16422
  onStopSpotlight: onStopSpotlight,
16423
+ /* @conditional-compile-remove(spotlight) */
16424
+ maxParticipantsToSpotlight: maxParticipantsToSpotlight,
16379
16425
  /* @conditional-compile-remove(reaction) */
16380
16426
  reactionResources: reactionResources }));
16381
16427
  }, [
@@ -16397,6 +16443,7 @@ const VideoGallery = (props) => {
16397
16443
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipants,
16398
16444
  /* @conditional-compile-remove(spotlight) */ onStartSpotlight,
16399
16445
  /* @conditional-compile-remove(spotlight) */ onStopSpotlight,
16446
+ /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight,
16400
16447
  /* @conditional-compile-remove(reaction) */ reactionResources
16401
16448
  ]);
16402
16449
  const screenShareParticipant = remoteParticipants.find((participant) => { var _a; return (_a = participant.screenShareStream) === null || _a === void 0 ? void 0 : _a.isAvailable; });
@@ -19956,12 +20003,12 @@ const memoizedConvertToVideoTileReaction = memoizeOne((reactionState) => {
19956
20003
  */
19957
20004
  const memoizedSpotlight = memoizeOne((spotlightedParticipants, userId) => {
19958
20005
  const spotlightOrder = spotlightedParticipants === null || spotlightedParticipants === void 0 ? void 0 : spotlightedParticipants.find((spotlightedParticipant) => toFlatCommunicationIdentifier(spotlightedParticipant.identifier) === userId);
19959
- return spotlightOrder ? { spotlightOrderPosition: spotlightOrder.order } : undefined;
20006
+ return spotlightOrder ? { spotlightedOrderPosition: spotlightOrder.order } : undefined;
19960
20007
  });
19961
20008
  /* @conditional-compile-remove(spotlight) */
19962
- const convertRemoteParticipantToParticipantListParticipantBetaSpotlight = (userId, displayName, state, isMuted, isScreenSharing, isSpeaking, raisedHand, localUserCanRemoveOthers, reaction, isSpotlighted) => {
20009
+ const convertRemoteParticipantToParticipantListParticipantBetaSpotlight = (userId, displayName, state, isMuted, isScreenSharing, isSpeaking, raisedHand, localUserCanRemoveOthers, reaction, spotlight) => {
19963
20010
  return Object.assign(Object.assign({}, convertRemoteParticipantToParticipantListParticipant(userId, displayName, state, isMuted, isScreenSharing, isSpeaking, raisedHand, localUserCanRemoveOthers)), { reaction,
19964
- isSpotlighted });
20011
+ spotlight });
19965
20012
  };
19966
20013
 
19967
20014
  // Copyright (c) Microsoft Corporation.
@@ -19997,7 +20044,9 @@ const _videoGalleryRemoteParticipantsMemo = (remoteParticipants, isHideAttendeeN
19997
20044
  /* @conditional-compile-remove(raise-hand) */
19998
20045
  participant.raisedHand,
19999
20046
  /* @conditional-compile-remove(reaction) */
20000
- remoteParticipantReaction);
20047
+ remoteParticipantReaction,
20048
+ /* @conditional-compile-remove(spotlight) */
20049
+ participant.spotlight);
20001
20050
  }));
20002
20051
  });
20003
20052
  };
@@ -20005,20 +20054,26 @@ const memoizedAllConvertRemoteParticipant = memoizeFnAll((userId, isMuted, isSpe
20005
20054
  /* @conditional-compile-remove(raise-hand) */
20006
20055
  raisedHand, // temp unknown type to build stable
20007
20056
  /* @conditional-compile-remove(reaction) */
20008
- reaction // temp unknown type to build stable
20057
+ reaction, // temp unknown type to build stable
20058
+ /* @conditional-compile-remove(reaction) */
20059
+ spotlight // temp unknown type to build stable
20009
20060
  ) => {
20010
20061
  return convertRemoteParticipantToVideoGalleryRemoteParticipant(userId, isMuted, isSpeaking, videoStreams, state, displayName,
20011
20062
  /* @conditional-compile-remove(raise-hand) */
20012
20063
  raisedHand,
20013
20064
  /* @conditional-compile-remove(reaction) */
20014
- reaction);
20065
+ reaction,
20066
+ /* @conditional-compile-remove(reaction) */
20067
+ spotlight);
20015
20068
  });
20016
20069
  /** @private */
20017
20070
  const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted, isSpeaking, videoStreams, state, displayName,
20018
20071
  /* @conditional-compile-remove(raise-hand) */
20019
20072
  raisedHand, // temp unknown type to build stable
20020
20073
  /* @conditional-compile-remove(reaction) */
20021
- reaction // temp unknown type to build stable
20074
+ reaction, // temp unknown type to build stable
20075
+ /* @conditional-compile-remove(reaction) */
20076
+ spotlight // temp unknown type to build stable
20022
20077
  ) => {
20023
20078
  const rawVideoStreamsArray = Object.values(videoStreams);
20024
20079
  let videoStream = undefined;
@@ -20047,7 +20102,9 @@ reaction // temp unknown type to build stable
20047
20102
  /* @conditional-compile-remove(raise-hand) */
20048
20103
  raisedHand: raisedHand,
20049
20104
  /* @conditional-compile-remove(reaction) */
20050
- reaction: reaction
20105
+ reaction: reaction,
20106
+ /* @conditional-compile-remove(reaction) */
20107
+ spotlight: spotlight
20051
20108
  };
20052
20109
  };
20053
20110
  const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
@@ -20135,7 +20192,9 @@ const videoGallerySelector = reselect.createSelector([
20135
20192
  /* @conditional-compile-remove(reaction) */
20136
20193
  getLocalParticipantReactionState,
20137
20194
  /* @conditional-compile-remove(spotlight) */
20138
- getSpotlightedParticipants
20195
+ getSpotlightedParticipants,
20196
+ /* @conditional-compile-remove(spotlight) */
20197
+ getMaxParticipantsToSpotlight
20139
20198
  ], (screenShareRemoteParticipantId, remoteParticipants, localVideoStreams, isMuted, isScreenSharingOn, displayName, identifier, dominantSpeakers,
20140
20199
  /* @conditional-compile-remove(optimal-video-count) */
20141
20200
  optimalVideoCount,
@@ -20148,7 +20207,9 @@ isHideAttendeeNamesEnabled,
20148
20207
  /* @conditional-compile-remove(reaction) */
20149
20208
  localParticipantReaction,
20150
20209
  /* @conditional-compile-remove(spotlight) */
20151
- spotlightedParticipants) => {
20210
+ spotlightedParticipants,
20211
+ /* @conditional-compile-remove(spotlight) */
20212
+ maxParticipantsToSpotlight) => {
20152
20213
  const screenShareRemoteParticipant = screenShareRemoteParticipantId && remoteParticipants
20153
20214
  ? remoteParticipants[screenShareRemoteParticipantId]
20154
20215
  : undefined;
@@ -20164,7 +20225,9 @@ spotlightedParticipants) => {
20164
20225
  screenShareParticipant: screenShareRemoteParticipant
20165
20226
  ? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.state, screenShareRemoteParticipant.displayName,
20166
20227
  /* @conditional-compile-remove(raise-hand) */
20167
- screenShareRemoteParticipant.raisedHand)
20228
+ screenShareRemoteParticipant.raisedHand,
20229
+ /* @conditional-compile-remove(spotlight) */
20230
+ screenShareRemoteParticipant.spotlight)
20168
20231
  : undefined,
20169
20232
  localParticipant: memoizeLocalParticipant(identifier, displayName, isMuted, isScreenSharingOn, localVideoStream,
20170
20233
  /* @conditional-compile-remove(rooms) */
@@ -20182,7 +20245,9 @@ spotlightedParticipants) => {
20182
20245
  /* @conditional-compile-remove(optimal-video-count) */
20183
20246
  maxRemoteVideoStreams: optimalVideoCount,
20184
20247
  /* @conditional-compile-remove(spotlight) */
20185
- spotlightedParticipants: spotlightedParticipantIds
20248
+ spotlightedParticipants: spotlightedParticipantIds,
20249
+ /* @conditional-compile-remove(spotlight) */
20250
+ maxParticipantsToSpotlight: maxParticipantsToSpotlight
20186
20251
  };
20187
20252
  });
20188
20253
  const updateUserDisplayNamesTrampoline$2 = (remoteParticipants) => {
@@ -20301,7 +20366,7 @@ spotlightedParticipants) => {
20301
20366
  /* @conditional-compile-remove(reaction) */
20302
20367
  reaction: localParticipantReaction,
20303
20368
  /* @conditional-compile-remove(spotlight) */
20304
- isSpotlighted: memoizedSpotlight(spotlightedParticipants, userId)
20369
+ spotlight: memoizedSpotlight(spotlightedParticipants, userId)
20305
20370
  });
20306
20371
  /* @conditional-compile-remove(total-participant-count) */
20307
20372
  const totalParticipantCount = partitipantCount;
@@ -20462,7 +20527,7 @@ const useSelector$4 = (selector, selectorProps) => {
20462
20527
  * @public
20463
20528
  */
20464
20529
  const errorBarSelector$1 = reselect.createSelector([getLatestErrors$1, getDiagnostics, getDeviceManager$1, getEnvironmentInfo], (latestErrors, diagnostics, deviceManager, environmentInfo) => {
20465
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
20530
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
20466
20531
  // The order in which the errors are returned is significant: The `ErrorBar` shows errors on the UI in that order.
20467
20532
  // There are several options for the ordering:
20468
20533
  // - Sorted by when the errors happened (latest first / oldest first).
@@ -20572,6 +20637,10 @@ const errorBarSelector$1 = reselect.createSelector([getLatestErrors$1, getDiagno
20572
20637
  else {
20573
20638
  appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'CallAgent.join', 'failedToJoinCallGeneric');
20574
20639
  }
20640
+ /* @conditional-compile-remove(spotlight) */
20641
+ if ((_t = latestErrors['Call.feature']) === null || _t === void 0 ? void 0 : _t.message.match(/Call\.feature: startSpotlight failed\. \d+ is the max number of participants that can be Spotlighted/g)) {
20642
+ appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.feature', 'startSpotlightWhileMaxParticipantsAreSpotlighted');
20643
+ }
20575
20644
  // We only return the first few errors to avoid filling up the UI with too many `MessageBar`s.
20576
20645
  activeErrorMessages.splice(maxErrorCount$1);
20577
20646
  return { activeErrorMessages: activeErrorMessages };
@@ -21687,24 +21756,28 @@ class ResourceDownloadQueue {
21687
21756
  const copy = Object.assign({}, message);
21688
21757
  this._messagesNeedingResourceRetrieval.push(copy);
21689
21758
  }
21690
- startQueue(threadId, operation) {
21759
+ startQueue(threadId, operation, options) {
21691
21760
  return __awaiter$t(this, void 0, void 0, function* () {
21692
21761
  if (this.isActive) {
21693
21762
  return;
21694
21763
  }
21695
21764
  while (this._messagesNeedingResourceRetrieval.length > 0) {
21696
21765
  this.isActive = true;
21697
- const message = this._messagesNeedingResourceRetrieval.shift();
21766
+ let message = this._messagesNeedingResourceRetrieval.shift();
21698
21767
  if (!message) {
21699
21768
  this.isActive = false;
21700
21769
  continue;
21701
21770
  }
21702
21771
  try {
21703
- const newMessage = yield operation(message, this._credential);
21704
- if (newMessage) {
21705
- this.isActive = false;
21706
- this._context.setChatMessage(threadId, newMessage);
21772
+ if (options) {
21773
+ const singleUrl = options.singleUrl;
21774
+ message = yield this.downloadSingleUrl(message, singleUrl, operation);
21775
+ }
21776
+ else {
21777
+ message = yield this.downloadAllPreviewUrls(message, operation);
21707
21778
  }
21779
+ this.isActive = false;
21780
+ this._context.setChatMessage(threadId, message);
21708
21781
  }
21709
21782
  catch (error) {
21710
21783
  console.log('Downloading Resource error: ', error);
@@ -21712,37 +21785,39 @@ class ResourceDownloadQueue {
21712
21785
  }
21713
21786
  });
21714
21787
  }
21715
- }
21716
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21717
- /**
21718
- * @private
21719
- */
21720
- const requestAttachments = (message, credential) => __awaiter$t(void 0, void 0, void 0, function* () {
21721
- var _a;
21722
- const attachments = (_a = message.content) === null || _a === void 0 ? void 0 : _a.attachments;
21723
- if (message.type === 'html' && attachments) {
21724
- if (message.resourceCache === undefined) {
21725
- message.resourceCache = {};
21726
- }
21727
- for (const attachment of attachments) {
21728
- if (attachment.previewUrl) {
21729
- const previewUrl = attachment.previewUrl;
21730
- try {
21731
- const src = yield fetchImageSource(previewUrl, credential);
21732
- message.resourceCache[previewUrl] = src;
21788
+ downloadSingleUrl(message, resourceUrl, operation) {
21789
+ return __awaiter$t(this, void 0, void 0, function* () {
21790
+ if (message.resourceCache === undefined) {
21791
+ message.resourceCache = {};
21792
+ }
21793
+ const blobUrl = yield operation(resourceUrl, this._credential);
21794
+ message.resourceCache[resourceUrl] = blobUrl;
21795
+ return message;
21796
+ });
21797
+ }
21798
+ downloadAllPreviewUrls(message, operation) {
21799
+ var _a;
21800
+ return __awaiter$t(this, void 0, void 0, function* () {
21801
+ const attachments = (_a = message.content) === null || _a === void 0 ? void 0 : _a.attachments;
21802
+ if (message.type === 'html' && attachments) {
21803
+ if (message.resourceCache === undefined) {
21804
+ message.resourceCache = {};
21733
21805
  }
21734
- catch (error) {
21735
- throw new ResourceDownloadError(message);
21806
+ for (const attachment of attachments) {
21807
+ if (attachment.previewUrl) {
21808
+ const blobUrl = yield operation(attachment.previewUrl, this._credential);
21809
+ message.resourceCache[attachment.previewUrl] = blobUrl;
21810
+ }
21736
21811
  }
21737
21812
  }
21738
- }
21813
+ return message;
21814
+ });
21739
21815
  }
21740
- return message;
21741
- });
21816
+ }
21817
+ /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21742
21818
  /**
21743
21819
  * @private
21744
21820
  */
21745
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21746
21821
  const fetchImageSource = (src, credential) => __awaiter$t(void 0, void 0, void 0, function* () {
21747
21822
  function fetchWithAuthentication(url, token) {
21748
21823
  return __awaiter$t(this, void 0, void 0, function* () {
@@ -21761,16 +21836,6 @@ const fetchImageSource = (src, credential) => __awaiter$t(void 0, void 0, void 0
21761
21836
  const blob = yield response.blob();
21762
21837
  return URL.createObjectURL(blob);
21763
21838
  });
21764
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21765
- /**
21766
- * @private
21767
- */
21768
- class ResourceDownloadError extends Error {
21769
- constructor(chatMessageWithStatus) {
21770
- super();
21771
- this.chatMessageWithStatus = chatMessageWithStatus;
21772
- }
21773
- }
21774
21839
 
21775
21840
  // Copyright (c) Microsoft Corporation.
21776
21841
  // Licensed under the MIT License.
@@ -21787,7 +21852,7 @@ immer.enableMapSet();
21787
21852
  // Needed to generate state diff for verbose logging.
21788
21853
  immer.enablePatches();
21789
21854
  /**
21790
- * @private
21855
+ * @internal
21791
21856
  */
21792
21857
  let ChatContext$1 = class ChatContext {
21793
21858
  constructor(maxListeners,
@@ -21801,12 +21866,15 @@ let ChatContext$1 = class ChatContext {
21801
21866
  this._batchMode = false;
21802
21867
  this.typingIndicatorInterval = undefined;
21803
21868
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21804
- this._messageQueue = undefined;
21869
+ this._inlineImageQueue = undefined;
21870
+ /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21871
+ this._fullsizeImageQueue = undefined;
21805
21872
  this._logger = logger.createClientLogger('communication-react:chat-context');
21806
21873
  this._emitter = new EventEmitter();
21807
21874
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21808
21875
  if (credential) {
21809
- this._messageQueue = new ResourceDownloadQueue(this, credential);
21876
+ this._inlineImageQueue = new ResourceDownloadQueue(this, credential);
21877
+ this._fullsizeImageQueue = new ResourceDownloadQueue(this, credential);
21810
21878
  }
21811
21879
  if (maxListeners) {
21812
21880
  this._emitter.setMaxListeners(maxListeners);
@@ -21827,6 +21895,52 @@ let ChatContext$1 = class ChatContext {
21827
21895
  this._emitter.emit('stateChanged', this._state);
21828
21896
  }
21829
21897
  }
21898
+ /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21899
+ dispose() {
21900
+ this.modifyState((draft) => {
21901
+ Object.keys(draft.threads).forEach((threadId) => {
21902
+ const thread = draft.threads[threadId];
21903
+ Object.keys(thread.chatMessages).forEach((messageId) => {
21904
+ const cache = thread.chatMessages[messageId].resourceCache;
21905
+ if (cache) {
21906
+ Object.keys(cache).forEach((resourceUrl) => {
21907
+ const blobUrl = cache[resourceUrl];
21908
+ URL.revokeObjectURL(blobUrl);
21909
+ });
21910
+ }
21911
+ thread.chatMessages[messageId].resourceCache = undefined;
21912
+ });
21913
+ });
21914
+ });
21915
+ // Any item in queue should be removed.
21916
+ }
21917
+ /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21918
+ downloadResourceToCache(threadId, messageId, resourceUrl) {
21919
+ this.modifyState((draft) => {
21920
+ var _a;
21921
+ const message = (_a = draft.threads[threadId]) === null || _a === void 0 ? void 0 : _a.chatMessages[messageId];
21922
+ if (message && this._fullsizeImageQueue) {
21923
+ if (!message.resourceCache) {
21924
+ message.resourceCache = {};
21925
+ }
21926
+ // Need to discuss retry logic in case of failure
21927
+ this._fullsizeImageQueue.addMessage(message);
21928
+ this._fullsizeImageQueue.startQueue(threadId, fetchImageSource, { singleUrl: resourceUrl });
21929
+ }
21930
+ });
21931
+ }
21932
+ /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21933
+ removeResourceFromCache(threadId, messageId, resourceUrl) {
21934
+ this.modifyState((draft) => {
21935
+ var _a;
21936
+ const message = (_a = draft.threads[threadId]) === null || _a === void 0 ? void 0 : _a.chatMessages[messageId];
21937
+ if (message && message.resourceCache) {
21938
+ const blobUrl = message.resourceCache[resourceUrl];
21939
+ URL.revokeObjectURL(blobUrl);
21940
+ delete message.resourceCache[resourceUrl];
21941
+ }
21942
+ });
21943
+ }
21830
21944
  setThread(threadId, threadState) {
21831
21945
  this.modifyState((draft) => {
21832
21946
  draft.threads[threadId] = threadState;
@@ -22054,12 +22168,12 @@ let ChatContext$1 = class ChatContext {
22054
22168
  var _a;
22055
22169
  const attachments = (_a = message.content) === null || _a === void 0 ? void 0 : _a.attachments;
22056
22170
  if (message.type === 'html' && attachments && attachments.length > 0) {
22057
- if (this._messageQueue &&
22058
- !this._messageQueue.containsMessageWithSameAttachments(message) &&
22171
+ if (this._inlineImageQueue &&
22172
+ !this._inlineImageQueue.containsMessageWithSameAttachments(message) &&
22059
22173
  message.resourceCache === undefined) {
22060
22174
  // Need to discuss retry logic in case of failure
22061
- this._messageQueue.addMessage(message);
22062
- this._messageQueue.startQueue(threadId, requestAttachments);
22175
+ this._inlineImageQueue.addMessage(message);
22176
+ this._inlineImageQueue.startQueue(threadId, fetchImageSource);
22063
22177
  }
22064
22178
  }
22065
22179
  }
@@ -22774,6 +22888,21 @@ const _createStatefulChatClientWithDeps = (chatClient, args, options) => {
22774
22888
  eventSubscriber = val;
22775
22889
  }
22776
22890
  });
22891
+ /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
22892
+ Object.defineProperty(proxy, 'dispose', {
22893
+ configurable: false,
22894
+ value: () => context === null || context === void 0 ? void 0 : context.dispose()
22895
+ });
22896
+ /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
22897
+ Object.defineProperty(proxy, 'downloadResourceToCache', {
22898
+ configurable: false,
22899
+ value: (threadId, messageId, resourceUrl) => context === null || context === void 0 ? void 0 : context.downloadResourceToCache(threadId, messageId, resourceUrl)
22900
+ });
22901
+ /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
22902
+ Object.defineProperty(proxy, 'removeResourceFromCache', {
22903
+ configurable: false,
22904
+ value: (threadId, messageId, resourceUrl) => context === null || context === void 0 ? void 0 : context.removeResourceFromCache(threadId, messageId, resourceUrl)
22905
+ });
22777
22906
  Object.defineProperty(proxy, 'getState', {
22778
22907
  configurable: false,
22779
22908
  value: () => context === null || context === void 0 ? void 0 : context.getState()
@@ -22946,7 +23075,7 @@ const CallCompositeIcon = (props) => (React.createElement(react.FontIcon, Object
22946
23075
  */
22947
23076
  const CallWithChatCompositeIcon = (props) => (React.createElement(react.FontIcon, Object.assign({}, props)));
22948
23077
 
22949
- 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",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",startSpotlightParticipantListMenuLabel:"Spotlight for everyone",addSpotlightParticipantListMenuLabel:"Add spotlight",stopSpotlightParticipantListMenuLabel:"Stop spotlighting",stopSpotlightOnSelfParticipantListMenuLabel:"Exit spotlight",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?",stopSpotlightOnSelfHeading:"Exit spotlight?",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.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"}};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};
23078
+ 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",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",startSpotlightParticipantListMenuLabel:"Spotlight for everyone",addSpotlightParticipantListMenuLabel:"Add spotlight",stopSpotlightParticipantListMenuLabel:"Stop spotlighting",stopSpotlightOnSelfParticipantListMenuLabel:"Exit spotlight",spotlightLimitReachedParticipantListMenuTitle:"Spotlight limit reached",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?",stopSpotlightOnSelfHeading:"Exit spotlight?",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.",stopSpotlightConfirmButtonLabel:"Stop spotlighting",stopSpotlightOnSelfConfirmButtonLabel:"Exit spotlight",stopSpotlightCancelButtonLabel:"Cancel"}};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};
22950
23079
 
22951
23080
  // Copyright (c) Microsoft Corporation.
22952
23081
  // Licensed under the MIT License.
@@ -25408,12 +25537,12 @@ const createCompositeHandlers = memoizeOne((adapter) => ({
25408
25537
  return yield adapter.submitSurvey(survey);
25409
25538
  }),
25410
25539
  /* @conditional-compile-remove(spotlight) */
25411
- onStartSpotlight: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25412
- yield adapter.startSpotlight(userId);
25540
+ onStartSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25541
+ yield adapter.startSpotlight(userIds);
25413
25542
  }),
25414
25543
  /* @conditional-compile-remove(spotlight) */
25415
- onStopSpotlight: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25416
- yield adapter.stopSpotlight(userId);
25544
+ onStopSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25545
+ yield adapter.stopSpotlight(userIds);
25417
25546
  })
25418
25547
  }));
25419
25548
 
@@ -28715,7 +28844,9 @@ const usePeoplePane = (props) => {
28715
28844
  /* @conditional-compile-remove(spotlight) */
28716
28845
  onStopSpotlight,
28717
28846
  /* @conditional-compile-remove(spotlight) */
28718
- ableToSpotlight } = props;
28847
+ ableToSpotlight,
28848
+ /* @conditional-compile-remove(spotlight) */
28849
+ maxParticipantsToSpotlight } = props;
28719
28850
  const closePane = React.useCallback(() => {
28720
28851
  var _a;
28721
28852
  updateSidePaneRenderer(undefined);
@@ -28736,7 +28867,7 @@ const usePeoplePane = (props) => {
28736
28867
  key: 'stop-spotlight',
28737
28868
  text: stopSpotlightMenuText,
28738
28869
  onClick: () => {
28739
- onStopSpotlight === null || onStopSpotlight === void 0 ? void 0 : onStopSpotlight(participantId);
28870
+ onStopSpotlight === null || onStopSpotlight === void 0 ? void 0 : onStopSpotlight([participantId]);
28740
28871
  },
28741
28872
  iconProps: {
28742
28873
  iconName: 'StopSpotlightContextualMenuItem',
@@ -28750,18 +28881,27 @@ const usePeoplePane = (props) => {
28750
28881
  const startSpotlightMenuText = spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0
28751
28882
  ? localeStrings.addSpotlightParticipantListMenuLabel
28752
28883
  : localeStrings.startSpotlightParticipantListMenuLabel;
28884
+ const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight
28885
+ ? spotlightedParticipantUserIds
28886
+ ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight
28887
+ : false
28888
+ : false;
28753
28889
  if (onStartSpotlight && startSpotlightMenuText && ableToSpotlight) {
28754
28890
  _defaultMenuItems.push({
28755
28891
  key: 'start-spotlight',
28756
28892
  text: startSpotlightMenuText,
28757
28893
  onClick: () => {
28758
- onStartSpotlight === null || onStartSpotlight === void 0 ? void 0 : onStartSpotlight(participantId);
28894
+ onStartSpotlight === null || onStartSpotlight === void 0 ? void 0 : onStartSpotlight([participantId]);
28759
28895
  },
28760
28896
  iconProps: {
28761
28897
  iconName: 'StartSpotlightContextualMenuItem',
28762
28898
  styles: { root: { lineHeight: 0 } }
28763
28899
  },
28764
- ariaLabel: startSpotlightMenuText
28900
+ ariaLabel: startSpotlightMenuText,
28901
+ disabled: maxSpotlightedParticipantsReached,
28902
+ title: maxSpotlightedParticipantsReached
28903
+ ? localeStrings.spotlightLimitReachedParticipantListMenuTitle
28904
+ : undefined
28765
28905
  });
28766
28906
  }
28767
28907
  }
@@ -28777,7 +28917,9 @@ const usePeoplePane = (props) => {
28777
28917
  localeStrings.stopSpotlightOnSelfParticipantListMenuLabel,
28778
28918
  localeStrings.addSpotlightParticipantListMenuLabel,
28779
28919
  localeStrings.startSpotlightParticipantListMenuLabel,
28780
- ableToSpotlight
28920
+ localeStrings.spotlightLimitReachedParticipantListMenuTitle,
28921
+ ableToSpotlight,
28922
+ maxParticipantsToSpotlight
28781
28923
  ]);
28782
28924
  let _onFetchParticipantMenuItems = onFetchParticipantMenuItems;
28783
28925
  /* @conditional-compile-remove(spotlight) */
@@ -29506,8 +29648,11 @@ const useSpotlightCallbacksWithPrompt = (onStartSpotlight, onStopSpotlight, setI
29506
29648
  };
29507
29649
  /* @conditional-compile-remove(spotlight) */
29508
29650
  const getStartSpotlightWithPromptCallback = (myUserId, onStartSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29509
- return (userId) => __awaiter$d(void 0, void 0, void 0, function* () {
29510
- const startSpotlightPromptText = userId === myUserId
29651
+ return (userIds) => __awaiter$d(void 0, void 0, void 0, function* () {
29652
+ if (userIds && userIds.length > 1) {
29653
+ onStartSpotlight(userIds);
29654
+ }
29655
+ const startSpotlightPromptText = userIds === undefined || userIds[0] === myUserId
29511
29656
  ? strings.spotlightPrompt.startSpotlightOnSelfText
29512
29657
  : strings.spotlightPrompt.startSpotlightText;
29513
29658
  setPromptProps({
@@ -29516,7 +29661,7 @@ const getStartSpotlightWithPromptCallback = (myUserId, onStartSpotlight, setIsPr
29516
29661
  confirmButtonLabel: strings.spotlightPrompt.startSpotlightConfirmButtonLabel,
29517
29662
  cancelButtonLabel: strings.spotlightPrompt.startSpotlightCancelButtonLabel,
29518
29663
  onConfirm: () => {
29519
- onStartSpotlight(userId);
29664
+ onStartSpotlight(userIds);
29520
29665
  setIsPromptOpen(false);
29521
29666
  },
29522
29667
  onCancel: () => setIsPromptOpen(false)
@@ -29526,12 +29671,17 @@ const getStartSpotlightWithPromptCallback = (myUserId, onStartSpotlight, setIsPr
29526
29671
  };
29527
29672
  /* @conditional-compile-remove(spotlight) */
29528
29673
  const getStopSpotlightWithPromptCallback = (myUserId, onStopSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29529
- return (userId) => __awaiter$d(void 0, void 0, void 0, function* () {
29530
- const stopSpotlightPromptHeading = userId === myUserId
29674
+ return (userIds) => __awaiter$d(void 0, void 0, void 0, function* () {
29675
+ if (userIds && userIds.length > 1) {
29676
+ onStopSpotlight(userIds);
29677
+ }
29678
+ const stopSpotlightPromptHeading = userIds === undefined || userIds[0] === myUserId
29531
29679
  ? strings.spotlightPrompt.stopSpotlightOnSelfHeading
29532
29680
  : strings.spotlightPrompt.stopSpotlightHeading;
29533
- const stopSpotlightPromptText = userId === myUserId ? strings.spotlightPrompt.stopSpotlightOnSelfText : strings.spotlightPrompt.stopSpotlightText;
29534
- const stopSpotlightPromptConfirmButtonLabel = userId === myUserId
29681
+ const stopSpotlightPromptText = userIds === undefined || userIds[0] === myUserId
29682
+ ? strings.spotlightPrompt.stopSpotlightOnSelfText
29683
+ : strings.spotlightPrompt.stopSpotlightText;
29684
+ const stopSpotlightPromptConfirmButtonLabel = userIds === undefined || userIds[0] === myUserId
29535
29685
  ? strings.spotlightPrompt.stopSpotlightOnSelfConfirmButtonLabel
29536
29686
  : strings.spotlightPrompt.stopSpotlightConfirmButtonLabel;
29537
29687
  setPromptProps({
@@ -29540,7 +29690,7 @@ const getStopSpotlightWithPromptCallback = (myUserId, onStopSpotlight, setIsProm
29540
29690
  confirmButtonLabel: stopSpotlightPromptConfirmButtonLabel,
29541
29691
  cancelButtonLabel: strings.spotlightPrompt.stopSpotlightCancelButtonLabel,
29542
29692
  onConfirm: () => {
29543
- onStopSpotlight(userId);
29693
+ onStopSpotlight(userIds);
29544
29694
  setIsPromptOpen(false);
29545
29695
  },
29546
29696
  onCancel: () => setIsPromptOpen(false)
@@ -29599,14 +29749,15 @@ const CallArrangement = (props) => {
29599
29749
  /* @conditional-compile-remove(spotlight) */
29600
29750
  const { setPromptProps, setIsPromptOpen } = props;
29601
29751
  /* @conditional-compile-remove(spotlight) */
29602
- const { onStartSpotlight, onStopSpotlight, spotlightedParticipants } = videoGalleryProps;
29752
+ const { onStartSpotlight, onStopSpotlight, spotlightedParticipants, maxParticipantsToSpotlight } = videoGalleryProps;
29603
29753
  /* @conditional-compile-remove(spotlight) */
29604
29754
  const { onStartSpotlightWithPrompt, onStopSpotlightWithPrompt } = useSpotlightCallbacksWithPrompt(onStartSpotlight, onStopSpotlight, setIsPromptOpen, setPromptProps);
29605
29755
  const { isPeoplePaneOpen, openPeoplePane, closePeoplePane } = usePeoplePane(Object.assign(Object.assign({}, peoplePaneProps), {
29606
29756
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds: spotlightedParticipants,
29607
29757
  /* @conditional-compile-remove(spotlight) */ onStartSpotlight: onStartSpotlightWithPrompt,
29608
29758
  /* @conditional-compile-remove(spotlight) */ onStopSpotlight: onStopSpotlightWithPrompt,
29609
- /* @conditional-compile-remove(spotlight) */ ableToSpotlight: (_c = (_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.capabilitiesFeature) === null || _c === void 0 ? void 0 : _c.capabilities.spotlightParticipant.isPresent }));
29759
+ /* @conditional-compile-remove(spotlight) */ ableToSpotlight: (_c = (_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.capabilitiesFeature) === null || _c === void 0 ? void 0 : _c.capabilities.spotlightParticipant.isPresent,
29760
+ /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight }));
29610
29761
  const togglePeoplePane = React.useCallback(() => {
29611
29762
  if (isPeoplePaneOpen) {
29612
29763
  closePeoplePane();
@@ -33878,15 +34029,15 @@ class AzureCommunicationCallAdapter {
33878
34029
  });
33879
34030
  }
33880
34031
  /* @conditional-compile-remove(spotlight) */
33881
- startSpotlight(userId) {
34032
+ startSpotlight(userIds) {
33882
34033
  return __awaiter$5(this, void 0, void 0, function* () {
33883
- this.handlers.onStartSpotlight(userId);
34034
+ this.handlers.onStartSpotlight(userIds);
33884
34035
  });
33885
34036
  }
33886
34037
  /* @conditional-compile-remove(spotlight) */
33887
- stopSpotlight(userId) {
34038
+ stopSpotlight(userIds) {
33888
34039
  return __awaiter$5(this, void 0, void 0, function* () {
33889
- this.handlers.onStopSpotlight(userId);
34040
+ this.handlers.onStopSpotlight(userIds);
33890
34041
  });
33891
34042
  }
33892
34043
  getState() {
@@ -33926,7 +34077,7 @@ class AzureCommunicationCallAdapter {
33926
34077
  }
33927
34078
  }
33928
34079
  subscribeCallEvents() {
33929
- var _a, _b, _c, _d, _e, _f, _g, _h;
34080
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
33930
34081
  /* @conditional-compile-remove(calling-sounds) */
33931
34082
  if (this.call) {
33932
34083
  this.callingSoundSubscriber = new CallingSoundSubscriber(this.call, this.getState().targetCallees, this.getState().sounds);
@@ -33943,6 +34094,8 @@ class AzureCommunicationCallAdapter {
33943
34094
  (_g = this.call) === null || _g === void 0 ? void 0 : _g.feature(communicationCalling.Features.Transfer).on('transferRequested', this.transferRequested.bind(this));
33944
34095
  /* @conditional-compile-remove(capabilities) */
33945
34096
  (_h = this.call) === null || _h === void 0 ? void 0 : _h.feature(communicationCalling.Features.Capabilities).on('capabilitiesChanged', this.capabilitiesChanged.bind(this));
34097
+ /* @conditional-compile-remove(spotlight) */
34098
+ (_j = this.call) === null || _j === void 0 ? void 0 : _j.feature(communicationCalling.Features.Spotlight).on('spotlightChanged', this.spotlightChanged.bind(this));
33946
34099
  }
33947
34100
  unsubscribeCallEvents() {
33948
34101
  var _a, _b, _c, _d, _e;
@@ -34054,6 +34207,10 @@ class AzureCommunicationCallAdapter {
34054
34207
  }
34055
34208
  this.emitter.emit('roleChanged');
34056
34209
  }
34210
+ /* @conditional-compile-remove(spotlight) */
34211
+ spotlightChanged(args) {
34212
+ this.emitter.emit('spotlightChanged', args);
34213
+ }
34057
34214
  callIdChanged() {
34058
34215
  var _a;
34059
34216
  ((_a = this.call) === null || _a === void 0 ? void 0 : _a.id) && this.emitter.emit('callIdChanged', { callId: this.call.id });
@@ -34648,15 +34805,15 @@ class CallWithChatBackedCallAdapter {
34648
34805
  });
34649
34806
  }
34650
34807
  /* @conditional-compile-remove(spotlight) */
34651
- startSpotlight(userId) {
34808
+ startSpotlight(userIds) {
34652
34809
  return __awaiter$4(this, void 0, void 0, function* () {
34653
- return this.callWithChatAdapter.startSpotlight(userId);
34810
+ return this.callWithChatAdapter.startSpotlight(userIds);
34654
34811
  });
34655
34812
  }
34656
34813
  /* @conditional-compile-remove(spotlight) */
34657
- stopSpotlight(userId) {
34814
+ stopSpotlight(userIds) {
34658
34815
  return __awaiter$4(this, void 0, void 0, function* () {
34659
- return this.callWithChatAdapter.stopSpotlight(userId);
34816
+ return this.callWithChatAdapter.stopSpotlight(userIds);
34660
34817
  });
34661
34818
  }
34662
34819
  }
@@ -35786,15 +35943,15 @@ class AzureCommunicationCallWithChatAdapter {
35786
35943
  });
35787
35944
  }
35788
35945
  /* @conditional-compile-remove(spotlight) */
35789
- startSpotlight(userId) {
35946
+ startSpotlight(userIds) {
35790
35947
  return __awaiter$2(this, void 0, void 0, function* () {
35791
- return this.callAdapter.startSpotlight(userId);
35948
+ return this.callAdapter.startSpotlight(userIds);
35792
35949
  });
35793
35950
  }
35794
35951
  /* @conditional-compile-remove(spotlight) */
35795
- stopSpotlight(userId) {
35952
+ stopSpotlight(userIds) {
35796
35953
  return __awaiter$2(this, void 0, void 0, function* () {
35797
- return this.callAdapter.stopSpotlight(userId);
35954
+ return this.callAdapter.stopSpotlight(userIds);
35798
35955
  });
35799
35956
  }
35800
35957
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -36658,6 +36815,7 @@ exports.darkTheme = darkTheme;
36658
36815
  exports.fromFlatCommunicationIdentifier = fromFlatCommunicationIdentifier;
36659
36816
  exports.getCallingSelector = getSelector$1;
36660
36817
  exports.getChatSelector = getSelector;
36818
+ exports.imageOverlayTheme = imageOverlayTheme;
36661
36819
  exports.lightTheme = lightTheme;
36662
36820
  exports.onResolveVideoEffectDependency = onResolveVideoEffectDependency;
36663
36821
  exports.onResolveVideoEffectDependencyLazy = onResolveVideoEffectDependencyLazy;