///
import { IContextualMenuItem, IContextualMenuItemStyles, IContextualMenuStyles } from '@fluentui/react';
import { VideoStreamOptions } from '../types';
import { ControlBarButtonProps, ControlBarButtonStyles } from './ControlBarButton';
/**
* Styles for the {@link DevicesButton} menu.
*
* @public
*/
export interface DevicesButtonContextualMenuStyles extends IContextualMenuStyles {
/**
* Styles for the items inside the {@link DevicesButton} button menu.
*/
menuItemStyles?: IContextualMenuItemStyles;
}
/**
* Styles for the Devices button menu items.
*
* @public
*/
export interface DevicesButtonStyles extends ControlBarButtonStyles {
/**
* Styles for the {@link DevicesButton} menu.
*/
menuStyles?: Partial;
}
/**
* A device, e.g. camera, microphone, or speaker, in the {@link DevicesButton} flyout.
*
* @public
*/
export interface OptionsDevice {
/**
* Device unique identifier
*/
id: string;
/**
* Device name
*/
name: string;
}
/**
* Strings of {@link DevicesButton} that can be overridden.
*
* @public
*/
export interface DevicesButtonStrings {
/**
* Label of button
*/
label: string;
/**
* Button tooltip content.
*/
tooltipContent?: string;
/**
* Title of camera menu
*/
cameraMenuTitle: string;
/**
* Title of microphone menu
*/
microphoneMenuTitle: string;
/**
* Title of speaker menu
*/
speakerMenuTitle: string;
/**
* Tooltip of camera menu
*/
cameraMenuTooltip: string;
/**
* Tooltip of microphone menu
*/
microphoneMenuTooltip: string;
/**
* Tooltip of speaker menu
*/
speakerMenuTooltip: string;
}
/**
* Props for {@link DevicesButton}.
*
* @public
*/
export interface DevicesButtonProps extends ControlBarButtonProps {
/**
* Available microphones for selection
*/
microphones?: OptionsDevice[];
/**
* Available speakers for selection
*/
speakers?: OptionsDevice[];
/**
* Available cameras for selection
*/
cameras?: OptionsDevice[];
/**
* Microphone that is shown as currently selected
*/
selectedMicrophone?: OptionsDevice;
/**
* Speaker that is shown as currently selected
*/
selectedSpeaker?: OptionsDevice;
/**
* Camera that is shown as currently selected
*/
selectedCamera?: OptionsDevice;
/**
* Callback when a camera is selected
*/
onSelectCamera?: (device: OptionsDevice) => Promise;
/**
* Callback when a microphone is selected
*/
onSelectMicrophone?: (device: OptionsDevice) => Promise;
/**
* Speaker when a speaker is selected
*/
onSelectSpeaker?: (device: OptionsDevice) => Promise;
/**
* Optional strings to override in component
*/
strings?: Partial;
/**
* Option to increase the touch targets of the button flyout menu items from 36px to 48px.
* Recommended for mobile devices.
*/
styles?: DevicesButtonStyles;
}
/**
* Subset props for various buttons that show device selection menus.
*
* @internal
*/
export interface DeviceMenuProps {
microphones?: OptionsDevice[];
speakers?: OptionsDevice[];
cameras?: OptionsDevice[];
selectedMicrophone?: OptionsDevice;
selectedSpeaker?: OptionsDevice;
selectedCamera?: OptionsDevice;
onSelectCamera?: (device: OptionsDevice, options?: VideoStreamOptions) => Promise;
onSelectMicrophone?: (device: OptionsDevice) => Promise;
onSelectSpeaker?: (device: OptionsDevice) => Promise;
styles?: Partial;
}
/**
* Subset of strings for various buttons that show device selection menus.
*
* @internal
*/
export interface DeviceMenuStrings {
/**
* Title for Camera section in the contextual menu
*/
cameraMenuTitle?: string;
/**
* Title for Audio Device section in the contextual menu
*
* @remark Used in place of microphoneMenuTitle when speakers can be enumerated
*/
audioDeviceMenuTitle?: string;
/**
* Title for Microphone section in the contextual menu
*
* @remark Used when speakers can be enumerated
*/
microphoneMenuTitle?: string;
/**
* Title for Speaker section in the contextual menu
*/
speakerMenuTitle?: string;
/**
* Tooltip label for Camera section in the contextual menu
*/
cameraMenuTooltip?: string;
/**
* Tooltip label for Audio Device section in the contextual menu
*
* @remark Used in place of microphoneMenuTooltip when speakers can be enumerated
*/
audioDeviceMenuTooltip?: string;
/**
* Tooltip label for Microphone section in the contextual menu
*
* @remark Used when speakers can be enumerated
*/
microphoneMenuTooltip?: string;
/**
* Tooltip label for Speaker section in the contextual menu
*/
speakerMenuTooltip?: string;
}
/**
* Styles for flyouts used by various buttons for device selection flyouts.
*
* @internal
*/
export interface DeviceMenuStyles extends IContextualMenuStyles {
menuItemStyles?: IContextualMenuItemStyles;
}
/**
* Generates default {@link IContextualMenuProps} for buttons that
* show a drop-down to select devices to use.
*
* @internal
*/
export declare const generateDefaultDeviceMenuProps: (props: DeviceMenuProps, strings: DeviceMenuStrings, primaryActionItem?: IContextualMenuItem, isSelectCamAllowed?: boolean, isSelectMicAllowed?: boolean) => {
items: IContextualMenuItem[];
} | undefined;
/**
* A button to open a menu that controls device options.
*
* Can be used with {@link ControlBar}.
*
* @public
*/
export declare const DevicesButton: (props: DevicesButtonProps) => JSX.Element;
//# sourceMappingURL=DevicesButton.d.ts.map