@azure/communication-react 1.22.0-alpha-202412130018 → 1.22.0-alpha-202412170017
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 +88 -2
- package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-4-vK4ca8.js → ChatMessageComponentAsRichTextEditBox-BgVWz6LK.js} +2 -2
- package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-4-vK4ca8.js.map → ChatMessageComponentAsRichTextEditBox-BgVWz6LK.js.map} +1 -1
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-BbHPiZkn.js → RichTextSendBoxWrapper-D0RkwoOI.js} +2 -2
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-BbHPiZkn.js.map → RichTextSendBoxWrapper-D0RkwoOI.js.map} +1 -1
- package/dist/dist-cjs/communication-react/{index-Cr6OFtuG.js → index-CpnFA8og.js} +254 -193
- package/dist/dist-cjs/communication-react/index-CpnFA8og.js.map +1 -0
- package/dist/dist-cjs/communication-react/index.js +2 -1
- package/dist/dist-cjs/communication-react/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/captionsSelector.d.ts +4 -4
- package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js +2 -2
- package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts +3 -3
- package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +4 -2
- 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/communication-react/src/index.d.ts +3 -1
- package/dist/dist-esm/communication-react/src/index.js +1 -0
- package/dist/dist-esm/communication-react/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ImageOverlay.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/ImageOverlay.js +2 -0
- package/dist/dist-esm/react-components/src/components/ImageOverlay.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/StartCaptionsButton.d.ts +7 -7
- package/dist/dist-esm/react-components/src/components/StartCaptionsButton.js +6 -3
- package/dist/dist-esm/react-components/src/components/StartCaptionsButton.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +3 -1
- 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 +8 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +8 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +4 -4
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.d.ts +2 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js +29 -12
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js +7 -10
- package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js +5 -9
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.d.ts +5 -0
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js +8 -7
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js.map +1 -1
- package/package.json +1 -1
- package/dist/dist-cjs/communication-react/index-Cr6OFtuG.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CallArrangement.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/components/CallArrangement.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { IButton, mergeStyles, Stack } from '@fluentui/react';\nimport { _isInCall, _isInLobbyOrConnecting } from '@internal/calling-component-bindings';\nimport {\n _ComplianceBanner,\n _ComplianceBannerProps,\n _DrawerMenu,\n _DrawerMenuItemProps,\n _useContainerHeight,\n _useContainerWidth,\n ActiveErrorMessage,\n ErrorBarProps,\n useTheme\n} from '@internal/react-components';\nimport { ActiveNotification, NotificationStack } from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport { VideoGallery } from '@internal/react-components';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { useEffect } from 'react';\nimport { useCallback } from 'react';\nimport { AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { CallingCaptionsBanner } from '../../common/CallingCaptionsBanner';\nimport { containerDivStyles } from '../../common/ContainerRectProps';\nimport { compositeMinWidthRem } from '../../common/styles/Composite.styles';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { CallControls, CallControlsProps } from '../components/CallControls';\nimport { CommonCallControlBar } from '../../common/ControlBar/CommonCallControlBar';\nimport {\n callArrangementContainerStyles,\n notificationsContainerStyles,\n containerStyleDesktop,\n containerStyleMobile,\n mediaGalleryContainerStyles,\n galleryParentContainerStyles,\n bannerNotificationStyles,\n CONTROL_BAR_Z_INDEX,\n DRAWER_Z_INDEX\n} from '../styles/CallPage.styles';\nimport { notificationStackStyles } from '../styles/CallPage.styles';\nimport { MutedNotificationProps } from './MutedNotification';\nimport { CallAdapter } from '../adapter';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { CallControlOptions } from '../types/CallControlOptions';\nimport { PreparedMoreDrawer } from '../../common/Drawer/PreparedMoreDrawer';\nimport {\n getCapabilites,\n getIsTeamsMeeting,\n getReactionResources,\n getRemoteParticipants,\n getRole,\n getVideoEffectsDependency\n} from '../selectors/baseSelectors';\nimport { getPage } from '../selectors/baseSelectors';\nimport { getCallStatus, getCaptionsStatus } from '../selectors/baseSelectors';\nimport { drawerContainerStyles } from '../styles/CallComposite.styles';\nimport { SidePane } from './SidePane/SidePane';\nimport { usePeoplePane } from './SidePane/usePeoplePane';\nimport { useMeetingPhoneInfoPane } from './SidePane/useMeetingPhoneInfo';\nimport { getTeamsMeetingCoordinates } from '../selectors/baseSelectors';\nimport {\n useVideoEffectsPane,\n VIDEO_EFFECTS_SIDE_PANE_ID,\n VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM\n} from './SidePane/useVideoEffectsPane';\nimport { isDisabled } from '../utils';\nimport { SidePaneRenderer, useIsSidePaneOpen } from './SidePane/SidePaneProvider';\nimport { useIsParticularSidePaneOpen } from './SidePane/SidePaneProvider';\nimport { ModalLocalAndRemotePIP } from '../../common/ModalLocalAndRemotePIP';\nimport { getPipStyles } from '../../common/styles/ModalLocalAndRemotePIP.styles';\nimport { useMinMaxDragPosition } from '../../common/utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { CommonCallControlOptions } from '../../common/types/CommonCallControlOptions';\nimport { localVideoSelector } from '../../CallComposite/selectors/localVideoStreamSelector';\nimport {\n CapabilitiesChangedNotificationBar,\n CapabilitiesChangeNotificationBarProps\n} from './CapabilitiesChangedNotificationBar';\nimport { useLocale } from '../../localization';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { PromptProps } from './Prompt';\nimport {\n useLocalSpotlightCallbacksWithPrompt,\n useRemoteSpotlightCallbacksWithPrompt,\n useStopAllSpotlightCallbackWithPrompt\n} from '../utils/spotlightUtils';\n\nimport { getCaptionsKind, getIsTeamsCall } from '../selectors/baseSelectors';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { MoreDrawer } from '../../common/Drawer/MoreDrawer';\n/* @conditional-compile-remove(breakout-rooms) */\nimport { useCompositeStringsForNotificationStackStrings } from '../hooks/useCompositeStringsForNotificationStack';\n/* @conditional-compile-remove(breakout-rooms) */\nimport { BreakoutRoomsBanner } from './BreakoutRoomsBanner';\nimport { FocusableElement } from '../../common/types/FocusableElement';\n\n/**\n * @private\n */\nexport interface CallArrangementProps {\n id?: string;\n complianceBannerProps: _ComplianceBannerProps;\n errorBarProps: ErrorBarProps | false;\n showErrorNotifications: boolean;\n mutedNotificationProps?: MutedNotificationProps;\n callControlProps: CallControlsProps;\n onRenderGalleryContent: () => JSX.Element;\n dataUiId: string;\n mobileView: boolean;\n modalLayerHostId: string;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n latestErrors: ActiveErrorMessage[] | ActiveNotification[];\n latestNotifications?: ActiveNotification[];\n onDismissError: (error: ActiveErrorMessage | ActiveNotification) => void;\n\n onDismissNotification?: (notification: ActiveNotification) => void;\n onUserSetOverflowGalleryPositionChange?: (position: 'Responsive' | 'horizontalTop') => void;\n onUserSetGalleryLayoutChange?: (layout: VideoGalleryLayout) => void;\n userSetGalleryLayout?: VideoGalleryLayout;\n\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n onCloseChatPane?: () => void;\n onSetDialpadPage?: () => void;\n dtmfDialerPresent?: boolean;\n\n setIsPromptOpen?: (isOpen: boolean) => void;\n\n setPromptProps?: (props: PromptProps) => void;\n\n hideSpotlightButtons?: boolean;\n pinnedParticipants?: string[];\n setPinnedParticipants?: (pinnedParticipants: string[]) => void;\n doNotShowCameraAccessNotifications?: boolean;\n captionsOptions?: {\n height: 'full' | 'default';\n };\n}\n\n/**\n * @private\n * Maximum number of remote video tiles that can be pinned\n */\nexport const MAX_PINNED_REMOTE_VIDEO_TILES = 4;\n\n/**\n * @private\n */\nexport const CallArrangement = (props: CallArrangementProps): JSX.Element => {\n const containerClassName = useMemo(() => {\n return props.mobileView ? containerStyleMobile : containerStyleDesktop;\n }, [props.mobileView]);\n\n const theme = useTheme();\n const callGalleryStyles = useMemo(\n () => galleryParentContainerStyles(theme.palette.neutralLighterAlt),\n [theme.palette.neutralLighterAlt]\n );\n\n const controlBarRef = useRef<FocusableElement>(null);\n const peopleButtonRef = useRef<IButton>(null);\n const cameraButtonRef = useRef<IButton>(null);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const containerWidth = _useContainerWidth(containerRef);\n const containerHeight = _useContainerHeight(containerRef);\n\n const isInLobby = _isInLobbyOrConnecting(useSelector(callStatusSelector).callStatus);\n\n const { updateSidePaneRenderer } = props;\n const isInLocalHold = useSelector(getPage) === 'hold';\n\n const capabilities = useSelector(getCapabilites);\n\n const adapter = useAdapter();\n\n const [participantActioned, setParticipantActioned] = useState<string>();\n const remoteParticipants = useSelector(getRemoteParticipants);\n const [drawerMenuItems, setDrawerMenuItems] = useState<_DrawerMenuItemProps[]>([]);\n useEffect(() => {\n const participantIsActionedButIsNotPresent =\n participantActioned && remoteParticipants?.[participantActioned] === undefined;\n if (participantIsActionedButIsNotPresent) {\n setDrawerMenuItems([]);\n }\n }, [participantActioned, remoteParticipants]);\n\n const conferencePhoneInfo = useSelector(getTeamsMeetingCoordinates);\n\n const meetingPhoneInfoPaneProps = {\n updateSidePaneRenderer,\n mobileView: props.mobileView,\n conferencePhoneInfo: conferencePhoneInfo\n };\n\n const peoplePaneProps = useMemo(\n () => ({\n updateSidePaneRenderer,\n setDrawerMenuItems,\n inviteLink: props.callControlProps.callInvitationURL,\n onFetchAvatarPersonaData: props.onFetchAvatarPersonaData,\n onFetchParticipantMenuItems: props.callControlProps?.onFetchParticipantMenuItems,\n mobileView: props.mobileView,\n peopleButtonRef,\n setParticipantActioned\n }),\n [\n updateSidePaneRenderer,\n props.callControlProps.callInvitationURL,\n props.callControlProps?.onFetchParticipantMenuItems,\n props.onFetchAvatarPersonaData,\n props.mobileView,\n peopleButtonRef,\n setParticipantActioned\n ]\n );\n\n const locale = useLocale();\n const role = useSelector(getRole);\n const videoGalleryProps = usePropsFor(VideoGallery);\n const muteAllHandlers = useHandlers(MoreDrawer);\n const { setPromptProps, setIsPromptOpen, hideSpotlightButtons } = props;\n const {\n onStartLocalSpotlight,\n onStopLocalSpotlight,\n onStartRemoteSpotlight,\n onStopRemoteSpotlight,\n onMuteParticipant,\n spotlightedParticipants,\n maxParticipantsToSpotlight,\n localParticipant\n } = videoGalleryProps;\n\n const [showTeamsMeetingConferenceModal, setShowTeamsMeetingConferenceModal] = useState(false);\n const toggleTeamsMeetingConferenceModal = useCallback((): void => {\n setShowTeamsMeetingConferenceModal(!showTeamsMeetingConferenceModal);\n }, [showTeamsMeetingConferenceModal]);\n\n const { isMeetingPhoneInfoPaneOpen, openMeetingPhoneInfoPane, closeMeetingPhoneInfoPane } = useMeetingPhoneInfoPane({\n ...meetingPhoneInfoPaneProps\n });\n\n const toggleMeetingPhoneInfoPane = useCallback(() => {\n if (isMeetingPhoneInfoPaneOpen) {\n closeMeetingPhoneInfoPane();\n } else {\n openMeetingPhoneInfoPane();\n }\n }, [closeMeetingPhoneInfoPane, isMeetingPhoneInfoPaneOpen, openMeetingPhoneInfoPane]);\n\n const onMeetingPhoneInfoClicked = useCallback(() => {\n setShowDrawer(false);\n toggleMeetingPhoneInfoPane();\n }, [toggleMeetingPhoneInfoPane]);\n\n const { pinnedParticipants, setPinnedParticipants } = props;\n const onPinParticipant = useCallback(\n (userId: string) => {\n if (pinnedParticipants && pinnedParticipants.length >= MAX_PINNED_REMOTE_VIDEO_TILES) {\n return;\n }\n if (pinnedParticipants && setPinnedParticipants && !pinnedParticipants.includes(userId)) {\n setPinnedParticipants(pinnedParticipants.concat(userId));\n }\n },\n [pinnedParticipants, setPinnedParticipants]\n );\n\n const onUnpinParticipant = useCallback(\n (userId: string) => {\n if (pinnedParticipants && setPinnedParticipants) {\n setPinnedParticipants(pinnedParticipants.filter((participantId) => participantId !== userId));\n }\n },\n [setPinnedParticipants, pinnedParticipants]\n );\n\n const pinPeoplePaneProps = useMemo(() => {\n return {\n pinnedParticipants: pinnedParticipants,\n onPinParticipant: onPinParticipant,\n onUnpinParticipant: onUnpinParticipant,\n disablePinMenuItem: pinnedParticipants && pinnedParticipants.length >= MAX_PINNED_REMOTE_VIDEO_TILES\n };\n }, [onPinParticipant, onUnpinParticipant, pinnedParticipants]);\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 canRemoveSpotlight = capabilities?.removeParticipantsSpotlight.isPresent;\n const stopAllSpotlight = useMemo(\n () => (canRemoveSpotlight ? () => adapter.stopAllSpotlight() : undefined),\n [canRemoveSpotlight, adapter]\n );\n\n const { stopAllSpotlightWithPrompt } = useStopAllSpotlightCallbackWithPrompt(\n stopAllSpotlight,\n setIsPromptOpen,\n setPromptProps\n );\n\n const onMuteParticipantPeoplePaneProps = useMemo(() => {\n return {\n onMuteParticipant: capabilities?.muteOthers?.isPresent || role === 'Unknown' ? onMuteParticipant : undefined,\n onMuteAllRemoteParticipants:\n capabilities?.muteOthers?.isPresent || role === 'Unknown'\n ? muteAllHandlers.onMuteAllRemoteParticipants\n : undefined\n };\n }, [onMuteParticipant, role, capabilities?.muteOthers, muteAllHandlers.onMuteAllRemoteParticipants]);\n\n const spotlightPeoplePaneProps = useMemo(() => {\n return {\n spotlightedParticipantUserIds: spotlightedParticipants,\n onStartLocalSpotlight: hideSpotlightButtons ? undefined : onStartLocalSpotlightWithPrompt,\n onStopLocalSpotlight: hideSpotlightButtons ? undefined : onStopLocalSpotlightWithPrompt,\n onStartRemoteSpotlight: hideSpotlightButtons ? undefined : onStartRemoteSpotlightWithPrompt,\n onStopRemoteSpotlight: hideSpotlightButtons ? undefined : onStopRemoteSpotlightWithPrompt,\n onStopAllSpotlight: hideSpotlightButtons ? undefined : stopAllSpotlightWithPrompt,\n maxParticipantsToSpotlight\n };\n return {};\n }, [\n hideSpotlightButtons,\n maxParticipantsToSpotlight,\n onStartLocalSpotlightWithPrompt,\n onStartRemoteSpotlightWithPrompt,\n onStopLocalSpotlightWithPrompt,\n onStopRemoteSpotlightWithPrompt,\n stopAllSpotlightWithPrompt,\n spotlightedParticipants\n ]);\n\n const { isPeoplePaneOpen, openPeoplePane, closePeoplePane } = usePeoplePane({\n ...peoplePaneProps,\n ...spotlightPeoplePaneProps,\n ...onMuteParticipantPeoplePaneProps,\n ...pinPeoplePaneProps\n });\n const togglePeoplePane = useCallback(() => {\n if (isPeoplePaneOpen) {\n closePeoplePane();\n } else {\n openPeoplePane();\n }\n }, [closePeoplePane, isPeoplePaneOpen, openPeoplePane]);\n\n useEffect(() => {\n if (isInLocalHold) {\n // close side pane on local hold\n updateSidePaneRenderer(undefined);\n }\n }, [updateSidePaneRenderer, isInLocalHold, isPeoplePaneOpen, closePeoplePane]);\n\n const isSidePaneOpen = useIsSidePaneOpen();\n\n const [renderGallery, setRenderGallery] = useState<boolean>(!isSidePaneOpen && props.mobileView);\n\n useEffect(() => {\n if (isSidePaneOpen && props.mobileView) {\n setRenderGallery(false);\n } else {\n setRenderGallery(true);\n }\n }, [props.mobileView, isSidePaneOpen]);\n\n const modalStrings = { dismissModalAriaLabel: locale.strings.call.dismissModalAriaLabel };\n\n const isMobileWithActivePane = props.mobileView && isSidePaneOpen;\n\n const callCompositeContainerCSS = useMemo((): React.CSSProperties => {\n return {\n display: isMobileWithActivePane ? 'none' : 'flex',\n minWidth: props.mobileView ? 'unset' : `${compositeMinWidthRem}rem`,\n width: '100%',\n height: '100%',\n position: 'relative'\n };\n }, [isMobileWithActivePane, props.mobileView]);\n\n const onResolveVideoEffectDependency = useSelector(getVideoEffectsDependency);\n\n const { openVideoEffectsPane, isVideoEffectsPaneOpen } = useVideoEffectsPane(\n props.updateSidePaneRenderer,\n props.mobileView,\n props.latestErrors as ActiveErrorMessage[],\n props.onDismissError,\n cameraButtonRef\n );\n const [showDrawer, setShowDrawer] = useState(false);\n const onMoreButtonClicked = useCallback(() => {\n setShowDrawer(true);\n }, []);\n const closeDrawer = useCallback(() => {\n setShowDrawer(false);\n }, []);\n const onMoreDrawerPeopleClicked = useCallback(() => {\n setShowDrawer(false);\n togglePeoplePane();\n }, [togglePeoplePane]);\n\n const drawerContainerStylesValue = useMemo(() => drawerContainerStyles(DRAWER_Z_INDEX), []);\n\n let filteredLatestErrorNotifications: ActiveNotification[] = props.showErrorNotifications\n ? (props.latestErrors as ActiveNotification[])\n : [];\n\n const isCameraOn = useSelector(localVideoSelector).isAvailable;\n\n // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK\n if (role === 'Consumer' && (props.errorBarProps || props.showErrorNotifications)) {\n filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter(\n (e) => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari'\n );\n }\n\n if (props.doNotShowCameraAccessNotifications) {\n filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter(\n (e) => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari'\n );\n }\n\n const isVideoPaneOpen = useIsParticularSidePaneOpen(VIDEO_EFFECTS_SIDE_PANE_ID);\n\n if ((isVideoPaneOpen || !isCameraOn) && (props.errorBarProps || props.showErrorNotifications)) {\n filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter(\n (e) => e.type !== 'unableToStartVideoEffect'\n );\n }\n\n const isTeamsCaptions = useSelector(getCaptionsKind) === 'TeamsCaptions';\n const isTeamsMeeting = useSelector(getIsTeamsMeeting);\n\n const isTeamsCall = useSelector(getIsTeamsCall);\n const useTeamsCaptions = isTeamsMeeting || isTeamsCall || isTeamsCaptions;\n const hasJoinedCall = useSelector(getCallStatus) === 'Connected';\n const isCaptionsOn = useSelector(getCaptionsStatus);\n const minMaxDragPosition = useMinMaxDragPosition(props.modalLayerHostId);\n const pipStyles = useMemo(() => getPipStyles(theme), [theme]);\n\n const galleryContainerStyles = useMemo(() => {\n return {\n ...mediaGalleryContainerStyles,\n ...(props?.captionsOptions?.height === 'full' ? { root: { postion: 'absolute' } } : {})\n };\n }, [props?.captionsOptions?.height]);\n\n if (isTeamsMeeting) {\n filteredLatestErrorNotifications\n .filter((notification) => notification.type === 'teamsMeetingCallNetworkQualityLow')\n .forEach((notification) => {\n notification.onClickPrimaryButton = props.mobileView\n ? toggleMeetingPhoneInfoPane\n : toggleTeamsMeetingConferenceModal;\n });\n }\n\n const verticalControlBar =\n props.mobileView && containerWidth && containerHeight && containerWidth / containerHeight > 1 ? true : false;\n\n // Filter out shareScreen capability notifications if on mobile\n const filteredCapabilitesChangedNotifications = props.mobileView\n ? props.capabilitiesChangedNotificationBarProps?.capabilitiesChangedNotifications.filter(\n (notification) => notification.capabilityName !== 'shareScreen'\n )\n : props.capabilitiesChangedNotificationBarProps?.capabilitiesChangedNotifications;\n\n /* @conditional-compile-remove(breakout-rooms) */\n const notificationStackStrings = useCompositeStringsForNotificationStackStrings(locale);\n\n let latestNotifications = props.latestNotifications;\n /* @conditional-compile-remove(breakout-rooms) */\n // Filter out breakout room notification that prompts user to join breakout room when in mobile view. We will\n // replace it with a non-dismissible banner\n latestNotifications = props.mobileView\n ? (latestNotifications ?? []).filter((notification) => notification.type !== 'assignedBreakoutRoomOpenedPromptJoin')\n : latestNotifications;\n\n const reactionResources = useSelector(getReactionResources);\n\n return (\n <div ref={containerRef} className={mergeStyles(containerDivStyles)} id={props.id}>\n <Stack verticalFill horizontalAlign=\"stretch\" className={containerClassName} data-ui-id={props.dataUiId}>\n <Stack\n reversed\n horizontal={verticalControlBar}\n grow\n styles={callArrangementContainerStyles(verticalControlBar)}\n >\n {props.callControlProps?.options !== false && !isMobileWithActivePane && (\n <Stack\n verticalAlign={'center'}\n className={mergeStyles({\n zIndex: CONTROL_BAR_Z_INDEX,\n padding: verticalControlBar ? '0.25rem' : 'unset'\n })}\n >\n {isLegacyCallControlEnabled(props.callControlProps?.options) ? (\n <CallControls\n {...props.callControlProps}\n containerWidth={containerWidth}\n containerHeight={containerHeight}\n isMobile={props.mobileView}\n peopleButtonChecked={isPeoplePaneOpen}\n onPeopleButtonClicked={togglePeoplePane}\n displayVertical={verticalControlBar}\n />\n ) : (\n <CommonCallControlBar\n {...props.callControlProps}\n ref={controlBarRef}\n callControls={props.callControlProps.options}\n callAdapter={adapter as CallAdapter}\n mobileView={props.mobileView}\n disableButtonsForLobbyPage={isInLobby}\n disableButtonsForHoldScreen={isInLocalHold}\n peopleButtonChecked={isPeoplePaneOpen}\n onPeopleButtonClicked={togglePeoplePane}\n onMoreButtonClicked={onMoreButtonClicked}\n isCaptionsSupported={(useTeamsCaptions && hasJoinedCall) || hasJoinedCall}\n useTeamsCaptions={useTeamsCaptions}\n isCaptionsOn={isCaptionsOn}\n onClickVideoEffects={onResolveVideoEffectDependency ? openVideoEffectsPane : undefined}\n displayVertical={verticalControlBar}\n onUserSetOverflowGalleryPositionChange={props.onUserSetOverflowGalleryPositionChange}\n onUserSetGalleryLayout={props.onUserSetGalleryLayoutChange}\n userSetGalleryLayout={props.userSetGalleryLayout}\n onSetDialpadPage={props.onSetDialpadPage}\n dtmfDialerPresent={props.dtmfDialerPresent}\n peopleButtonRef={peopleButtonRef}\n cameraButtonRef={cameraButtonRef}\n onStopLocalSpotlight={\n !hideSpotlightButtons && localParticipant.spotlight ? onStopLocalSpotlightWithPrompt : undefined\n }\n onToggleTeamsMeetingConferenceModal={toggleTeamsMeetingConferenceModal}\n teamsMeetingConferenceModalPresent={showTeamsMeetingConferenceModal}\n />\n )}\n </Stack>\n )}\n {props.callControlProps?.options !== false && showDrawer && (\n <Stack styles={drawerContainerStylesValue}>\n <PreparedMoreDrawer\n callControls={props.callControlProps.options}\n onLightDismiss={closeDrawer}\n onPeopleButtonClicked={onMoreDrawerPeopleClicked}\n disableButtonsForHoldScreen={isInLocalHold}\n isCaptionsSupported={(useTeamsCaptions && hasJoinedCall) || hasJoinedCall}\n useTeamsCaptions={useTeamsCaptions}\n onUserSetGalleryLayout={props.onUserSetGalleryLayoutChange}\n userSetGalleryLayout={props.userSetGalleryLayout}\n onSetDialpadPage={props.onSetDialpadPage}\n dtmfDialerPresent={props.dtmfDialerPresent}\n reactionResources={reactionResources}\n onClickMeetingPhoneInfo={onMeetingPhoneInfoClicked}\n />\n </Stack>\n )}\n <Stack horizontal grow>\n <Stack.Item style={callCompositeContainerCSS}>\n <Stack.Item styles={callGalleryStyles} grow>\n <Stack verticalFill styles={galleryContainerStyles}>\n <Stack.Item styles={notificationsContainerStyles}>\n {\n /* @conditional-compile-remove(breakout-rooms) */\n props.mobileView && <BreakoutRoomsBanner locale={locale} adapter={adapter} />\n }\n {props.showErrorNotifications && (\n <Stack styles={notificationStackStyles} horizontalAlign=\"center\" verticalAlign=\"center\">\n <NotificationStack\n onDismissNotification={props.onDismissError}\n activeNotifications={filteredLatestErrorNotifications}\n />\n </Stack>\n )}\n {latestNotifications && (\n <Stack styles={notificationStackStyles} horizontalAlign=\"center\" verticalAlign=\"center\">\n <NotificationStack\n activeNotifications={latestNotifications}\n onDismissNotification={props.onDismissNotification}\n /* @conditional-compile-remove(breakout-rooms) */\n strings={notificationStackStrings}\n />\n </Stack>\n )}\n {props.capabilitiesChangedNotificationBarProps &&\n props.capabilitiesChangedNotificationBarProps.capabilitiesChangedNotifications.length > 0 && (\n <Stack styles={bannerNotificationStyles}>\n <CapabilitiesChangedNotificationBar\n {...props.capabilitiesChangedNotificationBarProps}\n capabilitiesChangedNotifications={filteredCapabilitesChangedNotifications ?? []}\n />\n </Stack>\n )}\n </Stack.Item>\n {renderGallery && props.onRenderGalleryContent && props.onRenderGalleryContent()}\n {!isInLocalHold && (\n <CallingCaptionsBanner\n captionsOptions={props.captionsOptions}\n isMobile={props.mobileView}\n onFetchAvatarPersonaData={props.onFetchAvatarPersonaData}\n useTeamsCaptions={useTeamsCaptions}\n returnFocusRef={controlBarRef}\n />\n )}\n </Stack>\n </Stack.Item>\n </Stack.Item>\n <SidePane\n mobileView={props.mobileView}\n maxWidth={isVideoPaneOpen ? `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` : undefined}\n minWidth={isVideoPaneOpen ? `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` : undefined}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n onPeopleButtonClicked={\n props.mobileView && !shouldShowPeopleTabHeaderButton(props.callControlProps.options)\n ? undefined\n : togglePeoplePane\n }\n disablePeopleButton={\n typeof props.callControlProps.options !== 'boolean' &&\n isDisabled(props.callControlProps.options?.participantsButton)\n }\n onChatButtonClicked={props.mobileChatTabHeader?.onClick}\n disableChatButton={props.mobileChatTabHeader?.disabled}\n showAddPeopleButton={!!props.callControlProps.callInvitationURL}\n ariaLabel={isVideoEffectsPaneOpen ? locale.strings.call.videoEffectsPaneAriaLabel : undefined}\n />\n {props.mobileView && (\n <ModalLocalAndRemotePIP\n modalLayerHostId={props.modalLayerHostId}\n hidden={!isSidePaneOpen}\n styles={pipStyles}\n strings={modalStrings}\n minDragPosition={minMaxDragPosition.minDragPosition}\n maxDragPosition={minMaxDragPosition.maxDragPosition}\n onDismissSidePane={() => {\n closePeoplePane();\n if (props.onCloseChatPane) {\n props.onCloseChatPane();\n }\n }}\n />\n )}\n {drawerMenuItems.length > 0 && (\n <Stack styles={drawerContainerStyles()}>\n <_DrawerMenu onLightDismiss={() => setDrawerMenuItems([])} items={drawerMenuItems} />\n </Stack>\n )}\n </Stack>\n </Stack>\n </Stack>\n </div>\n );\n};\n\nconst isLegacyCallControlEnabled = (options?: boolean | CallControlOptions): boolean => {\n return !!options && options !== true && options?.legacyControlBarExperience === true;\n};\n\nconst shouldShowPeopleTabHeaderButton = (callControls?: boolean | CommonCallControlOptions): boolean => {\n if (callControls === undefined || callControls === true) {\n return true;\n }\n if (callControls === false) {\n return false;\n }\n return callControls.participantsButton !== false && callControls.peopleButton !== false;\n};\n"]}
|
1
|
+
{"version":3,"file":"CallArrangement.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/components/CallArrangement.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { IButton, mergeStyles, Stack } from '@fluentui/react';\nimport { _isInCall, _isInLobbyOrConnecting } from '@internal/calling-component-bindings';\nimport {\n _ComplianceBanner,\n _ComplianceBannerProps,\n _DrawerMenu,\n _DrawerMenuItemProps,\n _useContainerHeight,\n _useContainerWidth,\n ActiveErrorMessage,\n ErrorBarProps,\n useTheme\n} from '@internal/react-components';\nimport { ActiveNotification, NotificationStack } from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport { VideoGallery } from '@internal/react-components';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { useEffect } from 'react';\nimport { useCallback } from 'react';\nimport { AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { CallingCaptionsBanner } from '../../common/CallingCaptionsBanner';\nimport { containerDivStyles } from '../../common/ContainerRectProps';\nimport { compositeMinWidthRem } from '../../common/styles/Composite.styles';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { CallControls, CallControlsProps } from '../components/CallControls';\nimport { CommonCallControlBar } from '../../common/ControlBar/CommonCallControlBar';\nimport {\n callArrangementContainerStyles,\n notificationsContainerStyles,\n containerStyleDesktop,\n containerStyleMobile,\n mediaGalleryContainerStyles,\n galleryParentContainerStyles,\n bannerNotificationStyles,\n CONTROL_BAR_Z_INDEX,\n DRAWER_Z_INDEX\n} from '../styles/CallPage.styles';\nimport { notificationStackStyles } from '../styles/CallPage.styles';\nimport { MutedNotificationProps } from './MutedNotification';\nimport { CallAdapter } from '../adapter';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { CallControlOptions } from '../types/CallControlOptions';\nimport { PreparedMoreDrawer } from '../../common/Drawer/PreparedMoreDrawer';\nimport {\n getCapabilites,\n getIsTeamsMeeting,\n getReactionResources,\n getRemoteParticipants,\n getRole,\n getVideoEffectsDependency\n} from '../selectors/baseSelectors';\nimport { getPage } from '../selectors/baseSelectors';\nimport { getCallStatus, getCaptionsStatus } from '../selectors/baseSelectors';\nimport { drawerContainerStyles } from '../styles/CallComposite.styles';\nimport { SidePane } from './SidePane/SidePane';\nimport { usePeoplePane } from './SidePane/usePeoplePane';\nimport { useMeetingPhoneInfoPane } from './SidePane/useMeetingPhoneInfo';\nimport { getTeamsMeetingCoordinates } from '../selectors/baseSelectors';\nimport {\n useVideoEffectsPane,\n VIDEO_EFFECTS_SIDE_PANE_ID,\n VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM\n} from './SidePane/useVideoEffectsPane';\nimport { isDisabled } from '../utils';\nimport { SidePaneRenderer, useIsSidePaneOpen } from './SidePane/SidePaneProvider';\nimport { useIsParticularSidePaneOpen } from './SidePane/SidePaneProvider';\nimport { ModalLocalAndRemotePIP } from '../../common/ModalLocalAndRemotePIP';\nimport { getPipStyles } from '../../common/styles/ModalLocalAndRemotePIP.styles';\nimport { useMinMaxDragPosition } from '../../common/utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { CommonCallControlOptions } from '../../common/types/CommonCallControlOptions';\nimport { localVideoSelector } from '../../CallComposite/selectors/localVideoStreamSelector';\nimport {\n CapabilitiesChangedNotificationBar,\n CapabilitiesChangeNotificationBarProps\n} from './CapabilitiesChangedNotificationBar';\nimport { useLocale } from '../../localization';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { PromptProps } from './Prompt';\nimport {\n useLocalSpotlightCallbacksWithPrompt,\n useRemoteSpotlightCallbacksWithPrompt,\n useStopAllSpotlightCallbackWithPrompt\n} from '../utils/spotlightUtils';\n\nimport { getCaptionsKind, getIsTeamsCall } from '../selectors/baseSelectors';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { MoreDrawer } from '../../common/Drawer/MoreDrawer';\n/* @conditional-compile-remove(breakout-rooms) */\nimport { useCompositeStringsForNotificationStackStrings } from '../hooks/useCompositeStringsForNotificationStack';\n/* @conditional-compile-remove(breakout-rooms) */\nimport { BreakoutRoomsBanner } from './BreakoutRoomsBanner';\nimport { FocusableElement } from '../../common/types/FocusableElement';\nimport { DtmfDialPadOptions } from '../CallComposite';\n\n/**\n * @private\n */\nexport interface CallArrangementProps {\n id?: string;\n complianceBannerProps: _ComplianceBannerProps;\n errorBarProps: ErrorBarProps | false;\n showErrorNotifications: boolean;\n mutedNotificationProps?: MutedNotificationProps;\n callControlProps: CallControlsProps;\n onRenderGalleryContent: () => JSX.Element;\n dataUiId: string;\n mobileView: boolean;\n modalLayerHostId: string;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n latestErrors: ActiveErrorMessage[] | ActiveNotification[];\n latestNotifications?: ActiveNotification[];\n onDismissError: (error: ActiveErrorMessage | ActiveNotification) => void;\n onDismissNotification?: (notification: ActiveNotification) => void;\n onUserSetOverflowGalleryPositionChange?: (position: 'Responsive' | 'horizontalTop') => void;\n onUserSetGalleryLayoutChange?: (layout: VideoGalleryLayout) => void;\n userSetGalleryLayout?: VideoGalleryLayout;\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n onCloseChatPane?: () => void;\n onSetDialpadPage?: () => void;\n dtmfDialerPresent?: boolean;\n dtmfDialerOptions?: boolean | DtmfDialPadOptions;\n setIsPromptOpen?: (isOpen: boolean) => void;\n setPromptProps?: (props: PromptProps) => void;\n hideSpotlightButtons?: boolean;\n pinnedParticipants?: string[];\n setPinnedParticipants?: (pinnedParticipants: string[]) => void;\n doNotShowCameraAccessNotifications?: boolean;\n captionsOptions?: {\n height: 'full' | 'default';\n };\n}\n\n/**\n * @private\n * Maximum number of remote video tiles that can be pinned\n */\nexport const MAX_PINNED_REMOTE_VIDEO_TILES = 4;\n\n/**\n * @private\n */\nexport const CallArrangement = (props: CallArrangementProps): JSX.Element => {\n const containerClassName = useMemo(() => {\n return props.mobileView ? containerStyleMobile : containerStyleDesktop;\n }, [props.mobileView]);\n\n const theme = useTheme();\n const callGalleryStyles = useMemo(\n () => galleryParentContainerStyles(theme.palette.neutralLighterAlt),\n [theme.palette.neutralLighterAlt]\n );\n\n const controlBarRef = useRef<FocusableElement>(null);\n const peopleButtonRef = useRef<IButton>(null);\n const cameraButtonRef = useRef<IButton>(null);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const containerWidth = _useContainerWidth(containerRef);\n const containerHeight = _useContainerHeight(containerRef);\n\n const isInLobby = _isInLobbyOrConnecting(useSelector(callStatusSelector).callStatus);\n\n const { updateSidePaneRenderer } = props;\n const isInLocalHold = useSelector(getPage) === 'hold';\n\n const capabilities = useSelector(getCapabilites);\n\n const adapter = useAdapter();\n\n const [participantActioned, setParticipantActioned] = useState<string>();\n const remoteParticipants = useSelector(getRemoteParticipants);\n const [drawerMenuItems, setDrawerMenuItems] = useState<_DrawerMenuItemProps[]>([]);\n useEffect(() => {\n const participantIsActionedButIsNotPresent =\n participantActioned && remoteParticipants?.[participantActioned] === undefined;\n if (participantIsActionedButIsNotPresent) {\n setDrawerMenuItems([]);\n }\n }, [participantActioned, remoteParticipants]);\n\n const conferencePhoneInfo = useSelector(getTeamsMeetingCoordinates);\n\n const meetingPhoneInfoPaneProps = {\n updateSidePaneRenderer,\n mobileView: props.mobileView,\n conferencePhoneInfo: conferencePhoneInfo\n };\n\n const peoplePaneProps = useMemo(\n () => ({\n updateSidePaneRenderer,\n setDrawerMenuItems,\n inviteLink: props.callControlProps.callInvitationURL,\n onFetchAvatarPersonaData: props.onFetchAvatarPersonaData,\n onFetchParticipantMenuItems: props.callControlProps?.onFetchParticipantMenuItems,\n mobileView: props.mobileView,\n peopleButtonRef,\n setParticipantActioned\n }),\n [\n updateSidePaneRenderer,\n props.callControlProps.callInvitationURL,\n props.callControlProps?.onFetchParticipantMenuItems,\n props.onFetchAvatarPersonaData,\n props.mobileView,\n peopleButtonRef,\n setParticipantActioned\n ]\n );\n\n const locale = useLocale();\n const role = useSelector(getRole);\n const videoGalleryProps = usePropsFor(VideoGallery);\n const muteAllHandlers = useHandlers(MoreDrawer);\n const { setPromptProps, setIsPromptOpen, hideSpotlightButtons } = props;\n const {\n onStartLocalSpotlight,\n onStopLocalSpotlight,\n onStartRemoteSpotlight,\n onStopRemoteSpotlight,\n onMuteParticipant,\n spotlightedParticipants,\n maxParticipantsToSpotlight,\n localParticipant\n } = videoGalleryProps;\n\n const [showTeamsMeetingConferenceModal, setShowTeamsMeetingConferenceModal] = useState(false);\n const toggleTeamsMeetingConferenceModal = useCallback((): void => {\n setShowTeamsMeetingConferenceModal(!showTeamsMeetingConferenceModal);\n }, [showTeamsMeetingConferenceModal]);\n\n const { isMeetingPhoneInfoPaneOpen, openMeetingPhoneInfoPane, closeMeetingPhoneInfoPane } = useMeetingPhoneInfoPane({\n ...meetingPhoneInfoPaneProps\n });\n\n const toggleMeetingPhoneInfoPane = useCallback(() => {\n if (isMeetingPhoneInfoPaneOpen) {\n closeMeetingPhoneInfoPane();\n } else {\n openMeetingPhoneInfoPane();\n }\n }, [closeMeetingPhoneInfoPane, isMeetingPhoneInfoPaneOpen, openMeetingPhoneInfoPane]);\n\n const onMeetingPhoneInfoClicked = useCallback(() => {\n setShowDrawer(false);\n toggleMeetingPhoneInfoPane();\n }, [toggleMeetingPhoneInfoPane]);\n\n const { pinnedParticipants, setPinnedParticipants } = props;\n const onPinParticipant = useCallback(\n (userId: string) => {\n if (pinnedParticipants && pinnedParticipants.length >= MAX_PINNED_REMOTE_VIDEO_TILES) {\n return;\n }\n if (pinnedParticipants && setPinnedParticipants && !pinnedParticipants.includes(userId)) {\n setPinnedParticipants(pinnedParticipants.concat(userId));\n }\n },\n [pinnedParticipants, setPinnedParticipants]\n );\n\n const onUnpinParticipant = useCallback(\n (userId: string) => {\n if (pinnedParticipants && setPinnedParticipants) {\n setPinnedParticipants(pinnedParticipants.filter((participantId) => participantId !== userId));\n }\n },\n [setPinnedParticipants, pinnedParticipants]\n );\n\n const pinPeoplePaneProps = useMemo(() => {\n return {\n pinnedParticipants: pinnedParticipants,\n onPinParticipant: onPinParticipant,\n onUnpinParticipant: onUnpinParticipant,\n disablePinMenuItem: pinnedParticipants && pinnedParticipants.length >= MAX_PINNED_REMOTE_VIDEO_TILES\n };\n }, [onPinParticipant, onUnpinParticipant, pinnedParticipants]);\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 canRemoveSpotlight = capabilities?.removeParticipantsSpotlight.isPresent;\n const stopAllSpotlight = useMemo(\n () => (canRemoveSpotlight ? () => adapter.stopAllSpotlight() : undefined),\n [canRemoveSpotlight, adapter]\n );\n\n const { stopAllSpotlightWithPrompt } = useStopAllSpotlightCallbackWithPrompt(\n stopAllSpotlight,\n setIsPromptOpen,\n setPromptProps\n );\n\n const onMuteParticipantPeoplePaneProps = useMemo(() => {\n return {\n onMuteParticipant: capabilities?.muteOthers?.isPresent || role === 'Unknown' ? onMuteParticipant : undefined,\n onMuteAllRemoteParticipants:\n capabilities?.muteOthers?.isPresent || role === 'Unknown'\n ? muteAllHandlers.onMuteAllRemoteParticipants\n : undefined\n };\n }, [onMuteParticipant, role, capabilities?.muteOthers, muteAllHandlers.onMuteAllRemoteParticipants]);\n\n const spotlightPeoplePaneProps = useMemo(() => {\n return {\n spotlightedParticipantUserIds: spotlightedParticipants,\n onStartLocalSpotlight: hideSpotlightButtons ? undefined : onStartLocalSpotlightWithPrompt,\n onStopLocalSpotlight: hideSpotlightButtons ? undefined : onStopLocalSpotlightWithPrompt,\n onStartRemoteSpotlight: hideSpotlightButtons ? undefined : onStartRemoteSpotlightWithPrompt,\n onStopRemoteSpotlight: hideSpotlightButtons ? undefined : onStopRemoteSpotlightWithPrompt,\n onStopAllSpotlight: hideSpotlightButtons ? undefined : stopAllSpotlightWithPrompt,\n maxParticipantsToSpotlight\n };\n return {};\n }, [\n hideSpotlightButtons,\n maxParticipantsToSpotlight,\n onStartLocalSpotlightWithPrompt,\n onStartRemoteSpotlightWithPrompt,\n onStopLocalSpotlightWithPrompt,\n onStopRemoteSpotlightWithPrompt,\n stopAllSpotlightWithPrompt,\n spotlightedParticipants\n ]);\n\n const { isPeoplePaneOpen, openPeoplePane, closePeoplePane } = usePeoplePane({\n ...peoplePaneProps,\n ...spotlightPeoplePaneProps,\n ...onMuteParticipantPeoplePaneProps,\n ...pinPeoplePaneProps\n });\n const togglePeoplePane = useCallback(() => {\n if (isPeoplePaneOpen) {\n closePeoplePane();\n } else {\n openPeoplePane();\n }\n }, [closePeoplePane, isPeoplePaneOpen, openPeoplePane]);\n\n useEffect(() => {\n if (isInLocalHold) {\n // close side pane on local hold\n updateSidePaneRenderer(undefined);\n }\n }, [updateSidePaneRenderer, isInLocalHold, isPeoplePaneOpen, closePeoplePane]);\n\n const isSidePaneOpen = useIsSidePaneOpen();\n\n const [renderGallery, setRenderGallery] = useState<boolean>(!isSidePaneOpen && props.mobileView);\n\n useEffect(() => {\n if (isSidePaneOpen && props.mobileView) {\n setRenderGallery(false);\n } else {\n setRenderGallery(true);\n }\n }, [props.mobileView, isSidePaneOpen]);\n\n const modalStrings = { dismissModalAriaLabel: locale.strings.call.dismissModalAriaLabel };\n\n const isMobileWithActivePane = props.mobileView && isSidePaneOpen;\n\n const callCompositeContainerCSS = useMemo((): React.CSSProperties => {\n return {\n display: isMobileWithActivePane ? 'none' : 'flex',\n minWidth: props.mobileView ? 'unset' : `${compositeMinWidthRem}rem`,\n width: '100%',\n height: '100%',\n position: 'relative'\n };\n }, [isMobileWithActivePane, props.mobileView]);\n\n const onResolveVideoEffectDependency = useSelector(getVideoEffectsDependency);\n\n const { openVideoEffectsPane, isVideoEffectsPaneOpen } = useVideoEffectsPane(\n props.updateSidePaneRenderer,\n props.mobileView,\n props.latestErrors as ActiveErrorMessage[],\n props.onDismissError,\n cameraButtonRef\n );\n const [showDrawer, setShowDrawer] = useState(false);\n const onMoreButtonClicked = useCallback(() => {\n setShowDrawer(true);\n }, []);\n const closeDrawer = useCallback(() => {\n setShowDrawer(false);\n }, []);\n const onMoreDrawerPeopleClicked = useCallback(() => {\n setShowDrawer(false);\n togglePeoplePane();\n }, [togglePeoplePane]);\n\n const drawerContainerStylesValue = useMemo(() => drawerContainerStyles(DRAWER_Z_INDEX), []);\n\n let filteredLatestErrorNotifications: ActiveNotification[] = props.showErrorNotifications\n ? (props.latestErrors as ActiveNotification[])\n : [];\n\n const isCameraOn = useSelector(localVideoSelector).isAvailable;\n\n // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK\n if (role === 'Consumer' && (props.errorBarProps || props.showErrorNotifications)) {\n filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter(\n (e) => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari'\n );\n }\n\n if (props.doNotShowCameraAccessNotifications) {\n filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter(\n (e) => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari'\n );\n }\n\n const isVideoPaneOpen = useIsParticularSidePaneOpen(VIDEO_EFFECTS_SIDE_PANE_ID);\n\n if ((isVideoPaneOpen || !isCameraOn) && (props.errorBarProps || props.showErrorNotifications)) {\n filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter(\n (e) => e.type !== 'unableToStartVideoEffect'\n );\n }\n\n const isTeamsCaptions = useSelector(getCaptionsKind) === 'TeamsCaptions';\n const isTeamsMeeting = useSelector(getIsTeamsMeeting);\n\n const isTeamsCall = useSelector(getIsTeamsCall);\n const useTeamsCaptions = isTeamsMeeting || isTeamsCall || isTeamsCaptions;\n const hasJoinedCall = useSelector(getCallStatus) === 'Connected';\n const isCaptionsOn = useSelector(getCaptionsStatus);\n const minMaxDragPosition = useMinMaxDragPosition(props.modalLayerHostId);\n const pipStyles = useMemo(() => getPipStyles(theme), [theme]);\n\n const galleryContainerStyles = useMemo(() => {\n return {\n ...mediaGalleryContainerStyles,\n ...(props?.captionsOptions?.height === 'full' ? { root: { postion: 'absolute' } } : {})\n };\n }, [props?.captionsOptions?.height]);\n\n if (isTeamsMeeting) {\n filteredLatestErrorNotifications\n .filter((notification) => notification.type === 'teamsMeetingCallNetworkQualityLow')\n .forEach((notification) => {\n notification.onClickPrimaryButton = props.mobileView\n ? toggleMeetingPhoneInfoPane\n : toggleTeamsMeetingConferenceModal;\n });\n }\n\n const verticalControlBar =\n props.mobileView && containerWidth && containerHeight && containerWidth / containerHeight > 1 ? true : false;\n\n // Filter out shareScreen capability notifications if on mobile\n const filteredCapabilitesChangedNotifications = props.mobileView\n ? props.capabilitiesChangedNotificationBarProps?.capabilitiesChangedNotifications.filter(\n (notification) => notification.capabilityName !== 'shareScreen'\n )\n : props.capabilitiesChangedNotificationBarProps?.capabilitiesChangedNotifications;\n\n /* @conditional-compile-remove(breakout-rooms) */\n const notificationStackStrings = useCompositeStringsForNotificationStackStrings(locale);\n\n let latestNotifications = props.latestNotifications;\n /* @conditional-compile-remove(breakout-rooms) */\n // Filter out breakout room notification that prompts user to join breakout room when in mobile view. We will\n // replace it with a non-dismissible banner\n latestNotifications = props.mobileView\n ? (latestNotifications ?? []).filter((notification) => notification.type !== 'assignedBreakoutRoomOpenedPromptJoin')\n : latestNotifications;\n\n const reactionResources = useSelector(getReactionResources);\n\n return (\n <div ref={containerRef} className={mergeStyles(containerDivStyles)} id={props.id}>\n <Stack verticalFill horizontalAlign=\"stretch\" className={containerClassName} data-ui-id={props.dataUiId}>\n <Stack\n reversed\n horizontal={verticalControlBar}\n grow\n styles={callArrangementContainerStyles(verticalControlBar)}\n >\n {props.callControlProps?.options !== false && !isMobileWithActivePane && (\n <Stack\n verticalAlign={'center'}\n className={mergeStyles({\n zIndex: CONTROL_BAR_Z_INDEX,\n padding: verticalControlBar ? '0.25rem' : 'unset'\n })}\n >\n {isLegacyCallControlEnabled(props.callControlProps?.options) ? (\n <CallControls\n {...props.callControlProps}\n containerWidth={containerWidth}\n containerHeight={containerHeight}\n isMobile={props.mobileView}\n peopleButtonChecked={isPeoplePaneOpen}\n onPeopleButtonClicked={togglePeoplePane}\n displayVertical={verticalControlBar}\n />\n ) : (\n <CommonCallControlBar\n {...props.callControlProps}\n ref={controlBarRef}\n callControls={props.callControlProps.options}\n callAdapter={adapter as CallAdapter}\n mobileView={props.mobileView}\n disableButtonsForLobbyPage={isInLobby}\n disableButtonsForHoldScreen={isInLocalHold}\n peopleButtonChecked={isPeoplePaneOpen}\n onPeopleButtonClicked={togglePeoplePane}\n onMoreButtonClicked={onMoreButtonClicked}\n isCaptionsSupported={(useTeamsCaptions && hasJoinedCall) || hasJoinedCall}\n useTeamsCaptions={useTeamsCaptions}\n isCaptionsOn={isCaptionsOn}\n onClickVideoEffects={onResolveVideoEffectDependency ? openVideoEffectsPane : undefined}\n displayVertical={verticalControlBar}\n onUserSetOverflowGalleryPositionChange={props.onUserSetOverflowGalleryPositionChange}\n onUserSetGalleryLayout={props.onUserSetGalleryLayoutChange}\n userSetGalleryLayout={props.userSetGalleryLayout}\n onSetDialpadPage={props.onSetDialpadPage}\n dtmfDialerPresent={props.dtmfDialerPresent}\n peopleButtonRef={peopleButtonRef}\n cameraButtonRef={cameraButtonRef}\n onStopLocalSpotlight={\n !hideSpotlightButtons && localParticipant.spotlight ? onStopLocalSpotlightWithPrompt : undefined\n }\n onToggleTeamsMeetingConferenceModal={toggleTeamsMeetingConferenceModal}\n teamsMeetingConferenceModalPresent={showTeamsMeetingConferenceModal}\n />\n )}\n </Stack>\n )}\n {props.callControlProps?.options !== false && showDrawer && (\n <Stack styles={drawerContainerStylesValue}>\n <PreparedMoreDrawer\n callControls={props.callControlProps.options}\n onLightDismiss={closeDrawer}\n onPeopleButtonClicked={onMoreDrawerPeopleClicked}\n disableButtonsForHoldScreen={isInLocalHold}\n isCaptionsSupported={(useTeamsCaptions && hasJoinedCall) || hasJoinedCall}\n useTeamsCaptions={useTeamsCaptions}\n onUserSetGalleryLayout={props.onUserSetGalleryLayoutChange}\n userSetGalleryLayout={props.userSetGalleryLayout}\n onSetDialpadPage={props.onSetDialpadPage}\n dtmfDialerPresent={props.dtmfDialerPresent}\n dtmfDialerOptions={props.dtmfDialerOptions}\n reactionResources={reactionResources}\n onClickMeetingPhoneInfo={onMeetingPhoneInfoClicked}\n />\n </Stack>\n )}\n <Stack horizontal grow>\n <Stack.Item style={callCompositeContainerCSS}>\n <Stack.Item styles={callGalleryStyles} grow>\n <Stack verticalFill styles={galleryContainerStyles}>\n <Stack.Item styles={notificationsContainerStyles}>\n {\n /* @conditional-compile-remove(breakout-rooms) */\n props.mobileView && <BreakoutRoomsBanner locale={locale} adapter={adapter} />\n }\n {props.showErrorNotifications && (\n <Stack styles={notificationStackStyles} horizontalAlign=\"center\" verticalAlign=\"center\">\n <NotificationStack\n onDismissNotification={props.onDismissError}\n activeNotifications={filteredLatestErrorNotifications}\n />\n </Stack>\n )}\n {latestNotifications && (\n <Stack styles={notificationStackStyles} horizontalAlign=\"center\" verticalAlign=\"center\">\n <NotificationStack\n activeNotifications={latestNotifications}\n onDismissNotification={props.onDismissNotification}\n /* @conditional-compile-remove(breakout-rooms) */\n strings={notificationStackStrings}\n />\n </Stack>\n )}\n {props.capabilitiesChangedNotificationBarProps &&\n props.capabilitiesChangedNotificationBarProps.capabilitiesChangedNotifications.length > 0 && (\n <Stack styles={bannerNotificationStyles}>\n <CapabilitiesChangedNotificationBar\n {...props.capabilitiesChangedNotificationBarProps}\n capabilitiesChangedNotifications={filteredCapabilitesChangedNotifications ?? []}\n />\n </Stack>\n )}\n </Stack.Item>\n {renderGallery && props.onRenderGalleryContent && props.onRenderGalleryContent()}\n {!isInLocalHold && (\n <CallingCaptionsBanner\n captionsOptions={props.captionsOptions}\n isMobile={props.mobileView}\n onFetchAvatarPersonaData={props.onFetchAvatarPersonaData}\n useTeamsCaptions={useTeamsCaptions}\n returnFocusRef={controlBarRef}\n />\n )}\n </Stack>\n </Stack.Item>\n </Stack.Item>\n <SidePane\n mobileView={props.mobileView}\n maxWidth={isVideoPaneOpen ? `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` : undefined}\n minWidth={isVideoPaneOpen ? `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` : undefined}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n onPeopleButtonClicked={\n props.mobileView && !shouldShowPeopleTabHeaderButton(props.callControlProps.options)\n ? undefined\n : togglePeoplePane\n }\n disablePeopleButton={\n typeof props.callControlProps.options !== 'boolean' &&\n isDisabled(props.callControlProps.options?.participantsButton)\n }\n onChatButtonClicked={props.mobileChatTabHeader?.onClick}\n disableChatButton={props.mobileChatTabHeader?.disabled}\n showAddPeopleButton={!!props.callControlProps.callInvitationURL}\n ariaLabel={isVideoEffectsPaneOpen ? locale.strings.call.videoEffectsPaneAriaLabel : undefined}\n />\n {props.mobileView && (\n <ModalLocalAndRemotePIP\n modalLayerHostId={props.modalLayerHostId}\n hidden={!isSidePaneOpen}\n styles={pipStyles}\n strings={modalStrings}\n minDragPosition={minMaxDragPosition.minDragPosition}\n maxDragPosition={minMaxDragPosition.maxDragPosition}\n onDismissSidePane={() => {\n closePeoplePane();\n if (props.onCloseChatPane) {\n props.onCloseChatPane();\n }\n }}\n />\n )}\n {drawerMenuItems.length > 0 && (\n <Stack styles={drawerContainerStyles()}>\n <_DrawerMenu onLightDismiss={() => setDrawerMenuItems([])} items={drawerMenuItems} />\n </Stack>\n )}\n </Stack>\n </Stack>\n </Stack>\n </div>\n );\n};\n\nconst isLegacyCallControlEnabled = (options?: boolean | CallControlOptions): boolean => {\n return !!options && options !== true && options?.legacyControlBarExperience === true;\n};\n\nconst shouldShowPeopleTabHeaderButton = (callControls?: boolean | CommonCallControlOptions): boolean => {\n if (callControls === undefined || callControls === true) {\n return true;\n }\n if (callControls === false) {\n return false;\n }\n return callControls.participantsButton !== false && callControls.peopleButton !== false;\n};\n"]}
|
@@ -3,6 +3,7 @@ export type { CallCompositeOptions, CallCompositeProps, RemoteVideoTileMenuOptio
|
|
3
3
|
export type { DeviceCheckOptions } from './CallComposite';
|
4
4
|
export type { LocalVideoTileOptions } from './CallComposite';
|
5
5
|
export type { CallControlOptions } from './types/CallControlOptions';
|
6
|
+
export type { DtmfDialPadOptions } from './CallComposite';
|
6
7
|
export * from './Strings';
|
7
8
|
export { createAzureCommunicationCallAdapter, createAzureCommunicationCallAdapterFromClient, useAzureCommunicationCallAdapter } from './adapter';
|
8
9
|
export { createTeamsCallAdapter, createTeamsCallAdapterFromClient, useTeamsCallAdapter } from './adapter';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/CallComposite/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/CallComposite/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,cAAc,WAAW,CAAC;AAE1B,OAAO,EACL,mCAAmC,EACnC,6CAA6C,EAC7C,gCAAgC,EACjC,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport { CallComposite } from './CallComposite';\nexport type { CallCompositeOptions, CallCompositeProps, RemoteVideoTileMenuOptions } from './CallComposite';\n/* @conditional-compile-remove(call-readiness) */\nexport type { DeviceCheckOptions } from './CallComposite';\nexport type { LocalVideoTileOptions } from './CallComposite';\nexport type { CallControlOptions } from './types/CallControlOptions';\nexport type { DtmfDialPadOptions } from './CallComposite';\n\nexport * from './Strings';\n\nexport {\n createAzureCommunicationCallAdapter,\n createAzureCommunicationCallAdapterFromClient,\n useAzureCommunicationCallAdapter\n} from './adapter';\n\nexport { createTeamsCallAdapter, createTeamsCallAdapterFromClient, useTeamsCallAdapter } from './adapter';\n\nexport type { TeamsAdapterOptions } from './adapter';\n\nexport type { TeamsCallAdapterArgsCommon, TeamsCallAdapter, TeamsCallAdapterArgs } from './adapter';\n/* @conditional-compile-remove(teams-identity-support-beta) */\nexport type { TeamsOutboundCallAdapterArgs, StartTeamsCallIdentifier } from './adapter';\n\nexport type { Profile, OnFetchProfileCallback } from './adapter';\n\nexport type {\n AzureCommunicationCallAdapterArgs,\n CallAdapterLocator,\n CommonCallAdapter,\n CallAdapterCallOperations,\n AzureCommunicationOutboundCallAdapterArgs\n} from './adapter';\n\nexport type { AzureCommunicationCallAdapterOptions } from './adapter';\n\nexport type { CommonCallAdapterOptions } from './adapter';\n\n/* @conditional-compile-remove(call-participants-locator) */\nexport type { CallParticipantsLocator } from './adapter';\n\nexport type {\n VideoBackgroundImage,\n VideoBackgroundEffect,\n VideoBackgroundNoEffect,\n VideoBackgroundBlurEffect,\n VideoBackgroundReplacementEffect\n} from './adapter/CallAdapter';\n\nexport type {\n CallAdapter,\n CallAdapterCallEndedEvent,\n CallAdapterCallManagement,\n CallAdapterClientState,\n CallAdapterDeviceManagement,\n CallAdapterState,\n CallAdapterSubscribers,\n CallAdapterUiState,\n CallCompositePage,\n CallEndedListener,\n CallIdChangedListener,\n DiagnosticChangedEventListner,\n DisplayNameChangedListener,\n IsLocalScreenSharingActiveChangedListener,\n IsMutedChangedListener,\n IsSpeakingChangedListener,\n MediaDiagnosticChangedEvent,\n NetworkDiagnosticChangedEvent,\n ParticipantsJoinedListener,\n ParticipantsLeftListener,\n JoinCallOptions,\n StartCallIdentifier,\n StartCaptionsAdapterOptions,\n StopCaptionsAdapterOptions\n} from './adapter';\n\nexport type {\n CaptionsReceivedListener,\n IsCaptionsActiveChangedListener,\n IsCaptionLanguageChangedListener,\n IsSpokenLanguageChangedListener\n} from './adapter';\n\nexport type { TransferAcceptedListener } from './adapter';\n\nexport type { CapabilitiesChangedListener } from './adapter';\n\nexport type { CapabilityChangedNotificationStrings } from './components/CapabilitiesChangedNotificationBar';\n\nexport type { SpotlightChangedListener } from './adapter';\n\nexport type { CallingSounds, SoundEffect } from './adapter';\n\nexport type { SpotlightPromptStrings } from './components/Prompt';\n"]}
|
@@ -4,7 +4,7 @@ import { ActiveErrorMessage, ParticipantMenuItemsCallback } from "../../../../..
|
|
4
4
|
import { ActiveNotification } from "../../../../../react-components/src";
|
5
5
|
import { VideoGalleryLayout } from "../../../../../react-components/src";
|
6
6
|
import { AvatarPersonaDataCallback } from '../../common/AvatarPersona';
|
7
|
-
import { CallCompositeOptions } from '../CallComposite';
|
7
|
+
import { CallCompositeOptions, DtmfDialPadOptions } from '../CallComposite';
|
8
8
|
import { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';
|
9
9
|
import { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';
|
10
10
|
import { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';
|
@@ -33,7 +33,7 @@ export interface CallPageProps {
|
|
33
33
|
pinnedParticipants?: string[];
|
34
34
|
setPinnedParticipants?: (pinnedParticipants: string[]) => void;
|
35
35
|
compositeAudioContext?: AudioContext;
|
36
|
-
disableAutoShowDtmfDialer?: boolean;
|
36
|
+
disableAutoShowDtmfDialer?: boolean | DtmfDialPadOptions;
|
37
37
|
}
|
38
38
|
/**
|
39
39
|
* @private
|
@@ -30,7 +30,7 @@ import { toFlatCommunicationIdentifier } from "../../../../../acs-ui-common/src"
|
|
30
30
|
*/
|
31
31
|
export const CallPage = (props) => {
|
32
32
|
var _a, _b, _c, _d;
|
33
|
-
const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants = [], setPinnedParticipants, compositeAudioContext, disableAutoShowDtmfDialer =
|
33
|
+
const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants = [], setPinnedParticipants, compositeAudioContext, disableAutoShowDtmfDialer = { dialerBehavior: 'autoShow' }, latestNotifications, onDismissNotification } = props;
|
34
34
|
// To use useProps to get these states, we need to create another file wrapping Call,
|
35
35
|
// It seems unnecessary in this case, so we get the updated states using this approach.
|
36
36
|
const { callStatus } = useSelector(callStatusSelector);
|
@@ -42,8 +42,8 @@ export const CallPage = (props) => {
|
|
42
42
|
const networkReconnectTileProps = useSelector(networkReconnectTileSelector);
|
43
43
|
const remoteParticipantsConnected = useSelector(getRemoteParticipantsConnectedSelector);
|
44
44
|
const callees = useSelector(getTargetCallees);
|
45
|
-
const renderDtmfDialerFromStart = showDtmfDialer(callees, remoteParticipantsConnected);
|
46
|
-
const [dtmfDialerPresent, setDtmfDialerPresent] = useState(renderDtmfDialerFromStart
|
45
|
+
const renderDtmfDialerFromStart = showDtmfDialer(callees, remoteParticipantsConnected, disableAutoShowDtmfDialer);
|
46
|
+
const [dtmfDialerPresent, setDtmfDialerPresent] = useState(renderDtmfDialerFromStart);
|
47
47
|
const strings = useLocale().strings.call;
|
48
48
|
const pinnedParticipantsChecked = useMemo(() => pinnedParticipants.filter((pinnedParticipant) => remoteParticipantsConnected.find((remoteParticipant) => toFlatCommunicationIdentifier(remoteParticipant.identifier) === pinnedParticipant)), [pinnedParticipants, remoteParticipantsConnected]);
|
49
49
|
// Reduce the controls shown when mobile view is enabled.
|
@@ -68,7 +68,7 @@ export const CallPage = (props) => {
|
|
68
68
|
increaseFlyoutItemSize: mobileView
|
69
69
|
}, onFetchAvatarPersonaData: onFetchAvatarPersonaData, mobileView: mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? (isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (onRenderGalleryContentTrampoline()) : (React.createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps, { isMobile: mobileView })))) : (React.createElement(React.Fragment, null)), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: onCloseChatPane, dataUiId: 'call-page', latestErrors: props.latestErrors, latestNotifications: latestNotifications, onDismissError: props.onDismissError, onDismissNotification: onDismissNotification, 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: pinnedParticipantsChecked, setPinnedParticipants: setPinnedParticipants,
|
70
70
|
/* @conditional-compile-remove(call-readiness) */
|
71
|
-
doNotShowCameraAccessNotifications: ((_d = (_c = props.options) === null || _c === void 0 ? void 0 : _c.deviceChecks) === null || _d === void 0 ? void 0 : _d.camera) === 'doNotPrompt', captionsOptions: options === null || options === void 0 ? void 0 : options.captionsBanner }),
|
71
|
+
doNotShowCameraAccessNotifications: ((_d = (_c = props.options) === null || _c === void 0 ? void 0 : _c.deviceChecks) === null || _d === void 0 ? void 0 : _d.camera) === 'doNotPrompt', captionsOptions: options === null || options === void 0 ? void 0 : options.captionsBanner, dtmfDialerOptions: disableAutoShowDtmfDialer }),
|
72
72
|
React.createElement(Prompt, Object.assign({ isOpen: isPromptOpen, onDismiss: () => setIsPromptOpen(false) }, promptProps))));
|
73
73
|
};
|
74
74
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CallPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/CallPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DiagnosticQuality } from '@azure/communication-calling';\nimport { useId } from '@fluentui/react-hooks';\nimport { _isInCall } from '@internal/calling-component-bindings';\nimport { ActiveErrorMessage, ErrorBar, ParticipantMenuItemsCallback } from '@internal/react-components';\n\nimport { ActiveNotification } from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport React, { useMemo } from 'react';\nimport { useState } from 'react';\nimport { AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { useLocale } from '../../localization';\nimport { CallCompositeOptions } from '../CallComposite';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { MediaGallery } from '../components/MediaGallery';\nimport { NetworkReconnectTile } from '../components/NetworkReconnectTile';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { complianceBannerSelector } from '../selectors/complianceBannerSelector';\nimport { mediaGallerySelector } from '../selectors/mediaGallerySelector';\nimport { getRemoteParticipantsConnectedSelector } from '../selectors/mediaGallerySelector';\nimport { mutedNotificationSelector } from '../selectors/mutedNotificationSelector';\nimport { networkReconnectTileSelector } from '../selectors/networkReconnectTileSelector';\nimport { reduceCallControlsForMobile } from '../utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\nimport { DtmfDialpadPage } from './DtmfDialpadPage';\nimport { showDtmfDialer } from '../utils/MediaGalleryUtils';\nimport { getTargetCallees } from '../selectors/baseSelectors';\nimport { Prompt, PromptProps } from '../components/Prompt';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\n\n/**\n * @private\n */\nexport interface CallPageProps {\n mobileView: boolean;\n modalLayerHostId: string;\n callInvitationURL?: string;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n options?: CallCompositeOptions;\n latestErrors: ActiveErrorMessage[] | ActiveNotification[];\n latestNotifications: ActiveNotification[];\n onDismissError: (error: ActiveErrorMessage | ActiveNotification) => void;\n onDismissNotification: (notification: ActiveNotification) => void;\n galleryLayout: VideoGalleryLayout;\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n onUserSetGalleryLayoutChange?: (layout: VideoGalleryLayout) => void;\n userSetOverflowGalleryPosition?: 'Responsive' | 'horizontalTop';\n onSetUserSetOverflowGalleryPosition?: (position: 'Responsive' | 'horizontalTop') => void;\n onCloseChatPane?: () => void;\n pinnedParticipants?: string[];\n setPinnedParticipants?: (pinnedParticipants: string[]) => void;\n compositeAudioContext?: AudioContext;\n disableAutoShowDtmfDialer?: boolean;\n}\n\n/**\n * @private\n */\nexport const CallPage = (props: CallPageProps): JSX.Element => {\n const {\n callInvitationURL,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItems,\n options,\n mobileView,\n galleryLayout = 'floatingLocalVideo',\n onUserSetGalleryLayoutChange,\n userSetOverflowGalleryPosition = 'Responsive',\n onSetUserSetOverflowGalleryPosition,\n onCloseChatPane,\n pinnedParticipants = [],\n setPinnedParticipants,\n compositeAudioContext,\n disableAutoShowDtmfDialer = false,\n latestNotifications,\n onDismissNotification\n } = props;\n\n // To use useProps to get these states, we need to create another file wrapping Call,\n // It seems unnecessary in this case, so we get the updated states using this approach.\n const { callStatus } = useSelector(callStatusSelector);\n const mediaGalleryProps = useSelector(mediaGallerySelector);\n const mediaGalleryHandlers = useHandlers(MediaGallery);\n const complianceBannerProps = useSelector(complianceBannerSelector);\n const errorBarProps = usePropsFor(ErrorBar);\n const mutedNotificationProps = useSelector(mutedNotificationSelector);\n const networkReconnectTileProps = useSelector(networkReconnectTileSelector);\n const remoteParticipantsConnected = useSelector(getRemoteParticipantsConnectedSelector);\n const callees = useSelector(getTargetCallees);\n const renderDtmfDialerFromStart = showDtmfDialer(callees, remoteParticipantsConnected);\n const [dtmfDialerPresent, setDtmfDialerPresent] = useState<boolean>(\n renderDtmfDialerFromStart && disableAutoShowDtmfDialer\n );\n\n const strings = useLocale().strings.call;\n\n const pinnedParticipantsChecked = useMemo(\n () =>\n pinnedParticipants.filter((pinnedParticipant) =>\n remoteParticipantsConnected.find(\n (remoteParticipant) => toFlatCommunicationIdentifier(remoteParticipant.identifier) === pinnedParticipant\n )\n ),\n [pinnedParticipants, remoteParticipantsConnected]\n );\n\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = mobileView ? reduceCallControlsForMobile(options?.callControls) : options?.callControls;\n\n const drawerMenuHostId = useId('drawerMenuHost');\n const [isPromptOpen, setIsPromptOpen] = useState<boolean>(false);\n const [promptProps, setPromptProps] = useState<PromptProps>();\n\n const onRenderGalleryContentTrampoline = (): JSX.Element => {\n if (dtmfDialerPresent) {\n return (\n <DtmfDialpadPage\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n options={props.options}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors as ActiveErrorMessage[]}\n onDismissError={props.onDismissError}\n capabilitiesChangedNotificationBarProps={props.capabilitiesChangedNotificationBarProps}\n onSetDialpadPage={() => setDtmfDialerPresent(!dtmfDialerPresent)}\n dtmfDialerPresent={dtmfDialerPresent}\n compositeAudioContext={compositeAudioContext}\n />\n );\n } else {\n return (\n <MediaGallery\n isMobile={mobileView}\n {...mediaGalleryProps}\n {...mediaGalleryHandlers}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n remoteVideoTileMenuOptions={options?.remoteVideoTileMenuOptions}\n drawerMenuHostId={drawerMenuHostId}\n localVideoTileOptions={options?.localVideoTile}\n userSetOverflowGalleryPosition={userSetOverflowGalleryPosition}\n userSetGalleryLayout={galleryLayout}\n pinnedParticipants={pinnedParticipantsChecked}\n setPinnedParticipants={setPinnedParticipants}\n setIsPromptOpen={setIsPromptOpen}\n setPromptProps={setPromptProps}\n hideSpotlightButtons={options?.spotlight?.hideSpotlightButtons}\n videoTilesOptions={options?.videoTilesOptions}\n captionsOptions={options?.captionsBanner}\n />\n );\n }\n };\n\n return (\n <>\n <CallArrangement\n id={drawerMenuHostId}\n complianceBannerProps={{ ...complianceBannerProps, strings }}\n errorBarProps={options?.errorBar !== false && errorBarProps}\n showErrorNotifications={options?.errorBar ?? true}\n mutedNotificationProps={mutedNotificationProps}\n callControlProps={{\n callInvitationURL: callInvitationURL,\n onFetchParticipantMenuItems: onFetchParticipantMenuItems,\n options: callControlOptions,\n increaseFlyoutItemSize: mobileView\n }}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n mobileView={mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() =>\n _isInCall(callStatus) ? (\n isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (\n onRenderGalleryContentTrampoline()\n ) : (\n <NetworkReconnectTile {...networkReconnectTileProps} isMobile={mobileView} />\n )\n ) : (\n <></>\n )\n }\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n onCloseChatPane={onCloseChatPane}\n dataUiId={'call-page'}\n latestErrors={props.latestErrors}\n latestNotifications={latestNotifications}\n onDismissError={props.onDismissError}\n onDismissNotification={onDismissNotification}\n onUserSetOverflowGalleryPositionChange={onSetUserSetOverflowGalleryPosition}\n onUserSetGalleryLayoutChange={onUserSetGalleryLayoutChange}\n userSetGalleryLayout={galleryLayout}\n capabilitiesChangedNotificationBarProps={props.capabilitiesChangedNotificationBarProps}\n onSetDialpadPage={() => setDtmfDialerPresent(!dtmfDialerPresent)}\n dtmfDialerPresent={dtmfDialerPresent}\n setIsPromptOpen={setIsPromptOpen}\n setPromptProps={setPromptProps}\n hideSpotlightButtons={options?.spotlight?.hideSpotlightButtons}\n pinnedParticipants={pinnedParticipantsChecked}\n setPinnedParticipants={setPinnedParticipants}\n /* @conditional-compile-remove(call-readiness) */\n doNotShowCameraAccessNotifications={props.options?.deviceChecks?.camera === 'doNotPrompt'}\n captionsOptions={options?.captionsBanner}\n />\n {<Prompt isOpen={isPromptOpen} onDismiss={() => setIsPromptOpen(false)} {...promptProps} />}\n </>\n );\n};\n\n/**\n * @private\n */\nexport const isNetworkHealthy = (value: DiagnosticQuality | boolean | undefined): boolean => {\n // We know that the value is actually of type DiagnosticQuality for this diagnostic.\n // We ignore any boolen values, considering the network to still be healthy.\n // Thus, only DiagnosticQuality.Poor or .Bad indicate network problems.\n return value === true || value === false || value === undefined || value === DiagnosticQuality.Good;\n};\n"]}
|
1
|
+
{"version":3,"file":"CallPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/CallPage.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,sDAA6C;AACjE,OAAO,EAAsB,QAAQ,EAAgC,4CAAmC;AAIxG,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,sCAAsC,EAAE,MAAM,mCAAmC,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAKvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAe,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,yCAAgC;AA8BxE;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAe,EAAE;;IAC5D,MAAM,EACJ,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,OAAO,EACP,UAAU,EACV,aAAa,GAAG,oBAAoB,EACpC,4BAA4B,EAC5B,8BAA8B,GAAG,YAAY,EAC7C,mCAAmC,EACnC,eAAe,EACf,kBAAkB,GAAG,EAAE,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,EAC1D,mBAAmB,EACnB,qBAAqB,EACtB,GAAG,KAAK,CAAC;IAEV,qFAAqF;IACrF,uFAAuF;IACvF,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC5D,MAAM,oBAAoB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,qBAAqB,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,sBAAsB,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACtE,MAAM,yBAAyB,GAAG,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAC5E,MAAM,2BAA2B,GAAG,WAAW,CAAC,sCAAsC,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,yBAAyB,GAAG,cAAc,CAAC,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,CAAC,CAAC;IAClH,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAU,yBAAyB,CAAC,CAAC;IAE/F,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAEzC,MAAM,yBAAyB,GAAG,OAAO,CACvC,GAAG,EAAE,CACH,kBAAkB,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAC9C,2BAA2B,CAAC,IAAI,CAC9B,CAAC,iBAAiB,EAAE,EAAE,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,iBAAiB,CACzG,CACF,EACH,CAAC,kBAAkB,EAAE,2BAA2B,CAAC,CAClD,CAAC;IAEF,yDAAyD;IACzD,MAAM,kBAAkB,GAAG,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC;IAEnH,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACjD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACjE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAe,CAAC;IAE9D,MAAM,gCAAgC,GAAG,GAAgB,EAAE;;QACzD,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,CACL,oBAAC,eAAe,IACd,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,EACpD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAC9C,YAAY,EAAE,KAAK,CAAC,YAAoC,EACxD,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,uCAAuC,EAAE,KAAK,CAAC,uCAAuC,EACtF,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,iBAAiB,CAAC,EAChE,iBAAiB,EAAE,iBAAiB,EACpC,qBAAqB,EAAE,qBAAqB,GAC5C,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CACL,oBAAC,YAAY,kBACX,QAAQ,EAAE,UAAU,IAChB,iBAAiB,EACjB,oBAAoB,IACxB,wBAAwB,EAAE,wBAAwB,EAClD,0BAA0B,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,0BAA0B,EAC/D,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,EAC9C,8BAA8B,EAAE,8BAA8B,EAC9D,oBAAoB,EAAE,aAAa,EACnC,kBAAkB,EAAE,yBAAyB,EAC7C,qBAAqB,EAAE,qBAAqB,EAC5C,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,EAC9B,oBAAoB,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,0CAAE,oBAAoB,EAC9D,iBAAiB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,EAC7C,eAAe,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,IACxC,CACH,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL;QACE,oBAAC,eAAe,IACd,EAAE,EAAE,gBAAgB,EACpB,qBAAqB,kCAAO,qBAAqB,KAAE,OAAO,KAC1D,aAAa,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,MAAK,KAAK,IAAI,aAAa,EAC3D,sBAAsB,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,IAAI,EACjD,sBAAsB,EAAE,sBAAsB,EAC9C,gBAAgB,EAAE;gBAChB,iBAAiB,EAAE,iBAAiB;gBACpC,2BAA2B,EAAE,2BAA2B;gBACxD,OAAO,EAAE,kBAAkB;gBAC3B,sBAAsB,EAAE,UAAU;aACnC,EACD,wBAAwB,EAAE,wBAAwB,EAClD,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,sBAAsB,EAAE,GAAG,EAAE,CAC3B,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACtB,gBAAgB,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAClE,gCAAgC,EAAE,CACnC,CAAC,CAAC,CAAC,CACF,oBAAC,oBAAoB,oBAAK,yBAAyB,IAAE,QAAQ,EAAE,UAAU,IAAI,CAC9E,CACF,CAAC,CAAC,CAAC,CACF,yCAAK,CACN,EAEH,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,EACpD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAC9C,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,WAAW,EACrB,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,qBAAqB,EAAE,qBAAqB,EAC5C,sCAAsC,EAAE,mCAAmC,EAC3E,4BAA4B,EAAE,4BAA4B,EAC1D,oBAAoB,EAAE,aAAa,EACnC,uCAAuC,EAAE,KAAK,CAAC,uCAAuC,EACtF,gBAAgB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,iBAAiB,CAAC,EAChE,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,EAC9B,oBAAoB,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,0CAAE,oBAAoB,EAC9D,kBAAkB,EAAE,yBAAyB,EAC7C,qBAAqB,EAAE,qBAAqB;YAC5C,iDAAiD;YACjD,kCAAkC,EAAE,CAAA,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,YAAY,0CAAE,MAAM,MAAK,aAAa,EACzF,eAAe,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,EACxC,iBAAiB,EAAE,yBAAyB,GAC5C;QACD,oBAAC,MAAM,kBAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAM,WAAW,EAAI,CAC1F,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAA8C,EAAW,EAAE;IAC1F,oFAAoF;IACpF,4EAA4E;IAC5E,uEAAuE;IACvE,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,iBAAiB,CAAC,IAAI,CAAC;AACtG,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DiagnosticQuality } from '@azure/communication-calling';\nimport { useId } from '@fluentui/react-hooks';\nimport { _isInCall } from '@internal/calling-component-bindings';\nimport { ActiveErrorMessage, ErrorBar, ParticipantMenuItemsCallback } from '@internal/react-components';\n\nimport { ActiveNotification } from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport React, { useMemo } from 'react';\nimport { useState } from 'react';\nimport { AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { useLocale } from '../../localization';\nimport { CallCompositeOptions, DtmfDialPadOptions } from '../CallComposite';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { MediaGallery } from '../components/MediaGallery';\nimport { NetworkReconnectTile } from '../components/NetworkReconnectTile';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { complianceBannerSelector } from '../selectors/complianceBannerSelector';\nimport { mediaGallerySelector } from '../selectors/mediaGallerySelector';\nimport { getRemoteParticipantsConnectedSelector } from '../selectors/mediaGallerySelector';\nimport { mutedNotificationSelector } from '../selectors/mutedNotificationSelector';\nimport { networkReconnectTileSelector } from '../selectors/networkReconnectTileSelector';\nimport { reduceCallControlsForMobile } from '../utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\nimport { DtmfDialpadPage } from './DtmfDialpadPage';\nimport { showDtmfDialer } from '../utils/MediaGalleryUtils';\nimport { getTargetCallees } from '../selectors/baseSelectors';\nimport { Prompt, PromptProps } from '../components/Prompt';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\n\n/**\n * @private\n */\nexport interface CallPageProps {\n mobileView: boolean;\n modalLayerHostId: string;\n callInvitationURL?: string;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n options?: CallCompositeOptions;\n latestErrors: ActiveErrorMessage[] | ActiveNotification[];\n latestNotifications: ActiveNotification[];\n onDismissError: (error: ActiveErrorMessage | ActiveNotification) => void;\n onDismissNotification: (notification: ActiveNotification) => void;\n galleryLayout: VideoGalleryLayout;\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n onUserSetGalleryLayoutChange?: (layout: VideoGalleryLayout) => void;\n userSetOverflowGalleryPosition?: 'Responsive' | 'horizontalTop';\n onSetUserSetOverflowGalleryPosition?: (position: 'Responsive' | 'horizontalTop') => void;\n onCloseChatPane?: () => void;\n pinnedParticipants?: string[];\n setPinnedParticipants?: (pinnedParticipants: string[]) => void;\n compositeAudioContext?: AudioContext;\n disableAutoShowDtmfDialer?: boolean | DtmfDialPadOptions;\n}\n\n/**\n * @private\n */\nexport const CallPage = (props: CallPageProps): JSX.Element => {\n const {\n callInvitationURL,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItems,\n options,\n mobileView,\n galleryLayout = 'floatingLocalVideo',\n onUserSetGalleryLayoutChange,\n userSetOverflowGalleryPosition = 'Responsive',\n onSetUserSetOverflowGalleryPosition,\n onCloseChatPane,\n pinnedParticipants = [],\n setPinnedParticipants,\n compositeAudioContext,\n disableAutoShowDtmfDialer = { dialerBehavior: 'autoShow' },\n latestNotifications,\n onDismissNotification\n } = props;\n\n // To use useProps to get these states, we need to create another file wrapping Call,\n // It seems unnecessary in this case, so we get the updated states using this approach.\n const { callStatus } = useSelector(callStatusSelector);\n const mediaGalleryProps = useSelector(mediaGallerySelector);\n const mediaGalleryHandlers = useHandlers(MediaGallery);\n const complianceBannerProps = useSelector(complianceBannerSelector);\n const errorBarProps = usePropsFor(ErrorBar);\n const mutedNotificationProps = useSelector(mutedNotificationSelector);\n const networkReconnectTileProps = useSelector(networkReconnectTileSelector);\n const remoteParticipantsConnected = useSelector(getRemoteParticipantsConnectedSelector);\n const callees = useSelector(getTargetCallees);\n const renderDtmfDialerFromStart = showDtmfDialer(callees, remoteParticipantsConnected, disableAutoShowDtmfDialer);\n const [dtmfDialerPresent, setDtmfDialerPresent] = useState<boolean>(renderDtmfDialerFromStart);\n\n const strings = useLocale().strings.call;\n\n const pinnedParticipantsChecked = useMemo(\n () =>\n pinnedParticipants.filter((pinnedParticipant) =>\n remoteParticipantsConnected.find(\n (remoteParticipant) => toFlatCommunicationIdentifier(remoteParticipant.identifier) === pinnedParticipant\n )\n ),\n [pinnedParticipants, remoteParticipantsConnected]\n );\n\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = mobileView ? reduceCallControlsForMobile(options?.callControls) : options?.callControls;\n\n const drawerMenuHostId = useId('drawerMenuHost');\n const [isPromptOpen, setIsPromptOpen] = useState<boolean>(false);\n const [promptProps, setPromptProps] = useState<PromptProps>();\n\n const onRenderGalleryContentTrampoline = (): JSX.Element => {\n if (dtmfDialerPresent) {\n return (\n <DtmfDialpadPage\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n options={props.options}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors as ActiveErrorMessage[]}\n onDismissError={props.onDismissError}\n capabilitiesChangedNotificationBarProps={props.capabilitiesChangedNotificationBarProps}\n onSetDialpadPage={() => setDtmfDialerPresent(!dtmfDialerPresent)}\n dtmfDialerPresent={dtmfDialerPresent}\n compositeAudioContext={compositeAudioContext}\n />\n );\n } else {\n return (\n <MediaGallery\n isMobile={mobileView}\n {...mediaGalleryProps}\n {...mediaGalleryHandlers}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n remoteVideoTileMenuOptions={options?.remoteVideoTileMenuOptions}\n drawerMenuHostId={drawerMenuHostId}\n localVideoTileOptions={options?.localVideoTile}\n userSetOverflowGalleryPosition={userSetOverflowGalleryPosition}\n userSetGalleryLayout={galleryLayout}\n pinnedParticipants={pinnedParticipantsChecked}\n setPinnedParticipants={setPinnedParticipants}\n setIsPromptOpen={setIsPromptOpen}\n setPromptProps={setPromptProps}\n hideSpotlightButtons={options?.spotlight?.hideSpotlightButtons}\n videoTilesOptions={options?.videoTilesOptions}\n captionsOptions={options?.captionsBanner}\n />\n );\n }\n };\n\n return (\n <>\n <CallArrangement\n id={drawerMenuHostId}\n complianceBannerProps={{ ...complianceBannerProps, strings }}\n errorBarProps={options?.errorBar !== false && errorBarProps}\n showErrorNotifications={options?.errorBar ?? true}\n mutedNotificationProps={mutedNotificationProps}\n callControlProps={{\n callInvitationURL: callInvitationURL,\n onFetchParticipantMenuItems: onFetchParticipantMenuItems,\n options: callControlOptions,\n increaseFlyoutItemSize: mobileView\n }}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n mobileView={mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() =>\n _isInCall(callStatus) ? (\n isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (\n onRenderGalleryContentTrampoline()\n ) : (\n <NetworkReconnectTile {...networkReconnectTileProps} isMobile={mobileView} />\n )\n ) : (\n <></>\n )\n }\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n onCloseChatPane={onCloseChatPane}\n dataUiId={'call-page'}\n latestErrors={props.latestErrors}\n latestNotifications={latestNotifications}\n onDismissError={props.onDismissError}\n onDismissNotification={onDismissNotification}\n onUserSetOverflowGalleryPositionChange={onSetUserSetOverflowGalleryPosition}\n onUserSetGalleryLayoutChange={onUserSetGalleryLayoutChange}\n userSetGalleryLayout={galleryLayout}\n capabilitiesChangedNotificationBarProps={props.capabilitiesChangedNotificationBarProps}\n onSetDialpadPage={() => setDtmfDialerPresent(!dtmfDialerPresent)}\n dtmfDialerPresent={dtmfDialerPresent}\n setIsPromptOpen={setIsPromptOpen}\n setPromptProps={setPromptProps}\n hideSpotlightButtons={options?.spotlight?.hideSpotlightButtons}\n pinnedParticipants={pinnedParticipantsChecked}\n setPinnedParticipants={setPinnedParticipants}\n /* @conditional-compile-remove(call-readiness) */\n doNotShowCameraAccessNotifications={props.options?.deviceChecks?.camera === 'doNotPrompt'}\n captionsOptions={options?.captionsBanner}\n dtmfDialerOptions={disableAutoShowDtmfDialer}\n />\n {<Prompt isOpen={isPromptOpen} onDismiss={() => setIsPromptOpen(false)} {...promptProps} />}\n </>\n );\n};\n\n/**\n * @private\n */\nexport const isNetworkHealthy = (value: DiagnosticQuality | boolean | undefined): boolean => {\n // We know that the value is actually of type DiagnosticQuality for this diagnostic.\n // We ignore any boolen values, considering the network to still be healthy.\n // Thus, only DiagnosticQuality.Poor or .Bad indicate network problems.\n return value === true || value === false || value === undefined || value === DiagnosticQuality.Good;\n};\n"]}
|
package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.d.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import { RemoteParticipantState } from "../../../../../calling-stateful-client/src";
|
2
2
|
import { CommunicationIdentifier } from '@azure/communication-common';
|
3
|
+
import { DtmfDialPadOptions } from '../CallComposite';
|
3
4
|
type ParticipantChangedAnnouncmentStrings = {
|
4
5
|
participantJoinedNoticeString: string;
|
5
6
|
twoParticipantJoinedNoticeString: string;
|
@@ -33,6 +34,6 @@ export declare const createAnnouncementString: (direction: 'joined' | 'left', pa
|
|
33
34
|
* when joining
|
34
35
|
* @returns whether the dialer should be the gallery content or not
|
35
36
|
*/
|
36
|
-
export declare const showDtmfDialer: (callees?: CommunicationIdentifier[], remoteParticipants?: RemoteParticipantState[]) => boolean;
|
37
|
+
export declare const showDtmfDialer: (callees?: CommunicationIdentifier[], remoteParticipants?: RemoteParticipantState[], dialerOptions?: boolean | DtmfDialPadOptions) => boolean;
|
37
38
|
export {};
|
38
39
|
//# sourceMappingURL=MediaGalleryUtils.d.ts.map
|
package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js
CHANGED
@@ -123,22 +123,39 @@ export const createAnnouncementString = (direction, participants, strings) => {
|
|
123
123
|
* when joining
|
124
124
|
* @returns whether the dialer should be the gallery content or not
|
125
125
|
*/
|
126
|
-
export const showDtmfDialer = (callees, remoteParticipants) => {
|
127
|
-
let
|
128
|
-
|
129
|
-
|
130
|
-
|
126
|
+
export const showDtmfDialer = (callees, remoteParticipants, dialerOptions) => {
|
127
|
+
let showDtmfDialerAuto = false;
|
128
|
+
if (typeof dialerOptions === 'object' && 'dialerBehavior' in dialerOptions) {
|
129
|
+
const hideDtmfDialerAlways = dialerOptions.dialerBehavior && dialerOptions.dialerBehavior === 'alwaysHide';
|
130
|
+
const showDtmfDialerAlways = dialerOptions.dialerBehavior === 'alwaysShow';
|
131
|
+
showDtmfDialerAuto = dialerOptions.dialerBehavior === 'autoShow' ? true : false;
|
132
|
+
if (showDtmfDialerAlways) {
|
133
|
+
return true;
|
131
134
|
}
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
135
|
+
if (hideDtmfDialerAlways) {
|
136
|
+
return false;
|
137
|
+
}
|
138
|
+
}
|
139
|
+
let showDtmfDialer = false;
|
140
|
+
/**
|
141
|
+
* We also want to check to see if the option is undefined. If this is the case we want this function
|
142
|
+
* to fallback on the original logic so that it will also render the callControls to show and hide the dialpad
|
143
|
+
* for the user.
|
144
|
+
*/
|
145
|
+
if (showDtmfDialerAuto || dialerOptions === undefined || dialerOptions === false) {
|
146
|
+
callees === null || callees === void 0 ? void 0 : callees.forEach((callee) => {
|
147
|
+
if (isMicrosoftTeamsAppIdentifier(callee) || isPhoneNumberIdentifier(callee)) {
|
148
|
+
showDtmfDialer = true;
|
137
149
|
}
|
138
150
|
});
|
151
|
+
if (remoteParticipants) {
|
152
|
+
remoteParticipants.forEach((participant) => {
|
153
|
+
if (!('phoneNumber' in participant.identifier || 'teamsAppId' in participant.identifier)) {
|
154
|
+
showDtmfDialer = false;
|
155
|
+
}
|
156
|
+
});
|
157
|
+
}
|
139
158
|
}
|
140
|
-
/* @conditional-compile-remove(dtmf-dialer-on-by-default) */
|
141
|
-
showDtmfDialer = true;
|
142
159
|
return showDtmfDialer;
|
143
160
|
};
|
144
161
|
//# sourceMappingURL=MediaGalleryUtils.js.map
|
package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MediaGalleryUtils.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { toFlatCommunicationIdentifier, _formatString } from '@internal/acs-ui-common';\nimport { RemoteParticipantState } from '@internal/calling-stateful-client';\nimport { useMemo, useRef, useState } from 'react';\nimport { useLocale } from '../../localization';\nimport { useSelector } from '../hooks/useSelector';\nimport { getRemoteParticipantsConnectedSelector } from '../selectors/mediaGallerySelector';\nimport {\n CommunicationIdentifier,\n isMicrosoftTeamsAppIdentifier,\n isPhoneNumberIdentifier\n} from '@azure/communication-common';\n\ntype ParticipantChangedAnnouncmentStrings = {\n participantJoinedNoticeString: string;\n twoParticipantJoinedNoticeString: string;\n threeParticipantJoinedNoticeString: string;\n participantLeftNoticeString: string;\n twoParticipantLeftNoticeString: string;\n threeParticipantLeftNoticeString: string;\n unnamedParticipantString: string;\n manyParticipantsJoined: string;\n manyParticipantsLeft: string;\n manyUnnamedParticipantsJoined: string;\n manyUnnamedParticipantsLeft: string;\n};\n\n/**\n * sets the announcement string whenever a Participant comes or goes from a call to be\n * used by the system narrator.\n *\n * @returns string to be used by the narrator and Announcer component\n *\n * @internal\n */\nexport const useParticipantChangedAnnouncement = (): string => {\n const locale = useLocale().strings.call;\n const strings = useMemo(() => {\n return {\n participantJoinedNoticeString: locale.participantJoinedNoticeString,\n twoParticipantJoinedNoticeString: locale.twoParticipantJoinedNoticeString,\n threeParticipantJoinedNoticeString: locale.threeParticipantJoinedNoticeString,\n participantLeftNoticeString: locale.participantLeftNoticeString,\n twoParticipantLeftNoticeString: locale.twoParticipantLeftNoticeString,\n threeParticipantLeftNoticeString: locale.threeParticipantLeftNoticeString,\n unnamedParticipantString: locale.unnamedParticipantString,\n manyParticipantsJoined: locale.manyParticipantsJoined,\n manyParticipantsLeft: locale.manyParticipantsLeft,\n manyUnnamedParticipantsJoined: locale.manyUnnamedParticipantsJoined,\n manyUnnamedParticipantsLeft: locale.manyUnnamedParticipantsLeft\n };\n }, [locale]);\n const [announcerString, setAnnouncerString] = useState<string>('');\n const currentParticipants = useSelector(getRemoteParticipantsConnectedSelector);\n /**\n * We want to use a useRef here since we want to not fire this hook based on the previous participants\n * this allows this value to be used in the hook without being in the dependency array.\n *\n * Note: By definition if this hook is used in another component it is not pure anymore.\n */\n const previousParticipants = useRef<RemoteParticipantState[]>(currentParticipants);\n\n const resetAnnoucement = (string: string): void => {\n setAnnouncerString(string);\n };\n\n useMemo(() => {\n const currentIds = currentParticipants.map((p) => toFlatCommunicationIdentifier(p.identifier));\n const previousIds = previousParticipants.current.map((p) => toFlatCommunicationIdentifier(p.identifier));\n const whoJoined = currentParticipants.filter(\n (p) => !previousIds.includes(toFlatCommunicationIdentifier(p.identifier))\n );\n const whoLeft = previousParticipants.current.filter(\n (p) => !currentIds.includes(toFlatCommunicationIdentifier(p.identifier))\n );\n if (whoJoined.length > 0) {\n resetAnnoucement(createAnnouncementString('joined', whoJoined, strings));\n }\n if (whoLeft.length > 0) {\n resetAnnoucement(createAnnouncementString('left', whoLeft, strings));\n }\n // Update cached value at the end.\n previousParticipants.current = currentParticipants;\n }, [currentParticipants, strings]);\n return announcerString;\n};\n\n/**\n * Generates the announcement string for when a participant joins or leaves a call.\n */\nexport const createAnnouncementString = (\n direction: 'joined' | 'left',\n participants: RemoteParticipantState[],\n strings: ParticipantChangedAnnouncmentStrings\n): string => {\n /**\n * If there are no participants return empty string.\n */\n if (participants.length === 0) {\n return '';\n }\n /**\n * Filter participants into two arrays to put all the unnamed participants at the back of the\n * names being announced.\n */\n const unnamedParticipants = participants.filter((p) => !p.displayName);\n const namedParicipants = participants.filter((p) => p.displayName);\n const sortedParticipants = namedParicipants.concat(unnamedParticipants);\n\n /**\n * if there are only unnamed participants present in the array announce a special unnamed participants\n * only string.\n */\n if (sortedParticipants.filter((p) => p.displayName).length === 0 && sortedParticipants.length > 1) {\n return _formatString(\n direction === 'joined' ? strings.manyUnnamedParticipantsJoined : strings.manyUnnamedParticipantsLeft,\n {\n numOfParticipants: (sortedParticipants.length - 1).toString()\n }\n );\n }\n\n switch (sortedParticipants.length) {\n case 1:\n return _formatString(\n direction === 'joined' ? strings.participantJoinedNoticeString : strings.participantLeftNoticeString,\n { displayName: sortedParticipants[0]?.displayName ?? strings.unnamedParticipantString }\n );\n case 2:\n return _formatString(\n direction === 'joined' ? strings.twoParticipantJoinedNoticeString : strings.twoParticipantLeftNoticeString,\n {\n displayName1: sortedParticipants[0]?.displayName ?? strings.unnamedParticipantString,\n displayName2: sortedParticipants[1]?.displayName ?? strings.unnamedParticipantString\n }\n );\n case 3:\n return _formatString(\n direction === 'joined' ? strings.threeParticipantJoinedNoticeString : strings.threeParticipantLeftNoticeString,\n {\n displayName1: sortedParticipants[0]?.displayName ?? strings.unnamedParticipantString,\n displayName2: sortedParticipants[1]?.displayName ?? strings.unnamedParticipantString,\n displayName3: sortedParticipants[2]?.displayName ?? strings.unnamedParticipantString\n }\n );\n }\n\n /**\n * If we have more than 3 participants joining we need to do something more to announce them\n * appropriately.\n *\n * We don't want to announce every name when more than 3 participants join at once so\n * we parse out the first 3 names we have and announce those with the number of others.\n */\n\n const numberOfExtraParticipants = sortedParticipants.length - 3;\n\n return _formatString(direction === 'joined' ? strings.manyParticipantsJoined : strings.manyParticipantsLeft, {\n displayName1: sortedParticipants[0]?.displayName ?? strings.unnamedParticipantString,\n displayName2: sortedParticipants[1]?.displayName ?? strings.unnamedParticipantString,\n displayName3: sortedParticipants[2]?.displayName ?? strings.unnamedParticipantString,\n numOfParticipants: numberOfExtraParticipants.toString()\n });\n};\n\n/**\n * determines if the media gallery should be replaced by the dtmf dialer\n * @param callees Target callees to determine if the dtmf dialer should be shown\n * @param remoteParticipants Remote participants to determine if the dtmf dialer should be shown if there are participants in the call\n * when joining\n * @returns whether the dialer should be the gallery content or not\n */\nexport const showDtmfDialer = (\n callees?: CommunicationIdentifier[],\n remoteParticipants?: RemoteParticipantState[]\n): boolean => {\n let showDtmfDialer = false;\n callees?.forEach((callee) => {\n if (isMicrosoftTeamsAppIdentifier(callee) || isPhoneNumberIdentifier(callee)) {\n showDtmfDialer = true;\n }\n });\n if (remoteParticipants) {\n remoteParticipants.forEach((participant) => {\n if (!('phoneNumber' in participant.identifier || 'teamsAppId' in participant.identifier)) {\n showDtmfDialer = false;\n }\n });\n }\n /* @conditional-compile-remove(dtmf-dialer-on-by-default) */\n showDtmfDialer = true;\n return showDtmfDialer;\n};\n"]}
|
1
|
+
{"version":3,"file":"MediaGalleryUtils.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { toFlatCommunicationIdentifier, _formatString } from '@internal/acs-ui-common';\nimport { RemoteParticipantState } from '@internal/calling-stateful-client';\nimport { useMemo, useRef, useState } from 'react';\nimport { useLocale } from '../../localization';\nimport { useSelector } from '../hooks/useSelector';\nimport { getRemoteParticipantsConnectedSelector } from '../selectors/mediaGallerySelector';\nimport {\n CommunicationIdentifier,\n isMicrosoftTeamsAppIdentifier,\n isPhoneNumberIdentifier\n} from '@azure/communication-common';\nimport { DtmfDialPadOptions } from '../CallComposite';\n\ntype ParticipantChangedAnnouncmentStrings = {\n participantJoinedNoticeString: string;\n twoParticipantJoinedNoticeString: string;\n threeParticipantJoinedNoticeString: string;\n participantLeftNoticeString: string;\n twoParticipantLeftNoticeString: string;\n threeParticipantLeftNoticeString: string;\n unnamedParticipantString: string;\n manyParticipantsJoined: string;\n manyParticipantsLeft: string;\n manyUnnamedParticipantsJoined: string;\n manyUnnamedParticipantsLeft: string;\n};\n\n/**\n * sets the announcement string whenever a Participant comes or goes from a call to be\n * used by the system narrator.\n *\n * @returns string to be used by the narrator and Announcer component\n *\n * @internal\n */\nexport const useParticipantChangedAnnouncement = (): string => {\n const locale = useLocale().strings.call;\n const strings = useMemo(() => {\n return {\n participantJoinedNoticeString: locale.participantJoinedNoticeString,\n twoParticipantJoinedNoticeString: locale.twoParticipantJoinedNoticeString,\n threeParticipantJoinedNoticeString: locale.threeParticipantJoinedNoticeString,\n participantLeftNoticeString: locale.participantLeftNoticeString,\n twoParticipantLeftNoticeString: locale.twoParticipantLeftNoticeString,\n threeParticipantLeftNoticeString: locale.threeParticipantLeftNoticeString,\n unnamedParticipantString: locale.unnamedParticipantString,\n manyParticipantsJoined: locale.manyParticipantsJoined,\n manyParticipantsLeft: locale.manyParticipantsLeft,\n manyUnnamedParticipantsJoined: locale.manyUnnamedParticipantsJoined,\n manyUnnamedParticipantsLeft: locale.manyUnnamedParticipantsLeft\n };\n }, [locale]);\n const [announcerString, setAnnouncerString] = useState<string>('');\n const currentParticipants = useSelector(getRemoteParticipantsConnectedSelector);\n /**\n * We want to use a useRef here since we want to not fire this hook based on the previous participants\n * this allows this value to be used in the hook without being in the dependency array.\n *\n * Note: By definition if this hook is used in another component it is not pure anymore.\n */\n const previousParticipants = useRef<RemoteParticipantState[]>(currentParticipants);\n\n const resetAnnoucement = (string: string): void => {\n setAnnouncerString(string);\n };\n\n useMemo(() => {\n const currentIds = currentParticipants.map((p) => toFlatCommunicationIdentifier(p.identifier));\n const previousIds = previousParticipants.current.map((p) => toFlatCommunicationIdentifier(p.identifier));\n const whoJoined = currentParticipants.filter(\n (p) => !previousIds.includes(toFlatCommunicationIdentifier(p.identifier))\n );\n const whoLeft = previousParticipants.current.filter(\n (p) => !currentIds.includes(toFlatCommunicationIdentifier(p.identifier))\n );\n if (whoJoined.length > 0) {\n resetAnnoucement(createAnnouncementString('joined', whoJoined, strings));\n }\n if (whoLeft.length > 0) {\n resetAnnoucement(createAnnouncementString('left', whoLeft, strings));\n }\n // Update cached value at the end.\n previousParticipants.current = currentParticipants;\n }, [currentParticipants, strings]);\n return announcerString;\n};\n\n/**\n * Generates the announcement string for when a participant joins or leaves a call.\n */\nexport const createAnnouncementString = (\n direction: 'joined' | 'left',\n participants: RemoteParticipantState[],\n strings: ParticipantChangedAnnouncmentStrings\n): string => {\n /**\n * If there are no participants return empty string.\n */\n if (participants.length === 0) {\n return '';\n }\n /**\n * Filter participants into two arrays to put all the unnamed participants at the back of the\n * names being announced.\n */\n const unnamedParticipants = participants.filter((p) => !p.displayName);\n const namedParicipants = participants.filter((p) => p.displayName);\n const sortedParticipants = namedParicipants.concat(unnamedParticipants);\n\n /**\n * if there are only unnamed participants present in the array announce a special unnamed participants\n * only string.\n */\n if (sortedParticipants.filter((p) => p.displayName).length === 0 && sortedParticipants.length > 1) {\n return _formatString(\n direction === 'joined' ? strings.manyUnnamedParticipantsJoined : strings.manyUnnamedParticipantsLeft,\n {\n numOfParticipants: (sortedParticipants.length - 1).toString()\n }\n );\n }\n\n switch (sortedParticipants.length) {\n case 1:\n return _formatString(\n direction === 'joined' ? strings.participantJoinedNoticeString : strings.participantLeftNoticeString,\n { displayName: sortedParticipants[0]?.displayName ?? strings.unnamedParticipantString }\n );\n case 2:\n return _formatString(\n direction === 'joined' ? strings.twoParticipantJoinedNoticeString : strings.twoParticipantLeftNoticeString,\n {\n displayName1: sortedParticipants[0]?.displayName ?? strings.unnamedParticipantString,\n displayName2: sortedParticipants[1]?.displayName ?? strings.unnamedParticipantString\n }\n );\n case 3:\n return _formatString(\n direction === 'joined' ? strings.threeParticipantJoinedNoticeString : strings.threeParticipantLeftNoticeString,\n {\n displayName1: sortedParticipants[0]?.displayName ?? strings.unnamedParticipantString,\n displayName2: sortedParticipants[1]?.displayName ?? strings.unnamedParticipantString,\n displayName3: sortedParticipants[2]?.displayName ?? strings.unnamedParticipantString\n }\n );\n }\n\n /**\n * If we have more than 3 participants joining we need to do something more to announce them\n * appropriately.\n *\n * We don't want to announce every name when more than 3 participants join at once so\n * we parse out the first 3 names we have and announce those with the number of others.\n */\n\n const numberOfExtraParticipants = sortedParticipants.length - 3;\n\n return _formatString(direction === 'joined' ? strings.manyParticipantsJoined : strings.manyParticipantsLeft, {\n displayName1: sortedParticipants[0]?.displayName ?? strings.unnamedParticipantString,\n displayName2: sortedParticipants[1]?.displayName ?? strings.unnamedParticipantString,\n displayName3: sortedParticipants[2]?.displayName ?? strings.unnamedParticipantString,\n numOfParticipants: numberOfExtraParticipants.toString()\n });\n};\n\n/**\n * determines if the media gallery should be replaced by the dtmf dialer\n * @param callees Target callees to determine if the dtmf dialer should be shown\n * @param remoteParticipants Remote participants to determine if the dtmf dialer should be shown if there are participants in the call\n * when joining\n * @returns whether the dialer should be the gallery content or not\n */\nexport const showDtmfDialer = (\n callees?: CommunicationIdentifier[],\n remoteParticipants?: RemoteParticipantState[],\n dialerOptions?: boolean | DtmfDialPadOptions\n): boolean => {\n let showDtmfDialerAuto = false;\n if (typeof dialerOptions === 'object' && 'dialerBehavior' in dialerOptions) {\n const hideDtmfDialerAlways = dialerOptions.dialerBehavior && dialerOptions.dialerBehavior === 'alwaysHide';\n const showDtmfDialerAlways = dialerOptions.dialerBehavior === 'alwaysShow';\n showDtmfDialerAuto = dialerOptions.dialerBehavior === 'autoShow' ? true : false;\n if (showDtmfDialerAlways) {\n return true;\n }\n if (hideDtmfDialerAlways) {\n return false;\n }\n }\n let showDtmfDialer = false;\n\n /**\n * We also want to check to see if the option is undefined. If this is the case we want this function\n * to fallback on the original logic so that it will also render the callControls to show and hide the dialpad\n * for the user.\n */\n if (showDtmfDialerAuto || dialerOptions === undefined || dialerOptions === false) {\n callees?.forEach((callee) => {\n if (isMicrosoftTeamsAppIdentifier(callee) || isPhoneNumberIdentifier(callee)) {\n showDtmfDialer = true;\n }\n });\n if (remoteParticipants) {\n remoteParticipants.forEach((participant) => {\n if (!('phoneNumber' in participant.identifier || 'teamsAppId' in participant.identifier)) {\n showDtmfDialer = false;\n }\n });\n }\n }\n return showDtmfDialer;\n};\n"]}
|
@@ -11,38 +11,35 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
11
11
|
};
|
12
12
|
import React from 'react';
|
13
13
|
import { useCallback } from 'react';
|
14
|
-
import {
|
14
|
+
import { StartCaptionsButton } from "../../../../react-components/src";
|
15
15
|
import { useMemo } from 'react';
|
16
|
-
import { useAdaptedSelector } from '../CallComposite/hooks/useAdaptedSelector';
|
17
|
-
import { useHandlers } from '../CallComposite/hooks/useHandlers';
|
18
16
|
import { buttonFlyoutIncreasedSizeStyles } from '../CallComposite/styles/Buttons.styles';
|
19
17
|
import { useLocale } from '../localization';
|
20
18
|
import { MoreButton } from './MoreButton';
|
21
|
-
import { _startCaptionsButtonSelector } from "../../../../calling-component-bindings/src";
|
22
19
|
import { _preventDismissOnEvent } from "../../../../acs-ui-common/src";
|
20
|
+
import { usePropsFor } from '../CallComposite/hooks/usePropsFor';
|
23
21
|
/**
|
24
22
|
*
|
25
23
|
* @private
|
26
24
|
*/
|
27
25
|
export const CaptionsBannerMoreButton = (props) => {
|
28
26
|
const localeStrings = useLocale();
|
29
|
-
const startCaptionsButtonProps =
|
30
|
-
const startCaptionsButtonHandlers = useHandlers(_StartCaptionsButton);
|
27
|
+
const startCaptionsButtonProps = usePropsFor(StartCaptionsButton);
|
31
28
|
const moreButtonStrings = useMemo(() => ({
|
32
29
|
label: localeStrings.strings.call.captionsBannerMoreButtonCallingLabel,
|
33
30
|
tooltipOffContent: localeStrings.strings.call.captionsBannerMoreButtonTooltip
|
34
31
|
}), [localeStrings]);
|
35
32
|
const moreButtonContextualMenuItems = [];
|
36
33
|
const startCaptions = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
37
|
-
yield
|
34
|
+
yield startCaptionsButtonProps.onStartCaptions({
|
38
35
|
spokenLanguage: startCaptionsButtonProps.currentSpokenLanguage
|
39
36
|
});
|
40
|
-
}), [
|
37
|
+
}), [startCaptionsButtonProps]);
|
41
38
|
const stopCaptions = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
42
39
|
var _a, _b;
|
43
|
-
yield
|
40
|
+
yield startCaptionsButtonProps.onStopCaptions();
|
44
41
|
(_b = (_a = props.returnFocusRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.focus();
|
45
|
-
}), [
|
42
|
+
}), [startCaptionsButtonProps, props.returnFocusRef]);
|
46
43
|
moreButtonContextualMenuItems.push({
|
47
44
|
key: 'ToggleCaptionsKey',
|
48
45
|
text: startCaptionsButtonProps.checked
|