@azure/communication-react 1.13.0-alpha-202402170012 → 1.13.0-alpha-202402220012

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 (107) hide show
  1. package/dist/communication-react.d.ts +40 -36
  2. package/dist/dist-cjs/communication-react/index.js +657 -415
  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 +3 -7
  7. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +4 -12
  8. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  9. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js +4 -4
  10. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +2 -1
  12. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +35 -1
  13. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  14. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.d.ts +14 -0
  15. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js.map +1 -1
  16. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts +2 -1
  17. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  18. package/dist/dist-esm/calling-component-bindings/src/index.d.ts +1 -0
  19. package/dist/dist-esm/calling-component-bindings/src/index.js.map +1 -1
  20. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +5 -5
  21. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
  22. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +3 -1
  23. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +9 -3
  24. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  25. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +12 -8
  26. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  27. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +4 -0
  28. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  29. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +11 -1
  30. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  31. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +6 -5
  32. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  33. package/dist/dist-esm/chat-stateful-client/src/ChatContext.d.ts +1 -1
  34. package/dist/dist-esm/chat-stateful-client/src/ChatContext.js +7 -5
  35. package/dist/dist-esm/chat-stateful-client/src/ChatContext.js.map +1 -1
  36. package/dist/dist-esm/chat-stateful-client/src/ResourceDownloadQueue.js +4 -5
  37. package/dist/dist-esm/chat-stateful-client/src/ResourceDownloadQueue.js.map +1 -1
  38. package/dist/dist-esm/communication-react/src/index.d.ts +1 -1
  39. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  40. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +2 -2
  41. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
  42. package/dist/dist-esm/react-components/src/components/FileDownloadCards.d.ts +4 -10
  43. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js.map +1 -1
  44. package/dist/dist-esm/react-components/src/components/LocalVideoTile.d.ts +8 -0
  45. package/dist/dist-esm/react-components/src/components/LocalVideoTile.js +101 -19
  46. package/dist/dist-esm/react-components/src/components/LocalVideoTile.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +1 -1
  48. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  49. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +8 -3
  50. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  51. package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js +8 -3
  52. package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.d.ts +4 -2
  54. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js +25 -20
  55. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js.map +1 -1
  56. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +2 -10
  57. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
  58. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +12 -4
  59. package/dist/dist-esm/react-components/src/components/VideoGallery.js +38 -10
  60. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  61. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +8 -0
  62. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +20 -15
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +16 -10
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.d.ts +4 -3
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js +29 -15
  69. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js.map +1 -1
  70. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.d.ts +2 -1
  71. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +168 -141
  72. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  73. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/usePropsFor.d.ts +2 -1
  74. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/usePropsFor.js.map +1 -1
  75. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.d.ts +10 -3
  76. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.js +77 -27
  77. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.js.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +2 -8
  79. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +4 -15
  80. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  81. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +3 -5
  82. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  83. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.d.ts +1 -5
  84. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js +2 -7
  85. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js.map +1 -1
  86. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +41 -19
  87. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  88. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +3 -20
  89. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +7 -57
  90. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
  91. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.d.ts +1 -5
  92. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.js.map +1 -1
  93. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.d.ts +0 -1
  94. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.js.map +1 -1
  95. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +1 -0
  96. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +15 -0
  97. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  98. package/dist/dist-esm/react-composites/src/composites/common/ExitSpotlightButton.d.ts +14 -0
  99. package/dist/dist-esm/react-composites/src/composites/common/ExitSpotlightButton.js +16 -0
  100. package/dist/dist-esm/react-composites/src/composites/common/ExitSpotlightButton.js.map +1 -0
  101. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +2 -0
  102. package/dist/dist-esm/react-composites/src/composites/common/icons.js +4 -0
  103. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  104. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.d.ts +4 -0
  105. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map +1 -1
  106. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +4 -2
  107. package/package.json +1 -1
@@ -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-202402170012';
176
+ var telemetryVersion = '1.13.0-alpha-202402220012';
177
177
 
178
178
 
179
179
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -385,7 +385,7 @@ const isHideAttendeeNamesEnabled = (state, props) => {
385
385
  /**
386
386
  * @private
387
387
  */
388
- const getCapabilites$1 = (state, props) => { var _a, _b; return (_b = (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.capabilitiesFeature) === null || _b === void 0 ? void 0 : _b.capabilities; };
388
+ const getCapabilities = (state, props) => { var _a, _b; return (_b = (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.capabilitiesFeature) === null || _b === void 0 ? void 0 : _b.capabilities; };
389
389
  /**
390
390
  * @private
391
391
  */
@@ -413,17 +413,9 @@ const getLocalParticipantRaisedHand$1 = (state, props) => {
413
413
  /**
414
414
  * @private
415
415
  */
416
- const getSpotlightedParticipants = (state, props) => {
417
- var _a, _b;
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
- };
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;
416
+ const getSpotlightCallFeature = (state, props) => {
417
+ var _a;
418
+ return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.spotlight;
427
419
  };
428
420
  /* @conditional-compile-remove(reaction) */
429
421
  /**
@@ -649,7 +641,7 @@ const microphoneButtonSelector = reselect__namespace.createSelector([
649
641
  getCallExists,
650
642
  getIsMuted,
651
643
  getDeviceManager$1,
652
- /* @conditional-compile-remove(capabilities) */ getCapabilites$1,
644
+ /* @conditional-compile-remove(capabilities) */ getCapabilities,
653
645
  /* @conditional-compile-remove(capabilities) */ getRole$1
654
646
  ], (callExists, isMuted, deviceManager,
655
647
  /* @conditional-compile-remove(capabilities) */ capabilities,
@@ -675,7 +667,7 @@ const microphoneButtonSelector = reselect__namespace.createSelector([
675
667
  const cameraButtonSelector = reselect__namespace.createSelector([
676
668
  getLocalVideoStreams$1,
677
669
  getDeviceManager$1,
678
- /* @conditional-compile-remove(capabilities) */ getCapabilites$1,
670
+ /* @conditional-compile-remove(capabilities) */ getCapabilities,
679
671
  /* @conditional-compile-remove(capabilities) */ getRole$1
680
672
  ], (localVideoStreams, deviceManager,
681
673
  /* @conditional-compile-remove(capabilities) */ capabilities,
@@ -729,7 +721,7 @@ const reactionButtonSelector = reselect__namespace.createSelector([getLocalParti
729
721
  const screenShareButtonSelector = reselect__namespace.createSelector([
730
722
  getIsScreenSharingOn,
731
723
  /* @conditional-compile-remove(PSTN-calls) */ getCallState,
732
- /* @conditional-compile-remove(capabilities) */ getCapabilites$1,
724
+ /* @conditional-compile-remove(capabilities) */ getCapabilities,
733
725
  /* @conditional-compile-remove(capabilities) */ getRole$1
734
726
  ], (isScreenSharingOn,
735
727
  /* @conditional-compile-remove(PSTN-calls) */ callState,
@@ -1170,6 +1162,32 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1170
1162
  const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1171
1163
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight(participants));
1172
1164
  });
1165
+ /* @conditional-compile-remove(spotlight) */
1166
+ const canSpotlight = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Capabilities).capabilities.spotlightParticipant.isPresent;
1167
+ /* @conditional-compile-remove(spotlight) */
1168
+ const onStartLocalSpotlight = canSpotlight
1169
+ ? () => __awaiter$P(void 0, void 0, void 0, function* () {
1170
+ yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight());
1171
+ })
1172
+ : undefined;
1173
+ /* @conditional-compile-remove(spotlight) */
1174
+ const onStopLocalSpotlight = () => __awaiter$P(void 0, void 0, void 0, function* () {
1175
+ yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight());
1176
+ });
1177
+ /* @conditional-compile-remove(spotlight) */
1178
+ const onStartRemoteSpotlight = canSpotlight
1179
+ ? (userIds) => __awaiter$P(void 0, void 0, void 0, function* () {
1180
+ const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1181
+ yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight(participants));
1182
+ })
1183
+ : undefined;
1184
+ /* @conditional-compile-remove(spotlight) */
1185
+ const onStopRemoteSpotlight = canSpotlight
1186
+ ? (userIds) => __awaiter$P(void 0, void 0, void 0, function* () {
1187
+ const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1188
+ yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight(participants));
1189
+ })
1190
+ : undefined;
1173
1191
  return {
1174
1192
  onHangUp,
1175
1193
  /* @conditional-compile-remove(PSTN-calls) */
@@ -1223,7 +1241,15 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1223
1241
  /* @conditional-compile-remove(spotlight) */
1224
1242
  onStartSpotlight,
1225
1243
  /* @conditional-compile-remove(spotlight) */
1226
- onStopSpotlight
1244
+ onStopSpotlight,
1245
+ /* @conditional-compile-remove(spotlight) */
1246
+ onStartLocalSpotlight,
1247
+ /* @conditional-compile-remove(spotlight) */
1248
+ onStopLocalSpotlight,
1249
+ /* @conditional-compile-remove(spotlight) */
1250
+ onStartRemoteSpotlight,
1251
+ /* @conditional-compile-remove(spotlight) */
1252
+ onStopRemoteSpotlight
1227
1253
  };
1228
1254
  });
1229
1255
 
@@ -2238,7 +2264,7 @@ let CallContext$2 = class CallContext {
2238
2264
  this.modifyState((draft) => {
2239
2265
  const call = draft.calls[this._callIdHistory.latestCallId(callId)];
2240
2266
  if (call) {
2241
- call.spotlight = { spotlightedParticipants, maxParticipantsToSpotlight };
2267
+ call.spotlight = Object.assign(Object.assign({}, call.spotlight), { spotlightedParticipants, maxParticipantsToSpotlight });
2242
2268
  }
2243
2269
  });
2244
2270
  }
@@ -2251,6 +2277,11 @@ let CallContext$2 = class CallContext {
2251
2277
  if (participant) {
2252
2278
  participant.spotlight = { spotlightedOrderPosition: spotlightedParticipant.order };
2253
2279
  }
2280
+ else if (call.spotlight &&
2281
+ toFlatCommunicationIdentifier(draft.userId) ===
2282
+ toFlatCommunicationIdentifier(spotlightedParticipant.identifier)) {
2283
+ call.spotlight.localParticipantSpotlight = { spotlightedOrderPosition: spotlightedParticipant.order };
2284
+ }
2254
2285
  }
2255
2286
  });
2256
2287
  }
@@ -2263,6 +2294,11 @@ let CallContext$2 = class CallContext {
2263
2294
  if (participant) {
2264
2295
  participant.spotlight = undefined;
2265
2296
  }
2297
+ else if (call.spotlight &&
2298
+ toFlatCommunicationIdentifier(draft.userId) ===
2299
+ toFlatCommunicationIdentifier(spotlightedParticipant.identifier)) {
2300
+ call.spotlight.localParticipantSpotlight = undefined;
2301
+ }
2266
2302
  }
2267
2303
  });
2268
2304
  }
@@ -10682,7 +10718,7 @@ const messageContentAriaText = (props) => {
10682
10718
  };
10683
10719
  /* @conditional-compile-remove(image-overlay) */
10684
10720
  const defaultOnRenderInlineImage = (inlineImage) => {
10685
- return React.createElement("img", Object.assign({ tabIndex: 0, "data-ui-id": inlineImage.imgAttrs.id }, inlineImage.imgAttrs));
10721
+ return (React.createElement("img", Object.assign({ key: inlineImage.imgAttrs.id, tabIndex: 0, "data-ui-id": inlineImage.imgAttrs.id }, inlineImage.imgAttrs)));
10686
10722
  };
10687
10723
  const processHtmlToReact = (props) => {
10688
10724
  var _a;
@@ -12863,24 +12899,25 @@ const useRemoteVideoStreamLifecycleMaintainer = (props) => {
12863
12899
  */
12864
12900
  const useVideoTileContextualMenuProps = (props) => {
12865
12901
  var _a;
12866
- const { remoteParticipant, view, strings, isPinned, onPinParticipant, onUnpinParticipant, onUpdateScalingMode, disablePinMenuItem, toggleAnnouncerString,
12902
+ const { participant, view, strings, isPinned, onPinParticipant, onUnpinParticipant, onUpdateScalingMode, disablePinMenuItem, toggleAnnouncerString,
12867
12903
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds = [],
12868
12904
  /* @conditional-compile-remove(spotlight) */ isSpotlighted,
12869
12905
  /* @conditional-compile-remove(spotlight) */ onStartSpotlight,
12870
12906
  /* @conditional-compile-remove(spotlight) */ onStopSpotlight,
12871
- /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight } = props;
12907
+ /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight,
12908
+ /* @conditional-compile-remove(spotlight) */ myUserId } = props;
12872
12909
  const scalingMode = React.useMemo(() => {
12873
12910
  var _a;
12874
- return (_a = props.remoteParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.scalingMode;
12875
- }, [(_a = props.remoteParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.scalingMode]);
12911
+ return (_a = props.participant.videoStream) === null || _a === void 0 ? void 0 : _a.scalingMode;
12912
+ }, [(_a = props.participant.videoStream) === null || _a === void 0 ? void 0 : _a.scalingMode]);
12876
12913
  const contextualMenuProps = React.useMemo(() => {
12877
12914
  const items = [];
12878
12915
  if (isPinned !== undefined) {
12879
12916
  if (isPinned && onUnpinParticipant && (strings === null || strings === void 0 ? void 0 : strings.unpinParticipantForMe)) {
12880
12917
  let unpinActionString = undefined;
12881
- if (toggleAnnouncerString && strings.unpinParticipantMenuItemAriaLabel && remoteParticipant.displayName) {
12918
+ if (toggleAnnouncerString && strings.unpinParticipantMenuItemAriaLabel && participant.displayName) {
12882
12919
  unpinActionString = _formatString(strings === null || strings === void 0 ? void 0 : strings.unpinParticipantMenuItemAriaLabel, {
12883
- participantName: remoteParticipant.displayName
12920
+ participantName: participant.displayName
12884
12921
  });
12885
12922
  }
12886
12923
  items.push({
@@ -12891,7 +12928,7 @@ const useVideoTileContextualMenuProps = (props) => {
12891
12928
  styles: { root: { lineHeight: '1rem', textAlign: 'center' } }
12892
12929
  },
12893
12930
  onClick: () => {
12894
- onUnpinParticipant(remoteParticipant.userId);
12931
+ onUnpinParticipant(participant.userId);
12895
12932
  unpinActionString && (toggleAnnouncerString === null || toggleAnnouncerString === void 0 ? void 0 : toggleAnnouncerString(unpinActionString));
12896
12933
  },
12897
12934
  'data-ui-id': 'video-tile-unpin-participant-button',
@@ -12900,9 +12937,9 @@ const useVideoTileContextualMenuProps = (props) => {
12900
12937
  }
12901
12938
  if (!isPinned && onPinParticipant && (strings === null || strings === void 0 ? void 0 : strings.pinParticipantForMe)) {
12902
12939
  let pinActionString = undefined;
12903
- if (toggleAnnouncerString && strings.pinnedParticipantAnnouncementAriaLabel && remoteParticipant.displayName) {
12940
+ if (toggleAnnouncerString && strings.pinnedParticipantAnnouncementAriaLabel && participant.displayName) {
12904
12941
  pinActionString = _formatString(strings === null || strings === void 0 ? void 0 : strings.pinnedParticipantAnnouncementAriaLabel, {
12905
- participantName: remoteParticipant.displayName
12942
+ participantName: participant.displayName
12906
12943
  });
12907
12944
  }
12908
12945
  items.push({
@@ -12913,7 +12950,7 @@ const useVideoTileContextualMenuProps = (props) => {
12913
12950
  styles: { root: { lineHeight: '1rem', textAlign: 'center' } }
12914
12951
  },
12915
12952
  onClick: () => {
12916
- onPinParticipant(remoteParticipant.userId);
12953
+ onPinParticipant(participant.userId);
12917
12954
  pinActionString && (toggleAnnouncerString === null || toggleAnnouncerString === void 0 ? void 0 : toggleAnnouncerString(pinActionString));
12918
12955
  },
12919
12956
  'data-ui-id': 'video-tile-pin-participant-button',
@@ -12924,15 +12961,18 @@ const useVideoTileContextualMenuProps = (props) => {
12924
12961
  }
12925
12962
  /* @conditional-compile-remove(spotlight) */
12926
12963
  if (isSpotlighted) {
12927
- if (onStopSpotlight && remoteParticipant.userId && (strings === null || strings === void 0 ? void 0 : strings.stopSpotlightVideoTileMenuLabel)) {
12964
+ const stopSpotlightMenuLabel = myUserId === participant.userId
12965
+ ? strings === null || strings === void 0 ? void 0 : strings.stopSpotlightOnSelfVideoTileMenuLabel
12966
+ : strings === null || strings === void 0 ? void 0 : strings.stopSpotlightVideoTileMenuLabel;
12967
+ if (onStopSpotlight && participant.userId && (strings === null || strings === void 0 ? void 0 : strings.stopSpotlightVideoTileMenuLabel)) {
12928
12968
  items.push({
12929
12969
  key: 'stopSpotlight',
12930
- text: strings.stopSpotlightVideoTileMenuLabel,
12970
+ text: stopSpotlightMenuLabel,
12931
12971
  iconProps: {
12932
12972
  iconName: 'StopSpotlightContextualMenuItem',
12933
12973
  styles: { root: { lineHeight: 0 } }
12934
12974
  },
12935
- onClick: () => onStopSpotlight([remoteParticipant.userId]),
12975
+ onClick: () => onStopSpotlight([participant.userId]),
12936
12976
  ariaLabel: strings.stopSpotlightVideoTileMenuLabel
12937
12977
  });
12938
12978
  }
@@ -12944,7 +12984,7 @@ const useVideoTileContextualMenuProps = (props) => {
12944
12984
  const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight
12945
12985
  ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight
12946
12986
  : false;
12947
- if (onStartSpotlight && remoteParticipant.userId && startSpotlightMenuLabel) {
12987
+ if (onStartSpotlight && participant.userId && startSpotlightMenuLabel) {
12948
12988
  items.push({
12949
12989
  key: 'startSpotlight',
12950
12990
  text: startSpotlightMenuLabel,
@@ -12952,7 +12992,7 @@ const useVideoTileContextualMenuProps = (props) => {
12952
12992
  iconName: 'StartSpotlightContextualMenuItem',
12953
12993
  styles: { root: { lineHeight: 0 } }
12954
12994
  },
12955
- onClick: () => onStartSpotlight([remoteParticipant.userId]),
12995
+ onClick: () => onStartSpotlight([participant.userId]),
12956
12996
  ariaLabel: startSpotlightMenuLabel,
12957
12997
  disabled: maxSpotlightedParticipantsReached,
12958
12998
  title: maxSpotlightedParticipantsReached ? strings === null || strings === void 0 ? void 0 : strings.spotlightLimitReachedMenuTitle : undefined
@@ -12969,7 +13009,7 @@ const useVideoTileContextualMenuProps = (props) => {
12969
13009
  styles: { root: { lineHeight: '1rem', textAlign: 'center' } }
12970
13010
  },
12971
13011
  onClick: () => {
12972
- onUpdateScalingMode === null || onUpdateScalingMode === void 0 ? void 0 : onUpdateScalingMode(remoteParticipant.userId, 'Fit');
13012
+ onUpdateScalingMode === null || onUpdateScalingMode === void 0 ? void 0 : onUpdateScalingMode(participant.userId, 'Fit');
12973
13013
  view === null || view === void 0 ? void 0 : view.updateScalingMode('Fit');
12974
13014
  },
12975
13015
  'data-ui-id': 'video-tile-fit-to-frame',
@@ -12985,7 +13025,7 @@ const useVideoTileContextualMenuProps = (props) => {
12985
13025
  styles: { root: { lineHeight: '1rem', textAlign: 'center' } }
12986
13026
  },
12987
13027
  onClick: () => {
12988
- onUpdateScalingMode === null || onUpdateScalingMode === void 0 ? void 0 : onUpdateScalingMode(remoteParticipant.userId, 'Crop');
13028
+ onUpdateScalingMode === null || onUpdateScalingMode === void 0 ? void 0 : onUpdateScalingMode(participant.userId, 'Crop');
12989
13029
  view === null || view === void 0 ? void 0 : view.updateScalingMode('Crop');
12990
13030
  },
12991
13031
  'data-ui-id': 'video-tile-fill-frame',
@@ -13005,15 +13045,16 @@ const useVideoTileContextualMenuProps = (props) => {
13005
13045
  onPinParticipant,
13006
13046
  onUnpinParticipant,
13007
13047
  onUpdateScalingMode,
13008
- remoteParticipant.userId,
13009
- remoteParticipant.displayName,
13048
+ participant.userId,
13049
+ participant.displayName,
13010
13050
  disablePinMenuItem,
13011
13051
  toggleAnnouncerString,
13012
13052
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds,
13013
13053
  /* @conditional-compile-remove(spotlight) */ isSpotlighted,
13014
13054
  /* @conditional-compile-remove(spotlight) */ onStartSpotlight,
13015
13055
  /* @conditional-compile-remove(spotlight) */ onStopSpotlight,
13016
- /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight
13056
+ /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight,
13057
+ /* @conditional-compile-remove(spotlight) */ myUserId
13017
13058
  ]);
13018
13059
  return contextualMenuProps;
13019
13060
  };
@@ -13373,7 +13414,7 @@ const MAX_GRID_PARTICIPANTS_NOT_LARGE_GALLERY = 9;
13373
13414
  const _useOrganizedParticipants = (props) => {
13374
13415
  const visibleGridParticipants = React.useRef([]);
13375
13416
  const visibleOverflowGalleryParticipants = React.useRef([]);
13376
- const { remoteParticipants = [], localParticipant, dominantSpeakers = [], maxRemoteVideoStreams = DEFAULT_MAX_VIDEO_SREAMS, maxOverflowGalleryDominantSpeakers = DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [],
13417
+ const { remoteParticipants = [], dominantSpeakers = [], maxRemoteVideoStreams = DEFAULT_MAX_VIDEO_SREAMS, maxOverflowGalleryDominantSpeakers = DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [],
13377
13418
  /* @conditional-compile-remove(gallery-layouts) */
13378
13419
  layout } = props;
13379
13420
  const calculateMaxRemoteVideoStreams = () => {
@@ -13443,13 +13484,7 @@ const _useOrganizedParticipants = (props) => {
13443
13484
  ]);
13444
13485
  const gridParticipants = getGridParticipants();
13445
13486
  const getOverflowGalleryRemoteParticipants = React.useCallback(() => {
13446
- if (isScreenShareActive && localParticipant) {
13447
- const localParticipantPlusOverflow = [localParticipant].concat(visibleGridParticipants.current.concat(visibleOverflowGalleryParticipants.current));
13448
- // If screen sharing is active, assign video and audio participants as overflow gallery participants
13449
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
13450
- return localParticipantPlusOverflow.concat(callingParticipants);
13451
- }
13452
- else if (isScreenShareActive) {
13487
+ if (isScreenShareActive) {
13453
13488
  // If screen sharing is active, assign video and audio participants as overflow gallery participants
13454
13489
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
13455
13490
  return visibleGridParticipants.current.concat(visibleOverflowGalleryParticipants.current.concat(callingParticipants));
@@ -13469,7 +13504,6 @@ const _useOrganizedParticipants = (props) => {
13469
13504
  }, [
13470
13505
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ callingParticipants,
13471
13506
  isScreenShareActive,
13472
- localParticipant,
13473
13507
  maxRemoteVideoStreamsToUse
13474
13508
  ]);
13475
13509
  const overflowGalleryParticipants = getOverflowGalleryRemoteParticipants();
@@ -13806,7 +13840,7 @@ const _RemoteVideoTile = React.memo((props) => {
13806
13840
  // Handle creating, destroying and updating the video stream as necessary
13807
13841
  const createVideoStreamResult = useRemoteVideoStreamLifecycleMaintainer(remoteVideoStreamProps);
13808
13842
  const contextualMenuProps = useVideoTileContextualMenuProps({
13809
- remoteParticipant,
13843
+ participant: remoteParticipant,
13810
13844
  view: createVideoStreamResult === null || createVideoStreamResult === void 0 ? void 0 : createVideoStreamResult.view,
13811
13845
  strings: Object.assign({}, props.strings),
13812
13846
  isPinned,
@@ -13842,7 +13876,7 @@ const _RemoteVideoTile = React.memo((props) => {
13842
13876
  }, [renderElement, showLoadingIndicator]);
13843
13877
  const onKeyDown = React.useCallback((e) => {
13844
13878
  if (e.key === 'Enter') {
13845
- setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([])));
13879
+ setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps$1(contextualMenuProps, () => setDrawerMenuItemProps([])));
13846
13880
  }
13847
13881
  }, [setDrawerMenuItemProps, contextualMenuProps]);
13848
13882
  let displayName = remoteParticipant.displayName || (strings === null || strings === void 0 ? void 0 : strings.displayNamePlaceholder);
@@ -13865,7 +13899,7 @@ const _RemoteVideoTile = React.memo((props) => {
13865
13899
  reaction: remoteParticipant.reaction, isSpeaking: remoteParticipant.isSpeaking, showMuteIndicator: showMuteIndicator, personaMinSize: props.personaMinSize, showLabel: props.showLabel,
13866
13900
  /* @conditional-compile-remove(one-to-n-calling) */
13867
13901
  /* @conditional-compile-remove(PSTN-calls) */
13868
- participantState: participantState }, videoTileContextualMenuProps, { isPinned: props.isPinned, onLongTouch: () => setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([]))),
13902
+ participantState: participantState }, videoTileContextualMenuProps, { isPinned: props.isPinned, onLongTouch: () => setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps$1(contextualMenuProps, () => setDrawerMenuItemProps([]))),
13869
13903
  /* @conditional-compile-remove(spotlight) */
13870
13904
  isSpotlighted: isSpotlighted,
13871
13905
  /* @conditional-compile-remove(reaction) */
@@ -13874,7 +13908,7 @@ const _RemoteVideoTile = React.memo((props) => {
13874
13908
  React.createElement(react.Stack, { styles: drawerMenuWrapperStyles },
13875
13909
  React.createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItemProps([]), items: drawerMenuItemProps, heading: remoteParticipant.displayName }))))));
13876
13910
  });
13877
- const convertContextualMenuItemsToDrawerMenuItemProps = (contextualMenuProps, onLightDismiss) => {
13911
+ const convertContextualMenuItemsToDrawerMenuItemProps$1 = (contextualMenuProps, onLightDismiss) => {
13878
13912
  if (!contextualMenuProps) {
13879
13913
  return [];
13880
13914
  }
@@ -14116,6 +14150,18 @@ const _LocalVideoTile = React.memo((props) => {
14116
14150
  reaction,
14117
14151
  /* @conditional-compile-remove(spotlight) */
14118
14152
  isSpotlighted,
14153
+ /* @conditional-compile-remove(spotlight) */
14154
+ spotlightedParticipantUserIds,
14155
+ /* @conditional-compile-remove(spotlight) */
14156
+ onStartSpotlight,
14157
+ /* @conditional-compile-remove(spotlight) */
14158
+ onStopSpotlight,
14159
+ /* @conditional-compile-remove(spotlight) */
14160
+ maxParticipantsToSpotlight,
14161
+ /* @conditional-compile-remove(spotlight) */
14162
+ menuKind,
14163
+ /* @conditional-compile-remove(spotlight) */
14164
+ strings,
14119
14165
  /* @conditional-compile-remove(reaction) */
14120
14166
  reactionResources } = props;
14121
14167
  /* @conditional-compile-remove(spotlight) */
@@ -14138,13 +14184,53 @@ const _LocalVideoTile = React.memo((props) => {
14138
14184
  // Handle creating, destroying and updating the video stream as necessary
14139
14185
  useLocalVideoStreamLifecycleMaintainer(localVideoStreamProps);
14140
14186
  /* @conditional-compile-remove(spotlight) */
14141
- const spotlightBorder = React.useMemo(() => (React.createElement(react.Stack, { className: react.mergeStyles({
14142
- position: 'absolute',
14143
- height: '100%',
14144
- width: '100%',
14145
- zIndex: 100,
14146
- border: `0.25rem solid ${theme.palette.black}`
14147
- }) })), [theme.palette.black]);
14187
+ const contextualMenuProps = useVideoTileContextualMenuProps({
14188
+ participant: { userId: userId !== null && userId !== void 0 ? userId : '' },
14189
+ strings: Object.assign({}, strings),
14190
+ spotlightedParticipantUserIds,
14191
+ isSpotlighted,
14192
+ onStartSpotlight,
14193
+ onStopSpotlight,
14194
+ maxParticipantsToSpotlight,
14195
+ myUserId: userId
14196
+ });
14197
+ const videoTileContextualMenuProps = React.useMemo(() => {
14198
+ /* @conditional-compile-remove(spotlight) */
14199
+ if (menuKind !== 'contextual' || !contextualMenuProps) {
14200
+ return {};
14201
+ }
14202
+ /* @conditional-compile-remove(spotlight) */
14203
+ return {
14204
+ contextualMenu: contextualMenuProps
14205
+ };
14206
+ }, [
14207
+ /* @conditional-compile-remove(spotlight) */ contextualMenuProps,
14208
+ /* @conditional-compile-remove(spotlight) */ menuKind
14209
+ ]);
14210
+ const videoTileStyles = React.useMemo(() => {
14211
+ /* @conditional-compile-remove(spotlight) */
14212
+ if (isSpotlighted) {
14213
+ return react.concatStyleSets({
14214
+ root: {
14215
+ outline: `0.25rem solid ${theme.palette.neutralTertiaryAlt}`,
14216
+ outlineOffset: '-0.25rem'
14217
+ }
14218
+ }, styles);
14219
+ }
14220
+ return styles;
14221
+ }, [
14222
+ /* @conditional-compile-remove(spotlight) */ isSpotlighted,
14223
+ /* @conditional-compile-remove(spotlight) */ theme.palette.neutralTertiaryAlt,
14224
+ styles
14225
+ ]);
14226
+ /* @conditional-compile-remove(spotlight) */
14227
+ const [drawerMenuItemProps, setDrawerMenuItemProps] = React.useState([]);
14228
+ /* @conditional-compile-remove(spotlight) */
14229
+ const onKeyDown = React.useCallback((e) => {
14230
+ if (e.key === 'Enter') {
14231
+ setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([])));
14232
+ }
14233
+ }, [setDrawerMenuItemProps, contextualMenuProps]);
14148
14234
  const renderVideoStreamElement = React.useMemo(() => {
14149
14235
  // Checking if renderElement is well defined or not as calling SDK has a number of video streams limitation which
14150
14236
  // implies that, after their threshold, all streams have no child (blank video)
@@ -14154,28 +14240,30 @@ const _LocalVideoTile = React.memo((props) => {
14154
14240
  }
14155
14241
  return (React.createElement(React.Fragment, null,
14156
14242
  React.createElement(FloatingLocalCameraCycleButton, { showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview !== null && showCameraSwitcherInLocalPreview !== void 0 ? showCameraSwitcherInLocalPreview : false, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: localVideoCameraSwitcherLabel, localVideoSelectedDescription: localVideoSelectedDescription }),
14157
- React.createElement(StreamMedia, { videoStreamElement: renderElement, isMirrored: true }), /* @conditional-compile-remove(spotlight) */
14158
- isSpotlighted && spotlightBorder));
14243
+ React.createElement(StreamMedia, { videoStreamElement: renderElement, isMirrored: true })));
14159
14244
  }, [
14160
14245
  localVideoCameraCycleButtonProps,
14161
14246
  localVideoCameraSwitcherLabel,
14162
14247
  localVideoSelectedDescription,
14163
14248
  renderElement,
14164
- showCameraSwitcherInLocalPreview,
14165
- /* @conditional-compile-remove(spotlight) */ isSpotlighted,
14166
- /* @conditional-compile-remove(spotlight) */ spotlightBorder
14249
+ showCameraSwitcherInLocalPreview
14167
14250
  ]);
14168
- return (React.createElement(React.Fragment, null,
14169
- React.createElement(VideoTile, { key: userId !== null && userId !== void 0 ? userId : 'local-video-tile', userId: userId, renderElement: renderVideoStreamElement, showLabel: showLabel, displayName: displayName, initialsName: initialsName, styles: styles, onRenderPlaceholder: onRenderAvatar, isMuted: isMuted, showMuteIndicator: showMuteIndicator, personaMinSize: props.personaMinSize,
14251
+ return (React.createElement(react.Stack, { className: react.mergeStyles({ width: '100%', height: '100%' }),
14252
+ /* @conditional-compile-remove(spotlight) */ onKeyDown: menuKind === 'drawer' ? onKeyDown : undefined },
14253
+ React.createElement(VideoTile, Object.assign({ key: userId !== null && userId !== void 0 ? userId : 'local-video-tile', userId: userId, renderElement: renderVideoStreamElement, showLabel: showLabel, displayName: displayName, initialsName: initialsName, styles: videoTileStyles, onRenderPlaceholder: onRenderAvatar, isMuted: isMuted, showMuteIndicator: showMuteIndicator, personaMinSize: props.personaMinSize,
14170
14254
  /* @conditional-compile-remove(raise-hand) */
14171
14255
  raisedHand: raisedHand,
14172
14256
  /* @conditional-compile-remove(reaction) */
14173
14257
  reaction: reaction,
14174
14258
  /* @conditional-compile-remove(spotlight) */
14175
- isSpotlighted: isSpotlighted,
14259
+ isSpotlighted: isSpotlighted }, videoTileContextualMenuProps, {
14260
+ /* @conditional-compile-remove(spotlight) */
14261
+ onLongTouch: () => setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([]))),
14176
14262
  /* @conditional-compile-remove(reaction) */
14177
- reactionResources: reactionResources }), /* @conditional-compile-remove(spotlight) */
14178
- isSpotlighted && spotlightBorder));
14263
+ reactionResources: reactionResources }),
14264
+ /* @conditional-compile-remove(spotlight) */ drawerMenuItemProps.length > 0 && (React.createElement(react.Layer, { hostId: props.drawerMenuHostId },
14265
+ React.createElement(react.Stack, { styles: drawerMenuWrapperStyles },
14266
+ React.createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItemProps([]), items: drawerMenuItemProps })))))));
14179
14267
  });
14180
14268
  const FloatingLocalCameraCycleButton = (props) => {
14181
14269
  const { showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel, localVideoSelectedDescription } = props;
@@ -14189,6 +14277,25 @@ const FloatingLocalCameraCycleButton = (props) => {
14189
14277
  (localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.selectedCamera) !== undefined &&
14190
14278
  (localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.onSelectCamera) !== undefined && (React.createElement(LocalVideoCameraCycleButton, { cameras: localVideoCameraCycleButtonProps.cameras, selectedCamera: localVideoCameraCycleButtonProps.selectedCamera, onSelectCamera: localVideoCameraCycleButtonProps.onSelectCamera, label: localVideoCameraSwitcherLabel, ariaDescription: ariaDescription }))));
14191
14279
  };
14280
+ /* @conditional-compile-remove(spotlight) */
14281
+ const convertContextualMenuItemsToDrawerMenuItemProps = (contextualMenuProps, onLightDismiss) => {
14282
+ if (!contextualMenuProps) {
14283
+ return [];
14284
+ }
14285
+ return contextualMenuProps.items.map((item) => {
14286
+ return {
14287
+ itemKey: item.key,
14288
+ text: item.text,
14289
+ iconProps: item.iconProps,
14290
+ disabled: item.disabled,
14291
+ onItemClick: () => {
14292
+ var _a;
14293
+ (_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);
14294
+ onLightDismiss === null || onLightDismiss === void 0 ? void 0 : onLightDismiss();
14295
+ }
14296
+ };
14297
+ });
14298
+ };
14192
14299
 
14193
14300
  // Copyright (c) Microsoft Corporation.
14194
14301
  // Licensed under the MIT License.
@@ -15027,7 +15134,7 @@ const DefaultLayout = (props) => {
15027
15134
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds
15028
15135
  });
15029
15136
  let activeVideoStreams = 0;
15030
- const gridTiles = gridParticipants.map((p) => {
15137
+ let gridTiles = gridParticipants.map((p) => {
15031
15138
  var _a, _b;
15032
15139
  return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
15033
15140
  ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams
@@ -15041,14 +15148,19 @@ const DefaultLayout = (props) => {
15041
15148
  * this case when those components are here
15042
15149
  */
15043
15150
  const [indexesToRender, setIndexesToRender] = React.useState([]);
15044
- const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
15151
+ let overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
15045
15152
  var _a, _b;
15046
15153
  return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
15047
15154
  ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && indexesToRender.includes(i) && activeVideoStreams++ < maxRemoteVideoStreams
15048
15155
  : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
15049
15156
  });
15050
15157
  if (localVideoComponent) {
15051
- gridTiles.push(localVideoComponent);
15158
+ if (screenShareComponent) {
15159
+ overflowGalleryTiles = [localVideoComponent].concat(overflowGalleryTiles);
15160
+ }
15161
+ else {
15162
+ gridTiles = [localVideoComponent].concat(gridTiles);
15163
+ }
15052
15164
  }
15053
15165
  const overflowGallery = React.useMemo(() => {
15054
15166
  if (overflowGalleryTiles.length === 0) {
@@ -16161,7 +16273,7 @@ const LargeGalleryLayout = (props) => {
16161
16273
  /* @conditional-compile-remove(large-gallery) */ layout: 'largeGallery'
16162
16274
  });
16163
16275
  let activeVideoStreams = 0;
16164
- const gridTiles = gridParticipants.map((p) => {
16276
+ let gridTiles = gridParticipants.map((p) => {
16165
16277
  var _a, _b;
16166
16278
  return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
16167
16279
  ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams
@@ -16175,14 +16287,19 @@ const LargeGalleryLayout = (props) => {
16175
16287
  * this case when those components are here
16176
16288
  */
16177
16289
  const [indexesToRender, setIndexesToRender] = React.useState([]);
16178
- const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
16290
+ let overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
16179
16291
  var _a, _b;
16180
16292
  return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
16181
16293
  ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && indexesToRender.includes(i) && activeVideoStreams++ < maxRemoteVideoStreams
16182
16294
  : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
16183
16295
  });
16184
16296
  if (localVideoComponent) {
16185
- gridTiles.push(localVideoComponent);
16297
+ if (screenShareComponent) {
16298
+ overflowGalleryTiles = [localVideoComponent].concat(overflowGalleryTiles);
16299
+ }
16300
+ else {
16301
+ gridTiles = [localVideoComponent].concat(gridTiles);
16302
+ }
16186
16303
  }
16187
16304
  const overflowGallery = React.useMemo(() => {
16188
16305
  if (overflowGalleryTiles.length === 0) {
@@ -16276,9 +16393,13 @@ const VideoGallery = (props) => {
16276
16393
  /* @conditional-compile-remove(spotlight) */
16277
16394
  spotlightedParticipants,
16278
16395
  /* @conditional-compile-remove(spotlight) */
16279
- onStartSpotlight,
16396
+ onStartLocalSpotlight,
16280
16397
  /* @conditional-compile-remove(spotlight) */
16281
- onStopSpotlight,
16398
+ onStartRemoteSpotlight,
16399
+ /* @conditional-compile-remove(spotlight) */
16400
+ onStopLocalSpotlight,
16401
+ /* @conditional-compile-remove(spotlight) */
16402
+ onStopRemoteSpotlight,
16282
16403
  /* @conditional-compile-remove(spotlight) */
16283
16404
  maxParticipantsToSpotlight,
16284
16405
  /* @conditional-compile-remove(reaction) */
@@ -16349,7 +16470,21 @@ const VideoGallery = (props) => {
16349
16470
  /* @conditional-compile-remove(reaction) */
16350
16471
  reaction: localParticipant.reaction,
16351
16472
  /* @conditional-compile-remove(spotlight) */
16473
+ spotlightedParticipantUserIds: spotlightedParticipants,
16474
+ /* @conditional-compile-remove(spotlight) */
16352
16475
  isSpotlighted: isSpotlighted,
16476
+ /* @conditional-compile-remove(spotlight) */
16477
+ onStartSpotlight: onStartLocalSpotlight,
16478
+ /* @conditional-compile-remove(spotlight) */
16479
+ onStopSpotlight: onStopLocalSpotlight,
16480
+ /* @conditional-compile-remove(spotlight) */
16481
+ maxParticipantsToSpotlight: maxParticipantsToSpotlight,
16482
+ /* @conditional-compile-remove(spotlight) */
16483
+ menuKind: remoteVideoTileMenu ? (remoteVideoTileMenu.kind === 'drawer' ? 'drawer' : 'contextual') : undefined,
16484
+ /* @conditional-compile-remove(spotlight) */
16485
+ drawerMenuHostId: drawerMenuHostId,
16486
+ /* @conditional-compile-remove(spotlight) */
16487
+ strings: strings,
16353
16488
  /* @conditional-compile-remove(reaction) */
16354
16489
  reactionResources: reactionResources })));
16355
16490
  }, [
@@ -16364,10 +16499,6 @@ const VideoGallery = (props) => {
16364
16499
  localTileNotInGrid,
16365
16500
  showCameraSwitcherInLocalPreview,
16366
16501
  showMuteIndicator,
16367
- strings.localVideoCameraSwitcherLabel,
16368
- strings.localVideoLabel,
16369
- strings.localVideoMovementLabel,
16370
- strings.localVideoSelectedDescription,
16371
16502
  styles === null || styles === void 0 ? void 0 : styles.localVideo,
16372
16503
  theme.effects.roundedCorner4,
16373
16504
  /*@conditional-compile-remove(click-to-call) */
@@ -16375,6 +16506,20 @@ const VideoGallery = (props) => {
16375
16506
  /* @conditional-compile-remove(gallery-layouts) */
16376
16507
  layout,
16377
16508
  showLocalVideoTileLabel,
16509
+ /* @conditional-compile-remove(spotlight) */
16510
+ spotlightedParticipants,
16511
+ /* @conditional-compile-remove(spotlight) */
16512
+ onStartLocalSpotlight,
16513
+ /* @conditional-compile-remove(spotlight) */
16514
+ onStopLocalSpotlight,
16515
+ /* @conditional-compile-remove(spotlight) */
16516
+ maxParticipantsToSpotlight,
16517
+ /* @conditional-compile-remove(spotlight) */
16518
+ remoteVideoTileMenu,
16519
+ /* @conditional-compile-remove(spotlight) */
16520
+ strings,
16521
+ /* @conditional-compile-remove(spotlight) */
16522
+ drawerMenuHostId,
16378
16523
  /* @conditional-compile-remove(reaction) */
16379
16524
  reactionResources
16380
16525
  ]);
@@ -16439,9 +16584,9 @@ const VideoGallery = (props) => {
16439
16584
  /* @conditional-compile-remove(spotlight) */
16440
16585
  isSpotlighted: isSpotlighted,
16441
16586
  /* @conditional-compile-remove(spotlight) */
16442
- onStartSpotlight: onStartSpotlight,
16587
+ onStartSpotlight: onStartRemoteSpotlight,
16443
16588
  /* @conditional-compile-remove(spotlight) */
16444
- onStopSpotlight: onStopSpotlight,
16589
+ onStopSpotlight: onStopRemoteSpotlight,
16445
16590
  /* @conditional-compile-remove(spotlight) */
16446
16591
  maxParticipantsToSpotlight: maxParticipantsToSpotlight,
16447
16592
  /* @conditional-compile-remove(reaction) */
@@ -16463,8 +16608,8 @@ const VideoGallery = (props) => {
16463
16608
  toggleAnnouncerString,
16464
16609
  onUpdateScalingMode,
16465
16610
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipants,
16466
- /* @conditional-compile-remove(spotlight) */ onStartSpotlight,
16467
- /* @conditional-compile-remove(spotlight) */ onStopSpotlight,
16611
+ /* @conditional-compile-remove(spotlight) */ onStartRemoteSpotlight,
16612
+ /* @conditional-compile-remove(spotlight) */ onStopRemoteSpotlight,
16468
16613
  /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight,
16469
16614
  /* @conditional-compile-remove(reaction) */ reactionResources
16470
16615
  ]);
@@ -20125,7 +20270,7 @@ spotlight // temp unknown type to build stable
20125
20270
  raisedHand: raisedHand,
20126
20271
  /* @conditional-compile-remove(reaction) */
20127
20272
  reaction: reaction,
20128
- /* @conditional-compile-remove(reaction) */
20273
+ /* @conditional-compile-remove(spotlight) */
20129
20274
  spotlight: spotlight
20130
20275
  };
20131
20276
  };
@@ -20146,7 +20291,9 @@ const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
20146
20291
  const memoizeLocalParticipant = memoizeOne((identifier, displayName, isMuted, isScreenSharingOn, localVideoStream,
20147
20292
  /* @conditional-compile-remove(rooms) */ role,
20148
20293
  /* @conditional-compile-remove(raise-hand) */ raisedHand,
20149
- /* @conditional-compile-remove(reaction) */ reaction) => {
20294
+ /* @conditional-compile-remove(reaction) */ reaction,
20295
+ /* @conditional-compile-remove(spotlight) */ localSpotlight,
20296
+ /* @conditional-compile-remove(spotlight) */ capabilities) => {
20150
20297
  var _a, _b;
20151
20298
  return ({
20152
20299
  userId: identifier,
@@ -20163,7 +20310,11 @@ const memoizeLocalParticipant = memoizeOne((identifier, displayName, isMuted, is
20163
20310
  /* @conditional-compile-remove(raise-hand) */
20164
20311
  raisedHand: raisedHand,
20165
20312
  /* @conditional-compile-remove(reaction) */
20166
- reaction: reaction
20313
+ reaction: reaction,
20314
+ /* @conditional-compile-remove(spotlight) */
20315
+ spotlight: localSpotlight,
20316
+ /* @conditional-compile-remove(spotlight) */
20317
+ capabilities
20167
20318
  });
20168
20319
  });
20169
20320
  /* @conditional-compile-remove(spotlight) */
@@ -20214,9 +20365,9 @@ const videoGallerySelector = reselect.createSelector([
20214
20365
  /* @conditional-compile-remove(reaction) */
20215
20366
  getLocalParticipantReactionState,
20216
20367
  /* @conditional-compile-remove(spotlight) */
20217
- getSpotlightedParticipants,
20368
+ getSpotlightCallFeature,
20218
20369
  /* @conditional-compile-remove(spotlight) */
20219
- getMaxParticipantsToSpotlight
20370
+ getCapabilities
20220
20371
  ], (screenShareRemoteParticipantId, remoteParticipants, localVideoStreams, isMuted, isScreenSharingOn, displayName, identifier, dominantSpeakers,
20221
20372
  /* @conditional-compile-remove(optimal-video-count) */
20222
20373
  optimalVideoCount,
@@ -20229,9 +20380,9 @@ isHideAttendeeNamesEnabled,
20229
20380
  /* @conditional-compile-remove(reaction) */
20230
20381
  localParticipantReaction,
20231
20382
  /* @conditional-compile-remove(spotlight) */
20232
- spotlightedParticipants,
20383
+ spotlightCallFeature,
20233
20384
  /* @conditional-compile-remove(spotlight) */
20234
- maxParticipantsToSpotlight) => {
20385
+ capabilities) => {
20235
20386
  const screenShareRemoteParticipant = screenShareRemoteParticipantId && remoteParticipants
20236
20387
  ? remoteParticipants[screenShareRemoteParticipantId]
20237
20388
  : undefined;
@@ -20242,7 +20393,7 @@ maxParticipantsToSpotlight) => {
20242
20393
  /* @conditional-compile-remove(reaction) */
20243
20394
  const localParticipantReactionState = memoizedConvertToVideoTileReaction(localParticipantReaction);
20244
20395
  /* @conditional-compile-remove(spotlight) */
20245
- const spotlightedParticipantIds = memoizeSpotlightedParticipantIds(spotlightedParticipants);
20396
+ const spotlightedParticipantIds = memoizeSpotlightedParticipantIds(spotlightCallFeature === null || spotlightCallFeature === void 0 ? void 0 : spotlightCallFeature.spotlightedParticipants);
20246
20397
  return {
20247
20398
  screenShareParticipant: screenShareRemoteParticipant
20248
20399
  ? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.state, screenShareRemoteParticipant.displayName,
@@ -20257,7 +20408,11 @@ maxParticipantsToSpotlight) => {
20257
20408
  /* @conditional-compile-remove(raise-hand) */
20258
20409
  raisedHand,
20259
20410
  /* @conditional-compile-remove(reaction) */
20260
- localParticipantReactionState),
20411
+ localParticipantReactionState,
20412
+ /* @conditional-compile-remove(spotlight) */
20413
+ spotlightCallFeature === null || spotlightCallFeature === void 0 ? void 0 : spotlightCallFeature.localParticipantSpotlight,
20414
+ /* @conditional-compile-remove(spotlight) */
20415
+ capabilities),
20261
20416
  remoteParticipants: _videoGalleryRemoteParticipantsMemo(updateUserDisplayNamesTrampoline$2(remoteParticipants ? Object.values(remoteParticipants) : noRemoteParticipants),
20262
20417
  /* @conditional-compile-remove(hide-attendee-name) */
20263
20418
  isHideAttendeeNamesEnabled,
@@ -20269,7 +20424,7 @@ maxParticipantsToSpotlight) => {
20269
20424
  /* @conditional-compile-remove(spotlight) */
20270
20425
  spotlightedParticipants: spotlightedParticipantIds,
20271
20426
  /* @conditional-compile-remove(spotlight) */
20272
- maxParticipantsToSpotlight: maxParticipantsToSpotlight
20427
+ maxParticipantsToSpotlight: spotlightCallFeature === null || spotlightCallFeature === void 0 ? void 0 : spotlightCallFeature.maxParticipantsToSpotlight
20273
20428
  };
20274
20429
  });
20275
20430
  const updateUserDisplayNamesTrampoline$2 = (remoteParticipants) => {
@@ -20353,7 +20508,7 @@ const participantListSelector = reselect.createSelector([
20353
20508
  /* @conditional-compile-remove(reaction) */
20354
20509
  getLocalParticipantReactionState,
20355
20510
  /* @conditional-compile-remove(spotlight) */
20356
- getSpotlightedParticipants
20511
+ getSpotlightCallFeature
20357
20512
  ], (userId, displayName, remoteParticipants, isScreenSharingOn, isMuted,
20358
20513
  /* @conditional-compile-remove(raise-hand) */
20359
20514
  raisedHand, role, partitipantCount,
@@ -20362,7 +20517,7 @@ isHideAttendeeNamesEnabled,
20362
20517
  /* @conditional-compile-remove(reaction) */
20363
20518
  localParticipantReactionState,
20364
20519
  /* @conditional-compile-remove(spotlight) */
20365
- spotlightedParticipants) => {
20520
+ spotlightCallFeature) => {
20366
20521
  const localUserCanRemoveOthers = localUserCanRemoveOthersTrampoline(role);
20367
20522
  const participants = remoteParticipants
20368
20523
  ? convertRemoteParticipantsToParticipantListParticipants(updateUserDisplayNamesTrampoline$1(Object.values(remoteParticipants)), localUserCanRemoveOthers,
@@ -20371,7 +20526,7 @@ spotlightedParticipants) => {
20371
20526
  /* @conditional-compile-remove(hide-attendee-name) */
20372
20527
  role,
20373
20528
  /* @conditional-compile-remove(spotlight) */
20374
- spotlightedParticipants)
20529
+ spotlightCallFeature === null || spotlightCallFeature === void 0 ? void 0 : spotlightCallFeature.spotlightedParticipants)
20375
20530
  : [];
20376
20531
  /* @conditional-compile-remove(reaction) */
20377
20532
  const localParticipantReaction = memoizedConvertToVideoTileReaction(localParticipantReactionState);
@@ -20388,7 +20543,7 @@ spotlightedParticipants) => {
20388
20543
  /* @conditional-compile-remove(reaction) */
20389
20544
  reaction: localParticipantReaction,
20390
20545
  /* @conditional-compile-remove(spotlight) */
20391
- spotlight: memoizedSpotlight(spotlightedParticipants, userId)
20546
+ spotlight: memoizedSpotlight(spotlightCallFeature === null || spotlightCallFeature === void 0 ? void 0 : spotlightCallFeature.spotlightedParticipants, userId)
20392
20547
  });
20393
20548
  /* @conditional-compile-remove(total-participant-count) */
20394
20549
  const totalParticipantCount = partitipantCount;
@@ -21176,12 +21331,12 @@ const extractAttachedFilesMetadata = (metadata) => {
21176
21331
  }
21177
21332
  };
21178
21333
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21179
- const extractTeamsAttachmentsMetadata = (attachments) => {
21334
+ const extractTeamsAttachmentsMetadata = (attachments, resourceCache) => {
21180
21335
  /* @conditional-compile-remove(file-sharing) */
21181
21336
  const files = [];
21182
21337
  const inlineImages = [];
21183
21338
  attachments.forEach((attachment) => {
21184
- var _a;
21339
+ var _a, _b, _c;
21185
21340
  const attachmentType = mapAttachmentType(attachment.attachmentType);
21186
21341
  /* @conditional-compile-remove(file-sharing) */
21187
21342
  const contentType = extractAttachmentContentTypeFromName(attachment.name);
@@ -21190,7 +21345,8 @@ const extractTeamsAttachmentsMetadata = (attachments) => {
21190
21345
  attachmentType: attachmentType,
21191
21346
  id: attachment.id,
21192
21347
  url: extractAttachmentUrl(attachment),
21193
- previewUrl: attachment.previewUrl
21348
+ previewUrl: attachment.previewUrl,
21349
+ fullSizeImageSrc: (_b = resourceCache === null || resourceCache === void 0 ? void 0 : resourceCache[(_a = attachment.url) !== null && _a !== void 0 ? _a : '']) !== null && _b !== void 0 ? _b : ''
21194
21350
  });
21195
21351
  }
21196
21352
  /* @conditional-compile-remove(file-sharing) */
@@ -21198,7 +21354,7 @@ const extractTeamsAttachmentsMetadata = (attachments) => {
21198
21354
  files.push({
21199
21355
  attachmentType: attachmentType,
21200
21356
  id: attachment.id,
21201
- name: (_a = attachment.name) !== null && _a !== void 0 ? _a : '',
21357
+ name: (_c = attachment.name) !== null && _c !== void 0 ? _c : '',
21202
21358
  extension: contentType !== null && contentType !== void 0 ? contentType : '',
21203
21359
  url: extractAttachmentUrl(attachment),
21204
21360
  payload: { teamsFileAttachment: 'true' }
@@ -21310,7 +21466,7 @@ const extractAttachmentsMetadata = (message) => {
21310
21466
  }
21311
21467
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21312
21468
  if ((_a = message.content) === null || _a === void 0 ? void 0 : _a.attachments) {
21313
- const teamsAttachments = extractTeamsAttachmentsMetadata((_b = message.content) === null || _b === void 0 ? void 0 : _b.attachments);
21469
+ const teamsAttachments = extractTeamsAttachmentsMetadata((_b = message.content) === null || _b === void 0 ? void 0 : _b.attachments, message.resourceCache);
21314
21470
  /* @conditional-compile-remove(file-sharing) */
21315
21471
  files = files.concat(teamsAttachments.files);
21316
21472
  inlineImages = inlineImages.concat(teamsAttachments.inlineImages);
@@ -21798,22 +21954,21 @@ class ResourceDownloadQueue {
21798
21954
  else {
21799
21955
  message = yield this.downloadAllPreviewUrls(message, operation);
21800
21956
  }
21801
- this.isActive = false;
21802
21957
  this._context.setChatMessage(threadId, message);
21803
21958
  }
21804
21959
  catch (error) {
21805
21960
  console.log('Downloading Resource error: ', error);
21806
21961
  }
21962
+ finally {
21963
+ this.isActive = false;
21964
+ }
21807
21965
  }
21808
21966
  });
21809
21967
  }
21810
21968
  downloadSingleUrl(message, resourceUrl, operation) {
21811
21969
  return __awaiter$t(this, void 0, void 0, function* () {
21812
- if (message.resourceCache === undefined) {
21813
- message.resourceCache = {};
21814
- }
21815
21970
  const blobUrl = yield operation(resourceUrl, this._credential);
21816
- message.resourceCache[resourceUrl] = blobUrl;
21971
+ message = Object.assign(Object.assign({}, message), { resourceCache: Object.assign(Object.assign({}, message.resourceCache), { [resourceUrl]: blobUrl }) });
21817
21972
  return message;
21818
21973
  });
21819
21974
  }
@@ -21938,16 +22093,18 @@ let ChatContext$1 = class ChatContext {
21938
22093
  }
21939
22094
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
21940
22095
  downloadResourceToCache(threadId, messageId, resourceUrl) {
21941
- this.modifyState((draft) => {
21942
- var _a;
21943
- const message = (_a = draft.threads[threadId]) === null || _a === void 0 ? void 0 : _a.chatMessages[messageId];
22096
+ var _a;
22097
+ return __awaiter$s(this, void 0, void 0, function* () {
22098
+ let message = (_a = this.getState().threads[threadId]) === null || _a === void 0 ? void 0 : _a.chatMessages[messageId];
21944
22099
  if (message && this._fullsizeImageQueue) {
21945
22100
  if (!message.resourceCache) {
21946
- message.resourceCache = {};
22101
+ message = Object.assign(Object.assign({}, message), { resourceCache: {} });
21947
22102
  }
21948
22103
  // Need to discuss retry logic in case of failure
21949
22104
  this._fullsizeImageQueue.addMessage(message);
21950
- this._fullsizeImageQueue.startQueue(threadId, fetchImageSource, { singleUrl: resourceUrl });
22105
+ yield this._fullsizeImageQueue.startQueue(threadId, fetchImageSource, {
22106
+ singleUrl: resourceUrl
22107
+ });
21951
22108
  }
21952
22109
  });
21953
22110
  }
@@ -23012,6 +23169,8 @@ const COMPOSITE_ONLY_ICONS = {
23012
23169
  ControlButtonCameraProhibited: React.createElement(reactIcons.VideoProhibited20Filled, null),
23013
23170
  /* @conditional-compile-remove(capabilities) */
23014
23171
  ControlButtonMicProhibited: React.createElement(reactIcons.MicProhibited20Filled, null),
23172
+ /* @conditional-compile-remove(spotlight) */
23173
+ ControlButtonExitSpotlight: React.createElement(reactIcons.VideoPersonStarOff20Filled, null),
23015
23174
  ControlBarPeopleButton: React.createElement(reactIcons.People20Regular, null),
23016
23175
  MoreDrawerMicrophones: React.createElement(reactIcons.Mic20Regular, null),
23017
23176
  MoreDrawerPeople: React.createElement(reactIcons.People20Regular, null),
@@ -23097,7 +23256,7 @@ const CallCompositeIcon = (props) => (React.createElement(react.FontIcon, Object
23097
23256
  */
23098
23257
  const CallWithChatCompositeIcon = (props) => (React.createElement(react.FontIcon, Object.assign({}, props)));
23099
23258
 
23100
- 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};
23259
+ 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 this video?",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"},exitSpotlightButtonLabel:"Exit spotlight",exitSpotlightButtonTooltip:"Exit spotlight"};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};
23101
23260
 
23102
23261
  // Copyright (c) Microsoft Corporation.
23103
23262
  // Licensed under the MIT License.
@@ -23425,19 +23584,12 @@ class ChatContext {
23425
23584
  * @private
23426
23585
  */
23427
23586
  class AzureCommunicationChatAdapter {
23428
- constructor(chatClient, chatThreadClient,
23429
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */ options) {
23430
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23431
- this.credential = undefined;
23587
+ constructor(chatClient, chatThreadClient) {
23432
23588
  this.emitter = new EventEmitter();
23433
23589
  this.bindAllPublicMethods();
23434
23590
  this.chatClient = chatClient;
23435
23591
  this.chatThreadClient = chatThreadClient;
23436
23592
  this.context = new ChatContext(chatClient.getState(), chatThreadClient.threadId);
23437
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23438
- if (options && options.credential) {
23439
- this.credential = options.credential;
23440
- }
23441
23593
  /* @conditional-compile-remove(file-sharing) */
23442
23594
  this.fileUploadAdapter = new AzureCommunicationFileUploadAdapter(this.context);
23443
23595
  const onStateChange = (clientState) => {
@@ -23483,8 +23635,6 @@ class AzureCommunicationChatAdapter {
23483
23635
  /* @conditional-compile-remove(file-sharing) */
23484
23636
  this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);
23485
23637
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23486
- this.downloadAttachment = this.downloadAttachment.bind(this); // ToDo: This method is to be removed
23487
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23488
23638
  this.downloadResourceToCache = this.downloadResourceToCache.bind(this);
23489
23639
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23490
23640
  this.removeResourceFromCache = this.removeResourceFromCache.bind(this);
@@ -23631,47 +23781,12 @@ class AzureCommunicationChatAdapter {
23631
23781
  this.fileUploadAdapter.updateFileUploadMetadata(id, metadata);
23632
23782
  }
23633
23783
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23634
- // ToDo: This method is to be removed
23635
- downloadAttachment(options) {
23636
- return __awaiter$n(this, void 0, void 0, function* () {
23637
- return this.asyncTeeErrorToEventEmitter(() => __awaiter$n(this, void 0, void 0, function* () {
23638
- if (this.credential === undefined) {
23639
- throw new ChatError('ChatThreadClient.getMessage', new Error('AccessToken is null'));
23640
- }
23641
- const accessToken = yield this.credential.getToken();
23642
- if (!accessToken) {
23643
- throw new ChatError('ChatThreadClient.getMessage', new Error('AccessToken is null'));
23644
- }
23645
- return this.downloadAuthenticatedFile(accessToken.token, options);
23646
- }));
23647
- });
23648
- }
23649
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23650
- // ToDo: This method is to be removed
23651
- downloadAuthenticatedFile(accessToken, options) {
23784
+ downloadResourceToCache(resourceDetails) {
23652
23785
  return __awaiter$n(this, void 0, void 0, function* () {
23653
- function fetchWithAuthentication(url, token) {
23654
- return __awaiter$n(this, void 0, void 0, function* () {
23655
- const headers = new Headers();
23656
- headers.append('Authorization', `Bearer ${token}`);
23657
- try {
23658
- return yield fetch(url, { headers });
23659
- }
23660
- catch (err) {
23661
- throw new ChatError('ChatThreadClient.getMessage', err);
23662
- }
23663
- });
23664
- }
23665
- const response = yield fetchWithAuthentication(options.attachmentUrl, accessToken);
23666
- const blob = yield response.blob();
23667
- return { blobUrl: URL.createObjectURL(blob) };
23786
+ this.chatClient.downloadResourceToCache(resourceDetails.threadId, resourceDetails.messageId, resourceDetails.resourceUrl);
23668
23787
  });
23669
23788
  }
23670
23789
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23671
- downloadResourceToCache(resourceDetails) {
23672
- this.chatClient.downloadResourceToCache(resourceDetails.threadId, resourceDetails.messageId, resourceDetails.resourceUrl);
23673
- }
23674
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23675
23790
  removeResourceFromCache(resourceDetails) {
23676
23791
  this.chatClient.removeResourceFromCache(resourceDetails.threadId, resourceDetails.messageId, resourceDetails.resourceUrl);
23677
23792
  }
@@ -23817,10 +23932,7 @@ const _createAzureCommunicationChatAdapterInner = (endpoint, userId, displayName
23817
23932
  }, undefined, telemetryImplementationHint);
23818
23933
  const chatThreadClient = yield chatClient.getChatThreadClient(threadId);
23819
23934
  yield chatClient.startRealtimeNotifications();
23820
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23821
- const options = { credential: credential };
23822
- const adapter = yield createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient,
23823
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */ options);
23935
+ const adapter = yield createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
23824
23936
  return adapter;
23825
23937
  });
23826
23938
  /**
@@ -23927,12 +24039,9 @@ beforeDispose) => {
23927
24039
  *
23928
24040
  * @public
23929
24041
  */
23930
- function createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient,
23931
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
23932
- options) {
24042
+ function createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient) {
23933
24043
  return __awaiter$n(this, void 0, void 0, function* () {
23934
- return new AzureCommunicationChatAdapter(chatClient, chatThreadClient,
23935
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */ options);
24044
+ return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
23936
24045
  });
23937
24046
  }
23938
24047
  const isChatError = (e) => {
@@ -24620,8 +24729,6 @@ const ChatScreen = (props) => {
24620
24729
  /* @conditional-compile-remove(file-sharing) */
24621
24730
  const [downloadErrorMessage, setDownloadErrorMessage] = React.useState('');
24622
24731
  /* @conditional-compile-remove(image-overlay) */
24623
- const [fullSizeAttachments, setFullSizeAttachments] = React.useState({});
24624
- /* @conditional-compile-remove(image-overlay) */
24625
24732
  const [overlayImageItem, setOverlayImageItem] = React.useState();
24626
24733
  /* @conditional-compile-remove(image-overlay) */
24627
24734
  const [isImageOverlayOpen, setIsImageOverlayOpen] = React.useState(false);
@@ -24642,6 +24749,34 @@ const ChatScreen = (props) => {
24642
24749
  const typingIndicatorProps = usePropsFor$2(TypingIndicator);
24643
24750
  const headerProps = useAdaptedSelector$1(getHeaderProps);
24644
24751
  const errorBarProps = usePropsFor$2(ErrorBar);
24752
+ /* @conditional-compile-remove(image-overlay) */
24753
+ React.useEffect(() => {
24754
+ var _a;
24755
+ if (overlayImageItem === undefined) {
24756
+ return;
24757
+ }
24758
+ const messages = messageThreadProps.messages.filter((message) => {
24759
+ return message.messageId === (overlayImageItem === null || overlayImageItem === void 0 ? void 0 : overlayImageItem.messageId);
24760
+ });
24761
+ if (messages.length <= 0 || messages[0].messageType !== 'chat') {
24762
+ return;
24763
+ }
24764
+ const message = messages[0];
24765
+ if (overlayImageItem.imageSrc === '' && message.inlineImages && ((_a = message.inlineImages) === null || _a === void 0 ? void 0 : _a.length) > 0) {
24766
+ const inlineImages = message.inlineImages.filter((attachment) => {
24767
+ return attachment.id === (overlayImageItem === null || overlayImageItem === void 0 ? void 0 : overlayImageItem.attachmentId);
24768
+ });
24769
+ if (inlineImages.length <= 0 ||
24770
+ inlineImages[0].fullSizeImageSrc === undefined ||
24771
+ inlineImages[0].fullSizeImageSrc === '' ||
24772
+ overlayImageItem.imageSrc === inlineImages[0].fullSizeImageSrc) {
24773
+ return;
24774
+ }
24775
+ setOverlayImageItem(Object.assign(Object.assign({}, overlayImageItem), { imageSrc: inlineImages[0].fullSizeImageSrc }));
24776
+ }
24777
+ // Disable eslint because we are using the overlayImageItem in this effect but don't want to have it as a dependency, as it will cause an infinite loop.
24778
+ // eslint-disable-next-line react-hooks/exhaustive-deps
24779
+ }, [messageThreadProps.messages]);
24645
24780
  const onRenderAvatarCallback = React.useCallback((userId, defaultOptions) => {
24646
24781
  return (React.createElement(AvatarPersona, Object.assign({ userId: userId, hidePersonaDetails: true }, defaultOptions, { dataProvider: onFetchAvatarPersonaData })));
24647
24782
  }, [onFetchAvatarPersonaData]);
@@ -24695,28 +24830,24 @@ const ChatScreen = (props) => {
24695
24830
  const overlayImage = {
24696
24831
  title: chatMessage.senderDisplayName || '',
24697
24832
  titleIcon: titleIcon,
24698
- downloadFilename: attachment.id,
24699
- imageSrc: ''
24833
+ attachmentId: attachment.id,
24834
+ imageSrc: attachment.fullSizeImageSrc || '',
24835
+ messageId: messageId
24700
24836
  };
24701
24837
  setIsImageOverlayOpen(true);
24702
- if (attachment.id in fullSizeAttachments) {
24703
- setOverlayImageItem(Object.assign(Object.assign({}, overlayImage), { imageSrc: fullSizeAttachments[attachment.id] }));
24704
- return;
24705
- }
24838
+ setOverlayImageItem(overlayImage);
24706
24839
  if (attachment.attachmentType === 'inlineImage' && attachment.url) {
24707
- // ToDo: This method is to be removed
24708
- const blob = yield adapter.downloadAttachment({ attachmentUrl: attachment.url });
24709
- if (blob) {
24710
- const blobUrl = blob.blobUrl;
24711
- setFullSizeAttachments((prev) => (Object.assign(Object.assign({}, prev), { [attachment.id]: blobUrl })));
24712
- setOverlayImageItem(Object.assign(Object.assign({}, overlayImage), { imageSrc: blobUrl }));
24713
- }
24840
+ adapter.downloadResourceToCache({
24841
+ threadId: adapter.getState().thread.threadId,
24842
+ messageId: messageId,
24843
+ resourceUrl: attachment.url
24844
+ });
24714
24845
  }
24715
- }), [adapter, fullSizeAttachments, messageThreadProps.messages, onRenderAvatarCallback]);
24846
+ }), [adapter, messageThreadProps, onRenderAvatarCallback]);
24716
24847
  /* @conditional-compile-remove(image-overlay) */
24717
24848
  const inlineImageOptions = {
24718
24849
  onRenderInlineImage: (inlineImage, defaultOnRender) => {
24719
- return (React.createElement("span", { onClick: () => onInlineImageClicked(inlineImage.imgAttrs.id || '', inlineImage.messageId), tabIndex: 0, role: "button", onKeyDown: (e) => {
24850
+ return (React.createElement("span", { key: inlineImage.imgAttrs.id, onClick: () => onInlineImageClicked(inlineImage.imgAttrs.id || '', inlineImage.messageId), tabIndex: 0, role: "button", onKeyDown: (e) => {
24720
24851
  if (e.key === 'Enter') {
24721
24852
  onInlineImageClicked(inlineImage.imgAttrs.id || '', inlineImage.messageId);
24722
24853
  }
@@ -24736,7 +24867,7 @@ const ChatScreen = (props) => {
24736
24867
  const a = document.createElement('a');
24737
24868
  // Set the href and download attributes for the anchor element
24738
24869
  a.href = imageSrc;
24739
- a.download = (overlayImageItem === null || overlayImageItem === void 0 ? void 0 : overlayImageItem.downloadFilename) || '';
24870
+ a.download = (overlayImageItem === null || overlayImageItem === void 0 ? void 0 : overlayImageItem.attachmentId) || '';
24740
24871
  a.rel = 'noopener noreferrer';
24741
24872
  a.target = '_blank';
24742
24873
  // Programmatically click the anchor element to trigger the download
@@ -24744,7 +24875,7 @@ const ChatScreen = (props) => {
24744
24875
  a.click();
24745
24876
  document.body.removeChild(a);
24746
24877
  }
24747
- }, [overlayImageItem === null || overlayImageItem === void 0 ? void 0 : overlayImageItem.downloadFilename]);
24878
+ }, [overlayImageItem === null || overlayImageItem === void 0 ? void 0 : overlayImageItem.attachmentId]);
24748
24879
  const AttachFileButton = React.useCallback(() => {
24749
24880
  if (!(fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.uploadHandler)) {
24750
24881
  return null;
@@ -25440,149 +25571,175 @@ var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments,
25440
25571
  const useHandlers = (
25441
25572
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
25442
25573
  _component) => {
25443
- return createCompositeHandlers(useAdapter());
25444
- };
25445
- const createCompositeHandlers = memoizeOne((adapter) => ({
25446
- onCreateLocalStreamView: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
25447
- return yield adapter.createStreamView(undefined, options);
25448
- }),
25449
- onCreateRemoteStreamView: (userId, options) => __awaiter$j(void 0, void 0, void 0, function* () {
25450
- return yield adapter.createStreamView(userId, options);
25451
- }),
25452
- onHangUp: (forEveryone) => __awaiter$j(void 0, void 0, void 0, function* () {
25453
- yield adapter.leaveCall(forEveryone);
25454
- }),
25455
- /* @conditional-compile-remove(PSTN-calls) */
25456
- onToggleHold: () => __awaiter$j(void 0, void 0, void 0, function* () {
25457
- var _a;
25458
- return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();
25459
- }),
25460
- /* @conditional-compile-remove(PSTN-calls) */
25461
- onAddParticipant: (participant, options) => __awaiter$j(void 0, void 0, void 0, function* () {
25462
- return yield adapter.addParticipant(participant, options);
25463
- }),
25464
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(dtmf-dialer) */
25465
- onSendDtmfTone: (dtmfTone) => __awaiter$j(void 0, void 0, void 0, function* () {
25466
- yield adapter.sendDtmfTone(dtmfTone);
25467
- }),
25468
- onRemoveParticipant: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25469
- yield adapter.removeParticipant(userId);
25470
- }),
25471
- /* @conditional-compile-remove(raise-hand) */
25472
- onRaiseHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
25473
- yield adapter.raiseHand();
25474
- }),
25475
- /* @conditional-compile-remove(raise-hand) */
25476
- onLowerHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
25477
- yield adapter.lowerHand();
25478
- }),
25479
- /* @conditional-compile-remove(raise-hand) */
25480
- onToggleRaiseHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
25481
- var _b;
25482
- ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.raiseHand.localParticipantRaisedHand)
25483
- ? yield adapter.lowerHand()
25484
- : yield adapter.raiseHand();
25485
- }),
25486
- /* @conditional-compile-remove(reaction) */
25487
- onReactionClicked: (reaction) => __awaiter$j(void 0, void 0, void 0, function* () {
25488
- yield adapter.onReactionClicked(reaction);
25489
- }),
25490
- onSelectCamera: (deviceInfo, options) => __awaiter$j(void 0, void 0, void 0, function* () {
25491
- yield adapter.setCamera(deviceInfo, options);
25492
- }),
25493
- onSelectMicrophone: (deviceInfo) => __awaiter$j(void 0, void 0, void 0, function* () {
25494
- yield adapter.setMicrophone(deviceInfo);
25495
- }),
25496
- onSelectSpeaker: (deviceInfo) => __awaiter$j(void 0, void 0, void 0, function* () {
25497
- yield adapter.setSpeaker(deviceInfo);
25498
- }),
25499
- onStartCall: (participants, options) => {
25500
- const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
25501
- return adapter.startCall(rawIds, options);
25502
- },
25503
- onStartScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
25504
- yield adapter.startScreenShare();
25505
- }),
25506
- onStopScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
25507
- yield adapter.stopScreenShare();
25508
- }),
25509
- onToggleCamera: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
25510
- isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
25511
- }),
25512
- onToggleMicrophone: () => __awaiter$j(void 0, void 0, void 0, function* () {
25513
- var _c;
25514
- return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isMuted) ? yield adapter.unmute() : yield adapter.mute();
25515
- }),
25516
- onToggleScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
25517
- var _d;
25518
- return ((_d = adapter.getState().call) === null || _d === void 0 ? void 0 : _d.isScreenSharingOn)
25519
- ? yield adapter.stopScreenShare()
25520
- : yield adapter.startScreenShare();
25521
- }),
25522
- onStartLocalVideo: () => __awaiter$j(void 0, void 0, void 0, function* () {
25523
- if (adapter.getState().call) {
25524
- return adapter.startCamera();
25525
- }
25526
- }),
25527
- onDisposeLocalStreamView: () => __awaiter$j(void 0, void 0, void 0, function* () {
25528
- return adapter.disposeLocalVideoStreamView();
25529
- }),
25530
- onDisposeRemoteStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25531
- return adapter.disposeStreamView(userId);
25532
- }),
25533
- onDisposeRemoteScreenShareStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25534
- return adapter.disposeScreenShareStreamView(userId);
25535
- }),
25536
- onDisposeRemoteVideoStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25537
- return adapter.disposeRemoteVideoStreamView(userId);
25538
- }),
25539
- /* @conditional-compile-remove(call-readiness) */
25540
- askDevicePermission: (constrain) => __awaiter$j(void 0, void 0, void 0, function* () {
25541
- return adapter.askDevicePermission(constrain);
25542
- }),
25543
- /* @conditional-compile-remove(video-background-effects) */
25544
- onRemoveVideoBackgroundEffects: () => __awaiter$j(void 0, void 0, void 0, function* () {
25545
- return yield adapter.stopVideoBackgroundEffects();
25546
- }),
25547
- /* @conditional-compile-remove(video-background-effects) */
25548
- onBlurVideoBackground: (backgroundBlurConfig) => __awaiter$j(void 0, void 0, void 0, function* () {
25549
- const blurConfig = Object.assign({ effectName: 'blur' }, backgroundBlurConfig);
25550
- return yield adapter.startVideoBackgroundEffect(blurConfig);
25551
- }),
25552
- /* @conditional-compile-remove(video-background-effects) */
25553
- onReplaceVideoBackground: (backgroundReplacementConfig) => __awaiter$j(void 0, void 0, void 0, function* () {
25554
- const replacementConfig = Object.assign({ effectName: 'replacement' }, backgroundReplacementConfig);
25555
- return yield adapter.startVideoBackgroundEffect(replacementConfig);
25556
- }),
25557
- /* @conditional-compile-remove(close-captions) */
25558
- onStartCaptions: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
25559
- yield adapter.startCaptions(options);
25560
- }),
25561
- /* @conditional-compile-remove(close-captions) */
25562
- onStopCaptions: () => __awaiter$j(void 0, void 0, void 0, function* () {
25563
- yield adapter.stopCaptions();
25564
- }),
25565
- /* @conditional-compile-remove(close-captions) */
25566
- onSetSpokenLanguage: (language) => __awaiter$j(void 0, void 0, void 0, function* () {
25567
- yield adapter.setSpokenLanguage(language);
25568
- }),
25569
- /* @conditional-compile-remove(close-captions) */
25570
- onSetCaptionLanguage: (language) => __awaiter$j(void 0, void 0, void 0, function* () {
25571
- yield adapter.setCaptionLanguage(language);
25572
- }),
25573
- /* @conditional-compile-remove(end-of-call-survey) */
25574
- onSubmitSurvey: (survey) => __awaiter$j(void 0, void 0, void 0, function* () {
25575
- return yield adapter.submitSurvey(survey);
25576
- }),
25574
+ var _a, _b;
25575
+ const adapter = useAdapter();
25576
+ const compositeHandlers = createCompositeHandlers(adapter);
25577
25577
  /* @conditional-compile-remove(spotlight) */
25578
- onStartSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25579
- yield adapter.startSpotlight(userIds);
25580
- }),
25578
+ const canSpotlight = (_b = (_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.capabilitiesFeature) === null || _b === void 0 ? void 0 : _b.capabilities.spotlightParticipant.isPresent;
25581
25579
  /* @conditional-compile-remove(spotlight) */
25582
- onStopSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25583
- yield adapter.stopSpotlight(userIds);
25584
- })
25585
- }));
25580
+ return Object.assign(Object.assign({}, compositeHandlers), (canSpotlight
25581
+ ? {}
25582
+ : { onStartLocalSpotlight: undefined, onStartRemoteSpotlight: undefined, onStopRemoteSpotlight: undefined }));
25583
+ };
25584
+ const createCompositeHandlers = memoizeOne((adapter) => {
25585
+ return {
25586
+ onCreateLocalStreamView: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
25587
+ return yield adapter.createStreamView(undefined, options);
25588
+ }),
25589
+ onCreateRemoteStreamView: (userId, options) => __awaiter$j(void 0, void 0, void 0, function* () {
25590
+ return yield adapter.createStreamView(userId, options);
25591
+ }),
25592
+ onHangUp: (forEveryone) => __awaiter$j(void 0, void 0, void 0, function* () {
25593
+ yield adapter.leaveCall(forEveryone);
25594
+ }),
25595
+ /* @conditional-compile-remove(PSTN-calls) */
25596
+ onToggleHold: () => __awaiter$j(void 0, void 0, void 0, function* () {
25597
+ var _a;
25598
+ return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();
25599
+ }),
25600
+ /* @conditional-compile-remove(PSTN-calls) */
25601
+ onAddParticipant: (participant, options) => __awaiter$j(void 0, void 0, void 0, function* () {
25602
+ return yield adapter.addParticipant(participant, options);
25603
+ }),
25604
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(dtmf-dialer) */
25605
+ onSendDtmfTone: (dtmfTone) => __awaiter$j(void 0, void 0, void 0, function* () {
25606
+ yield adapter.sendDtmfTone(dtmfTone);
25607
+ }),
25608
+ onRemoveParticipant: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25609
+ yield adapter.removeParticipant(userId);
25610
+ }),
25611
+ /* @conditional-compile-remove(raise-hand) */
25612
+ onRaiseHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
25613
+ yield adapter.raiseHand();
25614
+ }),
25615
+ /* @conditional-compile-remove(raise-hand) */
25616
+ onLowerHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
25617
+ yield adapter.lowerHand();
25618
+ }),
25619
+ /* @conditional-compile-remove(raise-hand) */
25620
+ onToggleRaiseHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
25621
+ var _b;
25622
+ ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.raiseHand.localParticipantRaisedHand)
25623
+ ? yield adapter.lowerHand()
25624
+ : yield adapter.raiseHand();
25625
+ }),
25626
+ /* @conditional-compile-remove(reaction) */
25627
+ onReactionClicked: (reaction) => __awaiter$j(void 0, void 0, void 0, function* () {
25628
+ yield adapter.onReactionClicked(reaction);
25629
+ }),
25630
+ onSelectCamera: (deviceInfo, options) => __awaiter$j(void 0, void 0, void 0, function* () {
25631
+ yield adapter.setCamera(deviceInfo, options);
25632
+ }),
25633
+ onSelectMicrophone: (deviceInfo) => __awaiter$j(void 0, void 0, void 0, function* () {
25634
+ yield adapter.setMicrophone(deviceInfo);
25635
+ }),
25636
+ onSelectSpeaker: (deviceInfo) => __awaiter$j(void 0, void 0, void 0, function* () {
25637
+ yield adapter.setSpeaker(deviceInfo);
25638
+ }),
25639
+ onStartCall: (participants, options) => {
25640
+ const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
25641
+ return adapter.startCall(rawIds, options);
25642
+ },
25643
+ onStartScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
25644
+ yield adapter.startScreenShare();
25645
+ }),
25646
+ onStopScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
25647
+ yield adapter.stopScreenShare();
25648
+ }),
25649
+ onToggleCamera: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
25650
+ isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
25651
+ }),
25652
+ onToggleMicrophone: () => __awaiter$j(void 0, void 0, void 0, function* () {
25653
+ var _c;
25654
+ return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isMuted) ? yield adapter.unmute() : yield adapter.mute();
25655
+ }),
25656
+ onToggleScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
25657
+ var _d;
25658
+ return ((_d = adapter.getState().call) === null || _d === void 0 ? void 0 : _d.isScreenSharingOn)
25659
+ ? yield adapter.stopScreenShare()
25660
+ : yield adapter.startScreenShare();
25661
+ }),
25662
+ onStartLocalVideo: () => __awaiter$j(void 0, void 0, void 0, function* () {
25663
+ if (adapter.getState().call) {
25664
+ return adapter.startCamera();
25665
+ }
25666
+ }),
25667
+ onDisposeLocalStreamView: () => __awaiter$j(void 0, void 0, void 0, function* () {
25668
+ return adapter.disposeLocalVideoStreamView();
25669
+ }),
25670
+ onDisposeRemoteStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25671
+ return adapter.disposeStreamView(userId);
25672
+ }),
25673
+ onDisposeRemoteScreenShareStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25674
+ return adapter.disposeScreenShareStreamView(userId);
25675
+ }),
25676
+ onDisposeRemoteVideoStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25677
+ return adapter.disposeRemoteVideoStreamView(userId);
25678
+ }),
25679
+ /* @conditional-compile-remove(call-readiness) */
25680
+ askDevicePermission: (constrain) => __awaiter$j(void 0, void 0, void 0, function* () {
25681
+ return adapter.askDevicePermission(constrain);
25682
+ }),
25683
+ /* @conditional-compile-remove(video-background-effects) */
25684
+ onRemoveVideoBackgroundEffects: () => __awaiter$j(void 0, void 0, void 0, function* () {
25685
+ return yield adapter.stopVideoBackgroundEffects();
25686
+ }),
25687
+ /* @conditional-compile-remove(video-background-effects) */
25688
+ onBlurVideoBackground: (backgroundBlurConfig) => __awaiter$j(void 0, void 0, void 0, function* () {
25689
+ const blurConfig = Object.assign({ effectName: 'blur' }, backgroundBlurConfig);
25690
+ return yield adapter.startVideoBackgroundEffect(blurConfig);
25691
+ }),
25692
+ /* @conditional-compile-remove(video-background-effects) */
25693
+ onReplaceVideoBackground: (backgroundReplacementConfig) => __awaiter$j(void 0, void 0, void 0, function* () {
25694
+ const replacementConfig = Object.assign({ effectName: 'replacement' }, backgroundReplacementConfig);
25695
+ return yield adapter.startVideoBackgroundEffect(replacementConfig);
25696
+ }),
25697
+ /* @conditional-compile-remove(close-captions) */
25698
+ onStartCaptions: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
25699
+ yield adapter.startCaptions(options);
25700
+ }),
25701
+ /* @conditional-compile-remove(close-captions) */
25702
+ onStopCaptions: () => __awaiter$j(void 0, void 0, void 0, function* () {
25703
+ yield adapter.stopCaptions();
25704
+ }),
25705
+ /* @conditional-compile-remove(close-captions) */
25706
+ onSetSpokenLanguage: (language) => __awaiter$j(void 0, void 0, void 0, function* () {
25707
+ yield adapter.setSpokenLanguage(language);
25708
+ }),
25709
+ /* @conditional-compile-remove(close-captions) */
25710
+ onSetCaptionLanguage: (language) => __awaiter$j(void 0, void 0, void 0, function* () {
25711
+ yield adapter.setCaptionLanguage(language);
25712
+ }),
25713
+ /* @conditional-compile-remove(end-of-call-survey) */
25714
+ onSubmitSurvey: (survey) => __awaiter$j(void 0, void 0, void 0, function* () {
25715
+ return yield adapter.submitSurvey(survey);
25716
+ }),
25717
+ /* @conditional-compile-remove(spotlight) */
25718
+ onStartSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25719
+ yield adapter.startSpotlight(userIds);
25720
+ }),
25721
+ /* @conditional-compile-remove(spotlight) */
25722
+ onStopSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25723
+ yield adapter.stopSpotlight(userIds);
25724
+ }),
25725
+ /* @conditional-compile-remove(spotlight) */
25726
+ onStartLocalSpotlight: () => __awaiter$j(void 0, void 0, void 0, function* () {
25727
+ yield adapter.startSpotlight();
25728
+ }),
25729
+ /* @conditional-compile-remove(spotlight) */
25730
+ onStopLocalSpotlight: () => __awaiter$j(void 0, void 0, void 0, function* () {
25731
+ yield adapter.stopSpotlight();
25732
+ }),
25733
+ /* @conditional-compile-remove(spotlight) */
25734
+ onStartRemoteSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25735
+ yield adapter.startSpotlight(userIds);
25736
+ }),
25737
+ /* @conditional-compile-remove(spotlight) */
25738
+ onStopRemoteSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25739
+ yield adapter.stopSpotlight(userIds);
25740
+ })
25741
+ };
25742
+ });
25586
25743
 
25587
25744
  // Copyright (c) Microsoft Corporation.
25588
25745
  // Licensed under the MIT License.
@@ -27290,6 +27447,17 @@ const DtmfDialpadButton = (props) => {
27290
27447
  return (React.createElement(ControlBarButton, Object.assign({}, props, { strings: strings ? strings : dialpadButtonStrings, showLabel: displayType !== 'compact', labelKey: 'dtmfDialpadButtonLabelKey', onRenderOnIcon: onRenderOnIcon !== null && onRenderOnIcon !== void 0 ? onRenderOnIcon : icon, onRenderOffIcon: onRenderOffIcon !== null && onRenderOffIcon !== void 0 ? onRenderOffIcon : icon, onClick: onClick, styles: styles })));
27291
27448
  };
27292
27449
 
27450
+ // Copyright (c) Microsoft Corporation.
27451
+ // Licensed under the MIT License.
27452
+ /* @conditional-compile-remove(spotlight) */
27453
+ /* @conditional-compile-remove(spotlight) */
27454
+ /**
27455
+ * @private
27456
+ */
27457
+ const ExitSpotlightButton = (props) => {
27458
+ return (React.createElement(ControlBarButton, Object.assign({ "data-ui-id": 'call-composite-exit-spotlight-button', labelKey: 'exitSpotlightButtonLabelKey', showLabel: props.displayType !== 'compact', onRenderIcon: () => React.createElement(_HighContrastAwareIcon, { iconName: 'StopSpotlightContextualMenuItem' }), onClick: props.onClick }, props)));
27459
+ };
27460
+
27293
27461
  // Copyright (c) Microsoft Corporation.
27294
27462
  // Licensed under the MIT License.
27295
27463
  const inferCommonCallControlOptions = (mobileView, commonCallControlOptions) => {
@@ -27368,6 +27536,13 @@ const CommonCallControlBar = (props) => {
27368
27536
  label: callWithChatStrings.moreDrawerButtonLabel,
27369
27537
  tooltipContent: callWithChatStrings.moreDrawerButtonTooltip
27370
27538
  }), [callWithChatStrings]);
27539
+ /* @conditional-compile-remove(spotlight) */
27540
+ const callStrings = useLocale().strings.call;
27541
+ /* @conditional-compile-remove(spotlight) */
27542
+ const exitSpotlightButtonStrings = React.useMemo(() => ({
27543
+ label: callStrings.exitSpotlightButtonLabel,
27544
+ tooltipContent: callStrings.exitSpotlightButtonTooltip
27545
+ }), [callStrings]);
27371
27546
  const centerContainerStyles = React.useMemo(() => {
27372
27547
  const styles = !props.mobileView ? desktopControlBarStyles : {};
27373
27548
  return react.mergeStyleSets(styles, {
@@ -27398,6 +27573,8 @@ const CommonCallControlBar = (props) => {
27398
27573
  const screenShareButtonIsEnabled = isEnabled$1(options === null || options === void 0 ? void 0 : options.screenShareButton);
27399
27574
  const microphoneButtonIsEnabled = isEnabled$1(options === null || options === void 0 ? void 0 : options.microphoneButton);
27400
27575
  const cameraButtonIsEnabled = isEnabled$1(options === null || options === void 0 ? void 0 : options.cameraButton);
27576
+ /* @conditional-compile-remove(spotlight) */
27577
+ const showExitSpotlightButton = (options === null || options === void 0 ? void 0 : options.exitSpotlightButton) !== false;
27401
27578
  const showDesktopMoreButton =
27402
27579
  /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.moreButton) &&
27403
27580
  (/*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.holdButton) ||
@@ -27444,6 +27621,8 @@ const CommonCallControlBar = (props) => {
27444
27621
  props.onSetDialpadPage();
27445
27622
  }
27446
27623
  } })),
27624
+ /* @conditional-compile-remove(spotlight) */ showExitSpotlightButton &&
27625
+ props.onStopLocalSpotlight && (React.createElement(ExitSpotlightButton, { displayType: options.displayType, onClick: props.onStopLocalSpotlight, styles: commonButtonStyles, strings: exitSpotlightButtonStrings })),
27447
27626
  screenShareButtonIsEnabled && (React.createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles,
27448
27627
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
27449
27628
  disabled: props.disableButtonsForHoldScreen || isDisabled$4(options.screenShareButton) })), (_b = customButtons['primary']) === null || _b === void 0 ? void 0 :
@@ -28891,11 +29070,13 @@ const usePeoplePane = (props) => {
28891
29070
  /* @conditional-compile-remove(spotlight) */
28892
29071
  spotlightedParticipantUserIds,
28893
29072
  /* @conditional-compile-remove(spotlight) */
28894
- onStartSpotlight,
29073
+ onStartLocalSpotlight,
28895
29074
  /* @conditional-compile-remove(spotlight) */
28896
- onStopSpotlight,
29075
+ onStopLocalSpotlight,
29076
+ /* @conditional-compile-remove(spotlight) */
29077
+ onStartRemoteSpotlight,
28897
29078
  /* @conditional-compile-remove(spotlight) */
28898
- ableToSpotlight,
29079
+ onStopRemoteSpotlight,
28899
29080
  /* @conditional-compile-remove(spotlight) */
28900
29081
  maxParticipantsToSpotlight } = props;
28901
29082
  const closePane = React.useCallback(() => {
@@ -28909,17 +29090,23 @@ const usePeoplePane = (props) => {
28909
29090
  const onFetchParticipantMenuItemsForCallComposite = React.useCallback((participantId, myUserId, defaultMenuItems) => {
28910
29091
  const _defaultMenuItems = defaultMenuItems !== null && defaultMenuItems !== void 0 ? defaultMenuItems : [];
28911
29092
  const isSpotlighted = spotlightedParticipantUserIds === null || spotlightedParticipantUserIds === void 0 ? void 0 : spotlightedParticipantUserIds.find((p) => p === participantId);
29093
+ const isMe = myUserId === participantId;
28912
29094
  if (isSpotlighted) {
28913
- const stopSpotlightMenuText = myUserId === participantId
29095
+ const stopSpotlightMenuText = isMe
28914
29096
  ? localeStrings.stopSpotlightOnSelfParticipantListMenuLabel
28915
29097
  : localeStrings.stopSpotlightParticipantListMenuLabel;
28916
- if (onStopSpotlight && stopSpotlightMenuText && (ableToSpotlight || myUserId === participantId)) {
29098
+ const onStopSpotlight = isMe
29099
+ ? onStopLocalSpotlight
29100
+ : onStopRemoteSpotlight
29101
+ ? () => {
29102
+ onStopRemoteSpotlight([participantId]);
29103
+ }
29104
+ : undefined;
29105
+ if (onStopSpotlight && stopSpotlightMenuText) {
28917
29106
  _defaultMenuItems.push({
28918
29107
  key: 'stop-spotlight',
28919
29108
  text: stopSpotlightMenuText,
28920
- onClick: () => {
28921
- onStopSpotlight === null || onStopSpotlight === void 0 ? void 0 : onStopSpotlight([participantId]);
28922
- },
29109
+ onClick: onStopSpotlight,
28923
29110
  iconProps: {
28924
29111
  iconName: 'StopSpotlightContextualMenuItem',
28925
29112
  styles: { root: { lineHeight: 0 } }
@@ -28937,13 +29124,18 @@ const usePeoplePane = (props) => {
28937
29124
  ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight
28938
29125
  : false
28939
29126
  : false;
28940
- if (onStartSpotlight && startSpotlightMenuText && ableToSpotlight) {
29127
+ const onStartSpotlight = isMe
29128
+ ? onStartLocalSpotlight
29129
+ : onStartRemoteSpotlight
29130
+ ? () => {
29131
+ onStartRemoteSpotlight([participantId]);
29132
+ }
29133
+ : undefined;
29134
+ if (onStartSpotlight && startSpotlightMenuText) {
28941
29135
  _defaultMenuItems.push({
28942
29136
  key: 'start-spotlight',
28943
29137
  text: startSpotlightMenuText,
28944
- onClick: () => {
28945
- onStartSpotlight === null || onStartSpotlight === void 0 ? void 0 : onStartSpotlight([participantId]);
28946
- },
29138
+ onClick: onStartSpotlight,
28947
29139
  iconProps: {
28948
29140
  iconName: 'StartSpotlightContextualMenuItem',
28949
29141
  styles: { root: { lineHeight: 0 } }
@@ -28961,15 +29153,16 @@ const usePeoplePane = (props) => {
28961
29153
  : _defaultMenuItems;
28962
29154
  }, [
28963
29155
  spotlightedParticipantUserIds,
28964
- onStartSpotlight,
28965
- onStopSpotlight,
29156
+ onStartLocalSpotlight,
29157
+ onStopLocalSpotlight,
29158
+ onStartRemoteSpotlight,
29159
+ onStopRemoteSpotlight,
28966
29160
  onFetchParticipantMenuItems,
28967
29161
  localeStrings.stopSpotlightParticipantListMenuLabel,
28968
29162
  localeStrings.stopSpotlightOnSelfParticipantListMenuLabel,
28969
29163
  localeStrings.addSpotlightParticipantListMenuLabel,
28970
29164
  localeStrings.startSpotlightParticipantListMenuLabel,
28971
29165
  localeStrings.spotlightLimitReachedParticipantListMenuTitle,
28972
- ableToSpotlight,
28973
29166
  maxParticipantsToSpotlight
28974
29167
  ]);
28975
29168
  let _onFetchParticipantMenuItems = onFetchParticipantMenuItems;
@@ -29684,31 +29877,94 @@ var __awaiter$d = (window && window.__awaiter) || function (thisArg, _arguments,
29684
29877
  /**
29685
29878
  * @internal
29686
29879
  */
29687
- const useSpotlightCallbacksWithPrompt = (onStartSpotlight, onStopSpotlight, setIsPromptOpen, setPromptProps) => {
29688
- const myUserId = toFlatCommunicationIdentifier(useAdapter().getState().userId);
29880
+ const useLocalSpotlightCallbacksWithPrompt = (onStartLocalSpotlight, onStopLocalSpotlight, setIsPromptOpen, setPromptProps) => {
29881
+ const strings = useLocale().strings.call;
29882
+ return React.useMemo(() => {
29883
+ if (!setIsPromptOpen || !setPromptProps) {
29884
+ return {
29885
+ onStartLocalSpotlightWithPrompt: onStartLocalSpotlight,
29886
+ onStopLocalSpotlightWithPrompt: onStopLocalSpotlight
29887
+ };
29888
+ }
29889
+ return {
29890
+ onStartLocalSpotlightWithPrompt: onStartLocalSpotlight
29891
+ ? getStartLocalSpotlightWithPromptCallback(onStartLocalSpotlight, setIsPromptOpen, setPromptProps, strings)
29892
+ : undefined,
29893
+ onStopLocalSpotlightWithPrompt: onStopLocalSpotlight
29894
+ ? getStopLocalSpotlightWithPromptCallback(onStopLocalSpotlight, setIsPromptOpen, setPromptProps, strings)
29895
+ : undefined
29896
+ };
29897
+ }, [onStartLocalSpotlight, onStopLocalSpotlight, setIsPromptOpen, setPromptProps, strings]);
29898
+ };
29899
+ /* @conditional-compile-remove(spotlight) */
29900
+ const getStartLocalSpotlightWithPromptCallback = (onStartSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29901
+ return () => __awaiter$d(void 0, void 0, void 0, function* () {
29902
+ setPromptProps({
29903
+ heading: strings.spotlightPrompt.startSpotlightHeading,
29904
+ text: strings.spotlightPrompt.startSpotlightOnSelfText,
29905
+ confirmButtonLabel: strings.spotlightPrompt.startSpotlightConfirmButtonLabel,
29906
+ cancelButtonLabel: strings.spotlightPrompt.startSpotlightCancelButtonLabel,
29907
+ onConfirm: () => {
29908
+ onStartSpotlight();
29909
+ setIsPromptOpen(false);
29910
+ },
29911
+ onCancel: () => setIsPromptOpen(false)
29912
+ });
29913
+ setIsPromptOpen(true);
29914
+ });
29915
+ };
29916
+ /* @conditional-compile-remove(spotlight) */
29917
+ const getStopLocalSpotlightWithPromptCallback = (onStopSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29918
+ return (userIds) => __awaiter$d(void 0, void 0, void 0, function* () {
29919
+ if (userIds && userIds.length > 1) {
29920
+ onStopSpotlight(userIds);
29921
+ }
29922
+ setPromptProps({
29923
+ heading: strings.spotlightPrompt.stopSpotlightOnSelfHeading,
29924
+ text: strings.spotlightPrompt.stopSpotlightOnSelfText,
29925
+ confirmButtonLabel: strings.spotlightPrompt.stopSpotlightOnSelfConfirmButtonLabel,
29926
+ cancelButtonLabel: strings.spotlightPrompt.stopSpotlightCancelButtonLabel,
29927
+ onConfirm: () => {
29928
+ onStopSpotlight(userIds);
29929
+ setIsPromptOpen(false);
29930
+ },
29931
+ onCancel: () => setIsPromptOpen(false)
29932
+ });
29933
+ setIsPromptOpen(true);
29934
+ });
29935
+ };
29936
+ /* @conditional-compile-remove(spotlight) */
29937
+ /**
29938
+ * @internal
29939
+ */
29940
+ const useRemoteSpotlightCallbacksWithPrompt = (onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps) => {
29689
29941
  const strings = useLocale().strings.call;
29690
29942
  return React.useMemo(() => {
29691
29943
  if (!setIsPromptOpen || !setPromptProps) {
29692
- return { onStartSpotlightWithPrompt: onStartSpotlight, onStopSpotlightWithPrompt: onStopSpotlight };
29944
+ return {
29945
+ onStartRemoteSpotlightWithPrompt: onStartRemoteSpotlight,
29946
+ onStopRemoteSpotlightWithPrompt: onStopRemoteSpotlight
29947
+ };
29693
29948
  }
29694
29949
  return {
29695
- onStartSpotlightWithPrompt: getStartSpotlightWithPromptCallback(myUserId, onStartSpotlight, setIsPromptOpen, setPromptProps, strings),
29696
- onStopSpotlightWithPrompt: getStopSpotlightWithPromptCallback(myUserId, onStopSpotlight, setIsPromptOpen, setPromptProps, strings)
29950
+ onStartRemoteSpotlightWithPrompt: onStartRemoteSpotlight
29951
+ ? getStartRemoteSpotlightWithPromptCallback(onStartRemoteSpotlight, setIsPromptOpen, setPromptProps, strings)
29952
+ : undefined,
29953
+ onStopRemoteSpotlightWithPrompt: onStopRemoteSpotlight
29954
+ ? getStopRemoteSpotlightWithPromptCallback(onStopRemoteSpotlight, setIsPromptOpen, setPromptProps, strings)
29955
+ : undefined
29697
29956
  };
29698
- }, [myUserId, onStartSpotlight, onStopSpotlight, setIsPromptOpen, setPromptProps, strings]);
29957
+ }, [onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps, strings]);
29699
29958
  };
29700
29959
  /* @conditional-compile-remove(spotlight) */
29701
- const getStartSpotlightWithPromptCallback = (myUserId, onStartSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29960
+ const getStartRemoteSpotlightWithPromptCallback = (onStartSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29702
29961
  return (userIds) => __awaiter$d(void 0, void 0, void 0, function* () {
29703
29962
  if (userIds && userIds.length > 1) {
29704
29963
  onStartSpotlight(userIds);
29705
29964
  }
29706
- const startSpotlightPromptText = userIds === undefined || userIds[0] === myUserId
29707
- ? strings.spotlightPrompt.startSpotlightOnSelfText
29708
- : strings.spotlightPrompt.startSpotlightText;
29709
29965
  setPromptProps({
29710
29966
  heading: strings.spotlightPrompt.startSpotlightHeading,
29711
- text: startSpotlightPromptText,
29967
+ text: strings.spotlightPrompt.startSpotlightText,
29712
29968
  confirmButtonLabel: strings.spotlightPrompt.startSpotlightConfirmButtonLabel,
29713
29969
  cancelButtonLabel: strings.spotlightPrompt.startSpotlightCancelButtonLabel,
29714
29970
  onConfirm: () => {
@@ -29721,24 +29977,15 @@ const getStartSpotlightWithPromptCallback = (myUserId, onStartSpotlight, setIsPr
29721
29977
  });
29722
29978
  };
29723
29979
  /* @conditional-compile-remove(spotlight) */
29724
- const getStopSpotlightWithPromptCallback = (myUserId, onStopSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29980
+ const getStopRemoteSpotlightWithPromptCallback = (onStopSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29725
29981
  return (userIds) => __awaiter$d(void 0, void 0, void 0, function* () {
29726
29982
  if (userIds && userIds.length > 1) {
29727
29983
  onStopSpotlight(userIds);
29728
29984
  }
29729
- const stopSpotlightPromptHeading = userIds === undefined || userIds[0] === myUserId
29730
- ? strings.spotlightPrompt.stopSpotlightOnSelfHeading
29731
- : strings.spotlightPrompt.stopSpotlightHeading;
29732
- const stopSpotlightPromptText = userIds === undefined || userIds[0] === myUserId
29733
- ? strings.spotlightPrompt.stopSpotlightOnSelfText
29734
- : strings.spotlightPrompt.stopSpotlightText;
29735
- const stopSpotlightPromptConfirmButtonLabel = userIds === undefined || userIds[0] === myUserId
29736
- ? strings.spotlightPrompt.stopSpotlightOnSelfConfirmButtonLabel
29737
- : strings.spotlightPrompt.stopSpotlightConfirmButtonLabel;
29738
29985
  setPromptProps({
29739
- heading: stopSpotlightPromptHeading,
29740
- text: stopSpotlightPromptText,
29741
- confirmButtonLabel: stopSpotlightPromptConfirmButtonLabel,
29986
+ heading: strings.spotlightPrompt.stopSpotlightHeading,
29987
+ text: strings.spotlightPrompt.stopSpotlightText,
29988
+ confirmButtonLabel: strings.spotlightPrompt.stopSpotlightConfirmButtonLabel,
29742
29989
  cancelButtonLabel: strings.spotlightPrompt.stopSpotlightCancelButtonLabel,
29743
29990
  onConfirm: () => {
29744
29991
  onStopSpotlight(userIds);
@@ -29756,7 +30003,7 @@ const getStopSpotlightWithPromptCallback = (myUserId, onStopSpotlight, setIsProm
29756
30003
  * @private
29757
30004
  */
29758
30005
  const CallArrangement = (props) => {
29759
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
30006
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
29760
30007
  const containerClassName = React.useMemo(() => {
29761
30008
  return props.mobileView ? containerStyleMobile : containerStyleDesktop;
29762
30009
  }, [props.mobileView]);
@@ -29800,14 +30047,17 @@ const CallArrangement = (props) => {
29800
30047
  /* @conditional-compile-remove(spotlight) */
29801
30048
  const { setPromptProps, setIsPromptOpen } = props;
29802
30049
  /* @conditional-compile-remove(spotlight) */
29803
- const { onStartSpotlight, onStopSpotlight, spotlightedParticipants, maxParticipantsToSpotlight } = videoGalleryProps;
30050
+ const { onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight, spotlightedParticipants, maxParticipantsToSpotlight, localParticipant } = videoGalleryProps;
30051
+ /* @conditional-compile-remove(spotlight) */
30052
+ const { onStartLocalSpotlightWithPrompt, onStopLocalSpotlightWithPrompt } = useLocalSpotlightCallbacksWithPrompt(onStartLocalSpotlight, onStopLocalSpotlight, setIsPromptOpen, setPromptProps);
29804
30053
  /* @conditional-compile-remove(spotlight) */
29805
- const { onStartSpotlightWithPrompt, onStopSpotlightWithPrompt } = useSpotlightCallbacksWithPrompt(onStartSpotlight, onStopSpotlight, setIsPromptOpen, setPromptProps);
30054
+ const { onStartRemoteSpotlightWithPrompt, onStopRemoteSpotlightWithPrompt } = useRemoteSpotlightCallbacksWithPrompt(onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps);
29806
30055
  const { isPeoplePaneOpen, openPeoplePane, closePeoplePane } = usePeoplePane(Object.assign(Object.assign({}, peoplePaneProps), {
29807
30056
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds: spotlightedParticipants,
29808
- /* @conditional-compile-remove(spotlight) */ onStartSpotlight: onStartSpotlightWithPrompt,
29809
- /* @conditional-compile-remove(spotlight) */ onStopSpotlight: onStopSpotlightWithPrompt,
29810
- /* @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,
30057
+ /* @conditional-compile-remove(spotlight) */ onStartLocalSpotlight: onStartLocalSpotlightWithPrompt,
30058
+ /* @conditional-compile-remove(spotlight) */ onStopLocalSpotlight: onStopLocalSpotlightWithPrompt,
30059
+ /* @conditional-compile-remove(spotlight) */ onStartRemoteSpotlight: onStartRemoteSpotlightWithPrompt,
30060
+ /* @conditional-compile-remove(spotlight) */ onStopRemoteSpotlight: onStopRemoteSpotlightWithPrompt,
29811
30061
  /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight }));
29812
30062
  const togglePeoplePane = React.useCallback(() => {
29813
30063
  if (isPeoplePaneOpen) {
@@ -29862,7 +30112,7 @@ const CallArrangement = (props) => {
29862
30112
  }, [togglePeoplePane]);
29863
30113
  const drawerContainerStylesValue = React.useMemo(() => drawerContainerStyles(DRAWER_Z_INDEX), []);
29864
30114
  /* @conditional-compile-remove(rooms) */
29865
- const role = (_d = adapter.getState().call) === null || _d === void 0 ? void 0 : _d.role;
30115
+ const role = (_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.role;
29866
30116
  let canUnmute = true;
29867
30117
  /* @conditional-compile-remove(rooms) */
29868
30118
  canUnmute = role !== 'Consumer' ? true : false;
@@ -29892,15 +30142,15 @@ const CallArrangement = (props) => {
29892
30142
  /* @conditional-compile-remove(capabilities) */
29893
30143
  // Filter out shareScreen capability notifications if on mobile
29894
30144
  const filteredCapabilitesChangedNotifications = props.mobileView
29895
- ? (_e = props.capabilitiesChangedNotificationBarProps) === null || _e === void 0 ? void 0 : _e.capabilitiesChangedNotifications.filter((notification) => notification.capabilityName !== 'shareScreen')
29896
- : (_f = props.capabilitiesChangedNotificationBarProps) === null || _f === void 0 ? void 0 : _f.capabilitiesChangedNotifications;
30145
+ ? (_c = props.capabilitiesChangedNotificationBarProps) === null || _c === void 0 ? void 0 : _c.capabilitiesChangedNotifications.filter((notification) => notification.capabilityName !== 'shareScreen')
30146
+ : (_d = props.capabilitiesChangedNotificationBarProps) === null || _d === void 0 ? void 0 : _d.capabilitiesChangedNotifications;
29897
30147
  return (React.createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles), id: props.id },
29898
30148
  React.createElement(react.Stack, { verticalFill: true, horizontalAlign: "stretch", className: containerClassName, "data-ui-id": props.dataUiId },
29899
30149
  React.createElement(react.Stack, { reversed: true, horizontal: verticalControlBar, grow: true, styles: callArrangementContainerStyles(verticalControlBar) },
29900
- ((_g = props.callControlProps) === null || _g === void 0 ? void 0 : _g.options) !== false && !isMobileWithActivePane && (React.createElement(react.Stack, { verticalAlign: 'center', className: react.mergeStyles({
30150
+ ((_e = props.callControlProps) === null || _e === void 0 ? void 0 : _e.options) !== false && !isMobileWithActivePane && (React.createElement(react.Stack, { verticalAlign: 'center', className: react.mergeStyles({
29901
30151
  zIndex: CONTROL_BAR_Z_INDEX,
29902
30152
  padding: verticalControlBar ? '0.25rem' : 'unset'
29903
- }) }, isLegacyCallControlEnabled((_h = props.callControlProps) === null || _h === void 0 ? void 0 : _h.options) ? (React.createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView,
30153
+ }) }, isLegacyCallControlEnabled((_f = props.callControlProps) === null || _f === void 0 ? void 0 : _f.options) ? (React.createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView,
29904
30154
  /* @conditional-compile-remove(one-to-n-calling) */
29905
30155
  peopleButtonChecked: isPeoplePaneOpen,
29906
30156
  /* @conditional-compile-remove(one-to-n-calling) */
@@ -29922,8 +30172,10 @@ const CallArrangement = (props) => {
29922
30172
  /* @conditional-compile-remove(dtmf-dialer) */
29923
30173
  onSetDialpadPage: props.onSetDialpadPage,
29924
30174
  /* @conditional-compile-remove(dtmf-dialer) */
29925
- dtmfDialerPresent: props.dtmfDialerPresent, peopleButtonRef: peopleButtonRef, cameraButtonRef: cameraButtonRef }))))),
29926
- ((_j = props.callControlProps) === null || _j === void 0 ? void 0 : _j.options) !== false && showDrawer && (React.createElement(react.Stack, { styles: drawerContainerStylesValue },
30175
+ dtmfDialerPresent: props.dtmfDialerPresent, peopleButtonRef: peopleButtonRef, cameraButtonRef: cameraButtonRef,
30176
+ /* @conditional-compile-remove(spotlight) */
30177
+ onStopLocalSpotlight: localParticipant.spotlight ? onStopLocalSpotlight : undefined }))))),
30178
+ ((_g = props.callControlProps) === null || _g === void 0 ? void 0 : _g.options) !== false && showDrawer && (React.createElement(react.Stack, { styles: drawerContainerStylesValue },
29927
30179
  React.createElement(PreparedMoreDrawer, { callControls: props.callControlProps.options, onLightDismiss: closeDrawer, onPeopleButtonClicked: onMoreDrawerPeopleClicked,
29928
30180
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
29929
30181
  disableButtonsForHoldScreen: isInLocalHold,
@@ -29959,7 +30211,7 @@ const CallArrangement = (props) => {
29959
30211
  maxWidth: isVideoPaneOpen ? `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` : undefined, minWidth: isVideoPaneOpen ? `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` : undefined, updateSidePaneRenderer: props.updateSidePaneRenderer, onPeopleButtonClicked: props.mobileView && !shouldShowPeopleTabHeaderButton(props.callControlProps.options)
29960
30212
  ? undefined
29961
30213
  : togglePeoplePane, disablePeopleButton: typeof props.callControlProps.options !== 'boolean' &&
29962
- isDisabled$4((_k = props.callControlProps.options) === null || _k === void 0 ? void 0 : _k.participantsButton), onChatButtonClicked: (_l = props.mobileChatTabHeader) === null || _l === void 0 ? void 0 : _l.onClick, disableChatButton: (_m = props.mobileChatTabHeader) === null || _m === void 0 ? void 0 : _m.disabled }),
30214
+ isDisabled$4((_h = props.callControlProps.options) === null || _h === void 0 ? void 0 : _h.participantsButton), onChatButtonClicked: (_j = props.mobileChatTabHeader) === null || _j === void 0 ? void 0 : _j.onClick, disableChatButton: (_k = props.mobileChatTabHeader) === null || _k === void 0 ? void 0 : _k.disabled }),
29963
30215
  props.mobileView && (React.createElement(ModalLocalAndRemotePIP, { modalLayerHostId: props.modalLayerHostId, hidden: !isSidePaneOpen, styles: pipStyles, strings: modalStrings, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition, onDismissSidePane: () => {
29964
30216
  closePeoplePane();
29965
30217
  if (props.onCloseChatPane) {
@@ -30015,7 +30267,7 @@ const remoteVideoViewOptions = {
30015
30267
  * @private
30016
30268
  */
30017
30269
  const MediaGallery = (props) => {
30018
- var _a, _b, _c, _d, _e;
30270
+ var _a, _b, _c;
30019
30271
  /* @conditional-compile-remove(spotlight) */
30020
30272
  const { setIsPromptOpen, setPromptProps } = props;
30021
30273
  const videoGalleryProps = usePropsFor$1(VideoGallery);
@@ -30070,11 +30322,11 @@ const MediaGallery = (props) => {
30070
30322
  containerHeight
30071
30323
  ]);
30072
30324
  /* @conditional-compile-remove(spotlight) */
30073
- const { onStartSpotlight, onStopSpotlight } = videoGalleryProps;
30325
+ const { onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight } = videoGalleryProps;
30074
30326
  /* @conditional-compile-remove(spotlight) */
30075
- const { onStartSpotlightWithPrompt, onStopSpotlightWithPrompt } = useSpotlightCallbacksWithPrompt(onStartSpotlight, onStopSpotlight, setIsPromptOpen, setPromptProps);
30327
+ const { onStartLocalSpotlightWithPrompt, onStopLocalSpotlightWithPrompt } = useLocalSpotlightCallbacksWithPrompt(onStartLocalSpotlight, onStopLocalSpotlight, setIsPromptOpen, setPromptProps);
30076
30328
  /* @conditional-compile-remove(spotlight) */
30077
- const ableToSpotlight = (_e = (_d = adapter.getState().call) === null || _d === void 0 ? void 0 : _d.capabilitiesFeature) === null || _e === void 0 ? void 0 : _e.capabilities.spotlightParticipant.isPresent;
30329
+ const { onStartRemoteSpotlightWithPrompt, onStopRemoteSpotlightWithPrompt } = useRemoteSpotlightCallbacksWithPrompt(onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps);
30078
30330
  const VideoGalleryMemoized = React.useMemo(() => {
30079
30331
  const layoutBasedOnUserSelection = () => {
30080
30332
  /* @conditional-compile-remove(gallery-layouts) */
@@ -30092,9 +30344,13 @@ const MediaGallery = (props) => {
30092
30344
  /* @conditional-compile-remove(reaction) */
30093
30345
  reactionResources: reactionResources,
30094
30346
  /* @conditional-compile-remove(spotlight) */
30095
- onStartSpotlight: ableToSpotlight ? onStartSpotlightWithPrompt : undefined,
30347
+ onStartLocalSpotlight: onStartLocalSpotlightWithPrompt,
30348
+ /* @conditional-compile-remove(spotlight) */
30349
+ onStopLocalSpotlight: onStopLocalSpotlightWithPrompt,
30350
+ /* @conditional-compile-remove(spotlight) */
30351
+ onStartRemoteSpotlight: onStartRemoteSpotlightWithPrompt,
30096
30352
  /* @conditional-compile-remove(spotlight) */
30097
- onStopSpotlight: ableToSpotlight ? onStopSpotlightWithPrompt : undefined })));
30353
+ onStopRemoteSpotlight: onStopRemoteSpotlightWithPrompt })));
30098
30354
  }, [
30099
30355
  videoGalleryProps,
30100
30356
  props.isMobile,
@@ -30117,11 +30373,13 @@ const MediaGallery = (props) => {
30117
30373
  /* @conditional-compile-remove(reaction) */
30118
30374
  reactionResources,
30119
30375
  /* @conditional-compile-remove(spotlight) */
30120
- ableToSpotlight,
30376
+ onStartLocalSpotlightWithPrompt,
30121
30377
  /* @conditional-compile-remove(spotlight) */
30122
- onStartSpotlightWithPrompt,
30378
+ onStopLocalSpotlightWithPrompt,
30123
30379
  /* @conditional-compile-remove(spotlight) */
30124
- onStopSpotlightWithPrompt
30380
+ onStartRemoteSpotlightWithPrompt,
30381
+ /* @conditional-compile-remove(spotlight) */
30382
+ onStopRemoteSpotlightWithPrompt
30125
30383
  ]);
30126
30384
  return (React.createElement("div", { ref: containerRef, style: mediaGalleryContainerStyles },
30127
30385
  React.createElement(Announcer$1, { announcementString: announcerString, ariaLive: 'polite' }),
@@ -34983,17 +35241,12 @@ class CallWithChatBackedChatAdapter {
34983
35241
  this.callWithChatAdapter = callWithChatAdapter;
34984
35242
  }
34985
35243
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
34986
- // ToDo: This method is to be removed
34987
- downloadAttachment(options) {
35244
+ downloadResourceToCache(resourceDetails) {
34988
35245
  return __awaiter$3(this, void 0, void 0, function* () {
34989
- return yield this.callWithChatAdapter.downloadAttachment(options);
35246
+ this.callWithChatAdapter.downloadResourceToCache(resourceDetails);
34990
35247
  });
34991
35248
  }
34992
35249
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
34993
- downloadResourceToCache(resourceDetails) {
34994
- this.callWithChatAdapter.downloadResourceToCache(resourceDetails);
34995
- }
34996
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
34997
35250
  removeResourceFromCache(resourceDetails) {
34998
35251
  this.callWithChatAdapter.removeResourceFromCache(resourceDetails);
34999
35252
  }
@@ -35640,8 +35893,6 @@ class AzureCommunicationCallWithChatAdapter {
35640
35893
  /* @conditional-compile-remove(file-sharing) */
35641
35894
  this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);
35642
35895
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
35643
- this.downloadAttachment = this.downloadAttachment.bind(this); // ToDo: This method is to be removed
35644
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
35645
35896
  this.downloadResourceToCache = this.downloadResourceToCache.bind(this);
35646
35897
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
35647
35898
  this.removeResourceFromCache = this.removeResourceFromCache.bind(this);
@@ -35900,17 +36151,12 @@ class AzureCommunicationCallWithChatAdapter {
35900
36151
  });
35901
36152
  }
35902
36153
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
35903
- // ToDo: This method is to be removed
35904
- downloadAttachment(options) {
36154
+ downloadResourceToCache(resourceDetails) {
35905
36155
  return __awaiter$2(this, void 0, void 0, function* () {
35906
- return yield this.chatAdapter.downloadAttachment(options);
36156
+ this.chatAdapter.downloadResourceToCache(resourceDetails);
35907
36157
  });
35908
36158
  }
35909
36159
  /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
35910
- downloadResourceToCache(resourceDetails) {
35911
- this.chatAdapter.downloadResourceToCache(resourceDetails);
35912
- }
35913
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
35914
36160
  removeResourceFromCache(resourceDetails) {
35915
36161
  this.chatAdapter.removeResourceFromCache(resourceDetails);
35916
36162
  }
@@ -36324,15 +36570,11 @@ beforeDispose) => {
36324
36570
  */
36325
36571
  const createAzureCommunicationCallWithChatAdapterFromClients = ({ callClient, callAgent, callLocator, chatClient, chatThreadClient,
36326
36572
  /* @conditional-compile-remove(video-background-effects) */
36327
- callAdapterOptions,
36328
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
36329
- chatAdapterOptions }) => __awaiter$2(void 0, void 0, void 0, function* () {
36573
+ callAdapterOptions }) => __awaiter$2(void 0, void 0, void 0, function* () {
36330
36574
  const createCallAdapterPromise = createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator,
36331
36575
  /* @conditional-compile-remove(video-background-effects) */
36332
36576
  callAdapterOptions);
36333
- const createChatAdapterPromise = createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient,
36334
- /* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
36335
- chatAdapterOptions);
36577
+ const createChatAdapterPromise = createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
36336
36578
  const [callAdapter, chatAdapter] = yield Promise.all([createCallAdapterPromise, createChatAdapterPromise]);
36337
36579
  return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);
36338
36580
  });