@azure/communication-react 1.18.0-alpha-202406260014 → 1.18.0-alpha-202406280014
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 +98 -106
 - package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-_hqOwT_h.js → ChatMessageComponentAsRichTextEditBox-Bl9FzI6X.js} +2 -2
 - package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-_hqOwT_h.js.map → ChatMessageComponentAsRichTextEditBox-Bl9FzI6X.js.map} +1 -1
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-D-KYGmZ9.js → RichTextSendBoxWrapper-G-04IaQB.js} +2 -2
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-D-KYGmZ9.js.map → RichTextSendBoxWrapper-G-04IaQB.js.map} +1 -1
 - package/dist/dist-cjs/communication-react/{index-DCf8u3Nr.js → index-CWs0GTYF.js} +75 -158
 - package/dist/dist-cjs/communication-react/index-CWs0GTYF.js.map +1 -0
 - package/dist/dist-cjs/communication-react/index.js +3 -3
 - 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/calling-component-bindings/src/errorBarSelector.js +5 -20
 - package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js.map +1 -1
 - package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
 - package/dist/dist-esm/calling-component-bindings/src/index.d.ts +2 -2
 - package/dist/dist-esm/calling-component-bindings/src/index.js +1 -1
 - package/dist/dist-esm/calling-component-bindings/src/index.js.map +1 -1
 - package/dist/dist-esm/calling-component-bindings/src/{errorNotificationsSelector.d.ts → notificationStackSelector.d.ts} +4 -3
 - package/dist/dist-esm/calling-component-bindings/src/{errorNotificationsSelector.js → notificationStackSelector.js} +7 -3
 - package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js.map +1 -0
 - package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/CallDeclarative.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.d.ts +1 -0
 - package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +9 -0
 - package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/TeamsCallDeclarative.js.map +1 -1
 - package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.js.map +1 -1
 - package/dist/dist-esm/chat-stateful-client/src/StatefulChatClient.js.map +1 -1
 - package/dist/dist-esm/communication-react/src/index.d.ts +2 -2
 - package/dist/dist-esm/communication-react/src/index.js +1 -1
 - package/dist/dist-esm/communication-react/src/index.js.map +1 -1
 - package/dist/dist-esm/communication-react/src/mergedHooks.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ControlBarButton.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ErrorBar.d.ts +4 -0
 - package/dist/dist-esm/react-components/src/components/ErrorBar.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/MeetingConferencePhoneInfo.d.ts +1 -21
 - package/dist/dist-esm/react-components/src/components/MeetingConferencePhoneInfo.js +8 -8
 - package/dist/dist-esm/react-components/src/components/MeetingConferencePhoneInfo.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/{NotificationBar.d.ts → Notification.d.ts} +8 -8
 - package/dist/dist-esm/react-components/src/components/{NotificationBar.js → Notification.js} +5 -5
 - package/dist/dist-esm/react-components/src/components/Notification.js.map +1 -0
 - package/dist/dist-esm/react-components/src/components/{Notifications.d.ts → NotificationStack.d.ts} +46 -42
 - package/dist/dist-esm/react-components/src/components/{Notifications.js → NotificationStack.js} +7 -7
 - package/dist/dist-esm/react-components/src/components/NotificationStack.js.map +1 -0
 - package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js +1 -1
 - package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/VideoGallery/SpeakerVideoLayout.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/index.d.ts +2 -2
 - package/dist/dist-esm/react-components/src/components/index.js +2 -2
 - package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/{NotificationBar.styles.d.ts → Notification.styles.d.ts} +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/{NotificationBar.styles.js → Notification.styles.js} +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/Notification.styles.js.map +1 -0
 - package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentAsEditBoxUtils.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/utils/merge.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/utils.d.ts +1 -1
 - package/dist/dist-esm/react-components/src/components/utils.js +3 -1
 - package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
 - package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +4 -4
 - package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
 - package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +10 -10
 - package/dist/dist-esm/react-components/src/theming/icons.d.ts +1 -0
 - package/dist/dist-esm/react-components/src/theming/icons.js +4 -0
 - package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +3 -13
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +2 -0
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +9 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +0 -2
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +3 -9
 - 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/LocalDeviceSettings.js.map +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/components/NetworkReconnectTile.d.ts +1 -0
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js +12 -3
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/SidePane.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.d.ts +2 -3
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.js +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +0 -2
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +2 -3
 - 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.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CustomButton.d.ts +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CustomButton.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/MeetingPhoneInfoPaneContent.js +6 -0
 - package/dist/dist-esm/react-composites/src/composites/common/MeetingPhoneInfoPaneContent.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.d.ts +2 -3
 - package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +2 -40
 - package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +1 -7
 - package/package.json +2 -2
 - package/dist/dist-cjs/communication-react/index-DCf8u3Nr.js.map +0 -1
 - package/dist/dist-esm/calling-component-bindings/src/errorNotificationsSelector.js.map +0 -1
 - package/dist/dist-esm/react-components/src/components/NotificationBar.js.map +0 -1
 - package/dist/dist-esm/react-components/src/components/Notifications.js.map +0 -1
 - package/dist/dist-esm/react-components/src/components/styles/NotificationBar.styles.js.map +0 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/BadNetworkQualityNotificationBar.d.ts +0 -22
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/BadNetworkQualityNotificationBar.js +0 -40
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/BadNetworkQualityNotificationBar.js.map +0 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/badNetworkQualitySelector.d.ts +0 -19
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/badNetworkQualitySelector.js +0 -26
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/badNetworkQualitySelector.js.map +0 -1
 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"LocalDeviceSettings.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/components/LocalDeviceSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AudioDeviceInfo, VideoDeviceInfo } from '@azure/communication-calling';\nimport { Dropdown, IDropdownOption, Label, mergeStyles, Stack } from '@fluentui/react';\n\nimport { DefaultButton } from '@fluentui/react';\nimport { useEffect } from 'react';\nimport { useTheme, VideoStreamOptions, _DevicePermissionDropdown } from '@internal/react-components';\nimport React from 'react';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { useLocale } from '../../localization';\nimport {\n  deviceSelectionContainerStyles,\n  dropDownStyles,\n  dropDownTitleIconStyles,\n  mainStackTokens,\n  optionIconStyles,\n  soundStackTokens\n} from '../styles/LocalDeviceSettings.styles';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { ConfigurationPageCameraDropdown } from './ConfigurationPageCameraDropdown';\nimport { ConfigurationPageMicDropdown } from './ConfigurationPageMicDropdown';\n/* @conditional-compile-remove(call-readiness) */\nimport { useHandlers } from '../hooks/useHandlers';\nimport { cameraAndVideoEffectsContainerStyleDesktop } from '../styles/CallConfiguration.styles';\n\nimport { effectsButtonStyles } from '../styles/CallConfiguration.styles';\n\ntype iconType = 'Camera' | 'Microphone' | 'Speaker';\n\nconst getDropDownList = (list: Array<VideoDeviceInfo | AudioDeviceInfo>): IDropdownOption[] => {\n  // Remove duplicates\n  const noDuplicates = new Map<string, VideoDeviceInfo | AudioDeviceInfo>();\n  for (const item of list) {\n    noDuplicates.set(item.id, item);\n  }\n  const dropdownList: IDropdownOption[] = [];\n  for (const item of noDuplicates.values()) {\n    dropdownList.push({\n      key: item.id,\n      text: item.name === '' ? item.deviceType : item.name\n    });\n  }\n  return dropdownList;\n};\n\nconst getOptionIcon = (type: iconType): JSX.Element | undefined => {\n  if (type === 'Camera') {\n    return <CallCompositeIcon iconName=\"LocalDeviceSettingsCamera\" className={optionIconStyles} />;\n  } else if (type === 'Microphone') {\n    return <CallCompositeIcon iconName=\"LocalDeviceSettingsMic\" className={optionIconStyles} />;\n  } else if (type === 'Speaker') {\n    return <CallCompositeIcon iconName=\"LocalDeviceSettingsSpeaker\" className={optionIconStyles} />;\n  } else {\n    return undefined;\n  }\n};\n\nconst onRenderTitle = (iconType: iconType, props?: IDropdownOption[]): JSX.Element => {\n  const icon = props && getOptionIcon(iconType);\n  return props ? (\n    <div className={dropDownTitleIconStyles}>\n      {icon}\n      <span>{props[0].text}</span>\n    </div>\n  ) : (\n    <></>\n  );\n};\n\nconst localVideoViewOptions = {\n  scalingMode: 'Crop',\n  isMirrored: true\n} as VideoStreamOptions;\n\n/**\n * @private\n */\nexport interface LocalDeviceSettingsType {\n  cameras: VideoDeviceInfo[];\n  microphones: AudioDeviceInfo[];\n  speakers: AudioDeviceInfo[];\n  selectedCamera?: VideoDeviceInfo;\n  selectedMicrophone?: AudioDeviceInfo;\n  selectedSpeaker?: AudioDeviceInfo;\n  microphonePermissionGranted: boolean | undefined;\n  cameraPermissionGranted: boolean | undefined;\n  onSelectCamera: (device: VideoDeviceInfo, options?: VideoStreamOptions) => Promise<void>;\n  onSelectMicrophone: (device: AudioDeviceInfo) => Promise<void>;\n  onSelectSpeaker: (device: AudioDeviceInfo) => Promise<void>;\n  /* @conditional-compile-remove(call-readiness) */\n  onClickEnableDevicePermission?: () => void;\n\n  onClickVideoEffects?: () => void;\n}\n\n/**\n * @private\n */\nexport const LocalDeviceSettings = (props: LocalDeviceSettingsType): JSX.Element => {\n  const theme = useTheme();\n  const locale = useLocale();\n  const adapter = useAdapter();\n\n  const onResolveVideoEffectDependency = adapter.getState().onResolveVideoEffectDependency;\n  const defaultPlaceHolder = locale.strings.call.defaultPlaceHolder;\n  const cameraLabel = locale.strings.call.cameraLabel;\n  const soundLabel = locale.strings.call.soundLabel;\n  const noSpeakersLabel = locale.strings.call.noSpeakersLabel;\n  const noCameraLabel = locale.strings.call.noCamerasLabel;\n  const noMicLabel = locale.strings.call.noMicrophonesLabel;\n  const role = adapter.getState().call?.role;\n\n  const cameraPermissionGranted = props.cameraPermissionGranted;\n  const micPermissionGranted = props.microphonePermissionGranted;\n\n  const roleCanUseCamera = role !== 'Consumer';\n  const roleCanUseMic = role !== 'Consumer';\n\n  // TODO: speaker permission is tied to microphone permission (when you request 'audio' permission using the SDK) its\n  // actually granting access to query both microphone and speaker. However the browser popup asks you explicity for\n  // 'microphone'. This needs investigation on how we want to handle this and maybe needs follow up with SDK team.\n  useEffect(() => {\n    if (cameraPermissionGranted) {\n      adapter.queryCameras();\n    }\n    if (micPermissionGranted) {\n      adapter.queryMicrophones();\n    }\n    adapter.querySpeakers();\n  }, [adapter, cameraPermissionGranted, micPermissionGranted]);\n\n  /* @conditional-compile-remove(call-readiness) */\n  const dropdownProps = useHandlers(_DevicePermissionDropdown);\n\n  const hasCameras = props.cameras.length > 0;\n  const hasMicrophones = props.microphones.length > 0;\n  const hasSpeakers = props.speakers.length > 0;\n  /* @conditional-compile-remove(unsupported-browser) */\n  const isSafariWithNoSpeakers =\n    adapter.getState().environmentInfo?.environment.browser.toLowerCase() === 'safari' && !hasSpeakers;\n\n  const cameraGrantedDropdown = (\n    <Dropdown\n      data-ui-id=\"call-composite-local-camera-settings\"\n      aria-labelledby={'call-composite-local-camera-settings-label'}\n      placeholder={hasCameras ? defaultPlaceHolder : noCameraLabel}\n      options={cameraPermissionGranted ? getDropDownList(props.cameras) : [{ key: 'deniedOrUnknown', text: '' }]}\n      styles={dropDownStyles(theme)}\n      disabled={!cameraPermissionGranted || !hasCameras}\n      errorMessage={\n        props.cameraPermissionGranted === undefined || props.cameraPermissionGranted\n          ? undefined\n          : locale.strings.call.cameraPermissionDenied\n      }\n      defaultSelectedKey={\n        micPermissionGranted\n          ? props.selectedCamera\n            ? props.selectedCamera.id\n            : props.cameras\n            ? props.cameras[0]?.id\n            : ''\n          : 'deniedOrUnknown'\n      }\n      onChange={(event, option, index) => {\n        props.onSelectCamera(props.cameras[index ?? 0], localVideoViewOptions);\n      }}\n      onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Camera', props)}\n    />\n  );\n\n  const micGrantedDropdown = (\n    <>\n      {roleCanUseMic && (\n        <Dropdown\n          aria-labelledby={'call-composite-local-sound-settings-label'}\n          placeholder={hasMicrophones ? defaultPlaceHolder : noMicLabel}\n          styles={dropDownStyles(theme)}\n          disabled={!micPermissionGranted || !hasMicrophones}\n          errorMessage={\n            props.microphonePermissionGranted === undefined || props.microphonePermissionGranted\n              ? undefined\n              : locale.strings.call.microphonePermissionDenied\n          }\n          options={micPermissionGranted ? getDropDownList(props.microphones) : [{ key: 'deniedOrUnknown', text: '' }]}\n          defaultSelectedKey={\n            micPermissionGranted\n              ? props.selectedMicrophone\n                ? props.selectedMicrophone.id\n                : defaultDeviceId(props.microphones)\n              : 'deniedOrUnknown'\n          }\n          onChange={(\n            event: React.FormEvent<HTMLDivElement>,\n            option?: IDropdownOption | undefined,\n            index?: number | undefined\n          ) => {\n            props.onSelectMicrophone(props.microphones[index ?? 0]);\n          }}\n          onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Microphone', props)}\n        />\n      )}\n    </>\n  );\n\n  const speakerDropdown = (\n    <Dropdown\n      aria-labelledby={'call-composite-local-sound-settings-label'}\n      placeholder={hasSpeakers ? defaultPlaceHolder : noSpeakersLabel}\n      styles={dropDownStyles(theme)}\n      disabled={props.speakers.length === 0}\n      options={getDropDownList(props.speakers)}\n      defaultSelectedKey={props.selectedSpeaker ? props.selectedSpeaker.id : defaultDeviceId(props.speakers)}\n      onChange={(\n        event: React.FormEvent<HTMLDivElement>,\n        option?: IDropdownOption | undefined,\n        index?: number | undefined\n      ) => {\n        props.onSelectSpeaker(props.speakers[index ?? 0]);\n      }}\n      onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Speaker', props)}\n    />\n  );\n\n  const SafariBrowserSpeakerDropdownTrampoline = (): JSX.Element => {\n    /* @conditional-compile-remove(unsupported-browser) */\n    if (isSafariWithNoSpeakers) {\n      return <></>;\n    }\n    return speakerDropdown;\n  };\n\n  return (\n    <Stack data-ui-id=\"call-composite-device-settings\" tokens={mainStackTokens} styles={deviceSelectionContainerStyles}>\n      {roleCanUseCamera && (\n        <Stack>\n          <Stack horizontal horizontalAlign=\"space-between\" styles={cameraAndVideoEffectsContainerStyleDesktop}>\n            <Label\n              id={'call-composite-local-camera-settings-label'}\n              className={mergeStyles(dropDownStyles(theme).label)}\n              disabled={!cameraPermissionGranted} // follows dropdown disabled state\n            >\n              {cameraLabel}\n            </Label>\n            {onResolveVideoEffectDependency && (\n              <DefaultButton\n                iconProps={{ iconName: 'ConfigurationScreenVideoEffectsButton' }}\n                styles={effectsButtonStyles(theme, !cameraPermissionGranted)}\n                onClick={props.onClickVideoEffects}\n                disabled={!cameraPermissionGranted}\n                data-ui-id={'call-config-video-effects-button'}\n              >\n                {locale.strings.call.configurationPageVideoEffectsButtonLabel}\n              </DefaultButton>\n            )}\n          </Stack>\n          <ConfigurationPageCameraDropdown\n            cameraGrantedDropdown={cameraGrantedDropdown}\n            cameraPermissionGranted={cameraPermissionGranted ?? false}\n            /* @conditional-compile-remove(call-readiness) */\n            dropdownProps={dropdownProps}\n            /* @conditional-compile-remove(call-readiness) */\n            onClickEnableDevicePermission={props.onClickEnableDevicePermission}\n          />\n        </Stack>\n      )}\n      <Stack>\n        <Label\n          id={'call-composite-local-sound-settings-label'}\n          className={mergeStyles(dropDownStyles(theme).label)}\n          disabled={!micPermissionGranted} // follows Start button disabled state in ConfigurationPage\n        >\n          {soundLabel}\n        </Label>\n        <Stack data-ui-id=\"call-composite-sound-settings\" tokens={soundStackTokens}>\n          <ConfigurationPageMicDropdown\n            micGrantedDropdown={micGrantedDropdown}\n            micPermissionGranted={micPermissionGranted ?? false}\n            /* @conditional-compile-remove(call-readiness) */\n            dropdownProps={dropdownProps}\n            /* @conditional-compile-remove(call-readiness) */\n            onClickEnableDevicePermission={props.onClickEnableDevicePermission}\n          />\n          <SafariBrowserSpeakerDropdownTrampoline />\n        </Stack>\n      </Stack>\n    </Stack>\n  );\n};\n\nconst defaultDeviceId = (devices: AudioDeviceInfo[]): string => {\n  if (devices.length === 0) {\n    return '';\n  }\n  const defaultDevice = devices.find((device) => device.isSystemDefault);\n  if (defaultDevice) {\n    return defaultDevice.id;\n  }\n  return devices[0].id;\n};\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"LocalDeviceSettings.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/components/LocalDeviceSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AudioDeviceInfo, VideoDeviceInfo } from '@azure/communication-calling';\nimport { Dropdown, IDropdownOption, Label, mergeStyles, Stack } from '@fluentui/react';\n\nimport { DefaultButton } from '@fluentui/react';\nimport { useEffect } from 'react';\nimport { useTheme, VideoStreamOptions, _DevicePermissionDropdown } from '@internal/react-components';\nimport React from 'react';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { useLocale } from '../../localization';\nimport {\n  deviceSelectionContainerStyles,\n  dropDownStyles,\n  dropDownTitleIconStyles,\n  mainStackTokens,\n  optionIconStyles,\n  soundStackTokens\n} from '../styles/LocalDeviceSettings.styles';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { ConfigurationPageCameraDropdown } from './ConfigurationPageCameraDropdown';\nimport { ConfigurationPageMicDropdown } from './ConfigurationPageMicDropdown';\n/* @conditional-compile-remove(call-readiness) */\nimport { useHandlers } from '../hooks/useHandlers';\nimport { cameraAndVideoEffectsContainerStyleDesktop } from '../styles/CallConfiguration.styles';\n\nimport { effectsButtonStyles } from '../styles/CallConfiguration.styles';\n\ntype iconType = 'Camera' | 'Microphone' | 'Speaker';\n\nconst getDropDownList = (list: Array<VideoDeviceInfo | AudioDeviceInfo>): IDropdownOption[] => {\n  // Remove duplicates\n  const noDuplicates = new Map<string, VideoDeviceInfo | AudioDeviceInfo>();\n  for (const item of list) {\n    noDuplicates.set(item.id, item);\n  }\n  const dropdownList: IDropdownOption[] = [];\n  for (const item of noDuplicates.values()) {\n    dropdownList.push({\n      key: item.id,\n      text: item.name === '' ? item.deviceType : item.name\n    });\n  }\n  return dropdownList;\n};\n\nconst getOptionIcon = (type: iconType): JSX.Element | undefined => {\n  if (type === 'Camera') {\n    return <CallCompositeIcon iconName=\"LocalDeviceSettingsCamera\" className={optionIconStyles} />;\n  } else if (type === 'Microphone') {\n    return <CallCompositeIcon iconName=\"LocalDeviceSettingsMic\" className={optionIconStyles} />;\n  } else if (type === 'Speaker') {\n    return <CallCompositeIcon iconName=\"LocalDeviceSettingsSpeaker\" className={optionIconStyles} />;\n  } else {\n    return undefined;\n  }\n};\n\nconst onRenderTitle = (iconType: iconType, props?: IDropdownOption[]): JSX.Element => {\n  const icon = props && getOptionIcon(iconType);\n  return props ? (\n    <div className={dropDownTitleIconStyles}>\n      {icon}\n      <span>{props[0].text}</span>\n    </div>\n  ) : (\n    <></>\n  );\n};\n\nconst localVideoViewOptions = {\n  scalingMode: 'Crop',\n  isMirrored: true\n} as VideoStreamOptions;\n\n/**\n * @private\n */\nexport interface LocalDeviceSettingsType {\n  cameras: VideoDeviceInfo[];\n  microphones: AudioDeviceInfo[];\n  speakers: AudioDeviceInfo[];\n  selectedCamera?: VideoDeviceInfo;\n  selectedMicrophone?: AudioDeviceInfo;\n  selectedSpeaker?: AudioDeviceInfo;\n  microphonePermissionGranted: boolean | undefined;\n  cameraPermissionGranted: boolean | undefined;\n  onSelectCamera: (device: VideoDeviceInfo, options?: VideoStreamOptions) => Promise<void>;\n  onSelectMicrophone: (device: AudioDeviceInfo) => Promise<void>;\n  onSelectSpeaker: (device: AudioDeviceInfo) => Promise<void>;\n  /* @conditional-compile-remove(call-readiness) */\n  onClickEnableDevicePermission?: () => void;\n\n  onClickVideoEffects?: () => void;\n}\n\n/**\n * @private\n */\nexport const LocalDeviceSettings = (props: LocalDeviceSettingsType): JSX.Element => {\n  const theme = useTheme();\n  const locale = useLocale();\n  const adapter = useAdapter();\n\n  const onResolveVideoEffectDependency = adapter.getState().onResolveVideoEffectDependency;\n  const defaultPlaceHolder = locale.strings.call.defaultPlaceHolder;\n  const cameraLabel = locale.strings.call.cameraLabel;\n  const soundLabel = locale.strings.call.soundLabel;\n  const noSpeakersLabel = locale.strings.call.noSpeakersLabel;\n  const noCameraLabel = locale.strings.call.noCamerasLabel;\n  const noMicLabel = locale.strings.call.noMicrophonesLabel;\n  const role = adapter.getState().call?.role;\n\n  const cameraPermissionGranted = props.cameraPermissionGranted;\n  const micPermissionGranted = props.microphonePermissionGranted;\n\n  const roleCanUseCamera = role !== 'Consumer';\n  const roleCanUseMic = role !== 'Consumer';\n\n  // TODO: speaker permission is tied to microphone permission (when you request 'audio' permission using the SDK) its\n  // actually granting access to query both microphone and speaker. However the browser popup asks you explicity for\n  // 'microphone'. This needs investigation on how we want to handle this and maybe needs follow up with SDK team.\n  useEffect(() => {\n    if (cameraPermissionGranted) {\n      adapter.queryCameras();\n    }\n    if (micPermissionGranted) {\n      adapter.queryMicrophones();\n    }\n    adapter.querySpeakers();\n  }, [adapter, cameraPermissionGranted, micPermissionGranted]);\n\n  /* @conditional-compile-remove(call-readiness) */\n  const dropdownProps = useHandlers(_DevicePermissionDropdown);\n\n  const hasCameras = props.cameras.length > 0;\n  const hasMicrophones = props.microphones.length > 0;\n  const hasSpeakers = props.speakers.length > 0;\n  /* @conditional-compile-remove(unsupported-browser) */\n  const isSafariWithNoSpeakers =\n    adapter.getState().environmentInfo?.environment.browser.toLowerCase() === 'safari' && !hasSpeakers;\n\n  const cameraGrantedDropdown = (\n    <Dropdown\n      data-ui-id=\"call-composite-local-camera-settings\"\n      aria-labelledby={'call-composite-local-camera-settings-label'}\n      placeholder={hasCameras ? defaultPlaceHolder : noCameraLabel}\n      options={cameraPermissionGranted ? getDropDownList(props.cameras) : [{ key: 'deniedOrUnknown', text: '' }]}\n      styles={dropDownStyles(theme)}\n      disabled={!cameraPermissionGranted || !hasCameras}\n      errorMessage={\n        props.cameraPermissionGranted === undefined || props.cameraPermissionGranted\n          ? undefined\n          : locale.strings.call.cameraPermissionDenied\n      }\n      defaultSelectedKey={\n        micPermissionGranted\n          ? props.selectedCamera\n            ? props.selectedCamera.id\n            : props.cameras\n              ? props.cameras[0]?.id\n              : ''\n          : 'deniedOrUnknown'\n      }\n      onChange={(event, option, index) => {\n        props.onSelectCamera(props.cameras[index ?? 0], localVideoViewOptions);\n      }}\n      onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Camera', props)}\n    />\n  );\n\n  const micGrantedDropdown = (\n    <>\n      {roleCanUseMic && (\n        <Dropdown\n          aria-labelledby={'call-composite-local-sound-settings-label'}\n          placeholder={hasMicrophones ? defaultPlaceHolder : noMicLabel}\n          styles={dropDownStyles(theme)}\n          disabled={!micPermissionGranted || !hasMicrophones}\n          errorMessage={\n            props.microphonePermissionGranted === undefined || props.microphonePermissionGranted\n              ? undefined\n              : locale.strings.call.microphonePermissionDenied\n          }\n          options={micPermissionGranted ? getDropDownList(props.microphones) : [{ key: 'deniedOrUnknown', text: '' }]}\n          defaultSelectedKey={\n            micPermissionGranted\n              ? props.selectedMicrophone\n                ? props.selectedMicrophone.id\n                : defaultDeviceId(props.microphones)\n              : 'deniedOrUnknown'\n          }\n          onChange={(\n            event: React.FormEvent<HTMLDivElement>,\n            option?: IDropdownOption | undefined,\n            index?: number | undefined\n          ) => {\n            props.onSelectMicrophone(props.microphones[index ?? 0]);\n          }}\n          onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Microphone', props)}\n        />\n      )}\n    </>\n  );\n\n  const speakerDropdown = (\n    <Dropdown\n      aria-labelledby={'call-composite-local-sound-settings-label'}\n      placeholder={hasSpeakers ? defaultPlaceHolder : noSpeakersLabel}\n      styles={dropDownStyles(theme)}\n      disabled={props.speakers.length === 0}\n      options={getDropDownList(props.speakers)}\n      defaultSelectedKey={props.selectedSpeaker ? props.selectedSpeaker.id : defaultDeviceId(props.speakers)}\n      onChange={(\n        event: React.FormEvent<HTMLDivElement>,\n        option?: IDropdownOption | undefined,\n        index?: number | undefined\n      ) => {\n        props.onSelectSpeaker(props.speakers[index ?? 0]);\n      }}\n      onRenderTitle={(props?: IDropdownOption[]) => onRenderTitle('Speaker', props)}\n    />\n  );\n\n  const SafariBrowserSpeakerDropdownTrampoline = (): JSX.Element => {\n    /* @conditional-compile-remove(unsupported-browser) */\n    if (isSafariWithNoSpeakers) {\n      return <></>;\n    }\n    return speakerDropdown;\n  };\n\n  return (\n    <Stack data-ui-id=\"call-composite-device-settings\" tokens={mainStackTokens} styles={deviceSelectionContainerStyles}>\n      {roleCanUseCamera && (\n        <Stack>\n          <Stack horizontal horizontalAlign=\"space-between\" styles={cameraAndVideoEffectsContainerStyleDesktop}>\n            <Label\n              id={'call-composite-local-camera-settings-label'}\n              className={mergeStyles(dropDownStyles(theme).label)}\n              disabled={!cameraPermissionGranted} // follows dropdown disabled state\n            >\n              {cameraLabel}\n            </Label>\n            {onResolveVideoEffectDependency && (\n              <DefaultButton\n                iconProps={{ iconName: 'ConfigurationScreenVideoEffectsButton' }}\n                styles={effectsButtonStyles(theme, !cameraPermissionGranted)}\n                onClick={props.onClickVideoEffects}\n                disabled={!cameraPermissionGranted}\n                data-ui-id={'call-config-video-effects-button'}\n              >\n                {locale.strings.call.configurationPageVideoEffectsButtonLabel}\n              </DefaultButton>\n            )}\n          </Stack>\n          <ConfigurationPageCameraDropdown\n            cameraGrantedDropdown={cameraGrantedDropdown}\n            cameraPermissionGranted={cameraPermissionGranted ?? false}\n            /* @conditional-compile-remove(call-readiness) */\n            dropdownProps={dropdownProps}\n            /* @conditional-compile-remove(call-readiness) */\n            onClickEnableDevicePermission={props.onClickEnableDevicePermission}\n          />\n        </Stack>\n      )}\n      <Stack>\n        <Label\n          id={'call-composite-local-sound-settings-label'}\n          className={mergeStyles(dropDownStyles(theme).label)}\n          disabled={!micPermissionGranted} // follows Start button disabled state in ConfigurationPage\n        >\n          {soundLabel}\n        </Label>\n        <Stack data-ui-id=\"call-composite-sound-settings\" tokens={soundStackTokens}>\n          <ConfigurationPageMicDropdown\n            micGrantedDropdown={micGrantedDropdown}\n            micPermissionGranted={micPermissionGranted ?? false}\n            /* @conditional-compile-remove(call-readiness) */\n            dropdownProps={dropdownProps}\n            /* @conditional-compile-remove(call-readiness) */\n            onClickEnableDevicePermission={props.onClickEnableDevicePermission}\n          />\n          <SafariBrowserSpeakerDropdownTrampoline />\n        </Stack>\n      </Stack>\n    </Stack>\n  );\n};\n\nconst defaultDeviceId = (devices: AudioDeviceInfo[]): string => {\n  if (devices.length === 0) {\n    return '';\n  }\n  const defaultDevice = devices.find((device) => device.isSystemDefault);\n  if (defaultDevice) {\n    return defaultDevice.id;\n  }\n  return devices[0].id;\n};\n"]}
         
     | 
    
        package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"MediaGallery.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/components/MediaGallery.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { CSSProperties, useCallback, useMemo } from 'react';\nimport { useRef } from 'react';\nimport {\n  VideoGallery,\n  VideoStreamOptions,\n  CustomAvatarOptions,\n  Announcer,\n  VideoTileContextualMenuProps,\n  VideoTileDrawerMenuProps\n} from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport { _useContainerWidth, _useContainerHeight } from '@internal/react-components';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { AvatarPersona, AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { mergeStyles, Stack } from '@fluentui/react';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { useSelector } from '../hooks/useSelector';\nimport { localVideoCameraCycleButtonSelector } from '../selectors/LocalVideoTileSelector';\nimport { LocalVideoCameraCycleButton } from '@internal/react-components';\nimport { _formatString } from '@internal/acs-ui-common';\nimport { useParticipantChangedAnnouncement } from '../utils/MediaGalleryUtils';\nimport { RemoteVideoTileMenuOptions } from '../CallComposite';\nimport { LocalVideoTileOptions } from '../CallComposite';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { PromptProps } from './Prompt';\nimport { useLocalSpotlightCallbacksWithPrompt, useRemoteSpotlightCallbacksWithPrompt } from '../utils/spotlightUtils';\nimport { VideoTilesOptions } from '@internal/react-components';\n\nconst VideoGalleryStyles = {\n  root: {\n    height: '100%',\n    minHeight: '10rem', // space affordance to ensure media gallery is never collapsed\n    minWidth: '6rem'\n  }\n};\n\nconst localVideoViewOptions = {\n  scalingMode: 'Crop',\n  isMirrored: true\n} as VideoStreamOptions;\n\nconst remoteVideoViewOptions = {\n  scalingMode: 'Crop'\n} as VideoStreamOptions;\n\n/**\n * @private\n */\nexport interface MediaGalleryProps {\n  isVideoStreamOn?: boolean;\n  isMicrophoneChecked?: boolean;\n  onStartLocalVideo: () => Promise<void>;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  isMobile?: boolean;\n  drawerMenuHostId?: string;\n  remoteVideoTileMenuOptions?: RemoteVideoTileMenuOptions;\n  localVideoTileOptions?: boolean | LocalVideoTileOptions;\n  userSetOverflowGalleryPosition?: 'Responsive' | 'horizontalTop';\n  userSetGalleryLayout: VideoGalleryLayout;\n  pinnedParticipants?: string[];\n  setPinnedParticipants?: (pinnedParticipants: string[]) => void;\n  setIsPromptOpen: (isOpen: boolean) => void;\n  setPromptProps: (props: PromptProps) => void;\n  hideSpotlightButtons?: boolean;\n  videoTilesOptions?: VideoTilesOptions;\n}\n\n/**\n * @private\n */\nexport const MediaGallery = (props: MediaGalleryProps): JSX.Element => {\n  const {\n    pinnedParticipants = [],\n    setPinnedParticipants,\n    setIsPromptOpen,\n    setPromptProps,\n    hideSpotlightButtons,\n    videoTilesOptions\n  } = props;\n\n  const videoGalleryProps = usePropsFor(VideoGallery);\n  const cameraSwitcherCameras = useSelector(localVideoCameraCycleButtonSelector);\n  const cameraSwitcherCallback = useHandlers(LocalVideoCameraCycleButton);\n  const announcerString = useParticipantChangedAnnouncement();\n\n  const adapter = useAdapter();\n  const userRole = adapter.getState().call?.role;\n  const isRoomsCall = adapter.getState().isRoomsCall;\n\n  const containerRef = useRef<HTMLDivElement>(null);\n  const containerWidth = _useContainerWidth(containerRef);\n  const containerHeight = _useContainerHeight(containerRef);\n  const containerAspectRatio = containerWidth && containerHeight ? containerWidth / containerHeight : 0;\n  const reactionResources = adapter.getState().reactions;\n\n  const layoutBasedOnTilePosition: VideoGalleryLayout = getVideoGalleryLayoutBasedOnLocalOptions(\n    (props.localVideoTileOptions as LocalVideoTileOptions)?.position\n  );\n  const cameraSwitcherProps = useMemo(() => {\n    return {\n      ...cameraSwitcherCallback,\n      ...cameraSwitcherCameras\n    };\n  }, [cameraSwitcherCallback, cameraSwitcherCameras]);\n\n  const onRenderAvatar = useCallback(\n    (userId?: string, options?: CustomAvatarOptions) => {\n      return (\n        <Stack className={mergeStyles({ position: 'absolute', height: '100%', width: '100%' })}>\n          <Stack styles={{ root: { margin: 'auto', maxHeight: '100%' } }}>\n            {options?.coinSize && (\n              <AvatarPersona userId={userId} {...options} dataProvider={props.onFetchAvatarPersonaData} />\n            )}\n          </Stack>\n        </Stack>\n      );\n    },\n    [props.onFetchAvatarPersonaData]\n  );\n\n  const remoteVideoTileMenuOptions: false | VideoTileContextualMenuProps | VideoTileDrawerMenuProps = useMemo(() => {\n    return props.remoteVideoTileMenuOptions?.isHidden\n      ? false\n      : props.isMobile\n      ? { kind: 'drawer', hostId: props.drawerMenuHostId }\n      : { kind: 'contextual' };\n  }, [props.remoteVideoTileMenuOptions?.isHidden, props.isMobile, props.drawerMenuHostId]);\n\n  const overflowGalleryPosition = useMemo(() => {\n    /* @conditional-compile-remove(overflow-top-composite) */\n    if (props.userSetOverflowGalleryPosition === 'horizontalTop') {\n      return props.userSetOverflowGalleryPosition;\n    }\n    return containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9\n      ? 'verticalRight'\n      : 'horizontalBottom';\n  }, [\n    /* @conditional-compile-remove(overflow-top-composite) */ props.userSetOverflowGalleryPosition,\n    containerWidth,\n    containerHeight\n  ]);\n\n  const { onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight } =\n    videoGalleryProps;\n\n  const { onStartLocalSpotlightWithPrompt, onStopLocalSpotlightWithPrompt } = useLocalSpotlightCallbacksWithPrompt(\n    onStartLocalSpotlight,\n    onStopLocalSpotlight,\n    setIsPromptOpen,\n    setPromptProps\n  );\n\n  const { onStartRemoteSpotlightWithPrompt, onStopRemoteSpotlightWithPrompt } = useRemoteSpotlightCallbacksWithPrompt(\n    onStartRemoteSpotlight,\n    onStopRemoteSpotlight,\n    setIsPromptOpen,\n    setPromptProps\n  );\n\n  const onPinParticipant = useMemo(() => {\n    return setPinnedParticipants\n      ? (userId: string) => {\n          if (!pinnedParticipants.includes(userId)) {\n            setPinnedParticipants(pinnedParticipants.concat(userId));\n          }\n        }\n      : undefined;\n  }, [setPinnedParticipants, pinnedParticipants]);\n\n  const onUnpinParticipant = useMemo(() => {\n    return setPinnedParticipants\n      ? (userId: string) => {\n          setPinnedParticipants(pinnedParticipants.filter((participantId) => participantId !== userId));\n        }\n      : undefined;\n  }, [setPinnedParticipants, pinnedParticipants]);\n\n  const VideoGalleryMemoized = useMemo(() => {\n    const layoutBasedOnUserSelection = (): VideoGalleryLayout => {\n      return props.localVideoTileOptions ? layoutBasedOnTilePosition : props.userSetGalleryLayout;\n      return layoutBasedOnTilePosition;\n    };\n\n    return (\n      <VideoGallery\n        {...videoGalleryProps}\n        videoTilesOptions={videoTilesOptions}\n        localVideoViewOptions={localVideoViewOptions}\n        remoteVideoViewOptions={remoteVideoViewOptions}\n        styles={VideoGalleryStyles}\n        layout={layoutBasedOnUserSelection()}\n        showCameraSwitcherInLocalPreview={props.isMobile}\n        localVideoCameraCycleButtonProps={cameraSwitcherProps}\n        onRenderAvatar={onRenderAvatar}\n        remoteVideoTileMenu={remoteVideoTileMenuOptions}\n        overflowGalleryPosition={overflowGalleryPosition}\n        localVideoTileSize={\n          props.localVideoTileOptions === false || userRole === 'Consumer' || (isRoomsCall && userRole === 'Unknown')\n            ? 'hidden'\n            : props.isMobile && containerAspectRatio < 1\n            ? '9:16'\n            : '16:9'\n        }\n        pinnedParticipants={pinnedParticipants}\n        onPinParticipant={onPinParticipant}\n        onUnpinParticipant={onUnpinParticipant}\n        reactionResources={reactionResources}\n        onStartLocalSpotlight={hideSpotlightButtons ? undefined : onStartLocalSpotlightWithPrompt}\n        onStopLocalSpotlight={hideSpotlightButtons ? undefined : onStopLocalSpotlightWithPrompt}\n        onStartRemoteSpotlight={hideSpotlightButtons ? undefined : onStartRemoteSpotlightWithPrompt}\n        onStopRemoteSpotlight={hideSpotlightButtons ? undefined : onStopRemoteSpotlightWithPrompt}\n        /* @conditional-compile-remove(soft-mute) */\n        onMuteParticipant={\n          ['Unknown', 'Organizer', 'Presenter', 'Co-organizer'].includes(userRole ?? '')\n            ? videoGalleryProps.onMuteParticipant\n            : undefined\n        }\n      />\n    );\n  }, [\n    videoGalleryProps,\n    props.isMobile,\n    props.localVideoTileOptions,\n    cameraSwitcherProps,\n    onRenderAvatar,\n    remoteVideoTileMenuOptions,\n    overflowGalleryPosition,\n    userRole,\n    isRoomsCall,\n    containerAspectRatio,\n    props.userSetGalleryLayout,\n    pinnedParticipants,\n    onPinParticipant,\n    onUnpinParticipant,\n    layoutBasedOnTilePosition,\n    reactionResources,\n    onStartLocalSpotlightWithPrompt,\n    onStopLocalSpotlightWithPrompt,\n    onStartRemoteSpotlightWithPrompt,\n    onStopRemoteSpotlightWithPrompt,\n    hideSpotlightButtons,\n    videoTilesOptions\n  ]);\n\n  return (\n    <div ref={containerRef} style={mediaGalleryContainerStyles}>\n      <Announcer announcementString={announcerString} ariaLive={'polite'} />\n      {VideoGalleryMemoized}\n    </div>\n  );\n};\n\nconst mediaGalleryContainerStyles: CSSProperties = { width: '100%', height: '100%' };\n\nconst getVideoGalleryLayoutBasedOnLocalOptions = (localTileOptions?: string): VideoGalleryLayout => {\n  return localTileOptions === 'grid' ? 'default' : 'floatingLocalVideo';\n};\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"MediaGallery.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/components/MediaGallery.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { CSSProperties, useCallback, useMemo } from 'react';\nimport { useRef } from 'react';\nimport {\n  VideoGallery,\n  VideoStreamOptions,\n  CustomAvatarOptions,\n  Announcer,\n  VideoTileContextualMenuProps,\n  VideoTileDrawerMenuProps\n} from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport { _useContainerWidth, _useContainerHeight } from '@internal/react-components';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { AvatarPersona, AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { mergeStyles, Stack } from '@fluentui/react';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { useSelector } from '../hooks/useSelector';\nimport { localVideoCameraCycleButtonSelector } from '../selectors/LocalVideoTileSelector';\nimport { LocalVideoCameraCycleButton } from '@internal/react-components';\nimport { _formatString } from '@internal/acs-ui-common';\nimport { useParticipantChangedAnnouncement } from '../utils/MediaGalleryUtils';\nimport { RemoteVideoTileMenuOptions } from '../CallComposite';\nimport { LocalVideoTileOptions } from '../CallComposite';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { PromptProps } from './Prompt';\nimport { useLocalSpotlightCallbacksWithPrompt, useRemoteSpotlightCallbacksWithPrompt } from '../utils/spotlightUtils';\nimport { VideoTilesOptions } from '@internal/react-components';\n\nconst VideoGalleryStyles = {\n  root: {\n    height: '100%',\n    minHeight: '10rem', // space affordance to ensure media gallery is never collapsed\n    minWidth: '6rem'\n  }\n};\n\nconst localVideoViewOptions = {\n  scalingMode: 'Crop',\n  isMirrored: true\n} as VideoStreamOptions;\n\nconst remoteVideoViewOptions = {\n  scalingMode: 'Crop'\n} as VideoStreamOptions;\n\n/**\n * @private\n */\nexport interface MediaGalleryProps {\n  isVideoStreamOn?: boolean;\n  isMicrophoneChecked?: boolean;\n  onStartLocalVideo: () => Promise<void>;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  isMobile?: boolean;\n  drawerMenuHostId?: string;\n  remoteVideoTileMenuOptions?: RemoteVideoTileMenuOptions;\n  localVideoTileOptions?: boolean | LocalVideoTileOptions;\n  userSetOverflowGalleryPosition?: 'Responsive' | 'horizontalTop';\n  userSetGalleryLayout: VideoGalleryLayout;\n  pinnedParticipants?: string[];\n  setPinnedParticipants?: (pinnedParticipants: string[]) => void;\n  setIsPromptOpen: (isOpen: boolean) => void;\n  setPromptProps: (props: PromptProps) => void;\n  hideSpotlightButtons?: boolean;\n  videoTilesOptions?: VideoTilesOptions;\n}\n\n/**\n * @private\n */\nexport const MediaGallery = (props: MediaGalleryProps): JSX.Element => {\n  const {\n    pinnedParticipants = [],\n    setPinnedParticipants,\n    setIsPromptOpen,\n    setPromptProps,\n    hideSpotlightButtons,\n    videoTilesOptions\n  } = props;\n\n  const videoGalleryProps = usePropsFor(VideoGallery);\n  const cameraSwitcherCameras = useSelector(localVideoCameraCycleButtonSelector);\n  const cameraSwitcherCallback = useHandlers(LocalVideoCameraCycleButton);\n  const announcerString = useParticipantChangedAnnouncement();\n\n  const adapter = useAdapter();\n  const userRole = adapter.getState().call?.role;\n  const isRoomsCall = adapter.getState().isRoomsCall;\n\n  const containerRef = useRef<HTMLDivElement>(null);\n  const containerWidth = _useContainerWidth(containerRef);\n  const containerHeight = _useContainerHeight(containerRef);\n  const containerAspectRatio = containerWidth && containerHeight ? containerWidth / containerHeight : 0;\n  const reactionResources = adapter.getState().reactions;\n\n  const layoutBasedOnTilePosition: VideoGalleryLayout = getVideoGalleryLayoutBasedOnLocalOptions(\n    (props.localVideoTileOptions as LocalVideoTileOptions)?.position\n  );\n  const cameraSwitcherProps = useMemo(() => {\n    return {\n      ...cameraSwitcherCallback,\n      ...cameraSwitcherCameras\n    };\n  }, [cameraSwitcherCallback, cameraSwitcherCameras]);\n\n  const onRenderAvatar = useCallback(\n    (userId?: string, options?: CustomAvatarOptions) => {\n      return (\n        <Stack className={mergeStyles({ position: 'absolute', height: '100%', width: '100%' })}>\n          <Stack styles={{ root: { margin: 'auto', maxHeight: '100%' } }}>\n            {options?.coinSize && (\n              <AvatarPersona userId={userId} {...options} dataProvider={props.onFetchAvatarPersonaData} />\n            )}\n          </Stack>\n        </Stack>\n      );\n    },\n    [props.onFetchAvatarPersonaData]\n  );\n\n  const remoteVideoTileMenuOptions: false | VideoTileContextualMenuProps | VideoTileDrawerMenuProps = useMemo(() => {\n    return props.remoteVideoTileMenuOptions?.isHidden\n      ? false\n      : props.isMobile\n        ? { kind: 'drawer', hostId: props.drawerMenuHostId }\n        : { kind: 'contextual' };\n  }, [props.remoteVideoTileMenuOptions?.isHidden, props.isMobile, props.drawerMenuHostId]);\n\n  const overflowGalleryPosition = useMemo(() => {\n    /* @conditional-compile-remove(overflow-top-composite) */\n    if (props.userSetOverflowGalleryPosition === 'horizontalTop') {\n      return props.userSetOverflowGalleryPosition;\n    }\n    return containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9\n      ? 'verticalRight'\n      : 'horizontalBottom';\n  }, [\n    /* @conditional-compile-remove(overflow-top-composite) */ props.userSetOverflowGalleryPosition,\n    containerWidth,\n    containerHeight\n  ]);\n\n  const { onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight } =\n    videoGalleryProps;\n\n  const { onStartLocalSpotlightWithPrompt, onStopLocalSpotlightWithPrompt } = useLocalSpotlightCallbacksWithPrompt(\n    onStartLocalSpotlight,\n    onStopLocalSpotlight,\n    setIsPromptOpen,\n    setPromptProps\n  );\n\n  const { onStartRemoteSpotlightWithPrompt, onStopRemoteSpotlightWithPrompt } = useRemoteSpotlightCallbacksWithPrompt(\n    onStartRemoteSpotlight,\n    onStopRemoteSpotlight,\n    setIsPromptOpen,\n    setPromptProps\n  );\n\n  const onPinParticipant = useMemo(() => {\n    return setPinnedParticipants\n      ? (userId: string) => {\n          if (!pinnedParticipants.includes(userId)) {\n            setPinnedParticipants(pinnedParticipants.concat(userId));\n          }\n        }\n      : undefined;\n  }, [setPinnedParticipants, pinnedParticipants]);\n\n  const onUnpinParticipant = useMemo(() => {\n    return setPinnedParticipants\n      ? (userId: string) => {\n          setPinnedParticipants(pinnedParticipants.filter((participantId) => participantId !== userId));\n        }\n      : undefined;\n  }, [setPinnedParticipants, pinnedParticipants]);\n\n  const VideoGalleryMemoized = useMemo(() => {\n    const layoutBasedOnUserSelection = (): VideoGalleryLayout => {\n      return props.localVideoTileOptions ? layoutBasedOnTilePosition : props.userSetGalleryLayout;\n      return layoutBasedOnTilePosition;\n    };\n\n    return (\n      <VideoGallery\n        {...videoGalleryProps}\n        videoTilesOptions={videoTilesOptions}\n        localVideoViewOptions={localVideoViewOptions}\n        remoteVideoViewOptions={remoteVideoViewOptions}\n        styles={VideoGalleryStyles}\n        layout={layoutBasedOnUserSelection()}\n        showCameraSwitcherInLocalPreview={props.isMobile}\n        localVideoCameraCycleButtonProps={cameraSwitcherProps}\n        onRenderAvatar={onRenderAvatar}\n        remoteVideoTileMenu={remoteVideoTileMenuOptions}\n        overflowGalleryPosition={overflowGalleryPosition}\n        localVideoTileSize={\n          props.localVideoTileOptions === false || userRole === 'Consumer' || (isRoomsCall && userRole === 'Unknown')\n            ? 'hidden'\n            : props.isMobile && containerAspectRatio < 1\n              ? '9:16'\n              : '16:9'\n        }\n        pinnedParticipants={pinnedParticipants}\n        onPinParticipant={onPinParticipant}\n        onUnpinParticipant={onUnpinParticipant}\n        reactionResources={reactionResources}\n        onStartLocalSpotlight={hideSpotlightButtons ? undefined : onStartLocalSpotlightWithPrompt}\n        onStopLocalSpotlight={hideSpotlightButtons ? undefined : onStopLocalSpotlightWithPrompt}\n        onStartRemoteSpotlight={hideSpotlightButtons ? undefined : onStartRemoteSpotlightWithPrompt}\n        onStopRemoteSpotlight={hideSpotlightButtons ? undefined : onStopRemoteSpotlightWithPrompt}\n        /* @conditional-compile-remove(soft-mute) */\n        onMuteParticipant={\n          ['Unknown', 'Organizer', 'Presenter', 'Co-organizer'].includes(userRole ?? '')\n            ? videoGalleryProps.onMuteParticipant\n            : undefined\n        }\n      />\n    );\n  }, [\n    videoGalleryProps,\n    props.isMobile,\n    props.localVideoTileOptions,\n    cameraSwitcherProps,\n    onRenderAvatar,\n    remoteVideoTileMenuOptions,\n    overflowGalleryPosition,\n    userRole,\n    isRoomsCall,\n    containerAspectRatio,\n    props.userSetGalleryLayout,\n    pinnedParticipants,\n    onPinParticipant,\n    onUnpinParticipant,\n    layoutBasedOnTilePosition,\n    reactionResources,\n    onStartLocalSpotlightWithPrompt,\n    onStopLocalSpotlightWithPrompt,\n    onStartRemoteSpotlightWithPrompt,\n    onStopRemoteSpotlightWithPrompt,\n    hideSpotlightButtons,\n    videoTilesOptions\n  ]);\n\n  return (\n    <div ref={containerRef} style={mediaGalleryContainerStyles}>\n      <Announcer announcementString={announcerString} ariaLive={'polite'} />\n      {VideoGalleryMemoized}\n    </div>\n  );\n};\n\nconst mediaGalleryContainerStyles: CSSProperties = { width: '100%', height: '100%' };\n\nconst getVideoGalleryLayoutBasedOnLocalOptions = (localTileOptions?: string): VideoGalleryLayout => {\n  return localTileOptions === 'grid' ? 'default' : 'floatingLocalVideo';\n};\n"]}
         
     | 
| 
         @@ -18,9 +18,11 @@ import { useSelector } from '../hooks/useSelector'; 
     | 
|
| 
       18 
18 
     | 
    
         
             
            /* @conditional-compile-remove(teams-meeting-conference) */
         
     | 
| 
       19 
19 
     | 
    
         
             
            import { phoneInfoTextStyle, phoneInfoIcon, phoneInfoInstructionLine, phoneInfoStep, phoneInfoIconStyle, phoneInfoLabelStyle, titleClassName, titleContainerClassName, infoConnectionLinkStyle } from '../../common/styles/TeamsMeetingConferenceInfo.style';
         
     | 
| 
       20 
20 
     | 
    
         
             
            /* @conditional-compile-remove(teams-meeting-conference) */
         
     | 
| 
       21 
     | 
    
         
            -
            import { formatPhoneNumberInfo, formatPhoneNumber } from "../../../../../react-components/src";
         
     | 
| 
      
 21 
     | 
    
         
            +
            import { formatPhoneNumberInfo, formatPhoneNumber, formatPhoneNumberLink } from "../../../../../react-components/src";
         
     | 
| 
       22 
22 
     | 
    
         
             
            /* @conditional-compile-remove(teams-meeting-conference) */
         
     | 
| 
       23 
23 
     | 
    
         
             
            import { _pxToRem } from "../../../../../acs-ui-common/src";
         
     | 
| 
      
 24 
     | 
    
         
            +
            /* @conditional-compile-remove(teams-meeting-conference) */
         
     | 
| 
      
 25 
     | 
    
         
            +
            import { Link } from '@fluentui/react';
         
     | 
| 
       24 
26 
     | 
    
         
             
            /**
         
     | 
| 
       25 
27 
     | 
    
         
             
             * @private
         
     | 
| 
       26 
28 
     | 
    
         
             
             */
         
     | 
| 
         @@ -50,16 +52,23 @@ export const NetworkReconnectTile = (props) => { 
     | 
|
| 
       50 
52 
     | 
    
         
             
                            React.createElement(Stack, { horizontal: true, horizontalAlign: "center", verticalAlign: "center", className: titleContainerClassName },
         
     | 
| 
       51 
53 
     | 
    
         
             
                                React.createElement(Text, { className: titleClassName }, localeStrings.meetingConferencePhoneInfoModalTitle)),
         
     | 
| 
       52 
54 
     | 
    
         
             
                            React.createElement(Stack, { horizontal: true, horizontalAlign: "space-between", className: phoneInfoInstructionLine },
         
     | 
| 
      
 55 
     | 
    
         
            +
                                React.createElement(Stack, { className: infoConnectionLinkStyle(theme) }),
         
     | 
| 
       53 
56 
     | 
    
         
             
                                React.createElement(Stack.Item, null,
         
     | 
| 
       54 
57 
     | 
    
         
             
                                    React.createElement(Stack, { horizontal: true, className: phoneInfoStep },
         
     | 
| 
       55 
     | 
    
         
            -
                                        React.createElement(Stack, { className: infoConnectionLinkStyle(theme) }),
         
     | 
| 
       56 
58 
     | 
    
         
             
                                        React.createElement(Stack.Item, { className: phoneInfoIcon(theme) },
         
     | 
| 
       57 
59 
     | 
    
         
             
                                            React.createElement(Stack, { verticalAlign: "center", horizontalAlign: "center" },
         
     | 
| 
       58 
60 
     | 
    
         
             
                                                React.createElement(Icon, { iconName: "PhoneNumberButton", className: phoneInfoIconStyle(theme) }))),
         
     | 
| 
       59 
61 
     | 
    
         
             
                                        React.createElement(Stack.Item, null,
         
     | 
| 
       60 
62 
     | 
    
         
             
                                            React.createElement(Text, { className: phoneInfoLabelStyle }, localeStrings.meetingConferencePhoneInfoModalDialIn)))),
         
     | 
| 
       61 
63 
     | 
    
         
             
                                React.createElement(Stack.Item, { className: phoneInfoStep }, meetingCoordinates.map((phoneNumber, index) => (React.createElement(Stack.Item, { key: index },
         
     | 
| 
       62 
     | 
    
         
            -
                                    React.createElement(Text, { className: phoneInfoTextStyle }, 
     | 
| 
      
 64 
     | 
    
         
            +
                                    React.createElement(Text, { className: phoneInfoTextStyle },
         
     | 
| 
      
 65 
     | 
    
         
            +
                                        props.isMobile && (React.createElement(Link, { className: phoneInfoTextStyle, href: formatPhoneNumberLink(phoneNumber) }, formatPhoneNumber(phoneNumber.phoneNumber))),
         
     | 
| 
      
 66 
     | 
    
         
            +
                                        !props.isMobile && (React.createElement(Text, { className: phoneInfoTextStyle }, formatPhoneNumber(phoneNumber.phoneNumber))),
         
     | 
| 
      
 67 
     | 
    
         
            +
                                        ' ',
         
     | 
| 
      
 68 
     | 
    
         
            +
                                        phoneNumber.isTollFree
         
     | 
| 
      
 69 
     | 
    
         
            +
                                            ? localeStrings.meetingConferencePhoneInfoModalTollFree
         
     | 
| 
      
 70 
     | 
    
         
            +
                                            : localeStrings.meetingConferencePhoneInfoModalToll),
         
     | 
| 
      
 71 
     | 
    
         
            +
                                    React.createElement("br", null),
         
     | 
| 
       63 
72 
     | 
    
         
             
                                    React.createElement(Text, { className: phoneInfoTextStyle },
         
     | 
| 
       64 
73 
     | 
    
         
             
                                        ' ',
         
     | 
| 
       65 
74 
     | 
    
         
             
                                        formatPhoneNumberInfo(phoneNumber, localeStrings))))))),
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"NetworkReconnectTile.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/components/NetworkReconnectTile.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React from 'react';\nimport { VideoGalleryStream, useTheme } from '@internal/react-components';\nimport { ExpandedLocalVideoTile } from './ExpandedLocalVideoTile';\nimport { mergeStyles, Stack, Text } from '@fluentui/react';\n/* @conditional-compile-remove(teams-meeting-conference) */\n// eslint-disable-next-line no-restricted-imports\nimport { Icon } from '@fluentui/react';\nimport { useLocale } from '../../localization';\nimport {\n  containerStyle,\n  moreDetailsStyle,\n  titleContainerStyle,\n  titleStyle\n} from '../styles/NetworkReconnectTile.styles';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { CallCompositeIcon } from '../../common/icons';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { getTeamsMeetingCoordinates, getIsTeamsMeeting } from '../selectors/baseSelectors';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { useSelector } from '../hooks/useSelector';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport {\n  phoneInfoTextStyle,\n  phoneInfoIcon,\n  phoneInfoInstructionLine,\n  phoneInfoStep,\n  phoneInfoIconStyle,\n  phoneInfoLabelStyle,\n  titleClassName,\n  titleContainerClassName,\n  infoConnectionLinkStyle\n} from '../../common/styles/TeamsMeetingConferenceInfo.style';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { formatPhoneNumberInfo, formatPhoneNumber } from '@internal/react-components';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { _pxToRem } from '@internal/acs-ui-common';\n\n/**\n * @private\n */\nexport interface NetworkReconnectTileProps {\n  localParticipantVideoStream: VideoGalleryStream;\n}\n\n/**\n * @private\n */\nexport const NetworkReconnectTile = (props: NetworkReconnectTileProps): JSX.Element => {\n  const videoStream = props.localParticipantVideoStream;\n  const isVideoReady = videoStream?.isAvailable ?? false;\n  const palette = useTheme().palette;\n  const strings = useLocale().strings.call;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const localeStrings = useLocale().component.strings.MeetingConferencePhoneInfo;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const theme = useTheme();\n\n  const handlers = useHandlers(ExpandedLocalVideoTile);\n\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const isTeamsMeeting = useSelector(getIsTeamsMeeting);\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const meetingCoordinates = useSelector(getTeamsMeetingCoordinates);\n\n  return (\n    <ExpandedLocalVideoTile\n      localParticipantVideoStream={props.localParticipantVideoStream}\n      overlayContent={\n        <Stack\n          verticalFill\n          horizontalAlign=\"center\"\n          verticalAlign=\"center\"\n          className={mergeStyles(containerStyle)}\n          aria-atomic\n        >\n          <Stack horizontal className={mergeStyles(titleContainerStyle)}>\n            <CallCompositeIcon\n              iconName=\"NetworkReconnectIcon\"\n              className={mergeStyles(titleStyle(palette, isVideoReady))}\n            />\n            <Text className={mergeStyles(titleStyle(palette, isVideoReady))} aria-live={'assertive'}>\n              {strings.networkReconnectTitle}\n            </Text>\n          </Stack>\n          <Text className={mergeStyles(moreDetailsStyle(palette, isVideoReady))} aria-live={'assertive'}>\n            {strings.networkReconnectMoreDetails}\n          </Text>\n          {\n            /* @conditional-compile-remove(teams-meeting-conference) */ isTeamsMeeting &&\n              meetingCoordinates &&\n              meetingCoordinates.length > 0 && (\n                <Stack>\n                  <Stack horizontal horizontalAlign=\"center\" verticalAlign=\"center\" className={titleContainerClassName}>\n                    <Text className={titleClassName}>{localeStrings.meetingConferencePhoneInfoModalTitle}</Text>\n                  </Stack>\n                  <Stack horizontal horizontalAlign=\"space-between\" className={phoneInfoInstructionLine}>\n                    <Stack.Item>\n                      <Stack horizontal className={phoneInfoStep}>\n                        <Stack className={infoConnectionLinkStyle(theme)}></Stack>\n                        <Stack.Item className={phoneInfoIcon(theme)}>\n                          <Stack verticalAlign=\"center\" horizontalAlign=\"center\">\n                            <Icon iconName=\"PhoneNumberButton\" className={phoneInfoIconStyle(theme)} />\n                          </Stack>\n                        </Stack.Item>\n                        <Stack.Item>\n                          <Text className={phoneInfoLabelStyle}>\n                            {localeStrings.meetingConferencePhoneInfoModalDialIn}\n                          </Text>\n                        </Stack.Item>\n                      </Stack>\n                    </Stack.Item>\n                    <Stack.Item className={phoneInfoStep}>\n                      {meetingCoordinates.map((phoneNumber, index) => (\n                        <Stack.Item key={index}>\n                          <Text className={phoneInfoTextStyle}>{formatPhoneNumber(phoneNumber.phoneNumber)}</Text>\n                          <Text className={phoneInfoTextStyle}>\n                            {' '}\n                            {formatPhoneNumberInfo(phoneNumber, localeStrings)}\n                          </Text>\n                        </Stack.Item>\n                      ))}\n                    </Stack.Item>\n                  </Stack>\n                  <Stack\n                    horizontal\n                    horizontalAlign=\"space-between\"\n                    verticalAlign=\"center\"\n                    className={phoneInfoInstructionLine}\n                  >\n                    <Stack.Item>\n                      <Stack horizontal>\n                        <Stack className={infoConnectionLinkStyle(theme)}></Stack>\n                        <Stack.Item className={phoneInfoIcon(theme)}>\n                          <Icon iconName=\"DtmfDialpadButton\" className={phoneInfoIconStyle(theme)} />\n                        </Stack.Item>\n                        <Stack.Item>\n                          <Text className={phoneInfoLabelStyle}>\n                            {localeStrings.meetingConferencePhoneInfoModalMeetingId}\n                          </Text>\n                        </Stack.Item>\n                      </Stack>\n                    </Stack.Item>\n                    <Text className={phoneInfoTextStyle}>{meetingCoordinates[0].conferenceId}#</Text>\n                  </Stack>\n                  <Stack\n                    horizontal\n                    horizontalAlign=\"space-between\"\n                    verticalAlign=\"center\"\n                    className={phoneInfoInstructionLine}\n                  >\n                    <Stack horizontal>\n                      <Stack.Item className={phoneInfoIcon(theme)} style={{ marginLeft: _pxToRem(2) }}>\n                        <Icon iconName=\"PhoneInfoWait\" className={phoneInfoIconStyle(theme)} />\n                      </Stack.Item>\n                      <Stack.Item>\n                        <Text className={phoneInfoLabelStyle}>{localeStrings.meetingConferencePhoneInfoModalWait}</Text>\n                      </Stack.Item>\n                    </Stack>\n                  </Stack>\n                </Stack>\n              )\n          }\n        </Stack>\n      }\n      {...handlers}\n    />\n  );\n};\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"NetworkReconnectTile.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/components/NetworkReconnectTile.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React from 'react';\nimport { VideoGalleryStream, useTheme } from '@internal/react-components';\nimport { ExpandedLocalVideoTile } from './ExpandedLocalVideoTile';\nimport { mergeStyles, Stack, Text } from '@fluentui/react';\n/* @conditional-compile-remove(teams-meeting-conference) */\n// eslint-disable-next-line no-restricted-imports\nimport { Icon } from '@fluentui/react';\nimport { useLocale } from '../../localization';\nimport {\n  containerStyle,\n  moreDetailsStyle,\n  titleContainerStyle,\n  titleStyle\n} from '../styles/NetworkReconnectTile.styles';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { CallCompositeIcon } from '../../common/icons';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { getTeamsMeetingCoordinates, getIsTeamsMeeting } from '../selectors/baseSelectors';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { useSelector } from '../hooks/useSelector';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport {\n  phoneInfoTextStyle,\n  phoneInfoIcon,\n  phoneInfoInstructionLine,\n  phoneInfoStep,\n  phoneInfoIconStyle,\n  phoneInfoLabelStyle,\n  titleClassName,\n  titleContainerClassName,\n  infoConnectionLinkStyle\n} from '../../common/styles/TeamsMeetingConferenceInfo.style';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { formatPhoneNumberInfo, formatPhoneNumber, formatPhoneNumberLink } from '@internal/react-components';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { _pxToRem } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { Link } from '@fluentui/react';\n\n/**\n * @private\n */\nexport interface NetworkReconnectTileProps {\n  localParticipantVideoStream: VideoGalleryStream;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  isMobile?: boolean;\n}\n\n/**\n * @private\n */\nexport const NetworkReconnectTile = (props: NetworkReconnectTileProps): JSX.Element => {\n  const videoStream = props.localParticipantVideoStream;\n  const isVideoReady = videoStream?.isAvailable ?? false;\n  const palette = useTheme().palette;\n  const strings = useLocale().strings.call;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const localeStrings = useLocale().component.strings.MeetingConferencePhoneInfo;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const theme = useTheme();\n\n  const handlers = useHandlers(ExpandedLocalVideoTile);\n\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const isTeamsMeeting = useSelector(getIsTeamsMeeting);\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const meetingCoordinates = useSelector(getTeamsMeetingCoordinates);\n\n  return (\n    <ExpandedLocalVideoTile\n      localParticipantVideoStream={props.localParticipantVideoStream}\n      overlayContent={\n        <Stack\n          verticalFill\n          horizontalAlign=\"center\"\n          verticalAlign=\"center\"\n          className={mergeStyles(containerStyle)}\n          aria-atomic\n        >\n          <Stack horizontal className={mergeStyles(titleContainerStyle)}>\n            <CallCompositeIcon\n              iconName=\"NetworkReconnectIcon\"\n              className={mergeStyles(titleStyle(palette, isVideoReady))}\n            />\n            <Text className={mergeStyles(titleStyle(palette, isVideoReady))} aria-live={'assertive'}>\n              {strings.networkReconnectTitle}\n            </Text>\n          </Stack>\n          <Text className={mergeStyles(moreDetailsStyle(palette, isVideoReady))} aria-live={'assertive'}>\n            {strings.networkReconnectMoreDetails}\n          </Text>\n          {\n            /* @conditional-compile-remove(teams-meeting-conference) */ isTeamsMeeting &&\n              meetingCoordinates &&\n              meetingCoordinates.length > 0 && (\n                <Stack>\n                  <Stack horizontal horizontalAlign=\"center\" verticalAlign=\"center\" className={titleContainerClassName}>\n                    <Text className={titleClassName}>{localeStrings.meetingConferencePhoneInfoModalTitle}</Text>\n                  </Stack>\n                  <Stack horizontal horizontalAlign=\"space-between\" className={phoneInfoInstructionLine}>\n                    <Stack className={infoConnectionLinkStyle(theme)}></Stack>\n                    <Stack.Item>\n                      <Stack horizontal className={phoneInfoStep}>\n                        <Stack.Item className={phoneInfoIcon(theme)}>\n                          <Stack verticalAlign=\"center\" horizontalAlign=\"center\">\n                            <Icon iconName=\"PhoneNumberButton\" className={phoneInfoIconStyle(theme)} />\n                          </Stack>\n                        </Stack.Item>\n                        <Stack.Item>\n                          <Text className={phoneInfoLabelStyle}>\n                            {localeStrings.meetingConferencePhoneInfoModalDialIn}\n                          </Text>\n                        </Stack.Item>\n                      </Stack>\n                    </Stack.Item>\n                    <Stack.Item className={phoneInfoStep}>\n                      {meetingCoordinates.map((phoneNumber, index) => (\n                        <Stack.Item key={index}>\n                          <Text className={phoneInfoTextStyle}>\n                            {props.isMobile && (\n                              <Link className={phoneInfoTextStyle} href={formatPhoneNumberLink(phoneNumber)}>\n                                {formatPhoneNumber(phoneNumber.phoneNumber)}\n                              </Link>\n                            )}\n                            {!props.isMobile && (\n                              <Text className={phoneInfoTextStyle}>{formatPhoneNumber(phoneNumber.phoneNumber)}</Text>\n                            )}{' '}\n                            {phoneNumber.isTollFree\n                              ? localeStrings.meetingConferencePhoneInfoModalTollFree\n                              : localeStrings.meetingConferencePhoneInfoModalToll}\n                          </Text>\n                          <br />\n                          <Text className={phoneInfoTextStyle}>\n                            {' '}\n                            {formatPhoneNumberInfo(phoneNumber, localeStrings)}\n                          </Text>\n                        </Stack.Item>\n                      ))}\n                    </Stack.Item>\n                  </Stack>\n                  <Stack\n                    horizontal\n                    horizontalAlign=\"space-between\"\n                    verticalAlign=\"center\"\n                    className={phoneInfoInstructionLine}\n                  >\n                    <Stack.Item>\n                      <Stack horizontal>\n                        <Stack className={infoConnectionLinkStyle(theme)}></Stack>\n                        <Stack.Item className={phoneInfoIcon(theme)}>\n                          <Icon iconName=\"DtmfDialpadButton\" className={phoneInfoIconStyle(theme)} />\n                        </Stack.Item>\n                        <Stack.Item>\n                          <Text className={phoneInfoLabelStyle}>\n                            {localeStrings.meetingConferencePhoneInfoModalMeetingId}\n                          </Text>\n                        </Stack.Item>\n                      </Stack>\n                    </Stack.Item>\n                    <Text className={phoneInfoTextStyle}>{meetingCoordinates[0].conferenceId}#</Text>\n                  </Stack>\n                  <Stack\n                    horizontal\n                    horizontalAlign=\"space-between\"\n                    verticalAlign=\"center\"\n                    className={phoneInfoInstructionLine}\n                  >\n                    <Stack horizontal>\n                      <Stack.Item className={phoneInfoIcon(theme)} style={{ marginLeft: _pxToRem(2) }}>\n                        <Icon iconName=\"PhoneInfoWait\" className={phoneInfoIconStyle(theme)} />\n                      </Stack.Item>\n                      <Stack.Item>\n                        <Text className={phoneInfoLabelStyle}>{localeStrings.meetingConferencePhoneInfoModalWait}</Text>\n                      </Stack.Item>\n                    </Stack>\n                  </Stack>\n                </Stack>\n              )\n          }\n        </Stack>\n      }\n      {...handlers}\n    />\n  );\n};\n"]}
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"SidePane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/SidePane.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1G,OAAO,EAAoB,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAgBlE,eAAe;AACf,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAe,EAAE;;IAC5D,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACpE,MAAM,8BAA8B,GAClC,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,QAAQ,CAAC,eAAe;QAC1C,gBAAgB,CAAC,0BAA0B;QAC3C,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IAC7B,MAAM,0BAA0B,GAAG,8BAA8B,IAAI,CAAC,gBAAgB,CAAC;IAEvF,MAAM,sBAAsB,GAAG,OAAO,CACpC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EACpD,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CACjC,CAAC;IACF,MAAM,UAAU,GAAG,0BAA0B;QAC3C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,KAAK,CAAC,UAAU; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"SidePane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/SidePane.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { useCallback, useMemo } from 'react';\nimport { Stack } from '@fluentui/react';\nimport {\n  containerContextStyles,\n  paneBodyContainer,\n  scrollableContainer,\n  scrollableContainerContents\n} from '../../../common/styles/ParticipantContainer.styles';\nimport { availableSpaceStyles, sidePaneStyles, sidePaneTokens } from '../../../common/styles/Pane.styles';\nimport { SidePaneRenderer, useSidePaneContext } from './SidePaneProvider';\nimport { PeopleAndChatHeader } from '../../../common/TabHeader';\nimport { hiddenStyles } from '../../../common/styles/Pane.styles';\n\n/** @private */\nexport interface SidePaneProps {\n  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n  mobileView?: boolean;\n  maxWidth?: string;\n  minWidth?: string;\n\n  // legacy arguments to be removed in breaking change\n  disablePeopleButton?: boolean;\n  disableChatButton?: boolean;\n  onChatButtonClicked?: () => void;\n  onPeopleButtonClicked?: () => void;\n}\n\n/** @private */\nexport const SidePane = (props: SidePaneProps): JSX.Element => {\n  const { sidePaneRenderer, overrideSidePane } = useSidePaneContext();\n  const renderingHiddenOverrideContent =\n    overrideSidePane?.renderer.contentRenderer &&\n    overrideSidePane.persistRenderingWhenClosed &&\n    !overrideSidePane.isActive;\n  const renderingOnlyHiddenContent = renderingHiddenOverrideContent && !sidePaneRenderer;\n\n  const widthConstrainedStyles = useMemo(\n    () => sidePaneStyles(props.maxWidth, props.minWidth),\n    [props.maxWidth, props.minWidth]\n  );\n  const paneStyles = renderingOnlyHiddenContent\n    ? hiddenStyles\n    : props.mobileView\n      ? availableSpaceStyles\n      : widthConstrainedStyles;\n\n  const Header =\n    (overrideSidePane?.isActive ? overrideSidePane.renderer.headerRenderer : sidePaneRenderer?.headerRenderer) ??\n    EmptyElement;\n\n  /**\n   * Legacy code to support old behavior of showing chat and people tab headers on mobile side pane.\n   * To be removed in breaking change.\n   */\n  const overrideSidePaneId = overrideSidePane?.isActive ? overrideSidePane.renderer.id : undefined;\n  const { updateSidePaneRenderer } = props;\n  const closePane = useCallback(() => {\n    updateSidePaneRenderer(undefined);\n  }, [updateSidePaneRenderer]);\n\n  const LegacyHeader = useMemo((): JSX.Element => {\n    return (\n      <PeopleAndChatHeader\n        onClose={overrideSidePaneId === 'chat' ? props.onChatButtonClicked ?? noop : closePane}\n        activeTab={sidePaneRenderer?.id === 'people' ? 'people' : 'chat'}\n        // legacy arguments to be removed in breaking change:\n        disablePeopleButton={props.disablePeopleButton}\n        disableChatButton={props.disableChatButton}\n        onPeopleButtonClicked={sidePaneRenderer?.id === 'people' ? noop : props.onPeopleButtonClicked}\n        onChatButtonClicked={overrideSidePaneId === 'chat' ? noop : props.onChatButtonClicked}\n      />\n    );\n  }, [\n    overrideSidePaneId,\n    props.onChatButtonClicked,\n    props.onPeopleButtonClicked,\n    props.disablePeopleButton,\n    props.disableChatButton,\n    sidePaneRenderer?.id,\n    closePane\n  ]);\n\n  const HeaderToRender =\n    props.mobileView && (overrideSidePaneId === 'chat' || sidePaneRenderer?.id === 'people') ? LegacyHeader : Header();\n\n  const ContentRender = overrideSidePane?.isActive ? undefined : sidePaneRenderer?.contentRenderer;\n  const OverrideContentRender =\n    overrideSidePane?.isActive || overrideSidePane?.persistRenderingWhenClosed\n      ? overrideSidePane.renderer.contentRenderer\n      : undefined;\n\n  if (!ContentRender && !OverrideContentRender) {\n    return <EmptyElement />;\n  }\n\n  return (\n    <Stack verticalFill grow styles={paneStyles} data-ui-id=\"SidePane\" tokens={props.mobileView ? {} : sidePaneTokens}>\n      {HeaderToRender}\n      <Stack.Item verticalFill grow styles={paneBodyContainer}>\n        <Stack verticalFill styles={scrollableContainer}>\n          {ContentRender && (\n            <Stack.Item verticalFill styles={scrollableContainerContents}>\n              <Stack styles={containerContextStyles}>\n                <ContentRender />\n              </Stack>\n            </Stack.Item>\n          )}\n          {OverrideContentRender && (\n            <Stack.Item\n              verticalFill\n              styles={\n                !overrideSidePane?.isActive && overrideSidePane?.persistRenderingWhenClosed\n                  ? hiddenStyles\n                  : scrollableContainerContents\n              }\n            >\n              <Stack styles={containerContextStyles}>\n                <OverrideContentRender />\n              </Stack>\n            </Stack.Item>\n          )}\n        </Stack>\n      </Stack.Item>\n    </Stack>\n  );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = (): void => {};\nconst EmptyElement = (): JSX.Element => <></>;\n"]}
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"usePeoplePane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { RefObject, useCallback, useEffect, useMemo } from 'react';\nimport { SidePaneRenderer, useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\nimport { PeoplePaneContent } from '../../../common/PeoplePaneContent';\nimport { useLocale } from '../../../localization';\nimport { ParticipantMenuItemsCallback, _DrawerMenuItemProps } from '@internal/react-components';\nimport { AvatarPersonaDataCallback } from '../../../common/AvatarPersona';\nimport { IButton } from '@fluentui/react';\nimport { IContextualMenuItem, IContextualMenuProps } from '@fluentui/react';\n/* @conditional-compile-remove(soft-mute) */\nimport { getRemoteParticipants } from '../../selectors/baseSelectors';\n/* @conditional-compile-remove(soft-mute) */\nimport { useSelector } from '../../hooks/useSelector';\n/* @conditional-compile-remove(soft-mute) */\nimport { Prompt } from '../Prompt';\n\nconst PEOPLE_SIDE_PANE_ID = 'people';\n\n/** @private */\nexport const usePeoplePane = (props: {\n  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n  setDrawerMenuItems: (items: _DrawerMenuItemProps[]) => void;\n  inviteLink?: string;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n  mobileView?: boolean;\n  peopleButtonRef?: RefObject<IButton>;\n  setParticipantActioned?: (userId: string) => void;\n  spotlightedParticipantUserIds?: string[];\n  onStartLocalSpotlight?: () => Promise<void>;\n  onStopLocalSpotlight?: () => Promise<void>;\n  onStartRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n  onStopRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n  onStopAllSpotlight?: () => Promise<void>;\n  maxParticipantsToSpotlight?: number;\n  /* @conditional-compile-remove(soft-mute) */\n  onMuteParticipant?: (userId: string) => Promise<void>;\n  /* @conditional-compile-remove(soft-mute) */\n  onMuteAllRemoteParticipants?: () => Promise<void>;\n  pinnedParticipants?: string[];\n  onPinParticipant?: (userId: string) => void;\n  onUnpinParticipant?: (userId: string) => void;\n  disablePinMenuItem?: boolean;\n}): {\n  openPeoplePane: () => void;\n  closePeoplePane: () => void;\n  isPeoplePaneOpen: boolean;\n} => {\n  const {\n    updateSidePaneRenderer,\n    inviteLink,\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItems,\n    setDrawerMenuItems,\n    mobileView,\n    peopleButtonRef,\n    setParticipantActioned,\n    spotlightedParticipantUserIds,\n    onStartLocalSpotlight,\n    onStopLocalSpotlight,\n    onStartRemoteSpotlight,\n    onStopRemoteSpotlight,\n    onStopAllSpotlight,\n    maxParticipantsToSpotlight,\n    /* @conditional-compile-remove(soft-mute) */\n    onMuteParticipant,\n    pinnedParticipants,\n    onPinParticipant,\n    onUnpinParticipant,\n    disablePinMenuItem,\n    /* @conditional-compile-remove(soft-mute) */\n    onMuteAllRemoteParticipants\n  } = props;\n\n  const closePane = useCallback(() => {\n    updateSidePaneRenderer(undefined);\n    peopleButtonRef?.current?.focus();\n  }, [peopleButtonRef, updateSidePaneRenderer]);\n\n  const localeStrings = useLocale().strings.call;\n  /* @conditional-compile-remove(soft-mute) */\n  const remoteParticipants = useSelector(getRemoteParticipants);\n  /* @conditional-compile-remove(soft-mute) */\n  const [showMuteAllPrompt, setShowMuteAllPrompt] = React.useState(false);\n  /* @conditional-compile-remove(soft-mute) */\n  const muteAllPromptLabels = useMemo(\n    () => ({\n      confirmButtonLabel: localeStrings.muteAllConfirmButtonLabel,\n      heading: localeStrings.muteAllDialogTitle,\n      text: localeStrings.muteAllDialogContent,\n      cancelButtonLabel: localeStrings.muteAllCancelButtonLabel\n    }),\n    [\n      localeStrings.muteAllConfirmButtonLabel,\n      localeStrings.muteAllDialogTitle,\n      localeStrings.muteAllDialogContent,\n      localeStrings.muteAllCancelButtonLabel\n    ]\n  );\n\n  /* @conditional-compile-remove(soft-mute) */\n  const onMuteAllPromptConfirm = useCallback(() => {\n    onMuteAllRemoteParticipants && onMuteAllRemoteParticipants();\n    setShowMuteAllPrompt(false);\n  }, [onMuteAllRemoteParticipants, setShowMuteAllPrompt]);\n\n  const sidePaneHeaderMenuProps: IContextualMenuProps = useMemo(() => {\n    const menuItems: IContextualMenuItem[] = [];\n    if (onStopAllSpotlight && spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0) {\n      menuItems.push({\n        key: 'stopAllSpotlightKey',\n        text: localeStrings.stopAllSpotlightMenuLabel,\n        iconProps: { iconName: 'StopAllSpotlightMenuButton', styles: { root: { lineHeight: 0 } } },\n        onClick: () => {\n          onStopAllSpotlight();\n        },\n        ariaLabel: localeStrings.stopAllSpotlightMenuLabel\n      });\n    }\n    /* @conditional-compile-remove(soft-mute) */\n    if (onMuteAllRemoteParticipants && remoteParticipants) {\n      let isAllMuted = true;\n      if (remoteParticipants) {\n        for (const participant of Object.values(remoteParticipants)) {\n          if (!participant.isMuted) {\n            isAllMuted = false;\n            break;\n          }\n        }\n      }\n      menuItems.push({\n        ['data-ui-id']: 'people-pane-mute-all-remote-participants',\n        key: 'muteAllRemoteParticipants',\n        text: localeStrings.muteAllMenuLabel,\n        iconProps: {\n          iconName: 'ContextualMenuMicMutedIcon',\n          styles: { root: { lineHeight: 0 } }\n        },\n        onClick: () => {\n          setShowMuteAllPrompt(true);\n        },\n        ariaLabel: localeStrings.muteAllMenuLabel,\n        disabled: isAllMuted\n      });\n    }\n    return {\n      items: menuItems\n    };\n  }, [\n    onStopAllSpotlight,\n    spotlightedParticipantUserIds,\n    localeStrings.stopAllSpotlightMenuLabel,\n    /* @conditional-compile-remove(soft-mute) */ localeStrings.muteAllMenuLabel,\n    /* @conditional-compile-remove(soft-mute) */ onMuteAllRemoteParticipants,\n    /* @conditional-compile-remove(soft-mute) */ remoteParticipants,\n    /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt\n  ]);\n\n  const onRenderHeader = useCallback(\n    () => (\n      <SidePaneHeader\n        onClose={closePane}\n        headingText={localeStrings.peoplePaneTitle}\n        dismissSidePaneButtonAriaLabel={localeStrings.dismissSidePaneButtonLabel}\n        mobileView={mobileView ?? false}\n      />\n    ),\n    [mobileView, closePane, localeStrings]\n  );\n\n  const onFetchParticipantMenuItemsForCallComposite = useCallback(\n    (participantId: string, myUserId?: string, defaultMenuItems?: IContextualMenuItem[]): IContextualMenuItem[] => {\n      let isPinned = pinnedParticipants?.includes(participantId);\n      const _defaultMenuItems: IContextualMenuItem[] = defaultMenuItems ?? [];\n      const isSpotlighted = spotlightedParticipantUserIds?.includes(participantId);\n      const isMe = myUserId === participantId;\n      isPinned = isSpotlighted ? false : isPinned;\n      if (isSpotlighted) {\n        const stopSpotlightMenuText = isMe\n          ? localeStrings.stopSpotlightOnSelfMenuLabel\n          : localeStrings.stopSpotlightMenuLabel;\n        const onStopSpotlight = isMe\n          ? onStopLocalSpotlight\n          : onStopRemoteSpotlight\n          ? () => {\n              onStopRemoteSpotlight([participantId]);\n            }\n          : undefined;\n        if (onStopSpotlight && stopSpotlightMenuText) {\n          _defaultMenuItems.push({\n            key: 'stop-spotlight',\n            text: stopSpotlightMenuText,\n            onClick: onStopSpotlight,\n            iconProps: {\n              iconName: 'StopSpotlightContextualMenuItem',\n              styles: { root: { lineHeight: 0 } }\n            },\n            ariaLabel: stopSpotlightMenuText\n          });\n        }\n      } else {\n        const startSpotlightMenuText =\n          spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0\n            ? localeStrings.addSpotlightMenuLabel\n            : localeStrings.startSpotlightMenuLabel;\n        const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight\n          ? spotlightedParticipantUserIds\n            ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight\n            : false\n          : false;\n        const onStartSpotlight = isMe\n          ? onStartLocalSpotlight\n          : onStartRemoteSpotlight\n          ? () => {\n              onStartRemoteSpotlight([participantId]);\n            }\n          : undefined;\n        if (onStartSpotlight && startSpotlightMenuText) {\n          _defaultMenuItems.push({\n            key: 'start-spotlight',\n            text: startSpotlightMenuText,\n            onClick: onStartSpotlight,\n            iconProps: {\n              iconName: 'StartSpotlightContextualMenuItem',\n              styles: { root: { lineHeight: 0 } }\n            },\n            ariaLabel: startSpotlightMenuText,\n            disabled: maxSpotlightedParticipantsReached,\n            title: maxSpotlightedParticipantsReached ? localeStrings.spotlightLimitReachedMenuTitle : undefined\n          });\n        }\n      }\n      /* @conditional-compile-remove(soft-mute) */\n      if (onMuteParticipant && !isMe) {\n        const isMuted = remoteParticipants && remoteParticipants[participantId]?.isMuted;\n        _defaultMenuItems.push({\n          key: 'mute',\n          text: 'Mute',\n          iconProps: {\n            iconName: 'ContextualMenuMicMutedIcon',\n            styles: { root: { lineHeight: 0 } }\n          },\n          onClick: () => {\n            onMuteParticipant(participantId);\n          },\n          'data-ui-id': 'participant-item-mute-participant',\n          ariaLabel: 'Mute',\n          disabled: isMuted\n        });\n      }\n\n      if (!isMe && isPinned !== undefined) {\n        if (isPinned && onUnpinParticipant && localeStrings?.unpinParticipantMenuLabel) {\n          _defaultMenuItems.push({\n            key: 'unpin',\n            text: localeStrings?.unpinParticipantMenuLabel,\n            iconProps: {\n              iconName: 'UnpinParticipant',\n              styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n            },\n            onClick: () => {\n              onUnpinParticipant?.(participantId);\n            },\n            'data-ui-id': 'participant-item-unpin-participant-button',\n            ariaLabel: localeStrings.unpinParticipantMenuItemAriaLabel\n          });\n        }\n        if (!isPinned && onPinParticipant && localeStrings?.pinParticipantMenuLabel) {\n          _defaultMenuItems.push({\n            key: 'pin',\n            text: disablePinMenuItem\n              ? localeStrings.pinParticipantLimitReachedMenuLabel\n              : localeStrings.pinParticipantMenuLabel,\n            iconProps: {\n              iconName: 'PinParticipant',\n              styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n            },\n            onClick: () => {\n              onPinParticipant(participantId);\n            },\n            'data-ui-id': 'participant-item-pin-participant-button',\n            disabled: disablePinMenuItem || isSpotlighted,\n            ariaLabel: localeStrings.pinParticipantMenuItemAriaLabel\n          });\n        }\n      }\n      return onFetchParticipantMenuItems\n        ? onFetchParticipantMenuItems(participantId, myUserId, _defaultMenuItems)\n        : _defaultMenuItems;\n    },\n    [\n      spotlightedParticipantUserIds,\n      onStartLocalSpotlight,\n      onStopLocalSpotlight,\n      onStartRemoteSpotlight,\n      onStopRemoteSpotlight,\n      onFetchParticipantMenuItems,\n      /* @conditional-compile-remove(soft-mute) */\n      onMuteParticipant,\n      /* @conditional-compile-remove(soft-mute) */\n      remoteParticipants,\n      localeStrings.stopSpotlightMenuLabel,\n      localeStrings.stopSpotlightOnSelfMenuLabel,\n      localeStrings.addSpotlightMenuLabel,\n      localeStrings.startSpotlightMenuLabel,\n      localeStrings.spotlightLimitReachedMenuTitle,\n      maxParticipantsToSpotlight,\n      pinnedParticipants,\n      onPinParticipant,\n      onUnpinParticipant,\n      disablePinMenuItem,\n      localeStrings.pinParticipantMenuLabel,\n      localeStrings.pinParticipantLimitReachedMenuLabel,\n      localeStrings.unpinParticipantMenuLabel,\n      localeStrings.unpinParticipantMenuItemAriaLabel,\n      localeStrings.pinParticipantMenuItemAriaLabel\n    ]\n  );\n\n  const onRenderContent = useCallback((): JSX.Element => {\n    return (\n      <>\n        {\n          /* @conditional-compile-remove(soft-mute) */\n          <Prompt\n            {...muteAllPromptLabels}\n            styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n            onConfirm={() => onMuteAllPromptConfirm()}\n            isOpen={showMuteAllPrompt}\n            onCancel={() => setShowMuteAllPrompt(false)}\n          />\n        }\n        <PeoplePaneContent\n          inviteLink={inviteLink}\n          onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n          onFetchParticipantMenuItems={onFetchParticipantMenuItemsForCallComposite}\n          setDrawerMenuItems={setDrawerMenuItems}\n          mobileView={mobileView}\n          setParticipantActioned={setParticipantActioned}\n          participantListHeadingMoreButtonProps={sidePaneHeaderMenuProps}\n          pinnedParticipants={pinnedParticipants}\n        />\n      </>\n    );\n  }, [\n    inviteLink,\n    mobileView,\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItemsForCallComposite,\n    setDrawerMenuItems,\n    setParticipantActioned,\n    sidePaneHeaderMenuProps,\n    pinnedParticipants,\n    /* @conditional-compile-remove(soft-mute) */ showMuteAllPrompt,\n    /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt,\n    /* @conditional-compile-remove(soft-mute) */ muteAllPromptLabels,\n    /* @conditional-compile-remove(soft-mute) */ onMuteAllPromptConfirm\n  ]);\n\n  const sidePaneRenderer: SidePaneRenderer = useMemo(\n    () => ({\n      headerRenderer: onRenderHeader,\n      contentRenderer: onRenderContent,\n      id: PEOPLE_SIDE_PANE_ID\n    }),\n    [onRenderContent, onRenderHeader]\n  );\n\n  const openPane = useCallback(() => {\n    updateSidePaneRenderer(sidePaneRenderer);\n  }, [sidePaneRenderer, updateSidePaneRenderer]);\n\n  const isOpen = useIsParticularSidePaneOpen(PEOPLE_SIDE_PANE_ID);\n\n  // Update pane renderer if it is open and the openPane dep changes\n  useEffect(() => {\n    if (isOpen) {\n      openPane();\n    }\n  }, [isOpen, openPane]);\n\n  return { openPeoplePane: openPane, closePeoplePane: closePane, isPeoplePaneOpen: isOpen };\n};\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"usePeoplePane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { RefObject, useCallback, useEffect, useMemo } from 'react';\nimport { SidePaneRenderer, useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\nimport { PeoplePaneContent } from '../../../common/PeoplePaneContent';\nimport { useLocale } from '../../../localization';\nimport { ParticipantMenuItemsCallback, _DrawerMenuItemProps } from '@internal/react-components';\nimport { AvatarPersonaDataCallback } from '../../../common/AvatarPersona';\nimport { IButton } from '@fluentui/react';\nimport { IContextualMenuItem, IContextualMenuProps } from '@fluentui/react';\n/* @conditional-compile-remove(soft-mute) */\nimport { getRemoteParticipants } from '../../selectors/baseSelectors';\n/* @conditional-compile-remove(soft-mute) */\nimport { useSelector } from '../../hooks/useSelector';\n/* @conditional-compile-remove(soft-mute) */\nimport { Prompt } from '../Prompt';\n\nconst PEOPLE_SIDE_PANE_ID = 'people';\n\n/** @private */\nexport const usePeoplePane = (props: {\n  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n  setDrawerMenuItems: (items: _DrawerMenuItemProps[]) => void;\n  inviteLink?: string;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n  mobileView?: boolean;\n  peopleButtonRef?: RefObject<IButton>;\n  setParticipantActioned?: (userId: string) => void;\n  spotlightedParticipantUserIds?: string[];\n  onStartLocalSpotlight?: () => Promise<void>;\n  onStopLocalSpotlight?: () => Promise<void>;\n  onStartRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n  onStopRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n  onStopAllSpotlight?: () => Promise<void>;\n  maxParticipantsToSpotlight?: number;\n  /* @conditional-compile-remove(soft-mute) */\n  onMuteParticipant?: (userId: string) => Promise<void>;\n  /* @conditional-compile-remove(soft-mute) */\n  onMuteAllRemoteParticipants?: () => Promise<void>;\n  pinnedParticipants?: string[];\n  onPinParticipant?: (userId: string) => void;\n  onUnpinParticipant?: (userId: string) => void;\n  disablePinMenuItem?: boolean;\n}): {\n  openPeoplePane: () => void;\n  closePeoplePane: () => void;\n  isPeoplePaneOpen: boolean;\n} => {\n  const {\n    updateSidePaneRenderer,\n    inviteLink,\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItems,\n    setDrawerMenuItems,\n    mobileView,\n    peopleButtonRef,\n    setParticipantActioned,\n    spotlightedParticipantUserIds,\n    onStartLocalSpotlight,\n    onStopLocalSpotlight,\n    onStartRemoteSpotlight,\n    onStopRemoteSpotlight,\n    onStopAllSpotlight,\n    maxParticipantsToSpotlight,\n    /* @conditional-compile-remove(soft-mute) */\n    onMuteParticipant,\n    pinnedParticipants,\n    onPinParticipant,\n    onUnpinParticipant,\n    disablePinMenuItem,\n    /* @conditional-compile-remove(soft-mute) */\n    onMuteAllRemoteParticipants\n  } = props;\n\n  const closePane = useCallback(() => {\n    updateSidePaneRenderer(undefined);\n    peopleButtonRef?.current?.focus();\n  }, [peopleButtonRef, updateSidePaneRenderer]);\n\n  const localeStrings = useLocale().strings.call;\n  /* @conditional-compile-remove(soft-mute) */\n  const remoteParticipants = useSelector(getRemoteParticipants);\n  /* @conditional-compile-remove(soft-mute) */\n  const [showMuteAllPrompt, setShowMuteAllPrompt] = React.useState(false);\n  /* @conditional-compile-remove(soft-mute) */\n  const muteAllPromptLabels = useMemo(\n    () => ({\n      confirmButtonLabel: localeStrings.muteAllConfirmButtonLabel,\n      heading: localeStrings.muteAllDialogTitle,\n      text: localeStrings.muteAllDialogContent,\n      cancelButtonLabel: localeStrings.muteAllCancelButtonLabel\n    }),\n    [\n      localeStrings.muteAllConfirmButtonLabel,\n      localeStrings.muteAllDialogTitle,\n      localeStrings.muteAllDialogContent,\n      localeStrings.muteAllCancelButtonLabel\n    ]\n  );\n\n  /* @conditional-compile-remove(soft-mute) */\n  const onMuteAllPromptConfirm = useCallback(() => {\n    onMuteAllRemoteParticipants && onMuteAllRemoteParticipants();\n    setShowMuteAllPrompt(false);\n  }, [onMuteAllRemoteParticipants, setShowMuteAllPrompt]);\n\n  const sidePaneHeaderMenuProps: IContextualMenuProps = useMemo(() => {\n    const menuItems: IContextualMenuItem[] = [];\n    if (onStopAllSpotlight && spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0) {\n      menuItems.push({\n        key: 'stopAllSpotlightKey',\n        text: localeStrings.stopAllSpotlightMenuLabel,\n        iconProps: { iconName: 'StopAllSpotlightMenuButton', styles: { root: { lineHeight: 0 } } },\n        onClick: () => {\n          onStopAllSpotlight();\n        },\n        ariaLabel: localeStrings.stopAllSpotlightMenuLabel\n      });\n    }\n    /* @conditional-compile-remove(soft-mute) */\n    if (onMuteAllRemoteParticipants && remoteParticipants) {\n      let isAllMuted = true;\n      if (remoteParticipants) {\n        for (const participant of Object.values(remoteParticipants)) {\n          if (!participant.isMuted) {\n            isAllMuted = false;\n            break;\n          }\n        }\n      }\n      menuItems.push({\n        ['data-ui-id']: 'people-pane-mute-all-remote-participants',\n        key: 'muteAllRemoteParticipants',\n        text: localeStrings.muteAllMenuLabel,\n        iconProps: {\n          iconName: 'ContextualMenuMicMutedIcon',\n          styles: { root: { lineHeight: 0 } }\n        },\n        onClick: () => {\n          setShowMuteAllPrompt(true);\n        },\n        ariaLabel: localeStrings.muteAllMenuLabel,\n        disabled: isAllMuted\n      });\n    }\n    return {\n      items: menuItems\n    };\n  }, [\n    onStopAllSpotlight,\n    spotlightedParticipantUserIds,\n    localeStrings.stopAllSpotlightMenuLabel,\n    /* @conditional-compile-remove(soft-mute) */ localeStrings.muteAllMenuLabel,\n    /* @conditional-compile-remove(soft-mute) */ onMuteAllRemoteParticipants,\n    /* @conditional-compile-remove(soft-mute) */ remoteParticipants,\n    /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt\n  ]);\n\n  const onRenderHeader = useCallback(\n    () => (\n      <SidePaneHeader\n        onClose={closePane}\n        headingText={localeStrings.peoplePaneTitle}\n        dismissSidePaneButtonAriaLabel={localeStrings.dismissSidePaneButtonLabel}\n        mobileView={mobileView ?? false}\n      />\n    ),\n    [mobileView, closePane, localeStrings]\n  );\n\n  const onFetchParticipantMenuItemsForCallComposite = useCallback(\n    (participantId: string, myUserId?: string, defaultMenuItems?: IContextualMenuItem[]): IContextualMenuItem[] => {\n      let isPinned = pinnedParticipants?.includes(participantId);\n      const _defaultMenuItems: IContextualMenuItem[] = defaultMenuItems ?? [];\n      const isSpotlighted = spotlightedParticipantUserIds?.includes(participantId);\n      const isMe = myUserId === participantId;\n      isPinned = isSpotlighted ? false : isPinned;\n      if (isSpotlighted) {\n        const stopSpotlightMenuText = isMe\n          ? localeStrings.stopSpotlightOnSelfMenuLabel\n          : localeStrings.stopSpotlightMenuLabel;\n        const onStopSpotlight = isMe\n          ? onStopLocalSpotlight\n          : onStopRemoteSpotlight\n            ? () => {\n                onStopRemoteSpotlight([participantId]);\n              }\n            : undefined;\n        if (onStopSpotlight && stopSpotlightMenuText) {\n          _defaultMenuItems.push({\n            key: 'stop-spotlight',\n            text: stopSpotlightMenuText,\n            onClick: onStopSpotlight,\n            iconProps: {\n              iconName: 'StopSpotlightContextualMenuItem',\n              styles: { root: { lineHeight: 0 } }\n            },\n            ariaLabel: stopSpotlightMenuText\n          });\n        }\n      } else {\n        const startSpotlightMenuText =\n          spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0\n            ? localeStrings.addSpotlightMenuLabel\n            : localeStrings.startSpotlightMenuLabel;\n        const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight\n          ? spotlightedParticipantUserIds\n            ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight\n            : false\n          : false;\n        const onStartSpotlight = isMe\n          ? onStartLocalSpotlight\n          : onStartRemoteSpotlight\n            ? () => {\n                onStartRemoteSpotlight([participantId]);\n              }\n            : undefined;\n        if (onStartSpotlight && startSpotlightMenuText) {\n          _defaultMenuItems.push({\n            key: 'start-spotlight',\n            text: startSpotlightMenuText,\n            onClick: onStartSpotlight,\n            iconProps: {\n              iconName: 'StartSpotlightContextualMenuItem',\n              styles: { root: { lineHeight: 0 } }\n            },\n            ariaLabel: startSpotlightMenuText,\n            disabled: maxSpotlightedParticipantsReached,\n            title: maxSpotlightedParticipantsReached ? localeStrings.spotlightLimitReachedMenuTitle : undefined\n          });\n        }\n      }\n      /* @conditional-compile-remove(soft-mute) */\n      if (onMuteParticipant && !isMe) {\n        const isMuted = remoteParticipants && remoteParticipants[participantId]?.isMuted;\n        _defaultMenuItems.push({\n          key: 'mute',\n          text: 'Mute',\n          iconProps: {\n            iconName: 'ContextualMenuMicMutedIcon',\n            styles: { root: { lineHeight: 0 } }\n          },\n          onClick: () => {\n            onMuteParticipant(participantId);\n          },\n          'data-ui-id': 'participant-item-mute-participant',\n          ariaLabel: 'Mute',\n          disabled: isMuted\n        });\n      }\n\n      if (!isMe && isPinned !== undefined) {\n        if (isPinned && onUnpinParticipant && localeStrings?.unpinParticipantMenuLabel) {\n          _defaultMenuItems.push({\n            key: 'unpin',\n            text: localeStrings?.unpinParticipantMenuLabel,\n            iconProps: {\n              iconName: 'UnpinParticipant',\n              styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n            },\n            onClick: () => {\n              onUnpinParticipant?.(participantId);\n            },\n            'data-ui-id': 'participant-item-unpin-participant-button',\n            ariaLabel: localeStrings.unpinParticipantMenuItemAriaLabel\n          });\n        }\n        if (!isPinned && onPinParticipant && localeStrings?.pinParticipantMenuLabel) {\n          _defaultMenuItems.push({\n            key: 'pin',\n            text: disablePinMenuItem\n              ? localeStrings.pinParticipantLimitReachedMenuLabel\n              : localeStrings.pinParticipantMenuLabel,\n            iconProps: {\n              iconName: 'PinParticipant',\n              styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n            },\n            onClick: () => {\n              onPinParticipant(participantId);\n            },\n            'data-ui-id': 'participant-item-pin-participant-button',\n            disabled: disablePinMenuItem || isSpotlighted,\n            ariaLabel: localeStrings.pinParticipantMenuItemAriaLabel\n          });\n        }\n      }\n      return onFetchParticipantMenuItems\n        ? onFetchParticipantMenuItems(participantId, myUserId, _defaultMenuItems)\n        : _defaultMenuItems;\n    },\n    [\n      spotlightedParticipantUserIds,\n      onStartLocalSpotlight,\n      onStopLocalSpotlight,\n      onStartRemoteSpotlight,\n      onStopRemoteSpotlight,\n      onFetchParticipantMenuItems,\n      /* @conditional-compile-remove(soft-mute) */\n      onMuteParticipant,\n      /* @conditional-compile-remove(soft-mute) */\n      remoteParticipants,\n      localeStrings.stopSpotlightMenuLabel,\n      localeStrings.stopSpotlightOnSelfMenuLabel,\n      localeStrings.addSpotlightMenuLabel,\n      localeStrings.startSpotlightMenuLabel,\n      localeStrings.spotlightLimitReachedMenuTitle,\n      maxParticipantsToSpotlight,\n      pinnedParticipants,\n      onPinParticipant,\n      onUnpinParticipant,\n      disablePinMenuItem,\n      localeStrings.pinParticipantMenuLabel,\n      localeStrings.pinParticipantLimitReachedMenuLabel,\n      localeStrings.unpinParticipantMenuLabel,\n      localeStrings.unpinParticipantMenuItemAriaLabel,\n      localeStrings.pinParticipantMenuItemAriaLabel\n    ]\n  );\n\n  const onRenderContent = useCallback((): JSX.Element => {\n    return (\n      <>\n        {\n          /* @conditional-compile-remove(soft-mute) */\n          <Prompt\n            {...muteAllPromptLabels}\n            styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n            onConfirm={() => onMuteAllPromptConfirm()}\n            isOpen={showMuteAllPrompt}\n            onCancel={() => setShowMuteAllPrompt(false)}\n          />\n        }\n        <PeoplePaneContent\n          inviteLink={inviteLink}\n          onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n          onFetchParticipantMenuItems={onFetchParticipantMenuItemsForCallComposite}\n          setDrawerMenuItems={setDrawerMenuItems}\n          mobileView={mobileView}\n          setParticipantActioned={setParticipantActioned}\n          participantListHeadingMoreButtonProps={sidePaneHeaderMenuProps}\n          pinnedParticipants={pinnedParticipants}\n        />\n      </>\n    );\n  }, [\n    inviteLink,\n    mobileView,\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItemsForCallComposite,\n    setDrawerMenuItems,\n    setParticipantActioned,\n    sidePaneHeaderMenuProps,\n    pinnedParticipants,\n    /* @conditional-compile-remove(soft-mute) */ showMuteAllPrompt,\n    /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt,\n    /* @conditional-compile-remove(soft-mute) */ muteAllPromptLabels,\n    /* @conditional-compile-remove(soft-mute) */ onMuteAllPromptConfirm\n  ]);\n\n  const sidePaneRenderer: SidePaneRenderer = useMemo(\n    () => ({\n      headerRenderer: onRenderHeader,\n      contentRenderer: onRenderContent,\n      id: PEOPLE_SIDE_PANE_ID\n    }),\n    [onRenderContent, onRenderHeader]\n  );\n\n  const openPane = useCallback(() => {\n    updateSidePaneRenderer(sidePaneRenderer);\n  }, [sidePaneRenderer, updateSidePaneRenderer]);\n\n  const isOpen = useIsParticularSidePaneOpen(PEOPLE_SIDE_PANE_ID);\n\n  // Update pane renderer if it is open and the openPane dep changes\n  useEffect(() => {\n    if (isOpen) {\n      openPane();\n    }\n  }, [isOpen, openPane]);\n\n  return { openPeoplePane: openPane, closePeoplePane: closePane, isPeoplePaneOpen: isOpen };\n};\n"]}
         
     | 
| 
         @@ -2,13 +2,12 @@ import React from 'react'; 
     | 
|
| 
       2 
2 
     | 
    
         
             
            import { SidePaneRenderer } from './SidePaneProvider';
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { ActiveErrorMessage } from "../../../../../../react-components/src";
         
     | 
| 
       4 
4 
     | 
    
         
             
            import { IButton } from '@fluentui/react';
         
     | 
| 
       5 
     | 
    
         
            -
            import { ActiveNotification } from "../../../../../../react-components/src";
         
     | 
| 
       6 
5 
     | 
    
         
             
            /** @private */
         
     | 
| 
       7 
6 
     | 
    
         
             
            export declare const VIDEO_EFFECTS_SIDE_PANE_ID = "videoeffects";
         
     | 
| 
       8 
7 
     | 
    
         
             
            /** @private */
         
     | 
| 
       9 
     | 
    
         
            -
            export declare const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM =  
     | 
| 
      
 8 
     | 
    
         
            +
            export declare const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 17.5;
         
     | 
| 
       10 
9 
     | 
    
         
             
            /** @private */
         
     | 
| 
       11 
     | 
    
         
            -
            export declare const useVideoEffectsPane: (updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void, mobileView: boolean, latestErrors: ActiveErrorMessage[] 
     | 
| 
      
 10 
     | 
    
         
            +
            export declare const useVideoEffectsPane: (updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void, mobileView: boolean, latestErrors: ActiveErrorMessage[], onDismissError: (error: ActiveErrorMessage) => void, cameraButtonRef?: React.RefObject<IButton>) => {
         
     | 
| 
       12 
11 
     | 
    
         
             
                openVideoEffectsPane: () => void;
         
     | 
| 
       13 
12 
     | 
    
         
             
                closeVideoEffectsPane: () => void;
         
     | 
| 
       14 
13 
     | 
    
         
             
                toggleVideoEffectsPane: () => void;
         
     | 
| 
         @@ -8,7 +8,7 @@ import { VideoEffectsPaneContent } from '../../../common/VideoEffectsPane'; 
     | 
|
| 
       8 
8 
     | 
    
         
             
            /** @private */
         
     | 
| 
       9 
9 
     | 
    
         
             
            export const VIDEO_EFFECTS_SIDE_PANE_ID = 'videoeffects';
         
     | 
| 
       10 
10 
     | 
    
         
             
            /** @private */
         
     | 
| 
       11 
     | 
    
         
            -
            export const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM =  
     | 
| 
      
 11 
     | 
    
         
            +
            export const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 17.5;
         
     | 
| 
       12 
12 
     | 
    
         
             
            /** @private */
         
     | 
| 
       13 
13 
     | 
    
         
             
            export const useVideoEffectsPane = (updateSidePaneRenderer, mobileView, latestErrors, onDismissError, cameraButtonRef) => {
         
     | 
| 
       14 
14 
     | 
    
         
             
                const closePane = useCallback(() => {
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"useVideoEffectsPane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAoB,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"useVideoEffectsPane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAoB,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAI3E,eAAe;AACf,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC;AAEzD,eAAe;AACf,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD,eAAe;AACf,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,sBAAwE,EACxE,UAAmB,EACnB,YAAkC,EAClC,cAAmD,EACnD,eAA0C,EAM1C,EAAE;IACF,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;;QACjC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAClC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,0CAAE,KAAK,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;;QACtC,OAAO,CACL,oBAAC,cAAc,IACb,OAAO,EAAE,SAAS,EAClB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EACtD,8BAA8B,EAC5B,MAAA,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,mCAC9C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,0BAA0B,mCACtD,OAAO,EAET,UAAU,EAAE,UAAU,GACtB,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE5C,MAAM,sBAAsB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC;IACvG,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,EAAyB,EAAE,EAAE,CAAC,CAAC;IAEhF,MAAM,eAAe,GAAG,WAAW,CAAC,GAAgB,EAAE;QACpD,OAAO,CACL,oBAAC,uBAAuB,IACtB,cAAc,EAAE,cAAc,EAC9B,sBAAsB,EAAE,sBAAsB,EAC9C,uBAAuB,EAAE,GAAG,EAAE;gBAC5B,oFAAoF;gBAEpF,sBAAsB,KAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,sBAAsB,CAAC,CAAA,CAAC;YACrE,CAAC,EACD,iBAAiB,EAAE,iBAAiB,GACpC,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,sBAAsB,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEhE,MAAM,gBAAgB,GAAqB,OAAO,CAChD,GAAG,EAAE,CAAC,CAAC;QACL,cAAc,EAAE,cAAc;QAC9B,eAAe,EAAE,eAAe;QAChC,EAAE,EAAE,0BAA0B;KAC/B,CAAC,EACF,CAAC,eAAe,EAAE,cAAc,CAAC,CAClC,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QAEzC,wFAAwF;QACxF,UAAU,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,iBAAiB,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,2BAA2B,CAAC,0BAA0B,CAAC,CAAC;IAEvE,kEAAkE;IAClE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAElC,OAAO;QACL,oBAAoB,EAAE,QAAQ;QAC9B,qBAAqB,EAAE,SAAS;QAChC,sBAAsB,EAAE,UAAU;QAClC,sBAAsB,EAAE,MAAM;KAC/B,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { createRef, useCallback, useEffect, useMemo } from 'react';\nimport { SidePaneRenderer, useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\n\nimport { useLocale } from '../../../localization';\nimport { VideoEffectsPaneContent } from '../../../common/VideoEffectsPane';\nimport { ActiveErrorMessage } from '@internal/react-components';\nimport { IButton } from '@fluentui/react';\n\n/** @private */\nexport const VIDEO_EFFECTS_SIDE_PANE_ID = 'videoeffects';\n\n/** @private */\nexport const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 17.5;\n\n/** @private */\nexport const useVideoEffectsPane = (\n  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void,\n  mobileView: boolean,\n  latestErrors: ActiveErrorMessage[],\n  onDismissError: (error: ActiveErrorMessage) => void,\n  cameraButtonRef?: React.RefObject<IButton>\n): {\n  openVideoEffectsPane: () => void;\n  closeVideoEffectsPane: () => void;\n  toggleVideoEffectsPane: () => void;\n  isVideoEffectsPaneOpen: boolean;\n} => {\n  const closePane = useCallback(() => {\n    updateSidePaneRenderer(undefined);\n    cameraButtonRef?.current?.focus();\n  }, [cameraButtonRef, updateSidePaneRenderer]);\n\n  const locale = useLocale();\n\n  const onRenderHeader = useCallback(() => {\n    return (\n      <SidePaneHeader\n        onClose={closePane}\n        headingText={locale.strings.call.videoEffectsPaneTitle}\n        dismissSidePaneButtonAriaLabel={\n          locale.strings.call.dismissSidePaneButtonLabel ??\n          locale.strings.callWithChat.dismissSidePaneButtonLabel ??\n          'Close'\n        }\n        mobileView={mobileView}\n      />\n    );\n  }, [closePane, locale.strings, mobileView]);\n\n  const latestVideoEffectError = latestErrors.find((error) => error.type === 'unableToStartVideoEffect');\n  const updateFocusHandle = useMemo(() => createRef<{ focus: () => void }>(), []);\n\n  const onRenderContent = useCallback((): JSX.Element => {\n    return (\n      <VideoEffectsPaneContent\n        onDismissError={onDismissError}\n        activeVideoEffectError={latestVideoEffectError}\n        activeVideoEffectChange={() => {\n          // Clear any existing video effects error when the user clicks on a new video effect\n\n          latestVideoEffectError && onDismissError?.(latestVideoEffectError);\n        }}\n        updateFocusHandle={updateFocusHandle}\n      />\n    );\n  }, [latestVideoEffectError, onDismissError, updateFocusHandle]);\n\n  const sidePaneRenderer: SidePaneRenderer = useMemo(\n    () => ({\n      headerRenderer: onRenderHeader,\n      contentRenderer: onRenderContent,\n      id: VIDEO_EFFECTS_SIDE_PANE_ID\n    }),\n    [onRenderContent, onRenderHeader]\n  );\n\n  const openPane = useCallback(() => {\n    updateSidePaneRenderer(sidePaneRenderer);\n\n    // Run in a setTimeout as it must be called only once the imperative handle is available\n    setTimeout(() => updateFocusHandle.current?.focus(), 0);\n  }, [sidePaneRenderer, updateSidePaneRenderer, updateFocusHandle]);\n\n  const isOpen = useIsParticularSidePaneOpen(VIDEO_EFFECTS_SIDE_PANE_ID);\n\n  // Update pane renderer if it is open and the openPane dep changes\n  useEffect(() => {\n    if (isOpen) {\n      openPane();\n    }\n  }, [isOpen, openPane]);\n\n  const togglePane = useCallback(() => {\n    if (isOpen) {\n      closePane();\n    } else {\n      openPane();\n    }\n  }, [closePane, isOpen, openPane]);\n\n  return {\n    openVideoEffectsPane: openPane,\n    closeVideoEffectsPane: closePane,\n    toggleVideoEffectsPane: togglePane,\n    isVideoEffectsPaneOpen: isOpen\n  };\n};\n\n/**\n * Active video effect with timestamp.\n *\n * @private\n */\nexport interface ActiveVideoEffect {\n  /**\n   * Type of video effect that is active.\n   */\n  type: 'blur' | 'replacement';\n  /**\n   * The latest timestamp when this effect was activated.\n   *\n   */\n  timestamp: Date;\n}\n"]}
         
     | 
| 
         @@ -8,7 +8,6 @@ import { CallCompositeOptions } from '../CallComposite'; 
     | 
|
| 
       8 
8 
     | 
    
         
             
            import { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';
         
     | 
| 
       9 
9 
     | 
    
         
             
            import { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';
         
     | 
| 
       10 
10 
     | 
    
         
             
            import { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';
         
     | 
| 
       11 
     | 
    
         
            -
            import { BadNetworkQualityBannerProps } from '../components/BadNetworkQualityNotificationBar';
         
     | 
| 
       12 
11 
     | 
    
         
             
            /**
         
     | 
| 
       13 
12 
     | 
    
         
             
             * @private
         
     | 
| 
       14 
13 
     | 
    
         
             
             */
         
     | 
| 
         @@ -33,7 +32,6 @@ export interface CallPageProps { 
     | 
|
| 
       33 
32 
     | 
    
         
             
                setPinnedParticipants?: (pinnedParticipants: string[]) => void;
         
     | 
| 
       34 
33 
     | 
    
         
             
                compositeAudioContext?: AudioContext;
         
     | 
| 
       35 
34 
     | 
    
         
             
                disableAutoShowDtmfDialer?: boolean;
         
     | 
| 
       36 
     | 
    
         
            -
                badNetworkQualityBannerProps?: BadNetworkQualityBannerProps;
         
     | 
| 
       37 
35 
     | 
    
         
             
            }
         
     | 
| 
       38 
36 
     | 
    
         
             
            /**
         
     | 
| 
       39 
37 
     | 
    
         
             
             * @private
         
     | 
| 
         @@ -66,9 +66,8 @@ export const CallPage = (props) => { 
     | 
|
| 
       66 
66 
     | 
    
         
             
                            onFetchParticipantMenuItems: onFetchParticipantMenuItems,
         
     | 
| 
       67 
67 
     | 
    
         
             
                            options: callControlOptions,
         
     | 
| 
       68 
68 
     | 
    
         
             
                            increaseFlyoutItemSize: mobileView
         
     | 
| 
       69 
     | 
    
         
            -
                        }, onFetchAvatarPersonaData: onFetchAvatarPersonaData, mobileView: mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? (isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (onRenderGalleryContentTrampoline()) : (React.createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps 
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                        badNetworkQualityBannerProps: props.badNetworkQualityBannerProps }),
         
     | 
| 
      
 69 
     | 
    
         
            +
                        }, onFetchAvatarPersonaData: onFetchAvatarPersonaData, mobileView: mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? (isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (onRenderGalleryContentTrampoline()) : (React.createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps, { 
         
     | 
| 
      
 70 
     | 
    
         
            +
                            /* /* @conditional-compile-remove(teams-meeting-conference) */ isMobile: mobileView })))) : (React.createElement(React.Fragment, null)), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: onCloseChatPane, dataUiId: 'call-page', latestErrors: props.latestErrors, onDismissError: props.onDismissError, onUserSetOverflowGalleryPositionChange: onSetUserSetOverflowGalleryPosition, onUserSetGalleryLayoutChange: onUserSetGalleryLayoutChange, userSetGalleryLayout: galleryLayout, capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent, setIsPromptOpen: setIsPromptOpen, setPromptProps: setPromptProps, hideSpotlightButtons: (_b = options === null || options === void 0 ? void 0 : options.spotlight) === null || _b === void 0 ? void 0 : _b.hideSpotlightButtons, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants }),
         
     | 
| 
       72 
71 
     | 
    
         
             
                    React.createElement(Prompt, Object.assign({ isOpen: isPromptOpen, onDismiss: () => setIsPromptOpen(false) }, promptProps))));
         
     | 
| 
       73 
72 
     | 
    
         
             
            };
         
     | 
| 
       74 
73 
     | 
    
         
             
            /**
         
     |