@azure/communication-react 1.5.1-alpha-202303260014 → 1.5.1-alpha-202303290014

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 (64) hide show
  1. package/dist/communication-react.d.ts +63 -3
  2. package/dist/dist-cjs/communication-react/index.js +209 -81
  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-stateful-client/src/CallClientState.d.ts +1 -1
  7. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  8. package/dist/dist-esm/communication-react/src/index.d.ts +1 -1
  9. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  10. package/dist/dist-esm/react-components/src/components/CaptionsBanner.d.ts +3 -3
  11. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +6 -27
  12. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
  13. package/dist/dist-esm/react-components/src/components/MessageThread.js +5 -4
  14. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  15. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.d.ts +1 -1
  16. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +14 -14
  17. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  18. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.d.ts +1 -1
  19. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +19 -19
  20. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.d.ts +2 -2
  22. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.d.ts +3 -3
  24. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js +9 -9
  25. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.d.ts +4 -4
  27. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +20 -20
  28. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +2 -2
  30. package/dist/dist-esm/react-components/src/components/VideoGallery.js +3 -3
  31. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  32. package/dist/dist-esm/react-components/src/components/index.d.ts +1 -1
  33. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  34. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.d.ts +13 -0
  35. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js +35 -0
  36. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js.map +1 -0
  37. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +2 -2
  38. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +30 -2
  39. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  40. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +4 -0
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +27 -2
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +42 -0
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  48. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +3 -3
  49. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +5 -5
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -0
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  54. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +1 -1
  55. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  56. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +4 -0
  57. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +24 -0
  58. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  59. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +19 -0
  60. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  61. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +4 -0
  62. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +18 -0
  63. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  64. package/package.json +10 -10
@@ -162,7 +162,7 @@ const _toCommunicationIdentifier = (id) => {
162
162
  // Copyright (c) Microsoft Corporation.
163
163
  // Licensed under the MIT license.
164
164
  // GENERATED FILE. DO NOT EDIT MANUALLY.
165
- var telemetryVersion = '1.5.1-alpha-202303260014';
165
+ var telemetryVersion = '1.5.1-alpha-202303290014';
166
166
 
167
167
  // Copyright (c) Microsoft Corporation.
168
168
  /**
@@ -6128,7 +6128,7 @@ const FailedMyChatMessageContainer = Object.assign(Object.assign({}, defaultChat
6128
6128
  /**
6129
6129
  * @private
6130
6130
  */
6131
- const defaultChatMessageContainer = {
6131
+ const defaultChatMessageContainer = (theme) => ({
6132
6132
  maxWidth: '100%',
6133
6133
  minWidth: `${CHAT_MESSAGE_CONTAINER_MIN_WIDTH_REM}rem`,
6134
6134
  marginRight: '0rem',
@@ -6141,9 +6141,37 @@ const defaultChatMessageContainer = {
6141
6141
  // For more info see https://github.com/Azure/communication-ui-library/pull/1507
6142
6142
  marginBlock: '0.125rem'
6143
6143
  },
6144
+ '& blockquote': {
6145
+ backgroundColor: theme.palette.white,
6146
+ clear: 'left',
6147
+ minHeight: '2.25rem',
6148
+ width: 'fit-content',
6149
+ margin: '7px 0px',
6150
+ padding: '7px 15px',
6151
+ border: 'solid',
6152
+ borderRadius: '4px',
6153
+ borderWidth: '1px',
6154
+ borderColor: theme.palette.neutralQuaternary,
6155
+ borderLeftWidth: '4px'
6156
+ },
6157
+ '& table': {
6158
+ backgroundColor: theme.palette.white,
6159
+ border: theme.palette.neutralQuaternary,
6160
+ borderCollapse: 'collapse',
6161
+ tableLayout: 'auto',
6162
+ width: '100%',
6163
+ '& tr': {
6164
+ border: `1px solid ${theme.palette.neutralQuaternary}`,
6165
+ '& td': {
6166
+ border: `1px solid ${theme.palette.neutralQuaternary}`,
6167
+ wordBreak: 'normal',
6168
+ padding: '0px 5px'
6169
+ }
6170
+ }
6171
+ },
6144
6172
  // This makes message bubble show border in high contrast mode making each message distinguishable
6145
6173
  border: '1px solid transparent'
6146
- };
6174
+ });
6147
6175
  /**
6148
6176
  * @private
6149
6177
  */
@@ -7178,7 +7206,7 @@ const DefaultSystemMessage = (props) => {
7178
7206
  }
7179
7207
  return React__default['default'].createElement(React__default['default'].Fragment, null);
7180
7208
  };
7181
- const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate, showMessageStatus, onRenderAvatar, shouldOverlapAvatarAndMessage, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings, _attached, statusToRender, participantCount, readCount, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, disableEditing) => {
7209
+ const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate, showMessageStatus, onRenderAvatar, shouldOverlapAvatarAndMessage, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings, theme, _attached, statusToRender, participantCount, readCount, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, disableEditing) => {
7182
7210
  var _a, _b, _c, _d, _e, _f, _g;
7183
7211
  const messageProps = {
7184
7212
  message,
@@ -7194,7 +7222,7 @@ const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate,
7194
7222
  const myChatMessageStyle = message.status === 'failed'
7195
7223
  ? (_b = (_a = styles === null || styles === void 0 ? void 0 : styles.failedMyChatMessageContainer) !== null && _a !== void 0 ? _a : styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _b !== void 0 ? _b : FailedMyChatMessageContainer
7196
7224
  : (_c = styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _c !== void 0 ? _c : defaultMyChatMessageContainer;
7197
- const chatMessageStyle = (_d = styles === null || styles === void 0 ? void 0 : styles.chatMessageContainer) !== null && _d !== void 0 ? _d : defaultChatMessageContainer;
7225
+ const chatMessageStyle = (_d = styles === null || styles === void 0 ? void 0 : styles.chatMessageContainer) !== null && _d !== void 0 ? _d : defaultChatMessageContainer(theme);
7198
7226
  messageProps.messageContainerStyle = message.mine ? myChatMessageStyle : chatMessageStyle;
7199
7227
  const chatMessageComponent = onRenderMessage === undefined
7200
7228
  ? defaultChatMessageRenderer(messageProps)
@@ -7521,6 +7549,7 @@ const MessageThread = (props) => {
7521
7549
  // -1 because participant count does not include myself
7522
7550
  remoteParticipantsCount: participantCount ? participantCount - 1 : 0 }));
7523
7551
  }, []);
7552
+ const theme = useTheme();
7524
7553
  const messagesToDisplay = React.useMemo(() => memoizeAllMessages((memoizedMessageFn) => {
7525
7554
  return messages.map((message, index) => {
7526
7555
  let key = message.messageId;
@@ -7549,7 +7578,7 @@ const MessageThread = (props) => {
7549
7578
  statusToRender = 'failed';
7550
7579
  }
7551
7580
  }
7552
- return memoizedMessageFn(key !== null && key !== void 0 ? key : 'id_' + index, message, showMessageDate, showMessageStatus, onRenderAvatar, isNarrow, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings,
7581
+ return memoizedMessageFn(key !== null && key !== void 0 ? key : 'id_' + index, message, showMessageDate, showMessageStatus, onRenderAvatar, isNarrow, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings, theme,
7553
7582
  // Temporary solution to make sure we re-render if attach attribute is changed.
7554
7583
  // The proper fix should be in selector.
7555
7584
  message.messageType === 'chat' ? message.attached : undefined, statusToRender, participantCount, readCountForHoveredIndicator, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, props.disableEditing);
@@ -7565,6 +7594,7 @@ const MessageThread = (props) => {
7565
7594
  defaultStatusRenderer,
7566
7595
  defaultChatMessageRenderer,
7567
7596
  strings,
7597
+ theme,
7568
7598
  participantCount,
7569
7599
  readCountForHoveredIndicator,
7570
7600
  onRenderMessage,
@@ -7576,7 +7606,6 @@ const MessageThread = (props) => {
7576
7606
  lastDeliveredChatMessage,
7577
7607
  props.disableEditing
7578
7608
  ]);
7579
- const theme = useTheme();
7580
7609
  const chatBody = React.useMemo(() => {
7581
7610
  var _a;
7582
7611
  return (React__default['default'].createElement(reactAriaLive.LiveAnnouncer, null,
@@ -9254,11 +9283,11 @@ const participantsById = (participants) => {
9254
9283
 
9255
9284
  // Copyright (c) Microsoft Corporation.
9256
9285
  const DEFAULT_MAX_REMOTE_VIDEOSTREAMS = 4;
9257
- const DEFAULT_MAX_HORIZONTAL_GALLERY_DOMINANT_SPEAKERS = 6;
9286
+ const DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS = 6;
9258
9287
  const _useOrganizedParticipants = (props) => {
9259
9288
  const visibleGridParticipants = React.useRef([]);
9260
- const visibleHorizontalGalleryParticipants = React.useRef([]);
9261
- const { remoteParticipants = [], dominantSpeakers = [], maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEOSTREAMS, maxHorizontalGalleryDominantSpeakers = DEFAULT_MAX_HORIZONTAL_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [] } = props;
9289
+ const visibleOverflowGalleryParticipants = React.useRef([]);
9290
+ const { remoteParticipants = [], dominantSpeakers = [], maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEOSTREAMS, maxOverflowGalleryDominantSpeakers = DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [] } = props;
9262
9291
  const videoParticipants = remoteParticipants.filter((p) => { var _a; return (_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable; });
9263
9292
  visibleGridParticipants.current =
9264
9293
  pinnedParticipantUserIds.length > 0 || isScreenShareActive
@@ -9275,12 +9304,12 @@ const _useOrganizedParticipants = (props) => {
9275
9304
  const callingParticipants = remoteParticipantsOrdered.filter((p) => p.state === ('Connecting' ));
9276
9305
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
9277
9306
  const callingParticipantsSet = new Set(callingParticipants.map((p) => p.userId));
9278
- visibleHorizontalGalleryParticipants.current = smartDominantSpeakerParticipants({
9307
+ visibleOverflowGalleryParticipants.current = smartDominantSpeakerParticipants({
9279
9308
  participants: remoteParticipantsOrdered.filter((p) => !visibleGridParticipantsSet.has(p.userId) &&
9280
9309
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ !callingParticipantsSet.has(p.userId)),
9281
9310
  dominantSpeakers: dominantSpeakers,
9282
- lastVisibleParticipants: visibleHorizontalGalleryParticipants.current,
9283
- maxDominantSpeakers: maxHorizontalGalleryDominantSpeakers
9311
+ lastVisibleParticipants: visibleOverflowGalleryParticipants.current,
9312
+ maxDominantSpeakers: maxOverflowGalleryDominantSpeakers
9284
9313
  });
9285
9314
  const getGridParticipants = React.useCallback(() => {
9286
9315
  if (isScreenShareActive) {
@@ -9289,32 +9318,32 @@ const _useOrganizedParticipants = (props) => {
9289
9318
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
9290
9319
  return visibleGridParticipants.current.length > 0
9291
9320
  ? visibleGridParticipants.current
9292
- : visibleHorizontalGalleryParticipants.current.concat(callingParticipants);
9321
+ : visibleOverflowGalleryParticipants.current.concat(callingParticipants);
9293
9322
  }, [
9294
9323
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ callingParticipants,
9295
9324
  isScreenShareActive
9296
9325
  ]);
9297
9326
  const gridParticipants = getGridParticipants();
9298
- const getHorizontalGalleryRemoteParticipants = React.useCallback(() => {
9327
+ const getOverflowGalleryRemoteParticipants = React.useCallback(() => {
9299
9328
  if (isScreenShareActive) {
9300
- // If screen sharing is active, assign video and audio participants as horizontal gallery participants
9329
+ // If screen sharing is active, assign video and audio participants as overflow gallery participants
9301
9330
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
9302
- return visibleGridParticipants.current.concat(visibleHorizontalGalleryParticipants.current.concat(callingParticipants));
9331
+ return visibleGridParticipants.current.concat(visibleOverflowGalleryParticipants.current.concat(callingParticipants));
9303
9332
  }
9304
9333
  else {
9305
9334
  // If screen sharing is not active, then assign all video tiles as grid tiles.
9306
9335
  // If there are no video tiles, then assign audio tiles as grid tiles.
9307
9336
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
9308
9337
  return visibleGridParticipants.current.length > 0
9309
- ? visibleHorizontalGalleryParticipants.current.concat(callingParticipants)
9338
+ ? visibleOverflowGalleryParticipants.current.concat(callingParticipants)
9310
9339
  : [];
9311
9340
  }
9312
9341
  }, [
9313
9342
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ callingParticipants,
9314
9343
  isScreenShareActive
9315
9344
  ]);
9316
- const horizontalGalleryParticipants = getHorizontalGalleryRemoteParticipants();
9317
- return { gridParticipants, horizontalGalleryParticipants };
9345
+ const overflowGalleryParticipants = getOverflowGalleryRemoteParticipants();
9346
+ return { gridParticipants, overflowGalleryParticipants: overflowGalleryParticipants };
9318
9347
  };
9319
9348
  /* @conditional-compile-remove(pinned-participants) */
9320
9349
  const _useOrganizedParticipantsWithPinnedParticipants = (props) => {
@@ -9344,9 +9373,9 @@ const _useOrganizedParticipantsWithPinnedParticipants = (props) => {
9344
9373
  }
9345
9374
  return {
9346
9375
  gridParticipants: props.isScreenShareActive ? [] : pinnedParticipants,
9347
- horizontalGalleryParticipants: props.isScreenShareActive
9348
- ? pinnedParticipants.concat(useOrganizedParticipantsResult.horizontalGalleryParticipants)
9349
- : useOrganizedParticipantsResult.gridParticipants.concat(useOrganizedParticipantsResult.horizontalGalleryParticipants)
9376
+ overflowGalleryParticipants: props.isScreenShareActive
9377
+ ? pinnedParticipants.concat(useOrganizedParticipantsResult.overflowGalleryParticipants)
9378
+ : useOrganizedParticipantsResult.gridParticipants.concat(useOrganizedParticipantsResult.overflowGalleryParticipants)
9350
9379
  };
9351
9380
  };
9352
9381
  const putVideoParticipantsFirst = (remoteParticipants) => {
@@ -9365,7 +9394,7 @@ const putVideoParticipantsFirst = (remoteParticipants) => {
9365
9394
  return remoteParticipantSortedByVideo;
9366
9395
  };
9367
9396
  /**
9368
- * Hook to determine which participants should be in grid and horizontal gallery and their order respectively
9397
+ * Hook to determine which participants should be in grid and overflow gallery and their order respectively
9369
9398
  * @private
9370
9399
  */
9371
9400
  const useOrganizedParticipants = (args) => {
@@ -10080,11 +10109,11 @@ const OverflowGallery = (props) => {
10080
10109
  const { shouldFloatLocalVideo = false, onFetchTilesToRender, isNarrow = false,
10081
10110
  /* @conditional-compile-remove(vertical-gallery) */
10082
10111
  isShort = false, overflowGalleryElements, horizontalGalleryStyles,
10083
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout = 'HorizontalBottom',
10084
- /* @conditional-compile-remove(vertical-gallery) */ veritcalGalleryStyles, onChildrenPerPageChange } = props;
10112
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'HorizontalBottom',
10113
+ /* @conditional-compile-remove(vertical-gallery) */ verticalGalleryStyles, onChildrenPerPageChange } = props;
10085
10114
  const containerStyles = React.useMemo(() => {
10086
10115
  /* @conditional-compile-remove(vertical-gallery) */
10087
- if (overflowGalleryLayout === 'VerticalRight') {
10116
+ if (overflowGalleryPosition === 'VerticalRight') {
10088
10117
  return verticalGalleryContainerStyle(shouldFloatLocalVideo, isNarrow, isShort);
10089
10118
  }
10090
10119
  return horizontalGalleryContainerStyle(shouldFloatLocalVideo, isNarrow);
@@ -10092,23 +10121,23 @@ const OverflowGallery = (props) => {
10092
10121
  shouldFloatLocalVideo,
10093
10122
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
10094
10123
  isNarrow,
10095
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
10124
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition
10096
10125
  ]);
10097
10126
  const galleryStyles = React.useMemo(() => {
10098
10127
  /* @conditional-compile-remove(vertical-gallery) */
10099
- if (overflowGalleryLayout === 'VerticalRight') {
10100
- return react.concatStyleSets(verticalGalleryStyle(isShort), veritcalGalleryStyles);
10128
+ if (overflowGalleryPosition === 'VerticalRight') {
10129
+ return react.concatStyleSets(verticalGalleryStyle(isShort), verticalGalleryStyles);
10101
10130
  }
10102
10131
  return react.concatStyleSets(horizontalGalleryStyle(isNarrow), horizontalGalleryStyles);
10103
10132
  }, [
10104
10133
  isNarrow,
10105
10134
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
10106
10135
  horizontalGalleryStyles,
10107
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
10108
- /* @conditional-compile-remove(vertical-gallery) */ veritcalGalleryStyles
10136
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
10137
+ /* @conditional-compile-remove(vertical-gallery) */ verticalGalleryStyles
10109
10138
  ]);
10110
10139
  /* @conditional-compile-remove(vertical-gallery) */
10111
- if (overflowGalleryLayout === 'VerticalRight') {
10140
+ if (overflowGalleryPosition === 'VerticalRight') {
10112
10141
  return (React__default['default'].createElement(ResponsiveVerticalGallery, { key: "responsive-vertical-gallery", containerStyles: containerStyles, verticalGalleryStyles: galleryStyles, controlBarHeightRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapHeightRem: HORIZONTAL_GALLERY_GAP, isShort: isShort, onFetchTilesToRender: onFetchTilesToRender, onChildrenPerPageChange: onChildrenPerPageChange }, overflowGalleryElements));
10113
10142
  }
10114
10143
  /* @conditional-compile-remove(pinned-participants) */
@@ -10124,7 +10153,7 @@ const OverflowGallery = (props) => {
10124
10153
  // Copyright (c) Microsoft Corporation.
10125
10154
  /**
10126
10155
  * DefaultLayout displays remote participants, local video component, and screen sharing component in
10127
- * a grid and horizontal gallery.
10156
+ * a grid an overflow gallery.
10128
10157
  *
10129
10158
  * @private
10130
10159
  */
@@ -10132,19 +10161,19 @@ const DefaultLayout = (props) => {
10132
10161
  const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth,
10133
10162
  /* @conditional-compile-remove(vertical-gallery) */
10134
10163
  parentHeight, pinnedParticipantUserIds = [],
10135
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout = 'HorizontalBottom' } = props;
10164
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'HorizontalBottom' } = props;
10136
10165
  const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
10137
10166
  /* @conditional-compile-remove(vertical-gallery) */
10138
10167
  const isShort = parentHeight ? isShortHeight(parentHeight) : false;
10139
- // This is for tracking the number of children in the first page of horizontal gallery.
10140
- // This number will be used for the maxHorizontalDominantSpeakers when organizing the remote participants.
10168
+ // This is for tracking the number of children in the first page of overflow gallery.
10169
+ // This number will be used for the maxOverflowGalleryDominantSpeakers when organizing the remote participants.
10141
10170
  const childrenPerPage = React.useRef(4);
10142
- const { gridParticipants, horizontalGalleryParticipants } = useOrganizedParticipants({
10171
+ const { gridParticipants, overflowGalleryParticipants } = useOrganizedParticipants({
10143
10172
  remoteParticipants,
10144
10173
  dominantSpeakers,
10145
10174
  maxRemoteVideoStreams,
10146
10175
  isScreenShareActive: !!screenShareComponent,
10147
- maxHorizontalGalleryDominantSpeakers: screenShareComponent
10176
+ maxOverflowGalleryDominantSpeakers: screenShareComponent
10148
10177
  ? childrenPerPage.current - (pinnedParticipantUserIds.length % childrenPerPage.current)
10149
10178
  : childrenPerPage.current,
10150
10179
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds
@@ -10166,7 +10195,7 @@ const DefaultLayout = (props) => {
10166
10195
  const [indexesToRender, setIndexesToRender] = React.useState([
10167
10196
  ...Array(maxRemoteVideoStreams - activeVideoStreams).keys()
10168
10197
  ]);
10169
- const horizontalGalleryTiles = horizontalGalleryParticipants.map((p, i) => {
10198
+ const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
10170
10199
  var _a, _b;
10171
10200
  return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
10172
10201
  ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && indexesToRender.includes(i) && activeVideoStreams++ < maxRemoteVideoStreams
@@ -10176,32 +10205,32 @@ const DefaultLayout = (props) => {
10176
10205
  gridTiles.push(localVideoComponent);
10177
10206
  }
10178
10207
  const overflowGallery = React.useMemo(() => {
10179
- if (horizontalGalleryTiles.length === 0) {
10208
+ if (overflowGalleryTiles.length === 0) {
10180
10209
  return null;
10181
10210
  }
10182
10211
  return (React__default['default'].createElement(OverflowGallery, { isNarrow: isNarrow,
10183
10212
  /* @conditional-compile-remove(vertical-gallery) */
10184
- isShort: isShort, shouldFloatLocalVideo: false, overflowGalleryElements: horizontalGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10213
+ isShort: isShort, shouldFloatLocalVideo: false, overflowGalleryElements: overflowGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10185
10214
  /* @conditional-compile-remove(vertical-gallery) */
10186
- veritcalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
10215
+ verticalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
10187
10216
  /* @conditional-compile-remove(pinned-participants) */
10188
- overflowGalleryLayout: overflowGalleryLayout, onFetchTilesToRender: setIndexesToRender, onChildrenPerPageChange: (n) => {
10217
+ overflowGalleryPosition: overflowGalleryPosition, onFetchTilesToRender: setIndexesToRender, onChildrenPerPageChange: (n) => {
10189
10218
  childrenPerPage.current = n;
10190
10219
  } }));
10191
10220
  }, [
10192
10221
  isNarrow,
10193
10222
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
10194
- horizontalGalleryTiles,
10223
+ overflowGalleryTiles,
10195
10224
  styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10225
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
10196
10226
  setIndexesToRender,
10197
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
10198
10227
  /* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery
10199
10228
  ]);
10200
10229
  return (React__default['default'].createElement(react.Stack
10201
10230
  /* @conditional-compile-remove(vertical-gallery) */
10202
10231
  , {
10203
10232
  /* @conditional-compile-remove(vertical-gallery) */
10204
- horizontal: overflowGalleryLayout === 'VerticalRight', styles: rootLayoutStyle$1, tokens: videoGalleryLayoutGap },
10233
+ horizontal: overflowGalleryPosition === 'VerticalRight', styles: rootLayoutStyle$1, tokens: videoGalleryLayoutGap },
10205
10234
  screenShareComponent ? (screenShareComponent) : (React__default['default'].createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
10206
10235
  overflowGallery));
10207
10236
  };
@@ -10945,26 +10974,26 @@ const layerHostStyle = {
10945
10974
  // Copyright (c) Microsoft Corporation.
10946
10975
  /**
10947
10976
  * FloatingLocalVideoLayout displays remote participants and a screen sharing component in
10948
- * a grid and horizontal gallery while floating the local video
10977
+ * a grid and overflow gallery while floating the local video
10949
10978
  *
10950
10979
  * @private
10951
10980
  */
10952
10981
  const FloatingLocalVideoLayout = (props) => {
10953
- const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, showCameraSwitcherInLocalPreview, parentWidth, parentHeight, pinnedParticipantUserIds = [],
10954
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout = 'HorizontalBottom' } = props;
10982
+ const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, showCameraSwitcherInLocalPreview, parentWidth, parentHeight,
10983
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'HorizontalBottom', pinnedParticipantUserIds = [] } = props;
10955
10984
  const theme = useTheme();
10956
10985
  const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
10957
10986
  /* @conditional-compile-remove(vertical-gallery) */
10958
10987
  const isShort = parentHeight ? isShortHeight(parentHeight) : false;
10959
- // This is for tracking the number of children in the first page of horizontal gallery.
10960
- // This number will be used for the maxHorizontalDominantSpeakers when organizing the remote participants.
10988
+ // This is for tracking the number of children in the first page of overflow gallery.
10989
+ // This number will be used for the maxOverflowGalleryDominantSpeakers when organizing the remote participants.
10961
10990
  const childrenPerPage = React.useRef(4);
10962
- const { gridParticipants, horizontalGalleryParticipants } = useOrganizedParticipants({
10991
+ const { gridParticipants, overflowGalleryParticipants } = useOrganizedParticipants({
10963
10992
  remoteParticipants,
10964
10993
  dominantSpeakers,
10965
10994
  maxRemoteVideoStreams,
10966
10995
  isScreenShareActive: !!screenShareComponent,
10967
- maxHorizontalGalleryDominantSpeakers: screenShareComponent
10996
+ maxOverflowGalleryDominantSpeakers: screenShareComponent
10968
10997
  ? childrenPerPage.current - (pinnedParticipantUserIds.length % childrenPerPage.current)
10969
10998
  : childrenPerPage.current,
10970
10999
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds
@@ -10990,7 +11019,7 @@ const FloatingLocalVideoLayout = (props) => {
10990
11019
  const [indexesToRender, setIndexesToRender] = React.useState([
10991
11020
  ...Array(maxRemoteVideoStreams - activeVideoStreams).keys()
10992
11021
  ]);
10993
- const horizontalGalleryTiles = horizontalGalleryParticipants.map((p, i) => {
11022
+ const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
10994
11023
  var _a, _b;
10995
11024
  return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
10996
11025
  ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && indexesToRender.includes(i) && activeVideoStreams++ < maxRemoteVideoStreams
@@ -11002,7 +11031,7 @@ const FloatingLocalVideoLayout = (props) => {
11002
11031
  return SMALL_FLOATING_MODAL_SIZE_REM;
11003
11032
  }
11004
11033
  /* @conditional-compile-remove(vertical-gallery) */
11005
- if ((horizontalGalleryTiles.length > 0 || !!screenShareComponent) && overflowGalleryLayout === 'VerticalRight') {
11034
+ if ((overflowGalleryTiles.length > 0 || !!screenShareComponent) && overflowGalleryPosition === 'VerticalRight') {
11006
11035
  return isNarrow
11007
11036
  ? SMALL_FLOATING_MODAL_SIZE_REM
11008
11037
  : isShort
@@ -11011,10 +11040,10 @@ const FloatingLocalVideoLayout = (props) => {
11011
11040
  }
11012
11041
  return LARGE_FLOATING_MODAL_SIZE_REM;
11013
11042
  }, [
11014
- horizontalGalleryTiles.length,
11043
+ overflowGalleryTiles.length,
11015
11044
  isNarrow,
11016
11045
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
11017
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
11046
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
11018
11047
  /* @conditional-compile-remove(vertical-gallery) */ screenShareComponent
11019
11048
  ]);
11020
11049
  const wrappedLocalVideoComponent = localVideoComponent && shouldFloatLocalVideo ? (
@@ -11022,30 +11051,30 @@ const FloatingLocalVideoLayout = (props) => {
11022
11051
  showCameraSwitcherInLocalPreview ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileWithControlsContainerStyle(theme, localVideoSizeRem), {
11023
11052
  boxShadow: theme.effects.elevation8,
11024
11053
  zIndex: LOCAL_VIDEO_TILE_ZINDEX
11025
- }) }, localVideoComponent)) : horizontalGalleryTiles.length > 0 || !!screenShareComponent ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, localVideoSizeRem)) }, localVideoComponent)) : (React__default['default'].createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, localVideoSizeRem: localVideoSizeRem, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
11054
+ }) }, localVideoComponent)) : overflowGalleryTiles.length > 0 || !!screenShareComponent ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, localVideoSizeRem)) }, localVideoComponent)) : (React__default['default'].createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, localVideoSizeRem: localVideoSizeRem, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
11026
11055
  const overflowGallery = React.useMemo(() => {
11027
- if (horizontalGalleryTiles.length === 0 && !screenShareComponent) {
11056
+ if (overflowGalleryTiles.length === 0 && !screenShareComponent) {
11028
11057
  return null;
11029
11058
  }
11030
11059
  return (React__default['default'].createElement(OverflowGallery
11031
11060
  /* @conditional-compile-remove(vertical-gallery) */
11032
11061
  , {
11033
11062
  /* @conditional-compile-remove(vertical-gallery) */
11034
- isShort: isShort, onFetchTilesToRender: setIndexesToRender, isNarrow: isNarrow, shouldFloatLocalVideo: true, overflowGalleryElements: horizontalGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
11063
+ isShort: isShort, onFetchTilesToRender: setIndexesToRender, isNarrow: isNarrow, shouldFloatLocalVideo: true, overflowGalleryElements: overflowGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
11035
11064
  /* @conditional-compile-remove(vertical-gallery) */
11036
- veritcalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
11065
+ verticalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
11037
11066
  /* @conditional-compile-remove(vertical-gallery) */
11038
- overflowGalleryLayout: overflowGalleryLayout, onChildrenPerPageChange: (n) => {
11067
+ overflowGalleryPosition: overflowGalleryPosition, onChildrenPerPageChange: (n) => {
11039
11068
  childrenPerPage.current = n;
11040
11069
  } }));
11041
11070
  }, [
11042
11071
  isNarrow,
11043
11072
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
11044
- horizontalGalleryTiles,
11073
+ overflowGalleryTiles,
11045
11074
  styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
11075
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
11046
11076
  setIndexesToRender,
11047
11077
  screenShareComponent,
11048
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
11049
11078
  /* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery
11050
11079
  ]);
11051
11080
  return (React__default['default'].createElement(react.Stack, { styles: rootLayoutStyle },
@@ -11055,7 +11084,7 @@ const FloatingLocalVideoLayout = (props) => {
11055
11084
  /* @conditional-compile-remove(vertical-gallery) */
11056
11085
  , {
11057
11086
  /* @conditional-compile-remove(vertical-gallery) */
11058
- horizontal: overflowGalleryLayout === 'VerticalRight', styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },
11087
+ horizontal: overflowGalleryPosition === 'VerticalRight', styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },
11059
11088
  screenShareComponent ? (screenShareComponent) : (React__default['default'].createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
11060
11089
  overflowGallery)));
11061
11090
  };
@@ -11106,7 +11135,7 @@ const VideoGallery = (props) => {
11106
11135
  /* @conditional-compile-remove(pinned-participants) */
11107
11136
  remoteVideoTileMenuOptions = DEFAULT_REMOTE_VIDEO_TILE_MENU_OPTIONS,
11108
11137
  /* @conditional-compile-remove(vertical-gallery) */
11109
- overflowGalleryLayout = 'HorizontalBottom' } = props;
11138
+ overflowGalleryPosition = 'HorizontalBottom' } = props;
11110
11139
  const ids = useIdentifiers();
11111
11140
  const theme = useTheme();
11112
11141
  const localeStrings = useLocale$1().strings.videoGallery;
@@ -11268,7 +11297,7 @@ const VideoGallery = (props) => {
11268
11297
  parentWidth: containerWidth,
11269
11298
  parentHeight: containerHeight,
11270
11299
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds: pinnedParticipants,
11271
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
11300
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition
11272
11301
  }), [
11273
11302
  remoteParticipants,
11274
11303
  screenShareComponent,
@@ -11282,7 +11311,7 @@ const VideoGallery = (props) => {
11282
11311
  onRenderRemoteVideoTile,
11283
11312
  defaultOnRenderVideoTile,
11284
11313
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipants,
11285
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
11314
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition
11286
11315
  ]);
11287
11316
  const videoGalleryLayout = React.useMemo(() => {
11288
11317
  if (layout === 'floatingLocalVideo') {
@@ -13251,6 +13280,38 @@ const _DevicePermissionDropdown = (props) => {
13251
13280
  }, options: options !== null && options !== void 0 ? options : [], styles: styles }));
13252
13281
  };
13253
13282
 
13283
+ // Copyright (c) Microsoft Corporation.
13284
+ /**
13285
+ * @private
13286
+ */
13287
+ react.mergeStyles({
13288
+ overflowY: 'scroll',
13289
+ overflowX: 'hidden',
13290
+ width: '100%',
13291
+ height: _pxToRem(60),
13292
+ display: 'grid',
13293
+ gridTemplateColumns: 'auto 1fr',
13294
+ alignItems: 'stretch',
13295
+ columnGap: _pxToRem(16),
13296
+ padding: _pxToRem(8)
13297
+ });
13298
+ /**
13299
+ * @private
13300
+ */
13301
+ react.mergeStyles({
13302
+ fontWeight: 600,
13303
+ fontSize: _pxToRem(12),
13304
+ lineHeight: _pxToRem(30)
13305
+ });
13306
+ /**
13307
+ * @private
13308
+ */
13309
+ react.mergeStyles({
13310
+ fontWeight: 400,
13311
+ fontSize: _pxToRem(16),
13312
+ lineHeight: _pxToRem(30)
13313
+ });
13314
+
13254
13315
  // Copyright (c) Microsoft Corporation.
13255
13316
  // Licensed under the MIT license.
13256
13317
  /**
@@ -17839,15 +17900,15 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
17839
17900
  }),
17840
17901
  /* @conditional-compile-remove(video-background-effects) */
17841
17902
  onRemoveVideoBackgroundEffects: () => __awaiter$b(void 0, void 0, void 0, function* () {
17842
- throw new Error('Not implemented');
17903
+ return yield adapter.stopVideoBackgroundEffect();
17843
17904
  }),
17844
17905
  /* @conditional-compile-remove(video-background-effects) */
17845
- onBlurVideoBackground: () => __awaiter$b(void 0, void 0, void 0, function* () {
17846
- throw new Error('Not implemented');
17906
+ onBlurVideoBackground: (bgBlurConfig) => __awaiter$b(void 0, void 0, void 0, function* () {
17907
+ return yield adapter.blurVideoBackground(bgBlurConfig);
17847
17908
  }),
17848
17909
  /* @conditional-compile-remove(video-background-effects) */
17849
- onReplaceVideoBackground: () => __awaiter$b(void 0, void 0, void 0, function* () {
17850
- throw new Error('Not implemented');
17910
+ onReplaceVideoBackground: (bgReplacementConfig) => __awaiter$b(void 0, void 0, void 0, function* () {
17911
+ return yield adapter.replaceVideoBackground(bgReplacementConfig);
17851
17912
  })
17852
17913
  }));
17853
17914
 
@@ -19552,7 +19613,7 @@ const CallArrangement = (props) => {
19552
19613
  const isMobileWithActivePane = props.mobileView && activePane;
19553
19614
  /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */
19554
19615
  const callCompositeContainerCSS = React.useMemo(() => {
19555
- return { display: isMobileWithActivePane ? 'none' : 'flex', width: '100%', height: '100%' };
19616
+ return { display: isMobileWithActivePane ? 'none' : 'flex', minWidth: 0, width: '100%', height: '100%' };
19556
19617
  }, [isMobileWithActivePane]);
19557
19618
  // To be removed once feature is out of beta, replace with callCompositeContainerCSS
19558
19619
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
@@ -19817,7 +19878,7 @@ const MediaGallery = (props) => {
19817
19878
  : { kind: 'contextual' };
19818
19879
  }, [(_a = props.remoteVideoTileMenuOptions) === null || _a === void 0 ? void 0 : _a.isHidden, props.isMobile, props.drawerMenuHostId]);
19819
19880
  /* @conditional-compile-remove(vertical-gallery) */
19820
- const overflowGalleryLayout = React.useMemo(() => containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9
19881
+ const overflowGalleryPosition = React.useMemo(() => containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9
19821
19882
  ? 'VerticalRight'
19822
19883
  : 'HorizontalBottom', [containerWidth, containerHeight]);
19823
19884
  const VideoGalleryMemoized = React.useMemo(() => {
@@ -19825,14 +19886,14 @@ const MediaGallery = (props) => {
19825
19886
  /* @conditional-compile-remove(pinned-participants) */
19826
19887
  remoteVideoTileMenuOptions: remoteVideoTileMenuOptions,
19827
19888
  /* @conditional-compile-remove(vertical-gallery) */
19828
- overflowGalleryLayout: overflowGalleryLayout })));
19889
+ overflowGalleryPosition: overflowGalleryPosition })));
19829
19890
  }, [
19830
19891
  videoGalleryProps,
19831
19892
  props.isMobile,
19832
19893
  onRenderAvatar,
19833
19894
  cameraSwitcherProps,
19834
19895
  /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions,
19835
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
19896
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition
19836
19897
  ]);
19837
19898
  return (React__default['default'].createElement("div", { ref: containerRef, style: mediaGalleryContainerStyles },
19838
19899
  React__default['default'].createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),
@@ -20822,7 +20883,7 @@ const ConfigurationPage = (props) => {
20822
20883
  }
20823
20884
  }
20824
20885
  const locale = useLocale();
20825
- const title = (React__default['default'].createElement(react.Stack.Item, { className: mobileView ? titleContainerStyleMobile : titleContainerStyleDesktop }, locale.strings.call.configurationPageTitle));
20886
+ const title = (React__default['default'].createElement(react.Stack.Item, { className: mobileView ? titleContainerStyleMobile : titleContainerStyleDesktop, role: "heading", "aria-level": 1 }, locale.strings.call.configurationPageTitle));
20826
20887
  const callDescription = locale.strings.call.configurationPageCallDetails && (React__default['default'].createElement(react.Stack.Item, { className: mobileView ? callDetailsStyleMobile : callDetailsStyleDesktop }, locale.strings.call.configurationPageCallDetails));
20827
20888
  let mobileWithPreview = mobileView;
20828
20889
  /* @conditional-compile-remove(rooms) */
@@ -21658,6 +21719,7 @@ class CallContext {
21658
21719
  /* @conditional-compile-remove(unsupported-browser) */ environmentInfo: clientState.environmentInfo,
21659
21720
  /* @conditional-compile-remove(unsupported-browser) */ unsupportedBrowserVersionsAllowed: false,
21660
21721
  /* @conditional-compile-remove(rooms) */ roleHint: options === null || options === void 0 ? void 0 : options.roleHint,
21722
+ /* @conditional-compile-remove(video-background-effects) */ videoBackgroundImages: options === null || options === void 0 ? void 0 : options.videoBackgroundImages,
21661
21723
  cameraStatus: undefined
21662
21724
  };
21663
21725
  this.emitter.setMaxListeners((_b = options === null || options === void 0 ? void 0 : options.maxListeners) !== null && _b !== void 0 ? _b : 50);
@@ -21841,6 +21903,12 @@ class AzureCommunicationCallAdapter {
21841
21903
  this.sendDtmfTone.bind(this);
21842
21904
  /* @conditional-compile-remove(unsupported-browser) */
21843
21905
  this.allowUnsupportedBrowserVersion.bind(this);
21906
+ /* @conditional-compile-remove(video-background-effects) */
21907
+ this.blurVideoBackground.bind(this);
21908
+ /* @conditional-compile-remove(video-background-effects) */
21909
+ this.replaceVideoBackground.bind(this);
21910
+ /* @conditional-compile-remove(video-background-effects) */
21911
+ this.stopVideoBackgroundEffect.bind(this);
21844
21912
  }
21845
21913
  dispose() {
21846
21914
  this.resetDiagnosticsForwarder();
@@ -22049,6 +22117,24 @@ class AzureCommunicationCallAdapter {
22049
22117
  this.context.setAllowedUnsupportedBrowser();
22050
22118
  this.context.updateClientState(this.callClient.getState());
22051
22119
  }
22120
+ /* @conditional-compile-remove(video-background-effects) */
22121
+ blurVideoBackground(bgBlurConfig) {
22122
+ return __awaiter$4(this, void 0, void 0, function* () {
22123
+ yield this.handlers.onBlurVideoBackground(bgBlurConfig);
22124
+ });
22125
+ }
22126
+ /* @conditional-compile-remove(video-background-effects) */
22127
+ replaceVideoBackground(bgReplacementConfig) {
22128
+ return __awaiter$4(this, void 0, void 0, function* () {
22129
+ yield this.handlers.onReplaceVideoBackground(bgReplacementConfig);
22130
+ });
22131
+ }
22132
+ /* @conditional-compile-remove(video-background-effects) */
22133
+ stopVideoBackgroundEffect() {
22134
+ return __awaiter$4(this, void 0, void 0, function* () {
22135
+ yield this.handlers.onRemoveVideoBackgroundEffects();
22136
+ });
22137
+ }
22052
22138
  startCall(participants, options) {
22053
22139
  var _a, _b;
22054
22140
  if (_isInCall((_b = (_a = this.getState().call) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : 'None')) {
@@ -22160,10 +22246,10 @@ class AzureCommunicationCallAdapter {
22160
22246
  }
22161
22247
  onRemoteParticipantsUpdated({ added, removed }) {
22162
22248
  if (added && added.length > 0) {
22163
- this.emitter.emit('participantsJoined', added);
22249
+ this.emitter.emit('participantsJoined', { joined: added });
22164
22250
  }
22165
22251
  if (removed && removed.length > 0) {
22166
- this.emitter.emit('participantsLeft', removed);
22252
+ this.emitter.emit('participantsLeft', { removed: removed });
22167
22253
  }
22168
22254
  added.forEach((participant) => {
22169
22255
  this.participantSubscribers.set(toFlatCommunicationIdentifier(participant.identifier), new ParticipantSubscriber(participant, this.emitter));
@@ -23148,6 +23234,24 @@ class CallWithChatBackedCallAdapter {
23148
23234
  allowUnsupportedBrowserVersion() {
23149
23235
  return this.callWithChatAdapter.allowUnsupportedBrowserVersion();
23150
23236
  }
23237
+ /* @conditional-compile-remove(video-background-effects) */
23238
+ blurVideoBackground(bgBlurConfig) {
23239
+ return __awaiter$3(this, void 0, void 0, function* () {
23240
+ yield this.callWithChatAdapter.blurVideoBackground(bgBlurConfig);
23241
+ });
23242
+ }
23243
+ /* @conditional-compile-remove(video-background-effects) */
23244
+ replaceVideoBackground(bgReplacementConfig) {
23245
+ return __awaiter$3(this, void 0, void 0, function* () {
23246
+ yield this.callWithChatAdapter.replaceVideoBackground(bgReplacementConfig);
23247
+ });
23248
+ }
23249
+ /* @conditional-compile-remove(video-background-effects) */
23250
+ stopVideoBackgroundEffect() {
23251
+ return __awaiter$3(this, void 0, void 0, function* () {
23252
+ yield this.callWithChatAdapter.stopVideoBackgroundEffect();
23253
+ });
23254
+ }
23151
23255
  }
23152
23256
  function callAdapterStateFromCallWithChatAdapterState(callWithChatAdapterState) {
23153
23257
  return {
@@ -23971,6 +24075,12 @@ class AzureCommunicationCallWithChatAdapter {
23971
24075
  this.sendDtmfTone.bind(this);
23972
24076
  /* @conditional-compile-remove(unsupported-browser) */
23973
24077
  this.allowUnsupportedBrowserVersion.bind(this);
24078
+ /* @conditional-compile-remove(video-background-effects) */
24079
+ this.blurVideoBackground.bind(this);
24080
+ /* @conditional-compile-remove(video-background-effects) */
24081
+ this.replaceVideoBackground.bind(this);
24082
+ /* @conditional-compile-remove(video-background-effects) */
24083
+ this.stopVideoBackgroundEffect.bind(this);
23974
24084
  }
23975
24085
  /** Join existing Call. */
23976
24086
  joinCall(microphoneOn) {
@@ -24187,6 +24297,24 @@ class AzureCommunicationCallWithChatAdapter {
24187
24297
  allowUnsupportedBrowserVersion() {
24188
24298
  return this.callAdapter.allowUnsupportedBrowserVersion();
24189
24299
  }
24300
+ /* @conditional-compile-remove(video-background-effects) */
24301
+ blurVideoBackground(bgBlurConfig) {
24302
+ return __awaiter(this, void 0, void 0, function* () {
24303
+ yield this.callAdapter.blurVideoBackground(bgBlurConfig);
24304
+ });
24305
+ }
24306
+ /* @conditional-compile-remove(video-background-effects) */
24307
+ replaceVideoBackground(bgReplacementConfig) {
24308
+ return __awaiter(this, void 0, void 0, function* () {
24309
+ yield this.callAdapter.replaceVideoBackground(bgReplacementConfig);
24310
+ });
24311
+ }
24312
+ /* @conditional-compile-remove(video-background-effects) */
24313
+ stopVideoBackgroundEffect() {
24314
+ return __awaiter(this, void 0, void 0, function* () {
24315
+ return yield this.callAdapter.stopVideoBackgroundEffect();
24316
+ });
24317
+ }
24190
24318
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
24191
24319
  on(event, listener) {
24192
24320
  switch (event) {