@azure/communication-react 1.13.0-alpha-202402210012 → 1.13.0-alpha-202402230012

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 (85) hide show
  1. package/dist/communication-react.d.ts +30 -4
  2. package/dist/dist-cjs/communication-react/index.js +593 -305
  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-stateful-client/src/ResourceDownloadQueue.js +1 -1
  32. package/dist/dist-esm/chat-stateful-client/src/ResourceDownloadQueue.js.map +1 -1
  33. package/dist/dist-esm/react-components/src/components/LocalVideoTile.d.ts +8 -0
  34. package/dist/dist-esm/react-components/src/components/LocalVideoTile.js +101 -19
  35. package/dist/dist-esm/react-components/src/components/LocalVideoTile.js.map +1 -1
  36. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +1 -1
  37. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  38. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +8 -3
  39. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  40. package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js +8 -3
  41. package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js.map +1 -1
  42. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.d.ts +4 -2
  43. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js +25 -20
  44. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +2 -10
  46. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +12 -4
  48. package/dist/dist-esm/react-components/src/components/VideoGallery.js +38 -10
  49. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +8 -0
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +4 -0
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  54. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +20 -15
  55. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  56. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +16 -10
  57. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  58. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.d.ts +4 -3
  59. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js +29 -15
  60. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js.map +1 -1
  61. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.d.ts +2 -1
  62. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +168 -141
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/usePropsFor.d.ts +2 -1
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/usePropsFor.js.map +1 -1
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.d.ts +10 -3
  69. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.js +77 -27
  70. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.js.map +1 -1
  71. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +1 -1
  72. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  73. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +1 -0
  74. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +15 -0
  75. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  76. package/dist/dist-esm/react-composites/src/composites/common/ExitSpotlightButton.d.ts +14 -0
  77. package/dist/dist-esm/react-composites/src/composites/common/ExitSpotlightButton.js +16 -0
  78. package/dist/dist-esm/react-composites/src/composites/common/ExitSpotlightButton.js.map +1 -0
  79. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +2 -0
  80. package/dist/dist-esm/react-composites/src/composites/common/icons.js +4 -0
  81. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  82. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.d.ts +4 -0
  83. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map +1 -1
  84. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +4 -2
  85. 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-202402210012';
176
+ var telemetryVersion = '1.13.0-alpha-202402230012';
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
  }
@@ -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;
@@ -21826,7 +21981,7 @@ class ResourceDownloadQueue {
21826
21981
  message.resourceCache = {};
21827
21982
  }
21828
21983
  for (const attachment of attachments) {
21829
- if (attachment.previewUrl) {
21984
+ if (attachment.previewUrl && attachment.attachmentType === 'image') {
21830
21985
  const blobUrl = yield operation(attachment.previewUrl, this._credential);
21831
21986
  message.resourceCache[attachment.previewUrl] = blobUrl;
21832
21987
  }
@@ -23014,6 +23169,8 @@ const COMPOSITE_ONLY_ICONS = {
23014
23169
  ControlButtonCameraProhibited: React.createElement(reactIcons.VideoProhibited20Filled, null),
23015
23170
  /* @conditional-compile-remove(capabilities) */
23016
23171
  ControlButtonMicProhibited: React.createElement(reactIcons.MicProhibited20Filled, null),
23172
+ /* @conditional-compile-remove(spotlight) */
23173
+ ControlButtonExitSpotlight: React.createElement(reactIcons.VideoPersonStarOff20Filled, null),
23017
23174
  ControlBarPeopleButton: React.createElement(reactIcons.People20Regular, null),
23018
23175
  MoreDrawerMicrophones: React.createElement(reactIcons.Mic20Regular, null),
23019
23176
  MoreDrawerPeople: React.createElement(reactIcons.People20Regular, null),
@@ -23099,7 +23256,7 @@ const CallCompositeIcon = (props) => (React.createElement(react.FontIcon, Object
23099
23256
  */
23100
23257
  const CallWithChatCompositeIcon = (props) => (React.createElement(react.FontIcon, Object.assign({}, props)));
23101
23258
 
23102
- 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};
23103
23260
 
23104
23261
  // Copyright (c) Microsoft Corporation.
23105
23262
  // Licensed under the MIT License.
@@ -24694,7 +24851,7 @@ const ChatScreen = (props) => {
24694
24851
  if (e.key === 'Enter') {
24695
24852
  onInlineImageClicked(inlineImage.imgAttrs.id || '', inlineImage.messageId);
24696
24853
  }
24697
- } }, defaultOnRender(inlineImage)));
24854
+ }, style: { cursor: 'pointer' } }, defaultOnRender(inlineImage)));
24698
24855
  }
24699
24856
  };
24700
24857
  /* @conditional-compile-remove(image-overlay) */
@@ -25169,7 +25326,7 @@ const getEndedCallPageProps = (locale, endedCall) => {
25169
25326
  */
25170
25327
  const getCallCompositePage = (call, previousCall, transferCall, unsupportedBrowserInfo) => {
25171
25328
  /* @conditional-compile-remove(unsupported-browser) */
25172
- if (isUnsupportedEnvironment(unsupportedBrowserInfo.environmentInfo, unsupportedBrowserInfo.unsupportedBrowserVersionOptedIn)) {
25329
+ if (isUnsupportedEnvironment(unsupportedBrowserInfo === null || unsupportedBrowserInfo === void 0 ? void 0 : unsupportedBrowserInfo.environmentInfo, unsupportedBrowserInfo === null || unsupportedBrowserInfo === void 0 ? void 0 : unsupportedBrowserInfo.unsupportedBrowserVersionOptedIn)) {
25173
25330
  return 'unsupportedEnvironment';
25174
25331
  }
25175
25332
  /* @conditional-compile-remove(call-transfer) */
@@ -25414,149 +25571,175 @@ var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments,
25414
25571
  const useHandlers = (
25415
25572
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
25416
25573
  _component) => {
25417
- return createCompositeHandlers(useAdapter());
25418
- };
25419
- const createCompositeHandlers = memoizeOne((adapter) => ({
25420
- onCreateLocalStreamView: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
25421
- return yield adapter.createStreamView(undefined, options);
25422
- }),
25423
- onCreateRemoteStreamView: (userId, options) => __awaiter$j(void 0, void 0, void 0, function* () {
25424
- return yield adapter.createStreamView(userId, options);
25425
- }),
25426
- onHangUp: (forEveryone) => __awaiter$j(void 0, void 0, void 0, function* () {
25427
- yield adapter.leaveCall(forEveryone);
25428
- }),
25429
- /* @conditional-compile-remove(PSTN-calls) */
25430
- onToggleHold: () => __awaiter$j(void 0, void 0, void 0, function* () {
25431
- var _a;
25432
- return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();
25433
- }),
25434
- /* @conditional-compile-remove(PSTN-calls) */
25435
- onAddParticipant: (participant, options) => __awaiter$j(void 0, void 0, void 0, function* () {
25436
- return yield adapter.addParticipant(participant, options);
25437
- }),
25438
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(dtmf-dialer) */
25439
- onSendDtmfTone: (dtmfTone) => __awaiter$j(void 0, void 0, void 0, function* () {
25440
- yield adapter.sendDtmfTone(dtmfTone);
25441
- }),
25442
- onRemoveParticipant: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25443
- yield adapter.removeParticipant(userId);
25444
- }),
25445
- /* @conditional-compile-remove(raise-hand) */
25446
- onRaiseHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
25447
- yield adapter.raiseHand();
25448
- }),
25449
- /* @conditional-compile-remove(raise-hand) */
25450
- onLowerHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
25451
- yield adapter.lowerHand();
25452
- }),
25453
- /* @conditional-compile-remove(raise-hand) */
25454
- onToggleRaiseHand: () => __awaiter$j(void 0, void 0, void 0, function* () {
25455
- var _b;
25456
- ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.raiseHand.localParticipantRaisedHand)
25457
- ? yield adapter.lowerHand()
25458
- : yield adapter.raiseHand();
25459
- }),
25460
- /* @conditional-compile-remove(reaction) */
25461
- onReactionClicked: (reaction) => __awaiter$j(void 0, void 0, void 0, function* () {
25462
- yield adapter.onReactionClicked(reaction);
25463
- }),
25464
- onSelectCamera: (deviceInfo, options) => __awaiter$j(void 0, void 0, void 0, function* () {
25465
- yield adapter.setCamera(deviceInfo, options);
25466
- }),
25467
- onSelectMicrophone: (deviceInfo) => __awaiter$j(void 0, void 0, void 0, function* () {
25468
- yield adapter.setMicrophone(deviceInfo);
25469
- }),
25470
- onSelectSpeaker: (deviceInfo) => __awaiter$j(void 0, void 0, void 0, function* () {
25471
- yield adapter.setSpeaker(deviceInfo);
25472
- }),
25473
- onStartCall: (participants, options) => {
25474
- const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
25475
- return adapter.startCall(rawIds, options);
25476
- },
25477
- onStartScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
25478
- yield adapter.startScreenShare();
25479
- }),
25480
- onStopScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
25481
- yield adapter.stopScreenShare();
25482
- }),
25483
- onToggleCamera: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
25484
- isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
25485
- }),
25486
- onToggleMicrophone: () => __awaiter$j(void 0, void 0, void 0, function* () {
25487
- var _c;
25488
- return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isMuted) ? yield adapter.unmute() : yield adapter.mute();
25489
- }),
25490
- onToggleScreenShare: () => __awaiter$j(void 0, void 0, void 0, function* () {
25491
- var _d;
25492
- return ((_d = adapter.getState().call) === null || _d === void 0 ? void 0 : _d.isScreenSharingOn)
25493
- ? yield adapter.stopScreenShare()
25494
- : yield adapter.startScreenShare();
25495
- }),
25496
- onStartLocalVideo: () => __awaiter$j(void 0, void 0, void 0, function* () {
25497
- if (adapter.getState().call) {
25498
- return adapter.startCamera();
25499
- }
25500
- }),
25501
- onDisposeLocalStreamView: () => __awaiter$j(void 0, void 0, void 0, function* () {
25502
- return adapter.disposeLocalVideoStreamView();
25503
- }),
25504
- onDisposeRemoteStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25505
- return adapter.disposeStreamView(userId);
25506
- }),
25507
- onDisposeRemoteScreenShareStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25508
- return adapter.disposeScreenShareStreamView(userId);
25509
- }),
25510
- onDisposeRemoteVideoStreamView: (userId) => __awaiter$j(void 0, void 0, void 0, function* () {
25511
- return adapter.disposeRemoteVideoStreamView(userId);
25512
- }),
25513
- /* @conditional-compile-remove(call-readiness) */
25514
- askDevicePermission: (constrain) => __awaiter$j(void 0, void 0, void 0, function* () {
25515
- return adapter.askDevicePermission(constrain);
25516
- }),
25517
- /* @conditional-compile-remove(video-background-effects) */
25518
- onRemoveVideoBackgroundEffects: () => __awaiter$j(void 0, void 0, void 0, function* () {
25519
- return yield adapter.stopVideoBackgroundEffects();
25520
- }),
25521
- /* @conditional-compile-remove(video-background-effects) */
25522
- onBlurVideoBackground: (backgroundBlurConfig) => __awaiter$j(void 0, void 0, void 0, function* () {
25523
- const blurConfig = Object.assign({ effectName: 'blur' }, backgroundBlurConfig);
25524
- return yield adapter.startVideoBackgroundEffect(blurConfig);
25525
- }),
25526
- /* @conditional-compile-remove(video-background-effects) */
25527
- onReplaceVideoBackground: (backgroundReplacementConfig) => __awaiter$j(void 0, void 0, void 0, function* () {
25528
- const replacementConfig = Object.assign({ effectName: 'replacement' }, backgroundReplacementConfig);
25529
- return yield adapter.startVideoBackgroundEffect(replacementConfig);
25530
- }),
25531
- /* @conditional-compile-remove(close-captions) */
25532
- onStartCaptions: (options) => __awaiter$j(void 0, void 0, void 0, function* () {
25533
- yield adapter.startCaptions(options);
25534
- }),
25535
- /* @conditional-compile-remove(close-captions) */
25536
- onStopCaptions: () => __awaiter$j(void 0, void 0, void 0, function* () {
25537
- yield adapter.stopCaptions();
25538
- }),
25539
- /* @conditional-compile-remove(close-captions) */
25540
- onSetSpokenLanguage: (language) => __awaiter$j(void 0, void 0, void 0, function* () {
25541
- yield adapter.setSpokenLanguage(language);
25542
- }),
25543
- /* @conditional-compile-remove(close-captions) */
25544
- onSetCaptionLanguage: (language) => __awaiter$j(void 0, void 0, void 0, function* () {
25545
- yield adapter.setCaptionLanguage(language);
25546
- }),
25547
- /* @conditional-compile-remove(end-of-call-survey) */
25548
- onSubmitSurvey: (survey) => __awaiter$j(void 0, void 0, void 0, function* () {
25549
- return yield adapter.submitSurvey(survey);
25550
- }),
25574
+ var _a, _b;
25575
+ const adapter = useAdapter();
25576
+ const compositeHandlers = createCompositeHandlers(adapter);
25551
25577
  /* @conditional-compile-remove(spotlight) */
25552
- onStartSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25553
- yield adapter.startSpotlight(userIds);
25554
- }),
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;
25555
25579
  /* @conditional-compile-remove(spotlight) */
25556
- onStopSpotlight: (userIds) => __awaiter$j(void 0, void 0, void 0, function* () {
25557
- yield adapter.stopSpotlight(userIds);
25558
- })
25559
- }));
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
+ });
25560
25743
 
25561
25744
  // Copyright (c) Microsoft Corporation.
25562
25745
  // Licensed under the MIT License.
@@ -27264,6 +27447,17 @@ const DtmfDialpadButton = (props) => {
27264
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 })));
27265
27448
  };
27266
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
+
27267
27461
  // Copyright (c) Microsoft Corporation.
27268
27462
  // Licensed under the MIT License.
27269
27463
  const inferCommonCallControlOptions = (mobileView, commonCallControlOptions) => {
@@ -27342,6 +27536,13 @@ const CommonCallControlBar = (props) => {
27342
27536
  label: callWithChatStrings.moreDrawerButtonLabel,
27343
27537
  tooltipContent: callWithChatStrings.moreDrawerButtonTooltip
27344
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]);
27345
27546
  const centerContainerStyles = React.useMemo(() => {
27346
27547
  const styles = !props.mobileView ? desktopControlBarStyles : {};
27347
27548
  return react.mergeStyleSets(styles, {
@@ -27372,6 +27573,8 @@ const CommonCallControlBar = (props) => {
27372
27573
  const screenShareButtonIsEnabled = isEnabled$1(options === null || options === void 0 ? void 0 : options.screenShareButton);
27373
27574
  const microphoneButtonIsEnabled = isEnabled$1(options === null || options === void 0 ? void 0 : options.microphoneButton);
27374
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;
27375
27578
  const showDesktopMoreButton =
27376
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) &&
27377
27580
  (/*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.holdButton) ||
@@ -27418,6 +27621,8 @@ const CommonCallControlBar = (props) => {
27418
27621
  props.onSetDialpadPage();
27419
27622
  }
27420
27623
  } })),
27624
+ /* @conditional-compile-remove(spotlight) */ showExitSpotlightButton &&
27625
+ props.onStopLocalSpotlight && (React.createElement(ExitSpotlightButton, { displayType: options.displayType, onClick: props.onStopLocalSpotlight, styles: commonButtonStyles, strings: exitSpotlightButtonStrings })),
27421
27626
  screenShareButtonIsEnabled && (React.createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles,
27422
27627
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
27423
27628
  disabled: props.disableButtonsForHoldScreen || isDisabled$4(options.screenShareButton) })), (_b = customButtons['primary']) === null || _b === void 0 ? void 0 :
@@ -28865,11 +29070,13 @@ const usePeoplePane = (props) => {
28865
29070
  /* @conditional-compile-remove(spotlight) */
28866
29071
  spotlightedParticipantUserIds,
28867
29072
  /* @conditional-compile-remove(spotlight) */
28868
- onStartSpotlight,
29073
+ onStartLocalSpotlight,
28869
29074
  /* @conditional-compile-remove(spotlight) */
28870
- onStopSpotlight,
29075
+ onStopLocalSpotlight,
29076
+ /* @conditional-compile-remove(spotlight) */
29077
+ onStartRemoteSpotlight,
28871
29078
  /* @conditional-compile-remove(spotlight) */
28872
- ableToSpotlight,
29079
+ onStopRemoteSpotlight,
28873
29080
  /* @conditional-compile-remove(spotlight) */
28874
29081
  maxParticipantsToSpotlight } = props;
28875
29082
  const closePane = React.useCallback(() => {
@@ -28883,17 +29090,23 @@ const usePeoplePane = (props) => {
28883
29090
  const onFetchParticipantMenuItemsForCallComposite = React.useCallback((participantId, myUserId, defaultMenuItems) => {
28884
29091
  const _defaultMenuItems = defaultMenuItems !== null && defaultMenuItems !== void 0 ? defaultMenuItems : [];
28885
29092
  const isSpotlighted = spotlightedParticipantUserIds === null || spotlightedParticipantUserIds === void 0 ? void 0 : spotlightedParticipantUserIds.find((p) => p === participantId);
29093
+ const isMe = myUserId === participantId;
28886
29094
  if (isSpotlighted) {
28887
- const stopSpotlightMenuText = myUserId === participantId
29095
+ const stopSpotlightMenuText = isMe
28888
29096
  ? localeStrings.stopSpotlightOnSelfParticipantListMenuLabel
28889
29097
  : localeStrings.stopSpotlightParticipantListMenuLabel;
28890
- 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) {
28891
29106
  _defaultMenuItems.push({
28892
29107
  key: 'stop-spotlight',
28893
29108
  text: stopSpotlightMenuText,
28894
- onClick: () => {
28895
- onStopSpotlight === null || onStopSpotlight === void 0 ? void 0 : onStopSpotlight([participantId]);
28896
- },
29109
+ onClick: onStopSpotlight,
28897
29110
  iconProps: {
28898
29111
  iconName: 'StopSpotlightContextualMenuItem',
28899
29112
  styles: { root: { lineHeight: 0 } }
@@ -28911,13 +29124,18 @@ const usePeoplePane = (props) => {
28911
29124
  ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight
28912
29125
  : false
28913
29126
  : false;
28914
- if (onStartSpotlight && startSpotlightMenuText && ableToSpotlight) {
29127
+ const onStartSpotlight = isMe
29128
+ ? onStartLocalSpotlight
29129
+ : onStartRemoteSpotlight
29130
+ ? () => {
29131
+ onStartRemoteSpotlight([participantId]);
29132
+ }
29133
+ : undefined;
29134
+ if (onStartSpotlight && startSpotlightMenuText) {
28915
29135
  _defaultMenuItems.push({
28916
29136
  key: 'start-spotlight',
28917
29137
  text: startSpotlightMenuText,
28918
- onClick: () => {
28919
- onStartSpotlight === null || onStartSpotlight === void 0 ? void 0 : onStartSpotlight([participantId]);
28920
- },
29138
+ onClick: onStartSpotlight,
28921
29139
  iconProps: {
28922
29140
  iconName: 'StartSpotlightContextualMenuItem',
28923
29141
  styles: { root: { lineHeight: 0 } }
@@ -28935,15 +29153,16 @@ const usePeoplePane = (props) => {
28935
29153
  : _defaultMenuItems;
28936
29154
  }, [
28937
29155
  spotlightedParticipantUserIds,
28938
- onStartSpotlight,
28939
- onStopSpotlight,
29156
+ onStartLocalSpotlight,
29157
+ onStopLocalSpotlight,
29158
+ onStartRemoteSpotlight,
29159
+ onStopRemoteSpotlight,
28940
29160
  onFetchParticipantMenuItems,
28941
29161
  localeStrings.stopSpotlightParticipantListMenuLabel,
28942
29162
  localeStrings.stopSpotlightOnSelfParticipantListMenuLabel,
28943
29163
  localeStrings.addSpotlightParticipantListMenuLabel,
28944
29164
  localeStrings.startSpotlightParticipantListMenuLabel,
28945
29165
  localeStrings.spotlightLimitReachedParticipantListMenuTitle,
28946
- ableToSpotlight,
28947
29166
  maxParticipantsToSpotlight
28948
29167
  ]);
28949
29168
  let _onFetchParticipantMenuItems = onFetchParticipantMenuItems;
@@ -29658,31 +29877,94 @@ var __awaiter$d = (window && window.__awaiter) || function (thisArg, _arguments,
29658
29877
  /**
29659
29878
  * @internal
29660
29879
  */
29661
- const useSpotlightCallbacksWithPrompt = (onStartSpotlight, onStopSpotlight, setIsPromptOpen, setPromptProps) => {
29662
- 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) => {
29663
29941
  const strings = useLocale().strings.call;
29664
29942
  return React.useMemo(() => {
29665
29943
  if (!setIsPromptOpen || !setPromptProps) {
29666
- return { onStartSpotlightWithPrompt: onStartSpotlight, onStopSpotlightWithPrompt: onStopSpotlight };
29944
+ return {
29945
+ onStartRemoteSpotlightWithPrompt: onStartRemoteSpotlight,
29946
+ onStopRemoteSpotlightWithPrompt: onStopRemoteSpotlight
29947
+ };
29667
29948
  }
29668
29949
  return {
29669
- onStartSpotlightWithPrompt: getStartSpotlightWithPromptCallback(myUserId, onStartSpotlight, setIsPromptOpen, setPromptProps, strings),
29670
- 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
29671
29956
  };
29672
- }, [myUserId, onStartSpotlight, onStopSpotlight, setIsPromptOpen, setPromptProps, strings]);
29957
+ }, [onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps, strings]);
29673
29958
  };
29674
29959
  /* @conditional-compile-remove(spotlight) */
29675
- const getStartSpotlightWithPromptCallback = (myUserId, onStartSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29960
+ const getStartRemoteSpotlightWithPromptCallback = (onStartSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29676
29961
  return (userIds) => __awaiter$d(void 0, void 0, void 0, function* () {
29677
29962
  if (userIds && userIds.length > 1) {
29678
29963
  onStartSpotlight(userIds);
29679
29964
  }
29680
- const startSpotlightPromptText = userIds === undefined || userIds[0] === myUserId
29681
- ? strings.spotlightPrompt.startSpotlightOnSelfText
29682
- : strings.spotlightPrompt.startSpotlightText;
29683
29965
  setPromptProps({
29684
29966
  heading: strings.spotlightPrompt.startSpotlightHeading,
29685
- text: startSpotlightPromptText,
29967
+ text: strings.spotlightPrompt.startSpotlightText,
29686
29968
  confirmButtonLabel: strings.spotlightPrompt.startSpotlightConfirmButtonLabel,
29687
29969
  cancelButtonLabel: strings.spotlightPrompt.startSpotlightCancelButtonLabel,
29688
29970
  onConfirm: () => {
@@ -29695,24 +29977,15 @@ const getStartSpotlightWithPromptCallback = (myUserId, onStartSpotlight, setIsPr
29695
29977
  });
29696
29978
  };
29697
29979
  /* @conditional-compile-remove(spotlight) */
29698
- const getStopSpotlightWithPromptCallback = (myUserId, onStopSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29980
+ const getStopRemoteSpotlightWithPromptCallback = (onStopSpotlight, setIsPromptOpen, setPromptProps, strings) => {
29699
29981
  return (userIds) => __awaiter$d(void 0, void 0, void 0, function* () {
29700
29982
  if (userIds && userIds.length > 1) {
29701
29983
  onStopSpotlight(userIds);
29702
29984
  }
29703
- const stopSpotlightPromptHeading = userIds === undefined || userIds[0] === myUserId
29704
- ? strings.spotlightPrompt.stopSpotlightOnSelfHeading
29705
- : strings.spotlightPrompt.stopSpotlightHeading;
29706
- const stopSpotlightPromptText = userIds === undefined || userIds[0] === myUserId
29707
- ? strings.spotlightPrompt.stopSpotlightOnSelfText
29708
- : strings.spotlightPrompt.stopSpotlightText;
29709
- const stopSpotlightPromptConfirmButtonLabel = userIds === undefined || userIds[0] === myUserId
29710
- ? strings.spotlightPrompt.stopSpotlightOnSelfConfirmButtonLabel
29711
- : strings.spotlightPrompt.stopSpotlightConfirmButtonLabel;
29712
29985
  setPromptProps({
29713
- heading: stopSpotlightPromptHeading,
29714
- text: stopSpotlightPromptText,
29715
- confirmButtonLabel: stopSpotlightPromptConfirmButtonLabel,
29986
+ heading: strings.spotlightPrompt.stopSpotlightHeading,
29987
+ text: strings.spotlightPrompt.stopSpotlightText,
29988
+ confirmButtonLabel: strings.spotlightPrompt.stopSpotlightConfirmButtonLabel,
29716
29989
  cancelButtonLabel: strings.spotlightPrompt.stopSpotlightCancelButtonLabel,
29717
29990
  onConfirm: () => {
29718
29991
  onStopSpotlight(userIds);
@@ -29730,7 +30003,7 @@ const getStopSpotlightWithPromptCallback = (myUserId, onStopSpotlight, setIsProm
29730
30003
  * @private
29731
30004
  */
29732
30005
  const CallArrangement = (props) => {
29733
- 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;
29734
30007
  const containerClassName = React.useMemo(() => {
29735
30008
  return props.mobileView ? containerStyleMobile : containerStyleDesktop;
29736
30009
  }, [props.mobileView]);
@@ -29774,14 +30047,17 @@ const CallArrangement = (props) => {
29774
30047
  /* @conditional-compile-remove(spotlight) */
29775
30048
  const { setPromptProps, setIsPromptOpen } = props;
29776
30049
  /* @conditional-compile-remove(spotlight) */
29777
- 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);
29778
30053
  /* @conditional-compile-remove(spotlight) */
29779
- const { onStartSpotlightWithPrompt, onStopSpotlightWithPrompt } = useSpotlightCallbacksWithPrompt(onStartSpotlight, onStopSpotlight, setIsPromptOpen, setPromptProps);
30054
+ const { onStartRemoteSpotlightWithPrompt, onStopRemoteSpotlightWithPrompt } = useRemoteSpotlightCallbacksWithPrompt(onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps);
29780
30055
  const { isPeoplePaneOpen, openPeoplePane, closePeoplePane } = usePeoplePane(Object.assign(Object.assign({}, peoplePaneProps), {
29781
30056
  /* @conditional-compile-remove(spotlight) */ spotlightedParticipantUserIds: spotlightedParticipants,
29782
- /* @conditional-compile-remove(spotlight) */ onStartSpotlight: onStartSpotlightWithPrompt,
29783
- /* @conditional-compile-remove(spotlight) */ onStopSpotlight: onStopSpotlightWithPrompt,
29784
- /* @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,
29785
30061
  /* @conditional-compile-remove(spotlight) */ maxParticipantsToSpotlight }));
29786
30062
  const togglePeoplePane = React.useCallback(() => {
29787
30063
  if (isPeoplePaneOpen) {
@@ -29836,7 +30112,7 @@ const CallArrangement = (props) => {
29836
30112
  }, [togglePeoplePane]);
29837
30113
  const drawerContainerStylesValue = React.useMemo(() => drawerContainerStyles(DRAWER_Z_INDEX), []);
29838
30114
  /* @conditional-compile-remove(rooms) */
29839
- 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;
29840
30116
  let canUnmute = true;
29841
30117
  /* @conditional-compile-remove(rooms) */
29842
30118
  canUnmute = role !== 'Consumer' ? true : false;
@@ -29866,15 +30142,15 @@ const CallArrangement = (props) => {
29866
30142
  /* @conditional-compile-remove(capabilities) */
29867
30143
  // Filter out shareScreen capability notifications if on mobile
29868
30144
  const filteredCapabilitesChangedNotifications = props.mobileView
29869
- ? (_e = props.capabilitiesChangedNotificationBarProps) === null || _e === void 0 ? void 0 : _e.capabilitiesChangedNotifications.filter((notification) => notification.capabilityName !== 'shareScreen')
29870
- : (_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;
29871
30147
  return (React.createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles), id: props.id },
29872
30148
  React.createElement(react.Stack, { verticalFill: true, horizontalAlign: "stretch", className: containerClassName, "data-ui-id": props.dataUiId },
29873
30149
  React.createElement(react.Stack, { reversed: true, horizontal: verticalControlBar, grow: true, styles: callArrangementContainerStyles(verticalControlBar) },
29874
- ((_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({
29875
30151
  zIndex: CONTROL_BAR_Z_INDEX,
29876
30152
  padding: verticalControlBar ? '0.25rem' : 'unset'
29877
- }) }, 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,
29878
30154
  /* @conditional-compile-remove(one-to-n-calling) */
29879
30155
  peopleButtonChecked: isPeoplePaneOpen,
29880
30156
  /* @conditional-compile-remove(one-to-n-calling) */
@@ -29896,8 +30172,10 @@ const CallArrangement = (props) => {
29896
30172
  /* @conditional-compile-remove(dtmf-dialer) */
29897
30173
  onSetDialpadPage: props.onSetDialpadPage,
29898
30174
  /* @conditional-compile-remove(dtmf-dialer) */
29899
- dtmfDialerPresent: props.dtmfDialerPresent, peopleButtonRef: peopleButtonRef, cameraButtonRef: cameraButtonRef }))))),
29900
- ((_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 },
29901
30179
  React.createElement(PreparedMoreDrawer, { callControls: props.callControlProps.options, onLightDismiss: closeDrawer, onPeopleButtonClicked: onMoreDrawerPeopleClicked,
29902
30180
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
29903
30181
  disableButtonsForHoldScreen: isInLocalHold,
@@ -29933,7 +30211,7 @@ const CallArrangement = (props) => {
29933
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)
29934
30212
  ? undefined
29935
30213
  : togglePeoplePane, disablePeopleButton: typeof props.callControlProps.options !== 'boolean' &&
29936
- 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 }),
29937
30215
  props.mobileView && (React.createElement(ModalLocalAndRemotePIP, { modalLayerHostId: props.modalLayerHostId, hidden: !isSidePaneOpen, styles: pipStyles, strings: modalStrings, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition, onDismissSidePane: () => {
29938
30216
  closePeoplePane();
29939
30217
  if (props.onCloseChatPane) {
@@ -29989,7 +30267,7 @@ const remoteVideoViewOptions = {
29989
30267
  * @private
29990
30268
  */
29991
30269
  const MediaGallery = (props) => {
29992
- var _a, _b, _c, _d, _e;
30270
+ var _a, _b, _c;
29993
30271
  /* @conditional-compile-remove(spotlight) */
29994
30272
  const { setIsPromptOpen, setPromptProps } = props;
29995
30273
  const videoGalleryProps = usePropsFor$1(VideoGallery);
@@ -30044,11 +30322,11 @@ const MediaGallery = (props) => {
30044
30322
  containerHeight
30045
30323
  ]);
30046
30324
  /* @conditional-compile-remove(spotlight) */
30047
- const { onStartSpotlight, onStopSpotlight } = videoGalleryProps;
30325
+ const { onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight } = videoGalleryProps;
30048
30326
  /* @conditional-compile-remove(spotlight) */
30049
- const { onStartSpotlightWithPrompt, onStopSpotlightWithPrompt } = useSpotlightCallbacksWithPrompt(onStartSpotlight, onStopSpotlight, setIsPromptOpen, setPromptProps);
30327
+ const { onStartLocalSpotlightWithPrompt, onStopLocalSpotlightWithPrompt } = useLocalSpotlightCallbacksWithPrompt(onStartLocalSpotlight, onStopLocalSpotlight, setIsPromptOpen, setPromptProps);
30050
30328
  /* @conditional-compile-remove(spotlight) */
30051
- 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);
30052
30330
  const VideoGalleryMemoized = React.useMemo(() => {
30053
30331
  const layoutBasedOnUserSelection = () => {
30054
30332
  /* @conditional-compile-remove(gallery-layouts) */
@@ -30066,9 +30344,13 @@ const MediaGallery = (props) => {
30066
30344
  /* @conditional-compile-remove(reaction) */
30067
30345
  reactionResources: reactionResources,
30068
30346
  /* @conditional-compile-remove(spotlight) */
30069
- onStartSpotlight: ableToSpotlight ? onStartSpotlightWithPrompt : undefined,
30347
+ onStartLocalSpotlight: onStartLocalSpotlightWithPrompt,
30348
+ /* @conditional-compile-remove(spotlight) */
30349
+ onStopLocalSpotlight: onStopLocalSpotlightWithPrompt,
30350
+ /* @conditional-compile-remove(spotlight) */
30351
+ onStartRemoteSpotlight: onStartRemoteSpotlightWithPrompt,
30070
30352
  /* @conditional-compile-remove(spotlight) */
30071
- onStopSpotlight: ableToSpotlight ? onStopSpotlightWithPrompt : undefined })));
30353
+ onStopRemoteSpotlight: onStopRemoteSpotlightWithPrompt })));
30072
30354
  }, [
30073
30355
  videoGalleryProps,
30074
30356
  props.isMobile,
@@ -30091,11 +30373,13 @@ const MediaGallery = (props) => {
30091
30373
  /* @conditional-compile-remove(reaction) */
30092
30374
  reactionResources,
30093
30375
  /* @conditional-compile-remove(spotlight) */
30094
- ableToSpotlight,
30376
+ onStartLocalSpotlightWithPrompt,
30095
30377
  /* @conditional-compile-remove(spotlight) */
30096
- onStartSpotlightWithPrompt,
30378
+ onStopLocalSpotlightWithPrompt,
30097
30379
  /* @conditional-compile-remove(spotlight) */
30098
- onStopSpotlightWithPrompt
30380
+ onStartRemoteSpotlightWithPrompt,
30381
+ /* @conditional-compile-remove(spotlight) */
30382
+ onStopRemoteSpotlightWithPrompt
30099
30383
  ]);
30100
30384
  return (React.createElement("div", { ref: containerRef, style: mediaGalleryContainerStyles },
30101
30385
  React.createElement(Announcer$1, { announcementString: announcerString, ariaLive: 'polite' }),
@@ -33740,6 +34024,10 @@ class AzureCommunicationCallAdapter {
33740
34024
  }
33741
34025
  leaveCall(forEveryone) {
33742
34026
  return __awaiter$5(this, void 0, void 0, function* () {
34027
+ if (this.getState().page === 'transferring') {
34028
+ const transferCall = this.callAgent.calls.filter((call) => { var _a; return call.id === ((_a = this.getState().acceptedTransferCallState) === null || _a === void 0 ? void 0 : _a.id); })[0];
34029
+ transferCall === null || transferCall === void 0 ? void 0 : transferCall.hangUp();
34030
+ }
33743
34031
  yield this.handlers.onHangUp(forEveryone);
33744
34032
  this.unsubscribeCallEvents();
33745
34033
  this.handlers = createHandlers(this.callClient, this.callAgent, this.deviceManager, this.call,