@azure/communication-react 1.6.1-alpha-202306230016 → 1.6.1-alpha-202306240016

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.
@@ -2,5 +2,5 @@
2
2
  // Copyright (c) Microsoft Corporation.
3
3
  // Licensed under the MIT license.
4
4
  // GENERATED FILE. DO NOT EDIT MANUALLY.
5
- module.exports = '1.6.1-alpha-202306230016';
5
+ module.exports = '1.6.1-alpha-202306240016';
6
6
  //# sourceMappingURL=telemetryVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetryVersion.js","sourceRoot":"","sources":["../../../../../acs-ui-common/src/telemetryVersion.js"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAElC,wCAAwC;AAExC,MAAM,CAAC,OAAO,GAAG,0BAA0B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n// GENERATED FILE. DO NOT EDIT MANUALLY.\n\nmodule.exports = '1.6.1-alpha-202306230016';\n"]}
1
+ {"version":3,"file":"telemetryVersion.js","sourceRoot":"","sources":["../../../../../acs-ui-common/src/telemetryVersion.js"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAElC,wCAAwC;AAExC,MAAM,CAAC,OAAO,GAAG,0BAA0B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n// GENERATED FILE. DO NOT EDIT MANUALLY.\n\nmodule.exports = '1.6.1-alpha-202306240016';\n"]}
@@ -59,19 +59,7 @@ export const CameraButton = (props) => {
59
59
  }
60
60
  }
61
61
  }), [cameraOn, localVideoViewOptions, onToggleCamera, toggleAnnouncerString]);
62
- const splitButtonMenuItems = [
63
- {
64
- key: 'cameraPrimaryAction',
65
- text: props.checked ? strings.onSplitButtonPrimaryActionCamera : strings.offSplitButtonPrimaryActionCamera,
66
- onClick: () => {
67
- onToggleClick();
68
- },
69
- iconProps: {
70
- iconName: props.checked ? 'SplitButtonPrimaryActionCameraOn' : 'SplitButtonPrimaryActionCameraOff',
71
- styles: { root: { lineHeight: 0 } }
72
- }
73
- }
74
- ];
62
+ const splitButtonMenuItems = [];
75
63
  /* @conditional-compile-remove(video-background-effects) */
76
64
  if (props.onShowVideoEffectsPicker) {
77
65
  splitButtonMenuItems.push({
@@ -86,6 +74,17 @@ export const CameraButton = (props) => {
86
74
  }
87
75
  });
88
76
  }
77
+ splitButtonMenuItems.push({
78
+ key: 'cameraPrimaryAction',
79
+ text: props.checked ? strings.onSplitButtonPrimaryActionCamera : strings.offSplitButtonPrimaryActionCamera,
80
+ onClick: () => {
81
+ onToggleClick();
82
+ },
83
+ iconProps: {
84
+ iconName: props.checked ? 'SplitButtonPrimaryActionCameraOn' : 'SplitButtonPrimaryActionCameraOff',
85
+ styles: { root: { lineHeight: 0 } }
86
+ }
87
+ });
89
88
  const splitButtonPrimaryAction = {
90
89
  key: 'primaryAction',
91
90
  title: 'toggle camera',
@@ -1 +1 @@
1
- {"version":3,"file":"CameraButton.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/CameraButton.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { useCallback, useState, useMemo } from 'react';\nimport { useLocale } from '../localization';\nimport { VideoStreamOptions } from '../types';\nimport { ControlBarButton, ControlBarButtonProps } from './ControlBarButton';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\n\nimport {\n ContextualMenuItemType,\n IButtonProps,\n IContextualMenuItem,\n IContextualMenuItemStyles,\n IContextualMenuStyles\n} from '@fluentui/react';\nimport { ControlBarButtonStyles } from './ControlBarButton';\nimport { OptionsDevice, generateDefaultDeviceMenuProps } from './DevicesButton';\nimport { Announcer } from './Announcer';\n\nconst defaultLocalVideoViewOptions = {\n scalingMode: 'Crop',\n isMirrored: true\n} as VideoStreamOptions;\n\n/**\n * Strings of CameraButton that can be overridden.\n *\n * @public\n */\nexport interface CameraButtonStrings {\n /** Label when button is on. */\n onLabel: string;\n /** Label when button is off. */\n offLabel: string;\n /** Tooltip content when the button is disabled. */\n tooltipDisabledContent?: string;\n /** Tooltip content when the button is on. */\n tooltipOnContent?: string;\n /** Tooltip content when the button is off. */\n tooltipOffContent?: string;\n /** Tooltip content when the button is disabled due to video loading. */\n tooltipVideoLoadingContent?: string;\n /**\n * Title of camera menu\n */\n cameraMenuTitle: string;\n /**\n * Tooltip of camera menu\n */\n cameraMenuTooltip: string;\n /**\n * description of camera button split button role\n */\n cameraButtonSplitRoleDescription?: string;\n /**\n * Camera split button aria label for when button is enabled.\n */\n onSplitButtonAriaLabel?: string;\n /**\n * Camera split button aria label for when button is disabled.\n */\n offSplitButtonAriaLabel?: string;\n /**\n * Camera action turned on string for announcer\n */\n cameraActionTurnedOnAnnouncement?: string;\n /**\n * Camera action turned off string for announcer\n */\n cameraActionTurnedOffAnnouncement?: string;\n /**\n * Primary action for when the camera is turned off\n */\n offSplitButtonPrimaryActionCamera?: string;\n /**\n * Primary action for when the camera is on\n */\n onSplitButtonPrimaryActionCamera?: string;\n /**\n * Title for primary action section of split button\n */\n cameraPrimaryActionSplitButtonTitle?: string;\n /* @conditional-compile-remove(video-background-effects) */\n /**\n * Title for video effects menu item\n */\n videoEffectsMenuItemTitle?: string;\n}\n\n/**\n * Styles for {@link CameraButton}\n *\n * @public\n */\nexport interface CameraButtonStyles extends ControlBarButtonStyles {\n /**\n * Styles for the {@link CameraButton} menu.\n */\n menuStyles?: Partial<CameraButtonContextualMenuStyles>;\n}\n\n/**\n * Styles for the {@link CameraButton} menu.\n *\n * @public\n */\nexport interface CameraButtonContextualMenuStyles extends IContextualMenuStyles {\n /**\n * Styles for the items inside the {@link CameraButton} button menu.\n */\n menuItemStyles?: IContextualMenuItemStyles;\n}\n/**\n * Props for {@link CameraButton} component.\n *\n * @public\n */\nexport interface CameraButtonProps extends ControlBarButtonProps {\n /**\n * Utility property for using this component with `communication react eventHandlers`.\n * Maps directly to the `onClick` property.\n */\n onToggleCamera?: (options?: VideoStreamOptions) => Promise<void>;\n\n /**\n * Options for rendering local video view.\n */\n localVideoViewOptions?: VideoStreamOptions;\n /**\n * Available cameras for selection\n */\n cameras?: OptionsDevice[];\n /**\n * Camera that is shown as currently selected\n */\n selectedCamera?: OptionsDevice;\n /**\n * Callback when a camera is selected\n */\n onSelectCamera?: (device: OptionsDevice) => Promise<void>;\n /**\n * Whether to use a {@link SplitButton} with a {@link IContextualMenu} for device selection.\n *\n * default: false\n */\n enableDeviceSelectionMenu?: boolean;\n /**\n * Optional strings to override in component\n */\n strings?: Partial<CameraButtonStrings>;\n /**\n * Styles for {@link CameraButton} and the device selection flyout.\n */\n styles?: Partial<CameraButtonStyles>;\n /* @conditional-compile-remove(video-background-effects) */\n /**\n * Callback when a effects is clicked\n */\n onShowVideoEffectsPicker?: (showVideoEffectsOptions: boolean) => void;\n}\n\n/**\n * A button to turn camera on / off.\n *\n * Can be used with {@link ControlBar}.\n *\n * @public\n */\nexport const CameraButton = (props: CameraButtonProps): JSX.Element => {\n const { localVideoViewOptions, onToggleCamera } = props;\n const [waitForCamera, setWaitForCamera] = useState(false);\n const localeStrings = useLocale().strings.cameraButton;\n const strings = { ...localeStrings, ...props.strings };\n const [announcerString, setAnnouncerString] = useState<string | undefined>(undefined);\n\n const disabled = props.disabled || waitForCamera;\n\n const onRenderCameraOnIcon = (): JSX.Element => (\n <_HighContrastAwareIcon disabled={disabled} iconName=\"ControlButtonCameraOn\" />\n );\n const onRenderCameraOffIcon = (): JSX.Element => (\n <_HighContrastAwareIcon disabled={disabled} iconName=\"ControlButtonCameraOff\" />\n );\n if (waitForCamera && strings.tooltipVideoLoadingContent) {\n strings.tooltipDisabledContent = strings.tooltipVideoLoadingContent;\n }\n\n const cameraOn = props.checked;\n const splitButtonAriaString = cameraOn ? strings.onSplitButtonAriaLabel : strings.offSplitButtonAriaLabel;\n\n const toggleAnnouncerString = useCallback(\n (isCameraOn: boolean) => {\n setAnnouncerString(\n !isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement\n );\n },\n [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]\n );\n\n const onToggleClick = useCallback(async () => {\n // Throttle click on camera, need to await onToggleCamera then allow another click\n if (onToggleCamera) {\n setWaitForCamera(true);\n try {\n await onToggleCamera(localVideoViewOptions ?? defaultLocalVideoViewOptions);\n // allows for the setting of narrator strings triggering the announcer when camera is turned on or off.\n toggleAnnouncerString(!cameraOn);\n } finally {\n setWaitForCamera(false);\n }\n }\n }, [cameraOn, localVideoViewOptions, onToggleCamera, toggleAnnouncerString]);\n\n const splitButtonMenuItems: IContextualMenuItem[] = [\n {\n key: 'cameraPrimaryAction',\n text: props.checked ? strings.onSplitButtonPrimaryActionCamera : strings.offSplitButtonPrimaryActionCamera,\n onClick: () => {\n onToggleClick();\n },\n iconProps: {\n iconName: props.checked ? 'SplitButtonPrimaryActionCameraOn' : 'SplitButtonPrimaryActionCameraOff',\n styles: { root: { lineHeight: 0 } }\n }\n }\n ];\n /* @conditional-compile-remove(video-background-effects) */\n if (props.onShowVideoEffectsPicker) {\n splitButtonMenuItems.push({\n key: 'effects',\n 'data-ui-id': 'camera-split-button-video-effects',\n text: strings.videoEffectsMenuItemTitle,\n iconProps: { iconName: 'ControlButtonVideoEffectsOption', styles: { root: { lineHeight: 0 } } },\n onClick: () => {\n if (props.onShowVideoEffectsPicker) {\n props.onShowVideoEffectsPicker(true);\n }\n }\n });\n }\n\n const splitButtonPrimaryAction: IContextualMenuItem = {\n key: 'primaryAction',\n title: 'toggle camera',\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n topDivider: true,\n items: splitButtonMenuItems\n }\n };\n\n const splitButtonMenuProps: IButtonProps = useMemo(\n () => ({\n ...props.splitButtonMenuProps,\n className: 'camera-split-button'\n }),\n [props.splitButtonMenuProps]\n );\n\n return (\n <>\n <Announcer announcementString={announcerString} ariaLive={'polite'} />\n <ControlBarButton\n {...props}\n disabled={disabled}\n onClick={onToggleCamera ? onToggleClick : props.onClick}\n onRenderOnIcon={props.onRenderOnIcon ?? onRenderCameraOnIcon}\n onRenderOffIcon={props.onRenderOffIcon ?? onRenderCameraOffIcon}\n strings={strings}\n labelKey={props.labelKey ?? 'cameraButtonLabel'}\n menuProps={\n props.menuProps ??\n (props.enableDeviceSelectionMenu\n ? generateDefaultDeviceMenuProps(\n { ...props, styles: props.styles?.menuStyles },\n strings,\n splitButtonPrimaryAction\n )\n : undefined)\n }\n menuIconProps={props.menuIconProps ?? !props.enableDeviceSelectionMenu ? { hidden: true } : undefined}\n split={props.split ?? props.enableDeviceSelectionMenu}\n aria-roledescription={props.enableDeviceSelectionMenu ? strings.cameraButtonSplitRoleDescription : undefined}\n splitButtonAriaLabel={props.enableDeviceSelectionMenu ? splitButtonAriaString : undefined}\n splitButtonMenuProps={splitButtonMenuProps}\n />\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"CameraButton.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/CameraButton.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { useCallback, useState, useMemo } from 'react';\nimport { useLocale } from '../localization';\nimport { VideoStreamOptions } from '../types';\nimport { ControlBarButton, ControlBarButtonProps } from './ControlBarButton';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\n\nimport {\n ContextualMenuItemType,\n IButtonProps,\n IContextualMenuItem,\n IContextualMenuItemStyles,\n IContextualMenuStyles\n} from '@fluentui/react';\nimport { ControlBarButtonStyles } from './ControlBarButton';\nimport { OptionsDevice, generateDefaultDeviceMenuProps } from './DevicesButton';\nimport { Announcer } from './Announcer';\n\nconst defaultLocalVideoViewOptions = {\n scalingMode: 'Crop',\n isMirrored: true\n} as VideoStreamOptions;\n\n/**\n * Strings of CameraButton that can be overridden.\n *\n * @public\n */\nexport interface CameraButtonStrings {\n /** Label when button is on. */\n onLabel: string;\n /** Label when button is off. */\n offLabel: string;\n /** Tooltip content when the button is disabled. */\n tooltipDisabledContent?: string;\n /** Tooltip content when the button is on. */\n tooltipOnContent?: string;\n /** Tooltip content when the button is off. */\n tooltipOffContent?: string;\n /** Tooltip content when the button is disabled due to video loading. */\n tooltipVideoLoadingContent?: string;\n /**\n * Title of camera menu\n */\n cameraMenuTitle: string;\n /**\n * Tooltip of camera menu\n */\n cameraMenuTooltip: string;\n /**\n * description of camera button split button role\n */\n cameraButtonSplitRoleDescription?: string;\n /**\n * Camera split button aria label for when button is enabled.\n */\n onSplitButtonAriaLabel?: string;\n /**\n * Camera split button aria label for when button is disabled.\n */\n offSplitButtonAriaLabel?: string;\n /**\n * Camera action turned on string for announcer\n */\n cameraActionTurnedOnAnnouncement?: string;\n /**\n * Camera action turned off string for announcer\n */\n cameraActionTurnedOffAnnouncement?: string;\n /**\n * Primary action for when the camera is turned off\n */\n offSplitButtonPrimaryActionCamera?: string;\n /**\n * Primary action for when the camera is on\n */\n onSplitButtonPrimaryActionCamera?: string;\n /**\n * Title for primary action section of split button\n */\n cameraPrimaryActionSplitButtonTitle?: string;\n /* @conditional-compile-remove(video-background-effects) */\n /**\n * Title for video effects menu item\n */\n videoEffectsMenuItemTitle?: string;\n}\n\n/**\n * Styles for {@link CameraButton}\n *\n * @public\n */\nexport interface CameraButtonStyles extends ControlBarButtonStyles {\n /**\n * Styles for the {@link CameraButton} menu.\n */\n menuStyles?: Partial<CameraButtonContextualMenuStyles>;\n}\n\n/**\n * Styles for the {@link CameraButton} menu.\n *\n * @public\n */\nexport interface CameraButtonContextualMenuStyles extends IContextualMenuStyles {\n /**\n * Styles for the items inside the {@link CameraButton} button menu.\n */\n menuItemStyles?: IContextualMenuItemStyles;\n}\n/**\n * Props for {@link CameraButton} component.\n *\n * @public\n */\nexport interface CameraButtonProps extends ControlBarButtonProps {\n /**\n * Utility property for using this component with `communication react eventHandlers`.\n * Maps directly to the `onClick` property.\n */\n onToggleCamera?: (options?: VideoStreamOptions) => Promise<void>;\n\n /**\n * Options for rendering local video view.\n */\n localVideoViewOptions?: VideoStreamOptions;\n /**\n * Available cameras for selection\n */\n cameras?: OptionsDevice[];\n /**\n * Camera that is shown as currently selected\n */\n selectedCamera?: OptionsDevice;\n /**\n * Callback when a camera is selected\n */\n onSelectCamera?: (device: OptionsDevice) => Promise<void>;\n /**\n * Whether to use a {@link SplitButton} with a {@link IContextualMenu} for device selection.\n *\n * default: false\n */\n enableDeviceSelectionMenu?: boolean;\n /**\n * Optional strings to override in component\n */\n strings?: Partial<CameraButtonStrings>;\n /**\n * Styles for {@link CameraButton} and the device selection flyout.\n */\n styles?: Partial<CameraButtonStyles>;\n /* @conditional-compile-remove(video-background-effects) */\n /**\n * Callback when a effects is clicked\n */\n onShowVideoEffectsPicker?: (showVideoEffectsOptions: boolean) => void;\n}\n\n/**\n * A button to turn camera on / off.\n *\n * Can be used with {@link ControlBar}.\n *\n * @public\n */\nexport const CameraButton = (props: CameraButtonProps): JSX.Element => {\n const { localVideoViewOptions, onToggleCamera } = props;\n const [waitForCamera, setWaitForCamera] = useState(false);\n const localeStrings = useLocale().strings.cameraButton;\n const strings = { ...localeStrings, ...props.strings };\n const [announcerString, setAnnouncerString] = useState<string | undefined>(undefined);\n\n const disabled = props.disabled || waitForCamera;\n\n const onRenderCameraOnIcon = (): JSX.Element => (\n <_HighContrastAwareIcon disabled={disabled} iconName=\"ControlButtonCameraOn\" />\n );\n const onRenderCameraOffIcon = (): JSX.Element => (\n <_HighContrastAwareIcon disabled={disabled} iconName=\"ControlButtonCameraOff\" />\n );\n if (waitForCamera && strings.tooltipVideoLoadingContent) {\n strings.tooltipDisabledContent = strings.tooltipVideoLoadingContent;\n }\n\n const cameraOn = props.checked;\n const splitButtonAriaString = cameraOn ? strings.onSplitButtonAriaLabel : strings.offSplitButtonAriaLabel;\n\n const toggleAnnouncerString = useCallback(\n (isCameraOn: boolean) => {\n setAnnouncerString(\n !isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement\n );\n },\n [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]\n );\n\n const onToggleClick = useCallback(async () => {\n // Throttle click on camera, need to await onToggleCamera then allow another click\n if (onToggleCamera) {\n setWaitForCamera(true);\n try {\n await onToggleCamera(localVideoViewOptions ?? defaultLocalVideoViewOptions);\n // allows for the setting of narrator strings triggering the announcer when camera is turned on or off.\n toggleAnnouncerString(!cameraOn);\n } finally {\n setWaitForCamera(false);\n }\n }\n }, [cameraOn, localVideoViewOptions, onToggleCamera, toggleAnnouncerString]);\n\n const splitButtonMenuItems: IContextualMenuItem[] = [];\n /* @conditional-compile-remove(video-background-effects) */\n if (props.onShowVideoEffectsPicker) {\n splitButtonMenuItems.push({\n key: 'effects',\n 'data-ui-id': 'camera-split-button-video-effects',\n text: strings.videoEffectsMenuItemTitle,\n iconProps: { iconName: 'ControlButtonVideoEffectsOption', styles: { root: { lineHeight: 0 } } },\n onClick: () => {\n if (props.onShowVideoEffectsPicker) {\n props.onShowVideoEffectsPicker(true);\n }\n }\n });\n }\n\n splitButtonMenuItems.push({\n key: 'cameraPrimaryAction',\n text: props.checked ? strings.onSplitButtonPrimaryActionCamera : strings.offSplitButtonPrimaryActionCamera,\n onClick: () => {\n onToggleClick();\n },\n iconProps: {\n iconName: props.checked ? 'SplitButtonPrimaryActionCameraOn' : 'SplitButtonPrimaryActionCameraOff',\n styles: { root: { lineHeight: 0 } }\n }\n });\n\n const splitButtonPrimaryAction: IContextualMenuItem = {\n key: 'primaryAction',\n title: 'toggle camera',\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n topDivider: true,\n items: splitButtonMenuItems\n }\n };\n\n const splitButtonMenuProps: IButtonProps = useMemo(\n () => ({\n ...props.splitButtonMenuProps,\n className: 'camera-split-button'\n }),\n [props.splitButtonMenuProps]\n );\n\n return (\n <>\n <Announcer announcementString={announcerString} ariaLive={'polite'} />\n <ControlBarButton\n {...props}\n disabled={disabled}\n onClick={onToggleCamera ? onToggleClick : props.onClick}\n onRenderOnIcon={props.onRenderOnIcon ?? onRenderCameraOnIcon}\n onRenderOffIcon={props.onRenderOffIcon ?? onRenderCameraOffIcon}\n strings={strings}\n labelKey={props.labelKey ?? 'cameraButtonLabel'}\n menuProps={\n props.menuProps ??\n (props.enableDeviceSelectionMenu\n ? generateDefaultDeviceMenuProps(\n { ...props, styles: props.styles?.menuStyles },\n strings,\n splitButtonPrimaryAction\n )\n : undefined)\n }\n menuIconProps={props.menuIconProps ?? !props.enableDeviceSelectionMenu ? { hidden: true } : undefined}\n split={props.split ?? props.enableDeviceSelectionMenu}\n aria-roledescription={props.enableDeviceSelectionMenu ? strings.cameraButtonSplitRoleDescription : undefined}\n splitButtonAriaLabel={props.enableDeviceSelectionMenu ? splitButtonAriaString : undefined}\n splitButtonMenuProps={splitButtonMenuProps}\n />\n </>\n );\n};\n"]}
@@ -50,6 +50,10 @@ export const generateDefaultDeviceMenuProps = (props, strings, primaryActionItem
50
50
  key: camera.id,
51
51
  text: camera.name,
52
52
  title: camera.name,
53
+ iconProps: {
54
+ iconName: 'ContextMenuCameraIcon',
55
+ styles: { root: { lineHeight: 0 } }
56
+ },
53
57
  itemProps: {
54
58
  styles: menuItemStyles
55
59
  },
@@ -96,6 +100,10 @@ export const generateDefaultDeviceMenuProps = (props, strings, primaryActionItem
96
100
  itemProps: {
97
101
  styles: menuItemStyles
98
102
  },
103
+ iconProps: {
104
+ iconName: 'ContextMenuMicIcon',
105
+ styles: { root: { lineHeight: 0 } }
106
+ },
99
107
  canCheck: true,
100
108
  isChecked: microphone.id === (selectedMicrophone === null || selectedMicrophone === void 0 ? void 0 : selectedMicrophone.id),
101
109
  onClick: () => {
@@ -131,6 +139,10 @@ export const generateDefaultDeviceMenuProps = (props, strings, primaryActionItem
131
139
  itemProps: {
132
140
  styles: menuItemStyles
133
141
  },
142
+ iconProps: {
143
+ iconName: 'ContextMenuMicIcon',
144
+ styles: { root: { lineHeight: 0 } }
145
+ },
134
146
  canCheck: true,
135
147
  isChecked: speaker.id === (selectedSpeaker === null || selectedSpeaker === void 0 ? void 0 : selectedSpeaker.id),
136
148
  onClick: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"DevicesButton.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/DevicesButton.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n ContextualMenuItemType,\n IContextualMenuItem,\n IContextualMenuItemStyles,\n IContextualMenuProps,\n IContextualMenuStyles,\n merge\n} from '@fluentui/react';\nimport React from 'react';\nimport { useLocale } from '../localization';\nimport { ControlBarButton, ControlBarButtonProps, ControlBarButtonStyles } from './ControlBarButton';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\nimport { buttonFlyoutItemStyles } from './styles/ControlBar.styles';\nimport { _preventDismissOnEvent as preventDismissOnEvent } from '@internal/acs-ui-common';\n\n/**\n * Styles for the {@link DevicesButton} menu.\n *\n * @public\n */\nexport interface DevicesButtonContextualMenuStyles extends IContextualMenuStyles {\n /**\n * Styles for the items inside the {@link DevicesButton} button menu.\n */\n menuItemStyles?: IContextualMenuItemStyles;\n}\n\n/**\n * Styles for the Devices button menu items.\n *\n * @public\n */\nexport interface DevicesButtonStyles extends ControlBarButtonStyles {\n /**\n * Styles for the {@link DevicesButton} menu.\n */\n menuStyles?: Partial<DevicesButtonContextualMenuStyles>;\n}\n\n/**\n * A device, e.g. camera, microphone, or speaker, in the {@link DevicesButton} flyout.\n *\n * @public\n */\nexport interface OptionsDevice {\n /**\n * Device unique identifier\n */\n id: string;\n /**\n * Device name\n */\n name: string;\n}\n\n/**\n * Strings of {@link DevicesButton} that can be overridden.\n *\n * @public\n */\nexport interface DevicesButtonStrings {\n /**\n * Label of button\n */\n label: string;\n /**\n * Button tooltip content.\n */\n tooltipContent?: string;\n /**\n * Title of camera menu\n */\n cameraMenuTitle: string;\n /**\n * Title of microphone menu\n */\n microphoneMenuTitle: string;\n /**\n * Title of speaker menu\n */\n speakerMenuTitle: string;\n /**\n * Tooltip of camera menu\n */\n cameraMenuTooltip: string;\n /**\n * Tooltip of microphone menu\n */\n microphoneMenuTooltip: string;\n /**\n * Tooltip of speaker menu\n */\n speakerMenuTooltip: string;\n}\n\n/**\n * Props for {@link DevicesButton}.\n *\n * @public\n */\nexport interface DevicesButtonProps extends ControlBarButtonProps {\n /**\n * Available microphones for selection\n */\n microphones?: OptionsDevice[];\n /**\n * Available speakers for selection\n */\n speakers?: OptionsDevice[];\n /**\n * Available cameras for selection\n */\n cameras?: OptionsDevice[];\n /**\n * Microphone that is shown as currently selected\n */\n selectedMicrophone?: OptionsDevice;\n /**\n * Speaker that is shown as currently selected\n */\n selectedSpeaker?: OptionsDevice;\n /**\n * Camera that is shown as currently selected\n */\n selectedCamera?: OptionsDevice;\n /**\n * Callback when a camera is selected\n */\n onSelectCamera?: (device: OptionsDevice) => Promise<void>;\n /**\n * Callback when a microphone is selected\n */\n onSelectMicrophone?: (device: OptionsDevice) => Promise<void>;\n /**\n * Speaker when a speaker is selected\n */\n onSelectSpeaker?: (device: OptionsDevice) => Promise<void>;\n /**\n * Optional strings to override in component\n */\n strings?: Partial<DevicesButtonStrings>;\n /**\n * Option to increase the touch targets of the button flyout menu items from 36px to 48px.\n * Recommended for mobile devices.\n */\n styles?: DevicesButtonStyles;\n}\n\n/**\n * Subset props for various buttons that show device selection menus.\n *\n * @private\n */\nexport interface DeviceMenuProps {\n microphones?: OptionsDevice[];\n speakers?: OptionsDevice[];\n cameras?: OptionsDevice[];\n selectedMicrophone?: OptionsDevice;\n selectedSpeaker?: OptionsDevice;\n selectedCamera?: OptionsDevice;\n onSelectCamera?: (device: OptionsDevice) => Promise<void>;\n onSelectMicrophone?: (device: OptionsDevice) => Promise<void>;\n onSelectSpeaker?: (device: OptionsDevice) => Promise<void>;\n styles?: Partial<DeviceMenuStyles>;\n}\n\n/**\n * Subset of strings for various buttons that show device selection menus.\n *\n * @private\n */\nexport interface DeviceMenuStrings {\n /**\n * Title for Camera section in the contextual menu\n */\n cameraMenuTitle?: string;\n /**\n * Title for Audio Device section in the contextual menu\n *\n * @remark Used in place of microphoneMenuTitle when speakers can be enumerated\n */\n audioDeviceMenuTitle?: string;\n /**\n * Title for Microphone section in the contextual menu\n *\n * @remark Used when speakers can be enumerated\n */\n microphoneMenuTitle?: string;\n /**\n * Title for Speaker section in the contextual menu\n */\n speakerMenuTitle?: string;\n /**\n * Tooltip label for Camera section in the contextual menu\n */\n cameraMenuTooltip?: string;\n /**\n * Tooltip label for Audio Device section in the contextual menu\n *\n * @remark Used in place of microphoneMenuTooltip when speakers can be enumerated\n */\n audioDeviceMenuTooltip?: string;\n /**\n * Tooltip label for Microphone section in the contextual menu\n *\n * @remark Used when speakers can be enumerated\n */\n microphoneMenuTooltip?: string;\n /**\n * Tooltip label for Speaker section in the contextual menu\n */\n speakerMenuTooltip?: string;\n}\n\n/**\n * Styles for flyouts used by various buttons for device selection flyouts.\n *\n * @private\n */\nexport interface DeviceMenuStyles extends IContextualMenuStyles {\n menuItemStyles?: IContextualMenuItemStyles;\n}\n\n/**\n * Generates default {@link IContextualMenuProps} for buttons that\n * show a drop-down to select devices to use.\n *\n * @private\n */\nexport const generateDefaultDeviceMenuProps = (\n props: DeviceMenuProps,\n strings: DeviceMenuStrings,\n primaryActionItem?: IContextualMenuItem,\n isSelectCamAllowed = true,\n isSelectMicAllowed = true\n): { items: IContextualMenuItem[] } | undefined => {\n const {\n microphones,\n speakers,\n cameras,\n selectedMicrophone,\n selectedSpeaker,\n selectedCamera,\n onSelectCamera,\n onSelectMicrophone,\n onSelectSpeaker\n } = props;\n\n const defaultMenuProps: IContextualMenuProps = {\n items: [],\n styles: props.styles,\n calloutProps: {\n styles: {\n root: {\n // Confine the menu to the parents bounds.\n // More info: https://github.com/microsoft/fluentui/issues/18835\n // NB: 95% to keep some space for margin, drop shadow etc around the Callout.\n maxWidth: '95%'\n }\n },\n preventDismissOnEvent\n }\n };\n\n const menuItemStyles = merge(buttonFlyoutItemStyles, props.styles?.menuItemStyles ?? {});\n\n if (cameras && selectedCamera && onSelectCamera && isSelectCamAllowed) {\n defaultMenuProps.items.push({\n key: 'cameras',\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n title: strings.cameraMenuTitle,\n items: [\n {\n key: 'sectionCamera',\n title: strings.cameraMenuTooltip,\n subMenuProps: {\n calloutProps: {\n preventDismissOnEvent\n },\n items: cameras.map((camera) => ({\n key: camera.id,\n text: camera.name,\n title: camera.name,\n itemProps: {\n styles: menuItemStyles\n },\n canCheck: true,\n isChecked: camera.id === selectedCamera?.id,\n onClick: () => {\n if (camera.id !== selectedCamera?.id) {\n onSelectCamera(camera);\n }\n }\n }))\n },\n text: selectedCamera.name\n }\n ]\n }\n });\n if (primaryActionItem) {\n defaultMenuProps.items.push(primaryActionItem);\n }\n }\n\n if (microphones && selectedMicrophone && onSelectMicrophone && isSelectMicAllowed) {\n // Set props as Microphone if speakers can be enumerated else set as Audio Device\n const speakersAvailable = speakers && speakers.length > 0;\n const key = speakersAvailable ? 'sectionMicrophone' : 'sectionAudioDevice';\n const title = speakersAvailable ? strings.microphoneMenuTooltip : strings.audioDeviceMenuTooltip;\n\n defaultMenuProps.items.push({\n key: 'microphones',\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n title: strings.microphoneMenuTitle,\n items: [\n {\n key: key,\n title: title,\n subMenuProps: {\n calloutProps: {\n preventDismissOnEvent\n },\n items: microphones.map((microphone) => ({\n key: microphone.id,\n text: microphone.name,\n title: microphone.name,\n itemProps: {\n styles: menuItemStyles\n },\n canCheck: true,\n isChecked: microphone.id === selectedMicrophone?.id,\n onClick: () => {\n if (microphone.id !== selectedMicrophone?.id) {\n onSelectMicrophone(microphone);\n }\n }\n }))\n },\n text: selectedMicrophone.name\n }\n ]\n }\n });\n }\n\n if (speakers && selectedSpeaker && onSelectSpeaker) {\n defaultMenuProps.items.push({\n key: 'speakers',\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n title: strings.speakerMenuTitle,\n items: [\n {\n key: 'sectionSpeaker',\n subMenuProps: {\n calloutProps: {\n preventDismissOnEvent\n },\n items: speakers.map((speaker) => ({\n key: speaker.id,\n text: speaker.name,\n title: speaker.name,\n itemProps: {\n styles: menuItemStyles\n },\n canCheck: true,\n isChecked: speaker.id === selectedSpeaker?.id,\n onClick: () => {\n if (speaker.id !== selectedSpeaker?.id) {\n onSelectSpeaker(speaker);\n }\n }\n }))\n },\n text: selectedSpeaker.name\n }\n ]\n }\n });\n }\n if (microphones && selectedMicrophone && onSelectMicrophone && isSelectMicAllowed && primaryActionItem) {\n defaultMenuProps.items.push(primaryActionItem);\n }\n\n if (defaultMenuProps.items.length === 0) {\n // Avoids creating an empty context menu.\n return undefined;\n }\n return defaultMenuProps;\n};\n\n/**\n * A button to open a menu that controls device options.\n *\n * Can be used with {@link ControlBar}.\n *\n * @public\n */\nexport const DevicesButton = (props: DevicesButtonProps): JSX.Element => {\n const { onRenderIcon } = props;\n\n const localeStrings = useLocale().strings.devicesButton;\n const strings = { ...localeStrings, ...props.strings };\n\n const devicesButtonMenu =\n props.menuProps ?? generateDefaultDeviceMenuProps({ ...props, styles: props.styles?.menuStyles }, strings);\n\n const onRenderOptionsIcon = (): JSX.Element => {\n return <_HighContrastAwareIcon disabled={props.disabled} iconName=\"ControlButtonOptions\" />;\n };\n\n return (\n <ControlBarButton\n {...props}\n menuProps={devicesButtonMenu}\n menuIconProps={{ hidden: true }}\n onRenderIcon={onRenderIcon ?? onRenderOptionsIcon}\n strings={strings}\n labelKey={props.labelKey ?? 'devicesButtonLabel'}\n />\n );\n};\n\"../../../acs-ui-common/src\""]}
1
+ {"version":3,"file":"DevicesButton.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/DevicesButton.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,sBAAsB,EAKtB,KAAK,EACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAiD,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,sBAAsB,IAAI,qBAAqB,EAAE,mCAAgC;AAkN1F;;;;;GAKG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,KAAsB,EACtB,OAA0B,EAC1B,iBAAuC,EACvC,kBAAkB,GAAG,IAAI,EACzB,kBAAkB,GAAG,IAAI,EACqB,EAAE;;IAChD,MAAM,EACJ,WAAW,EACX,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,eAAe,EAChB,GAAG,KAAK,CAAC;IAEV,MAAM,gBAAgB,GAAyB;QAC7C,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE;YACZ,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,0CAA0C;oBAC1C,gEAAgE;oBAChE,6EAA6E;oBAC7E,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,qBAAqB;SACtB;KACF,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,CAAC,sBAAsB,EAAE,MAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,cAAc,mCAAI,EAAE,CAAC,CAAC;IAEzF,IAAI,OAAO,IAAI,cAAc,IAAI,cAAc,IAAI,kBAAkB,EAAE;QACrE,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1B,GAAG,EAAE,SAAS;YACd,QAAQ,EAAE,sBAAsB,CAAC,OAAO;YACxC,YAAY,EAAE;gBACZ,KAAK,EAAE,OAAO,CAAC,eAAe;gBAC9B,KAAK,EAAE;oBACL;wBACE,GAAG,EAAE,eAAe;wBACpB,KAAK,EAAE,OAAO,CAAC,iBAAiB;wBAChC,YAAY,EAAE;4BACZ,YAAY,EAAE;gCACZ,qBAAqB;6BACtB;4BACD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gCAC9B,GAAG,EAAE,MAAM,CAAC,EAAE;gCACd,IAAI,EAAE,MAAM,CAAC,IAAI;gCACjB,KAAK,EAAE,MAAM,CAAC,IAAI;gCAClB,SAAS,EAAE;oCACT,QAAQ,EAAE,uBAAuB;oCACjC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;iCACpC;gCACD,SAAS,EAAE;oCACT,MAAM,EAAE,cAAc;iCACvB;gCACD,QAAQ,EAAE,IAAI;gCACd,SAAS,EAAE,MAAM,CAAC,EAAE,MAAK,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,EAAE,CAAA;gCAC3C,OAAO,EAAE,GAAG,EAAE;oCACZ,IAAI,MAAM,CAAC,EAAE,MAAK,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,EAAE,CAAA,EAAE;wCACpC,cAAc,CAAC,MAAM,CAAC,CAAC;qCACxB;gCACH,CAAC;6BACF,CAAC,CAAC;yBACJ;wBACD,IAAI,EAAE,cAAc,CAAC,IAAI;qBAC1B;iBACF;aACF;SACF,CAAC,CAAC;QACH,IAAI,iBAAiB,EAAE;YACrB,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAChD;KACF;IAED,IAAI,WAAW,IAAI,kBAAkB,IAAI,kBAAkB,IAAI,kBAAkB,EAAE;QACjF,iFAAiF;QACjF,MAAM,iBAAiB,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAC3E,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QAEjG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1B,GAAG,EAAE,aAAa;YAClB,QAAQ,EAAE,sBAAsB,CAAC,OAAO;YACxC,YAAY,EAAE;gBACZ,KAAK,EAAE,OAAO,CAAC,mBAAmB;gBAClC,KAAK,EAAE;oBACL;wBACE,GAAG,EAAE,GAAG;wBACR,KAAK,EAAE,KAAK;wBACZ,YAAY,EAAE;4BACZ,YAAY,EAAE;gCACZ,qBAAqB;6BACtB;4BACD,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gCACtC,GAAG,EAAE,UAAU,CAAC,EAAE;gCAClB,IAAI,EAAE,UAAU,CAAC,IAAI;gCACrB,KAAK,EAAE,UAAU,CAAC,IAAI;gCACtB,SAAS,EAAE;oCACT,MAAM,EAAE,cAAc;iCACvB;gCACD,SAAS,EAAE;oCACT,QAAQ,EAAE,oBAAoB;oCAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;iCACpC;gCACD,QAAQ,EAAE,IAAI;gCACd,SAAS,EAAE,UAAU,CAAC,EAAE,MAAK,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,EAAE,CAAA;gCACnD,OAAO,EAAE,GAAG,EAAE;oCACZ,IAAI,UAAU,CAAC,EAAE,MAAK,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,EAAE,CAAA,EAAE;wCAC5C,kBAAkB,CAAC,UAAU,CAAC,CAAC;qCAChC;gCACH,CAAC;6BACF,CAAC,CAAC;yBACJ;wBACD,IAAI,EAAE,kBAAkB,CAAC,IAAI;qBAC9B;iBACF;aACF;SACF,CAAC,CAAC;KACJ;IAED,IAAI,QAAQ,IAAI,eAAe,IAAI,eAAe,EAAE;QAClD,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1B,GAAG,EAAE,UAAU;YACf,QAAQ,EAAE,sBAAsB,CAAC,OAAO;YACxC,YAAY,EAAE;gBACZ,KAAK,EAAE,OAAO,CAAC,gBAAgB;gBAC/B,KAAK,EAAE;oBACL;wBACE,GAAG,EAAE,gBAAgB;wBACrB,YAAY,EAAE;4BACZ,YAAY,EAAE;gCACZ,qBAAqB;6BACtB;4BACD,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gCAChC,GAAG,EAAE,OAAO,CAAC,EAAE;gCACf,IAAI,EAAE,OAAO,CAAC,IAAI;gCAClB,KAAK,EAAE,OAAO,CAAC,IAAI;gCACnB,SAAS,EAAE;oCACT,MAAM,EAAE,cAAc;iCACvB;gCACD,SAAS,EAAE;oCACT,QAAQ,EAAE,oBAAoB;oCAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;iCACpC;gCACD,QAAQ,EAAE,IAAI;gCACd,SAAS,EAAE,OAAO,CAAC,EAAE,MAAK,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,EAAE,CAAA;gCAC7C,OAAO,EAAE,GAAG,EAAE;oCACZ,IAAI,OAAO,CAAC,EAAE,MAAK,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,EAAE,CAAA,EAAE;wCACtC,eAAe,CAAC,OAAO,CAAC,CAAC;qCAC1B;gCACH,CAAC;6BACF,CAAC,CAAC;yBACJ;wBACD,IAAI,EAAE,eAAe,CAAC,IAAI;qBAC3B;iBACF;aACF;SACF,CAAC,CAAC;KACJ;IACD,IAAI,WAAW,IAAI,kBAAkB,IAAI,kBAAkB,IAAI,kBAAkB,IAAI,iBAAiB,EAAE;QACtG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAChD;IAED,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACvC,yCAAyC;QACzC,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAe,EAAE;;IACtE,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE/B,MAAM,aAAa,GAAG,SAAS,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IACxD,MAAM,OAAO,mCAAQ,aAAa,GAAK,KAAK,CAAC,OAAO,CAAE,CAAC;IAEvD,MAAM,iBAAiB,GACrB,MAAA,KAAK,CAAC,SAAS,mCAAI,8BAA8B,iCAAM,KAAK,KAAE,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,0CAAE,UAAU,KAAI,OAAO,CAAC,CAAC;IAE7G,MAAM,mBAAmB,GAAG,GAAgB,EAAE;QAC5C,OAAO,oBAAC,sBAAsB,IAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAC,sBAAsB,GAAG,CAAC;IAC9F,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,gBAAgB,oBACX,KAAK,IACT,SAAS,EAAE,iBAAiB,EAC5B,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAC/B,YAAY,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,mBAAmB,EACjD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,oBAAoB,IAChD,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n ContextualMenuItemType,\n IContextualMenuItem,\n IContextualMenuItemStyles,\n IContextualMenuProps,\n IContextualMenuStyles,\n merge\n} from '@fluentui/react';\nimport React from 'react';\nimport { useLocale } from '../localization';\nimport { ControlBarButton, ControlBarButtonProps, ControlBarButtonStyles } from './ControlBarButton';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\nimport { buttonFlyoutItemStyles } from './styles/ControlBar.styles';\nimport { _preventDismissOnEvent as preventDismissOnEvent } from '@internal/acs-ui-common';\n\n/**\n * Styles for the {@link DevicesButton} menu.\n *\n * @public\n */\nexport interface DevicesButtonContextualMenuStyles extends IContextualMenuStyles {\n /**\n * Styles for the items inside the {@link DevicesButton} button menu.\n */\n menuItemStyles?: IContextualMenuItemStyles;\n}\n\n/**\n * Styles for the Devices button menu items.\n *\n * @public\n */\nexport interface DevicesButtonStyles extends ControlBarButtonStyles {\n /**\n * Styles for the {@link DevicesButton} menu.\n */\n menuStyles?: Partial<DevicesButtonContextualMenuStyles>;\n}\n\n/**\n * A device, e.g. camera, microphone, or speaker, in the {@link DevicesButton} flyout.\n *\n * @public\n */\nexport interface OptionsDevice {\n /**\n * Device unique identifier\n */\n id: string;\n /**\n * Device name\n */\n name: string;\n}\n\n/**\n * Strings of {@link DevicesButton} that can be overridden.\n *\n * @public\n */\nexport interface DevicesButtonStrings {\n /**\n * Label of button\n */\n label: string;\n /**\n * Button tooltip content.\n */\n tooltipContent?: string;\n /**\n * Title of camera menu\n */\n cameraMenuTitle: string;\n /**\n * Title of microphone menu\n */\n microphoneMenuTitle: string;\n /**\n * Title of speaker menu\n */\n speakerMenuTitle: string;\n /**\n * Tooltip of camera menu\n */\n cameraMenuTooltip: string;\n /**\n * Tooltip of microphone menu\n */\n microphoneMenuTooltip: string;\n /**\n * Tooltip of speaker menu\n */\n speakerMenuTooltip: string;\n}\n\n/**\n * Props for {@link DevicesButton}.\n *\n * @public\n */\nexport interface DevicesButtonProps extends ControlBarButtonProps {\n /**\n * Available microphones for selection\n */\n microphones?: OptionsDevice[];\n /**\n * Available speakers for selection\n */\n speakers?: OptionsDevice[];\n /**\n * Available cameras for selection\n */\n cameras?: OptionsDevice[];\n /**\n * Microphone that is shown as currently selected\n */\n selectedMicrophone?: OptionsDevice;\n /**\n * Speaker that is shown as currently selected\n */\n selectedSpeaker?: OptionsDevice;\n /**\n * Camera that is shown as currently selected\n */\n selectedCamera?: OptionsDevice;\n /**\n * Callback when a camera is selected\n */\n onSelectCamera?: (device: OptionsDevice) => Promise<void>;\n /**\n * Callback when a microphone is selected\n */\n onSelectMicrophone?: (device: OptionsDevice) => Promise<void>;\n /**\n * Speaker when a speaker is selected\n */\n onSelectSpeaker?: (device: OptionsDevice) => Promise<void>;\n /**\n * Optional strings to override in component\n */\n strings?: Partial<DevicesButtonStrings>;\n /**\n * Option to increase the touch targets of the button flyout menu items from 36px to 48px.\n * Recommended for mobile devices.\n */\n styles?: DevicesButtonStyles;\n}\n\n/**\n * Subset props for various buttons that show device selection menus.\n *\n * @private\n */\nexport interface DeviceMenuProps {\n microphones?: OptionsDevice[];\n speakers?: OptionsDevice[];\n cameras?: OptionsDevice[];\n selectedMicrophone?: OptionsDevice;\n selectedSpeaker?: OptionsDevice;\n selectedCamera?: OptionsDevice;\n onSelectCamera?: (device: OptionsDevice) => Promise<void>;\n onSelectMicrophone?: (device: OptionsDevice) => Promise<void>;\n onSelectSpeaker?: (device: OptionsDevice) => Promise<void>;\n styles?: Partial<DeviceMenuStyles>;\n}\n\n/**\n * Subset of strings for various buttons that show device selection menus.\n *\n * @private\n */\nexport interface DeviceMenuStrings {\n /**\n * Title for Camera section in the contextual menu\n */\n cameraMenuTitle?: string;\n /**\n * Title for Audio Device section in the contextual menu\n *\n * @remark Used in place of microphoneMenuTitle when speakers can be enumerated\n */\n audioDeviceMenuTitle?: string;\n /**\n * Title for Microphone section in the contextual menu\n *\n * @remark Used when speakers can be enumerated\n */\n microphoneMenuTitle?: string;\n /**\n * Title for Speaker section in the contextual menu\n */\n speakerMenuTitle?: string;\n /**\n * Tooltip label for Camera section in the contextual menu\n */\n cameraMenuTooltip?: string;\n /**\n * Tooltip label for Audio Device section in the contextual menu\n *\n * @remark Used in place of microphoneMenuTooltip when speakers can be enumerated\n */\n audioDeviceMenuTooltip?: string;\n /**\n * Tooltip label for Microphone section in the contextual menu\n *\n * @remark Used when speakers can be enumerated\n */\n microphoneMenuTooltip?: string;\n /**\n * Tooltip label for Speaker section in the contextual menu\n */\n speakerMenuTooltip?: string;\n}\n\n/**\n * Styles for flyouts used by various buttons for device selection flyouts.\n *\n * @private\n */\nexport interface DeviceMenuStyles extends IContextualMenuStyles {\n menuItemStyles?: IContextualMenuItemStyles;\n}\n\n/**\n * Generates default {@link IContextualMenuProps} for buttons that\n * show a drop-down to select devices to use.\n *\n * @private\n */\nexport const generateDefaultDeviceMenuProps = (\n props: DeviceMenuProps,\n strings: DeviceMenuStrings,\n primaryActionItem?: IContextualMenuItem,\n isSelectCamAllowed = true,\n isSelectMicAllowed = true\n): { items: IContextualMenuItem[] } | undefined => {\n const {\n microphones,\n speakers,\n cameras,\n selectedMicrophone,\n selectedSpeaker,\n selectedCamera,\n onSelectCamera,\n onSelectMicrophone,\n onSelectSpeaker\n } = props;\n\n const defaultMenuProps: IContextualMenuProps = {\n items: [],\n styles: props.styles,\n calloutProps: {\n styles: {\n root: {\n // Confine the menu to the parents bounds.\n // More info: https://github.com/microsoft/fluentui/issues/18835\n // NB: 95% to keep some space for margin, drop shadow etc around the Callout.\n maxWidth: '95%'\n }\n },\n preventDismissOnEvent\n }\n };\n\n const menuItemStyles = merge(buttonFlyoutItemStyles, props.styles?.menuItemStyles ?? {});\n\n if (cameras && selectedCamera && onSelectCamera && isSelectCamAllowed) {\n defaultMenuProps.items.push({\n key: 'cameras',\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n title: strings.cameraMenuTitle,\n items: [\n {\n key: 'sectionCamera',\n title: strings.cameraMenuTooltip,\n subMenuProps: {\n calloutProps: {\n preventDismissOnEvent\n },\n items: cameras.map((camera) => ({\n key: camera.id,\n text: camera.name,\n title: camera.name,\n iconProps: {\n iconName: 'ContextMenuCameraIcon',\n styles: { root: { lineHeight: 0 } }\n },\n itemProps: {\n styles: menuItemStyles\n },\n canCheck: true,\n isChecked: camera.id === selectedCamera?.id,\n onClick: () => {\n if (camera.id !== selectedCamera?.id) {\n onSelectCamera(camera);\n }\n }\n }))\n },\n text: selectedCamera.name\n }\n ]\n }\n });\n if (primaryActionItem) {\n defaultMenuProps.items.push(primaryActionItem);\n }\n }\n\n if (microphones && selectedMicrophone && onSelectMicrophone && isSelectMicAllowed) {\n // Set props as Microphone if speakers can be enumerated else set as Audio Device\n const speakersAvailable = speakers && speakers.length > 0;\n const key = speakersAvailable ? 'sectionMicrophone' : 'sectionAudioDevice';\n const title = speakersAvailable ? strings.microphoneMenuTooltip : strings.audioDeviceMenuTooltip;\n\n defaultMenuProps.items.push({\n key: 'microphones',\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n title: strings.microphoneMenuTitle,\n items: [\n {\n key: key,\n title: title,\n subMenuProps: {\n calloutProps: {\n preventDismissOnEvent\n },\n items: microphones.map((microphone) => ({\n key: microphone.id,\n text: microphone.name,\n title: microphone.name,\n itemProps: {\n styles: menuItemStyles\n },\n iconProps: {\n iconName: 'ContextMenuMicIcon',\n styles: { root: { lineHeight: 0 } }\n },\n canCheck: true,\n isChecked: microphone.id === selectedMicrophone?.id,\n onClick: () => {\n if (microphone.id !== selectedMicrophone?.id) {\n onSelectMicrophone(microphone);\n }\n }\n }))\n },\n text: selectedMicrophone.name\n }\n ]\n }\n });\n }\n\n if (speakers && selectedSpeaker && onSelectSpeaker) {\n defaultMenuProps.items.push({\n key: 'speakers',\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n title: strings.speakerMenuTitle,\n items: [\n {\n key: 'sectionSpeaker',\n subMenuProps: {\n calloutProps: {\n preventDismissOnEvent\n },\n items: speakers.map((speaker) => ({\n key: speaker.id,\n text: speaker.name,\n title: speaker.name,\n itemProps: {\n styles: menuItemStyles\n },\n iconProps: {\n iconName: 'ContextMenuMicIcon',\n styles: { root: { lineHeight: 0 } }\n },\n canCheck: true,\n isChecked: speaker.id === selectedSpeaker?.id,\n onClick: () => {\n if (speaker.id !== selectedSpeaker?.id) {\n onSelectSpeaker(speaker);\n }\n }\n }))\n },\n text: selectedSpeaker.name\n }\n ]\n }\n });\n }\n if (microphones && selectedMicrophone && onSelectMicrophone && isSelectMicAllowed && primaryActionItem) {\n defaultMenuProps.items.push(primaryActionItem);\n }\n\n if (defaultMenuProps.items.length === 0) {\n // Avoids creating an empty context menu.\n return undefined;\n }\n return defaultMenuProps;\n};\n\n/**\n * A button to open a menu that controls device options.\n *\n * Can be used with {@link ControlBar}.\n *\n * @public\n */\nexport const DevicesButton = (props: DevicesButtonProps): JSX.Element => {\n const { onRenderIcon } = props;\n\n const localeStrings = useLocale().strings.devicesButton;\n const strings = { ...localeStrings, ...props.strings };\n\n const devicesButtonMenu =\n props.menuProps ?? generateDefaultDeviceMenuProps({ ...props, styles: props.styles?.menuStyles }, strings);\n\n const onRenderOptionsIcon = (): JSX.Element => {\n return <_HighContrastAwareIcon disabled={props.disabled} iconName=\"ControlButtonOptions\" />;\n };\n\n return (\n <ControlBarButton\n {...props}\n menuProps={devicesButtonMenu}\n menuIconProps={{ hidden: true }}\n onRenderIcon={onRenderIcon ?? onRenderOptionsIcon}\n strings={strings}\n labelKey={props.labelKey ?? 'devicesButtonLabel'}\n />\n );\n};\n\"../../../acs-ui-common/src\""]}
@@ -44,8 +44,8 @@
44
44
  "tooltipContent": "Leave call"
45
45
  },
46
46
  "cameraButton": {
47
- "onLabel": "Turn off",
48
- "offLabel": "Turn on",
47
+ "onLabel": "Camera",
48
+ "offLabel": "Camera",
49
49
  "tooltipDisabledContent": "Camera is disabled",
50
50
  "tooltipOnContent": "Turn off camera",
51
51
  "tooltipOffContent": "Turn on camera",
@@ -63,8 +63,8 @@
63
63
  "videoEffectsMenuItemTitle": "Effects"
64
64
  },
65
65
  "microphoneButton": {
66
- "onLabel": "Mute",
67
- "offLabel": "Unmute",
66
+ "onLabel": "Mic",
67
+ "offLabel": "Mic",
68
68
  "tooltipDisabledContent": "Microphone is disabled",
69
69
  "tooltipOnContent": "Mute microphone",
70
70
  "tooltipOffContent": "Unmute microphone",
@@ -93,5 +93,7 @@ export declare const DEFAULT_COMPONENT_ICONS: {
93
93
  CaptionsOffIcon: JSX.Element;
94
94
  CaptionsSettingsIcon: JSX.Element;
95
95
  ChangeSpokenLanguageIcon: JSX.Element;
96
+ ContextMenuCameraIcon: JSX.Element;
97
+ ContextMenuMicIcon: JSX.Element;
96
98
  };
97
99
  //# sourceMappingURL=icons.d.ts.map
@@ -218,6 +218,8 @@ export const DEFAULT_COMPONENT_ICONS = {
218
218
  /* @conditional-compile-remove(close-captions) */
219
219
  CaptionsSettingsIcon: React.createElement(Settings20Regular, null),
220
220
  /* @conditional-compile-remove(close-captions) */
221
- ChangeSpokenLanguageIcon: React.createElement(PersonVoice20Regular, null)
221
+ ChangeSpokenLanguageIcon: React.createElement(PersonVoice20Regular, null),
222
+ ContextMenuCameraIcon: React.createElement(Video20Regular, null),
223
+ ContextMenuMicIcon: React.createElement(Mic20Regular, null)
222
224
  };
223
225
  //# sourceMappingURL=icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../../../../react-components/src/theming/icons.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { mergeStyles } from '@fluentui/react';\n/* @conditional-compile-remove(call-readiness) */ /* @conditional-compile-remove(unsupported-browser) */\nimport { Stack } from '@fluentui/react';\nimport {\n ArrowClockwise16Regular,\n CallEnd20Filled,\n Checkmark20Regular,\n CheckmarkCircle16Regular,\n Circle16Regular,\n Delete20Regular,\n Dismiss20Regular,\n Dismiss16Regular,\n Edit20Regular,\n ErrorCircle16Regular,\n Eye16Regular,\n MicOff16Filled,\n MicOff16Regular,\n MicOff20Filled,\n Mic16Filled,\n Mic20Filled,\n Mic20Regular,\n MoreHorizontal20Filled,\n MoreHorizontal20Regular,\n People20Filled,\n Settings20Filled,\n Send20Filled,\n Send20Regular,\n ShareScreenStart20Filled,\n ShareScreenStop20Filled,\n Speaker220Regular,\n Video16Filled,\n Video20Filled,\n Video20Regular,\n VideoOff20Filled,\n ChevronLeft20Regular,\n ChevronRight20Regular,\n WifiWarning20Filled,\n SpeakerMute16Filled,\n MicProhibited16Filled,\n VideoProhibited16Filled\n} from '@fluentui/react-icons';\n/* @conditional-compile-remove(close-captions) */\nimport {\n ClosedCaption20Regular,\n ClosedCaptionOff20Regular,\n Settings20Regular,\n PersonVoice20Regular\n} from '@fluentui/react-icons';\n/* @conditional-compile-remove(call-readiness) */\nimport { Important20Filled } from '@fluentui/react-icons';\n/* @conditional-compile-remove(video-background-effects) */\nimport { VideoBackgroundEffect20Filled, VideoBackgroundEffect20Regular } from '@fluentui/react-icons';\n/* @conditional-compile-remove(pinned-participants) */\nimport {\n Pin16Filled,\n Pin16Regular,\n PinOff16Regular,\n ScaleFit20Regular,\n ScaleFill20Regular\n} from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\nimport { Backspace20Regular } from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(call-readiness) */\nimport { Sparkle20Filled, VideoProhibited20Filled, MicProhibited20Filled } from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(file-sharing) */\nimport { ArrowDownload16Regular } from '@fluentui/react-icons';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { CallPause20Regular, CallPause20Filled, Play20Regular, People20Regular } from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(data-loss-prevention) */\nimport { Prohibited16Regular } from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(unsupported-browser) */\nimport { Warning20Filled } from '@fluentui/react-icons';\nimport { _pxToRem } from '@internal/acs-ui-common';\n\nimport React from 'react';\nimport { useTheme } from './FluentThemeProvider';\n/* @conditional-compile-remove(call-readiness) */\nimport { sitePermissionIconBackgroundStyle, scaledIconStyles } from './icons.styles';\n\n/**\n * Icons used by the React components exported from this library.\n *\n * @remark See {@link CompositeIcons} for icons used by composites only.\n *\n * @public\n */\nexport type ComponentIcons = Record<keyof typeof DEFAULT_COMPONENT_ICONS, JSX.Element>;\n\nconst WifiWarning16Filled = (): JSX.Element => (\n // All ErrorBar icons are 16px x 16px (when 1rem = 16 px).\n // There is no 16px version of this icon in the fluent icon package, so scale the larger\n // one down to required size.\n <div className={mergeStyles({ transform: 'scale(0.8)' })}>\n <WifiWarning20Filled />\n </div>\n);\n\nconst MoreHorizontal18Regular = (): JSX.Element => (\n // MoreHorizontal icons are 16px x 16px or 20px x 20px so scaling to get desired size\n <div className={mergeStyles({ transform: 'scale(0.9)' })}>\n <MoreHorizontal20Regular />\n </div>\n);\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionMic20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <Mic20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionCamera20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <Video20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionsMicDenied20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <MicProhibited20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionsCameraDenied20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <VideoProhibited20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionSparkle20Filled = (): JSX.Element => (\n <div className={mergeStyles({ transform: 'scale(2)' })}>\n <Sparkle20Filled />\n </div>\n);\n\n/* @conditional-compile-remove(unsupported-browser) */\nconst UnsupportedEnvironmentWarning = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack\n horizontalAlign={'center'}\n styles={{\n root: {\n width: _pxToRem(84),\n borderRadius: '100%',\n background: theme.palette.themeLighterAlt,\n padding: '2rem',\n margin: 'auto'\n }\n }}\n >\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <Warning20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst BrowserPermissionDenied20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <Important20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(data-loss-prevention) */\nconst DataLossPreventionProhibited16Regular = (): JSX.Element => {\n return <Prohibited16Regular />;\n};\n\nconst GalleryLeftButton = (): JSX.Element => {\n const rtl = useTheme().rtl;\n return rtl ? <ChevronRight20Regular /> : <ChevronLeft20Regular />;\n};\n\nconst GalleryRightButton = (): JSX.Element => {\n const rtl = useTheme().rtl;\n return rtl ? <ChevronLeft20Regular /> : <ChevronRight20Regular />;\n};\n\n/**\n * The default set of icons that are available to use in the UI components.\n *\n * @remark Icons used only in the composites are available in {@link DEFAULT_COMPOSITE_ICONS}.\n *\n * @public\n */\nexport const DEFAULT_COMPONENT_ICONS = {\n ChatMessageOptions: <MoreHorizontal18Regular />,\n ControlButtonCameraOff: <VideoOff20Filled />,\n ControlButtonCameraOn: <Video20Filled />,\n ControlButtonEndCall: <CallEnd20Filled />,\n ControlButtonMicOff: <MicOff20Filled />,\n ControlButtonMicOn: <Mic20Filled />,\n ControlButtonOptions: <Settings20Filled />,\n ControlButtonParticipants: <People20Filled />,\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n ControlButtonParticipantsContextualMenuItem: <People20Regular />,\n ControlButtonScreenShareStart: <ShareScreenStart20Filled />,\n ControlButtonScreenShareStop: <ShareScreenStop20Filled />,\n /* @conditional-compile-remove(file-sharing) */\n CancelFileUpload: <Dismiss16Regular />,\n /* @conditional-compile-remove(file-sharing) */\n DownloadFile: <ArrowDownload16Regular />,\n /* @conditional-compile-remove(data-loss-prevention) */\n DataLossPreventionProhibited: <DataLossPreventionProhibited16Regular />,\n EditBoxCancel: <Dismiss20Regular />,\n EditBoxSubmit: <Checkmark20Regular />,\n ErrorBarCallCameraAccessDenied: <VideoProhibited16Filled />,\n ErrorBarCallCameraAlreadyInUse: <VideoProhibited16Filled />,\n ErrorBarCallLocalVideoFreeze: <WifiWarning16Filled />,\n ErrorBarCallMacOsCameraAccessDenied: <VideoProhibited16Filled />,\n ErrorBarCallMacOsMicrophoneAccessDenied: <MicProhibited16Filled />,\n ErrorBarCallMicrophoneAccessDenied: <MicProhibited16Filled />,\n ErrorBarCallMicrophoneMutedBySystem: <MicOff16Filled />,\n ErrorBarCallMicrophoneUnmutedBySystem: <Mic16Filled />,\n ErrorBarCallNetworkQualityLow: <WifiWarning16Filled />,\n ErrorBarCallNoMicrophoneFound: <MicProhibited16Filled />,\n ErrorBarCallNoSpeakerFound: <SpeakerMute16Filled />,\n ErrorBarClear: <Dismiss16Regular />,\n ErrorBarCallVideoRecoveredBySystem: <Video16Filled />,\n ErrorBarCallVideoStoppedBySystem: <VideoProhibited16Filled />,\n HorizontalGalleryLeftButton: <GalleryLeftButton />,\n HorizontalGalleryRightButton: <GalleryRightButton />,\n MessageDelivered: <CheckmarkCircle16Regular />,\n MessageEdit: <Edit20Regular />,\n MessageFailed: <ErrorCircle16Regular />,\n MessageRemove: <Delete20Regular />,\n MessageResend: <ArrowClockwise16Regular />,\n MessageSeen: <Eye16Regular />,\n MessageSending: <Circle16Regular />,\n OptionsCamera: <Video20Regular />,\n OptionsMic: <Mic20Regular />,\n OptionsSpeaker: <Speaker220Regular />,\n ParticipantItemMicOff: <MicOff16Regular />,\n ParticipantItemOptions: <></>,\n ParticipantItemOptionsHovered: <MoreHorizontal20Filled />,\n ParticipantItemScreenShareStart: <ShareScreenStart20Filled />,\n /* @conditional-compile-remove(PSTN-calls) */\n HoldCallContextualMenuItem: <CallPause20Regular />,\n /* @conditional-compile-remove(PSTN-calls) */\n HoldCallButton: <CallPause20Filled />,\n /* @conditional-compile-remove(PSTN-calls) */\n ResumeCall: <Play20Regular />,\n SendBoxSend: <Send20Regular />,\n SendBoxSendHovered: <Send20Filled />,\n VideoTileMicOff: <MicOff16Filled />,\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n DialpadBackspace: <Backspace20Regular />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionsSparkle: <SitePermissionSparkle20Filled />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionCamera: <SitePermissionCamera20Filled />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionMic: <SitePermissionMic20Filled />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionCameraDenied: <SitePermissionsCameraDenied20Filled />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionMicDenied: <SitePermissionsMicDenied20Filled />,\n /* @conditional-compile-remove(unsupported-browser) */\n UnsupportedEnvironmentWarning: <UnsupportedEnvironmentWarning />,\n /* @conditional-compile-remove(call-readiness) */\n BrowserPermissionDeniedError: <BrowserPermissionDenied20Filled />,\n /* @conditional-compile-remove(pinned-participants) */\n VideoTilePinned: <Pin16Filled />,\n /* @conditional-compile-remove(pinned-participants) */\n VideoTileMoreOptions: <MoreHorizontal20Filled />,\n /* @conditional-compile-remove(pinned-participants) */\n VideoTileScaleFit: <ScaleFit20Regular />,\n /* @conditional-compile-remove(pinned-participants) */\n VideoTileScaleFill: <ScaleFill20Regular />,\n /* @conditional-compile-remove(pinned-participants) */\n PinParticipant: <Pin16Regular />,\n /* @conditional-compile-remove(pinned-participants) */\n UnpinParticipant: <PinOff16Regular />,\n SplitButtonPrimaryActionCameraOn: <Video20Filled />,\n SplitButtonPrimaryActionCameraOff: <VideoOff20Filled />,\n SplitButtonPrimaryActionMicUnmuted: <Mic20Filled />,\n SplitButtonPrimaryActionMicMuted: <MicOff20Filled />,\n /* @conditional-compile-remove(vertical-gallery) */\n VerticalGalleryLeftButton: <GalleryLeftButton />,\n /* @conditional-compile-remove(vertical-gallery) */\n VerticalGalleryRightButton: <GalleryRightButton />,\n /* @conditional-compile-remove(video-background-effects) */\n ControlButtonVideoEffectsOption: <VideoBackgroundEffect20Regular />,\n /* @conditional-compile-remove(video-background-effects) */\n ConfigurationScreenVideoEffectsButton: <VideoBackgroundEffect20Filled />,\n /* @conditional-compile-remove(close-captions) */\n CaptionsIcon: <ClosedCaption20Regular />,\n /* @conditional-compile-remove(close-captions) */\n CaptionsOffIcon: <ClosedCaptionOff20Regular />,\n /* @conditional-compile-remove(close-captions) */\n CaptionsSettingsIcon: <Settings20Regular />,\n /* @conditional-compile-remove(close-captions) */\n ChangeSpokenLanguageIcon: <PersonVoice20Regular />\n};\n\"../../../acs-ui-common/src\""]}
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../../../../react-components/src/theming/icons.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { mergeStyles } from '@fluentui/react';\n/* @conditional-compile-remove(call-readiness) */ /* @conditional-compile-remove(unsupported-browser) */\nimport { Stack } from '@fluentui/react';\nimport {\n ArrowClockwise16Regular,\n CallEnd20Filled,\n Checkmark20Regular,\n CheckmarkCircle16Regular,\n Circle16Regular,\n Delete20Regular,\n Dismiss20Regular,\n Dismiss16Regular,\n Edit20Regular,\n ErrorCircle16Regular,\n Eye16Regular,\n MicOff16Filled,\n MicOff16Regular,\n MicOff20Filled,\n Mic16Filled,\n Mic20Filled,\n Mic20Regular,\n MoreHorizontal20Filled,\n MoreHorizontal20Regular,\n People20Filled,\n Settings20Filled,\n Send20Filled,\n Send20Regular,\n ShareScreenStart20Filled,\n ShareScreenStop20Filled,\n Speaker220Regular,\n Video16Filled,\n Video20Filled,\n Video20Regular,\n VideoOff20Filled,\n ChevronLeft20Regular,\n ChevronRight20Regular,\n WifiWarning20Filled,\n SpeakerMute16Filled,\n MicProhibited16Filled,\n VideoProhibited16Filled\n} from '@fluentui/react-icons';\n/* @conditional-compile-remove(close-captions) */\nimport {\n ClosedCaption20Regular,\n ClosedCaptionOff20Regular,\n Settings20Regular,\n PersonVoice20Regular\n} from '@fluentui/react-icons';\n/* @conditional-compile-remove(call-readiness) */\nimport { Important20Filled } from '@fluentui/react-icons';\n/* @conditional-compile-remove(video-background-effects) */\nimport { VideoBackgroundEffect20Filled, VideoBackgroundEffect20Regular } from '@fluentui/react-icons';\n/* @conditional-compile-remove(pinned-participants) */\nimport {\n Pin16Filled,\n Pin16Regular,\n PinOff16Regular,\n ScaleFit20Regular,\n ScaleFill20Regular\n} from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\nimport { Backspace20Regular } from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(call-readiness) */\nimport { Sparkle20Filled, VideoProhibited20Filled, MicProhibited20Filled } from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(file-sharing) */\nimport { ArrowDownload16Regular } from '@fluentui/react-icons';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { CallPause20Regular, CallPause20Filled, Play20Regular, People20Regular } from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(data-loss-prevention) */\nimport { Prohibited16Regular } from '@fluentui/react-icons';\n\n/* @conditional-compile-remove(unsupported-browser) */\nimport { Warning20Filled } from '@fluentui/react-icons';\nimport { _pxToRem } from '@internal/acs-ui-common';\n\nimport React from 'react';\nimport { useTheme } from './FluentThemeProvider';\n/* @conditional-compile-remove(call-readiness) */\nimport { sitePermissionIconBackgroundStyle, scaledIconStyles } from './icons.styles';\n\n/**\n * Icons used by the React components exported from this library.\n *\n * @remark See {@link CompositeIcons} for icons used by composites only.\n *\n * @public\n */\nexport type ComponentIcons = Record<keyof typeof DEFAULT_COMPONENT_ICONS, JSX.Element>;\n\nconst WifiWarning16Filled = (): JSX.Element => (\n // All ErrorBar icons are 16px x 16px (when 1rem = 16 px).\n // There is no 16px version of this icon in the fluent icon package, so scale the larger\n // one down to required size.\n <div className={mergeStyles({ transform: 'scale(0.8)' })}>\n <WifiWarning20Filled />\n </div>\n);\n\nconst MoreHorizontal18Regular = (): JSX.Element => (\n // MoreHorizontal icons are 16px x 16px or 20px x 20px so scaling to get desired size\n <div className={mergeStyles({ transform: 'scale(0.9)' })}>\n <MoreHorizontal20Regular />\n </div>\n);\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionMic20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <Mic20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionCamera20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <Video20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionsMicDenied20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <MicProhibited20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionsCameraDenied20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <VideoProhibited20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst SitePermissionSparkle20Filled = (): JSX.Element => (\n <div className={mergeStyles({ transform: 'scale(2)' })}>\n <Sparkle20Filled />\n </div>\n);\n\n/* @conditional-compile-remove(unsupported-browser) */\nconst UnsupportedEnvironmentWarning = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack\n horizontalAlign={'center'}\n styles={{\n root: {\n width: _pxToRem(84),\n borderRadius: '100%',\n background: theme.palette.themeLighterAlt,\n padding: '2rem',\n margin: 'auto'\n }\n }}\n >\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <Warning20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(call-readiness) */\nconst BrowserPermissionDenied20Filled = (): JSX.Element => {\n const theme = useTheme();\n return (\n <Stack horizontalAlign={'center'} styles={sitePermissionIconBackgroundStyle(theme)}>\n <div className={mergeStyles(scaledIconStyles(theme))}>\n <Important20Filled />\n </div>\n </Stack>\n );\n};\n\n/* @conditional-compile-remove(data-loss-prevention) */\nconst DataLossPreventionProhibited16Regular = (): JSX.Element => {\n return <Prohibited16Regular />;\n};\n\nconst GalleryLeftButton = (): JSX.Element => {\n const rtl = useTheme().rtl;\n return rtl ? <ChevronRight20Regular /> : <ChevronLeft20Regular />;\n};\n\nconst GalleryRightButton = (): JSX.Element => {\n const rtl = useTheme().rtl;\n return rtl ? <ChevronLeft20Regular /> : <ChevronRight20Regular />;\n};\n\n/**\n * The default set of icons that are available to use in the UI components.\n *\n * @remark Icons used only in the composites are available in {@link DEFAULT_COMPOSITE_ICONS}.\n *\n * @public\n */\nexport const DEFAULT_COMPONENT_ICONS = {\n ChatMessageOptions: <MoreHorizontal18Regular />,\n ControlButtonCameraOff: <VideoOff20Filled />,\n ControlButtonCameraOn: <Video20Filled />,\n ControlButtonEndCall: <CallEnd20Filled />,\n ControlButtonMicOff: <MicOff20Filled />,\n ControlButtonMicOn: <Mic20Filled />,\n ControlButtonOptions: <Settings20Filled />,\n ControlButtonParticipants: <People20Filled />,\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n ControlButtonParticipantsContextualMenuItem: <People20Regular />,\n ControlButtonScreenShareStart: <ShareScreenStart20Filled />,\n ControlButtonScreenShareStop: <ShareScreenStop20Filled />,\n /* @conditional-compile-remove(file-sharing) */\n CancelFileUpload: <Dismiss16Regular />,\n /* @conditional-compile-remove(file-sharing) */\n DownloadFile: <ArrowDownload16Regular />,\n /* @conditional-compile-remove(data-loss-prevention) */\n DataLossPreventionProhibited: <DataLossPreventionProhibited16Regular />,\n EditBoxCancel: <Dismiss20Regular />,\n EditBoxSubmit: <Checkmark20Regular />,\n ErrorBarCallCameraAccessDenied: <VideoProhibited16Filled />,\n ErrorBarCallCameraAlreadyInUse: <VideoProhibited16Filled />,\n ErrorBarCallLocalVideoFreeze: <WifiWarning16Filled />,\n ErrorBarCallMacOsCameraAccessDenied: <VideoProhibited16Filled />,\n ErrorBarCallMacOsMicrophoneAccessDenied: <MicProhibited16Filled />,\n ErrorBarCallMicrophoneAccessDenied: <MicProhibited16Filled />,\n ErrorBarCallMicrophoneMutedBySystem: <MicOff16Filled />,\n ErrorBarCallMicrophoneUnmutedBySystem: <Mic16Filled />,\n ErrorBarCallNetworkQualityLow: <WifiWarning16Filled />,\n ErrorBarCallNoMicrophoneFound: <MicProhibited16Filled />,\n ErrorBarCallNoSpeakerFound: <SpeakerMute16Filled />,\n ErrorBarClear: <Dismiss16Regular />,\n ErrorBarCallVideoRecoveredBySystem: <Video16Filled />,\n ErrorBarCallVideoStoppedBySystem: <VideoProhibited16Filled />,\n HorizontalGalleryLeftButton: <GalleryLeftButton />,\n HorizontalGalleryRightButton: <GalleryRightButton />,\n MessageDelivered: <CheckmarkCircle16Regular />,\n MessageEdit: <Edit20Regular />,\n MessageFailed: <ErrorCircle16Regular />,\n MessageRemove: <Delete20Regular />,\n MessageResend: <ArrowClockwise16Regular />,\n MessageSeen: <Eye16Regular />,\n MessageSending: <Circle16Regular />,\n OptionsCamera: <Video20Regular />,\n OptionsMic: <Mic20Regular />,\n OptionsSpeaker: <Speaker220Regular />,\n ParticipantItemMicOff: <MicOff16Regular />,\n ParticipantItemOptions: <></>,\n ParticipantItemOptionsHovered: <MoreHorizontal20Filled />,\n ParticipantItemScreenShareStart: <ShareScreenStart20Filled />,\n /* @conditional-compile-remove(PSTN-calls) */\n HoldCallContextualMenuItem: <CallPause20Regular />,\n /* @conditional-compile-remove(PSTN-calls) */\n HoldCallButton: <CallPause20Filled />,\n /* @conditional-compile-remove(PSTN-calls) */\n ResumeCall: <Play20Regular />,\n SendBoxSend: <Send20Regular />,\n SendBoxSendHovered: <Send20Filled />,\n VideoTileMicOff: <MicOff16Filled />,\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n DialpadBackspace: <Backspace20Regular />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionsSparkle: <SitePermissionSparkle20Filled />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionCamera: <SitePermissionCamera20Filled />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionMic: <SitePermissionMic20Filled />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionCameraDenied: <SitePermissionsCameraDenied20Filled />,\n /* @conditional-compile-remove(call-readiness) */\n SitePermissionMicDenied: <SitePermissionsMicDenied20Filled />,\n /* @conditional-compile-remove(unsupported-browser) */\n UnsupportedEnvironmentWarning: <UnsupportedEnvironmentWarning />,\n /* @conditional-compile-remove(call-readiness) */\n BrowserPermissionDeniedError: <BrowserPermissionDenied20Filled />,\n /* @conditional-compile-remove(pinned-participants) */\n VideoTilePinned: <Pin16Filled />,\n /* @conditional-compile-remove(pinned-participants) */\n VideoTileMoreOptions: <MoreHorizontal20Filled />,\n /* @conditional-compile-remove(pinned-participants) */\n VideoTileScaleFit: <ScaleFit20Regular />,\n /* @conditional-compile-remove(pinned-participants) */\n VideoTileScaleFill: <ScaleFill20Regular />,\n /* @conditional-compile-remove(pinned-participants) */\n PinParticipant: <Pin16Regular />,\n /* @conditional-compile-remove(pinned-participants) */\n UnpinParticipant: <PinOff16Regular />,\n SplitButtonPrimaryActionCameraOn: <Video20Filled />,\n SplitButtonPrimaryActionCameraOff: <VideoOff20Filled />,\n SplitButtonPrimaryActionMicUnmuted: <Mic20Filled />,\n SplitButtonPrimaryActionMicMuted: <MicOff20Filled />,\n /* @conditional-compile-remove(vertical-gallery) */\n VerticalGalleryLeftButton: <GalleryLeftButton />,\n /* @conditional-compile-remove(vertical-gallery) */\n VerticalGalleryRightButton: <GalleryRightButton />,\n /* @conditional-compile-remove(video-background-effects) */\n ControlButtonVideoEffectsOption: <VideoBackgroundEffect20Regular />,\n /* @conditional-compile-remove(video-background-effects) */\n ConfigurationScreenVideoEffectsButton: <VideoBackgroundEffect20Filled />,\n /* @conditional-compile-remove(close-captions) */\n CaptionsIcon: <ClosedCaption20Regular />,\n /* @conditional-compile-remove(close-captions) */\n CaptionsOffIcon: <ClosedCaptionOff20Regular />,\n /* @conditional-compile-remove(close-captions) */\n CaptionsSettingsIcon: <Settings20Regular />,\n /* @conditional-compile-remove(close-captions) */\n ChangeSpokenLanguageIcon: <PersonVoice20Regular />,\n ContextMenuCameraIcon: <Video20Regular />,\n ContextMenuMicIcon: <Mic20Regular />\n};\n\"../../../acs-ui-common/src\""]}
@@ -204,7 +204,7 @@ export class AzureCommunicationCallAdapter {
204
204
  this.context = new CallContext(callClient.getState(), isTeamsMeeting, options);
205
205
  this.context.onCallEnded((endCallData) => this.emitter.emit('callEnded', endCallData));
206
206
  const onStateChange = (clientState) => {
207
- var _a;
207
+ var _a, _b;
208
208
  // unsubscribe when the instance gets disposed
209
209
  if (!this) {
210
210
  callClient.offStateChange(onStateChange);
@@ -219,6 +219,31 @@ export class AzureCommunicationCallAdapter {
219
219
  this.context.setCurrentCallId(this.call.id);
220
220
  }
221
221
  this.context.updateClientState(clientState);
222
+ /* @conditional-compile-remove(call-transfer) */
223
+ const acceptedTransferCallState = this.context.getState().acceptedTransferCallState;
224
+ /* @conditional-compile-remove(call-transfer) */
225
+ // TODO: Remove this if statement when Calling SDK prevents accepting transfer requests that have timed out
226
+ // This is to handle the case when there has been an accepted transfer call that is now in the connected state
227
+ // AND is not the current call. Ensure we leave the current call.
228
+ if (acceptedTransferCallState &&
229
+ acceptedTransferCallState.state === 'Connected' &&
230
+ ((_b = this.call) === null || _b === void 0 ? void 0 : _b.id) &&
231
+ acceptedTransferCallState.id !== this.call.id) {
232
+ const cAgent = callAgent;
233
+ const transferCall = cAgent.calls.find((call) => call.id === acceptedTransferCallState.id);
234
+ if (transferCall) {
235
+ const oldCall = this.call;
236
+ this.processNewCall(transferCall);
237
+ // Arbitrary wait time before hanging up. 2 seconds is derived from manual testing. This is to allow
238
+ // transferor to hang up themselves. If the transferor has not hung up, we hang up because we are now
239
+ // in the transfer call
240
+ setTimeout(() => {
241
+ if ((oldCall === null || oldCall === void 0 ? void 0 : oldCall.state) === 'Connected') {
242
+ oldCall.hangUp();
243
+ }
244
+ }, 2000);
245
+ }
246
+ }
222
247
  };
223
248
  this.handlers = createHandlers(callClient, callAgent, deviceManager, undefined);
224
249
  this.onClientStateChange = onStateChange;