@azure/communication-react 1.23.0-alpha-202412250016 → 1.23.0-alpha-202412270016
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/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-C6Du7wUK.js → ChatMessageComponentAsRichTextEditBox-CCXnpoKF.js} +2 -2
- package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-C6Du7wUK.js.map → ChatMessageComponentAsRichTextEditBox-CCXnpoKF.js.map} +1 -1
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-Bom0XN_g.js → RichTextSendBoxWrapper-6PxjjqPz.js} +2 -2
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-Bom0XN_g.js.map → RichTextSendBoxWrapper-6PxjjqPz.js.map} +1 -1
- package/dist/dist-cjs/communication-react/{index-CtNIEfdh.js → index-CusJUNf0.js} +58 -19
- package/dist/dist-cjs/communication-react/{index-CtNIEfdh.js.map → index-CusJUNf0.js.map} +1 -1
- package/dist/dist-cjs/communication-react/index.js +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/react-composites/src/composites/CallComposite/components/CallArrangement.js +8 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js +10 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +5 -4
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/PeopleButton.d.ts +11 -2
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/PeopleButton.js +18 -3
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/PeopleButton.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +3 -3
- package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/SidePaneHeader.d.ts +5 -1
- package/dist/dist-esm/react-composites/src/composites/common/SidePaneHeader.js +13 -2
- package/dist/dist-esm/react-composites/src/composites/common/SidePaneHeader.js.map +1 -1
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"telemetryVersion.js","sourceRoot":"","sources":["../../../../../acs-ui-common/src/telemetryVersion.js"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAElC,wCAAwC;AAExC,MAAM,CAAC,OAAO,GAAG,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// GENERATED FILE. DO NOT EDIT MANUALLY.\n\nmodule.exports = '1.23.0-alpha-
|
1
|
+
{"version":3,"file":"telemetryVersion.js","sourceRoot":"","sources":["../../../../../acs-ui-common/src/telemetryVersion.js"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAElC,wCAAwC;AAExC,MAAM,CAAC,OAAO,GAAG,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// GENERATED FILE. DO NOT EDIT MANUALLY.\n\nmodule.exports = '1.23.0-alpha-202412270016';\n"]}
|
package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js
CHANGED
@@ -66,6 +66,7 @@ export const CallArrangement = (props) => {
|
|
66
66
|
const controlBarRef = useRef(null);
|
67
67
|
const peopleButtonRef = useRef(null);
|
68
68
|
const cameraButtonRef = useRef(null);
|
69
|
+
const sidePaneDismissButtonRef = useRef(null);
|
69
70
|
const containerRef = useRef(null);
|
70
71
|
const containerWidth = _useContainerWidth(containerRef);
|
71
72
|
const containerHeight = _useContainerHeight(containerRef);
|
@@ -99,7 +100,9 @@ export const CallArrangement = (props) => {
|
|
99
100
|
onFetchParticipantMenuItems: (_a = props.callControlProps) === null || _a === void 0 ? void 0 : _a.onFetchParticipantMenuItems,
|
100
101
|
mobileView: props.mobileView,
|
101
102
|
peopleButtonRef,
|
102
|
-
setParticipantActioned
|
103
|
+
setParticipantActioned,
|
104
|
+
sidePaneDismissButtonRef,
|
105
|
+
chatButtonPresent: !!props.onCloseChatPane
|
103
106
|
});
|
104
107
|
}, [
|
105
108
|
updateSidePaneRenderer,
|
@@ -108,7 +111,9 @@ export const CallArrangement = (props) => {
|
|
108
111
|
props.onFetchAvatarPersonaData,
|
109
112
|
props.mobileView,
|
110
113
|
peopleButtonRef,
|
111
|
-
setParticipantActioned
|
114
|
+
setParticipantActioned,
|
115
|
+
sidePaneDismissButtonRef,
|
116
|
+
props.onCloseChatPane
|
112
117
|
]);
|
113
118
|
const locale = useLocale();
|
114
119
|
const role = useSelector(getRole);
|
@@ -337,7 +342,7 @@ export const CallArrangement = (props) => {
|
|
337
342
|
((_g = props.callControlProps) === null || _g === void 0 ? void 0 : _g.options) !== false && !isMobileWithActivePane && (React.createElement(Stack, { verticalAlign: 'center', className: mergeStyles({
|
338
343
|
zIndex: CONTROL_BAR_Z_INDEX,
|
339
344
|
padding: verticalControlBar ? '0.25rem' : 'unset'
|
340
|
-
}) }, isLegacyCallControlEnabled((_h = props.callControlProps) === null || _h === void 0 ? void 0 : _h.options) ? (React.createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView, peopleButtonChecked: isPeoplePaneOpen, onPeopleButtonClicked: togglePeoplePane, displayVertical: verticalControlBar }))) : (React.createElement(CommonCallControlBar, Object.assign({}, props.callControlProps, { ref: controlBarRef, callControls: props.callControlProps.options, callAdapter: adapter, mobileView: props.mobileView, disableButtonsForLobbyPage: isInLobby, disableButtonsForHoldScreen: isInLocalHold, peopleButtonChecked: isPeoplePaneOpen, onPeopleButtonClicked: togglePeoplePane, onMoreButtonClicked: onMoreButtonClicked, isCaptionsSupported: (useTeamsCaptions && hasJoinedCall) || hasJoinedCall, useTeamsCaptions: useTeamsCaptions, isCaptionsOn: isCaptionsOn, onClickVideoEffects: onResolveVideoEffectDependency ? openVideoEffectsPane : undefined, displayVertical: verticalControlBar, onUserSetOverflowGalleryPositionChange: props.onUserSetOverflowGalleryPositionChange, onUserSetGalleryLayout: props.onUserSetGalleryLayoutChange, userSetGalleryLayout: props.userSetGalleryLayout, onSetDialpadPage: props.onSetDialpadPage, dtmfDialerPresent: props.dtmfDialerPresent, peopleButtonRef: peopleButtonRef, cameraButtonRef: cameraButtonRef, onStopLocalSpotlight: !hideSpotlightButtons && localParticipant.spotlight ? onStopLocalSpotlightWithPrompt : undefined, onToggleTeamsMeetingConferenceModal: toggleTeamsMeetingConferenceModal, teamsMeetingConferenceModalPresent: showTeamsMeetingConferenceModal }))))),
|
345
|
+
}) }, isLegacyCallControlEnabled((_h = props.callControlProps) === null || _h === void 0 ? void 0 : _h.options) ? (React.createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView, peopleButtonChecked: isPeoplePaneOpen, onPeopleButtonClicked: togglePeoplePane, displayVertical: verticalControlBar }))) : (React.createElement(CommonCallControlBar, Object.assign({}, props.callControlProps, { ref: controlBarRef, callControls: props.callControlProps.options, callAdapter: adapter, mobileView: props.mobileView, disableButtonsForLobbyPage: isInLobby, disableButtonsForHoldScreen: isInLocalHold, peopleButtonChecked: isPeoplePaneOpen, onPeopleButtonClicked: togglePeoplePane, onMoreButtonClicked: onMoreButtonClicked, isCaptionsSupported: (useTeamsCaptions && hasJoinedCall) || hasJoinedCall, useTeamsCaptions: useTeamsCaptions, isCaptionsOn: isCaptionsOn, onClickVideoEffects: onResolveVideoEffectDependency ? openVideoEffectsPane : undefined, displayVertical: verticalControlBar, onUserSetOverflowGalleryPositionChange: props.onUserSetOverflowGalleryPositionChange, onUserSetGalleryLayout: props.onUserSetGalleryLayoutChange, userSetGalleryLayout: props.userSetGalleryLayout, onSetDialpadPage: props.onSetDialpadPage, dtmfDialerPresent: props.dtmfDialerPresent, peopleButtonRef: peopleButtonRef, cameraButtonRef: cameraButtonRef, onStopLocalSpotlight: !hideSpotlightButtons && localParticipant.spotlight ? onStopLocalSpotlightWithPrompt : undefined, onToggleTeamsMeetingConferenceModal: toggleTeamsMeetingConferenceModal, teamsMeetingConferenceModalPresent: showTeamsMeetingConferenceModal, sidePaneDismissButtonRef: sidePaneDismissButtonRef }))))),
|
341
346
|
((_j = props.callControlProps) === null || _j === void 0 ? void 0 : _j.options) !== false && showDrawer && (React.createElement(Stack, { styles: drawerContainerStylesValue },
|
342
347
|
React.createElement(PreparedMoreDrawer, { callControls: props.callControlProps.options, onLightDismiss: closeDrawer, onPeopleButtonClicked: onMoreDrawerPeopleClicked, disableButtonsForHoldScreen: isInLocalHold, isCaptionsSupported: (useTeamsCaptions && hasJoinedCall) || hasJoinedCall, useTeamsCaptions: useTeamsCaptions, onUserSetGalleryLayout: props.onUserSetGalleryLayoutChange, userSetGalleryLayout: props.userSetGalleryLayout, onSetDialpadPage: props.onSetDialpadPage, dtmfDialerPresent: props.dtmfDialerPresent, dtmfDialerOptions: props.dtmfDialerOptions, reactionResources: reactionResources, onClickMeetingPhoneInfo: onMeetingPhoneInfoClicked }))),
|
343
348
|
React.createElement(Stack, { horizontal: true, grow: true },
|
@@ -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';\n/* @conditional-compile-remove(media-access) */\nimport { getMediaAccessSetting } from '../selectors/baseSelectors';\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 /* @conditional-compile-remove(media-access) */\n onForbidAudio,\n /* @conditional-compile-remove(media-access) */\n onPermitAudio,\n /* @conditional-compile-remove(media-access) */\n onForbidVideo,\n /* @conditional-compile-remove(media-access) */\n onPermitVideo\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 /* @conditional-compile-remove(media-access) */\n const meetingMediaAccess = useSelector(getMediaAccessSetting);\n /* @conditional-compile-remove(media-access) */\n const canForbidOthersAudio = !!capabilities?.forbidOthersAudio?.isPresent;\n /* @conditional-compile-remove(media-access) */\n const canForbidOthersVideo = !!capabilities?.forbidOthersVideo?.isPresent;\n /* @conditional-compile-remove(media-access) */\n const onToggleParticipantMicPeoplePaneProps = useMemo(() => {\n return {\n onForbidAudio: canForbidOthersAudio ? onForbidAudio : undefined,\n onPermitAudio: canForbidOthersAudio ? onPermitAudio : undefined,\n onForbidOthersAudio: canForbidOthersAudio ? muteAllHandlers.onForbidOthersAudio : undefined,\n onPermitOthersAudio: canForbidOthersAudio ? muteAllHandlers.onPermitOthersAudio : undefined,\n onForbidVideo: canForbidOthersVideo ? onForbidVideo : undefined,\n onPermitVideo: canForbidOthersVideo ? onPermitVideo : undefined,\n onForbidOthersVideo: canForbidOthersVideo ? muteAllHandlers.onForbidOthersVideo : undefined,\n onPermitOthersVideo: canForbidOthersVideo ? muteAllHandlers.onPermitOthersVideo : undefined,\n meetingMediaAccess\n };\n }, [\n canForbidOthersAudio,\n onForbidAudio,\n onPermitAudio,\n muteAllHandlers.onForbidOthersAudio,\n muteAllHandlers.onPermitOthersAudio,\n muteAllHandlers.onForbidOthersVideo,\n muteAllHandlers.onPermitOthersVideo,\n canForbidOthersVideo,\n onForbidVideo,\n onPermitVideo,\n meetingMediaAccess\n ]);\n\n const { isPeoplePaneOpen, openPeoplePane, closePeoplePane } = usePeoplePane({\n ...peoplePaneProps,\n ...spotlightPeoplePaneProps,\n ...onMuteParticipantPeoplePaneProps,\n ...pinPeoplePaneProps,\n /* @conditional-compile-remove(media-access) */ ...onToggleParticipantMicPeoplePaneProps\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"]}
|
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';\n/* @conditional-compile-remove(media-access) */\nimport { getMediaAccessSetting } from '../selectors/baseSelectors';\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 const sidePaneDismissButtonRef = 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 sidePaneDismissButtonRef,\n chatButtonPresent: !!props.onCloseChatPane\n }),\n [\n updateSidePaneRenderer,\n props.callControlProps.callInvitationURL,\n props.callControlProps?.onFetchParticipantMenuItems,\n props.onFetchAvatarPersonaData,\n props.mobileView,\n peopleButtonRef,\n setParticipantActioned,\n sidePaneDismissButtonRef,\n props.onCloseChatPane\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 /* @conditional-compile-remove(media-access) */\n onForbidAudio,\n /* @conditional-compile-remove(media-access) */\n onPermitAudio,\n /* @conditional-compile-remove(media-access) */\n onForbidVideo,\n /* @conditional-compile-remove(media-access) */\n onPermitVideo\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 /* @conditional-compile-remove(media-access) */\n const meetingMediaAccess = useSelector(getMediaAccessSetting);\n /* @conditional-compile-remove(media-access) */\n const canForbidOthersAudio = !!capabilities?.forbidOthersAudio?.isPresent;\n /* @conditional-compile-remove(media-access) */\n const canForbidOthersVideo = !!capabilities?.forbidOthersVideo?.isPresent;\n /* @conditional-compile-remove(media-access) */\n const onToggleParticipantMicPeoplePaneProps = useMemo(() => {\n return {\n onForbidAudio: canForbidOthersAudio ? onForbidAudio : undefined,\n onPermitAudio: canForbidOthersAudio ? onPermitAudio : undefined,\n onForbidOthersAudio: canForbidOthersAudio ? muteAllHandlers.onForbidOthersAudio : undefined,\n onPermitOthersAudio: canForbidOthersAudio ? muteAllHandlers.onPermitOthersAudio : undefined,\n onForbidVideo: canForbidOthersVideo ? onForbidVideo : undefined,\n onPermitVideo: canForbidOthersVideo ? onPermitVideo : undefined,\n onForbidOthersVideo: canForbidOthersVideo ? muteAllHandlers.onForbidOthersVideo : undefined,\n onPermitOthersVideo: canForbidOthersVideo ? muteAllHandlers.onPermitOthersVideo : undefined,\n meetingMediaAccess\n };\n }, [\n canForbidOthersAudio,\n onForbidAudio,\n onPermitAudio,\n muteAllHandlers.onForbidOthersAudio,\n muteAllHandlers.onPermitOthersAudio,\n muteAllHandlers.onForbidOthersVideo,\n muteAllHandlers.onPermitOthersVideo,\n canForbidOthersVideo,\n onForbidVideo,\n onPermitVideo,\n meetingMediaAccess\n ]);\n\n const { isPeoplePaneOpen, openPeoplePane, closePeoplePane } = usePeoplePane({\n ...peoplePaneProps,\n ...spotlightPeoplePaneProps,\n ...onMuteParticipantPeoplePaneProps,\n ...pinPeoplePaneProps,\n /* @conditional-compile-remove(media-access) */ ...onToggleParticipantMicPeoplePaneProps\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 sidePaneDismissButtonRef={sidePaneDismissButtonRef}\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"]}
|
@@ -36,6 +36,8 @@ export declare const usePeoplePane: (props: {
|
|
36
36
|
onForbidOthersVideo?: () => Promise<void>;
|
37
37
|
onPermitOthersVideo?: () => Promise<void>;
|
38
38
|
meetingMediaAccess?: MediaAccess;
|
39
|
+
sidePaneDismissButtonRef?: RefObject<IButton>;
|
40
|
+
chatButtonPresent?: boolean;
|
39
41
|
}) => {
|
40
42
|
openPeoplePane: () => void;
|
41
43
|
closePeoplePane: () => void;
|
@@ -29,7 +29,7 @@ export const usePeoplePane = (props) => {
|
|
29
29
|
/* @conditional-compile-remove(media-access) */
|
30
30
|
onPermitOthersVideo,
|
31
31
|
/* @conditional-compile-remove(media-access) */
|
32
|
-
meetingMediaAccess } = props;
|
32
|
+
meetingMediaAccess, sidePaneDismissButtonRef, chatButtonPresent } = props;
|
33
33
|
const closePane = useCallback(() => {
|
34
34
|
var _a;
|
35
35
|
updateSidePaneRenderer(undefined);
|
@@ -235,7 +235,15 @@ export const usePeoplePane = (props) => {
|
|
235
235
|
localeStrings.permitOthersVideoMenuLabel,
|
236
236
|
localeStrings.stopAllSpotlightMenuLabel
|
237
237
|
]);
|
238
|
-
const onRenderHeader = useCallback(() => (React.createElement(SidePaneHeader, { onClose: closePane, headingText: localeStrings.peoplePaneTitle, dismissSidePaneButtonAriaLabel: localeStrings.dismissSidePaneButtonLabel, mobileView: mobileView !== null && mobileView !== void 0 ? mobileView : false })), [
|
238
|
+
const onRenderHeader = useCallback(() => (React.createElement(SidePaneHeader, { onClose: closePane, paneOpenerButton: peopleButtonRef, headingText: localeStrings.peoplePaneTitle, dismissSidePaneButtonAriaLabel: localeStrings.dismissSidePaneButtonLabel, mobileView: mobileView !== null && mobileView !== void 0 ? mobileView : false, dismissButtonComponentRef: sidePaneDismissButtonRef, chatButtonPresent: chatButtonPresent })), [
|
239
|
+
closePane,
|
240
|
+
peopleButtonRef,
|
241
|
+
localeStrings.peoplePaneTitle,
|
242
|
+
localeStrings.dismissSidePaneButtonLabel,
|
243
|
+
mobileView,
|
244
|
+
sidePaneDismissButtonRef,
|
245
|
+
chatButtonPresent
|
246
|
+
]);
|
239
247
|
const onFetchParticipantMenuItemsForCallComposite = useCallback((participantId, myUserId, defaultMenuItems) => {
|
240
248
|
var _a, _b;
|
241
249
|
let isPinned = pinnedParticipants === null || pinnedParticipants === void 0 ? void 0 : pinnedParticipants.includes(participantId);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"usePeoplePane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { RefObject, useCallback, useEffect, useMemo, useState } from 'react';\nimport { SidePaneRenderer, useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\nimport { PeoplePaneContent } from '../../../common/PeoplePaneContent';\nimport { useLocale } from '../../../localization';\nimport { ParticipantMenuItemsCallback, _DrawerMenuItemProps } from '@internal/react-components';\nimport { AvatarPersonaDataCallback } from '../../../common/AvatarPersona';\nimport { IButton, IContextualMenuProps, IContextualMenuItem } from '@fluentui/react';\nimport { useSelector } from '../../hooks/useSelector';\nimport { getAlternateCallerId, getRemoteParticipants, getRole } from '../../selectors/baseSelectors';\nimport { Prompt } from '../Prompt';\n/* @conditional-compile-remove(media-access) */\nimport { MediaAccess } from '@internal/react-components';\n\nconst PEOPLE_SIDE_PANE_ID = 'people';\n\n/** @private */\nexport const usePeoplePane = (props: {\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n setDrawerMenuItems: (items: _DrawerMenuItemProps[]) => void;\n inviteLink?: string;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n mobileView?: boolean;\n peopleButtonRef?: RefObject<IButton>;\n setParticipantActioned?: (userId: string) => void;\n spotlightedParticipantUserIds?: string[];\n onStartLocalSpotlight?: () => Promise<void>;\n onStopLocalSpotlight?: () => Promise<void>;\n onStartRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n onStopRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n onStopAllSpotlight?: () => Promise<void>;\n maxParticipantsToSpotlight?: number;\n onMuteParticipant?: (userId: string) => Promise<void>;\n onMuteAllRemoteParticipants?: () => Promise<void>;\n pinnedParticipants?: string[];\n onPinParticipant?: (userId: string) => void;\n onUnpinParticipant?: (userId: string) => void;\n disablePinMenuItem?: boolean;\n /* @conditional-compile-remove(media-access) */\n onForbidAudio?: (userIds: string[]) => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onPermitAudio?: (userIds: string[]) => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onForbidOthersAudio?: () => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onPermitOthersAudio?: () => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onForbidVideo?: (userIds: string[]) => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onPermitVideo?: (userIds: string[]) => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onForbidOthersVideo?: () => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onPermitOthersVideo?: () => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n meetingMediaAccess?: MediaAccess;\n}): {\n openPeoplePane: () => void;\n closePeoplePane: () => void;\n isPeoplePaneOpen: boolean;\n} => {\n const {\n updateSidePaneRenderer,\n inviteLink,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItems,\n setDrawerMenuItems,\n mobileView,\n peopleButtonRef,\n setParticipantActioned,\n spotlightedParticipantUserIds,\n onStartLocalSpotlight,\n onStopLocalSpotlight,\n onStartRemoteSpotlight,\n onStopRemoteSpotlight,\n onStopAllSpotlight,\n maxParticipantsToSpotlight,\n onMuteParticipant,\n pinnedParticipants,\n onPinParticipant,\n onUnpinParticipant,\n disablePinMenuItem,\n onMuteAllRemoteParticipants,\n /* @conditional-compile-remove(media-access) */\n onForbidAudio,\n /* @conditional-compile-remove(media-access) */\n onPermitAudio,\n /* @conditional-compile-remove(media-access) */\n onForbidOthersAudio,\n /* @conditional-compile-remove(media-access) */\n onPermitOthersAudio,\n /* @conditional-compile-remove(media-access) */\n onForbidVideo,\n /* @conditional-compile-remove(media-access) */\n onPermitVideo,\n /* @conditional-compile-remove(media-access) */\n onForbidOthersVideo,\n /* @conditional-compile-remove(media-access) */\n onPermitOthersVideo,\n /* @conditional-compile-remove(media-access) */\n meetingMediaAccess\n } = props;\n\n const closePane = useCallback(() => {\n updateSidePaneRenderer(undefined);\n peopleButtonRef?.current?.focus();\n }, [peopleButtonRef, updateSidePaneRenderer]);\n\n const localeStrings = useLocale().strings.call;\n const remoteParticipants = useSelector(getRemoteParticipants);\n const [showMuteAllPrompt, setShowMuteAllPrompt] = useState(false);\n const muteAllPromptLabels = useMemo(\n () => ({\n confirmButtonLabel: localeStrings.muteAllConfirmButtonLabel,\n heading: localeStrings.muteAllDialogTitle,\n text: localeStrings.muteAllDialogContent,\n cancelButtonLabel: localeStrings.muteAllCancelButtonLabel\n }),\n [\n localeStrings.muteAllConfirmButtonLabel,\n localeStrings.muteAllDialogTitle,\n localeStrings.muteAllDialogContent,\n localeStrings.muteAllCancelButtonLabel\n ]\n );\n\n const onMuteAllPromptConfirm = useCallback(() => {\n onMuteAllRemoteParticipants && onMuteAllRemoteParticipants();\n setShowMuteAllPrompt(false);\n }, [onMuteAllRemoteParticipants, setShowMuteAllPrompt]);\n\n /* @conditional-compile-remove(media-access) */\n const [showForbidOthersAudioPrompt, setShowForbidOthersAudioPrompt] = useState(false);\n /* @conditional-compile-remove(media-access) */\n const [showPermitOthersAudioPrompt, setShowPermitOthersAudioPrompt] = useState(false);\n /* @conditional-compile-remove(media-access) */\n const [showForbidOthersVideoPrompt, setShowForbidOthersVideoPrompt] = useState(false);\n /* @conditional-compile-remove(media-access) */\n const [showPermitOthersVideoPrompt, setShowPermitOthersVideoPrompt] = useState(false);\n\n /* @conditional-compile-remove(media-access) */\n const onForbidAllAttendeesPromptConfirm = useCallback(() => {\n onForbidOthersAudio && onForbidOthersAudio();\n setShowForbidOthersAudioPrompt(false);\n }, [onForbidOthersAudio, setShowForbidOthersAudioPrompt]);\n /* @conditional-compile-remove(media-access) */\n const onPermitAllAttendeesPromptConfirm = useCallback(() => {\n onPermitOthersAudio && onPermitOthersAudio();\n setShowPermitOthersAudioPrompt(false);\n }, [onPermitOthersAudio, setShowPermitOthersAudioPrompt]);\n /* @conditional-compile-remove(media-access) */\n const onForbidOthersVideoPromptConfirm = useCallback(() => {\n onForbidOthersVideo && onForbidOthersVideo();\n setShowForbidOthersVideoPrompt(false);\n }, [onForbidOthersVideo, setShowForbidOthersVideoPrompt]);\n /* @conditional-compile-remove(media-access) */\n const onPermitOthersVideoPromptConfirm = useCallback(() => {\n onPermitOthersVideo && onPermitOthersVideo();\n setShowPermitOthersVideoPrompt(false);\n }, [onPermitOthersVideo, setShowPermitOthersVideoPrompt]);\n\n const sidePaneHeaderMenuProps: IContextualMenuProps = useMemo(() => {\n const menuItems: IContextualMenuItem[] = [];\n if (onMuteAllRemoteParticipants && remoteParticipants) {\n let isAllMuted = true;\n if (remoteParticipants) {\n for (const participant of Object.values(remoteParticipants)) {\n if (!participant.isMuted) {\n isAllMuted = false;\n break;\n }\n }\n }\n menuItems.push({\n ['data-ui-id']: 'people-pane-mute-all-remote-participants',\n key: 'muteAllRemoteParticipants',\n text: localeStrings.muteAllMenuLabel,\n iconProps: {\n iconName: 'ContextualMenuMicMutedIcon',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowMuteAllPrompt(true);\n },\n ariaLabel: localeStrings.muteAllMenuLabel,\n disabled: isAllMuted\n });\n }\n\n /* @conditional-compile-remove(media-access) */\n let hasAttendee = false;\n /* @conditional-compile-remove(media-access) */\n if (remoteParticipants) {\n for (const participant of Object.values(remoteParticipants)) {\n if (participant.role && participant.role === 'Attendee') {\n hasAttendee = true;\n break;\n }\n }\n }\n /* @conditional-compile-remove(media-access) */\n const isMeetingAudioPermitted = meetingMediaAccess ? meetingMediaAccess.isAudioPermitted : true;\n /* @conditional-compile-remove(media-access) */\n const isMeetingVideoPermitted = meetingMediaAccess ? meetingMediaAccess.isVideoPermitted : true;\n /* @conditional-compile-remove(media-access) */\n if (onForbidOthersAudio && remoteParticipants) {\n hasAttendee &&\n isMeetingAudioPermitted &&\n menuItems.push({\n ['data-ui-id']: 'people-pane-forbid-all-attendees-audio',\n key: 'forbidOthersAudio',\n text: localeStrings.forbidOthersAudioMenuLabel,\n iconProps: {\n iconName: 'ControlButtonMicProhibited',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowForbidOthersAudioPrompt(true);\n },\n ariaLabel: localeStrings.forbidOthersAudioMenuLabel,\n disabled: !hasAttendee\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (onPermitOthersAudio && remoteParticipants) {\n hasAttendee &&\n !isMeetingAudioPermitted &&\n menuItems.push({\n ['data-ui-id']: 'people-pane-permit-all-attendees-audio',\n key: 'permitOthersAudio',\n text: localeStrings.permitOthersAudioMenuLabel,\n iconProps: {\n iconName: 'ControlButtonMicOn',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowPermitOthersAudioPrompt(true);\n },\n ariaLabel: localeStrings.permitOthersAudioMenuLabel,\n disabled: !hasAttendee\n });\n }\n\n /* @conditional-compile-remove(media-access) */\n if (onForbidOthersVideo && remoteParticipants) {\n hasAttendee &&\n isMeetingVideoPermitted &&\n menuItems.push({\n ['data-ui-id']: 'people-pane-forbid-all-attendees-video',\n key: 'forbidOthersVideo',\n text: localeStrings.forbidOthersVideoMenuLabel,\n iconProps: {\n iconName: 'ControlButtonCameraProhibitedSmall',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowForbidOthersVideoPrompt(true);\n },\n ariaLabel: localeStrings.forbidOthersVideoMenuLabel,\n disabled: !hasAttendee\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (onPermitOthersVideo && remoteParticipants) {\n hasAttendee &&\n !isMeetingVideoPermitted &&\n menuItems.push({\n ['data-ui-id']: 'people-pane-permit-all-attendees-video',\n key: 'permitOthersVideo',\n text: localeStrings.permitOthersVideoMenuLabel,\n iconProps: {\n iconName: 'ControlButtonCameraOn',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowPermitOthersVideoPrompt(true);\n },\n ariaLabel: localeStrings.permitOthersVideoMenuLabel,\n disabled: !hasAttendee\n });\n }\n\n if (onStopAllSpotlight && spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0) {\n menuItems.push({\n key: 'stopAllSpotlightKey',\n text: localeStrings.stopAllSpotlightMenuLabel,\n iconProps: { iconName: 'StopAllSpotlightMenuButton', styles: { root: { lineHeight: 0 } } },\n onClick: () => {\n onStopAllSpotlight();\n },\n ariaLabel: localeStrings.stopAllSpotlightMenuLabel\n });\n }\n return {\n items: menuItems\n };\n }, [\n onMuteAllRemoteParticipants,\n remoteParticipants,\n /* @conditional-compile-remove(media-access) */\n meetingMediaAccess,\n /* @conditional-compile-remove(media-access) */\n onForbidOthersAudio,\n /* @conditional-compile-remove(media-access) */\n onPermitOthersAudio,\n /* @conditional-compile-remove(media-access) */\n onForbidOthersVideo,\n /* @conditional-compile-remove(media-access) */\n onPermitOthersVideo,\n onStopAllSpotlight,\n spotlightedParticipantUserIds,\n localeStrings.muteAllMenuLabel,\n localeStrings.forbidOthersAudioMenuLabel,\n localeStrings.permitOthersAudioMenuLabel,\n localeStrings.forbidOthersVideoMenuLabel,\n localeStrings.permitOthersVideoMenuLabel,\n localeStrings.stopAllSpotlightMenuLabel\n ]);\n\n const onRenderHeader = useCallback(\n () => (\n <SidePaneHeader\n onClose={closePane}\n headingText={localeStrings.peoplePaneTitle}\n dismissSidePaneButtonAriaLabel={localeStrings.dismissSidePaneButtonLabel}\n mobileView={mobileView ?? false}\n />\n ),\n [mobileView, closePane, localeStrings]\n );\n\n const onFetchParticipantMenuItemsForCallComposite = useCallback(\n (participantId: string, myUserId?: string, defaultMenuItems?: IContextualMenuItem[]): IContextualMenuItem[] => {\n let isPinned = pinnedParticipants?.includes(participantId);\n const _defaultMenuItems: IContextualMenuItem[] = [];\n const isSpotlighted = spotlightedParticipantUserIds?.includes(participantId);\n const isMe = myUserId === participantId;\n isPinned = isSpotlighted ? false : isPinned;\n if (onMuteParticipant && !isMe && remoteParticipants && remoteParticipants[participantId]) {\n const participant = remoteParticipants[participantId];\n const isMuted = !!participant?.isMuted;\n _defaultMenuItems.push({\n key: 'mute',\n text: 'Mute',\n iconProps: {\n iconName: 'ContextualMenuMicMutedIcon',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n onMuteParticipant(participantId);\n },\n 'data-ui-id': 'participant-item-mute-participant',\n ariaLabel: 'Mute',\n disabled: isMuted\n });\n }\n\n /* @conditional-compile-remove(media-access) */\n const remoteParticipant = remoteParticipants?.[participantId];\n /* @conditional-compile-remove(media-access) */\n if (\n remoteParticipant?.mediaAccess &&\n !remoteParticipant.mediaAccess.isAudioPermitted &&\n remoteParticipant?.role === 'Attendee' &&\n onPermitAudio\n ) {\n _defaultMenuItems.push({\n key: 'permit-audio',\n text: localeStrings.permitAudioMenuLabel,\n iconProps: {\n iconName: 'ControlButtonMicOn',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onPermitAudio([participantId]);\n },\n 'data-ui-id': 'participant-item-permit-microphone-button',\n ariaLabel: localeStrings.permitAudioMenuLabel\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (remoteParticipant?.mediaAccess?.isAudioPermitted && remoteParticipant?.role === 'Attendee' && onForbidAudio) {\n _defaultMenuItems.push({\n key: 'forbid-audio',\n text: localeStrings.forbidAudioMenuLabel,\n iconProps: {\n iconName: 'ControlButtonMicProhibited',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onForbidAudio([participantId]);\n },\n 'data-ui-id': 'participant-item-forbid-microphone-button',\n ariaLabel: localeStrings.forbidAudioMenuLabel\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (\n remoteParticipant?.mediaAccess &&\n !remoteParticipant.mediaAccess.isVideoPermitted &&\n remoteParticipant?.role === 'Attendee' &&\n onPermitVideo\n ) {\n _defaultMenuItems.push({\n key: 'permit-video',\n text: localeStrings.permitVideoMenuLabel,\n iconProps: {\n iconName: 'ControlButtonCameraOn',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onPermitVideo([participantId]);\n },\n 'data-ui-id': 'participant-item-permit-camera-button',\n ariaLabel: localeStrings.permitVideoMenuLabel\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (remoteParticipant?.mediaAccess?.isVideoPermitted && remoteParticipant?.role === 'Attendee' && onForbidVideo) {\n _defaultMenuItems.push({\n key: 'forbid-video',\n text: localeStrings.forbidVideoMenuLabel,\n iconProps: {\n iconName: 'ControlButtonCameraProhibitedSmall',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onForbidVideo([participantId]);\n },\n 'data-ui-id': 'participant-item-forbid-camera-button',\n ariaLabel: localeStrings.forbidVideoMenuLabel\n });\n }\n\n if (isSpotlighted) {\n const stopSpotlightMenuText = isMe\n ? localeStrings.stopSpotlightOnSelfMenuLabel\n : localeStrings.stopSpotlightMenuLabel;\n const onStopSpotlight = isMe\n ? onStopLocalSpotlight\n : onStopRemoteSpotlight\n ? () => {\n onStopRemoteSpotlight([participantId]);\n }\n : undefined;\n if (onStopSpotlight && stopSpotlightMenuText) {\n _defaultMenuItems.push({\n key: 'stop-spotlight',\n text: stopSpotlightMenuText,\n onClick: onStopSpotlight,\n iconProps: {\n iconName: 'StopSpotlightContextualMenuItem',\n styles: { root: { lineHeight: 0 } }\n },\n ariaLabel: stopSpotlightMenuText\n });\n }\n } else {\n const startSpotlightMenuText =\n spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0\n ? localeStrings.addSpotlightMenuLabel\n : localeStrings.startSpotlightMenuLabel;\n const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight\n ? spotlightedParticipantUserIds\n ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight\n : false\n : false;\n const onStartSpotlight = isMe\n ? onStartLocalSpotlight\n : onStartRemoteSpotlight\n ? () => {\n onStartRemoteSpotlight([participantId]);\n }\n : undefined;\n if (onStartSpotlight && startSpotlightMenuText) {\n _defaultMenuItems.push({\n key: 'start-spotlight',\n text: startSpotlightMenuText,\n onClick: onStartSpotlight,\n iconProps: {\n iconName: 'StartSpotlightContextualMenuItem',\n styles: { root: { lineHeight: 0 } }\n },\n ariaLabel: startSpotlightMenuText,\n disabled: maxSpotlightedParticipantsReached,\n title: maxSpotlightedParticipantsReached ? localeStrings.spotlightLimitReachedMenuTitle : undefined\n });\n }\n }\n if (!isMe && isPinned !== undefined) {\n if (isPinned && onUnpinParticipant && localeStrings?.unpinParticipantMenuLabel) {\n _defaultMenuItems.push({\n key: 'unpin',\n text: localeStrings?.unpinParticipantMenuLabel,\n iconProps: {\n iconName: 'UnpinParticipant',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onUnpinParticipant?.(participantId);\n },\n 'data-ui-id': 'participant-item-unpin-participant-button',\n ariaLabel: localeStrings.unpinParticipantMenuItemAriaLabel\n });\n }\n if (!isPinned && onPinParticipant && localeStrings?.pinParticipantMenuLabel) {\n _defaultMenuItems.push({\n key: 'pin',\n text: disablePinMenuItem\n ? localeStrings.pinParticipantLimitReachedMenuLabel\n : localeStrings.pinParticipantMenuLabel,\n iconProps: {\n iconName: 'PinParticipant',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onPinParticipant(participantId);\n },\n 'data-ui-id': 'participant-item-pin-participant-button',\n disabled: disablePinMenuItem || isSpotlighted,\n ariaLabel: localeStrings.pinParticipantMenuItemAriaLabel\n });\n }\n }\n if (defaultMenuItems) {\n _defaultMenuItems.push(...defaultMenuItems);\n }\n return onFetchParticipantMenuItems\n ? onFetchParticipantMenuItems(participantId, myUserId, _defaultMenuItems)\n : _defaultMenuItems;\n },\n [\n pinnedParticipants,\n spotlightedParticipantUserIds,\n onMuteParticipant,\n remoteParticipants,\n onPermitAudio,\n onForbidAudio,\n onPermitVideo,\n onForbidVideo,\n onFetchParticipantMenuItems,\n localeStrings.permitAudioMenuLabel,\n localeStrings.forbidAudioMenuLabel,\n localeStrings.permitVideoMenuLabel,\n localeStrings.forbidVideoMenuLabel,\n localeStrings.stopSpotlightOnSelfMenuLabel,\n localeStrings.stopSpotlightMenuLabel,\n localeStrings.addSpotlightMenuLabel,\n localeStrings.startSpotlightMenuLabel,\n localeStrings.spotlightLimitReachedMenuTitle,\n localeStrings?.unpinParticipantMenuLabel,\n localeStrings.pinParticipantMenuLabel,\n localeStrings.unpinParticipantMenuItemAriaLabel,\n localeStrings.pinParticipantLimitReachedMenuLabel,\n localeStrings.pinParticipantMenuItemAriaLabel,\n onStopLocalSpotlight,\n onStopRemoteSpotlight,\n maxParticipantsToSpotlight,\n onStartLocalSpotlight,\n onStartRemoteSpotlight,\n onUnpinParticipant,\n onPinParticipant,\n disablePinMenuItem\n ]\n );\n\n const role = useSelector(getRole);\n const alternateCallerId = useSelector(getAlternateCallerId);\n\n const onRenderContent = useCallback((): JSX.Element => {\n return (\n <>\n {\n <Prompt\n {...muteAllPromptLabels}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onMuteAllPromptConfirm()}\n isOpen={showMuteAllPrompt}\n onCancel={() => setShowMuteAllPrompt(false)}\n />\n }\n {\n /* @conditional-compile-remove(media-access) */\n <Prompt\n heading={localeStrings.forbidOthersAudioDialogTitle}\n text={localeStrings.forbidOthersAudioDialogContent}\n confirmButtonLabel={localeStrings.forbidOthersAudioConfirmButtonLabel}\n cancelButtonLabel={localeStrings.forbidOthersAudioCancelButtonLabel}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onForbidAllAttendeesPromptConfirm()}\n isOpen={showForbidOthersAudioPrompt}\n onCancel={() => setShowForbidOthersAudioPrompt(false)}\n />\n }\n {\n /* @conditional-compile-remove(media-access) */\n <Prompt\n heading={localeStrings.permitOthersAudioDialogTitle}\n text={localeStrings.permitOthersAudioDialogContent}\n confirmButtonLabel={localeStrings.permitOthersAudioConfirmButtonLabel}\n cancelButtonLabel={localeStrings.permitOthersAudioCancelButtonLabel}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onPermitAllAttendeesPromptConfirm()}\n isOpen={showPermitOthersAudioPrompt}\n onCancel={() => setShowForbidOthersAudioPrompt(false)}\n />\n }\n {\n /* @conditional-compile-remove(media-access) */\n <Prompt\n heading={localeStrings.forbidOthersVideoDialogTitle}\n text={localeStrings.forbidOthersVideoDialogContent}\n confirmButtonLabel={localeStrings.forbidOthersVideoConfirmButtonLabel}\n cancelButtonLabel={localeStrings.forbidOthersVideoCancelButtonLabel}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onForbidOthersVideoPromptConfirm()}\n isOpen={showForbidOthersVideoPrompt}\n onCancel={() => setShowForbidOthersVideoPrompt(false)}\n />\n }\n {\n /* @conditional-compile-remove(media-access) */\n <Prompt\n heading={localeStrings.permitOthersVideoDialogTitle}\n text={localeStrings.permitOthersVideoDialogContent}\n confirmButtonLabel={localeStrings.permitOthersVideoConfirmButtonLabel}\n cancelButtonLabel={localeStrings.permitOthersVideoCancelButtonLabel}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onPermitOthersVideoPromptConfirm()}\n isOpen={showPermitOthersVideoPrompt}\n onCancel={() => setShowForbidOthersVideoPrompt(false)}\n />\n }\n\n <PeoplePaneContent\n inviteLink={inviteLink}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n onFetchParticipantMenuItems={onFetchParticipantMenuItemsForCallComposite}\n setDrawerMenuItems={setDrawerMenuItems}\n mobileView={mobileView}\n setParticipantActioned={setParticipantActioned}\n participantListHeadingMoreButtonProps={sidePaneHeaderMenuProps}\n pinnedParticipants={pinnedParticipants}\n role={role}\n alternateCallerId={alternateCallerId}\n />\n </>\n );\n }, [\n muteAllPromptLabels,\n showMuteAllPrompt,\n localeStrings.forbidOthersAudioDialogTitle,\n localeStrings.forbidOthersAudioDialogContent,\n localeStrings.forbidOthersAudioConfirmButtonLabel,\n localeStrings.forbidOthersAudioCancelButtonLabel,\n localeStrings.permitOthersAudioDialogTitle,\n localeStrings.permitOthersAudioDialogContent,\n localeStrings.permitOthersAudioConfirmButtonLabel,\n localeStrings.permitOthersAudioCancelButtonLabel,\n localeStrings.forbidOthersVideoDialogTitle,\n localeStrings.forbidOthersVideoDialogContent,\n localeStrings.forbidOthersVideoConfirmButtonLabel,\n localeStrings.forbidOthersVideoCancelButtonLabel,\n localeStrings.permitOthersVideoDialogTitle,\n localeStrings.permitOthersVideoDialogContent,\n localeStrings.permitOthersVideoConfirmButtonLabel,\n localeStrings.permitOthersVideoCancelButtonLabel,\n showForbidOthersAudioPrompt,\n showPermitOthersAudioPrompt,\n showForbidOthersVideoPrompt,\n showPermitOthersVideoPrompt,\n inviteLink,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItemsForCallComposite,\n setDrawerMenuItems,\n mobileView,\n setParticipantActioned,\n sidePaneHeaderMenuProps,\n pinnedParticipants,\n role,\n alternateCallerId,\n onMuteAllPromptConfirm,\n onForbidAllAttendeesPromptConfirm,\n onPermitAllAttendeesPromptConfirm,\n onForbidOthersVideoPromptConfirm,\n onPermitOthersVideoPromptConfirm\n ]);\n\n const sidePaneRenderer: SidePaneRenderer = useMemo(\n () => ({\n headerRenderer: onRenderHeader,\n contentRenderer: onRenderContent,\n id: PEOPLE_SIDE_PANE_ID\n }),\n [onRenderContent, onRenderHeader]\n );\n\n const openPane = useCallback(() => {\n updateSidePaneRenderer(sidePaneRenderer);\n }, [sidePaneRenderer, updateSidePaneRenderer]);\n\n const isOpen = useIsParticularSidePaneOpen(PEOPLE_SIDE_PANE_ID);\n\n // Update pane renderer if it is open and the openPane dep changes\n useEffect(() => {\n if (isOpen) {\n openPane();\n }\n }, [isOpen, openPane]);\n\n return { openPeoplePane: openPane, closePeoplePane: closePane, isPeoplePaneOpen: isOpen };\n};\n"]}
|
1
|
+
{"version":3,"file":"usePeoplePane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAa,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpF,OAAO,EAAoB,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAErC,eAAe;AACf,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KA0C7B,EAIC,EAAE;IACF,MAAM,EACJ,sBAAsB,EACtB,UAAU,EACV,wBAAwB,EACxB,2BAA2B,EAC3B,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B;IAC3B,+CAA+C;IAC/C,aAAa;IACb,+CAA+C;IAC/C,aAAa;IACb,+CAA+C;IAC/C,mBAAmB;IACnB,+CAA+C;IAC/C,mBAAmB;IACnB,+CAA+C;IAC/C,aAAa;IACb,+CAA+C;IAC/C,aAAa;IACb,+CAA+C;IAC/C,mBAAmB;IACnB,+CAA+C;IAC/C,mBAAmB;IACnB,+CAA+C;IAC/C,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EAClB,GAAG,KAAK,CAAC;IAEV,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;;QACjC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAClC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,0CAAE,KAAK,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/C,MAAM,kBAAkB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAC9D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClE,MAAM,mBAAmB,GAAG,OAAO,CACjC,GAAG,EAAE,CAAC,CAAC;QACL,kBAAkB,EAAE,aAAa,CAAC,yBAAyB;QAC3D,OAAO,EAAE,aAAa,CAAC,kBAAkB;QACzC,IAAI,EAAE,aAAa,CAAC,oBAAoB;QACxC,iBAAiB,EAAE,aAAa,CAAC,wBAAwB;KAC1D,CAAC,EACF;QACE,aAAa,CAAC,yBAAyB;QACvC,aAAa,CAAC,kBAAkB;QAChC,aAAa,CAAC,oBAAoB;QAClC,aAAa,CAAC,wBAAwB;KACvC,CACF,CAAC;IAEF,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9C,2BAA2B,IAAI,2BAA2B,EAAE,CAAC;QAC7D,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,2BAA2B,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAExD,+CAA+C;IAC/C,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtF,+CAA+C;IAC/C,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtF,+CAA+C;IAC/C,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtF,+CAA+C;IAC/C,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtF,+CAA+C;IAC/C,MAAM,iCAAiC,GAAG,WAAW,CAAC,GAAG,EAAE;QACzD,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;QAC7C,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,mBAAmB,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAC1D,+CAA+C;IAC/C,MAAM,iCAAiC,GAAG,WAAW,CAAC,GAAG,EAAE;QACzD,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;QAC7C,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,mBAAmB,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAC1D,+CAA+C;IAC/C,MAAM,gCAAgC,GAAG,WAAW,CAAC,GAAG,EAAE;QACxD,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;QAC7C,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,mBAAmB,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAC1D,+CAA+C;IAC/C,MAAM,gCAAgC,GAAG,WAAW,CAAC,GAAG,EAAE;QACxD,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;QAC7C,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,mBAAmB,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAE1D,MAAM,uBAAuB,GAAyB,OAAO,CAAC,GAAG,EAAE;QACjE,MAAM,SAAS,GAA0B,EAAE,CAAC;QAC5C,IAAI,2BAA2B,IAAI,kBAAkB,EAAE,CAAC;YACtD,IAAI,UAAU,GAAG,IAAI,CAAC;YACtB,IAAI,kBAAkB,EAAE,CAAC;gBACvB,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBAC5D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;wBACzB,UAAU,GAAG,KAAK,CAAC;wBACnB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YACD,SAAS,CAAC,IAAI,CAAC;gBACb,CAAC,YAAY,CAAC,EAAE,0CAA0C;gBAC1D,GAAG,EAAE,2BAA2B;gBAChC,IAAI,EAAE,aAAa,CAAC,gBAAgB;gBACpC,SAAS,EAAE;oBACT,QAAQ,EAAE,4BAA4B;oBACtC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;iBACpC;gBACD,OAAO,EAAE,GAAG,EAAE;oBACZ,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;gBACD,SAAS,EAAE,aAAa,CAAC,gBAAgB;gBACzC,QAAQ,EAAE,UAAU;aACrB,CAAC,CAAC;QACL,CAAC;QAED,+CAA+C;QAC/C,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,+CAA+C;QAC/C,IAAI,kBAAkB,EAAE,CAAC;YACvB,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC5D,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxD,WAAW,GAAG,IAAI,CAAC;oBACnB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,+CAA+C;QAC/C,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,+CAA+C;QAC/C,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,+CAA+C;QAC/C,IAAI,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;YAC9C,WAAW;gBACT,uBAAuB;gBACvB,SAAS,CAAC,IAAI,CAAC;oBACb,CAAC,YAAY,CAAC,EAAE,wCAAwC;oBACxD,GAAG,EAAE,mBAAmB;oBACxB,IAAI,EAAE,aAAa,CAAC,0BAA0B;oBAC9C,SAAS,EAAE;wBACT,QAAQ,EAAE,4BAA4B;wBACtC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;qBACpC;oBACD,OAAO,EAAE,GAAG,EAAE;wBACZ,8BAA8B,CAAC,IAAI,CAAC,CAAC;oBACvC,CAAC;oBACD,SAAS,EAAE,aAAa,CAAC,0BAA0B;oBACnD,QAAQ,EAAE,CAAC,WAAW;iBACvB,CAAC,CAAC;QACP,CAAC;QACD,+CAA+C;QAC/C,IAAI,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;YAC9C,WAAW;gBACT,CAAC,uBAAuB;gBACxB,SAAS,CAAC,IAAI,CAAC;oBACb,CAAC,YAAY,CAAC,EAAE,wCAAwC;oBACxD,GAAG,EAAE,mBAAmB;oBACxB,IAAI,EAAE,aAAa,CAAC,0BAA0B;oBAC9C,SAAS,EAAE;wBACT,QAAQ,EAAE,oBAAoB;wBAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;qBACpC;oBACD,OAAO,EAAE,GAAG,EAAE;wBACZ,8BAA8B,CAAC,IAAI,CAAC,CAAC;oBACvC,CAAC;oBACD,SAAS,EAAE,aAAa,CAAC,0BAA0B;oBACnD,QAAQ,EAAE,CAAC,WAAW;iBACvB,CAAC,CAAC;QACP,CAAC;QAED,+CAA+C;QAC/C,IAAI,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;YAC9C,WAAW;gBACT,uBAAuB;gBACvB,SAAS,CAAC,IAAI,CAAC;oBACb,CAAC,YAAY,CAAC,EAAE,wCAAwC;oBACxD,GAAG,EAAE,mBAAmB;oBACxB,IAAI,EAAE,aAAa,CAAC,0BAA0B;oBAC9C,SAAS,EAAE;wBACT,QAAQ,EAAE,oCAAoC;wBAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;qBACpC;oBACD,OAAO,EAAE,GAAG,EAAE;wBACZ,8BAA8B,CAAC,IAAI,CAAC,CAAC;oBACvC,CAAC;oBACD,SAAS,EAAE,aAAa,CAAC,0BAA0B;oBACnD,QAAQ,EAAE,CAAC,WAAW;iBACvB,CAAC,CAAC;QACP,CAAC;QACD,+CAA+C;QAC/C,IAAI,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;YAC9C,WAAW;gBACT,CAAC,uBAAuB;gBACxB,SAAS,CAAC,IAAI,CAAC;oBACb,CAAC,YAAY,CAAC,EAAE,wCAAwC;oBACxD,GAAG,EAAE,mBAAmB;oBACxB,IAAI,EAAE,aAAa,CAAC,0BAA0B;oBAC9C,SAAS,EAAE;wBACT,QAAQ,EAAE,uBAAuB;wBACjC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;qBACpC;oBACD,OAAO,EAAE,GAAG,EAAE;wBACZ,8BAA8B,CAAC,IAAI,CAAC,CAAC;oBACvC,CAAC;oBACD,SAAS,EAAE,aAAa,CAAC,0BAA0B;oBACnD,QAAQ,EAAE,CAAC,WAAW;iBACvB,CAAC,CAAC;QACP,CAAC;QAED,IAAI,kBAAkB,IAAI,6BAA6B,IAAI,6BAA6B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpG,SAAS,CAAC,IAAI,CAAC;gBACb,GAAG,EAAE,qBAAqB;gBAC1B,IAAI,EAAE,aAAa,CAAC,yBAAyB;gBAC7C,SAAS,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC1F,OAAO,EAAE,GAAG,EAAE;oBACZ,kBAAkB,EAAE,CAAC;gBACvB,CAAC;gBACD,SAAS,EAAE,aAAa,CAAC,yBAAyB;aACnD,CAAC,CAAC;QACL,CAAC;QACD,OAAO;YACL,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC,EAAE;QACD,2BAA2B;QAC3B,kBAAkB;QAClB,+CAA+C;QAC/C,kBAAkB;QAClB,+CAA+C;QAC/C,mBAAmB;QACnB,+CAA+C;QAC/C,mBAAmB;QACnB,+CAA+C;QAC/C,mBAAmB;QACnB,+CAA+C;QAC/C,mBAAmB;QACnB,kBAAkB;QAClB,6BAA6B;QAC7B,aAAa,CAAC,gBAAgB;QAC9B,aAAa,CAAC,0BAA0B;QACxC,aAAa,CAAC,0BAA0B;QACxC,aAAa,CAAC,0BAA0B;QACxC,aAAa,CAAC,0BAA0B;QACxC,aAAa,CAAC,yBAAyB;KACxC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAChC,GAAG,EAAE,CAAC,CACJ,oBAAC,cAAc,IACb,OAAO,EAAE,SAAS,EAClB,gBAAgB,EAAE,eAAe,EACjC,WAAW,EAAE,aAAa,CAAC,eAAe,EAC1C,8BAA8B,EAAE,aAAa,CAAC,0BAA0B,EACxE,UAAU,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,KAAK,EAC/B,yBAAyB,EAAE,wBAAwB,EACnD,iBAAiB,EAAE,iBAAiB,GACpC,CACH,EACD;QACE,SAAS;QACT,eAAe;QACf,aAAa,CAAC,eAAe;QAC7B,aAAa,CAAC,0BAA0B;QACxC,UAAU;QACV,wBAAwB;QACxB,iBAAiB;KAClB,CACF,CAAC;IAEF,MAAM,2CAA2C,GAAG,WAAW,CAC7D,CAAC,aAAqB,EAAE,QAAiB,EAAE,gBAAwC,EAAyB,EAAE;;QAC5G,IAAI,QAAQ,GAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAA0B,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,6BAA6B,aAA7B,6BAA6B,uBAA7B,6BAA6B,CAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,QAAQ,KAAK,aAAa,CAAC;QACxC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC5C,IAAI,iBAAiB,IAAI,CAAC,IAAI,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1F,MAAM,WAAW,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,CAAC,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAA,CAAC;YACvC,iBAAiB,CAAC,IAAI,CAAC;gBACrB,GAAG,EAAE,MAAM;gBACX,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE;oBACT,QAAQ,EAAE,4BAA4B;oBACtC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;iBACpC;gBACD,OAAO,EAAE,GAAG,EAAE;oBACZ,iBAAiB,CAAC,aAAa,CAAC,CAAC;gBACnC,CAAC;gBACD,YAAY,EAAE,mCAAmC;gBACjD,SAAS,EAAE,MAAM;gBACjB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;QAED,+CAA+C;QAC/C,MAAM,iBAAiB,GAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAG,aAAa,CAAC,CAAC;QAC9D,+CAA+C;QAC/C,IACE,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,WAAW;YAC9B,CAAC,iBAAiB,CAAC,WAAW,CAAC,gBAAgB;YAC/C,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,MAAK,UAAU;YACtC,aAAa,EACb,CAAC;YACD,iBAAiB,CAAC,IAAI,CAAC;gBACrB,GAAG,EAAE,cAAc;gBACnB,IAAI,EAAE,aAAa,CAAC,oBAAoB;gBACxC,SAAS,EAAE;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;iBAC9D;gBACD,OAAO,EAAE,GAAG,EAAE;oBACZ,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACjC,CAAC;gBACD,YAAY,EAAE,2CAA2C;gBACzD,SAAS,EAAE,aAAa,CAAC,oBAAoB;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,+CAA+C;QAC/C,IAAI,CAAA,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,WAAW,0CAAE,gBAAgB,KAAI,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,MAAK,UAAU,IAAI,aAAa,EAAE,CAAC;YAChH,iBAAiB,CAAC,IAAI,CAAC;gBACrB,GAAG,EAAE,cAAc;gBACnB,IAAI,EAAE,aAAa,CAAC,oBAAoB;gBACxC,SAAS,EAAE;oBACT,QAAQ,EAAE,4BAA4B;oBACtC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;iBAC9D;gBACD,OAAO,EAAE,GAAG,EAAE;oBACZ,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACjC,CAAC;gBACD,YAAY,EAAE,2CAA2C;gBACzD,SAAS,EAAE,aAAa,CAAC,oBAAoB;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,+CAA+C;QAC/C,IACE,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,WAAW;YAC9B,CAAC,iBAAiB,CAAC,WAAW,CAAC,gBAAgB;YAC/C,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,MAAK,UAAU;YACtC,aAAa,EACb,CAAC;YACD,iBAAiB,CAAC,IAAI,CAAC;gBACrB,GAAG,EAAE,cAAc;gBACnB,IAAI,EAAE,aAAa,CAAC,oBAAoB;gBACxC,SAAS,EAAE;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;iBAC9D;gBACD,OAAO,EAAE,GAAG,EAAE;oBACZ,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACjC,CAAC;gBACD,YAAY,EAAE,uCAAuC;gBACrD,SAAS,EAAE,aAAa,CAAC,oBAAoB;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,+CAA+C;QAC/C,IAAI,CAAA,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,WAAW,0CAAE,gBAAgB,KAAI,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI,MAAK,UAAU,IAAI,aAAa,EAAE,CAAC;YAChH,iBAAiB,CAAC,IAAI,CAAC;gBACrB,GAAG,EAAE,cAAc;gBACnB,IAAI,EAAE,aAAa,CAAC,oBAAoB;gBACxC,SAAS,EAAE;oBACT,QAAQ,EAAE,oCAAoC;oBAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;iBAC9D;gBACD,OAAO,EAAE,GAAG,EAAE;oBACZ,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACjC,CAAC;gBACD,YAAY,EAAE,uCAAuC;gBACrD,SAAS,EAAE,aAAa,CAAC,oBAAoB;aAC9C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,qBAAqB,GAAG,IAAI;gBAChC,CAAC,CAAC,aAAa,CAAC,4BAA4B;gBAC5C,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC;YACzC,MAAM,eAAe,GAAG,IAAI;gBAC1B,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,qBAAqB;oBACrB,CAAC,CAAC,GAAG,EAAE;wBACH,qBAAqB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;oBACzC,CAAC;oBACH,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,eAAe,IAAI,qBAAqB,EAAE,CAAC;gBAC7C,iBAAiB,CAAC,IAAI,CAAC;oBACrB,GAAG,EAAE,gBAAgB;oBACrB,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,eAAe;oBACxB,SAAS,EAAE;wBACT,QAAQ,EAAE,iCAAiC;wBAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;qBACpC;oBACD,SAAS,EAAE,qBAAqB;iBACjC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,sBAAsB,GAC1B,6BAA6B,IAAI,6BAA6B,CAAC,MAAM,GAAG,CAAC;gBACvE,CAAC,CAAC,aAAa,CAAC,qBAAqB;gBACrC,CAAC,CAAC,aAAa,CAAC,uBAAuB,CAAC;YAC5C,MAAM,iCAAiC,GAAG,0BAA0B;gBAClE,CAAC,CAAC,6BAA6B;oBAC7B,CAAC,CAAC,6BAA6B,CAAC,MAAM,IAAI,0BAA0B;oBACpE,CAAC,CAAC,KAAK;gBACT,CAAC,CAAC,KAAK,CAAC;YACV,MAAM,gBAAgB,GAAG,IAAI;gBAC3B,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,sBAAsB;oBACtB,CAAC,CAAC,GAAG,EAAE;wBACH,sBAAsB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;oBAC1C,CAAC;oBACH,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,gBAAgB,IAAI,sBAAsB,EAAE,CAAC;gBAC/C,iBAAiB,CAAC,IAAI,CAAC;oBACrB,GAAG,EAAE,iBAAiB;oBACtB,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,gBAAgB;oBACzB,SAAS,EAAE;wBACT,QAAQ,EAAE,kCAAkC;wBAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;qBACpC;oBACD,SAAS,EAAE,sBAAsB;oBACjC,QAAQ,EAAE,iCAAiC;oBAC3C,KAAK,EAAE,iCAAiC,CAAC,CAAC,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS;iBACpG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,QAAQ,IAAI,kBAAkB,KAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,yBAAyB,CAAA,EAAE,CAAC;gBAC/E,iBAAiB,CAAC,IAAI,CAAC;oBACrB,GAAG,EAAE,OAAO;oBACZ,IAAI,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,yBAAyB;oBAC9C,SAAS,EAAE;wBACT,QAAQ,EAAE,kBAAkB;wBAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;qBAC9D;oBACD,OAAO,EAAE,GAAG,EAAE;wBACZ,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAG,aAAa,CAAC,CAAC;oBACtC,CAAC;oBACD,YAAY,EAAE,2CAA2C;oBACzD,SAAS,EAAE,aAAa,CAAC,iCAAiC;iBAC3D,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,QAAQ,IAAI,gBAAgB,KAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,uBAAuB,CAAA,EAAE,CAAC;gBAC5E,iBAAiB,CAAC,IAAI,CAAC;oBACrB,GAAG,EAAE,KAAK;oBACV,IAAI,EAAE,kBAAkB;wBACtB,CAAC,CAAC,aAAa,CAAC,mCAAmC;wBACnD,CAAC,CAAC,aAAa,CAAC,uBAAuB;oBACzC,SAAS,EAAE;wBACT,QAAQ,EAAE,gBAAgB;wBAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;qBAC9D;oBACD,OAAO,EAAE,GAAG,EAAE;wBACZ,gBAAgB,CAAC,aAAa,CAAC,CAAC;oBAClC,CAAC;oBACD,YAAY,EAAE,yCAAyC;oBACvD,QAAQ,EAAE,kBAAkB,IAAI,aAAa;oBAC7C,SAAS,EAAE,aAAa,CAAC,+BAA+B;iBACzD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACrB,iBAAiB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,2BAA2B;YAChC,CAAC,CAAC,2BAA2B,CAAC,aAAa,EAAE,QAAQ,EAAE,iBAAiB,CAAC;YACzE,CAAC,CAAC,iBAAiB,CAAC;IACxB,CAAC,EACD;QACE,kBAAkB;QAClB,6BAA6B;QAC7B,iBAAiB;QACjB,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,2BAA2B;QAC3B,aAAa,CAAC,oBAAoB;QAClC,aAAa,CAAC,oBAAoB;QAClC,aAAa,CAAC,oBAAoB;QAClC,aAAa,CAAC,oBAAoB;QAClC,aAAa,CAAC,4BAA4B;QAC1C,aAAa,CAAC,sBAAsB;QACpC,aAAa,CAAC,qBAAqB;QACnC,aAAa,CAAC,uBAAuB;QACrC,aAAa,CAAC,8BAA8B;QAC5C,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,yBAAyB;QACxC,aAAa,CAAC,uBAAuB;QACrC,aAAa,CAAC,iCAAiC;QAC/C,aAAa,CAAC,mCAAmC;QACjD,aAAa,CAAC,+BAA+B;QAC7C,oBAAoB;QACpB,qBAAqB;QACrB,0BAA0B;QAC1B,qBAAqB;QACrB,sBAAsB;QACtB,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;KACnB,CACF,CAAC;IAEF,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,iBAAiB,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAE5D,MAAM,eAAe,GAAG,WAAW,CAAC,GAAgB,EAAE;QACpD,OAAO,CACL;YAEI,oBAAC,MAAM,oBACD,mBAAmB,IACvB,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAC5D,SAAS,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE,EACzC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAC3C;YAGF,+CAA+C;YAC/C,oBAAC,MAAM,IACL,OAAO,EAAE,aAAa,CAAC,4BAA4B,EACnD,IAAI,EAAE,aAAa,CAAC,8BAA8B,EAClD,kBAAkB,EAAE,aAAa,CAAC,mCAAmC,EACrE,iBAAiB,EAAE,aAAa,CAAC,kCAAkC,EACnE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAC5D,SAAS,EAAE,GAAG,EAAE,CAAC,iCAAiC,EAAE,EACpD,MAAM,EAAE,2BAA2B,EACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,GACrD;YAGF,+CAA+C;YAC/C,oBAAC,MAAM,IACL,OAAO,EAAE,aAAa,CAAC,4BAA4B,EACnD,IAAI,EAAE,aAAa,CAAC,8BAA8B,EAClD,kBAAkB,EAAE,aAAa,CAAC,mCAAmC,EACrE,iBAAiB,EAAE,aAAa,CAAC,kCAAkC,EACnE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAC5D,SAAS,EAAE,GAAG,EAAE,CAAC,iCAAiC,EAAE,EACpD,MAAM,EAAE,2BAA2B,EACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,GACrD;YAGF,+CAA+C;YAC/C,oBAAC,MAAM,IACL,OAAO,EAAE,aAAa,CAAC,4BAA4B,EACnD,IAAI,EAAE,aAAa,CAAC,8BAA8B,EAClD,kBAAkB,EAAE,aAAa,CAAC,mCAAmC,EACrE,iBAAiB,EAAE,aAAa,CAAC,kCAAkC,EACnE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAC5D,SAAS,EAAE,GAAG,EAAE,CAAC,gCAAgC,EAAE,EACnD,MAAM,EAAE,2BAA2B,EACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,GACrD;YAGF,+CAA+C;YAC/C,oBAAC,MAAM,IACL,OAAO,EAAE,aAAa,CAAC,4BAA4B,EACnD,IAAI,EAAE,aAAa,CAAC,8BAA8B,EAClD,kBAAkB,EAAE,aAAa,CAAC,mCAAmC,EACrE,iBAAiB,EAAE,aAAa,CAAC,kCAAkC,EACnE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAC5D,SAAS,EAAE,GAAG,EAAE,CAAC,gCAAgC,EAAE,EACnD,MAAM,EAAE,2BAA2B,EACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,GACrD;YAGJ,oBAAC,iBAAiB,IAChB,UAAU,EAAE,UAAU,EACtB,wBAAwB,EAAE,wBAAwB,EAClD,2BAA2B,EAAE,2CAA2C,EACxE,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,UAAU,EACtB,sBAAsB,EAAE,sBAAsB,EAC9C,qCAAqC,EAAE,uBAAuB,EAC9D,kBAAkB,EAAE,kBAAkB,EACtC,IAAI,EAAE,IAAI,EACV,iBAAiB,EAAE,iBAAiB,GACpC,CACD,CACJ,CAAC;IACJ,CAAC,EAAE;QACD,mBAAmB;QACnB,iBAAiB;QACjB,aAAa,CAAC,4BAA4B;QAC1C,aAAa,CAAC,8BAA8B;QAC5C,aAAa,CAAC,mCAAmC;QACjD,aAAa,CAAC,kCAAkC;QAChD,aAAa,CAAC,4BAA4B;QAC1C,aAAa,CAAC,8BAA8B;QAC5C,aAAa,CAAC,mCAAmC;QACjD,aAAa,CAAC,kCAAkC;QAChD,aAAa,CAAC,4BAA4B;QAC1C,aAAa,CAAC,8BAA8B;QAC5C,aAAa,CAAC,mCAAmC;QACjD,aAAa,CAAC,kCAAkC;QAChD,aAAa,CAAC,4BAA4B;QAC1C,aAAa,CAAC,8BAA8B;QAC5C,aAAa,CAAC,mCAAmC;QACjD,aAAa,CAAC,kCAAkC;QAChD,2BAA2B;QAC3B,2BAA2B;QAC3B,2BAA2B;QAC3B,2BAA2B;QAC3B,UAAU;QACV,wBAAwB;QACxB,2CAA2C;QAC3C,kBAAkB;QAClB,UAAU;QACV,sBAAsB;QACtB,uBAAuB;QACvB,kBAAkB;QAClB,IAAI;QACJ,iBAAiB;QACjB,sBAAsB;QACtB,iCAAiC;QACjC,iCAAiC;QACjC,gCAAgC;QAChC,gCAAgC;KACjC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAqB,OAAO,CAChD,GAAG,EAAE,CAAC,CAAC;QACL,cAAc,EAAE,cAAc;QAC9B,eAAe,EAAE,eAAe;QAChC,EAAE,EAAE,mBAAmB;KACxB,CAAC,EACF,CAAC,eAAe,EAAE,cAAc,CAAC,CAClC,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;IAEhE,kEAAkE;IAClE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvB,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;AAC5F,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { RefObject, useCallback, useEffect, useMemo, useState } from 'react';\nimport { SidePaneRenderer, useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\nimport { PeoplePaneContent } from '../../../common/PeoplePaneContent';\nimport { useLocale } from '../../../localization';\nimport { ParticipantMenuItemsCallback, _DrawerMenuItemProps } from '@internal/react-components';\nimport { AvatarPersonaDataCallback } from '../../../common/AvatarPersona';\nimport { IButton, IContextualMenuProps, IContextualMenuItem } from '@fluentui/react';\nimport { useSelector } from '../../hooks/useSelector';\nimport { getAlternateCallerId, getRemoteParticipants, getRole } from '../../selectors/baseSelectors';\nimport { Prompt } from '../Prompt';\n/* @conditional-compile-remove(media-access) */\nimport { MediaAccess } from '@internal/react-components';\n\nconst PEOPLE_SIDE_PANE_ID = 'people';\n\n/** @private */\nexport const usePeoplePane = (props: {\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n setDrawerMenuItems: (items: _DrawerMenuItemProps[]) => void;\n inviteLink?: string;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n mobileView?: boolean;\n peopleButtonRef?: RefObject<IButton>;\n setParticipantActioned?: (userId: string) => void;\n spotlightedParticipantUserIds?: string[];\n onStartLocalSpotlight?: () => Promise<void>;\n onStopLocalSpotlight?: () => Promise<void>;\n onStartRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n onStopRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n onStopAllSpotlight?: () => Promise<void>;\n maxParticipantsToSpotlight?: number;\n onMuteParticipant?: (userId: string) => Promise<void>;\n onMuteAllRemoteParticipants?: () => Promise<void>;\n pinnedParticipants?: string[];\n onPinParticipant?: (userId: string) => void;\n onUnpinParticipant?: (userId: string) => void;\n disablePinMenuItem?: boolean;\n /* @conditional-compile-remove(media-access) */\n onForbidAudio?: (userIds: string[]) => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onPermitAudio?: (userIds: string[]) => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onForbidOthersAudio?: () => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onPermitOthersAudio?: () => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onForbidVideo?: (userIds: string[]) => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onPermitVideo?: (userIds: string[]) => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onForbidOthersVideo?: () => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n onPermitOthersVideo?: () => Promise<void>;\n /* @conditional-compile-remove(media-access) */\n meetingMediaAccess?: MediaAccess;\n sidePaneDismissButtonRef?: RefObject<IButton>;\n chatButtonPresent?: boolean;\n}): {\n openPeoplePane: () => void;\n closePeoplePane: () => void;\n isPeoplePaneOpen: boolean;\n} => {\n const {\n updateSidePaneRenderer,\n inviteLink,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItems,\n setDrawerMenuItems,\n mobileView,\n peopleButtonRef,\n setParticipantActioned,\n spotlightedParticipantUserIds,\n onStartLocalSpotlight,\n onStopLocalSpotlight,\n onStartRemoteSpotlight,\n onStopRemoteSpotlight,\n onStopAllSpotlight,\n maxParticipantsToSpotlight,\n onMuteParticipant,\n pinnedParticipants,\n onPinParticipant,\n onUnpinParticipant,\n disablePinMenuItem,\n onMuteAllRemoteParticipants,\n /* @conditional-compile-remove(media-access) */\n onForbidAudio,\n /* @conditional-compile-remove(media-access) */\n onPermitAudio,\n /* @conditional-compile-remove(media-access) */\n onForbidOthersAudio,\n /* @conditional-compile-remove(media-access) */\n onPermitOthersAudio,\n /* @conditional-compile-remove(media-access) */\n onForbidVideo,\n /* @conditional-compile-remove(media-access) */\n onPermitVideo,\n /* @conditional-compile-remove(media-access) */\n onForbidOthersVideo,\n /* @conditional-compile-remove(media-access) */\n onPermitOthersVideo,\n /* @conditional-compile-remove(media-access) */\n meetingMediaAccess,\n sidePaneDismissButtonRef,\n chatButtonPresent\n } = props;\n\n const closePane = useCallback(() => {\n updateSidePaneRenderer(undefined);\n peopleButtonRef?.current?.focus();\n }, [peopleButtonRef, updateSidePaneRenderer]);\n\n const localeStrings = useLocale().strings.call;\n const remoteParticipants = useSelector(getRemoteParticipants);\n const [showMuteAllPrompt, setShowMuteAllPrompt] = useState(false);\n const muteAllPromptLabels = useMemo(\n () => ({\n confirmButtonLabel: localeStrings.muteAllConfirmButtonLabel,\n heading: localeStrings.muteAllDialogTitle,\n text: localeStrings.muteAllDialogContent,\n cancelButtonLabel: localeStrings.muteAllCancelButtonLabel\n }),\n [\n localeStrings.muteAllConfirmButtonLabel,\n localeStrings.muteAllDialogTitle,\n localeStrings.muteAllDialogContent,\n localeStrings.muteAllCancelButtonLabel\n ]\n );\n\n const onMuteAllPromptConfirm = useCallback(() => {\n onMuteAllRemoteParticipants && onMuteAllRemoteParticipants();\n setShowMuteAllPrompt(false);\n }, [onMuteAllRemoteParticipants, setShowMuteAllPrompt]);\n\n /* @conditional-compile-remove(media-access) */\n const [showForbidOthersAudioPrompt, setShowForbidOthersAudioPrompt] = useState(false);\n /* @conditional-compile-remove(media-access) */\n const [showPermitOthersAudioPrompt, setShowPermitOthersAudioPrompt] = useState(false);\n /* @conditional-compile-remove(media-access) */\n const [showForbidOthersVideoPrompt, setShowForbidOthersVideoPrompt] = useState(false);\n /* @conditional-compile-remove(media-access) */\n const [showPermitOthersVideoPrompt, setShowPermitOthersVideoPrompt] = useState(false);\n\n /* @conditional-compile-remove(media-access) */\n const onForbidAllAttendeesPromptConfirm = useCallback(() => {\n onForbidOthersAudio && onForbidOthersAudio();\n setShowForbidOthersAudioPrompt(false);\n }, [onForbidOthersAudio, setShowForbidOthersAudioPrompt]);\n /* @conditional-compile-remove(media-access) */\n const onPermitAllAttendeesPromptConfirm = useCallback(() => {\n onPermitOthersAudio && onPermitOthersAudio();\n setShowPermitOthersAudioPrompt(false);\n }, [onPermitOthersAudio, setShowPermitOthersAudioPrompt]);\n /* @conditional-compile-remove(media-access) */\n const onForbidOthersVideoPromptConfirm = useCallback(() => {\n onForbidOthersVideo && onForbidOthersVideo();\n setShowForbidOthersVideoPrompt(false);\n }, [onForbidOthersVideo, setShowForbidOthersVideoPrompt]);\n /* @conditional-compile-remove(media-access) */\n const onPermitOthersVideoPromptConfirm = useCallback(() => {\n onPermitOthersVideo && onPermitOthersVideo();\n setShowPermitOthersVideoPrompt(false);\n }, [onPermitOthersVideo, setShowPermitOthersVideoPrompt]);\n\n const sidePaneHeaderMenuProps: IContextualMenuProps = useMemo(() => {\n const menuItems: IContextualMenuItem[] = [];\n if (onMuteAllRemoteParticipants && remoteParticipants) {\n let isAllMuted = true;\n if (remoteParticipants) {\n for (const participant of Object.values(remoteParticipants)) {\n if (!participant.isMuted) {\n isAllMuted = false;\n break;\n }\n }\n }\n menuItems.push({\n ['data-ui-id']: 'people-pane-mute-all-remote-participants',\n key: 'muteAllRemoteParticipants',\n text: localeStrings.muteAllMenuLabel,\n iconProps: {\n iconName: 'ContextualMenuMicMutedIcon',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowMuteAllPrompt(true);\n },\n ariaLabel: localeStrings.muteAllMenuLabel,\n disabled: isAllMuted\n });\n }\n\n /* @conditional-compile-remove(media-access) */\n let hasAttendee = false;\n /* @conditional-compile-remove(media-access) */\n if (remoteParticipants) {\n for (const participant of Object.values(remoteParticipants)) {\n if (participant.role && participant.role === 'Attendee') {\n hasAttendee = true;\n break;\n }\n }\n }\n /* @conditional-compile-remove(media-access) */\n const isMeetingAudioPermitted = meetingMediaAccess ? meetingMediaAccess.isAudioPermitted : true;\n /* @conditional-compile-remove(media-access) */\n const isMeetingVideoPermitted = meetingMediaAccess ? meetingMediaAccess.isVideoPermitted : true;\n /* @conditional-compile-remove(media-access) */\n if (onForbidOthersAudio && remoteParticipants) {\n hasAttendee &&\n isMeetingAudioPermitted &&\n menuItems.push({\n ['data-ui-id']: 'people-pane-forbid-all-attendees-audio',\n key: 'forbidOthersAudio',\n text: localeStrings.forbidOthersAudioMenuLabel,\n iconProps: {\n iconName: 'ControlButtonMicProhibited',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowForbidOthersAudioPrompt(true);\n },\n ariaLabel: localeStrings.forbidOthersAudioMenuLabel,\n disabled: !hasAttendee\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (onPermitOthersAudio && remoteParticipants) {\n hasAttendee &&\n !isMeetingAudioPermitted &&\n menuItems.push({\n ['data-ui-id']: 'people-pane-permit-all-attendees-audio',\n key: 'permitOthersAudio',\n text: localeStrings.permitOthersAudioMenuLabel,\n iconProps: {\n iconName: 'ControlButtonMicOn',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowPermitOthersAudioPrompt(true);\n },\n ariaLabel: localeStrings.permitOthersAudioMenuLabel,\n disabled: !hasAttendee\n });\n }\n\n /* @conditional-compile-remove(media-access) */\n if (onForbidOthersVideo && remoteParticipants) {\n hasAttendee &&\n isMeetingVideoPermitted &&\n menuItems.push({\n ['data-ui-id']: 'people-pane-forbid-all-attendees-video',\n key: 'forbidOthersVideo',\n text: localeStrings.forbidOthersVideoMenuLabel,\n iconProps: {\n iconName: 'ControlButtonCameraProhibitedSmall',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowForbidOthersVideoPrompt(true);\n },\n ariaLabel: localeStrings.forbidOthersVideoMenuLabel,\n disabled: !hasAttendee\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (onPermitOthersVideo && remoteParticipants) {\n hasAttendee &&\n !isMeetingVideoPermitted &&\n menuItems.push({\n ['data-ui-id']: 'people-pane-permit-all-attendees-video',\n key: 'permitOthersVideo',\n text: localeStrings.permitOthersVideoMenuLabel,\n iconProps: {\n iconName: 'ControlButtonCameraOn',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n setShowPermitOthersVideoPrompt(true);\n },\n ariaLabel: localeStrings.permitOthersVideoMenuLabel,\n disabled: !hasAttendee\n });\n }\n\n if (onStopAllSpotlight && spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0) {\n menuItems.push({\n key: 'stopAllSpotlightKey',\n text: localeStrings.stopAllSpotlightMenuLabel,\n iconProps: { iconName: 'StopAllSpotlightMenuButton', styles: { root: { lineHeight: 0 } } },\n onClick: () => {\n onStopAllSpotlight();\n },\n ariaLabel: localeStrings.stopAllSpotlightMenuLabel\n });\n }\n return {\n items: menuItems\n };\n }, [\n onMuteAllRemoteParticipants,\n remoteParticipants,\n /* @conditional-compile-remove(media-access) */\n meetingMediaAccess,\n /* @conditional-compile-remove(media-access) */\n onForbidOthersAudio,\n /* @conditional-compile-remove(media-access) */\n onPermitOthersAudio,\n /* @conditional-compile-remove(media-access) */\n onForbidOthersVideo,\n /* @conditional-compile-remove(media-access) */\n onPermitOthersVideo,\n onStopAllSpotlight,\n spotlightedParticipantUserIds,\n localeStrings.muteAllMenuLabel,\n localeStrings.forbidOthersAudioMenuLabel,\n localeStrings.permitOthersAudioMenuLabel,\n localeStrings.forbidOthersVideoMenuLabel,\n localeStrings.permitOthersVideoMenuLabel,\n localeStrings.stopAllSpotlightMenuLabel\n ]);\n\n const onRenderHeader = useCallback(\n () => (\n <SidePaneHeader\n onClose={closePane}\n paneOpenerButton={peopleButtonRef}\n headingText={localeStrings.peoplePaneTitle}\n dismissSidePaneButtonAriaLabel={localeStrings.dismissSidePaneButtonLabel}\n mobileView={mobileView ?? false}\n dismissButtonComponentRef={sidePaneDismissButtonRef}\n chatButtonPresent={chatButtonPresent}\n />\n ),\n [\n closePane,\n peopleButtonRef,\n localeStrings.peoplePaneTitle,\n localeStrings.dismissSidePaneButtonLabel,\n mobileView,\n sidePaneDismissButtonRef,\n chatButtonPresent\n ]\n );\n\n const onFetchParticipantMenuItemsForCallComposite = useCallback(\n (participantId: string, myUserId?: string, defaultMenuItems?: IContextualMenuItem[]): IContextualMenuItem[] => {\n let isPinned = pinnedParticipants?.includes(participantId);\n const _defaultMenuItems: IContextualMenuItem[] = [];\n const isSpotlighted = spotlightedParticipantUserIds?.includes(participantId);\n const isMe = myUserId === participantId;\n isPinned = isSpotlighted ? false : isPinned;\n if (onMuteParticipant && !isMe && remoteParticipants && remoteParticipants[participantId]) {\n const participant = remoteParticipants[participantId];\n const isMuted = !!participant?.isMuted;\n _defaultMenuItems.push({\n key: 'mute',\n text: 'Mute',\n iconProps: {\n iconName: 'ContextualMenuMicMutedIcon',\n styles: { root: { lineHeight: 0 } }\n },\n onClick: () => {\n onMuteParticipant(participantId);\n },\n 'data-ui-id': 'participant-item-mute-participant',\n ariaLabel: 'Mute',\n disabled: isMuted\n });\n }\n\n /* @conditional-compile-remove(media-access) */\n const remoteParticipant = remoteParticipants?.[participantId];\n /* @conditional-compile-remove(media-access) */\n if (\n remoteParticipant?.mediaAccess &&\n !remoteParticipant.mediaAccess.isAudioPermitted &&\n remoteParticipant?.role === 'Attendee' &&\n onPermitAudio\n ) {\n _defaultMenuItems.push({\n key: 'permit-audio',\n text: localeStrings.permitAudioMenuLabel,\n iconProps: {\n iconName: 'ControlButtonMicOn',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onPermitAudio([participantId]);\n },\n 'data-ui-id': 'participant-item-permit-microphone-button',\n ariaLabel: localeStrings.permitAudioMenuLabel\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (remoteParticipant?.mediaAccess?.isAudioPermitted && remoteParticipant?.role === 'Attendee' && onForbidAudio) {\n _defaultMenuItems.push({\n key: 'forbid-audio',\n text: localeStrings.forbidAudioMenuLabel,\n iconProps: {\n iconName: 'ControlButtonMicProhibited',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onForbidAudio([participantId]);\n },\n 'data-ui-id': 'participant-item-forbid-microphone-button',\n ariaLabel: localeStrings.forbidAudioMenuLabel\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (\n remoteParticipant?.mediaAccess &&\n !remoteParticipant.mediaAccess.isVideoPermitted &&\n remoteParticipant?.role === 'Attendee' &&\n onPermitVideo\n ) {\n _defaultMenuItems.push({\n key: 'permit-video',\n text: localeStrings.permitVideoMenuLabel,\n iconProps: {\n iconName: 'ControlButtonCameraOn',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onPermitVideo([participantId]);\n },\n 'data-ui-id': 'participant-item-permit-camera-button',\n ariaLabel: localeStrings.permitVideoMenuLabel\n });\n }\n /* @conditional-compile-remove(media-access) */\n if (remoteParticipant?.mediaAccess?.isVideoPermitted && remoteParticipant?.role === 'Attendee' && onForbidVideo) {\n _defaultMenuItems.push({\n key: 'forbid-video',\n text: localeStrings.forbidVideoMenuLabel,\n iconProps: {\n iconName: 'ControlButtonCameraProhibitedSmall',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onForbidVideo([participantId]);\n },\n 'data-ui-id': 'participant-item-forbid-camera-button',\n ariaLabel: localeStrings.forbidVideoMenuLabel\n });\n }\n\n if (isSpotlighted) {\n const stopSpotlightMenuText = isMe\n ? localeStrings.stopSpotlightOnSelfMenuLabel\n : localeStrings.stopSpotlightMenuLabel;\n const onStopSpotlight = isMe\n ? onStopLocalSpotlight\n : onStopRemoteSpotlight\n ? () => {\n onStopRemoteSpotlight([participantId]);\n }\n : undefined;\n if (onStopSpotlight && stopSpotlightMenuText) {\n _defaultMenuItems.push({\n key: 'stop-spotlight',\n text: stopSpotlightMenuText,\n onClick: onStopSpotlight,\n iconProps: {\n iconName: 'StopSpotlightContextualMenuItem',\n styles: { root: { lineHeight: 0 } }\n },\n ariaLabel: stopSpotlightMenuText\n });\n }\n } else {\n const startSpotlightMenuText =\n spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0\n ? localeStrings.addSpotlightMenuLabel\n : localeStrings.startSpotlightMenuLabel;\n const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight\n ? spotlightedParticipantUserIds\n ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight\n : false\n : false;\n const onStartSpotlight = isMe\n ? onStartLocalSpotlight\n : onStartRemoteSpotlight\n ? () => {\n onStartRemoteSpotlight([participantId]);\n }\n : undefined;\n if (onStartSpotlight && startSpotlightMenuText) {\n _defaultMenuItems.push({\n key: 'start-spotlight',\n text: startSpotlightMenuText,\n onClick: onStartSpotlight,\n iconProps: {\n iconName: 'StartSpotlightContextualMenuItem',\n styles: { root: { lineHeight: 0 } }\n },\n ariaLabel: startSpotlightMenuText,\n disabled: maxSpotlightedParticipantsReached,\n title: maxSpotlightedParticipantsReached ? localeStrings.spotlightLimitReachedMenuTitle : undefined\n });\n }\n }\n if (!isMe && isPinned !== undefined) {\n if (isPinned && onUnpinParticipant && localeStrings?.unpinParticipantMenuLabel) {\n _defaultMenuItems.push({\n key: 'unpin',\n text: localeStrings?.unpinParticipantMenuLabel,\n iconProps: {\n iconName: 'UnpinParticipant',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onUnpinParticipant?.(participantId);\n },\n 'data-ui-id': 'participant-item-unpin-participant-button',\n ariaLabel: localeStrings.unpinParticipantMenuItemAriaLabel\n });\n }\n if (!isPinned && onPinParticipant && localeStrings?.pinParticipantMenuLabel) {\n _defaultMenuItems.push({\n key: 'pin',\n text: disablePinMenuItem\n ? localeStrings.pinParticipantLimitReachedMenuLabel\n : localeStrings.pinParticipantMenuLabel,\n iconProps: {\n iconName: 'PinParticipant',\n styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n },\n onClick: () => {\n onPinParticipant(participantId);\n },\n 'data-ui-id': 'participant-item-pin-participant-button',\n disabled: disablePinMenuItem || isSpotlighted,\n ariaLabel: localeStrings.pinParticipantMenuItemAriaLabel\n });\n }\n }\n if (defaultMenuItems) {\n _defaultMenuItems.push(...defaultMenuItems);\n }\n return onFetchParticipantMenuItems\n ? onFetchParticipantMenuItems(participantId, myUserId, _defaultMenuItems)\n : _defaultMenuItems;\n },\n [\n pinnedParticipants,\n spotlightedParticipantUserIds,\n onMuteParticipant,\n remoteParticipants,\n onPermitAudio,\n onForbidAudio,\n onPermitVideo,\n onForbidVideo,\n onFetchParticipantMenuItems,\n localeStrings.permitAudioMenuLabel,\n localeStrings.forbidAudioMenuLabel,\n localeStrings.permitVideoMenuLabel,\n localeStrings.forbidVideoMenuLabel,\n localeStrings.stopSpotlightOnSelfMenuLabel,\n localeStrings.stopSpotlightMenuLabel,\n localeStrings.addSpotlightMenuLabel,\n localeStrings.startSpotlightMenuLabel,\n localeStrings.spotlightLimitReachedMenuTitle,\n localeStrings?.unpinParticipantMenuLabel,\n localeStrings.pinParticipantMenuLabel,\n localeStrings.unpinParticipantMenuItemAriaLabel,\n localeStrings.pinParticipantLimitReachedMenuLabel,\n localeStrings.pinParticipantMenuItemAriaLabel,\n onStopLocalSpotlight,\n onStopRemoteSpotlight,\n maxParticipantsToSpotlight,\n onStartLocalSpotlight,\n onStartRemoteSpotlight,\n onUnpinParticipant,\n onPinParticipant,\n disablePinMenuItem\n ]\n );\n\n const role = useSelector(getRole);\n const alternateCallerId = useSelector(getAlternateCallerId);\n\n const onRenderContent = useCallback((): JSX.Element => {\n return (\n <>\n {\n <Prompt\n {...muteAllPromptLabels}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onMuteAllPromptConfirm()}\n isOpen={showMuteAllPrompt}\n onCancel={() => setShowMuteAllPrompt(false)}\n />\n }\n {\n /* @conditional-compile-remove(media-access) */\n <Prompt\n heading={localeStrings.forbidOthersAudioDialogTitle}\n text={localeStrings.forbidOthersAudioDialogContent}\n confirmButtonLabel={localeStrings.forbidOthersAudioConfirmButtonLabel}\n cancelButtonLabel={localeStrings.forbidOthersAudioCancelButtonLabel}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onForbidAllAttendeesPromptConfirm()}\n isOpen={showForbidOthersAudioPrompt}\n onCancel={() => setShowForbidOthersAudioPrompt(false)}\n />\n }\n {\n /* @conditional-compile-remove(media-access) */\n <Prompt\n heading={localeStrings.permitOthersAudioDialogTitle}\n text={localeStrings.permitOthersAudioDialogContent}\n confirmButtonLabel={localeStrings.permitOthersAudioConfirmButtonLabel}\n cancelButtonLabel={localeStrings.permitOthersAudioCancelButtonLabel}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onPermitAllAttendeesPromptConfirm()}\n isOpen={showPermitOthersAudioPrompt}\n onCancel={() => setShowForbidOthersAudioPrompt(false)}\n />\n }\n {\n /* @conditional-compile-remove(media-access) */\n <Prompt\n heading={localeStrings.forbidOthersVideoDialogTitle}\n text={localeStrings.forbidOthersVideoDialogContent}\n confirmButtonLabel={localeStrings.forbidOthersVideoConfirmButtonLabel}\n cancelButtonLabel={localeStrings.forbidOthersVideoCancelButtonLabel}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onForbidOthersVideoPromptConfirm()}\n isOpen={showForbidOthersVideoPrompt}\n onCancel={() => setShowForbidOthersVideoPrompt(false)}\n />\n }\n {\n /* @conditional-compile-remove(media-access) */\n <Prompt\n heading={localeStrings.permitOthersVideoDialogTitle}\n text={localeStrings.permitOthersVideoDialogContent}\n confirmButtonLabel={localeStrings.permitOthersVideoConfirmButtonLabel}\n cancelButtonLabel={localeStrings.permitOthersVideoCancelButtonLabel}\n styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n onConfirm={() => onPermitOthersVideoPromptConfirm()}\n isOpen={showPermitOthersVideoPrompt}\n onCancel={() => setShowForbidOthersVideoPrompt(false)}\n />\n }\n\n <PeoplePaneContent\n inviteLink={inviteLink}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n onFetchParticipantMenuItems={onFetchParticipantMenuItemsForCallComposite}\n setDrawerMenuItems={setDrawerMenuItems}\n mobileView={mobileView}\n setParticipantActioned={setParticipantActioned}\n participantListHeadingMoreButtonProps={sidePaneHeaderMenuProps}\n pinnedParticipants={pinnedParticipants}\n role={role}\n alternateCallerId={alternateCallerId}\n />\n </>\n );\n }, [\n muteAllPromptLabels,\n showMuteAllPrompt,\n localeStrings.forbidOthersAudioDialogTitle,\n localeStrings.forbidOthersAudioDialogContent,\n localeStrings.forbidOthersAudioConfirmButtonLabel,\n localeStrings.forbidOthersAudioCancelButtonLabel,\n localeStrings.permitOthersAudioDialogTitle,\n localeStrings.permitOthersAudioDialogContent,\n localeStrings.permitOthersAudioConfirmButtonLabel,\n localeStrings.permitOthersAudioCancelButtonLabel,\n localeStrings.forbidOthersVideoDialogTitle,\n localeStrings.forbidOthersVideoDialogContent,\n localeStrings.forbidOthersVideoConfirmButtonLabel,\n localeStrings.forbidOthersVideoCancelButtonLabel,\n localeStrings.permitOthersVideoDialogTitle,\n localeStrings.permitOthersVideoDialogContent,\n localeStrings.permitOthersVideoConfirmButtonLabel,\n localeStrings.permitOthersVideoCancelButtonLabel,\n showForbidOthersAudioPrompt,\n showPermitOthersAudioPrompt,\n showForbidOthersVideoPrompt,\n showPermitOthersVideoPrompt,\n inviteLink,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItemsForCallComposite,\n setDrawerMenuItems,\n mobileView,\n setParticipantActioned,\n sidePaneHeaderMenuProps,\n pinnedParticipants,\n role,\n alternateCallerId,\n onMuteAllPromptConfirm,\n onForbidAllAttendeesPromptConfirm,\n onPermitAllAttendeesPromptConfirm,\n onForbidOthersVideoPromptConfirm,\n onPermitOthersVideoPromptConfirm\n ]);\n\n const sidePaneRenderer: SidePaneRenderer = useMemo(\n () => ({\n headerRenderer: onRenderHeader,\n contentRenderer: onRenderContent,\n id: PEOPLE_SIDE_PANE_ID\n }),\n [onRenderContent, onRenderHeader]\n );\n\n const openPane = useCallback(() => {\n updateSidePaneRenderer(sidePaneRenderer);\n }, [sidePaneRenderer, updateSidePaneRenderer]);\n\n const isOpen = useIsParticularSidePaneOpen(PEOPLE_SIDE_PANE_ID);\n\n // Update pane renderer if it is open and the openPane dep changes\n useEffect(() => {\n if (isOpen) {\n openPane();\n }\n }, [isOpen, openPane]);\n\n return { openPeoplePane: openPane, closePeoplePane: closePane, isPeoplePaneOpen: isOpen };\n};\n"]}
|
package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js
CHANGED
@@ -206,8 +206,8 @@ const CallWithChatScreen = (props) => {
|
|
206
206
|
}
|
207
207
|
const sidePaneHeaderRenderer = useCallback(() => {
|
208
208
|
var _a;
|
209
|
-
return (React.createElement(SidePaneHeader, { headingText: chatPaneTitle, onClose: closeChat, dismissSidePaneButtonAriaLabel: (_a = callWithChatStrings.dismissSidePaneButtonLabel) !== null && _a !== void 0 ? _a : '', mobileView: mobileView }));
|
210
|
-
}, [chatPaneTitle, callWithChatStrings.dismissSidePaneButtonLabel,
|
209
|
+
return (React.createElement(SidePaneHeader, { headingText: chatPaneTitle, onClose: closeChat, dismissSidePaneButtonAriaLabel: (_a = callWithChatStrings.dismissSidePaneButtonLabel) !== null && _a !== void 0 ? _a : '', mobileView: mobileView, chatButtonPresent: showChatButton }));
|
210
|
+
}, [chatPaneTitle, closeChat, callWithChatStrings.dismissSidePaneButtonLabel, mobileView, showChatButton]);
|
211
211
|
const sidePaneContentRenderer = useMemo(() => (hasJoinedCall ? onRenderChatContent : undefined), [hasJoinedCall, onRenderChatContent]);
|
212
212
|
const sidePaneRenderer = useMemo(() => ({
|
213
213
|
contentRenderer: sidePaneContentRenderer,
|