@azure/communication-react 1.4.3-alpha-202212200014.0 → 1.4.3-alpha-202212220013.0

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 (43) hide show
  1. package/dist/communication-react.d.ts +0 -10
  2. package/dist/dist-cjs/communication-react/index.js +259 -240
  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/RemoteVideoTile.d.ts +1 -0
  7. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +35 -6
  8. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  9. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.d.ts +9 -0
  10. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.js +22 -0
  11. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.js.map +1 -0
  12. package/dist/dist-esm/react-components/src/components/VideoGallery.js +7 -2
  13. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  14. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +0 -5
  15. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +3 -5
  16. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  17. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +1 -0
  18. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
  19. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  20. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.d.ts +0 -1
  21. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js +1 -3
  22. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js.map +1 -1
  23. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.d.ts +0 -1
  24. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js +2 -4
  25. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js.map +1 -1
  26. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.d.ts +0 -1
  27. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js +1 -5
  28. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js.map +1 -1
  29. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.d.ts +0 -1
  30. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js +1 -5
  31. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js.map +1 -1
  32. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts +1 -0
  33. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +1 -1
  34. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  35. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +4 -2
  36. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  37. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.d.ts +0 -1
  38. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +4 -16
  39. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  40. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +0 -5
  41. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +1 -7
  42. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  43. package/package.json +8 -8
@@ -202,7 +202,7 @@ const _toCommunicationIdentifier = (id) => {
202
202
  // Copyright (c) Microsoft Corporation.
203
203
  // Licensed under the MIT license.
204
204
  // GENERATED FILE. DO NOT EDIT MANUALLY.
205
- var telemetryVersion = '1.4.3-alpha-202212200014.0';
205
+ var telemetryVersion = '1.4.3-alpha-202212220013.0';
206
206
 
207
207
  // Copyright (c) Microsoft Corporation.
208
208
  /**
@@ -7850,6 +7850,206 @@ const ParticipantList = (props) => {
7850
7850
  : onRenderParticipantDefault(participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick, showParticipantOverflowTooltip))));
7851
7851
  };
7852
7852
 
7853
+ // Copyright (c) Microsoft Corporation.
7854
+ // Licensed under the MIT license.
7855
+ /**
7856
+ * For keyboard navigation - when this component has active focus, enter key and space keys should have the same behavior as mouse click.
7857
+ *
7858
+ * @private
7859
+ */
7860
+ const submitWithKeyboard = (e, onSubmit) => {
7861
+ if (e.key === 'Enter' || e.key === ' ') {
7862
+ onSubmit(e);
7863
+ }
7864
+ };
7865
+
7866
+ // Copyright (c) Microsoft Corporation.
7867
+ /**
7868
+ * Maps the individual item in menuProps.items passed in the {@link DrawerMenu} into a UI component.
7869
+ *
7870
+ * @private
7871
+ */
7872
+ const DrawerMenuItem = (props) => {
7873
+ var _a;
7874
+ const theme = useTheme();
7875
+ const onClick = (ev) => props.onItemClick && props.onItemClick(ev, props.itemKey);
7876
+ const onKeyPress = (ev) => onClick && submitWithKeyboard(ev, onClick);
7877
+ const secondaryIcon = props.secondaryIconProps ? (React__default['default'].createElement(MenuItemIcon, Object.assign({}, props.secondaryIconProps))) : props.subMenuProps ? (React__default['default'].createElement(MenuItemIcon, { iconName: "ChevronRight" })) : undefined;
7878
+ return (React__default['default'].createElement(react.Stack, { tabIndex: 0, role: "menuitem", horizontal: true, className: react.mergeStyles(drawerMenuItemRootStyles(theme.palette.neutralLight, theme.fonts.small), props.disabled ? disabledDrawerMenuItemRootStyles(theme.palette.neutralQuaternaryAlt) : undefined, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root), onKeyPress: props.disabled ? undefined : onKeyPress, onClick: props.disabled ? undefined : onClick, tokens: menuItemChildrenGap, id: props.id },
7879
+ props.iconProps && (React__default['default'].createElement(react.Stack.Item, { role: "presentation", styles: props.disabled ? { root: { color: theme.palette.neutralTertiaryAlt } } : undefined },
7880
+ React__default['default'].createElement(MenuItemIcon, Object.assign({}, props.iconProps)))),
7881
+ React__default['default'].createElement(react.Stack.Item, { styles: drawerMenuItemTextStyles, grow: true },
7882
+ React__default['default'].createElement(react.Text, { styles: props.disabled ? { root: { color: theme.palette.neutralTertiaryAlt } } : undefined }, props.text)),
7883
+ props.secondaryText && (React__default['default'].createElement(react.Stack.Item, { styles: drawerMenuItemTextStyles, className: react.mergeStyles(secondaryTextStyles$2) },
7884
+ React__default['default'].createElement(react.Text, { styles: {
7885
+ root: { color: props.disabled ? theme.palette.neutralTertiaryAlt : theme.palette.neutralSecondary }
7886
+ } }, props.secondaryText))),
7887
+ secondaryIcon && React__default['default'].createElement(react.Stack.Item, null, secondaryIcon)));
7888
+ };
7889
+ const MenuItemIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({ className: react.mergeStyles(iconStyles$1) }, props)));
7890
+ const menuItemChildrenGap = { childrenGap: '0.5rem' };
7891
+ const drawerMenuItemRootStyles = (hoverBackground, fontSize) => (Object.assign(Object.assign({}, fontSize), { height: '3rem', lineHeight: '3rem', padding: '0rem 0.75rem', cursor: 'pointer', ':hover, :focus': {
7892
+ background: hoverBackground
7893
+ } }));
7894
+ const disabledDrawerMenuItemRootStyles = (background) => ({
7895
+ pointerEvents: 'none',
7896
+ background: background,
7897
+ ':hover, :focus': {
7898
+ background: background
7899
+ }
7900
+ });
7901
+ /** Ensure long text entries appropriately show ellipsis instead of wrapping to a new line or showing a scrollbar */
7902
+ const drawerMenuItemTextStyles = {
7903
+ root: {
7904
+ overflow: 'hidden',
7905
+ textOverflow: 'ellipsis',
7906
+ whiteSpace: 'nowrap'
7907
+ }
7908
+ };
7909
+ const iconStyles$1 = {
7910
+ // Vertically center icons in the menu item. Using line-height does not work for centering fluent SVG icons.
7911
+ display: 'flex',
7912
+ alignItems: 'center',
7913
+ height: '100%',
7914
+ // This can be removed when we upgrade to fluent-react-icons v2 (that removes the inner span element)
7915
+ ' span': {
7916
+ display: 'flex',
7917
+ alignItems: 'center',
7918
+ height: '100%'
7919
+ }
7920
+ };
7921
+ const secondaryTextStyles$2 = {
7922
+ // limit width for secondaryText in the menu item so it does not overlap with text on left.
7923
+ maxWidth: '50%'
7924
+ };
7925
+
7926
+ // Copyright (c) Microsoft Corporation.
7927
+ /**
7928
+ * Container that holds the content of the drawer
7929
+ *
7930
+ * @private
7931
+ */
7932
+ const DrawerContentContainer = (props) => {
7933
+ var _a;
7934
+ const theme = react.useTheme();
7935
+ const backgroundColor = theme.palette.white;
7936
+ const borderRadius = theme.effects.roundedCorner4;
7937
+ const rootStyles = react.mergeStyles(containerStyles$4(backgroundColor, borderRadius), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root);
7938
+ return React__default['default'].createElement(react.Stack, { className: rootStyles }, props.children);
7939
+ };
7940
+ const containerStyles$4 = (backgroundColor, borderRadius) => (Object.assign({ background: backgroundColor, borderTopRightRadius: borderRadius, borderTopLeftRadius: borderRadius }, react.AnimationStyles.slideUpIn10));
7941
+
7942
+ // Copyright (c) Microsoft Corporation.
7943
+ /**
7944
+ * An element that fills the space the DrawerContentContainer does not take up.
7945
+ * This is the element that enables the light dismiss feature.
7946
+ *
7947
+ * @private
7948
+ */
7949
+ const DrawerLightDismiss = (props) => {
7950
+ return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(lightDismissContainerStyles, props.styles), grow: true, onClick: () => props.onDismiss() }));
7951
+ };
7952
+ const lightDismissContainerStyles = { root: { height: '100%' } };
7953
+
7954
+ // Copyright (c) Microsoft Corporation.
7955
+ /**
7956
+ * A `Drawer` can be used to reveal lightweight views inside your application.
7957
+ * They appear from the bottom of the screen upwards and are light-dismissed.
7958
+ *
7959
+ * @internal
7960
+ */
7961
+ const _DrawerSurface = (props) => {
7962
+ var _a, _b, _c;
7963
+ const rootStyles = react.mergeStyles(drawerSurfaceStyles, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root);
7964
+ return (React__default['default'].createElement(react.Stack, { className: rootStyles },
7965
+ React__default['default'].createElement(DrawerLightDismiss, { styles: (_b = props.styles) === null || _b === void 0 ? void 0 : _b.lightDismissRoot, onDismiss: props.onLightDismiss }),
7966
+ React__default['default'].createElement(react.FocusTrapZone, { onKeyDown: (e) => {
7967
+ if (e.key === 'Escape' || e.key === 'Esc') {
7968
+ props.onLightDismiss && props.onLightDismiss();
7969
+ }
7970
+ },
7971
+ // Ensure when the focus trap has focus, the light dismiss area can still be clicked with mouse to dismiss.
7972
+ // Note: this still correctly captures keyboard focus, this just allows mouse click outside of the focus trap.
7973
+ isClickableOutsideFocusTrap: true },
7974
+ React__default['default'].createElement(DrawerContentContainer, { styles: (_c = props.styles) === null || _c === void 0 ? void 0 : _c.drawerContentContainer }, props.children))));
7975
+ };
7976
+ const drawerSurfaceStyles = {
7977
+ width: '100%',
7978
+ height: '100%',
7979
+ background: 'rgba(0,0,0,0.4)'
7980
+ };
7981
+
7982
+ // Copyright (c) Microsoft Corporation.
7983
+ /**
7984
+ * Takes a set of menu items and returns a created menu inside a {@link _DrawerSurface}.
7985
+ *
7986
+ * @internal
7987
+ */
7988
+ const _DrawerMenu = (props) => {
7989
+ var _a, _b;
7990
+ // This component breaks from a pure component pattern in order to internally support sub menus.
7991
+ // When a sub menu item is clicked the menu items displayed is updated to be that of the submenu.
7992
+ // To track this state we store a list of the keys clicked up until this point.
7993
+ const [selectedKeyPath, setSelectedKeyPath] = React.useState([]);
7994
+ // Get the menu items that should be rendered
7995
+ const menuItemsToRender = React.useMemo(() => {
7996
+ var _a;
7997
+ let items = props.items;
7998
+ for (const subMenuKey of selectedKeyPath) {
7999
+ items = (_a = items === null || items === void 0 ? void 0 : items.find((item) => item.itemKey === subMenuKey)) === null || _a === void 0 ? void 0 : _a.subMenuProps;
8000
+ }
8001
+ return items;
8002
+ }, [props.items, selectedKeyPath]);
8003
+ // When an item is clicked and it contains a submenu, push the key for the submenu. This will ensure
8004
+ // a new render is triggered, menuItemsToRender will be re-calculated and the submenu will render.
8005
+ const onItemClick = React.useCallback((item, ev, itemKey) => {
8006
+ var _a;
8007
+ if (item.subMenuProps) {
8008
+ setSelectedKeyPath([...selectedKeyPath, item.itemKey]);
8009
+ }
8010
+ (_a = item.onItemClick) === null || _a === void 0 ? void 0 : _a.call(item, ev, itemKey);
8011
+ }, [selectedKeyPath]);
8012
+ // Ensure the first item has a border radius that matches the DrawerSurface
8013
+ const borderRadius = useTheme().effects.roundedCorner4;
8014
+ const firstItemStyle = menuItemsToRender && ((_a = menuItemsToRender[0]) === null || _a === void 0 ? void 0 : _a.styles);
8015
+ const modifiedFirstItemStyle = React.useMemo(() => react.merge(firstItemStyle !== null && firstItemStyle !== void 0 ? firstItemStyle : {}, {
8016
+ root: {
8017
+ borderTopRightRadius: borderRadius,
8018
+ borderTopLeftRadius: borderRadius
8019
+ }
8020
+ }), [firstItemStyle, borderRadius]);
8021
+ return (React__default['default'].createElement(_DrawerSurface, { styles: (_b = props.styles) === null || _b === void 0 ? void 0 : _b.drawerSurfaceStyles, onLightDismiss: props.onLightDismiss },
8022
+ React__default['default'].createElement(react.Stack, { styles: props.styles, role: "menu", "data-ui-id": "drawer-menu" }, menuItemsToRender === null || menuItemsToRender === void 0 ? void 0 :
8023
+ menuItemsToRender.slice(0, 1).map((item) => (React__default['default'].createElement(DrawerMenuItem, Object.assign({}, item, { key: '0', styles: modifiedFirstItemStyle, onItemClick: (ev, itemKey) => {
8024
+ onItemClick(item, ev, itemKey);
8025
+ } })))), menuItemsToRender === null || menuItemsToRender === void 0 ? void 0 :
8026
+ menuItemsToRender.slice(1).map((item, i) => (React__default['default'].createElement(DrawerMenuItem, Object.assign({}, item, { key: `${i + 1}`, onItemClick: (ev, itemKey) => {
8027
+ onItemClick(item, ev, itemKey);
8028
+ } })))))));
8029
+ };
8030
+
8031
+ // Copyright (c) Microsoft Corporation.
8032
+ // Licensed under the MIT license.
8033
+ /** @private */
8034
+ const remoteVideoTileWrapperStyle = {
8035
+ height: '100%',
8036
+ width: '100%',
8037
+ position: 'relative'
8038
+ };
8039
+ /** @private */
8040
+ const drawerMenuWrapperStyles = {
8041
+ root: {
8042
+ position: 'absolute',
8043
+ top: 0,
8044
+ left: 0,
8045
+ width: '100%',
8046
+ height: '100%',
8047
+ // Any zIndex > 0 will work because this is the only absolutely
8048
+ // positioned element in the container.
8049
+ zIndex: 2
8050
+ }
8051
+ };
8052
+
7853
8053
  // Copyright (c) Microsoft Corporation.
7854
8054
  /**
7855
8055
  * Helper hook to maintain the video stream lifecycle. This calls onCreateStreamView and onDisposeStreamView
@@ -8432,6 +8632,7 @@ const _RemoteVideoTile = React__default['default'].memo((props) => {
8432
8632
  return videoTileContextualMenuPropsTrampoline(contextualMenuProps);
8433
8633
  }, [contextualMenuProps, showRemoteVideoTileContextualMenu]);
8434
8634
  const showLoadingIndicator = isAvailable && isReceiving === false && participantState !== 'Disconnected';
8635
+ const [drawerMenuItemProps, setDrawerMenuItemProps] = React__default['default'].useState([]);
8435
8636
  const renderVideoStreamElement = React.useMemo(() => {
8436
8637
  // Checking if renderElement is well defined or not as calling SDK has a number of video streams limitation which
8437
8638
  // implies that, after their threshold, all streams have no child (blank video)
@@ -8441,12 +8642,18 @@ const _RemoteVideoTile = React__default['default'].memo((props) => {
8441
8642
  }
8442
8643
  return (React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement, loadingState: showLoadingIndicator ? 'loading' : 'none' }));
8443
8644
  }, [renderElement, showLoadingIndicator]);
8444
- return (React__default['default'].createElement(VideoTile, Object.assign({ key: userId, userId: userId, renderElement: renderVideoStreamElement, displayName: remoteParticipant.displayName, onRenderPlaceholder: onRenderAvatar, isMuted: remoteParticipant.isMuted, isSpeaking: remoteParticipant.isSpeaking, showMuteIndicator: showMuteIndicator, personaMinSize: props.personaMinSize, showLabel: props.showLabel,
8445
- /* @conditional-compile-remove(one-to-n-calling) */
8446
- /* @conditional-compile-remove(PSTN-calls) */
8447
- participantState: participantState }, videoTileContextualMenuProps, {
8448
- /* @conditional-compile-remove(pinned-participants) */
8449
- isPinned: props.isPinned })));
8645
+ return (React__default['default'].createElement(react.Stack, { style: remoteVideoTileWrapperStyle },
8646
+ React__default['default'].createElement(VideoTile, Object.assign({ key: userId, userId: userId, renderElement: renderVideoStreamElement, displayName: remoteParticipant.displayName, onRenderPlaceholder: onRenderAvatar, isMuted: remoteParticipant.isMuted, isSpeaking: remoteParticipant.isSpeaking, showMuteIndicator: showMuteIndicator, personaMinSize: props.personaMinSize, showLabel: props.showLabel,
8647
+ /* @conditional-compile-remove(one-to-n-calling) */
8648
+ /* @conditional-compile-remove(PSTN-calls) */
8649
+ participantState: participantState }, videoTileContextualMenuProps, {
8650
+ /* @conditional-compile-remove(pinned-participants) */
8651
+ isPinned: props.isPinned,
8652
+ /* @conditional-compile-remove(pinned-participants) */
8653
+ onLongTouch: () => setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([]))) })),
8654
+ drawerMenuItemProps.length > 0 && (React__default['default'].createElement(react.Layer, { hostId: props.drawerMenuHostId },
8655
+ React__default['default'].createElement(react.Stack, { styles: drawerMenuWrapperStyles },
8656
+ React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItemProps([]), items: drawerMenuItemProps }))))));
8450
8657
  });
8451
8658
  const videoTileContextualMenuPropsTrampoline = (contextualMenuProps) => {
8452
8659
  if (!contextualMenuProps) {
@@ -8457,6 +8664,25 @@ const videoTileContextualMenuPropsTrampoline = (contextualMenuProps) => {
8457
8664
  contextualMenu: contextualMenuProps
8458
8665
  };
8459
8666
  };
8667
+ /* @conditional-compile-remove(pinned-participants) */
8668
+ const convertContextualMenuItemsToDrawerMenuItemProps = (contextualMenuProps, onLightDismiss) => {
8669
+ if (!contextualMenuProps) {
8670
+ return [];
8671
+ }
8672
+ return contextualMenuProps.items.map((item) => {
8673
+ return {
8674
+ itemKey: item.key,
8675
+ text: item.text,
8676
+ iconProps: item.iconProps,
8677
+ disabled: item.disabled,
8678
+ onItemClick: () => {
8679
+ var _a;
8680
+ (_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);
8681
+ onLightDismiss === null || onLightDismiss === void 0 ? void 0 : onLightDismiss();
8682
+ }
8683
+ };
8684
+ });
8685
+ };
8460
8686
 
8461
8687
  // Copyright (c) Microsoft Corporation.
8462
8688
  /**
@@ -10032,6 +10258,9 @@ const VideoGallery = (props) => {
10032
10258
  const theme = useTheme();
10033
10259
  const localeStrings = useLocale$1().strings.videoGallery;
10034
10260
  const strings = React.useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);
10261
+ // @TODO: Provide a default value to this hook using the `drawerMenuHostId` value in the props when VideoGallery props have been updated.
10262
+ // Example: `const drawerMenuHostId = useId('drawerMenuHost', props.drawerMenuHostId);`
10263
+ const drawerMenuHostId = reactHooks.useId('drawerMenuHost');
10035
10264
  const shouldFloatLocalVideo = !!(layout === 'floatingLocalVideo' && remoteParticipants.length > 0);
10036
10265
  const containerRef = React.useRef(null);
10037
10266
  const containerWidth = _useContainerWidth(containerRef);
@@ -10103,7 +10332,7 @@ const VideoGallery = (props) => {
10103
10332
  /* @conditional-compile-remove(PSTN-calls) */
10104
10333
  participantState: participant.state,
10105
10334
  /* @conditional-compile-remove(pinned-participants) */
10106
- showRemoteVideoTileContextualMenu: props.showRemoteVideoTileContextualMenu,
10335
+ showRemoteVideoTileContextualMenu: props.showRemoteVideoTileContextualMenu, drawerMenuHostId: drawerMenuHostId,
10107
10336
  /* @conditional-compile-remove(pinned-participants) */
10108
10337
  onPinParticipant: onPinParticipant,
10109
10338
  /* @conditional-compile-remove(pinned-participants) */
@@ -10117,6 +10346,7 @@ const VideoGallery = (props) => {
10117
10346
  onRenderAvatar,
10118
10347
  showMuteIndicator,
10119
10348
  strings,
10349
+ drawerMenuHostId,
10120
10350
  /* @conditional-compile-remove(pinned-participants) */ props.showRemoteVideoTileContextualMenu,
10121
10351
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipants,
10122
10352
  /* @conditional-compile-remove(pinned-participants) */ onPinParticipant,
@@ -10168,7 +10398,7 @@ const VideoGallery = (props) => {
10168
10398
  }
10169
10399
  return React__default['default'].createElement(DefaultLayout, Object.assign({}, layoutProps));
10170
10400
  }, [layout, layoutProps]);
10171
- return (React__default['default'].createElement("div", { "data-ui-id": ids.videoGallery, ref: containerRef, className: react.mergeStyles(videoGalleryOuterDivStyle, styles === null || styles === void 0 ? void 0 : styles.root) }, videoGalleryLayout));
10401
+ return (React__default['default'].createElement("div", { id: drawerMenuHostId, "data-ui-id": ids.videoGallery, ref: containerRef, className: react.mergeStyles(videoGalleryOuterDivStyle, styles === null || styles === void 0 ? void 0 : styles.root) }, videoGalleryLayout));
10172
10402
  };
10173
10403
 
10174
10404
  // Copyright (c) Microsoft Corporation.
@@ -10828,7 +11058,7 @@ const primaryTextStyles = {
10828
11058
  /**
10829
11059
  * @internal
10830
11060
  */
10831
- const secondaryTextStyles$2 = {
11061
+ const secondaryTextStyles$1 = {
10832
11062
  root: {
10833
11063
  margin: 'auto',
10834
11064
  fontWeight: 400,
@@ -10877,7 +11107,7 @@ const SitePermissionsContainer = (props) => {
10877
11107
  React__default['default'].createElement(react.Icon, { styles: iconPrimaryStyles, iconName: props.microphoneIconName })))),
10878
11108
  React__default['default'].createElement(react.Stack, { styles: textContainerStyles },
10879
11109
  strings && isValidString(strings === null || strings === void 0 ? void 0 : strings.primaryText) && (React__default['default'].createElement(react.Text, { styles: primaryTextStyles }, appName ? _formatString(strings.primaryText, { appName: appName }) : strings.primaryText)),
10880
- strings && isValidString(strings === null || strings === void 0 ? void 0 : strings.secondaryText) && (React__default['default'].createElement(react.Text, { styles: secondaryTextStyles$2 }, strings === null || strings === void 0 ? void 0 : strings.secondaryText)),
11110
+ strings && isValidString(strings === null || strings === void 0 ? void 0 : strings.secondaryText) && (React__default['default'].createElement(react.Text, { styles: secondaryTextStyles$1 }, strings === null || strings === void 0 ? void 0 : strings.secondaryText)),
10881
11111
  onPrimaryButtonClick && isValidString(strings === null || strings === void 0 ? void 0 : strings.primaryButtonText) && (React__default['default'].createElement(react.PrimaryButton, { styles: react.mergeStyleSets(primaryButtonStyles, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.primaryButton), text: strings === null || strings === void 0 ? void 0 : strings.primaryButtonText, onClick: onPrimaryButtonClick })),
10882
11112
  onTroubleshootingClick && isValidString(strings === null || strings === void 0 ? void 0 : strings.linkText) && (React__default['default'].createElement(react.Link, { styles: react.mergeStyleSets(linkTextStyles$1, (_b = props.styles) === null || _b === void 0 ? void 0 : _b.troubleshootingLink), onClick: onTroubleshootingClick }, strings === null || strings === void 0 ? void 0 : strings.linkText)))));
10883
11113
  };
@@ -11168,19 +11398,6 @@ const screenshareButtonStyles = (theme) => ({
11168
11398
  labelChecked: { color: react.DefaultPalette.white }
11169
11399
  });
11170
11400
 
11171
- // Copyright (c) Microsoft Corporation.
11172
- // Licensed under the MIT license.
11173
- /**
11174
- * For keyboard navigation - when this component has active focus, enter key and space keys should have the same behavior as mouse click.
11175
- *
11176
- * @private
11177
- */
11178
- const submitWithKeyboard = (e, onSubmit) => {
11179
- if (e.key === 'Enter' || e.key === ' ') {
11180
- onSubmit(e);
11181
- }
11182
- };
11183
-
11184
11401
  // Copyright (c) Microsoft Corporation.
11185
11402
  /** @private */
11186
11403
  const PictureInPictureInPicturePrimaryTile = (props) => {
@@ -11246,171 +11463,6 @@ const secondaryTileFloatingStyles = {
11246
11463
  right: '0.125rem'
11247
11464
  };
11248
11465
 
11249
- // Copyright (c) Microsoft Corporation.
11250
- /**
11251
- * Maps the individual item in menuProps.items passed in the {@link DrawerMenu} into a UI component.
11252
- *
11253
- * @private
11254
- */
11255
- const DrawerMenuItem = (props) => {
11256
- var _a;
11257
- const theme = useTheme();
11258
- const onClick = (ev) => props.onItemClick && props.onItemClick(ev, props.itemKey);
11259
- const onKeyPress = (ev) => onClick && submitWithKeyboard(ev, onClick);
11260
- const secondaryIcon = props.secondaryIconProps ? (React__default['default'].createElement(MenuItemIcon, Object.assign({}, props.secondaryIconProps))) : props.subMenuProps ? (React__default['default'].createElement(MenuItemIcon, { iconName: "ChevronRight" })) : undefined;
11261
- return (React__default['default'].createElement(react.Stack, { tabIndex: 0, role: "menuitem", horizontal: true, className: react.mergeStyles(drawerMenuItemRootStyles(theme.palette.neutralLight, theme.fonts.small), props.disabled ? disabledDrawerMenuItemRootStyles(theme.palette.neutralQuaternaryAlt) : undefined, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root), onKeyPress: props.disabled ? undefined : onKeyPress, onClick: props.disabled ? undefined : onClick, tokens: menuItemChildrenGap, id: props.id },
11262
- props.iconProps && (React__default['default'].createElement(react.Stack.Item, { role: "presentation", styles: props.disabled ? { root: { color: theme.palette.neutralTertiaryAlt } } : undefined },
11263
- React__default['default'].createElement(MenuItemIcon, Object.assign({}, props.iconProps)))),
11264
- React__default['default'].createElement(react.Stack.Item, { styles: drawerMenuItemTextStyles, grow: true },
11265
- React__default['default'].createElement(react.Text, { styles: props.disabled ? { root: { color: theme.palette.neutralTertiaryAlt } } : undefined }, props.text)),
11266
- props.secondaryText && (React__default['default'].createElement(react.Stack.Item, { styles: drawerMenuItemTextStyles, className: react.mergeStyles(secondaryTextStyles$1) },
11267
- React__default['default'].createElement(react.Text, { styles: {
11268
- root: { color: props.disabled ? theme.palette.neutralTertiaryAlt : theme.palette.neutralSecondary }
11269
- } }, props.secondaryText))),
11270
- secondaryIcon && React__default['default'].createElement(react.Stack.Item, null, secondaryIcon)));
11271
- };
11272
- const MenuItemIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({ className: react.mergeStyles(iconStyles$1) }, props)));
11273
- const menuItemChildrenGap = { childrenGap: '0.5rem' };
11274
- const drawerMenuItemRootStyles = (hoverBackground, fontSize) => (Object.assign(Object.assign({}, fontSize), { height: '3rem', lineHeight: '3rem', padding: '0rem 0.75rem', cursor: 'pointer', ':hover, :focus': {
11275
- background: hoverBackground
11276
- } }));
11277
- const disabledDrawerMenuItemRootStyles = (background) => ({
11278
- pointerEvents: 'none',
11279
- background: background,
11280
- ':hover, :focus': {
11281
- background: background
11282
- }
11283
- });
11284
- /** Ensure long text entries appropriately show ellipsis instead of wrapping to a new line or showing a scrollbar */
11285
- const drawerMenuItemTextStyles = {
11286
- root: {
11287
- overflow: 'hidden',
11288
- textOverflow: 'ellipsis',
11289
- whiteSpace: 'nowrap'
11290
- }
11291
- };
11292
- const iconStyles$1 = {
11293
- // Vertically center icons in the menu item. Using line-height does not work for centering fluent SVG icons.
11294
- display: 'flex',
11295
- alignItems: 'center',
11296
- height: '100%',
11297
- // This can be removed when we upgrade to fluent-react-icons v2 (that removes the inner span element)
11298
- ' span': {
11299
- display: 'flex',
11300
- alignItems: 'center',
11301
- height: '100%'
11302
- }
11303
- };
11304
- const secondaryTextStyles$1 = {
11305
- // limit width for secondaryText in the menu item so it does not overlap with text on left.
11306
- maxWidth: '50%'
11307
- };
11308
-
11309
- // Copyright (c) Microsoft Corporation.
11310
- /**
11311
- * Container that holds the content of the drawer
11312
- *
11313
- * @private
11314
- */
11315
- const DrawerContentContainer = (props) => {
11316
- var _a;
11317
- const theme = react.useTheme();
11318
- const backgroundColor = theme.palette.white;
11319
- const borderRadius = theme.effects.roundedCorner4;
11320
- const rootStyles = react.mergeStyles(containerStyles$4(backgroundColor, borderRadius), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root);
11321
- return React__default['default'].createElement(react.Stack, { className: rootStyles }, props.children);
11322
- };
11323
- const containerStyles$4 = (backgroundColor, borderRadius) => (Object.assign({ background: backgroundColor, borderTopRightRadius: borderRadius, borderTopLeftRadius: borderRadius }, react.AnimationStyles.slideUpIn10));
11324
-
11325
- // Copyright (c) Microsoft Corporation.
11326
- /**
11327
- * An element that fills the space the DrawerContentContainer does not take up.
11328
- * This is the element that enables the light dismiss feature.
11329
- *
11330
- * @private
11331
- */
11332
- const DrawerLightDismiss = (props) => {
11333
- return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(lightDismissContainerStyles, props.styles), grow: true, onClick: () => props.onDismiss() }));
11334
- };
11335
- const lightDismissContainerStyles = { root: { height: '100%' } };
11336
-
11337
- // Copyright (c) Microsoft Corporation.
11338
- /**
11339
- * A `Drawer` can be used to reveal lightweight views inside your application.
11340
- * They appear from the bottom of the screen upwards and are light-dismissed.
11341
- *
11342
- * @internal
11343
- */
11344
- const _DrawerSurface = (props) => {
11345
- var _a, _b, _c;
11346
- const rootStyles = react.mergeStyles(drawerSurfaceStyles, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root);
11347
- return (React__default['default'].createElement(react.Stack, { className: rootStyles },
11348
- React__default['default'].createElement(DrawerLightDismiss, { styles: (_b = props.styles) === null || _b === void 0 ? void 0 : _b.lightDismissRoot, onDismiss: props.onLightDismiss }),
11349
- React__default['default'].createElement(react.FocusTrapZone, { onKeyDown: (e) => {
11350
- if (e.key === 'Escape' || e.key === 'Esc') {
11351
- props.onLightDismiss && props.onLightDismiss();
11352
- }
11353
- },
11354
- // Ensure when the focus trap has focus, the light dismiss area can still be clicked with mouse to dismiss.
11355
- // Note: this still correctly captures keyboard focus, this just allows mouse click outside of the focus trap.
11356
- isClickableOutsideFocusTrap: true },
11357
- React__default['default'].createElement(DrawerContentContainer, { styles: (_c = props.styles) === null || _c === void 0 ? void 0 : _c.drawerContentContainer }, props.children))));
11358
- };
11359
- const drawerSurfaceStyles = {
11360
- width: '100%',
11361
- height: '100%',
11362
- background: 'rgba(0,0,0,0.4)'
11363
- };
11364
-
11365
- // Copyright (c) Microsoft Corporation.
11366
- /**
11367
- * Takes a set of menu items and returns a created menu inside a {@link _DrawerSurface}.
11368
- *
11369
- * @internal
11370
- */
11371
- const _DrawerMenu = (props) => {
11372
- var _a, _b;
11373
- // This component breaks from a pure component pattern in order to internally support sub menus.
11374
- // When a sub menu item is clicked the menu items displayed is updated to be that of the submenu.
11375
- // To track this state we store a list of the keys clicked up until this point.
11376
- const [selectedKeyPath, setSelectedKeyPath] = React.useState([]);
11377
- // Get the menu items that should be rendered
11378
- const menuItemsToRender = React.useMemo(() => {
11379
- var _a;
11380
- let items = props.items;
11381
- for (const subMenuKey of selectedKeyPath) {
11382
- items = (_a = items === null || items === void 0 ? void 0 : items.find((item) => item.itemKey === subMenuKey)) === null || _a === void 0 ? void 0 : _a.subMenuProps;
11383
- }
11384
- return items;
11385
- }, [props.items, selectedKeyPath]);
11386
- // When an item is clicked and it contains a submenu, push the key for the submenu. This will ensure
11387
- // a new render is triggered, menuItemsToRender will be re-calculated and the submenu will render.
11388
- const onItemClick = React.useCallback((item, ev, itemKey) => {
11389
- var _a;
11390
- if (item.subMenuProps) {
11391
- setSelectedKeyPath([...selectedKeyPath, item.itemKey]);
11392
- }
11393
- (_a = item.onItemClick) === null || _a === void 0 ? void 0 : _a.call(item, ev, itemKey);
11394
- }, [selectedKeyPath]);
11395
- // Ensure the first item has a border radius that matches the DrawerSurface
11396
- const borderRadius = useTheme().effects.roundedCorner4;
11397
- const firstItemStyle = menuItemsToRender && ((_a = menuItemsToRender[0]) === null || _a === void 0 ? void 0 : _a.styles);
11398
- const modifiedFirstItemStyle = React.useMemo(() => react.merge(firstItemStyle !== null && firstItemStyle !== void 0 ? firstItemStyle : {}, {
11399
- root: {
11400
- borderTopRightRadius: borderRadius,
11401
- borderTopLeftRadius: borderRadius
11402
- }
11403
- }), [firstItemStyle, borderRadius]);
11404
- return (React__default['default'].createElement(_DrawerSurface, { styles: (_b = props.styles) === null || _b === void 0 ? void 0 : _b.drawerSurfaceStyles, onLightDismiss: props.onLightDismiss },
11405
- React__default['default'].createElement(react.Stack, { styles: props.styles, role: "menu", "data-ui-id": "drawer-menu" }, menuItemsToRender === null || menuItemsToRender === void 0 ? void 0 :
11406
- menuItemsToRender.slice(0, 1).map((item) => (React__default['default'].createElement(DrawerMenuItem, Object.assign({}, item, { key: '0', styles: modifiedFirstItemStyle, onItemClick: (ev, itemKey) => {
11407
- onItemClick(item, ev, itemKey);
11408
- } })))), menuItemsToRender === null || menuItemsToRender === void 0 ? void 0 :
11409
- menuItemsToRender.slice(1).map((item, i) => (React__default['default'].createElement(DrawerMenuItem, Object.assign({}, item, { key: `${i + 1}`, onItemClick: (ev, itemKey) => {
11410
- onItemClick(item, ev, itemKey);
11411
- } })))))));
11412
- };
11413
-
11414
11466
  // Copyright (c) Microsoft Corporation.
11415
11467
  // Licensed under the MIT license.
11416
11468
  /**
@@ -18387,7 +18439,7 @@ const CallArrangement = (props) => {
18387
18439
  if (!rolePermissions.cameraButton && props.errorBarProps) {
18388
18440
  errorBarProps = Object.assign(Object.assign({}, props.errorBarProps), { activeErrorMessages: props.errorBarProps.activeErrorMessages.filter((e) => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari') });
18389
18441
  }
18390
- return (React__default['default'].createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles) },
18442
+ return (React__default['default'].createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles), id: props.id },
18391
18443
  React__default['default'].createElement(react.Stack, { verticalFill: true, horizontalAlign: "stretch", className: containerClassName, "data-ui-id": props.dataUiId },
18392
18444
  React__default['default'].createElement(react.Stack, { grow: true, styles: callArrangementContainerStyles },
18393
18445
  React__default['default'].createElement(react.Stack.Item, { styles: notificationsContainerStyles },
@@ -18601,7 +18653,7 @@ const MediaGallery = (props) => {
18601
18653
  return (React__default['default'].createElement(VideoGallery, Object.assign({}, videoGalleryProps, { localVideoViewOptions: localVideoViewOptions$2, remoteVideoViewOptions: remoteVideoViewOptions, styles: VideoGalleryStyles, layout: "floatingLocalVideo", showCameraSwitcherInLocalPreview: props.isMobile, localVideoCameraCycleButtonProps: cameraSwitcherProps, onRenderAvatar: onRenderAvatar,
18602
18654
  /* @conditional-compile-remove(pinned-participants) */
18603
18655
  showRemoteVideoTileContextualMenu: !props.isMobile })));
18604
- }, [videoGalleryProps, props.isMobile, onRenderAvatar, cameraSwitcherProps]);
18656
+ }, [videoGalleryProps, props.isMobile, cameraSwitcherProps, onRenderAvatar]);
18605
18657
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
18606
18658
  React__default['default'].createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),
18607
18659
  VideoGalleryMemoized));
@@ -18820,7 +18872,8 @@ const CallPage = (props) => {
18820
18872
  const strings = useLocale().strings.call;
18821
18873
  // Reduce the controls shown when mobile view is enabled.
18822
18874
  const callControlOptions = mobileView ? reduceCallControlsForMobile(options === null || options === void 0 ? void 0 : options.callControls) : options === null || options === void 0 ? void 0 : options.callControls;
18823
- return (React__default['default'].createElement(CallArrangement, { complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }),
18875
+ const drawerMenuHostId = reactHooks.useId('drawerMenuHost');
18876
+ return (React__default['default'].createElement(CallArrangement, { id: drawerMenuHostId, complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }),
18824
18877
  // Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.
18825
18878
  errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && Object.assign(Object.assign({}, errorBarProps), { ignorePremountErrors: true }), mutedNotificationProps: mutedNotificationProps, callControlProps: {
18826
18879
  callInvitationURL: callInvitationURL,
@@ -18831,7 +18884,7 @@ const CallPage = (props) => {
18831
18884
  /* @conditional-compile-remove(one-to-n-calling) */
18832
18885
  onFetchAvatarPersonaData: onFetchAvatarPersonaData, mobileView: mobileView,
18833
18886
  /* @conditional-compile-remove(one-to-n-calling) */
18834
- modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? (isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (React__default['default'].createElement(MediaGallery, Object.assign({ isMobile: mobileView }, mediaGalleryProps, mediaGalleryHandlers, { onRenderAvatar: onRenderAvatar, onFetchAvatarPersonaData: onFetchAvatarPersonaData }))) : (React__default['default'].createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), dataUiId: 'call-page' }));
18887
+ modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? (isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (React__default['default'].createElement(MediaGallery, Object.assign({ isMobile: mobileView }, mediaGalleryProps, mediaGalleryHandlers, { onRenderAvatar: onRenderAvatar, onFetchAvatarPersonaData: onFetchAvatarPersonaData, drawerMenuHostId: drawerMenuHostId }))) : (React__default['default'].createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), dataUiId: 'call-page' }));
18835
18888
  };
18836
18889
  /**
18837
18890
  * @private
@@ -18917,10 +18970,7 @@ const ConfigurationPageCameraDropdown = (props) => {
18917
18970
  /* @conditional-compile-remove(call-readiness) */
18918
18971
  const cameraBlockedDropdown = (React__default['default'].createElement(_DevicePermissionDropdown, Object.assign({}, props.dropdownProps, { styles: dropDownStyles(theme), constrain: { video: true, audio: false }, strings: devicePermissionDropdownStringsCamera, icon: React__default['default'].createElement(CallCompositeIcon, { iconName: "ControlButtonCameraOn", style: { height: '1.25rem', marginRight: '0.625rem' } }), onClick: props.onClickEnableDevicePermission })));
18919
18972
  /* @conditional-compile-remove(call-readiness) */
18920
- if (props.callReadinessOptedIn) {
18921
- return React__default['default'].createElement(React__default['default'].Fragment, null, props.cameraPermissionGranted ? props.cameraGrantedDropdown : cameraBlockedDropdown);
18922
- }
18923
- return props.cameraGrantedDropdown;
18973
+ return props.cameraPermissionGranted ? props.cameraGrantedDropdown : cameraBlockedDropdown;
18924
18974
  };
18925
18975
 
18926
18976
  // Copyright (c) Microsoft Corporation.
@@ -18938,12 +18988,7 @@ const ConfigurationPageMicDropdown = (props) => {
18938
18988
  /* @conditional-compile-remove(call-readiness) */
18939
18989
  const microphoneBlockedDropdown = (React__default['default'].createElement(_DevicePermissionDropdown, Object.assign({}, props.dropdownProps, { styles: dropDownStyles(theme), constrain: { video: false, audio: true }, strings: devicePermissionDropdownStringsMicrophone, icon: React__default['default'].createElement(CallCompositeIcon, { iconName: "ControlButtonMicOn", style: { height: '1.25rem', marginRight: '0.625rem' } }), onClick: props.onClickEnableDevicePermission })));
18940
18990
  /* @conditional-compile-remove(call-readiness) */
18941
- if (props.callReadinessOptedIn) {
18942
- return React__default['default'].createElement(React__default['default'].Fragment, null,
18943
- " ",
18944
- props.micPermissionGranted ? props.micGrantedDropdown : microphoneBlockedDropdown);
18945
- }
18946
- return props.micGrantedDropdown;
18991
+ return props.micPermissionGranted ? props.micGrantedDropdown : microphoneBlockedDropdown;
18947
18992
  };
18948
18993
 
18949
18994
  // Copyright (c) Microsoft Corporation.
@@ -18990,7 +19035,7 @@ const localVideoViewOptions = {
18990
19035
  * @private
18991
19036
  */
18992
19037
  const LocalDeviceSettings = (props) => {
18993
- var _a, _b, _c;
19038
+ var _a;
18994
19039
  const theme = useTheme();
18995
19040
  const locale = useLocale();
18996
19041
  /* @conditional-compile-remove(call-readiness) */
@@ -19056,8 +19101,6 @@ const LocalDeviceSettings = (props) => {
19056
19101
  /* @conditional-compile-remove(call-readiness) */
19057
19102
  dropdownProps: dropdownProps,
19058
19103
  /* @conditional-compile-remove(call-readiness) */
19059
- callReadinessOptedIn: (_b = props.callReadinessOptedIn) !== null && _b !== void 0 ? _b : false,
19060
- /* @conditional-compile-remove(call-readiness) */
19061
19104
  onClickEnableDevicePermission: props.onClickEnableDevicePermission }))),
19062
19105
  React__default['default'].createElement(react.Stack, null,
19063
19106
  React__default['default'].createElement(react.Label, { id: 'call-composite-local-sound-settings-label', className: react.mergeStyles(dropDownStyles(theme).label), disabled: !micPermissionGranted }, soundLabel),
@@ -19066,8 +19109,6 @@ const LocalDeviceSettings = (props) => {
19066
19109
  /* @conditional-compile-remove(call-readiness) */
19067
19110
  dropdownProps: dropdownProps,
19068
19111
  /* @conditional-compile-remove(call-readiness) */
19069
- callReadinessOptedIn: (_c = props.callReadinessOptedIn) !== null && _c !== void 0 ? _c : false,
19070
- /* @conditional-compile-remove(call-readiness) */
19071
19112
  onClickEnableDevicePermission: props.onClickEnableDevicePermission }),
19072
19113
  React__default['default'].createElement(react.Dropdown, { "aria-labelledby": 'call-composite-local-sound-settings-label', placeholder: hasSpeakers ? defaultPlaceHolder : noSpeakersLabel, styles: dropDownStyles(theme), disabled: props.speakers.length === 0, options: getDropDownList(props.speakers), defaultSelectedKey: props.selectedSpeaker ? props.selectedSpeaker.id : defaultDeviceId(props.speakers), onChange: (event, option, index) => {
19073
19114
  props.onSelectSpeaker(props.speakers[index !== null && index !== void 0 ? index : 0]);
@@ -19339,9 +19380,7 @@ const ConfigurationPageErrorBar = (props) => {
19339
19380
  /* @conditional-compile-remove(call-readiness) */
19340
19381
  onNetworkingTroubleShootingClick,
19341
19382
  /* @conditional-compile-remove(call-readiness) */
19342
- permissionsState,
19343
- /* @conditional-compile-remove(call-readiness) */
19344
- callReadinessOptedIn = false } = props;
19383
+ permissionsState } = props;
19345
19384
  /* @conditional-compile-remove(call-readiness) */
19346
19385
  const permissionTroubleshootingGuideStrings = {
19347
19386
  devicePermissionLinkText: 'Troubleshooting Camera and Microphone Permissions',
@@ -19349,7 +19388,7 @@ const ConfigurationPageErrorBar = (props) => {
19349
19388
  dismissButtonText: 'OK'
19350
19389
  };
19351
19390
  /* @conditional-compile-remove(call-readiness) */
19352
- if (showTroubleShootingErrorBar && callReadinessOptedIn) {
19391
+ if (showTroubleShootingErrorBar) {
19353
19392
  return (React__default['default'].createElement(_TroubleshootingGuideErrorBar, Object.assign({ troubleshootingGuideStrings: permissionTroubleshootingGuideStrings, onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick, onNetworkingTroubleshootingClick: onNetworkingTroubleShootingClick, permissionsState: permissionsState }, errorBarProps)));
19354
19393
  }
19355
19394
  return React__default['default'].createElement(ErrorBar, Object.assign({}, errorBarProps));
@@ -19548,8 +19587,7 @@ const ConfigurationPage = (props) => {
19548
19587
  const { startCallHandler, mobileView,
19549
19588
  /* @conditional-compile-remove(call-readiness) */ deviceChecks,
19550
19589
  /* @conditional-compile-remove(call-readiness) */ onPermissionsTroubleshootingClick,
19551
- /* @conditional-compile-remove(call-readiness) */ onNetworkingTroubleShootingClick,
19552
- /* @conditional-compile-remove(call-readiness) */ callReadinessOptedIn = false } = props;
19590
+ /* @conditional-compile-remove(call-readiness) */ onNetworkingTroubleShootingClick } = props;
19553
19591
  const options = useAdaptedSelector(getSelector$1(DevicesButton));
19554
19592
  const localDeviceSettingsHandlers = useHandlers();
19555
19593
  const { video: cameraPermissionGranted, audio: microphonePermissionGranted } = useSelector$1(devicePermissionSelector);
@@ -19646,24 +19684,15 @@ const ConfigurationPage = (props) => {
19646
19684
  /* @conditional-compile-remove(call-readiness) */
19647
19685
  onNetworkingTroubleShootingClick: onNetworkingTroubleShootingClick,
19648
19686
  /* @conditional-compile-remove(call-readiness) */
19649
- onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick, errorBarProps: errorBarProps,
19650
- /* @conditional-compile-remove(call-readiness) */
19651
- callReadinessOptedIn: callReadinessOptedIn })),
19687
+ onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick, errorBarProps: errorBarProps })),
19652
19688
  /* @conditional-compile-remove(call-readiness) */
19653
19689
  // show the following screen if permission API is availible (not unsupported) and videoState, audioState is assigned values
19654
- callReadinessOptedIn &&
19655
- videoState &&
19656
- videoState !== 'unsupported' &&
19657
- audioState &&
19658
- audioState !== 'unsupported' && (React__default['default'].createElement(CallReadinessModal, { mobileView: mobileView,
19690
+ videoState && videoState !== 'unsupported' && audioState && audioState !== 'unsupported' && (React__default['default'].createElement(CallReadinessModal, { mobileView: mobileView,
19659
19691
  /* @conditional-compile-remove(unsupported-browser) */
19660
19692
  environmentInfo: environmentInfo, permissionsState: permissionsState, isPermissionsModalDismissed: isPermissionsModalDismissed, setIsPermissionsModalDismissed: setIsPermissionsModalDismissed, onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick })),
19661
19693
  /* @conditional-compile-remove(call-readiness) */
19662
19694
  // show the following screen if permission API is not availible (unsupported) and videoState, audioState is assigned values
19663
- callReadinessOptedIn &&
19664
- videoState &&
19665
- audioState &&
19666
- (videoState === 'unsupported' || audioState === 'unsupported') && (React__default['default'].createElement(CallReadinessModalFallBack, { mobileView: mobileView, checkPermissionModalShowing: forceShowingCheckPermissions, permissionsState: permissionsState, isPermissionsModalDismissed: isPermissionsModalDismissed,
19695
+ videoState && audioState && (videoState === 'unsupported' || audioState === 'unsupported') && (React__default['default'].createElement(CallReadinessModalFallBack, { mobileView: mobileView, checkPermissionModalShowing: forceShowingCheckPermissions, permissionsState: permissionsState, isPermissionsModalDismissed: isPermissionsModalDismissed,
19667
19696
  /* @conditional-compile-remove(unsupported-browser) */
19668
19697
  environmentInfo: environmentInfo, setIsPermissionsModalDismissed: setIsPermissionsModalDismissed, onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick })),
19669
19698
  React__default['default'].createElement(react.Stack, { grow: true, horizontal: !mobileWithPreview, horizontalAlign: mobileWithPreview ? 'stretch' : 'center', verticalAlign: "center", tokens: mobileWithPreview ? configurationStackTokensMobile : configurationStackTokensDesktop },
@@ -19681,8 +19710,6 @@ const ConfigurationPage = (props) => {
19681
19710
  /* @conditional-compile-remove(call-readiness) */ videoState), microphonePermissionGranted: micPermissionGrantedTrampoline(microphonePermissionGranted,
19682
19711
  /* @conditional-compile-remove(call-readiness) */ audioState),
19683
19712
  /* @conditional-compile-remove(call-readiness) */
19684
- callReadinessOptedIn: callReadinessOptedIn,
19685
- /* @conditional-compile-remove(call-readiness) */
19686
19713
  onClickEnableDevicePermission: () => {
19687
19714
  setIsPermissionsModalDismissed(true);
19688
19715
  } })))),
@@ -20124,7 +20151,7 @@ var __awaiter$5 = (window && window.__awaiter) || function (thisArg, _arguments,
20124
20151
  });
20125
20152
  };
20126
20153
  const MainScreen = (props) => {
20127
- var _a, _b, _c, _d, _e;
20154
+ var _a, _b, _c, _d;
20128
20155
  const { callInvitationUrl, onRenderAvatar, onFetchAvatarPersonaData, onFetchParticipantMenuItems } = props;
20129
20156
  const page = useSelector$1(getPage);
20130
20157
  const adapter = useAdapter();
@@ -20151,9 +20178,7 @@ const MainScreen = (props) => {
20151
20178
  /* @conditional-compile-remove(call-readiness) */
20152
20179
  onPermissionsTroubleshootingClick: (_b = props.options) === null || _b === void 0 ? void 0 : _b.onPermissionsTroubleshootingClick,
20153
20180
  /* @conditional-compile-remove(call-readiness) */
20154
- onNetworkingTroubleShootingClick: (_c = props.options) === null || _c === void 0 ? void 0 : _c.onNetworkingTroubleShootingClick,
20155
- /* @conditional-compile-remove(call-readiness) */
20156
- callReadinessOptedIn: (_d = props.options) === null || _d === void 0 ? void 0 : _d.callReadinessOptedIn }));
20181
+ onNetworkingTroubleShootingClick: (_c = props.options) === null || _c === void 0 ? void 0 : _c.onNetworkingTroubleShootingClick }));
20157
20182
  break;
20158
20183
  case 'accessDeniedTeamsMeeting':
20159
20184
  pageElement = (React__default['default'].createElement(NoticePage, { iconName: "NoticePageAccessDeniedTeamsMeeting", title: locale.strings.call.failedToJoinTeamsMeetingReasonAccessDeniedTitle, moreDetails: locale.strings.call.failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails, dataUiId: 'access-denied-teams-meeting-page' }));
@@ -20188,7 +20213,7 @@ const MainScreen = (props) => {
20188
20213
  case 'unsupportedEnvironment':
20189
20214
  pageElement = (React__default['default'].createElement(React__default['default'].Fragment, null,
20190
20215
  /* @conditional-compile-remove(unsupported-browser) */
20191
- React__default['default'].createElement(UnsupportedBrowserPage, { onTroubleshootingClick: (_e = props.options) === null || _e === void 0 ? void 0 : _e.onEnvironmentInfoTroubleshootingClick, environmentInfo: adapter.getState().environmentInfo })));
20216
+ React__default['default'].createElement(UnsupportedBrowserPage, { onTroubleshootingClick: (_d = props.options) === null || _d === void 0 ? void 0 : _d.onEnvironmentInfoTroubleshootingClick, environmentInfo: adapter.getState().environmentInfo })));
20192
20217
  break;
20193
20218
  }
20194
20219
  if (!pageElement) {
@@ -22299,16 +22324,12 @@ const CallWithChatScreen = (props) => {
22299
22324
  /* @conditional-compile-remove(call-readiness) */
22300
22325
  deviceChecks: props.deviceChecks,
22301
22326
  /* @conditional-compile-remove(call-readiness) */
22302
- callReadinessOptedIn: props.callReadinessOptedIn,
22303
- /* @conditional-compile-remove(call-readiness) */
22304
22327
  onNetworkingTroubleShootingClick: props.onNetworkingTroubleShootingClick,
22305
22328
  /* @conditional-compile-remove(call-readiness) */
22306
22329
  onPermissionsTroubleshootingClick: props.onPermissionsTroubleshootingClick,
22307
22330
  /* @conditional-compile-remove(unsupported-browser) */
22308
22331
  onEnvironmentInfoTroubleshootingClick: props.onEnvironmentInfoTroubleshootingClick
22309
22332
  }), [
22310
- /* @conditional-compile-remove(call-readiness) */
22311
- props.callReadinessOptedIn,
22312
22333
  /* @conditional-compile-remove(call-readiness) */
22313
22334
  props.deviceChecks,
22314
22335
  /* @conditional-compile-remove(unsupported-browser) */
@@ -22363,9 +22384,7 @@ const CallWithChatComposite = (props) => {
22363
22384
  return (React__default['default'].createElement(BaseProvider, { fluentTheme: fluentTheme, rtl: rtl, locale: props.locale, icons: props.icons },
22364
22385
  React__default['default'].createElement(CallWithChatScreen, Object.assign({}, props, {
22365
22386
  /* @conditional-compile-remove(call-readiness) */
22366
- deviceChecks: options === null || options === void 0 ? void 0 : options.deviceChecks,
22367
- /* @conditional-compile-remove(call-readiness) */
22368
- callReadinessOptedIn: options === null || options === void 0 ? void 0 : options.callReadinessOptedIn, callWithChatAdapter: adapter, formFactor: formFactor, callControls: options === null || options === void 0 ? void 0 : options.callControls, joinInvitationURL: joinInvitationURL, fluentTheme: fluentTheme,
22387
+ deviceChecks: options === null || options === void 0 ? void 0 : options.deviceChecks, callWithChatAdapter: adapter, formFactor: formFactor, callControls: options === null || options === void 0 ? void 0 : options.callControls, joinInvitationURL: joinInvitationURL, fluentTheme: fluentTheme,
22369
22388
  /* @conditional-compile-remove(file-sharing) */
22370
22389
  fileSharing: options === null || options === void 0 ? void 0 : options.fileSharing }))));
22371
22390
  };