@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.
- package/dist/communication-react.d.ts +0 -10
- package/dist/dist-cjs/communication-react/index.js +259 -240
- package/dist/dist-cjs/communication-react/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts +1 -0
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +35 -6
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.d.ts +9 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.js +22 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery.js +7 -2
- package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +0 -5
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +3 -5
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.d.ts +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js +1 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.d.ts +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js +2 -4
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.d.ts +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js +1 -5
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.d.ts +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js +1 -5
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +4 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.d.ts +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +4 -16
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +0 -5
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +1 -7
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
- 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-
|
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(
|
8445
|
-
|
8446
|
-
|
8447
|
-
|
8448
|
-
|
8449
|
-
|
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$
|
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$
|
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,
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
-
|
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
|
-
|
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
|
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: (
|
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
|
};
|