@azure/communication-react 1.5.1-alpha-202303220012 → 1.5.1-alpha-202303240013

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 (56) hide show
  1. package/dist/communication-react.d.ts +8 -0
  2. package/dist/dist-cjs/communication-react/index.js +156 -105
  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/react-components/src/components/CameraButton.d.ts +4 -0
  7. package/dist/dist-esm/react-components/src/components/CameraButton.js +12 -0
  8. package/dist/dist-esm/react-components/src/components/CameraButton.js.map +1 -1
  9. package/dist/dist-esm/react-components/src/components/HorizontalGallery.js +7 -2
  10. package/dist/dist-esm/react-components/src/components/HorizontalGallery.js.map +1 -1
  11. package/dist/dist-esm/react-components/src/components/ResponsiveHorizontalGallery.d.ts +0 -1
  12. package/dist/dist-esm/react-components/src/components/ResponsiveHorizontalGallery.js +1 -2
  13. package/dist/dist-esm/react-components/src/components/ResponsiveHorizontalGallery.js.map +1 -1
  14. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.d.ts +1 -1
  15. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js +11 -7
  16. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js.map +1 -1
  17. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +10 -10
  18. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js +2 -2
  20. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.d.ts +9 -9
  22. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js +15 -15
  23. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js +2 -2
  25. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.d.ts +4 -1
  27. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.js +8 -7
  28. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.js +4 -7
  30. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.js.map +1 -1
  31. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/OverflowGalleryUtils.d.ts +0 -1
  32. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/OverflowGalleryUtils.js +5 -4
  33. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/OverflowGalleryUtils.js.map +1 -1
  34. package/dist/dist-esm/react-components/src/components/styles/HorizontalGallery.styles.js +1 -0
  35. package/dist/dist-esm/react-components/src/components/styles/HorizontalGallery.styles.js.map +1 -1
  36. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.d.ts +2 -0
  37. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js +1 -0
  38. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js.map +1 -1
  39. package/dist/dist-esm/react-components/src/theming/icons.d.ts +1 -0
  40. package/dist/dist-esm/react-components/src/theming/icons.js +5 -1
  41. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +1 -1
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.d.ts +5 -4
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.js +3 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.js.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +13 -1
  48. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  49. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.d.ts +1 -0
  50. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +4 -2
  51. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
  52. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.d.ts +11 -0
  53. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +19 -0
  54. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +1 -0
  55. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +1 -0
  56. package/package.json +8 -8
@@ -2888,6 +2888,10 @@ export declare interface CameraButtonProps extends ControlBarButtonProps {
2888
2888
  * Styles for {@link CameraButton} and the device selection flyout.
2889
2889
  */
2890
2890
  styles?: Partial<CameraButtonStyles>;
2891
+ /**
2892
+ * Callback when a effects is clicked
2893
+ */
2894
+ onShowVideoEffectsPicker?: (showVideoEffectsOptions: boolean) => void;
2891
2895
  }
2892
2896
 
2893
2897
  /**
@@ -4628,6 +4632,7 @@ export declare const DEFAULT_COMPONENT_ICONS: {
4628
4632
  SplitButtonPrimaryActionMicMuted: JSX.Element;
4629
4633
  VerticalGalleryLeftButton: JSX.Element;
4630
4634
  VerticalGalleryRightButton: JSX.Element;
4635
+ OptionsVideoBackgroundEffect: JSX.Element;
4631
4636
  };
4632
4637
 
4633
4638
  /**
@@ -4735,6 +4740,7 @@ export declare const DEFAULT_COMPOSITE_ICONS: {
4735
4740
  SplitButtonPrimaryActionMicMuted: JSX.Element;
4736
4741
  VerticalGalleryLeftButton: JSX.Element;
4737
4742
  VerticalGalleryRightButton: JSX.Element;
4743
+ OptionsVideoBackgroundEffect: JSX.Element;
4738
4744
  };
4739
4745
 
4740
4746
  /**
@@ -5737,6 +5743,8 @@ export declare interface _Identifiers {
5737
5743
  overflowGalleryLeftNavButton: string;
5738
5744
  /** `data-ui-id` value for overflow gallery component's right navigation button */
5739
5745
  overflowGalleryRightNavButton: string;
5746
+ /** `data-ui-id` value for the video tiles in the horizontal gallery */
5747
+ horizontalGalleryVideoTile: string;
5740
5748
  /** `data-ui-id` value for `VerticalGallery` Component's children video tiles */
5741
5749
  verticalGalleryVideoTile: string;
5742
5750
  /** `data-ui-id` value for `VerticalGallery` Component's page counter */
@@ -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-202303220012';
165
+ var telemetryVersion = '1.5.1-alpha-202303240013';
166
166
 
167
167
  // Copyright (c) Microsoft Corporation.
168
168
  /**
@@ -4326,6 +4326,7 @@ const defaultIdentifiers = {
4326
4326
  overflowGalleryRightNavButton: 'overflow-gallery-right-nav-button',
4327
4327
  /* @conditional-compile-remove(vertical-gallery) */
4328
4328
  verticalGalleryVideoTile: 'vertical-gallery-video-tile',
4329
+ horizontalGalleryVideoTile: 'horizontal-gallery-video-tile',
4329
4330
  /* @conditional-compile-remove(vertical-gallery) */
4330
4331
  verticalGalleryPageCounter: 'vertical-gallery-page-counter'
4331
4332
  };
@@ -5332,7 +5333,9 @@ const DEFAULT_COMPONENT_ICONS = {
5332
5333
  /* @conditional-compile-remove(vertical-gallery) */
5333
5334
  VerticalGalleryLeftButton: React__default['default'].createElement(reactIcons.ChevronLeft20Regular, null),
5334
5335
  /* @conditional-compile-remove(vertical-gallery) */
5335
- VerticalGalleryRightButton: React__default['default'].createElement(reactIcons.ChevronRight20Regular, null)
5336
+ VerticalGalleryRightButton: React__default['default'].createElement(reactIcons.ChevronRight20Regular, null),
5337
+ /* @conditional-compile-remove(video-background-effects) */
5338
+ OptionsVideoBackgroundEffect: React__default['default'].createElement(reactIcons.VideoBackgroundEffect20Regular, null)
5336
5339
  };
5337
5340
 
5338
5341
  // Copyright (c) Microsoft Corporation.
@@ -9406,6 +9409,7 @@ const rootStyle$1 = {
9406
9409
  */
9407
9410
  const childrenContainerStyle$1 = {
9408
9411
  height: '100%',
9412
+ width: '100%',
9409
9413
  gap: `${HORIZONTAL_GALLERY_GAP}rem`
9410
9414
  };
9411
9415
 
@@ -9442,7 +9446,7 @@ const DEFAULT_CHILDREN_PER_PAGE = 5;
9442
9446
  * @returns
9443
9447
  */
9444
9448
  const HorizontalGallery = (props) => {
9445
- var _a, _b;
9449
+ var _a;
9446
9450
  const { children, childrenPerPage = DEFAULT_CHILDREN_PER_PAGE, styles, onFetchTilesToRender } = props;
9447
9451
  const ids = useIdentifiers();
9448
9452
  const [page, setPage] = React.useState(0);
@@ -9466,13 +9470,18 @@ const HorizontalGallery = (props) => {
9466
9470
  const showButtons = numberOfChildren > childrenPerPage;
9467
9471
  const disablePreviousButton = page === 0;
9468
9472
  const disableNextButton = page === lastPage;
9473
+ const childrenStyles = React.useMemo(() => {
9474
+ return { root: styles === null || styles === void 0 ? void 0 : styles.children };
9475
+ }, [styles === null || styles === void 0 ? void 0 : styles.children]);
9469
9476
  // If children per page is 0 or less return empty element
9470
9477
  if (childrenPerPage <= 0) {
9471
9478
  return React__default['default'].createElement(React__default['default'].Fragment, null);
9472
9479
  }
9473
9480
  return (React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(rootStyle$1, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root) },
9474
9481
  showButtons && (React__default['default'].createElement(HorizontalGalleryNavigationButton, { key: "previous-nav-button", icon: React__default['default'].createElement(react.Icon, { iconName: "HorizontalGalleryLeftButton" }), styles: styles === null || styles === void 0 ? void 0 : styles.previousButton, onClick: () => setPage(Math.max(0, Math.min(lastPage, page - 1))), disabled: disablePreviousButton, identifier: ids.overflowGalleryLeftNavButton })),
9475
- React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(childrenContainerStyle$1, { '> *': (_b = props.styles) === null || _b === void 0 ? void 0 : _b.children }) }, childrenOnCurrentPage),
9482
+ React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(childrenContainerStyle$1) }, childrenOnCurrentPage.map((child, i) => {
9483
+ return (React__default['default'].createElement(react.Stack.Item, { styles: childrenStyles, key: i, "data-ui-id": ids.horizontalGalleryVideoTile }, child));
9484
+ })),
9476
9485
  showButtons && (React__default['default'].createElement(HorizontalGalleryNavigationButton, { key: "next-nav-button", icon: React__default['default'].createElement(react.Icon, { iconName: "HorizontalGalleryRightButton" }), styles: styles === null || styles === void 0 ? void 0 : styles.nextButton, onClick: () => setPage(Math.min(lastPage, page + 1)), disabled: disableNextButton, identifier: ids.overflowGalleryRightNavButton }))));
9477
9486
  };
9478
9487
  const HorizontalGalleryNavigationButton = (props) => {
@@ -9488,22 +9497,22 @@ react.mergeStyles({ position: 'relative', width: '100%', height: '100%' });
9488
9497
  /**
9489
9498
  * Small floating modal width and height in rem for small screen
9490
9499
  */
9491
- const SMALL_FLOATING_MODAL_SIZE_PX = { width: 58, height: 104 };
9500
+ const SMALL_FLOATING_MODAL_SIZE_REM = { width: 3.625, height: 6.5 };
9492
9501
  /**
9493
9502
  * Large floating modal width and height in rem for large screen
9494
9503
  * Aspect ratio: 16:9
9495
9504
  */
9496
- const LARGE_FLOATING_MODAL_SIZE_PX = { width: 215, height: 120 };
9505
+ const LARGE_FLOATING_MODAL_SIZE_REM = { width: 13.438, height: 7.5 };
9497
9506
  /**
9498
9507
  * Vertical gallery floating modal width and height in rem
9499
9508
  * Aspect ratio: 16:9
9500
9509
  */
9501
- const SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX = { width: 144, height: 81 };
9510
+ const SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM = { width: 9, height: 5.063 };
9502
9511
  /**
9503
9512
  * Vertical gallery floating modal width and height in rem
9504
9513
  * Aspect ratio: 16:9
9505
9514
  */
9506
- const VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX = { width: 176, height: 100 };
9515
+ const VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM = { width: 11, height: 6.25 };
9507
9516
  /**
9508
9517
  * @private
9509
9518
  * z-index to ensure that the local video tile is above the video gallery.
@@ -9512,31 +9521,31 @@ const LOCAL_VIDEO_TILE_ZINDEX = 2;
9512
9521
  /**
9513
9522
  * @private
9514
9523
  */
9515
- const localVideoTileContainerStyle = (theme, localVideoTileSize) => {
9524
+ const localVideoTileContainerStyle = (theme, localVideoTileSizeRem) => {
9516
9525
  return {
9517
- minWidth: _pxToRem(localVideoTileSize.width),
9518
- minHeight: _pxToRem(localVideoTileSize.height),
9526
+ minWidth: `${localVideoTileSizeRem.width}rem`,
9527
+ minHeight: `${localVideoTileSizeRem.height}rem`,
9519
9528
  position: 'absolute',
9520
- bottom: _pxToRem(localVideoTileOuterPaddingPX),
9529
+ bottom: `${localVideoTileOuterPaddingRem}rem`,
9521
9530
  borderRadius: theme.effects.roundedCorner4,
9522
9531
  overflow: 'hidden',
9523
- right: _pxToRem(localVideoTileOuterPaddingPX)
9532
+ right: `${localVideoTileOuterPaddingRem}rem`
9524
9533
  };
9525
9534
  };
9526
9535
  /**
9527
9536
  * @private
9528
9537
  */
9529
- const localVideoTileWithControlsContainerStyle = (theme, localVideoTileSize) => {
9530
- return react.concatStyleSets(localVideoTileContainerStyle(theme, localVideoTileSize), {
9538
+ const localVideoTileWithControlsContainerStyle = (theme, localVideoTileSizeRem) => {
9539
+ return react.concatStyleSets(localVideoTileContainerStyle(theme, localVideoTileSizeRem), {
9531
9540
  root: { boxShadow: theme.effects.elevation8 }
9532
9541
  });
9533
9542
  };
9534
9543
  /**
9535
9544
  * @private
9536
9545
  */
9537
- const floatingLocalVideoModalStyle = (theme, modalSize) => {
9546
+ const floatingLocalVideoModalStyle = (theme, modalSizeRem) => {
9538
9547
  return react.concatStyleSets({
9539
- main: localVideoTileContainerStyle(theme, modalSize)
9548
+ main: localVideoTileContainerStyle(theme, modalSizeRem)
9540
9549
  }, {
9541
9550
  main: {
9542
9551
  boxShadow: theme.effects.elevation8,
@@ -9549,10 +9558,10 @@ const floatingLocalVideoModalStyle = (theme, modalSize) => {
9549
9558
  };
9550
9559
  /**
9551
9560
  * Padding equal to the amount the modal should stay inside the bounds of the container.
9552
- * i.e. if this is 8px, the modal should always be at least 8px inside the container at all times on all sides.
9561
+ * i.e. if this is 0.5rem, the modal should always be at least 0.5rem inside the container at all times on all sides.
9553
9562
  * @private
9554
9563
  */
9555
- const localVideoTileOuterPaddingPX = 8;
9564
+ const localVideoTileOuterPaddingRem = 0.5;
9556
9565
  /**
9557
9566
  * @private
9558
9567
  */
@@ -9574,6 +9583,62 @@ const localVideoModalStyles = {
9574
9583
  }
9575
9584
  };
9576
9585
 
9586
+ // Copyright (c) Microsoft Corporation.
9587
+ /**
9588
+ * @private
9589
+ */
9590
+ const horizontalGalleryContainerStyle = (shouldFloatLocalVideo, isNarrow) => {
9591
+ return {
9592
+ minHeight: isNarrow
9593
+ ? `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`
9594
+ : `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9595
+ width: shouldFloatLocalVideo
9596
+ ? isNarrow
9597
+ ? `calc(100% - ${SMALL_FLOATING_MODAL_SIZE_REM.width}rem)`
9598
+ : `calc(100% - ${LARGE_FLOATING_MODAL_SIZE_REM.width}rem)`
9599
+ : '100%',
9600
+ paddingRight: '0.5rem'
9601
+ };
9602
+ };
9603
+ /**
9604
+ * @private
9605
+ */
9606
+ const horizontalGalleryStyle = (isNarrow) => {
9607
+ return {
9608
+ children: isNarrow ? SMALL_HORIZONTAL_GALLERY_TILE_STYLE : LARGE_HORIZONTAL_GALLERY_TILE_STYLE
9609
+ };
9610
+ };
9611
+ /**
9612
+ * Small horizontal gallery tile size in rem
9613
+ * @private
9614
+ */
9615
+ const SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 6.5, width: 6.5 };
9616
+ /**
9617
+ * Large horizontal gallery tile size in rem
9618
+ * @private
9619
+ */
9620
+ const LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 7.5, minWidth: 7.5, maxWidth: 13.43 };
9621
+ /**
9622
+ * @private
9623
+ */
9624
+ const SMALL_HORIZONTAL_GALLERY_TILE_STYLE = {
9625
+ minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9626
+ minWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`,
9627
+ maxHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9628
+ maxWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`
9629
+ };
9630
+ /**
9631
+ * @private
9632
+ */
9633
+ const LARGE_HORIZONTAL_GALLERY_TILE_STYLE = {
9634
+ minHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9635
+ minWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.minWidth}rem`,
9636
+ maxHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9637
+ maxWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.maxWidth}rem`,
9638
+ width: '100%',
9639
+ height: '100%'
9640
+ };
9641
+
9577
9642
  // Copyright (c) Microsoft Corporation.
9578
9643
  /**
9579
9644
  * VerticalGallery tile size in rem:
@@ -9607,22 +9672,20 @@ const verticalGalleryContainerStyle = (shouldFloatLocalVideo, isNarrow, isShort)
9607
9672
  return isNarrow && isShort
9608
9673
  ? {
9609
9674
  width: `${SHORT_VERTICAL_GALLERY_TILE_SIZE_REM.width + 1.5}rem`,
9610
- height: shouldFloatLocalVideo ? `calc(100% - ${_pxToRem(SMALL_FLOATING_MODAL_SIZE_PX.height)})` : '100%',
9675
+ height: shouldFloatLocalVideo ? `calc(100% - ${SMALL_FLOATING_MODAL_SIZE_REM.height}rem)` : '100%',
9611
9676
  paddingBottom: '0.5rem'
9612
9677
  }
9613
9678
  : !isNarrow && isShort
9614
9679
  ? {
9615
9680
  width: `${SHORT_VERTICAL_GALLERY_TILE_SIZE_REM.width + 1.5}rem`,
9616
9681
  height: shouldFloatLocalVideo
9617
- ? `calc(100% - ${_pxToRem(SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX.height)})`
9682
+ ? `calc(100% - ${SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM.height}rem)`
9618
9683
  : '100%',
9619
9684
  paddingBottom: '0.5rem'
9620
9685
  }
9621
9686
  : {
9622
9687
  width: `${VERTICAL_GALLERY_TILE_SIZE_REM.width + 1.5}rem`,
9623
- height: shouldFloatLocalVideo
9624
- ? `calc(100% - ${_pxToRem(VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX.height)})`
9625
- : '100%',
9688
+ height: shouldFloatLocalVideo ? `calc(100% - ${VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM.height}rem)` : '100%',
9626
9689
  paddingBottom: '0.5rem'
9627
9690
  };
9628
9691
  };
@@ -9663,8 +9726,8 @@ const verticalGalleryStyle = (isShort) => {
9663
9726
  * @private
9664
9727
  */
9665
9728
  const calculateHorizontalChildrenPerPage = (args) => {
9666
- const { numberOfChildren, containerWidth, buttonWidthRem, childWidthRem, gapWidthRem } = args;
9667
- const childWidth = _convertRemToPx(childWidthRem);
9729
+ const { numberOfChildren, containerWidth, buttonWidthRem, gapWidthRem } = args;
9730
+ const childMinWidth = _convertRemToPx(LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.minWidth);
9668
9731
  const gapWidth = _convertRemToPx(gapWidthRem);
9669
9732
  /** First check how many children can fit in containerWidth.
9670
9733
  * __________________________________
@@ -9674,7 +9737,7 @@ const calculateHorizontalChildrenPerPage = (args) => {
9674
9737
  * <-----------containerWidth--------->
9675
9738
  * containerWidth = n * childWidth + (n - 1) * gapWidth. Isolate n and take the floor.
9676
9739
  */
9677
- const numberOfChildrenInContainer = Math.floor((containerWidth + gapWidth) / (childWidth + gapWidth));
9740
+ const numberOfChildrenInContainer = Math.floor((containerWidth + gapWidth) / (childMinWidth + gapWidth));
9678
9741
  // If all children fit then return numberOfChildrenInContainer
9679
9742
  if (numberOfChildren <= numberOfChildrenInContainer) {
9680
9743
  return numberOfChildrenInContainer;
@@ -9692,7 +9755,7 @@ const calculateHorizontalChildrenPerPage = (args) => {
9692
9755
  const childrenSpace = containerWidth - 2 * buttonWidth - 2 * gapWidth;
9693
9756
  // Now that we have childrenSpace width we can figure out how many children can fit in childrenSpace.
9694
9757
  // childrenSpace = n * childWidth + (n - 1) * gapWidth. Isolate n and take the floor.
9695
- return Math.max(Math.floor((childrenSpace + gapWidth) / (childWidth + gapWidth)), 1);
9758
+ return Math.max(Math.floor((childrenSpace + gapWidth) / (childMinWidth + gapWidth)), 1);
9696
9759
  };
9697
9760
  /**
9698
9761
  * Helper function to find the number of children for the VerticalGallery on each page.
@@ -9751,7 +9814,7 @@ const calculateVerticalChildrenPerPage = (args) => {
9751
9814
  * available width obtained from a ResizeObserver, width per child, gap width, and button width
9752
9815
  */
9753
9816
  const ResponsiveHorizontalGallery = (props) => {
9754
- const { childWidthRem, gapWidthRem, buttonWidthRem = 0, onFetchTilesToRender } = props;
9817
+ const { gapWidthRem, buttonWidthRem = 0, onFetchTilesToRender } = props;
9755
9818
  const containerRef = React.useRef(null);
9756
9819
  const containerWidth = _useContainerWidth(containerRef);
9757
9820
  const leftPadding = containerRef.current ? parseFloat(getComputedStyle(containerRef.current).paddingLeft) : 0;
@@ -9759,7 +9822,6 @@ const ResponsiveHorizontalGallery = (props) => {
9759
9822
  const childrenPerPage = calculateHorizontalChildrenPerPage({
9760
9823
  numberOfChildren: React__default['default'].Children.count(props.children),
9761
9824
  containerWidth: (containerWidth !== null && containerWidth !== void 0 ? containerWidth : 0) - leftPadding - rightPadding,
9762
- childWidthRem,
9763
9825
  gapWidthRem,
9764
9826
  buttonWidthRem
9765
9827
  });
@@ -9961,60 +10023,6 @@ const ResponsiveVerticalGallery = (props) => {
9961
10023
  React__default['default'].createElement(VerticalGallery, { childrenPerPage: childrenPerPage, styles: verticalGalleryStyles, onFetchTilesToRender: onFetchTilesToRender }, children)));
9962
10024
  };
9963
10025
 
9964
- // Copyright (c) Microsoft Corporation.
9965
- /**
9966
- * @private
9967
- */
9968
- const horizontalGalleryContainerStyle = (shouldFloatLocalVideo, isNarrow) => {
9969
- return {
9970
- minHeight: isNarrow
9971
- ? `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`
9972
- : `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
9973
- width: shouldFloatLocalVideo
9974
- ? isNarrow
9975
- ? `calc(100% - ${_pxToRem(SMALL_FLOATING_MODAL_SIZE_PX.width)})`
9976
- : `calc(100% - ${_pxToRem(LARGE_FLOATING_MODAL_SIZE_PX.width)})`
9977
- : '100%',
9978
- paddingRight: '0.5rem'
9979
- };
9980
- };
9981
- /**
9982
- * @private
9983
- */
9984
- const horizontalGalleryStyle = (isNarrow) => {
9985
- return {
9986
- children: isNarrow ? SMALL_HORIZONTAL_GALLERY_TILE_STYLE : LARGE_HORIZONTAL_GALLERY_TILE_STYLE
9987
- };
9988
- };
9989
- /**
9990
- * Small horizontal gallery tile size in rem
9991
- * @private
9992
- */
9993
- const SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 6.5, width: 6.5 };
9994
- /**
9995
- * Large horizontal gallery tile size in rem
9996
- * @private
9997
- */
9998
- const LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM = { height: 7.5, width: 10 };
9999
- /**
10000
- * @private
10001
- */
10002
- const SMALL_HORIZONTAL_GALLERY_TILE_STYLE = {
10003
- minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
10004
- minWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`,
10005
- maxHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
10006
- maxWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`
10007
- };
10008
- /**
10009
- * @private
10010
- */
10011
- const LARGE_HORIZONTAL_GALLERY_TILE_STYLE = {
10012
- minHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
10013
- minWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`,
10014
- maxHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
10015
- maxWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`
10016
- };
10017
-
10018
10026
  // Copyright (c) Microsoft Corporation.
10019
10027
  /**
10020
10028
  * @private
@@ -10032,7 +10040,7 @@ const scrollableHorizontalGalleryStyles = {
10032
10040
  */
10033
10041
  const scrollableHorizontalGalleryContainerStyles = react.mergeStyles({
10034
10042
  display: 'flex',
10035
- width: `calc(100% - ${SMALL_FLOATING_MODAL_SIZE_PX.width}px)`,
10043
+ width: `calc(100% - ${SMALL_FLOATING_MODAL_SIZE_REM.width}rem)`,
10036
10044
  minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
10037
10045
  overflow: 'scroll',
10038
10046
  '-ms-overflow-style': 'none',
@@ -10104,7 +10112,7 @@ const OverflowGallery = (props) => {
10104
10112
  if (isNarrow) {
10105
10113
  return (React__default['default'].createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: overflowGalleryElements, onFetchTilesToRender: onFetchTilesToRender, key: "scrollable-horizontal-gallery" }));
10106
10114
  }
10107
- return (React__default['default'].createElement(ResponsiveHorizontalGallery, { key: "responsive-horizontal-gallery", containerStyles: containerStyles, onFetchTilesToRender: onFetchTilesToRender, horizontalGalleryStyles: galleryStyles, childWidthRem: isNarrow ? SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width : LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.width, buttonWidthRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapWidthRem: HORIZONTAL_GALLERY_GAP }, overflowGalleryElements));
10115
+ return (React__default['default'].createElement(ResponsiveHorizontalGallery, { key: "responsive-horizontal-gallery", containerStyles: containerStyles, onFetchTilesToRender: onFetchTilesToRender, horizontalGalleryStyles: galleryStyles, buttonWidthRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapWidthRem: HORIZONTAL_GALLERY_GAP }, overflowGalleryElements));
10108
10116
  };
10109
10117
 
10110
10118
  // Copyright (c) Microsoft Corporation.
@@ -10868,12 +10876,15 @@ const DRAG_OPTIONS$1 = {
10868
10876
  // This is a workaround for: https://github.com/microsoft/fluentui/issues/20122
10869
10877
  // Because our modal starts in the bottom right corner, we can say that this is the max (i.e. rightmost and bottomost)
10870
10878
  // position the modal can be dragged to.
10871
- const modalMaxDragPosition = { x: localVideoTileOuterPaddingPX, y: localVideoTileOuterPaddingPX };
10879
+ const modalMaxDragPosition = {
10880
+ x: _convertRemToPx(localVideoTileOuterPaddingRem),
10881
+ y: _convertRemToPx(localVideoTileOuterPaddingRem)
10882
+ };
10872
10883
  /**
10873
10884
  * @private
10874
10885
  */
10875
10886
  const FloatingLocalVideo = (props) => {
10876
- const { localVideoComponent, layerHostId, localVideoSize, parentWidth, parentHeight } = props;
10887
+ const { localVideoComponent, layerHostId, localVideoSizeRem, parentWidth, parentHeight } = props;
10877
10888
  const theme = useTheme();
10878
10889
  // The minimum drag position is the top left of the video gallery. i.e. the modal (PiP) should not be able
10879
10890
  // to be dragged offscreen and these are the top and left bounds of that calculation.
@@ -10881,11 +10892,11 @@ const FloatingLocalVideo = (props) => {
10881
10892
  ? {
10882
10893
  // We use -parentWidth/Height because our modal is positioned to start in the bottom right,
10883
10894
  // hence (0,0) is the bottom right of the video gallery.
10884
- x: -parentWidth + localVideoSize.width + localVideoTileOuterPaddingPX,
10885
- y: -parentHeight + localVideoSize.height + localVideoTileOuterPaddingPX
10895
+ x: -parentWidth + _convertRemToPx(localVideoSizeRem.width) + _convertRemToPx(localVideoTileOuterPaddingRem),
10896
+ y: -parentHeight + _convertRemToPx(localVideoSizeRem.height) + _convertRemToPx(localVideoTileOuterPaddingRem)
10886
10897
  }
10887
- : undefined, [parentHeight, parentWidth, localVideoSize.width, localVideoSize.height]);
10888
- const modalStyles = React.useMemo(() => floatingLocalVideoModalStyle(theme, localVideoSize), [theme, localVideoSize]);
10898
+ : undefined, [parentHeight, parentWidth, localVideoSizeRem.width, localVideoSizeRem.height]);
10899
+ const modalStyles = React.useMemo(() => floatingLocalVideoModalStyle(theme, localVideoSizeRem), [theme, localVideoSizeRem]);
10889
10900
  const layerProps = React.useMemo(() => ({ hostId: layerHostId }), [layerHostId]);
10890
10901
  return (React__default['default'].createElement(_ModalClone, { isOpen: true, isModeless: true, dragOptions: DRAG_OPTIONS$1, styles: modalStyles, layerProps: layerProps, maxDragPosition: modalMaxDragPosition, minDragPosition: modalMinDragPosition }, localVideoComponent));
10891
10902
  };
@@ -10968,19 +10979,19 @@ const FloatingLocalVideoLayout = (props) => {
10968
10979
  : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
10969
10980
  });
10970
10981
  const layerHostId = reactHooks.useId('layerhost');
10971
- const localVideoSize = React.useMemo(() => {
10982
+ const localVideoSizeRem = React.useMemo(() => {
10972
10983
  if (isNarrow) {
10973
- return SMALL_FLOATING_MODAL_SIZE_PX;
10984
+ return SMALL_FLOATING_MODAL_SIZE_REM;
10974
10985
  }
10975
10986
  /* @conditional-compile-remove(vertical-gallery) */
10976
10987
  if ((horizontalGalleryTiles.length > 0 || !!screenShareComponent) && overflowGalleryLayout === 'VerticalRight') {
10977
10988
  return isNarrow
10978
- ? SMALL_FLOATING_MODAL_SIZE_PX
10989
+ ? SMALL_FLOATING_MODAL_SIZE_REM
10979
10990
  : isShort
10980
- ? SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX
10981
- : VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX;
10991
+ ? SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM
10992
+ : VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM;
10982
10993
  }
10983
- return LARGE_FLOATING_MODAL_SIZE_PX;
10994
+ return LARGE_FLOATING_MODAL_SIZE_REM;
10984
10995
  }, [
10985
10996
  horizontalGalleryTiles.length,
10986
10997
  isNarrow,
@@ -10990,10 +11001,10 @@ const FloatingLocalVideoLayout = (props) => {
10990
11001
  ]);
10991
11002
  const wrappedLocalVideoComponent = localVideoComponent && shouldFloatLocalVideo ? (
10992
11003
  // When we use showCameraSwitcherInLocalPreview it disables dragging to allow keyboard navigation.
10993
- showCameraSwitcherInLocalPreview ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileWithControlsContainerStyle(theme, localVideoSize), {
11004
+ showCameraSwitcherInLocalPreview ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileWithControlsContainerStyle(theme, localVideoSizeRem), {
10994
11005
  boxShadow: theme.effects.elevation8,
10995
11006
  zIndex: LOCAL_VIDEO_TILE_ZINDEX
10996
- }) }, localVideoComponent)) : horizontalGalleryTiles.length > 0 || !!screenShareComponent ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, localVideoSize)) }, localVideoComponent)) : (React__default['default'].createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, localVideoSize: localVideoSize, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
11007
+ }) }, 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;
10997
11008
  const overflowGallery = React.useMemo(() => {
10998
11009
  if (horizontalGalleryTiles.length === 0 && !screenShareComponent) {
10999
11010
  return null;
@@ -11727,6 +11738,18 @@ const CameraButton = (props) => {
11727
11738
  iconName: props.checked ? 'SplitButtonPrimaryActionCameraOn' : 'SplitButtonPrimaryActionCameraOff',
11728
11739
  styles: { root: { lineHeight: 0 } }
11729
11740
  }
11741
+ },
11742
+ /* @conditional-compile-remove(video-background-effects) */
11743
+ {
11744
+ key: 'effects',
11745
+ text: 'Effects',
11746
+ title: 'Video Effects',
11747
+ iconProps: { iconName: 'OptionsVideoBackgroundEffect', styles: { root: { lineHeight: 0 } } },
11748
+ onClick: () => {
11749
+ if (props.onShowVideoEffectsPicker) {
11750
+ props.onShowVideoEffectsPicker(true);
11751
+ }
11752
+ }
11730
11753
  }
11731
11754
  ]
11732
11755
  }
@@ -17880,7 +17903,9 @@ const concatButtonBaseStyles = (...styles) => {
17880
17903
  const Camera = (props) => {
17881
17904
  const cameraButtonProps = usePropsFor$1(CameraButton);
17882
17905
  const styles = React.useMemo(() => { var _a; return concatButtonBaseStyles((_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.styles]);
17883
- return (React__default['default'].createElement(CameraButton, Object.assign({ "data-ui-id": "call-composite-camera-button" }, cameraButtonProps, { showLabel: props.displayType !== 'compact', styles: styles, enableDeviceSelectionMenu: props.splitButtonsForDeviceSelection, disabled: cameraButtonProps.disabled || props.disabled })));
17906
+ return (React__default['default'].createElement(CameraButton, Object.assign({ "data-ui-id": "call-composite-camera-button" }, cameraButtonProps, { showLabel: props.displayType !== 'compact', styles: styles, enableDeviceSelectionMenu: props.splitButtonsForDeviceSelection, disabled: cameraButtonProps.disabled || props.disabled,
17907
+ /* @conditional-compile-remove(video-background-effects) */
17908
+ onShowVideoEffectsPicker: props.onShowVideoEffectsPicker })));
17884
17909
  };
17885
17910
 
17886
17911
  // Copyright (c) Microsoft Corporation.
@@ -18358,7 +18383,7 @@ const CallControls = (props) => {
18358
18383
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
18359
18384
  !props.isMobile && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) })) && (
18360
18385
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
18361
- React__default['default'].createElement(People, { checked: props.peopleButtonChecked, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-composite-people-button", strings: peopleButtonStrings, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) })),
18386
+ React__default['default'].createElement(People, { checked: props.peopleButtonChecked, ariaLabel: peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-composite-people-button", strings: peopleButtonStrings, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) })),
18362
18387
  isEnabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) && (React__default['default'].createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) })),
18363
18388
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
18364
18389
  isEnabled$2(options === null || options === void 0 ? void 0 : options.moreButton) && moreButtonContextualMenuItems().length > 0 && (React__default['default'].createElement(MoreButton, { strings: moreButtonStrings, menuIconProps: { hidden: true }, menuProps: { items: moreButtonContextualMenuItems() }, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact' })),
@@ -22810,7 +22835,9 @@ const CallWithChatControlBar = (props) => {
22810
22835
  disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.microphoneButton) })),
22811
22836
  isEnabled$1(options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
22812
22837
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
22813
- disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.cameraButton) })),
22838
+ disabled: props.disableButtonsForHoldScreen || isDisabled$2(options.cameraButton),
22839
+ /* @conditional-compile-remove(video-background-effects) */
22840
+ onShowVideoEffectsPicker: props.onShowVideoEffectsPicker })),
22814
22841
  props.mobileView && isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton,
22815
22842
  isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles,
22816
22843
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
@@ -22835,7 +22862,7 @@ const CallWithChatControlBar = (props) => {
22835
22862
  _b.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
22836
22863
  return (React__default['default'].createElement(CustomButton, { key: `secondary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact' }));
22837
22864
  }),
22838
- isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: props.disableButtonsForLobbyPage || isDisabled$2(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles })),
22865
+ isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, ariaLabel: peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: props.disableButtonsForLobbyPage || isDisabled$2(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles })),
22839
22866
  isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton))));
22840
22867
  };
22841
22868
  const desktopButtonContainerStyle = {
@@ -23435,10 +23462,30 @@ const CallWithChatPane = (props) => {
23435
23462
  React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItems([]), items: drawerMenuItems })))));
23436
23463
  };
23437
23464
 
23465
+ // Copyright (c) Microsoft Corporation.
23466
+ /**
23467
+ * Pane that is used to show video effects button
23468
+ * @private
23469
+ */
23470
+ /** @beta */
23471
+ const VideoEffectsPane = (props) => {
23472
+ return VideoEffectsPaneTrampoline(props.showVideoEffectsOptions, props.setshowVideoEffectsOptions);
23473
+ };
23474
+ const VideoEffectsPaneTrampoline = (showVideoEffectsOptions, setshowVideoEffectsOptions) => {
23475
+ /* @conditional-compile-remove(video-background-effects) */
23476
+ return (React__default['default'].createElement(react.Panel, { headerText: "Effects", isOpen: showVideoEffectsOptions, onDismiss: () => setshowVideoEffectsOptions(false), hasCloseButton: true, closeButtonAriaLabel: "Close", isLightDismiss: true }));
23477
+ };
23478
+
23438
23479
  // Copyright (c) Microsoft Corporation.
23439
23480
  const CallWithChatScreen = (props) => {
23440
23481
  const { callWithChatAdapter, fluentTheme, formFactor = 'desktop' } = props;
23441
23482
  const mobileView = formFactor === 'mobile';
23483
+ /* @conditional-compile-remove(video-background-effects) */
23484
+ const [showVideoEffectsPane, setVideoEffectsPane] = React.useState(false);
23485
+ /* @conditional-compile-remove(video-background-effects) */
23486
+ const setShowVideoEffectsPane = React.useCallback((showVideoEffectsOptions) => {
23487
+ setVideoEffectsPane(showVideoEffectsOptions);
23488
+ }, [setVideoEffectsPane]);
23442
23489
  if (!callWithChatAdapter) {
23443
23490
  throw new Error('CallWithChatAdapter is undefined');
23444
23491
  }
@@ -23583,6 +23630,8 @@ const CallWithChatScreen = (props) => {
23583
23630
  // Perf: Instead of removing the video gallery from DOM, we hide it to prevent re-renders.
23584
23631
  style: callCompositeContainerCSS },
23585
23632
  React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: callCompositeOptions, adapter: callAdapter, fluentTheme: fluentTheme }))),
23633
+ /* @conditional-compile-remove(video-background-effects) */
23634
+ React__default['default'].createElement(VideoEffectsPane, { showVideoEffectsOptions: showVideoEffectsPane, setshowVideoEffectsOptions: setShowVideoEffectsPane }),
23586
23635
  chatProps.adapter && callAdapter && hasJoinedCall && (React__default['default'].createElement(CallWithChatPane, { chatCompositeProps: chatProps, inviteLink: props.joinInvitationURL, onClose: closePane, chatAdapter: chatProps.adapter, callAdapter: callAdapter, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, onChatButtonClicked: showShowChatTabHeaderButton(props.callControls) ? selectChat : undefined, onPeopleButtonClicked: showShowPeopleTabHeaderButton(props.callControls) ? selectPeople : undefined, modalLayerHostId: modalLayerHostId, mobileView: mobileView, activePane: activePane,
23587
23636
  /* @conditional-compile-remove(file-sharing) */
23588
23637
  fileSharing: props.fileSharing, rtl: props.rtl, callControls: typeof props.callControls !== 'boolean' ? props.callControls : undefined }))),
@@ -23592,7 +23641,9 @@ const CallWithChatScreen = (props) => {
23592
23641
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
23593
23642
  disableButtonsForHoldScreen: isInLocalHold, callControls: props.callControls, containerHeight: containerHeight, containerWidth: containerWidth,
23594
23643
  /* @conditional-compile-remove(PSTN-calls) */
23595
- onClickShowDialpad: alternateCallerId ? onClickShowDialpad : undefined })))),
23644
+ onClickShowDialpad: alternateCallerId ? onClickShowDialpad : undefined,
23645
+ /* @conditional-compile-remove(video-background-effects) */
23646
+ onShowVideoEffectsPicker: setShowVideoEffectsPane })))),
23596
23647
  showControlBar && showDrawer && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
23597
23648
  React__default['default'].createElement(CallAdapterProvider, { adapter: callAdapter },
23598
23649
  React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles() },