/// 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