{"version":3,"file":"static/js/4430_9091c86f1bd145b0b76e.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/mutedNotificationSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/networkReconnectTileSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/utils/timerUtils.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/DtmfDialpadPage.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/pages/SurveyPage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ThankYouForFeedbackPage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/TransferPage.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/LocalVideoTileSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/activeVideoBackgroundEffectSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/callStatusSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/capabilitiesChangedInfoAndRoleSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/capabilitySelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/complianceBannerSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/deviceCountSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/devicePermissionSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/lobbySelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/dominantRemoteParticipantSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/getFirstSpotlightedRemoteParticipantSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localPreviewSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localVideoStreamSelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/mediaGallerySelector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/Buttons.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallComposite.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallControls.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/ExpandedLocalVideoTile.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/HoldPane.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LobbyTile.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalDeviceSettings.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalPreview.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/NetworkReconnectTile.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/NoticePage.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/styles/StartCallButton.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackCapabilityChangedNotifications.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackErrors.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallComposite/utils/useConsoleErrors.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/hooks/useCallWithChatCompositeStrings.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/selectors/moreDrawerSelector.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getUserFacingDiagnostics } from './baseSelectors';\n/**\n * @private\n */\nexport const mutedNotificationSelector = reselect.createSelector([getUserFacingDiagnostics], diagnostics => {\n var _a;\n return {\n speakingWhileMuted: !!((_a = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.speakingWhileMicrophoneIsMuted) === null || _a === void 0 ? void 0 : _a.value)\n };\n});\n//# sourceMappingURL=mutedNotificationSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getUserFacingDiagnostics } from './baseSelectors';\nimport { lobbySelector } from './lobbySelector';\n/**\n * @private\n */\nexport const networkReconnectTileSelector = reselect.createSelector([getUserFacingDiagnostics, lobbySelector], (diagnostics, lobbyProps) => {\n var _a;\n return {\n networkReconnectValue: (_a = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.network.latest.networkReconnect) === null || _a === void 0 ? void 0 : _a.value,\n localParticipantVideoStream: lobbyProps.localParticipantVideoStream\n };\n});\n//# sourceMappingURL=networkReconnectTileSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @internal\n */\nexport const getMinutes = (time) => {\n return Math.floor(getSeconds(time) / 60);\n};\n/**\n * @internal\n */\nexport const getSeconds = (time) => {\n return Math.floor(time / 1000);\n};\n/**\n * @internal\n */\nexport const getHours = (time) => {\n return Math.floor(getMinutes(time) / 60);\n};\n/**\n * @internal\n */\nexport const getReadableTime = (time) => {\n const hours = getHours(time);\n const readableMinutes = ('0' + getMinutes(time) % 60).slice(-2);\n const readableSeconds = ('0' + getSeconds(time) % 60).slice(-2);\n return `${hours > 0 ? hours + ':' : ''}${readableMinutes}:${readableSeconds}`;\n};\n//# sourceMappingURL=timerUtils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _pxToRem } from \"../../../../../acs-ui-common/src\";\n/**\n * styles for hold pane timer\n *\n * @private\n */\nexport const DtmfDialpadContentTimerStyles = {\n root: {\n color: 'inherit',\n fontWeight: 600,\n fontSize: _pxToRem(20),\n lineHeight: _pxToRem(28),\n margin: 'auto'\n }\n};\n//# sourceMappingURL=DtmfDialpadPage.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Dialpad } from \"../../../../../react-components/src\";\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { Stack, Text, useTheme } from '@fluentui/react';\nimport { getReadableTime } from '../utils/timerUtils';\nimport { DtmfDialpadContentTimerStyles } from '../styles/DtmfDialpadPage.styles';\nimport { isPhoneNumberIdentifier } from '@azure/communication-common';\nimport { useSelector } from '../hooks/useSelector';\nimport { getRemoteParticipants, getStartTime, getTargetCallees } from '../selectors/baseSelectors';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nconst DtmfDialpadPageContent = (props) => {\n const theme = useTheme();\n const targetCallees = useSelector(getTargetCallees);\n const remoteParticipants = useSelector(getRemoteParticipants);\n const calleeId = targetCallees === null || targetCallees === void 0 ? void 0 : targetCallees[0];\n let calleeName;\n if (remoteParticipants) {\n const remoteParticipantValues = Object.values(remoteParticipants);\n if (calleeId && isPhoneNumberIdentifier(calleeId)) {\n calleeName = calleeId.phoneNumber;\n }\n else {\n calleeName = remoteParticipantValues.find(p => p.identifier === calleeId);\n }\n }\n const adapter = useAdapter();\n return React.createElement(Stack, { style: {\n height: '100%',\n width: '100%',\n background: theme.palette.white\n } },\n React.createElement(Stack, { verticalAlign: 'center', style: {\n margin: 'auto'\n } },\n React.createElement(DtmfDialerContentTimer, null),\n React.createElement(Text, { style: {\n margin: 'auto'\n } }, calleeName && calleeName !== 'Unnamed participant' ? calleeName === null || calleeName === void 0 ? void 0 : calleeName.toString() : ''),\n React.createElement(Dialpad, { onSendDtmfTone: (tone) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.sendDtmfTone(tone);\n }), longPressTrigger: props.mobileView ? 'touch' : 'mouseAndTouch', dialpadMode: 'dtmf', dtmfAudioContext: props.compositeAudioContext })));\n};\nconst DtmfDialerContentTimer = () => {\n const [time, setTime] = useState(0);\n const elapsedTime = getReadableTime(time);\n const statefulStartTime = useSelector(getStartTime);\n const startTime = useMemo(() => {\n return statefulStartTime !== null && statefulStartTime !== void 0 ? statefulStartTime : new Date(Date.now());\n }, [statefulStartTime]);\n useEffect(() => {\n const interval = setInterval(() => {\n var _a;\n setTime((_a = new Date(Date.now()).getTime() - (startTime === null || startTime === void 0 ? void 0 : startTime.getTime())) !== null && _a !== void 0 ? _a : 0);\n }, 10);\n return () => {\n clearInterval(interval);\n };\n }, [startTime]);\n return React.createElement(Text, { styles: DtmfDialpadContentTimerStyles }, elapsedTime);\n};\n/**\n * @internal\n */\nexport const DtmfDialpadPage = (props) => {\n return React.createElement(DtmfDialpadPageContent, Object.assign({}, props, { mobileView: props.mobileView }));\n};\n//# sourceMappingURL=DtmfDialpadPage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { DiagnosticQuality } from '@azure/communication-calling';\nimport { useId } from '@fluentui/react-hooks';\nimport { _isInCall } from \"../../../../../calling-component-bindings/src\";\nimport { ErrorBar } from \"../../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { useState } from 'react';\nimport { useLocale } from '../../localization';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { MediaGallery } from '../components/MediaGallery';\nimport { NetworkReconnectTile } from '../components/NetworkReconnectTile';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { complianceBannerSelector } from '../selectors/complianceBannerSelector';\nimport { mediaGallerySelector } from '../selectors/mediaGallerySelector';\nimport { getRemoteParticipantsConnectedSelector } from '../selectors/mediaGallerySelector';\nimport { mutedNotificationSelector } from '../selectors/mutedNotificationSelector';\nimport { networkReconnectTileSelector } from '../selectors/networkReconnectTileSelector';\nimport { reduceCallControlsForMobile } from '../utils';\nimport { DtmfDialpadPage } from './DtmfDialpadPage';\nimport { showDtmfDialer } from '../utils/MediaGalleryUtils';\nimport { getTargetCallees } from '../selectors/baseSelectors';\nimport { Prompt } from '../components/Prompt';\nimport { toFlatCommunicationIdentifier } from \"../../../../../acs-ui-common/src\";\n/**\n * @private\n */\nexport const CallPage = (props) => {\n var _a, _b;\n const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants = [], setPinnedParticipants, compositeAudioContext, disableAutoShowDtmfDialer = {\n dialerBehavior: 'autoShow'\n }, latestNotifications, onDismissNotification } = props;\n // To use useProps to get these states, we need to create another file wrapping Call,\n // It seems unnecessary in this case, so we get the updated states using this approach.\n const { callStatus } = useSelector(callStatusSelector);\n const mediaGalleryProps = useSelector(mediaGallerySelector);\n const mediaGalleryHandlers = useHandlers(MediaGallery);\n const complianceBannerProps = useSelector(complianceBannerSelector);\n const errorBarProps = usePropsFor(ErrorBar);\n const mutedNotificationProps = useSelector(mutedNotificationSelector);\n const networkReconnectTileProps = useSelector(networkReconnectTileSelector);\n const remoteParticipantsConnected = useSelector(getRemoteParticipantsConnectedSelector);\n const callees = useSelector(getTargetCallees);\n const renderDtmfDialerFromStart = showDtmfDialer(callees, remoteParticipantsConnected, disableAutoShowDtmfDialer);\n const [dtmfDialerPresent, setDtmfDialerPresent] = useState(renderDtmfDialerFromStart);\n const strings = useLocale().strings.call;\n const pinnedParticipantsChecked = useMemo(() => pinnedParticipants.filter(pinnedParticipant => remoteParticipantsConnected.find(remoteParticipant => toFlatCommunicationIdentifier(remoteParticipant.identifier) === pinnedParticipant)), [pinnedParticipants, remoteParticipantsConnected]);\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = mobileView ? reduceCallControlsForMobile(options === null || options === void 0 ? void 0 : options.callControls) : options === null || options === void 0 ? void 0 : options.callControls;\n const drawerMenuHostId = useId('drawerMenuHost');\n const [isPromptOpen, setIsPromptOpen] = useState(false);\n const [promptProps, setPromptProps] = useState();\n const onRenderGalleryContentTrampoline = () => {\n var _a;\n if (dtmfDialerPresent) {\n return React.createElement(DtmfDialpadPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError, capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent, compositeAudioContext: compositeAudioContext });\n }\n else {\n return React.createElement(MediaGallery, Object.assign({ isMobile: mobileView }, mediaGalleryProps, mediaGalleryHandlers, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, remoteVideoTileMenuOptions: options === null || options === void 0 ? void 0 : options.remoteVideoTileMenuOptions, drawerMenuHostId: drawerMenuHostId, localVideoTileOptions: options === null || options === void 0 ? void 0 : options.localVideoTile, userSetOverflowGalleryPosition: userSetOverflowGalleryPosition, userSetGalleryLayout: galleryLayout, pinnedParticipants: pinnedParticipantsChecked, setPinnedParticipants: setPinnedParticipants, setIsPromptOpen: setIsPromptOpen, setPromptProps: setPromptProps, hideSpotlightButtons: (_a = options === null || options === void 0 ? void 0 : options.spotlight) === null || _a === void 0 ? void 0 : _a.hideSpotlightButtons, videoTilesOptions: options === null || options === void 0 ? void 0 : options.videoTilesOptions, captionsOptions: options === null || options === void 0 ? void 0 : options.captionsBanner }));\n }\n };\n return React.createElement(React.Fragment, null,\n React.createElement(CallArrangement, { id: drawerMenuHostId, complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }), errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && errorBarProps, showErrorNotifications: (_a = options === null || options === void 0 ? void 0 : options.errorBar) !== null && _a !== void 0 ? _a : true, mutedNotificationProps: mutedNotificationProps, callControlProps: {\n callInvitationURL: callInvitationURL,\n onFetchParticipantMenuItems: onFetchParticipantMenuItems,\n options: callControlOptions,\n increaseFlyoutItemSize: mobileView\n }, onFetchAvatarPersonaData: onFetchAvatarPersonaData, mobileView: mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? onRenderGalleryContentTrampoline() : React.createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps, { isMobile: mobileView })) : React.createElement(React.Fragment, null), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: onCloseChatPane, dataUiId: 'call-page', latestErrors: props.latestErrors, latestNotifications: latestNotifications, onDismissError: props.onDismissError, onDismissNotification: onDismissNotification, onUserSetOverflowGalleryPositionChange: onSetUserSetOverflowGalleryPosition, onUserSetGalleryLayoutChange: onUserSetGalleryLayoutChange, userSetGalleryLayout: galleryLayout, capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent, setIsPromptOpen: setIsPromptOpen, setPromptProps: setPromptProps, hideSpotlightButtons: (_b = options === null || options === void 0 ? void 0 : options.spotlight) === null || _b === void 0 ? void 0 : _b.hideSpotlightButtons, pinnedParticipants: pinnedParticipantsChecked, setPinnedParticipants: setPinnedParticipants, captionsOptions: options === null || options === void 0 ? void 0 : options.captionsBanner, dtmfDialerOptions: disableAutoShowDtmfDialer }),\n React.createElement(Prompt, Object.assign({ isOpen: isPromptOpen, onDismiss: () => setIsPromptOpen(false) }, promptProps)));\n};\n/**\n * @private\n */\nexport const isNetworkHealthy = (value) => {\n // We know that the value is actually of type DiagnosticQuality for this diagnostic.\n // We ignore any boolen values, considering the network to still be healthy.\n // Thus, only DiagnosticQuality.Poor or .Bad indicate network problems.\n return value === true || value === false || value === undefined || value === DiagnosticQuality.Good;\n};\n//# sourceMappingURL=CallPage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport React, { useCallback, useMemo } from 'react';\nimport { useState } from 'react';\nimport { useAdaptedSelector } from '../hooks/useAdaptedSelector';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { LocalDeviceSettings } from '../components/LocalDeviceSettings';\nimport { StartCallButton } from '../components/StartCallButton';\nimport { devicePermissionSelector } from '../selectors/devicePermissionSelector';\nimport { useSelector } from '../hooks/useSelector';\nimport { CameraButton, DevicesButton, ErrorBar, useTheme } from \"../../../../../react-components/src\";\nimport { getCallingSelector } from \"../../../../../calling-component-bindings/src\";\nimport { Image, Panel, PanelType, Stack } from '@fluentui/react';\nimport { callDetailsContainerStyles, configurationCenteredContent, configurationSectionStyle, deviceConfigurationStackTokens, fillWidth, logoStyles, panelFocusProps, panelStyles, startCallButtonStyleDesktop } from '../styles/CallConfiguration.styles';\nimport { LocalPreview } from '../components/LocalPreview';\nimport { callDetailsStyleDesktop, callDetailsStyleMobile, configurationStackTokensDesktop, configurationStackTokensMobile, configurationContainerStyle, selectionContainerStyle, startCallButtonContainerStyleDesktop, startCallButtonContainerStyleMobile, startCallButtonStyleMobile, titleContainerStyleDesktop, titleContainerStyleMobile } from '../styles/CallConfiguration.styles';\nimport { useLocale } from '../../localization';\nimport { bannerNotificationStyles } from '../styles/CallPage.styles';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { ConfigurationPageErrorBar } from '../components/ConfigurationPageErrorBar';\nimport { _isSafari } from '../utils';\nimport { VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM, useVideoEffectsPane } from '../components/SidePane/useVideoEffectsPane';\nimport { SidePane } from '../components/SidePane/SidePane';\nimport { useIsParticularSidePaneOpen } from '../components/SidePane/SidePaneProvider';\nimport { localVideoSelector } from '../../CallComposite/selectors/localVideoStreamSelector';\nimport { SvgWithWordWrapping } from '../components/SvgWithWordWrapping';\nimport { getMicrophones, getRole } from '../selectors/baseSelectors';\nimport { getEnvironmentInfo } from '../selectors/baseSelectors';\n/**\n * @private\n */\nexport const ConfigurationPage = (props) => {\n var _a;\n const { startCallHandler, mobileView, modalLayerHostId } = props;\n const theme = useTheme();\n const options = useAdaptedSelector(getCallingSelector(DevicesButton));\n const localDeviceSettingsHandlers = useHandlers(LocalDeviceSettings);\n const { video: cameraPermissionGranted, audio: microphonePermissionGranted } = useSelector(devicePermissionSelector);\n const errorBarProps = usePropsFor(ErrorBar);\n const microphones = useSelector(getMicrophones);\n const environmentInfo = useSelector(getEnvironmentInfo);\n let disableStartCallButton = !microphonePermissionGranted || (microphones === null || microphones === void 0 ? void 0 : microphones.length) === 0;\n const role = useSelector(getRole);\n const isCameraOn = useSelector(localVideoSelector).isAvailable;\n const [cameraLoading, setCameraLoading] = useState(false);\n const switchCamera = useCallback((device, options) => __awaiter(void 0, void 0, void 0, function* () {\n // Only set camera to be loading if we are switching source while the camera is on\n setCameraLoading(isCameraOn);\n try {\n yield localDeviceSettingsHandlers.onSelectCamera(device, options);\n }\n finally {\n setCameraLoading(false);\n }\n }), [localDeviceSettingsHandlers, isCameraOn]);\n const { onToggleCamera } = usePropsFor(CameraButton);\n const toggleCamera = useCallback((options) => __awaiter(void 0, void 0, void 0, function* () {\n // Only set camera to loading if we are turning on the camera (i.e. the camera was off)\n setCameraLoading(!isCameraOn);\n try {\n yield onToggleCamera(options);\n }\n finally {\n setCameraLoading(false);\n }\n }), [isCameraOn, onToggleCamera]);\n let filteredLatestErrors = props.latestErrors;\n // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK\n if (role !== 'Consumer') {\n filteredLatestErrors = filteredLatestErrors.filter(e => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari');\n }\n if ((useIsParticularSidePaneOpen('videoeffects') || !isCameraOn) && errorBarProps) {\n filteredLatestErrors = filteredLatestErrors.filter(e => e.type !== 'unableToStartVideoEffect');\n }\n if (role === 'Consumer') {\n // If user's role permissions do not allow access to the microphone button then DO NOT disable the start call button\n // because microphone device permission is not needed for the user's role\n disableStartCallButton = false;\n }\n const locale = useLocale();\n const title = locale.strings.call.configurationPageTitle.length > 0 ? React.createElement(Stack.Item, { className: mobileView ? titleContainerStyleMobile(theme) : titleContainerStyleDesktop(theme) },\n React.createElement(SvgWithWordWrapping, { width: mobileView ? 325 : 445, lineHeightPx: 16 * 1.5, bufferHeightPx: 16, text: locale.strings.call.configurationPageTitle, role: \"heading\" })) : React.createElement(React.Fragment, null);\n const callDescription = locale.strings.call.configurationPageCallDetails && React.createElement(Stack.Item, { className: mobileView ? callDetailsStyleMobile(theme) : callDetailsStyleDesktop(theme) }, locale.strings.call.configurationPageCallDetails);\n const mobileWithPreview = mobileView && role !== 'Consumer'; // When permission API is not available, we want to show screen saying checking for access (disappears on its own)\n // then based on permission setting, we show permission denied or nothing\n const { toggleVideoEffectsPane, closeVideoEffectsPane, isVideoEffectsPaneOpen } = useVideoEffectsPane(props.updateSidePaneRenderer, mobileView, props.latestErrors, props.onDismissError);\n const startCall = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n closeVideoEffectsPane();\n startCallHandler();\n }), [startCallHandler, closeVideoEffectsPane]);\n const panelLayerProps = useMemo(() => ({\n hostId: modalLayerHostId\n }), [modalLayerHostId]);\n const filteredErrorBarProps = useMemo(() => (Object.assign(Object.assign({}, errorBarProps), { activeErrorMessages: filteredLatestErrors })), [errorBarProps, filteredLatestErrors]);\n const containerStyles = useMemo(() => { var _a; return configurationContainerStyle(!mobileView, (_a = props.backgroundImage) === null || _a === void 0 ? void 0 : _a.url); }, [mobileView, (_a = props.backgroundImage) === null || _a === void 0 ? void 0 : _a.url]);\n return React.createElement(Stack, { styles: containerStyles },\n React.createElement(Stack, { styles: bannerNotificationStyles },\n React.createElement(ConfigurationPageErrorBar, { errorBarProps: filteredErrorBarProps, onDismissError: props.onDismissError })),\n React.createElement(Stack, { verticalFill: true, grow: true, horizontal: true, className: fillWidth },\n React.createElement(Stack, { className: configurationCenteredContent(mobileWithPreview, !!props.logo), verticalAlign: \"center\", verticalFill: mobileWithPreview, tokens: mobileWithPreview ? configurationStackTokensMobile : configurationStackTokensDesktop },\n React.createElement(Stack.Item, { styles: callDetailsContainerStyles },\n React.createElement(Logo, { logo: props.logo }),\n title,\n callDescription),\n React.createElement(Stack, { horizontal: !mobileWithPreview, horizontalAlign: mobileWithPreview ? 'stretch' : 'center', verticalFill: mobileWithPreview, tokens: deviceConfigurationStackTokens },\n role !== 'Consumer' && React.createElement(LocalPreview, { mobileView: mobileWithPreview, showDevicesButton: mobileView, onToggleCamera: toggleCamera, cameraLoading: cameraLoading && !isCameraOn }),\n React.createElement(Stack, { styles: mobileView ? undefined : configurationSectionStyle },\n !mobileWithPreview && React.createElement(Stack, { className: mobileView ? undefined : selectionContainerStyle(theme, _isSafari(environmentInfo)) },\n React.createElement(LocalDeviceSettings, Object.assign({}, options, localDeviceSettingsHandlers, { onSelectCamera: switchCamera, cameraPermissionGranted: cameraPermissionGrantedTrampoline(cameraPermissionGranted), microphonePermissionGranted: micPermissionGrantedTrampoline(microphonePermissionGranted), onClickVideoEffects: toggleVideoEffectsPane }))),\n React.createElement(Stack, { styles: mobileWithPreview ? startCallButtonContainerStyleMobile : startCallButtonContainerStyleDesktop, horizontalAlign: mobileWithPreview ? 'stretch' : 'end' },\n React.createElement(StartCallButton, { className: mobileWithPreview ? startCallButtonStyleMobile : startCallButtonStyleDesktop, onClick: startCall, disabled: disableStartCallButton, hideIcon: true }))))),\n React.createElement(Panel, { isOpen: isVideoEffectsPaneOpen, hasCloseButton: false, isBlocking: false, isHiddenOnDismiss: false, styles: panelStyles, focusTrapZoneProps: panelFocusProps, layerProps: panelLayerProps, type: PanelType.custom, customWidth: `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` },\n React.createElement(SidePane, { ariaLabel: isVideoEffectsPaneOpen ? locale.strings.call.videoEffectsPaneAriaLabel : undefined, mobileView: props.mobileView, updateSidePaneRenderer: props.updateSidePaneRenderer, maxWidth: `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem`, minWidth: `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` }))));\n};\nconst cameraPermissionGrantedTrampoline = (cameraPermissionGranted, videoState) => {\n return cameraPermissionGranted;\n};\nconst micPermissionGrantedTrampoline = (microphonePermissionGranted, audioState) => {\n return microphonePermissionGranted;\n};\nconst Logo = (props) => {\n if (!props.logo) {\n return React.createElement(React.Fragment, null);\n }\n return React.createElement(Image, { styles: logoStyles(props.logo.shape), src: props.logo.url, alt: props.logo.alt });\n};\n//# sourceMappingURL=ConfigurationPage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ErrorBar } from \"../../../../../react-components/src\";\nimport React from 'react';\nimport { useLocale } from '../../localization';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { HoldPane } from '../components/HoldPane';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { disableCallControls, reduceCallControlsForMobile } from '../utils';\n/**\n * @beta\n */\nexport const HoldPage = (props) => {\n var _a, _b, _c, _d, _e;\n const errorBarProps = usePropsFor(ErrorBar);\n const strings = useLocale().strings.call;\n let callControlOptions = props.mobileView ? reduceCallControlsForMobile((_a = props.options) === null || _a === void 0 ? void 0 : _a.callControls) : (_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls;\n callControlOptions = disableCallControls(callControlOptions, ['cameraButton', 'microphoneButton', 'devicesButton', 'screenShareButton', 'holdButton']);\n return React.createElement(CallArrangement, { complianceBannerProps: {\n strings\n }, errorBarProps: ((_c = props.options) === null || _c === void 0 ? void 0 : _c.errorBar) !== false && errorBarProps, showErrorNotifications: (_e = (_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== null && _e !== void 0 ? _e : true, callControlProps: {\n options: callControlOptions,\n increaseFlyoutItemSize: props.mobileView\n }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => React.createElement(HoldPane, null), dataUiId: 'hold-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, latestNotifications: props.latestNotifications, onDismissError: props.onDismissError, onDismissNotification: props.onDismissNotification });\n};\n//# sourceMappingURL=HoldPage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { ErrorBar } from \"../../../../../react-components/src\";\nimport { useSelector } from '../hooks/useSelector';\nimport { lobbySelector } from '../selectors/lobbySelector';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { LobbyTile } from '../components/LobbyTile';\nimport { getCallStatus, getRemoteParticipants } from '../selectors/baseSelectors';\nimport { disableCallControls, reduceCallControlsForMobile } from '../utils';\nimport { useLocale } from '../../localization';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { isPhoneNumberIdentifier } from '@azure/communication-common';\n/**\n * @private\n */\nexport const LobbyPage = (props) => {\n var _a, _b, _c, _d, _e, _f;\n const errorBarProps = usePropsFor(ErrorBar);\n const lobbyProps = useSelector(lobbySelector);\n const strings = useLocale().strings.call;\n const callState = useSelector(getCallStatus);\n const inLobby = callState === 'InLobby';\n const participants = (_a = useSelector(getRemoteParticipants)) !== null && _a !== void 0 ? _a : {};\n // Reduce the controls shown when mobile view is enabled.\n let callControlOptions = props.mobileView ? reduceCallControlsForMobile((_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls) : (_c = props.options) === null || _c === void 0 ? void 0 : _c.callControls;\n callControlOptions = disableCallControls(callControlOptions, ['screenShareButton', 'participantsButton']);\n return React.createElement(CallArrangement, { complianceBannerProps: {\n strings\n }, errorBarProps: ((_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== false && errorBarProps, showErrorNotifications: (_f = (_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== null && _f !== void 0 ? _f : true, callControlProps: {\n options: callControlOptions,\n increaseFlyoutItemSize: props.mobileView\n }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => React.createElement(LobbyTile, Object.assign({}, lobbyProps, { showLocalVideoCameraCycleButton: props.mobileView, overlayProps: overlayProps(strings, inLobby, Object.values(participants)) })), dataUiId: 'lobby-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError, latestNotifications: props.latestNotifications, onDismissNotification: props.onDismissNotification });\n};\nconst overlayProps = (strings, inLobby, remoteParticipants) => {\n /**\n * Only grab the first participant because there will only be one in this situation.\n * when starting a call with multiple people the call goes to the connected state and composite goes directly to\n * videoGallery.\n *\n * We also need to check the participant state since in a group call the remote participants array will populate just before\n * the user joins. In this situation we also check the participant states. in a groupCall the state of the participants\n * will be 'Idle'.\n */\n const outboundCallParticipant = remoteParticipants[0] && ['Ringing', 'Connecting'].includes(remoteParticipants[0].state) && remoteParticipants.length === 1 ? remoteParticipants[0] : undefined;\n return inLobby ? overlayPropsWaitingToBeAdmitted(strings) : outboundCallParticipant ? overlayPropsOutboundCall(strings, outboundCallParticipant) : overlayPropsConnectingToCall(strings);\n};\nconst overlayPropsConnectingToCall = (strings) => ({\n title: strings.lobbyScreenConnectingToCallTitle,\n moreDetails: strings.lobbyScreenConnectingToCallMoreDetails,\n overlayIcon: React.createElement(CallCompositeIcon, { iconName: \"LobbyScreenConnectingToCall\" })\n});\nconst overlayPropsWaitingToBeAdmitted = (strings) => ({\n title: strings.lobbyScreenWaitingToBeAdmittedTitle,\n moreDetails: strings.lobbyScreenWaitingToBeAdmittedMoreDetails,\n overlayIcon: React.createElement(CallCompositeIcon, { iconName: \"LobbyScreenWaitingToBeAdmitted\" })\n});\nconst overlayPropsOutboundCall = (strings, participant) => {\n var _a;\n if (isPhoneNumberIdentifier(participant.identifier)) {\n return {\n title: participant.identifier.phoneNumber,\n moreDetails: strings.outboundCallingNoticeString\n };\n }\n else {\n return {\n title: (_a = strings.outboundCallingNoticeString) !== null && _a !== void 0 ? _a : ''\n };\n }\n};\n//# sourceMappingURL=LobbyPage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { mergeStyles, Stack, Text } from '@fluentui/react';\nimport { containerStyle, moreDetailsStyles, containerItemGap, titleStyles, rejoinCallButtonContainerStyles } from '../styles/NoticePage.styles';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { StartCallButton } from '../components/StartCallButton';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { useSelector } from '../hooks/useSelector';\nimport { getTargetCallees } from '../selectors/baseSelectors';\n/**\n * Generic page with a title and more details text for serving up a notice to the user.\n *\n * @private\n */\nexport function NoticePage(props) {\n const adapter = useAdapter();\n const callees = useSelector(getTargetCallees);\n return React.createElement(Stack, { className: mergeStyles(props.pageStyle), verticalFill: true, verticalAlign: \"center\", horizontalAlign: \"center\", \"data-ui-id\": props.dataUiId, \"aria-atomic\": true },\n React.createElement(Stack, { className: mergeStyles(containerStyle), tokens: containerItemGap },\n props.iconName && React.createElement(CallCompositeIcon, { iconName: props.iconName }),\n React.createElement(Text, { className: mergeStyles(titleStyles), \"aria-live\": \"assertive\", role: \"alert\" }, props.title),\n React.createElement(Text, { className: mergeStyles(moreDetailsStyles), \"aria-live\": \"assertive\" }, props.moreDetails),\n !props.disableStartCallButton && React.createElement(Stack, { styles: rejoinCallButtonContainerStyles },\n React.createElement(StartCallButton, { onClick: () => {\n if (callees && callees.length > 0) {\n adapter.startCall(callees);\n }\n else {\n adapter.joinCall();\n }\n }, disabled: false, rejoinCall: true, autoFocus: true }))));\n}\n//# sourceMappingURL=NoticePage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { Survey } from '../../common/Survey';\nimport { Stack, mergeStyles } from '@fluentui/react';\nimport { containerStyle } from '../styles/NetworkReconnectTile.styles';\nimport { containerItemGap } from '../styles/NoticePage.styles';\n/**\n * Generic page with a title and more details text for serving up a notice to the user.\n *\n * @private\n */\nexport function SurveyPage(props) {\n var _a, _b;\n const handlers = useHandlers(Survey);\n return React.createElement(Stack, { verticalFill: true, verticalAlign: \"center\", horizontalAlign: \"center\", \"data-ui-id\": props.dataUiId, \"aria-atomic\": true },\n React.createElement(Stack, { className: mergeStyles(containerStyle), tokens: containerItemGap },\n React.createElement(Survey, Object.assign({}, handlers, props, { onSurveySubmittedCustom: (_a = props.surveyOptions) === null || _a === void 0 ? void 0 : _a.onSurveySubmitted, onSurveyClosed: (_b = props.surveyOptions) === null || _b === void 0 ? void 0 : _b.onSurveyClosed, isMobile: props.mobileView }))));\n}\n//# sourceMappingURL=SurveyPage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { mergeStyles, Stack, Text } from '@fluentui/react';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { containerItemGap, containerStyle, titleStyles } from '../styles/NoticePage.styles';\nimport { useLocale } from '../../localization';\n/**\n * Page shown after the survey is submitted.\n * @private\n */\nexport function ThankYouForFeedbackPage(props) {\n const strings = useLocale().strings.call;\n return React.createElement(Stack, { verticalFill: true, verticalAlign: \"center\", horizontalAlign: \"center\", \"data-ui-id\": 'thank-you-page', \"aria-atomic\": true },\n React.createElement(Stack, { className: mergeStyles(containerStyle), tokens: containerItemGap },\n props.iconName && React.createElement(CallCompositeIcon, { iconName: props.iconName }),\n React.createElement(Text, { className: mergeStyles(titleStyles), \"aria-live\": \"assertive\" }, strings.endOfSurveyText)));\n}\n//# sourceMappingURL=ThankYouForFeedbackPage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport const pageContainer = {\n width: '100%',\n height: '100%'\n};\n/**\n * @private\n */\nexport const avatarStyles = {\n opacity: 0.4\n};\n/**\n * @private\n */\nexport const tileContainerStyles = {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n minWidth: '100%',\n minHeight: '100%',\n objectPosition: 'center',\n objectFit: 'cover',\n zIndex: 0\n};\n/**\n * @private\n */\nexport const tileContentStyles = {\n width: '100%',\n position: 'absolute',\n top: '50%',\n transform: 'translate(0, -50%)',\n display: 'flex',\n justifyContent: 'center'\n};\n/**\n * @private\n */\nexport const defaultPersonaStyles = {\n root: {\n margin: 'auto'\n }\n};\n/**\n * @private\n */\nexport const displayNameStyles = {\n textAlign: 'center',\n fontSize: '1.5rem',\n fontWeight: 400\n};\n/**\n * @private\n */\nexport const spinnerStyles = {\n circle: {\n borderWidth: '0.125rem'\n }\n};\n/**\n * @private\n */\nexport const statusTextStyles = {\n textAlign: 'center',\n fontSize: '1rem'\n};\n//# sourceMappingURL=TransferPage.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Spinner, SpinnerSize, Stack, Text, mergeStyles } from '@fluentui/react';\nimport { toFlatCommunicationIdentifier } from \"../../../../../acs-ui-common/src\";\nimport { ErrorBar } from \"../../../../../react-components/src\";\nimport { Announcer } from \"../../../../../react-components/src\";\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useEffect } from 'react';\nimport { AvatarPersona } from '../../common/AvatarPersona';\nimport { useLocale } from '../../localization';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { getRemoteParticipants } from '../selectors/baseSelectors';\nimport { getTransferCall } from '../selectors/baseSelectors';\nimport { avatarStyles, defaultPersonaStyles, displayNameStyles, pageContainer, spinnerStyles, statusTextStyles, tileContainerStyles, tileContentStyles } from '../styles/TransferPage.styles';\nimport { reduceCallControlsForMobile } from '../utils';\n/**\n * @private\n */\nexport const TransferPage = (props) => {\n var _a, _b, _c, _d, _e, _f, _g;\n const errorBarProps = usePropsFor(ErrorBar);\n const strings = useLocale().strings.call;\n const remoteParticipants = useSelector(getRemoteParticipants);\n const transferCall = useSelector(getTransferCall);\n const [announcerString, setAnnouncerString] = useState(undefined);\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = props.mobileView ? reduceCallControlsForMobile((_a = props.options) === null || _a === void 0 ? void 0 : _a.callControls) : (_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls;\n const transferor = useMemo(() => { var _a; return remoteParticipants ? (_a = Object.values(remoteParticipants)) === null || _a === void 0 ? void 0 : _a[0] : undefined; }, [remoteParticipants]);\n const transferTarget = useMemo(() => { var _a; return (transferCall === null || transferCall === void 0 ? void 0 : transferCall.remoteParticipants) ? (_a = Object.values(transferCall.remoteParticipants)) === null || _a === void 0 ? void 0 : _a[0] : undefined; }, [transferCall]);\n const pageSubject = useMemo(() => {\n if (transferCall && (transferTarget === null || transferTarget === void 0 ? void 0 : transferTarget.displayName)) {\n return 'transferTarget';\n }\n return 'transferor';\n }, [transferCall, transferTarget === null || transferTarget === void 0 ? void 0 : transferTarget.displayName]);\n useEffect(() => {\n setAnnouncerString(strings.transferPageNoticeString);\n }, [strings.transferPageNoticeString]);\n let transferTileParticipant = transferor;\n if (pageSubject === 'transferTarget') {\n transferTileParticipant = transferTarget;\n }\n let transferParticipantDisplayName = (_c = transferor === null || transferor === void 0 ? void 0 : transferor.displayName) !== null && _c !== void 0 ? _c : strings.transferPageUnknownTransferorDisplayName;\n if (pageSubject === 'transferTarget') {\n transferParticipantDisplayName = (_d = transferTarget === null || transferTarget === void 0 ? void 0 : transferTarget.displayName) !== null && _d !== void 0 ? _d : strings.transferPageUnknownTransferTargetDisplayName;\n }\n return React.createElement(Stack, { className: mergeStyles(pageContainer) },\n React.createElement(Announcer, { announcementString: announcerString, ariaLive: \"polite\" }),\n React.createElement(CallArrangement, { complianceBannerProps: {\n strings\n }, \n // Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.\n errorBarProps: ((_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== false && errorBarProps, showErrorNotifications: (_g = (_f = props.options) === null || _f === void 0 ? void 0 : _f.errorBar) !== null && _g !== void 0 ? _g : true, callControlProps: {\n options: callControlOptions,\n increaseFlyoutItemSize: props.mobileView\n }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => React.createElement(TransferTile, { userId: transferTileParticipant ? toFlatCommunicationIdentifier(transferTileParticipant === null || transferTileParticipant === void 0 ? void 0 : transferTileParticipant.identifier) : undefined, displayName: transferParticipantDisplayName, initialsName: transferParticipantDisplayName, statusText: pageSubject === 'transferTarget' ? strings.transferPageTransferTargetText : strings.transferPageTransferorText, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData }), dataUiId: 'transfer-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError, onDismissNotification: props.onDismissNotification, latestNotifications: props.latestNotifications }));\n};\nconst TransferTile = (props) => {\n const { displayName, initialsName, userId, onFetchAvatarPersonaData, statusText } = props;\n const [personaSize, setPersonaSize] = useState();\n const tileRef = useRef(null);\n const observer = useRef(new ResizeObserver((entries) => {\n if (!entries[0]) {\n return;\n }\n const { width, height } = entries[0].contentRect;\n const personaSize = Math.min(width, height) / 2;\n setPersonaSize(Math.max(Math.min(personaSize, 150), 32));\n }));\n useLayoutEffect(() => {\n if (tileRef.current) {\n observer.current.observe(tileRef.current);\n }\n const currentObserver = observer.current;\n return () => currentObserver.disconnect();\n }, [observer, tileRef]);\n const placeholderOptions = useMemo(() => ({\n userId,\n text: initialsName !== null && initialsName !== void 0 ? initialsName : displayName,\n coinSize: personaSize,\n styles: defaultPersonaStyles,\n hidePersonaDetails: true\n }), [userId, initialsName, displayName, personaSize]);\n const defaultOnRenderAvatar = useCallback(() => {\n return personaSize ? React.createElement(AvatarPersona, Object.assign({}, placeholderOptions, { dataProvider: onFetchAvatarPersonaData, className: mergeStyles(avatarStyles) })) : React.createElement(React.Fragment, null);\n }, [placeholderOptions, onFetchAvatarPersonaData, personaSize]);\n const defaultAvatar = useMemo(() => defaultOnRenderAvatar(), [defaultOnRenderAvatar]);\n return React.createElement(\"div\", { ref: tileRef, className: mergeStyles(tileContainerStyles), \"data-is-focusable\": true },\n React.createElement(Stack, { className: mergeStyles(tileContentStyles), tokens: {\n childrenGap: '1rem'\n } },\n React.createElement(Stack, { horizontalAlign: \"center\", tokens: {\n childrenGap: '0.5rem'\n } },\n defaultAvatar,\n React.createElement(Text, { className: mergeStyles(displayNameStyles) }, displayName)),\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"center\", verticalAlign: \"center\", tokens: {\n childrenGap: '0.5rem'\n } },\n React.createElement(Spinner, { size: SpinnerSize.large, className: mergeStyles(spinnerStyles) }),\n React.createElement(Text, { className: mergeStyles(statusTextStyles) }, statusText))));\n};\n//# sourceMappingURL=TransferPage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createSelector } from 'reselect';\nimport { getDeviceManager } from './baseSelectors';\n/**\n * Provides data attributes to {@link LocalVideoCameraCycleButton} component.\n * @public\n */\nexport const localVideoCameraCycleButtonSelector = createSelector([getDeviceManager], deviceManager => {\n return {\n cameras: deviceManager.cameras,\n selectedCamera: deviceManager.selectedCamera\n };\n});\n//# sourceMappingURL=LocalVideoTileSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getSelectedVideoEffect } from './baseSelectors';\n/**\n * @private\n */\nexport const activeVideoBackgroundEffectSelector = reselect.createSelector([getSelectedVideoEffect], (selectedVideoBackgroundEffect) => {\n if (selectedVideoBackgroundEffect && (selectedVideoBackgroundEffect.effectName === 'blur' || selectedVideoBackgroundEffect.effectName === 'none')) {\n return selectedVideoBackgroundEffect.effectName;\n }\n else if (selectedVideoBackgroundEffect && selectedVideoBackgroundEffect.effectName === 'replacement') {\n return selectedVideoBackgroundEffect === null || selectedVideoBackgroundEffect === void 0 ? void 0 : selectedVideoBackgroundEffect.key;\n }\n return 'none';\n});\n//# sourceMappingURL=activeVideoBackgroundEffectSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _isPreviewOn } from \"../../../../../calling-component-bindings/src\";\n/**\n * @private\n */\nexport const getDisplayName = (state) => state.displayName;\n/**\n * @private\n */\nexport const getCallId = (state) => { var _a; return (_a = state.call) === null || _a === void 0 ? void 0 : _a.id; };\n/**\n * @private\n */\nexport const getEndedCall = (state) => state.endedCall;\n/**\n * @private\n */\nexport const getCallStatus = (state) => { var _a, _b; return (_b = (_a = state.call) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : 'None'; };\n/**\n * @private\n */\nexport const getDeviceManager = (state) => state.devices;\n/**\n * @private\n */\nexport const getIsScreenShareOn = (state) => { var _a, _b; return (_b = (_a = state.call) === null || _a === void 0 ? void 0 : _a.isScreenSharingOn) !== null && _b !== void 0 ? _b : false; };\n/**\n * @private\n */\nexport const getLocalParticipantRaisedHand = (state) => { var _a; return (_a = state.call) === null || _a === void 0 ? void 0 : _a.raiseHand.localParticipantRaisedHand; };\n/**\n * @private\n */\nexport const getCapabilites = (state) => { var _a, _b; return (_b = (_a = state.call) === null || _a === void 0 ? void 0 : _a.capabilitiesFeature) === null || _b === void 0 ? void 0 : _b.capabilities; };\n/**\n * @private\n */\nexport const getIsPreviewCameraOn = (state) => _isPreviewOn(state.devices);\n/**\n * @private\n */\nexport const getMicrophones = (state) => state.devices.microphones;\n/**\n * @private\n */\nexport const getCameras = (state) => state.devices.cameras;\n/**\n * @private\n */\nexport const getRole = (state) => { var _a; return (_a = state.call) === null || _a === void 0 ? void 0 : _a.role; };\n/**\n * @private\n */\nexport const getPage = (state) => state.page;\n/**\n * @private\n */\nexport const getTransferCall = (state) => state.acceptedTransferCallState;\n/**\n * @private\n */\nexport const getLocalMicrophoneEnabled = (state) => state.isLocalPreviewMicrophoneEnabled;\n/**\n * @private\n */\nexport const getLocalVideoStreams = (state) => { var _a; return (_a = state.call) === null || _a === void 0 ? void 0 : _a.localVideoStreams; };\n/**\n * @private\n */\nexport const getIsTranscriptionActive = (state) => { var _a; return !!((_a = state.call) === null || _a === void 0 ? void 0 : _a.transcription.isTranscriptionActive); };\n/**\n * @private\n */\nexport const getIsRecordingActive = (state) => { var _a; return !!((_a = state.call) === null || _a === void 0 ? void 0 : _a.recording.isRecordingActive); };\n/**\n * @private\n */\nexport const getUserFacingDiagnostics = (state) => { var _a; return (_a = state.call) === null || _a === void 0 ? void 0 : _a.diagnostics; };\n/**\n * @private\n */\nexport const getDominantSpeakerInfo = (state) => { var _a; return (_a = state.call) === null || _a === void 0 ? void 0 : _a.dominantSpeakers; };\n/**\n * @private\n */\nexport const getRemoteParticipants = (state) => { var _a; return (_a = state.call) === null || _a === void 0 ? void 0 : _a.remoteParticipants; };\n/**\n * @private\n */\nexport const getEnvironmentInfo = (state) => state.environmentInfo;\n/**\n * @private\n */\nexport const getSelectedVideoEffect = (state) => state.selectedVideoBackgroundEffect;\n/** @private */\nexport const getCaptionsKind = (state) => {\n var _a;\n return (_a = state.call) === null || _a === void 0 ? void 0 : _a.captionsFeature.captionsKind;\n};\n/** @private */\nexport const getCaptions = (state) => {\n var _a;\n return (_a = state.call) === null || _a === void 0 ? void 0 : _a.captionsFeature.captions;\n};\n/** @private */\nexport const getCaptionsStatus = (state) => {\n var _a;\n return (_a = state.call) === null || _a === void 0 ? void 0 : _a.captionsFeature.isCaptionsFeatureActive;\n};\n/** @private */\nexport const getCurrentCaptionLanguage = (state) => {\n var _a;\n return (_a = state.call) === null || _a === void 0 ? void 0 : _a.captionsFeature.currentCaptionLanguage;\n};\n/** @private */\nexport const getCurrentSpokenLanguage = (state) => {\n var _a;\n return (_a = state.call) === null || _a === void 0 ? void 0 : _a.captionsFeature.currentSpokenLanguage;\n};\n/** @private */\nexport const getSupportedCaptionLanguages = (state) => {\n var _a;\n return (_a = state.call) === null || _a === void 0 ? void 0 : _a.captionsFeature.supportedCaptionLanguages;\n};\n/** @private */\nexport const getSupportedSpokenLanguages = (state) => {\n var _a;\n return (_a = state.call) === null || _a === void 0 ? void 0 : _a.captionsFeature.supportedSpokenLanguages;\n};\n/**\n * @private\n */\nexport const getIsTeamsCall = (state) => state.isTeamsCall;\n/**\n * @private\n */\nexport const getIsTeamsMeeting = (state) => state.isTeamsMeeting;\n/**\n * @private\n */\nexport const getTeamsMeetingCoordinates = (state) => { var _a, _b; return (_b = (_a = state.call) === null || _a === void 0 ? void 0 : _a.meetingConference) === null || _b === void 0 ? void 0 : _b.conferencePhones; };\n/**\n * @private\n */\nexport const getLatestErrors = (state) => state.latestErrors;\n/**\n * @private\n */\nexport const getLatestCapabilitiesChangedInfo = (state) => {\n var _a, _b;\n return (_b = (_a = state.call) === null || _a === void 0 ? void 0 : _a.capabilitiesFeature) === null || _b === void 0 ? void 0 : _b.latestCapabilitiesChangeInfo;\n};\n/**\n * @private\n */\nexport const getTargetCallees = (state) => state.targetCallees;\n/**\n * @private\n */\nexport const getStartTime = (state) => { var _a; return (_a = state.call) === null || _a === void 0 ? void 0 : _a.startTime; };\n/**\n * @private\n */\nexport const getSpotlightedParticipants = (state) => { var _a, _b; return (_b = (_a = state.call) === null || _a === void 0 ? void 0 : _a.spotlight) === null || _b === void 0 ? void 0 : _b.spotlightedParticipants; };\n/** @private */\nexport const getVideoEffectsDependency = (state) => state.onResolveVideoEffectDependency;\n/** @private */\nexport const getDeepNoiseSuppresionEffectsDependency = (state) => state.onResolveDeepNoiseSuppressionDependency;\n/** @private */\nexport const getDeepNoiseSuppresionIsOnByDefault = (state) => state.deepNoiseSuppressionOnByDefault;\n/** @private */\nexport const getHideDeepNoiseSupressionButton = (state) => state.hideDeepNoiseSuppressionButton;\n/** @private */\nexport const getReactionResources = (state) => state.reactions;\n/** @private */\nexport const getAlternateCallerId = (state) => state.alternateCallerId;\n/** @private */\nexport const getIsRoomsCall = (state) => state.isRoomsCall;\n/** @private */\nexport const getVideoBackgroundImages = (state) => state.videoBackgroundImages;\n//# sourceMappingURL=baseSelectors.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { getCallStatus, getIsScreenShareOn } from './baseSelectors';\nimport { createSelector } from 'reselect';\n/**\n * @private\n */\nexport const callStatusSelector = createSelector([getCallStatus, getIsScreenShareOn], (callStatus, isScreenShareOn) => {\n return {\n callStatus,\n isScreenShareOn\n };\n});\n//# sourceMappingURL=callStatusSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getLatestCapabilitiesChangedInfo, getRole } from './baseSelectors';\n/**\n * @private\n */\nexport const capabilitiesChangedInfoAndRoleSelector = reselect.createSelector([getLatestCapabilitiesChangedInfo, getRole], (capabilitiesChangeInfo, participantRole) => {\n return {\n capabilitiesChangeInfo,\n participantRole\n };\n});\n//# sourceMappingURL=capabilitiesChangedInfoAndRoleSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getCapabilites } from './baseSelectors';\n/**\n * @private\n */\nexport const capabilitySelector = reselect.createSelector([getCapabilites], capabilities => {\n return {\n capabilities\n };\n});\n//# sourceMappingURL=capabilitySelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getIsRecordingActive, getIsTranscriptionActive } from './baseSelectors';\n/**\n * @private\n */\nexport const complianceBannerSelector = reselect.createSelector([getIsTranscriptionActive, getIsRecordingActive], (isTranscriptionActive, isRecordingActive) => {\n return {\n callTranscribeState: isTranscriptionActive,\n callRecordState: isRecordingActive\n };\n});\n//# sourceMappingURL=complianceBannerSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { getCameras, getMicrophones } from './baseSelectors';\nimport { createSelector } from 'reselect';\n/**\n * @private\n */\nexport const deviceCountSelector = createSelector([getCameras, getMicrophones], (cameras, microphones) => {\n return {\n camerasCount: cameras.length,\n microphonesCount: microphones.length\n };\n});\n//# sourceMappingURL=deviceCountSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getDeviceManager } from './baseSelectors';\n/**\n * @private\n */\nexport const devicePermissionSelector = reselect.createSelector([getDeviceManager], deviceManager => {\n return {\n video: deviceManager.deviceAccess ? deviceManager.deviceAccess.video : undefined,\n audio: deviceManager.deviceAccess ? deviceManager.deviceAccess.audio : undefined\n };\n});\n//# sourceMappingURL=devicePermissionSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { localVideoSelector } from './localVideoStreamSelector';\n/**\n * @private\n */\nexport const lobbySelector = reselect.createSelector([localVideoSelector], localVideoStreamInfo => {\n return {\n localParticipantVideoStream: localVideoStreamInfo\n };\n});\n//# sourceMappingURL=lobbySelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _dominantSpeakersWithFlatId } from \"../../../../../calling-component-bindings/src\";\nimport * as reselect from 'reselect';\nimport { getDominantSpeakerInfo, getRemoteParticipants } from './baseSelectors';\n/**\n * Get the most dominant remote participant, if no dominant speaker IDs exist, this uses\n * one of the remote participants with no bias towards which one.\n *\n * @private\n */\nexport const dominantRemoteParticipantSelector = reselect.createSelector([getRemoteParticipants, getDominantSpeakerInfo], (remoteParticipants, dominantSpeakerInfo) => {\n const dominantSpeakers = _dominantSpeakersWithFlatId(dominantSpeakerInfo);\n const dominantRemoteParticipant = remoteParticipants && Object.keys(remoteParticipants).length > 0 ? findDominantRemoteParticipant(remoteParticipants, dominantSpeakers !== null && dominantSpeakers !== void 0 ? dominantSpeakers : []) : undefined;\n return dominantRemoteParticipant;\n});\nconst findDominantRemoteParticipant = (remoteParticipants, dominantSpeakerIds) => {\n let dominantRemoteParticipantId = dominantSpeakerIds[0];\n // Fallback to using the first remote participant if there are no dominant speaker IDs\n // or if the dominant speaker is no longer available in the list of remoteParticipantIds\n const remoteParticipantIds = Object.keys(remoteParticipants);\n if (!dominantRemoteParticipantId || !remoteParticipantIds.includes(dominantRemoteParticipantId)) {\n dominantRemoteParticipantId = remoteParticipantIds[0];\n }\n return dominantRemoteParticipantId ? remoteParticipants[dominantRemoteParticipantId] : undefined;\n};\n//# sourceMappingURL=dominantRemoteParticipantSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { toFlatCommunicationIdentifier } from \"../../../../../acs-ui-common/src\";\nimport * as reselect from 'reselect';\nimport { getRemoteParticipants, getSpotlightedParticipants } from './baseSelectors';\n/**\n * Get the first remote participant that is spotlighted if any\n *\n * @private\n */\nexport const getFirstSpotlightedRemoteParticipant = reselect.createSelector([getRemoteParticipants, getSpotlightedParticipants], (remoteParticipants, spotlightedParticipants) => {\n const spotlightedParticipantUserIds = spotlightedParticipants ? spotlightedParticipants.map(p => toFlatCommunicationIdentifier(p.identifier)) : [];\n const firstSpotlightedRemoteParticipant = remoteParticipants ? findFirstSpotlightedRemoteParticipant(remoteParticipants, spotlightedParticipantUserIds) : undefined;\n return firstSpotlightedRemoteParticipant;\n});\nconst findFirstSpotlightedRemoteParticipant = (remoteParticipants, spotlightedParticipantUserIds) => {\n const remoteParticipantIds = Object.keys(remoteParticipants);\n const spotlightedRemoteParticipantUserIds = spotlightedParticipantUserIds.filter(p => remoteParticipantIds.includes(p));\n return spotlightedRemoteParticipantUserIds[0] ? remoteParticipants[spotlightedRemoteParticipantUserIds[0]] : undefined;\n};\n//# sourceMappingURL=getFirstSpotlightedRemoteParticipantSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _videoGalleryRemoteParticipantsMemo } from \"../../../../../calling-component-bindings/src\";\nimport { _updateUserDisplayNames } from \"../../../../../calling-component-bindings/src\";\nimport * as reselect from 'reselect';\nimport { localVideoSelector } from './localVideoStreamSelector';\nimport { dominantRemoteParticipantSelector } from './dominantRemoteParticipantSelector';\nimport { getDisplayName } from './baseSelectors';\nimport { getLocalParticipantRaisedHand } from './baseSelectors';\nimport { getFirstSpotlightedRemoteParticipant } from './getFirstSpotlightedRemoteParticipantSelector';\n/**\n * Picture in picture in picture needs to display the most-dominant remote speaker, as well as the local participant video.\n * @private\n */\nexport const localAndRemotePIPSelector = reselect.createSelector([getDisplayName, dominantRemoteParticipantSelector, localVideoSelector, getLocalParticipantRaisedHand, getFirstSpotlightedRemoteParticipant], (displayName, dominantRemoteParticipantState, localVideoStreamInfo, raisedHand, firstSpotlightedRemoteParticipantState) => {\n let remoteParticipantState = dominantRemoteParticipantState;\n if (firstSpotlightedRemoteParticipantState) {\n remoteParticipantState = firstSpotlightedRemoteParticipantState;\n }\n const remoteParticipant = remoteParticipantState ? _videoGalleryRemoteParticipantsMemo(_updateUserDisplayNames([remoteParticipantState]))[0] : undefined;\n return {\n localParticipant: {\n displayName,\n videoStream: localVideoStreamInfo,\n raisedHand\n },\n remoteParticipant\n };\n});\n//# sourceMappingURL=localAndRemotePIPSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getDeviceManager } from './baseSelectors';\n/**\n * @private\n */\nexport const localPreviewSelector = reselect.createSelector([getDeviceManager], deviceManager => {\n var _a;\n // TODO: we should take in a LocalVideoStream that developer wants to use as their 'Preview' view. We should also\n // handle cases where 'Preview' view is in progress and not necessary completed.\n const view = deviceManager.cameras.length > 0 &&\n // This ensures that the video stream is reset if camera devices are removed.\n deviceManager.unparentedViews.length > 0 && ((_a = deviceManager.unparentedViews[0]) === null || _a === void 0 ? void 0 : _a.view);\n return {\n videoStreamElement: view ? view.target : null\n };\n});\n//# sourceMappingURL=localPreviewSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _isInCall, _isPreviewOn } from \"../../../../../calling-component-bindings/src\";\nimport * as reselect from 'reselect';\nimport { getDeviceManager, getLocalVideoStreams } from './baseSelectors';\nimport { callStatusSelector } from './callStatusSelector';\n/**\n * @private\n */\nexport const localVideoSelector = reselect.createSelector([callStatusSelector, getDeviceManager, getLocalVideoStreams], (callStatus, deviceManager, localVideoStreams) => {\n var _a, _b;\n let localVideoStream;\n if (_isInCall(callStatus.callStatus)) {\n localVideoStream = localVideoStreams === null || localVideoStreams === void 0 ? void 0 : localVideoStreams.find(i => i.mediaStreamType === 'Video');\n }\n else if (_isPreviewOn(deviceManager)) {\n // TODO: we should take in a LocalVideoStream that developer wants to use as their 'Preview' view. We should also\n // handle cases where 'Preview' view is in progress and not necessary completed.\n localVideoStream = deviceManager.unparentedViews[0];\n }\n return {\n isAvailable: !!localVideoStream,\n isMirrored: (_a = localVideoStream === null || localVideoStream === void 0 ? void 0 : localVideoStream.view) === null || _a === void 0 ? void 0 : _a.isMirrored,\n renderElement: (_b = localVideoStream === null || localVideoStream === void 0 ? void 0 : localVideoStream.view) === null || _b === void 0 ? void 0 : _b.target,\n activeVideoEffects: localVideoStream === null || localVideoStream === void 0 ? void 0 : localVideoStream.videoEffects\n };\n});\n//# sourceMappingURL=localVideoStreamSelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getLocalVideoStreams, getRemoteParticipants } from './baseSelectors';\n/**\n * @private\n */\nexport const mediaGallerySelector = reselect.createSelector([getLocalVideoStreams], localVideoStreams => {\n var _a, _b;\n return {\n isVideoStreamOn: !!((_b = (_a = localVideoStreams === null || localVideoStreams === void 0 ? void 0 : localVideoStreams.find(stream => stream.mediaStreamType === 'Video')) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.target)\n };\n});\n/**\n * Custom selector for this hook to retrieve all the participants that are currently\n * connected to the call.\n */\nexport const getRemoteParticipantsConnectedSelector = reselect.createSelector([getRemoteParticipants], remoteParticipants => {\n const participants = Object.values(remoteParticipants !== null && remoteParticipants !== void 0 ? remoteParticipants : {});\n return participants.filter(p => p.state === 'Connected');\n});\n//# sourceMappingURL=mediaGallerySelector.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { concatStyleSets } from '@fluentui/react';\nconst MINIMUM_TOUCH_TARGET_HEIGHT_REM = 3;\n/** @private */\nexport const controlBarContainerStyles = {\n paddingTop: '0.25rem',\n paddingBottom: '0.25rem',\n // @TODO: this should be exposed through a custom CallComposite Theme API that extends the fluent theme with semantic values\n boxShadow: `\n 0px 6.400000095367432px 14.399999618530273px 0px #00000021;\n 0px 1.2000000476837158px 3.5999999046325684px 0px #0000001A;\n `\n};\n/**\n * @private\n */\nexport const groupCallLeaveButtonStyle = {\n root: {\n border: '0.125rem',\n borderRadius: 2,\n width: '6.5625rem'\n },\n flexContainer: {\n flexFlow: 'row'\n }\n};\n/**\n * @private\n */\nexport const groupCallLeaveButtonCompressedStyle = {\n root: {\n border: '0',\n borderRadius: '0.5rem'\n },\n flexContainer: {\n flexFlow: 'row'\n }\n};\n/**\n * Styles that can be applied to ensure flyout items have the minimum touch target size.\n *\n * @private\n */\nexport const buttonFlyoutIncreasedSizeStyles = {\n root: {\n height: `${MINIMUM_TOUCH_TARGET_HEIGHT_REM}rem`,\n lineHeight: `${MINIMUM_TOUCH_TARGET_HEIGHT_REM}rem`,\n maxHeight: 'unset',\n overflow: 'hidden'\n },\n linkContent: {\n height: `${MINIMUM_TOUCH_TARGET_HEIGHT_REM}rem`,\n lineHeight: `${MINIMUM_TOUCH_TARGET_HEIGHT_REM}rem`,\n maxHeight: 'unset'\n },\n icon: {\n maxHeight: 'unset',\n textAlign: 'center'\n },\n checkmarkIcon: {\n lineHeight: '2rem'\n }\n};\n/**\n * @private\n */\nexport const participantButtonWithIncreasedTouchTargets = {\n menuStyles: {\n menuItemStyles: buttonFlyoutIncreasedSizeStyles,\n participantListStyles: {\n participantItemStyles: {\n root: {\n height: `${MINIMUM_TOUCH_TARGET_HEIGHT_REM}rem`\n },\n participantSubMenuItemsStyles: buttonFlyoutIncreasedSizeStyles\n }\n }\n }\n};\n/**\n * @private\n */\nexport const devicesButtonWithIncreasedTouchTargets = {\n menuStyles: {\n menuItemStyles: buttonFlyoutIncreasedSizeStyles\n }\n};\n/**\n * @private\n */\nexport const controlButtonBaseStyle = {\n label: {\n minWidth: '1.25rem'\n }\n};\n/**\n * @private\n */\nexport const concatButtonBaseStyles = (...styles) => {\n let result = controlButtonBaseStyle;\n styles.forEach(style => {\n result = concatStyleSets(result, style);\n });\n return result;\n};\n//# sourceMappingURL=Buttons.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\nconst DEFAULT_Z_INDEX = 1;\nconst mainScreenContainerStyle = {\n height: '100%',\n width: '100%'\n};\n/**\n * @private\n */\nexport const mainScreenContainerStyleDesktop = mergeStyles(Object.assign(Object.assign({}, mainScreenContainerStyle), { minWidth: '30rem', \n // max of min-width of composite pages (Call page)\n minHeight: '22rem' // max height of min-height of composite pages (Configuration page)\n }));\n/**\n * @private\n */\nexport const mainScreenContainerStyleMobile = mergeStyles(Object.assign(Object.assign({}, mainScreenContainerStyle), { minWidth: '17.5rem', \n // max of min-width of composite pages (Call page)\n minHeight: '13rem' // max height of min-height of composite pages (Configuration page & Call page)\n }));\n/**\n * @private\n * Drawer styles to be used to house the _DrawerComponent on top of other content on the screen.\n * @param zIndex: this defaults to DEFAULT_Z_INDEX if unset\n */\nexport const drawerContainerStyles = (zIndex = DEFAULT_Z_INDEX) => ({\n root: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n // Any zIndex > 0 will work because this is the only absolutely\n // positioned element in the container.\n zIndex: zIndex\n }\n});\n/**\n * @private\n * Page container style for leaving page\n */\nexport const leavingPageStyle = (palette) => ({\n background: palette.neutralLighterAlt\n});\n//# sourceMappingURL=CallComposite.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles, AnimationStyles } from '@fluentui/react';\nimport { _pxToRem } from \"../../../../../acs-ui-common/src\";\n/** @private */\nexport const CONFIGURATION_PAGE_SECTION_MIN_WIDTH_REM = 11;\n/** @private */\nexport const CONFIGURATION_PAGE_SECTION_MAX_WIDTH_REM = 20.625;\n/** @private */\nexport const CONFIGURATION_PAGE_SECTION_HEIGHT_REM = 13.625;\nconst LOGO_HEIGHT_REM = 3;\n/**\n * @private\n */\nexport const configurationStackTokensDesktop = {\n childrenGap: '1.5rem'\n};\n/**\n * @private\n */\nexport const configurationStackTokensMobile = {\n childrenGap: '0.5rem'\n};\n/**\n * @private\n */\nexport const deviceConfigurationStackTokens = {\n childrenGap: '1.5rem'\n};\n/** @private */\nexport const configurationContainerStyle = (desktop, backgroundImageUrl) => ({\n root: {\n height: '100%',\n width: '100%',\n padding: desktop ? '2rem 1rem 2rem 1rem' : '1rem 1rem 2rem 1rem',\n minWidth: desktop ? '25rem' // sum of min-width from children + ChildrenGap * (nb of children - 1) + padding * 2 = (11 + 11) + (2 * 1) + 0.5 * 2\n : '16rem',\n // from LocalPreview: ControlBar width + 0.5 * 2 for spacing + padding * 2 = 14 + 0.5 * 2 + 0.5 * 2\n minHeight: desktop ? '22rem' // max height of SelectionContainer + padding * 2 = 21 + 0.5 * 2\n : '13rem',\n '::before': !backgroundImageUrl ? undefined : Object.assign({ content: '\"\"', position: 'absolute', top: 0, left: 0, zIndex: 0, width: '100%', height: '100%', backgroundImage: `url(${backgroundImageUrl})`, backgroundSize: 'cover', backgroundPosition: 'center' }, AnimationStyles.fadeIn500)\n }\n});\n/**\n * @private\n */\nexport const configurationSectionStyle = {\n root: {\n width: '100%',\n minWidth: `${CONFIGURATION_PAGE_SECTION_MIN_WIDTH_REM}rem`,\n maxWidth: `${CONFIGURATION_PAGE_SECTION_MAX_WIDTH_REM}rem`\n }\n};\n/**\n * @private\n */\nexport const selectionContainerStyle = (theme, noSpeakerDropdownShown) => mergeStyles({\n width: '100%',\n minHeight: noSpeakerDropdownShown ? 'auto' : `${CONFIGURATION_PAGE_SECTION_HEIGHT_REM}rem`,\n padding: '1rem',\n borderRadius: theme.effects.roundedCorner6,\n border: `0.0625rem solid ${theme.palette.neutralLight}`,\n overflow: 'hidden',\n // do not let child background overflow the curved corners\n boxShadow: theme.effects.elevation4,\n // Style the background of the container to have partial transparency.\n // Using `before:` pseudo-element to avoid having to wrap the content in an extra div.\n // Ideally rgba would be used but we cannot garauntee the format of theme.palette.white\n // to parse it correctly.\n position: 'relative',\n ':before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: 0,\n background: theme.palette.white,\n opacity: 0.9\n }\n});\n/**\n * @private\n */\nexport const titleContainerStyleDesktop = (theme) => mergeStyles({\n fontSize: '1.2rem',\n lineHeight: '1rem',\n fontWeight: 600\n}, configurationPageTextDecoration(theme));\n/**\n * @private\n */\nexport const titleContainerStyleMobile = (theme) => mergeStyles({\n fontSize: '1.0625rem',\n lineHeight: '1.375rem',\n fontWeight: 600,\n textAlign: 'center'\n}, configurationPageTextDecoration(theme));\n/**\n * Ensure configuration page text is legible on top of a background image.\n * @private\n */\nconst configurationPageTextDecoration = (theme) => {\n return {\n textShadow: `0px 0px 8px ${theme.palette.whiteTranslucent40}`,\n fill: theme.semanticColors.bodyText,\n svg: {\n // Fix SVGs not displaying the correct color in Desert high contrast mode\n fill: 'currentColor'\n },\n stroke: theme.palette.whiteTranslucent40,\n paintOrder: 'stroke fill',\n strokeWidth: _pxToRem(1.5),\n text: {\n letterSpacing: '-0.02rem' // cope with extra width due to stroke width\n },\n '@media (forced-colors: active)': {\n textShadow: 'none',\n stroke: 'none'\n }\n };\n};\n/**\n * @private\n */\nexport const callDetailsContainerStyles = {\n root: {\n textAlign: 'center',\n maxWidth: _pxToRem(700),\n alignSelf: 'center'\n }\n};\nconst callDetailsStyle = (theme) => ({\n fontSize: '0.9375',\n lineHeight: '1.25rem',\n textShadow: `0px 0px 8px ${theme.palette.whiteTranslucent40}`,\n marginTop: '-0.33rem' // compensate for extra padding around the CallTitle that avoids the SVG shadowing being cut off\n});\n/**\n * @private\n */\nexport const callDetailsStyleDesktop = (theme) => mergeStyles(callDetailsStyle(theme));\n/**\n * @private\n */\nexport const callDetailsStyleMobile = (theme) => mergeStyles(callDetailsStyle(theme), {\n marginBottom: '0.5rem',\n textAlign: 'center'\n});\n/**\n * @private\n */\nexport const startCallButtonContainerStyleDesktop = {\n root: {\n paddingTop: '1.125rem'\n }\n};\n/**\n * @private\n */\nexport const startCallButtonContainerStyleMobile = {\n root: {\n textAlign: 'center'\n }\n};\n/**\n * @private\n */\nexport const startCallButtonStyleMobile = mergeStyles({\n width: '100%',\n maxWidth: 'unset',\n borderRadius: '0.25rem',\n height: '3.25rem'\n});\n/**\n * @private\n */\nexport const startCallButtonStyleDesktop = mergeStyles({\n borderRadius: '0.25rem',\n width: 'auto',\n height: '2.25rem'\n});\n/** @private */\nexport const cameraAndVideoEffectsContainerStyleDesktop = {\n root: {\n alignItems: 'center'\n }\n};\n/**\n * @private\n */\nexport const effectsButtonStyles = (theme, disabled) => {\n return {\n root: {\n background: 'transparent',\n border: 'none',\n color: theme.palette.themePrimary,\n // Top and bottom padding needs to be 5px to match the label padding\n padding: '5px 0.25rem',\n ':hover, :focus': disabled ? {} : {\n color: theme.palette.themePrimary\n },\n svg: {\n height: '1rem',\n width: '1rem'\n }\n },\n labelHovered: disabled ? {} : {\n color: theme.palette.themePrimary\n },\n rootChecked: disabled ? {} : {\n color: theme.palette.themePrimary\n },\n rootHovered: disabled ? {} : {\n color: theme.palette.themePrimary\n },\n rootPressed: disabled ? {} : {\n color: theme.palette.themePrimary\n },\n rootFocused: disabled ? {} : {\n color: theme.palette.themePrimary\n }\n };\n};\n/** @private */\nexport const fillWidth = mergeStyles({\n width: '100%',\n position: 'relative'\n});\n/** @private */\nexport const configurationCenteredContent = (fillsHeight, hasLogo) => mergeStyles({\n width: '100%',\n position: 'relative',\n // If the content does not fill the height, center it vertically.\n // We do not include the logo in the centering per design. This allows it to fade\n // in and not shift the content. To exclude the logo, we subtract the logo height\n // and margin from the actual height. This allows the flex box's natural centering\n // to appropriately center the content.\n height: `calc(100% - ${!fillsHeight && hasLogo ? `${LOGO_HEIGHT_REM}rem` : '0rem'})`\n});\n/** @private */\nexport const panelStyles = {\n content: {\n display: 'flex',\n flexBasis: '100%',\n paddingLeft: '0rem',\n // remove default padding\n paddingRight: '0rem' // remove default padding\n },\n commands: {\n paddingTop: '0rem' // remove default padding\n },\n scrollableContent: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n }\n};\n/** @private */\nexport const panelFocusProps = {\n forceFocusInsideTrap: false\n};\n/**\n * @private\n */\nexport const logoStyles = (shape) => ({\n root: {\n overflow: 'initial',\n // prevent the image being clipped\n display: 'flex',\n justifyContent: 'center'\n },\n image: {\n height: `${LOGO_HEIGHT_REM}rem`,\n borderRadius: shape === 'circle' ? '100%' : undefined,\n aspectRatio: shape === 'circle' ? '1 / 1' : undefined,\n objectFit: shape === 'circle' ? 'cover' : undefined\n }\n});\n//# sourceMappingURL=CallConfiguration.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/** @private */\nexport const controlBarContainerStyles = {\n paddingTop: '0.25rem',\n paddingBottom: '0.25rem'\n};\n//# sourceMappingURL=CallControls.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\nimport { controlBarContainerStyles } from './CallControls.styles';\nconst VIDEO_GALLERY_Z_INDEX = 1;\n// The control bar must be in a higher z-band than the video gallery so the drop shadow appears on top of the video gallery\n/** @private */\nexport const CONTROL_BAR_Z_INDEX = VIDEO_GALLERY_Z_INDEX + 1;\n// The notification container should be in the highest z-band to ensure it shows on top of all other content.\nconst NOTIFICATION_CONTAINER_Z_INDEX = Math.max(CONTROL_BAR_Z_INDEX, VIDEO_GALLERY_Z_INDEX) + 1;\n/** @private */\nexport const DRAWER_Z_INDEX = NOTIFICATION_CONTAINER_Z_INDEX + 1;\n/**\n * @private\n */\nexport const callControlsContainerStyles = mergeStyles(controlBarContainerStyles, {\n zIndex: CONTROL_BAR_Z_INDEX\n});\nconst containerStyle = {\n width: '100%',\n position: 'relative',\n minHeight: '13rem' // linked to minimum space allocated to media gallery\n};\n/**\n * @private\n */\nexport const containerStyleDesktop = mergeStyles(Object.assign(Object.assign({}, containerStyle), { minWidth: '30rem' }));\n/**\n * @private\n */\nexport const containerStyleMobile = mergeStyles(Object.assign(Object.assign({}, containerStyle), { minWidth: '17.5rem' }));\n/**\n * @private\n */\nexport const galleryParentContainerStyles = (backgroundColor) => ({\n root: {\n zIndex: VIDEO_GALLERY_Z_INDEX,\n width: '100%',\n background: backgroundColor\n }\n});\n/**\n * @private\n */\nexport const mediaGalleryContainerStyles = {\n root: {\n height: '100%',\n width: '100%'\n }\n};\n/**\n * @private\n */\nexport const notificationsContainerStyles = {\n root: {\n width: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n padding: '1rem',\n zIndex: NOTIFICATION_CONTAINER_Z_INDEX,\n pointerEvents: 'none' // to allow the operation of controls underneath the notification container\n }\n};\n/**\n * @private\n */\nexport const bannerNotificationStyles = {\n root: {\n zIndex: NOTIFICATION_CONTAINER_Z_INDEX,\n pointerEvents: 'auto' // to allow the dismissal or error and warning bars in the notification container\n }\n};\n/**\n * @private\n */\nexport const notificationStackStyles = {\n root: {\n zIndex: NOTIFICATION_CONTAINER_Z_INDEX,\n pointerEvents: 'auto',\n // to allow the dismissal or error and warning bars in the notification container,\n marginBottom: '0.5rem'\n }\n};\n/**\n * @private\n */\nexport const callArrangementContainerStyles = (verticalControlBar) => {\n return {\n root: {\n width: '100%',\n height: '100%',\n flexDirection: verticalControlBar ? 'unset' : 'column-reverse' // to allow first initial keyboard focus on ControlBar\n }\n };\n};\n/**\n * @private\n */\nexport const verticalControlBarStyles = {\n root: {\n margin: 'auto'\n }\n};\n//# sourceMappingURL=CallPage.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n// By default, absolute positioned elements are overlayed over static ones.\n// So we need to explicitly layer the background and contents.\nconst OVERLAY_BACKGROUND_ZINDEX = 0;\nconst OVERLAY_CONTENT_ZINDEX = OVERLAY_BACKGROUND_ZINDEX + 1;\n/**\n * @private\n */\nexport const containerStyles = {\n root: {\n height: '100%',\n width: '100%',\n position: 'relative',\n padding: '0.5rem'\n }\n};\n/**\n * @private\n */\nexport const overlayBackgroundStyles = isVideoReady => {\n return {\n position: 'absolute',\n height: '100%',\n width: '100%',\n background: isVideoReady ? 'black' : undefined,\n opacity: isVideoReady ? 0.6 : undefined,\n zIndex: OVERLAY_BACKGROUND_ZINDEX\n };\n};\n/**\n * @private\n */\nexport const overlayContentStyles = {\n height: '100%',\n width: '100%',\n zIndex: OVERLAY_CONTENT_ZINDEX\n};\n/**\n * @private\n */\nexport const videoTileStyles = {\n root: {\n height: '100%',\n width: '100%'\n }\n};\n//# sourceMappingURL=ExpandedLocalVideoTile.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _pxToRem } from \"../../../../../acs-ui-common/src\";\n/**\n * styles for hold pane resume button\n *\n * @private\n */\nexport const resumeButtonStyles = {\n root: {\n borderRadius: _pxToRem(4),\n padding: `${_pxToRem(6)} ${_pxToRem(20)} `\n },\n label: {\n fontWeight: 400,\n display: 'flex',\n fontSize: _pxToRem(14)\n },\n labelDisabled: {\n fontWeight: 400,\n display: 'flex',\n fontSize: _pxToRem(14)\n }\n};\n/**\n * styles for hold pane main text\n *\n * @private\n */\nexport const holdPaneLabelStyles = {\n root: {\n color: 'inherit',\n fontWeight: 600,\n fontHeight: _pxToRem(22),\n fontSize: _pxToRem(16),\n marginTop: '0.5rem',\n marginBottom: '1.5rem'\n }\n};\n/**\n * styles for hold pane timer\n *\n * @private\n */\nexport const holdPaneTimerStyles = {\n root: {\n color: 'inherit',\n fontWeight: 600,\n fontSize: _pxToRem(20),\n lineHeight: _pxToRem(28),\n margin: 'auto'\n }\n};\n/**\n * styles for hold pane container\n *\n * @private\n */\nexport const paneStyles = {\n root: {\n width: '100%',\n height: '100%',\n background: 'inherit'\n }\n};\n/**\n * styles for the hold pane content container\n *\n * @private\n */\nexport const holdPaneContentStyles = {\n root: {\n display: 'flex',\n margin: 'auto',\n flexDirection: 'column',\n justifyContent: 'center',\n alignContent: 'center',\n alignItems: 'center'\n }\n};\n//# sourceMappingURL=HoldPane.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport const overlayContainerStyle = {\n // Ensure some space around the text on a narrow viewport.\n margin: '1rem'\n};\n/**\n * @private\n */\nexport const titleStyle = (palette, isVideoReady) => {\n return {\n fontSize: '1rem',\n color: isVideoReady ? 'white' : palette.themePrimary,\n textAlign: 'center'\n };\n};\n/**\n * @private\n */\nexport const videoTileStyles = {\n root: {\n height: '100%',\n width: '100%'\n }\n};\n/**\n * @private\n */\nexport const moreDetailsStyle = (palette, isVideoReady) => ({\n fontSize: '0.75rem',\n color: isVideoReady ? 'white' : palette.themePrimary,\n textAlign: 'center'\n});\n/**\n * @private\n */\nexport const localCameraSwitcherContainerStyles = {\n root: {\n position: 'absolute',\n top: '0rem',\n right: '0rem'\n }\n};\n//# sourceMappingURL=LobbyTile.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\nconst DROPDOWN_HEIGHT_REM = 2.25;\n/**\n * @private\n */\nexport const mainStackTokens = {\n childrenGap: '0.5rem'\n};\n/**\n * @private\n */\nexport const soundStackTokens = {\n childrenGap: '0.5rem'\n};\n/**\n * @private\n */\nexport const dropDownStyles = (theme) => ({\n caretDownWrapper: {\n height: `${DROPDOWN_HEIGHT_REM}rem`,\n lineHeight: `${DROPDOWN_HEIGHT_REM}rem`\n },\n dropdownItem: {\n fontSize: '0.875rem',\n height: `${DROPDOWN_HEIGHT_REM}rem`,\n background: theme.palette.white\n },\n dropdown: {\n height: `${DROPDOWN_HEIGHT_REM}rem`,\n width: '100%',\n svg: {\n verticalAlign: 'top'\n }\n },\n title: {\n fontSize: '0.875rem',\n height: `${DROPDOWN_HEIGHT_REM}rem`,\n lineHeight: '2rem',\n borderRadius: '0.25rem',\n border: `1px solid ${theme.palette.neutralQuaternaryAlt}`\n },\n label: {\n fontWeight: 600,\n fontSize: '0.875rem',\n // Add z-index to ensure labels are rendered above the configuration section background\n zIndex: 1\n },\n errorMessage: {\n fontSize: '0.875rem'\n }\n});\n/**\n * @private\n */\nexport const dropDownTitleIconStyles = mergeStyles({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: '0',\n maxWidth: '100%',\n overflowWrap: 'break-word',\n margin: '.063rem'\n});\n/**\n * @private\n */\nexport const optionIconStyles = mergeStyles({\n marginRight: '8px',\n verticalAlign: 'text-top'\n});\n/**\n * @private\n */\nexport const deviceSelectionContainerStyles = {\n root: {\n /**\n * this is to move the device selection container above the larger border\n * container that is occluding messages\n */\n zIndex: 1\n }\n};\n//# sourceMappingURL=LocalDeviceSettings.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\nimport { CONFIGURATION_PAGE_SECTION_HEIGHT_REM, CONFIGURATION_PAGE_SECTION_MAX_WIDTH_REM, CONFIGURATION_PAGE_SECTION_MIN_WIDTH_REM } from './CallConfiguration.styles';\nimport { _pxToRem } from \"../../../../../acs-ui-common/src\";\nconst localPreviewContainerStyle = (theme) => ({\n borderRadius: theme.effects.roundedCorner6,\n overflow: 'hidden' // do not let child background overflow the curved corners\n});\n/**\n * @private\n */\nexport const localPreviewContainerStyleDesktop = (theme) => mergeStyles(localPreviewContainerStyle(theme), {\n width: '100%',\n height: `${CONFIGURATION_PAGE_SECTION_HEIGHT_REM}rem`,\n minWidth: `${CONFIGURATION_PAGE_SECTION_MIN_WIDTH_REM}rem`,\n maxWidth: `${CONFIGURATION_PAGE_SECTION_MAX_WIDTH_REM}rem`,\n border: `0.0625rem solid ${theme.palette.neutralLight}`,\n borderRadius: theme.effects.roundedCorner6,\n boxShadow: theme.effects.elevation4\n});\n/**\n * @private\n */\nexport const localPreviewContainerStyleMobile = (theme) => mergeStyles(localPreviewContainerStyle(theme), {\n width: '100%',\n height: '100%',\n minHeight: `${CONFIGURATION_PAGE_SECTION_HEIGHT_REM}rem`\n});\n/**\n * @private\n */\nexport const cameraOffLabelStyle = mergeStyles({\n fontSize: '0.75rem' // 12px\n});\n/**\n * @private\n */\nexport const localPreviewTileStyle = {\n root: {\n '@media (forced-colors: active)': {\n borderColor: '#FFFFFF',\n border: '1px solid'\n }\n }\n};\n/**\n * @private\n */\nexport const localPreviewButtonStyle = (isMobile) => {\n return {\n root: {\n minWidth: !isMobile ? _pxToRem(75) : 'unset',\n // we only want to enforce this for desktop views\n '@media (forced-colors: active)': {\n ':focus': {\n border: '1px solid !important' // we need bang important to override fluents colours\n },\n ':focus::after': {\n border: 'unset !important',\n // we need bang important to override fluents colours\n outline: 'unset !important'\n }\n }\n }\n };\n};\n//# sourceMappingURL=LocalPreview.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { FontWeights } from '@fluentui/react';\n/**\n * @private\n */\nexport const containerStyle = {\n // Ensure some space around the text on a narrow viewport.\n margin: '1rem',\n gap: `1.5rem`\n};\n/**\n * @private\n */\nexport const headerContainerStyle = {\n gap: `1.5rem`,\n height: `auto`\n};\n/**\n * @private\n */\nexport const titleContainerStyle = {\n gap: `1rem`\n};\n/**\n * @private\n */\nexport const titleStyle = (palette, isVideoReady) => ({\n fontSize: '1.25rem',\n fontWeight: FontWeights.semibold,\n color: isVideoReady ? 'white' : palette.neutralPrimary,\n textAlign: 'center'\n});\n/**\n * @private\n */\nexport const moreDetailsStyle = (palette, isVideoReady) => ({\n fontSize: '1rem',\n color: isVideoReady ? 'white' : palette.neutralPrimary,\n textAlign: 'center'\n});\n//# sourceMappingURL=NetworkReconnectTile.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport const containerStyle = {\n maxWidth: '22.5rem',\n // Ensure some space around the text on a narrow viewport.\n margin: '1rem'\n};\n/**\n * @private\n */\nexport const containerItemGap = {\n childrenGap: '0.5rem'\n};\n/**\n * @private\n */\nexport const rejoinCallButtonContainerStyles = {\n root: {\n paddingTop: '1.125rem',\n borderRadius: '0.25rem'\n }\n};\n/**\n * @private\n */\nexport const titleStyles = {\n fontSize: '1.25rem',\n fontWeight: 600\n};\n/**\n * @private\n */\nexport const moreDetailsStyles = {\n fontSize: '1rem'\n};\n//# sourceMappingURL=NoticePage.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\n/**\n * @private\n */\nexport const videoCameraIconStyle = mergeStyles({\n marginRight: '0.375rem',\n fontSize: '1.375rem'\n});\n/**\n * @private\n */\nexport const buttonStyle = mergeStyles({\n fontWeight: 600,\n fontSize: '0.875rem',\n // 14px\n height: '2.75rem',\n width: '100%'\n});\n/**\n * @private\n */\nexport const buttonWithIconStyles = {\n textContainer: {\n display: 'contents'\n }\n};\n//# sourceMappingURL=StartCallButton.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { toFlatCommunicationIdentifier, _formatString } from \"../../../../../acs-ui-common/src\";\nimport { useMemo, useRef, useState } from 'react';\nimport { useLocale } from '../../localization';\nimport { useSelector } from '../hooks/useSelector';\nimport { getRemoteParticipantsConnectedSelector } from '../selectors/mediaGallerySelector';\nimport { isMicrosoftTeamsAppIdentifier, isPhoneNumberIdentifier } from '@azure/communication-common';\n/**\n * sets the announcement string whenever a Participant comes or goes from a call to be\n * used by the system narrator.\n *\n * @returns string to be used by the narrator and Announcer component\n *\n * @internal\n */\nexport const useParticipantChangedAnnouncement = () => {\n const locale = useLocale().strings.call;\n const strings = useMemo(() => {\n return {\n participantJoinedNoticeString: locale.participantJoinedNoticeString,\n twoParticipantJoinedNoticeString: locale.twoParticipantJoinedNoticeString,\n threeParticipantJoinedNoticeString: locale.threeParticipantJoinedNoticeString,\n participantLeftNoticeString: locale.participantLeftNoticeString,\n twoParticipantLeftNoticeString: locale.twoParticipantLeftNoticeString,\n threeParticipantLeftNoticeString: locale.threeParticipantLeftNoticeString,\n unnamedParticipantString: locale.unnamedParticipantString,\n manyParticipantsJoined: locale.manyParticipantsJoined,\n manyParticipantsLeft: locale.manyParticipantsLeft,\n manyUnnamedParticipantsJoined: locale.manyUnnamedParticipantsJoined,\n manyUnnamedParticipantsLeft: locale.manyUnnamedParticipantsLeft\n };\n }, [locale]);\n const [announcerString, setAnnouncerString] = useState('');\n const currentParticipants = useSelector(getRemoteParticipantsConnectedSelector);\n /**\n * We want to use a useRef here since we want to not fire this hook based on the previous participants\n * this allows this value to be used in the hook without being in the dependency array.\n *\n * Note: By definition if this hook is used in another component it is not pure anymore.\n */\n const previousParticipants = useRef(currentParticipants);\n const resetAnnoucement = (string) => {\n setAnnouncerString(string);\n };\n useMemo(() => {\n const currentIds = currentParticipants.map(p => toFlatCommunicationIdentifier(p.identifier));\n const previousIds = previousParticipants.current.map(p => toFlatCommunicationIdentifier(p.identifier));\n const whoJoined = currentParticipants.filter(p => !previousIds.includes(toFlatCommunicationIdentifier(p.identifier)));\n const whoLeft = previousParticipants.current.filter(p => !currentIds.includes(toFlatCommunicationIdentifier(p.identifier)));\n if (whoJoined.length > 0) {\n resetAnnoucement(createAnnouncementString('joined', whoJoined, strings));\n }\n if (whoLeft.length > 0) {\n resetAnnoucement(createAnnouncementString('left', whoLeft, strings));\n }\n // Update cached value at the end.\n previousParticipants.current = currentParticipants;\n }, [currentParticipants, strings]);\n return announcerString;\n};\n/**\n * Generates the announcement string for when a participant joins or leaves a call.\n */\nexport const createAnnouncementString = (direction, participants, strings) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n /**\n * If there are no participants return empty string.\n */\n if (participants.length === 0) {\n return '';\n }\n /**\n * Filter participants into two arrays to put all the unnamed participants at the back of the\n * names being announced.\n */\n const unnamedParticipants = participants.filter(p => !p.displayName);\n const namedParicipants = participants.filter(p => p.displayName);\n const sortedParticipants = namedParicipants.concat(unnamedParticipants);\n /**\n * if there are only unnamed participants present in the array announce a special unnamed participants\n * only string.\n */\n if (sortedParticipants.filter(p => p.displayName).length === 0 && sortedParticipants.length > 1) {\n return _formatString(direction === 'joined' ? strings.manyUnnamedParticipantsJoined : strings.manyUnnamedParticipantsLeft, {\n numOfParticipants: (sortedParticipants.length - 1).toString()\n });\n }\n switch (sortedParticipants.length) {\n case 1:\n return _formatString(direction === 'joined' ? strings.participantJoinedNoticeString : strings.participantLeftNoticeString, {\n displayName: (_b = (_a = sortedParticipants[0]) === null || _a === void 0 ? void 0 : _a.displayName) !== null && _b !== void 0 ? _b : strings.unnamedParticipantString\n });\n case 2:\n return _formatString(direction === 'joined' ? strings.twoParticipantJoinedNoticeString : strings.twoParticipantLeftNoticeString, {\n displayName1: (_d = (_c = sortedParticipants[0]) === null || _c === void 0 ? void 0 : _c.displayName) !== null && _d !== void 0 ? _d : strings.unnamedParticipantString,\n displayName2: (_f = (_e = sortedParticipants[1]) === null || _e === void 0 ? void 0 : _e.displayName) !== null && _f !== void 0 ? _f : strings.unnamedParticipantString\n });\n case 3:\n return _formatString(direction === 'joined' ? strings.threeParticipantJoinedNoticeString : strings.threeParticipantLeftNoticeString, {\n displayName1: (_h = (_g = sortedParticipants[0]) === null || _g === void 0 ? void 0 : _g.displayName) !== null && _h !== void 0 ? _h : strings.unnamedParticipantString,\n displayName2: (_k = (_j = sortedParticipants[1]) === null || _j === void 0 ? void 0 : _j.displayName) !== null && _k !== void 0 ? _k : strings.unnamedParticipantString,\n displayName3: (_m = (_l = sortedParticipants[2]) === null || _l === void 0 ? void 0 : _l.displayName) !== null && _m !== void 0 ? _m : strings.unnamedParticipantString\n });\n }\n /**\n * If we have more than 3 participants joining we need to do something more to announce them\n * appropriately.\n *\n * We don't want to announce every name when more than 3 participants join at once so\n * we parse out the first 3 names we have and announce those with the number of others.\n */\n const numberOfExtraParticipants = sortedParticipants.length - 3;\n return _formatString(direction === 'joined' ? strings.manyParticipantsJoined : strings.manyParticipantsLeft, {\n displayName1: (_p = (_o = sortedParticipants[0]) === null || _o === void 0 ? void 0 : _o.displayName) !== null && _p !== void 0 ? _p : strings.unnamedParticipantString,\n displayName2: (_r = (_q = sortedParticipants[1]) === null || _q === void 0 ? void 0 : _q.displayName) !== null && _r !== void 0 ? _r : strings.unnamedParticipantString,\n displayName3: (_t = (_s = sortedParticipants[2]) === null || _s === void 0 ? void 0 : _s.displayName) !== null && _t !== void 0 ? _t : strings.unnamedParticipantString,\n numOfParticipants: numberOfExtraParticipants.toString()\n });\n};\n/**\n * determines if the media gallery should be replaced by the dtmf dialer\n * @param callees Target callees to determine if the dtmf dialer should be shown\n * @param remoteParticipants Remote participants to determine if the dtmf dialer should be shown if there are participants in the call\n * when joining\n * @returns whether the dialer should be the gallery content or not\n */\nexport const showDtmfDialer = (callees, remoteParticipants, dialerOptions) => {\n let showDtmfDialerAuto = false;\n if (typeof dialerOptions === 'object' && 'dialerBehavior' in dialerOptions) {\n const hideDtmfDialerAlways = dialerOptions.dialerBehavior && dialerOptions.dialerBehavior === 'alwaysHide';\n const showDtmfDialerAlways = dialerOptions.dialerBehavior === 'alwaysShow';\n showDtmfDialerAuto = dialerOptions.dialerBehavior === 'autoShow' ? true : false;\n if (showDtmfDialerAlways) {\n return true;\n }\n if (hideDtmfDialerAlways) {\n return false;\n }\n }\n let showDtmfDialer = false;\n /**\n * We also want to check to see if the option is undefined. If this is the case we want this function\n * to fallback on the original logic so that it will also render the callControls to show and hide the dialpad\n * for the user.\n */\n if (showDtmfDialerAuto || dialerOptions === undefined || dialerOptions === false) {\n callees === null || callees === void 0 ? void 0 : callees.forEach(callee => {\n if (isMicrosoftTeamsAppIdentifier(callee) || isPhoneNumberIdentifier(callee)) {\n showDtmfDialer = true;\n }\n });\n if (remoteParticipants) {\n remoteParticipants.forEach(participant => {\n if (!('phoneNumber' in participant.identifier || 'teamsAppId' in participant.identifier)) {\n showDtmfDialer = false;\n }\n });\n }\n }\n return showDtmfDialer;\n};\n//# sourceMappingURL=MediaGalleryUtils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n/**\n * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.\n *\n * @private\n */\nexport const useTrackedCapabilityChangedNotifications = (capabilitiesChangedAndRoleInfo) => {\n const [trackedCapabilityChangedNotifications, setTrackedCapabilityChangedNotifications] = useState({});\n const activeNotifications = useRef({});\n useEffect(() => {\n activeNotifications.current = updateLatestCapabilityChangedNotificationMap(capabilitiesChangedAndRoleInfo, activeNotifications.current);\n setTrackedCapabilityChangedNotifications(prev => updateTrackedCapabilityChangedNotificationsWithActiveNotifications(prev, Object.values(activeNotifications.current)));\n }, [capabilitiesChangedAndRoleInfo]);\n const onDismissCapabilityChangedNotification = useCallback((notification) => {\n setTrackedCapabilityChangedNotifications(prev => trackCapabilityChangedNotificationAsDismissed(notification.capabilityName, prev));\n }, []);\n const latestCapabilityChangedNotifications = useMemo(() => filterLatestCapabilityChangedNotifications(Object.values(activeNotifications.current), trackedCapabilityChangedNotifications), [trackedCapabilityChangedNotifications]);\n return {\n capabilitiesChangedNotifications: latestCapabilityChangedNotifications,\n onDismissNotification: onDismissCapabilityChangedNotification\n };\n};\n/**\n * Take the set of active notifications, and filter to only those that are newer than previously dismissed notifications or have never been dismissed.\n *\n * @private\n */\nexport const filterLatestCapabilityChangedNotifications = (activeNotifications, trackedNotifications) => {\n const filteredNotifications = activeNotifications.filter(activeNotification => {\n const trackedNotification = trackedNotifications[activeNotification.capabilityName];\n return !trackedNotification || !trackedNotification.lastDismissedAt || trackedNotification.lastDismissedAt < trackedNotification.mostRecentlyActive;\n });\n return filteredNotifications;\n};\n/**\n * Maintain a record of the most recently active notification for each capability name.\n *\n * @private\n */\nexport const updateTrackedCapabilityChangedNotificationsWithActiveNotifications = (existingTrackedNotifications, activeNotifications) => {\n var _a, _b;\n const trackedNotifications = {};\n // Only care about active notifications. If notifications are no longer active we do not track that they have been previously dismissed.\n for (const activeNotification of activeNotifications) {\n const existingTrackedNotification = existingTrackedNotifications[activeNotification.capabilityName];\n trackedNotifications[activeNotification.capabilityName] = {\n mostRecentlyActive: (_b = (_a = activeNotification.timestamp) !== null && _a !== void 0 ? _a : existingTrackedNotification === null || existingTrackedNotification === void 0 ? void 0 : existingTrackedNotification.mostRecentlyActive) !== null && _b !== void 0 ? _b : new Date(Date.now()),\n lastDismissedAt: existingTrackedNotification === null || existingTrackedNotification === void 0 ? void 0 : existingTrackedNotification.lastDismissedAt\n };\n }\n return trackedNotifications;\n};\n/**\n * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.\n *\n * @private\n */\nexport const trackCapabilityChangedNotificationAsDismissed = (capabilityName, trackedNotifications) => {\n const now = new Date(Date.now());\n const existingNotification = trackedNotifications[capabilityName];\n return Object.assign(Object.assign({}, trackedNotifications), { [capabilityName]: Object.assign(Object.assign({}, (existingNotification || {})), { lastDismissedAt: now }) });\n};\nconst updateLatestCapabilityChangedNotificationMap = (capabilitiesChangedInfoAndRole, activeNotifications) => {\n var _a, _b;\n if (!capabilitiesChangedInfoAndRole.capabilitiesChangeInfo) {\n return activeNotifications;\n }\n for (const [capabilityKey, newCapabilityValue] of Object.entries(capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.newValue)) {\n // Cast is safe because we are iterating over the enum keys on the object.entries where\n // newCapabilityValue typing is correctly returned. Object.entries limitations\n // always returns string for the key\n const capabilityName = capabilityKey;\n // If the active notification for a capability has the same `isPresent` value and the same reason as the new\n // capability value from the SDK then we will not create a new notification to avoid redundancy\n if (activeNotifications[capabilityName] && newCapabilityValue.isPresent === ((_a = activeNotifications[capabilityName]) === null || _a === void 0 ? void 0 : _a.isPresent) && capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason === ((_b = activeNotifications[capabilityName]) === null || _b === void 0 ? void 0 : _b.changedReason)) {\n continue;\n }\n // All initial values of capabilities are not present with reason 'FeatureNotSupported'. So we should not show a\n // notification for them when they initially become present at the start of the call\n const oldCapabilityValue = capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.oldValue[capabilityName];\n if (newCapabilityValue.isPresent === true && (oldCapabilityValue === null || oldCapabilityValue === void 0 ? void 0 : oldCapabilityValue.isPresent) === false && (oldCapabilityValue === null || oldCapabilityValue === void 0 ? void 0 : oldCapabilityValue.reason) === 'FeatureNotSupported' && capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason === 'MeetingOptionOrOrganizerPolicyChanged') {\n continue;\n }\n // Do not show the first time the screenshare capability is present when the user's role is resolved to mirror\n // Teams behaviour\n if (capabilityName === 'shareScreen' && activeNotifications['shareScreen'] === undefined && newCapabilityValue.isPresent === true && (oldCapabilityValue === null || oldCapabilityValue === void 0 ? void 0 : oldCapabilityValue.isPresent) === false && capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason === 'RoleChanged') {\n continue;\n }\n const newCapabilityChangeNotification = {\n capabilityName: capabilityName,\n isPresent: newCapabilityValue.isPresent,\n changedReason: capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason,\n role: capabilitiesChangedInfoAndRole.participantRole,\n timestamp: new Date(Date.now())\n };\n activeNotifications[capabilityName] = newCapabilityChangeNotification;\n }\n return activeNotifications;\n};\n//# sourceMappingURL=TrackCapabilityChangedNotifications.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Take the set of active notifications, and filter to only those that are newer than previously dismissed notifications or have never been dismissed.\n *\n * @private\n */\nexport const filterLatestNotifications = (activeNotifications, trackedNotifications) => {\n const filteredNotifications = activeNotifications.filter(activeNotification => {\n const trackedNotification = trackedNotifications[activeNotification.type];\n return !trackedNotification || !trackedNotification.lastDismissedAt || trackedNotification.lastDismissedAt < trackedNotification.mostRecentlyActive;\n });\n return filteredNotifications;\n};\n/**\n * Maintain a record of the most recently active notification for each notification type.\n *\n * @private\n */\nexport const updateTrackedNotificationsWithActiveNotifications = (existingTrackedNotifications, activeNotifications) => {\n var _a, _b;\n const trackedNotifications = {};\n // Only care about active notifications. If notifications are no longer active we do not track that they have been previously dismissed.\n for (const activeNotification of activeNotifications) {\n const existingTrackedNotification = existingTrackedNotifications[activeNotification.type];\n trackedNotifications[activeNotification.type] = {\n mostRecentlyActive: (_b = (_a = activeNotification.timestamp) !== null && _a !== void 0 ? _a : existingTrackedNotification === null || existingTrackedNotification === void 0 ? void 0 : existingTrackedNotification.mostRecentlyActive) !== null && _b !== void 0 ? _b : new Date(Date.now()),\n lastDismissedAt: existingTrackedNotification === null || existingTrackedNotification === void 0 ? void 0 : existingTrackedNotification.lastDismissedAt\n };\n }\n return trackedNotifications;\n};\n/**\n * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.\n *\n * @private\n */\nexport const trackNotificationAsDismissed = (notificationType, trackedNotifications) => {\n const now = new Date(Date.now());\n const existingNotification = trackedNotifications[notificationType];\n return Object.assign(Object.assign({}, trackedNotifications), { [notificationType]: Object.assign(Object.assign({}, (existingNotification || {})), { lastDismissedAt: now }) });\n};\n//# sourceMappingURL=TrackErrors.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { END_CALL_PAGES } from '../adapter/CallAdapter';\nimport { _isInCall, _isPreviewOn, _isInLobbyOrConnecting } from \"../../../../../calling-component-bindings/src\";\nimport { isPhoneNumberIdentifier } from '@azure/communication-common';\nconst ACCESS_DENIED_TEAMS_MEETING_SUB_CODE = 5854;\nconst REMOTE_PSTN_USER_HUNG_UP = 560000;\nconst REMOVED_FROM_CALL_SUB_CODES = [5000, 5300, REMOTE_PSTN_USER_HUNG_UP];\nconst CALL_REJECTED_CODE = 603;\nconst INVALID_MEETING_IDENTIFIER = 5751;\n/** @private */\nexport const ROOM_NOT_FOUND_SUB_CODE = 5732;\n/** @private */\nexport const ROOM_NOT_VALID_SUB_CODE = 5829;\n/** @private */\nexport const NOT_INVITED_TO_ROOM_SUB_CODE = 5828;\n/** @private */\nexport const INVITE_TO_ROOM_REMOVED_SUB_CODE = 5317;\n/** @private */\nexport const CALL_TIMEOUT_SUB_CODE = 10004;\n/** @private */\nexport const CALL_TIMEOUT_CODE = 487;\n/** @private */\nexport const BOT_TIMEOUT_CODE = 486;\n/** @private */\nexport const BOT_TIMEOUT_SUB_CODE = 10321;\n/**\n * @private\n */\nexport const isCameraOn = (state) => {\n if (state.call) {\n const stream = state.call.localVideoStreams.find(stream => stream.mediaStreamType === 'Video');\n return !!stream;\n }\n else {\n if (state.devices.selectedCamera) {\n const previewOn = _isPreviewOn(state.devices);\n return previewOn;\n }\n }\n return false;\n};\n/**\n * Reduce the set of call controls visible on mobile.\n * For example do not show screenshare button.\n *\n * @private\n */\nexport const reduceCallControlsForMobile = (callControlOptions) => {\n if (callControlOptions === false) {\n return false;\n }\n // Ensure call controls a valid object.\n const reduceCallControlOptions = callControlOptions === true ? {} : callControlOptions || {};\n // Set to compressed mode when composite is optimized for mobile\n reduceCallControlOptions.displayType = 'compact';\n // Do not show screen share button when composite is optimized for mobile unless the developer\n // has explicitly opted in.\n if (reduceCallControlOptions.screenShareButton !== true) {\n reduceCallControlOptions.screenShareButton = false;\n }\n return reduceCallControlOptions;\n};\nvar CallEndReasons;\n(function (CallEndReasons) {\n CallEndReasons[CallEndReasons[\"LEFT_CALL\"] = 0] = \"LEFT_CALL\";\n CallEndReasons[CallEndReasons[\"ACCESS_DENIED\"] = 1] = \"ACCESS_DENIED\";\n CallEndReasons[CallEndReasons[\"REMOVED_FROM_CALL\"] = 2] = \"REMOVED_FROM_CALL\";\n CallEndReasons[CallEndReasons[\"BAD_REQUEST\"] = 3] = \"BAD_REQUEST\";\n})(CallEndReasons || (CallEndReasons = {}));\nconst getCallEndReason = (call) => {\n var _a, _b, _c, _d;\n const remoteParticipantsEndedArray = Array.from(Object.values(call.remoteParticipantsEnded));\n /**\n * Handle the special case in a PSTN call where removing the last user kicks the caller out of the call.\n * The code and subcode is the same as when a user is removed from a teams interop call.\n * Hence, we look at the last remote participant removed to determine if the last participant removed was a phone number.\n * If yes, the caller was kicked out of the call, but we need to show them that they left the call.\n * Note: This check will only work for 1:1 PSTN Calls. The subcode is different for 1:N PSTN calls, and we do not need to handle that case.\n */\n if (remoteParticipantsEndedArray[0] && isPhoneNumberIdentifier(remoteParticipantsEndedArray[0].identifier) && ((_a = call.callEndReason) === null || _a === void 0 ? void 0 : _a.subCode) !== REMOTE_PSTN_USER_HUNG_UP) {\n return CallEndReasons.LEFT_CALL;\n }\n if (((_b = call.callEndReason) === null || _b === void 0 ? void 0 : _b.subCode) && call.callEndReason.subCode === ACCESS_DENIED_TEAMS_MEETING_SUB_CODE) {\n return CallEndReasons.ACCESS_DENIED;\n }\n if (((_c = call.callEndReason) === null || _c === void 0 ? void 0 : _c.subCode) && REMOVED_FROM_CALL_SUB_CODES.includes(call.callEndReason.subCode)) {\n return CallEndReasons.REMOVED_FROM_CALL;\n }\n // If the call end reason code is 400, the call is ended due to a bad request. Keep this line at the bottom right before returning normal left call to catch the scenarios not including the ones above.\n if (((_d = call.callEndReason) === null || _d === void 0 ? void 0 : _d.code) === 400) {\n return CallEndReasons.BAD_REQUEST;\n }\n if (call.callEndReason) {\n // No error codes match, assume the user simply left the call regularly\n return CallEndReasons.LEFT_CALL;\n }\n throw new Error('No matching call end reason');\n};\n/**\n * Helper function for determine strings and icons for end call page\n * @private\n */\nexport const getEndedCallPageProps = (locale, endedCall) => {\n var _a, _b, _c, _d, _e, _f, _g;\n let title = locale.strings.call.leftCallTitle;\n let moreDetails = locale.strings.call.leftCallMoreDetails;\n let disableStartCallButton = false;\n let iconName = 'NoticePageLeftCall';\n switch ((_a = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _a === void 0 ? void 0 : _a.subCode) {\n case ROOM_NOT_FOUND_SUB_CODE:\n if (locale.strings.call.roomNotFoundTitle) {\n title = locale.strings.call.roomNotFoundTitle;\n moreDetails = locale.strings.call.roomNotFoundDetails;\n disableStartCallButton = true;\n iconName = 'NoticePageRoomNotFound';\n }\n break;\n case ROOM_NOT_VALID_SUB_CODE:\n if (locale.strings.call.roomNotValidTitle) {\n title = locale.strings.call.roomNotValidTitle;\n moreDetails = locale.strings.call.roomNotValidDetails;\n disableStartCallButton = true;\n iconName = 'NoticePageRoomNotValid';\n }\n break;\n case NOT_INVITED_TO_ROOM_SUB_CODE:\n if (locale.strings.call.notInvitedToRoomTitle) {\n title = locale.strings.call.notInvitedToRoomTitle;\n moreDetails = locale.strings.call.notInvitedToRoomDetails;\n disableStartCallButton = true;\n iconName = 'NoticePageNotInvitedToRoom';\n }\n break;\n case INVITE_TO_ROOM_REMOVED_SUB_CODE:\n if (locale.strings.call.inviteToRoomRemovedTitle) {\n title = locale.strings.call.inviteToRoomRemovedTitle;\n moreDetails = locale.strings.call.inviteToRoomRemovedDetails;\n disableStartCallButton = true;\n iconName = 'NoticePageInviteToRoomRemoved';\n }\n break;\n case CALL_TIMEOUT_SUB_CODE:\n if (((_b = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _b === void 0 ? void 0 : _b.code) === CALL_TIMEOUT_CODE && locale.strings.call.callTimeoutTitle) {\n title = locale.strings.call.callTimeoutTitle;\n moreDetails = locale.strings.call.callTimeoutDetails;\n disableStartCallButton = true;\n iconName = 'NoticePageCallTimeout';\n }\n break;\n case BOT_TIMEOUT_SUB_CODE:\n if (((_c = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _c === void 0 ? void 0 : _c.code) === BOT_TIMEOUT_CODE && locale.strings.call.callTimeoutBotTitle) {\n title = locale.strings.call.callTimeoutBotTitle;\n moreDetails = locale.strings.call.callTimeoutBotDetails;\n disableStartCallButton = true;\n iconName = 'NoticePageCallTimeout';\n }\n break;\n }\n switch ((_d = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _d === void 0 ? void 0 : _d.code) {\n case CALL_REJECTED_CODE:\n if (locale.strings.call.callRejectedTitle) {\n title = locale.strings.call.callRejectedTitle;\n moreDetails = locale.strings.call.callRejectedMoreDetails;\n disableStartCallButton = true;\n iconName = 'NoticePageCallRejected';\n }\n break;\n }\n switch ((_e = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _e === void 0 ? void 0 : _e.subCode) {\n case 10037:\n if (locale.strings.call.participantCouldNotBeReachedTitle) {\n title = locale.strings.call.participantCouldNotBeReachedTitle;\n moreDetails = locale.strings.call.participantCouldNotBeReachedMoreDetails;\n disableStartCallButton = true;\n }\n break;\n case 10124:\n if (locale.strings.call.permissionToReachTargetParticipantNotAllowedTitle) {\n title = locale.strings.call.permissionToReachTargetParticipantNotAllowedTitle;\n moreDetails = locale.strings.call.permissionToReachTargetParticipantNotAllowedMoreDetails;\n disableStartCallButton = true;\n }\n break;\n case 10119:\n if (locale.strings.call.unableToResolveTenantTitle) {\n title = locale.strings.call.unableToResolveTenantTitle;\n moreDetails = locale.strings.call.unableToResolveTenantMoreDetails;\n disableStartCallButton = true;\n }\n break;\n case 10044:\n if (locale.strings.call.participantIdIsMalformedTitle) {\n title = locale.strings.call.participantIdIsMalformedTitle;\n moreDetails = locale.strings.call.participantIdIsMalformedMoreDetails;\n disableStartCallButton = true;\n }\n break;\n }\n switch ((_f = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _f === void 0 ? void 0 : _f.subCode) {\n case INVALID_MEETING_IDENTIFIER:\n if (locale.strings.call.callRejectedTitle) {\n title = locale.strings.call.callRejectedTitle;\n moreDetails = locale.strings.call.invalidMeetingIdentifier;\n disableStartCallButton = true;\n }\n break;\n }\n // keep this at the bottom to catch the scenarios not including the ones above.\n switch ((_g = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _g === void 0 ? void 0 : _g.code) {\n case 400:\n if (locale.strings.call.callRejectedTitle) {\n title = locale.strings.call.callRejectedTitle;\n disableStartCallButton = true;\n }\n break;\n }\n return {\n title,\n moreDetails,\n disableStartCallButton,\n iconName\n };\n};\n/**\n * Get the current call composite page based on the current call composite state\n *\n * @param Call - The current call state\n * @param previousCall - The state of the most recent previous call that has ended.\n *\n * @remarks - The previousCall state is needed to determine if the call has ended.\n * When the call ends a new call object is created, and so we must lookback at the\n * previous call state to understand how the call has ended. If there is no previous\n * call we know that this is a fresh call and can display the configuration page.\n *\n * @private\n */\nexport const getCallCompositePage = (call, previousCall, transferCall, originCall, unsupportedBrowserInfo) => {\n if (transferCall !== undefined) {\n return 'transferring';\n }\n if (call) {\n // Must check for ongoing call *before* looking at any previous calls.\n // If the composite completes one call and joins another, the previous calls\n // will be populated, but not relevant for determining the page.\n // `_isInLobbyOrConnecting` needs to be checked first because `_isInCall` also returns true when call is in lobby.\n if (_isInLobbyOrConnecting(call === null || call === void 0 ? void 0 : call.state)) {\n return 'lobby';\n // `LocalHold` needs to be checked before `isInCall` since it is also a state that's considered in call.\n }\n else if ((call === null || call === void 0 ? void 0 : call.state) === 'LocalHold') {\n return 'hold';\n }\n else if ((call === null || call === void 0 ? void 0 : call.state) === 'Disconnecting') {\n return 'leaving';\n }\n else if (_isInCall(call === null || call === void 0 ? void 0 : call.state)) {\n return 'call';\n }\n else {\n // When the call object has been constructed after clicking , but before 'connecting' has been\n // set on the call object, we continue to show the configuration screen.\n // The call object does not correctly reflect local device state until `call.state` moves to `connecting`.\n // Moving to the 'lobby' page too soon leads to components that depend on the `call` object to show incorrect\n // transitional state.\n return 'configuration';\n }\n }\n if (previousCall) {\n const reason = getCallEndReason(previousCall);\n switch (reason) {\n case CallEndReasons.ACCESS_DENIED:\n return 'accessDeniedTeamsMeeting';\n case CallEndReasons.REMOVED_FROM_CALL:\n return 'removedFromCall';\n case CallEndReasons.BAD_REQUEST:\n return 'badRequest';\n case CallEndReasons.LEFT_CALL:\n if (previousCall.diagnostics.network.latest.noNetwork) {\n return 'joinCallFailedDueToNoNetwork';\n }\n return 'leftCall';\n }\n }\n // No call state - show starting page (configuration)\n return 'configuration';\n};\n/** @private */\nexport const IsCallEndedPage = (page) => END_CALL_PAGES.includes(page);\n/**\n * Creates a new call control options object and sets the correct values for disabling\n * the buttons provided in the `disabledControls` array.\n * Returns a new object without changing the original object.\n * @param callControlOptions options for the call control component that need to be modified.\n * @param disabledControls An array of controls to disable.\n * @returns a copy of callControlOptions with disabledControls disabled\n * @private\n */\nexport const disableCallControls = (callControlOptions, disabledControls) => {\n var _a;\n if (callControlOptions === false) {\n return false;\n }\n // Ensure we clone the prop if it is an object to ensure we do not mutate the original prop.\n let newOptions = (_a = (callControlOptions instanceof Object ? Object.assign({}, callControlOptions) : callControlOptions)) !== null && _a !== void 0 ? _a : {};\n if (newOptions === true || newOptions === undefined) {\n newOptions = disabledControls.reduce((acc, key) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // @ts-expect-error TODO: fix noImplicitAny error here\n // Not solveable at this time due to typescript limitations. The typing is too complex for typescript to\n // understand. Will need to revisit when either typescript or the calling component bindings are updated.\n acc[key] = {\n disabled: true\n };\n return acc;\n }, {});\n }\n else {\n disabledControls.forEach(key => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // @ts-expect-error refer to above comment\n if (newOptions[key] !== false) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // @ts-expect-error refer to above comment\n newOptions[key] = {\n disabled: true\n };\n }\n });\n }\n return newOptions;\n};\n/**\n * Check if a disabled object is provided for a button and returns if the button is disabled.\n * A button is only disabled if is explicitly set to disabled.\n *\n * @param option\n * @returns whether a button is disabled\n * @private\n */\nexport const isDisabled = (option) => {\n if (option === undefined || typeof option === 'boolean') {\n return false;\n }\n return option.disabled;\n};\n/**\n * Check if we are using safari browser\n * @private\n */\nexport const _isSafari = (environmentInfo) => {\n return (environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.environment.browser.toLowerCase()) === 'safari';\n};\n/**\n * @private\n * This is the util function to create a participant modifier for remote participantList\n * It memoize previous original participant items and only update the changed participant\n * It takes in one modifier function to generate one single participant object, it returns undefined if the object keeps unmodified\n */\nexport const createParticipantModifier = (createModifiedParticipant) => {\n let previousParticipantState = undefined;\n let modifiedParticipants = {};\n const memoizedParticipants = {};\n return (state) => {\n var _a, _b, _c, _d;\n // if root state is the same, we don't need to update the participants\n if (((_a = state.call) === null || _a === void 0 ? void 0 : _a.remoteParticipants) !== previousParticipantState) {\n modifiedParticipants = {};\n const originalParticipants = Object.entries(((_b = state.call) === null || _b === void 0 ? void 0 : _b.remoteParticipants) || {});\n for (const [key, originalParticipant] of originalParticipants) {\n const modifiedParticipant = createModifiedParticipant(key, originalParticipant);\n if (modifiedParticipant === undefined) {\n modifiedParticipants[key] = originalParticipant;\n continue;\n }\n // Generate the new item if original cached item has been changed\n if (((_c = memoizedParticipants[key]) === null || _c === void 0 ? void 0 : _c.originalRef) !== originalParticipant) {\n memoizedParticipants[key] = {\n newParticipant: modifiedParticipant,\n originalRef: originalParticipant\n };\n }\n // the modified participant is always coming from the memoized cache, whether is was refreshed\n // from the previous closure or not\n const memoizedParticipant = memoizedParticipants[key];\n if (!memoizedParticipant) {\n throw new Error('Participant modifier encountered an unhandled exception.');\n }\n modifiedParticipants[key] = memoizedParticipant.newParticipant;\n }\n previousParticipantState = (_d = state.call) === null || _d === void 0 ? void 0 : _d.remoteParticipants;\n }\n return Object.assign(Object.assign({}, state), { call: state.call ? Object.assign(Object.assign({}, state.call), { remoteParticipants: modifiedParticipants }) : undefined });\n };\n};\n/** @private */\nexport const getBackgroundEffectFromSelectedEffect = (selectedEffect, VideoBackgroundEffectsDependency) => (selectedEffect === null || selectedEffect === void 0 ? void 0 : selectedEffect.effectName) === 'blur' ? VideoBackgroundEffectsDependency.createBackgroundBlurEffect() : (selectedEffect === null || selectedEffect === void 0 ? void 0 : selectedEffect.effectName) === 'replacement' ? VideoBackgroundEffectsDependency.createBackgroundReplacementEffect({\n backgroundImageUrl: selectedEffect.backgroundImageUrl\n}) : undefined;\n/**\n * @remarks this logic should mimic the onToggleCamera in the common call handlers.\n * @private\n */\nexport const getSelectedCameraFromAdapterState = (state) => state.devices.selectedCamera || state.devices.cameras[0];\n/**\n * Helper to determine if the adapter has a locator or targetCallees\n * @param locatorOrTargetCallees\n * @returns boolean to determine if the adapter has a locator or targetCallees, true is locator, false is targetCallees\n * @private\n */\nexport const getLocatorOrTargetCallees = (locatorOrTargetCallees) => {\n return !!Array.isArray(locatorOrTargetCallees);\n};\n/**\n * Return different conditions based on the current and previous state of recording and transcribing\n *\n * @param callRecordState - The current call record state: on, off, stopped\n * @param callTranscribeState - The current call transcribe state: on, off, stopped\n *\n * @remarks - The stopped state means: previously on but currently off\n *\n * @private\n */\nexport const computeVariant = (callRecordState, callTranscribeState) => {\n if (callRecordState === 'on' && callTranscribeState === 'on') {\n return 'recordingAndTranscriptionStarted';\n }\n else if (callRecordState === 'on' && callTranscribeState === 'off') {\n return 'recordingStarted';\n }\n else if (callRecordState === 'off' && callTranscribeState === 'on') {\n return 'transcriptionStarted';\n }\n else if (callRecordState === 'on' && callTranscribeState === 'stopped') {\n return 'transcriptionStoppedStillRecording';\n }\n else if (callRecordState === 'stopped' && callTranscribeState === 'on') {\n return 'recordingStoppedStillTranscribing';\n }\n else if (callRecordState === 'off' && callTranscribeState === 'stopped') {\n return 'transcriptionStopped';\n }\n else if (callRecordState === 'stopped' && callTranscribeState === 'off') {\n return 'recordingStopped';\n }\n else if (callRecordState === 'stopped' && callTranscribeState === 'stopped') {\n return 'recordingAndTranscriptionStopped';\n }\n else {\n return 'noState';\n }\n};\n/**\n * @private\n */\nexport function determineStates(previous, current) {\n // if current state is on, then return on\n if (current) {\n return 'on';\n }\n // if current state is off\n else {\n // if previous state is on and current state is off, return stopped (on -> off)\n if (previous === 'on') {\n return 'stopped';\n }\n // otherwise remain previous state unchanged\n else {\n return previous;\n }\n }\n}\n// The debounce time for the stopped state to be shown after both states are stopped.\n// This is to prevent stopped messages from being lost by transitioning to \"Off\" too\n// quickly if the states are toggled in quick succession.\n// This also prevents React strict mode from transitioning to \"Off\" too quickly.\nconst ComplianceNotificationOffDebounceTimeMs = 2000;\n/**\n * Compute compliance notification based on latest compliance state and cached props.\n * @private\n */\nexport function computeComplianceNotification(complianceProps, cachedProps) {\n // Only update cached props and variant if there is _some_ change in the latest props.\n // This ensures that state machine is only updated if there is an actual change in the props.\n const shouldUpdateCached = complianceProps.callRecordState !== cachedProps.current.latestBooleanState.callRecordState || complianceProps.callTranscribeState !== cachedProps.current.latestBooleanState.callTranscribeState;\n // The following three operations must be performed in this exact order:\n // [1]: Update cached state to transition the state machine.\n if (shouldUpdateCached) {\n cachedProps.current = {\n latestBooleanState: complianceProps,\n latestStringState: {\n callRecordState: determineStates(cachedProps.current.latestStringState.callRecordState, complianceProps.callRecordState),\n callTranscribeState: determineStates(cachedProps.current.latestStringState.callTranscribeState, complianceProps.callTranscribeState)\n },\n lastUpdated: Date.now()\n };\n }\n // [2]: If the callRecordState and callTranscribeState are both stopped for a predetermined amount of time, mark both states as off.\n // NOTE: this can be removed once lastStoppedRecording in the calling stateful client is GA.\n if (shouldUpdateCached && cachedProps.current.latestStringState.callRecordState === 'stopped' && cachedProps.current.latestStringState.callTranscribeState === 'stopped' && Date.now() - cachedProps.current.lastUpdated > ComplianceNotificationOffDebounceTimeMs) {\n // When both states are stopped, after displaying message \"RECORDING_AND_TRANSCRIPTION_STOPPED\", change both states to off (going back to the default state).\n cachedProps.current.latestStringState.callRecordState = 'off';\n cachedProps.current.latestStringState.callTranscribeState = 'off';\n }\n // [3]: Compute the variant, using the transitioned state machine.\n const variant = computeVariant(cachedProps.current.latestStringState.callRecordState, cachedProps.current.latestStringState.callTranscribeState);\n // If the variant is not 'noState', then show the notification.\n if (variant !== 'noState') {\n return {\n type: variant,\n timestamp: new Date(Date.now())\n };\n }\n else {\n return undefined;\n }\n}\n//# sourceMappingURL=Utils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { useMemo } from 'react';\nimport { useLocale } from '../../localization';\n/**\n * @internal\n */\nexport const useLocalSpotlightCallbacksWithPrompt = (onStartLocalSpotlight, onStopLocalSpotlight, setIsPromptOpen, setPromptProps) => {\n const strings = useLocale().strings.call;\n return useMemo(() => {\n if (!setIsPromptOpen || !setPromptProps) {\n return {\n onStartLocalSpotlightWithPrompt: onStartLocalSpotlight,\n onStopLocalSpotlightWithPrompt: onStopLocalSpotlight\n };\n }\n return {\n onStartLocalSpotlightWithPrompt: onStartLocalSpotlight ? getStartLocalSpotlightWithPromptCallback(onStartLocalSpotlight, setIsPromptOpen, setPromptProps, strings) : undefined,\n onStopLocalSpotlightWithPrompt: onStopLocalSpotlight ? getStopLocalSpotlightWithPromptCallback(onStopLocalSpotlight, setIsPromptOpen, setPromptProps, strings) : undefined\n };\n }, [onStartLocalSpotlight, onStopLocalSpotlight, setIsPromptOpen, setPromptProps, strings]);\n};\nconst getStartLocalSpotlightWithPromptCallback = (onStartSpotlight, setIsPromptOpen, setPromptProps, strings) => {\n return () => __awaiter(void 0, void 0, void 0, function* () {\n setPromptProps({\n heading: strings.spotlightPrompt.startSpotlightHeading,\n text: strings.spotlightPrompt.startSpotlightOnSelfText,\n confirmButtonLabel: strings.spotlightPrompt.startSpotlightConfirmButtonLabel,\n cancelButtonLabel: strings.spotlightPrompt.startSpotlightCancelButtonLabel,\n closeButtonLabel: strings.spotlightPrompt.closeSpotlightPromptButtonLabel,\n onConfirm: () => {\n onStartSpotlight();\n setIsPromptOpen(false);\n },\n onCancel: () => setIsPromptOpen(false)\n });\n setIsPromptOpen(true);\n });\n};\nconst getStopLocalSpotlightWithPromptCallback = (onStopSpotlight, setIsPromptOpen, setPromptProps, strings) => {\n return () => __awaiter(void 0, void 0, void 0, function* () {\n setPromptProps({\n heading: strings.spotlightPrompt.stopSpotlightOnSelfHeading,\n text: strings.spotlightPrompt.stopSpotlightOnSelfText,\n confirmButtonLabel: strings.spotlightPrompt.stopSpotlightOnSelfConfirmButtonLabel,\n cancelButtonLabel: strings.spotlightPrompt.stopSpotlightCancelButtonLabel,\n onConfirm: () => {\n onStopSpotlight();\n setIsPromptOpen(false);\n },\n onCancel: () => setIsPromptOpen(false)\n });\n setIsPromptOpen(true);\n });\n};\n/**\n * @internal\n */\nexport const useRemoteSpotlightCallbacksWithPrompt = (onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps) => {\n const strings = useLocale().strings.call;\n return useMemo(() => {\n if (!setIsPromptOpen || !setPromptProps) {\n return {\n onStartRemoteSpotlightWithPrompt: onStartRemoteSpotlight,\n onStopRemoteSpotlightWithPrompt: onStopRemoteSpotlight\n };\n }\n return {\n onStartRemoteSpotlightWithPrompt: onStartRemoteSpotlight ? getStartRemoteSpotlightWithPromptCallback(onStartRemoteSpotlight, setIsPromptOpen, setPromptProps, strings) : undefined,\n onStopRemoteSpotlightWithPrompt: onStopRemoteSpotlight ? getStopRemoteSpotlightWithPromptCallback(onStopRemoteSpotlight, setIsPromptOpen, setPromptProps, strings) : undefined\n };\n }, [onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps, strings]);\n};\nconst getStartRemoteSpotlightWithPromptCallback = (onStartSpotlight, setIsPromptOpen, setPromptProps, strings) => {\n return (userIds) => __awaiter(void 0, void 0, void 0, function* () {\n if (userIds.length > 1) {\n onStartSpotlight(userIds);\n }\n setPromptProps({\n heading: strings.spotlightPrompt.startSpotlightHeading,\n text: strings.spotlightPrompt.startSpotlightText,\n confirmButtonLabel: strings.spotlightPrompt.startSpotlightConfirmButtonLabel,\n cancelButtonLabel: strings.spotlightPrompt.startSpotlightCancelButtonLabel,\n closeButtonLabel: strings.spotlightPrompt.closeSpotlightPromptButtonLabel,\n onConfirm: () => {\n onStartSpotlight(userIds);\n setIsPromptOpen(false);\n },\n onCancel: () => setIsPromptOpen(false)\n });\n setIsPromptOpen(true);\n });\n};\nconst getStopRemoteSpotlightWithPromptCallback = (onStopSpotlight, setIsPromptOpen, setPromptProps, strings) => {\n return (userIds) => __awaiter(void 0, void 0, void 0, function* () {\n if (userIds.length > 1) {\n onStopSpotlight(userIds);\n }\n setPromptProps({\n heading: strings.spotlightPrompt.stopSpotlightHeading,\n text: strings.spotlightPrompt.stopSpotlightText,\n confirmButtonLabel: strings.spotlightPrompt.stopSpotlightConfirmButtonLabel,\n cancelButtonLabel: strings.spotlightPrompt.stopSpotlightCancelButtonLabel,\n closeButtonLabel: strings.spotlightPrompt.closeSpotlightPromptButtonLabel,\n onConfirm: () => {\n onStopSpotlight(userIds);\n setIsPromptOpen(false);\n },\n onCancel: () => setIsPromptOpen(false)\n });\n setIsPromptOpen(true);\n });\n};\n/**\n * @internal\n */\nexport const useStopAllSpotlightCallbackWithPrompt = (stopAllSpotlight, setIsPromptOpen, setPromptProps) => {\n const strings = useLocale().strings.call;\n return useMemo(() => {\n if (!setIsPromptOpen || !setPromptProps) {\n return {\n stopAllSpotlightWithPrompt: stopAllSpotlight\n };\n }\n return {\n stopAllSpotlightWithPrompt: stopAllSpotlight ? getStopAllSpotlightCallbackWithPromptCallback(stopAllSpotlight, setIsPromptOpen, setPromptProps, strings) : undefined\n };\n }, [stopAllSpotlight, setIsPromptOpen, setPromptProps, strings]);\n};\nconst getStopAllSpotlightCallbackWithPromptCallback = (stopAllSpotlight, setIsPromptOpen, setPromptProps, strings) => {\n return () => __awaiter(void 0, void 0, void 0, function* () {\n setPromptProps({\n heading: strings.spotlightPrompt.stopAllSpotlightHeading,\n text: strings.spotlightPrompt.stopAllSpotlightText,\n confirmButtonLabel: strings.spotlightPrompt.stopSpotlightConfirmButtonLabel,\n cancelButtonLabel: strings.spotlightPrompt.stopSpotlightCancelButtonLabel,\n closeButtonLabel: strings.spotlightPrompt.closeSpotlightPromptButtonLabel,\n onConfirm: () => {\n stopAllSpotlight();\n setIsPromptOpen(false);\n },\n onCancel: () => setIsPromptOpen(false)\n });\n setIsPromptOpen(true);\n });\n};\n//# sourceMappingURL=spotlightUtils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { useEffect } from 'react';\nimport { ROOM_NOT_FOUND_SUB_CODE, ROOM_NOT_VALID_SUB_CODE, NOT_INVITED_TO_ROOM_SUB_CODE, INVITE_TO_ROOM_REMOVED_SUB_CODE } from './Utils';\n/**\n * @private\n */\nexport const useEndedCallConsoleErrors = (endedCall) => {\n var _a;\n useEffect(() => {\n var _a;\n switch ((_a = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _a === void 0 ? void 0 : _a.subCode) {\n case ROOM_NOT_FOUND_SUB_CODE:\n console.error('Call ended because the room id provided through the adapter locator could not be found');\n break;\n case ROOM_NOT_VALID_SUB_CODE:\n console.error('Call ended because this room is currently not valid.');\n break;\n case NOT_INVITED_TO_ROOM_SUB_CODE:\n console.error('Call ended because you are not invited to this room.');\n break;\n case INVITE_TO_ROOM_REMOVED_SUB_CODE:\n console.error('Call ended because your invite to this room has been removed.');\n break;\n }\n }, [(_a = endedCall === null || endedCall === void 0 ? void 0 : endedCall.callEndReason) === null || _a === void 0 ? void 0 : _a.subCode]);\n};\n//# sourceMappingURL=useConsoleErrors.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { useLocale } from '../../localization/LocalizationProvider';\n/**\n * The hook to bypass limitation of conditional build for CallWithChatComposite\n * Remove this and use useLocale() instead when merge CallWithChatComposite from beta\n *\n * @private\n */\nexport const useCallWithChatCompositeStrings = () => {\n const locale = useLocale();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return locale.strings.callWithChat;\n};\n//# sourceMappingURL=useCallWithChatCompositeStrings.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport * as reselect from 'reselect';\nimport { getDeviceManager } from '../../CallComposite/selectors/baseSelectors';\n/**\n * @private\n */\nexport const moreDrawerSelector = reselect.createSelector([getDeviceManager], deviceManager => {\n return {\n microphones: deviceManager.microphones,\n speakers: deviceManager.speakers,\n selectedMicrophone: deviceManager.selectedMicrophone,\n selectedSpeaker: deviceManager.selectedSpeaker\n };\n});\n//# sourceMappingURL=moreDrawerSelector.js.map"],"names":["mutedNotificationSelector","diagnostics","_a","speakingWhileMuted","media","latest","speakingWhileMicrophoneIsMuted","value","networkReconnectTileSelector","lobbySelector","lobbyProps","networkReconnectValue","network","networkReconnect","localParticipantVideoStream","getMinutes","time","Math","floor","getSeconds","getReadableTime","hours","getHours","slice","DtmfDialpadContentTimerStyles","root","color","fontWeight","fontSize","lineHeight","margin","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","apply","DtmfDialpadPageContent","props","theme","useTheme","targetCallees","useSelector","remoteParticipants","calleeId","calleeName","remoteParticipantValues","Object","values","phoneNumber","find","p","identifier","adapter","Stack","style","height","width","background","palette","white","verticalAlign","DtmfDialerContentTimer","Text","toString","Dialpad","onSendDtmfTone","tone","sendDtmfTone","longPressTrigger","mobileView","dialpadMode","dtmfAudioContext","compositeAudioContext","setTime","useState","elapsedTime","statefulStartTime","startTime","useMemo","Date","now","useEffect","interval","setInterval","getTime","clearInterval","styles","DtmfDialpadPage","assign","CallPage","_b","callInvitationURL","onFetchAvatarPersonaData","onFetchParticipantMenuItems","options","galleryLayout","onUserSetGalleryLayoutChange","userSetOverflowGalleryPosition","onSetUserSetOverflowGalleryPosition","onCloseChatPane","pinnedParticipants","setPinnedParticipants","disableAutoShowDtmfDialer","dialerBehavior","latestNotifications","onDismissNotification","callStatus","callStatusSelector","mediaGalleryProps","mediaGallerySelector","mediaGalleryHandlers","useHandlers","MediaGallery","complianceBannerProps","complianceBannerSelector","errorBarProps","usePropsFor","ErrorBar","mutedNotificationProps","networkReconnectTileProps","remoteParticipantsConnected","callees","renderDtmfDialerFromStart","dtmfDialerPresent","setDtmfDialerPresent","strings","call","pinnedParticipantsChecked","filter","pinnedParticipant","remoteParticipant","callControlOptions","callControls","drawerMenuHostId","useId","isPromptOpen","setIsPromptOpen","promptProps","setPromptProps","CallArrangement","id","errorBar","showErrorNotifications","callControlProps","increaseFlyoutItemSize","modalLayerHostId","onRenderGalleryContent","isNetworkHealthy","updateSidePaneRenderer","mobileChatTabHeader","latestErrors","onDismissError","capabilitiesChangedNotificationBarProps","onSetDialpadPage","isMobile","remoteVideoTileMenuOptions","localVideoTileOptions","localVideoTile","userSetGalleryLayout","hideSpotlightButtons","spotlight","videoTilesOptions","captionsOptions","captionsBanner","onRenderGalleryContentTrampoline","NetworkReconnectTile","dataUiId","onUserSetOverflowGalleryPositionChange","dtmfDialerOptions","Prompt","isOpen","onDismiss","undefined","DiagnosticQuality","ConfigurationPage","startCallHandler","D","localDeviceSettingsHandlers","video","cameraPermissionGranted","audio","microphonePermissionGranted","microphones","environmentInfo","disableStartCallButton","length","role","isCameraOn","isAvailable","cameraLoading","setCameraLoading","switchCamera","useCallback","device","onSelectCamera","onToggleCamera","toggleCamera","filteredLatestErrors","type","locale","title","configurationPageTitle","className","lineHeightPx","bufferHeightPx","text","callDescription","configurationPageCallDetails","mobileWithPreview","toggleVideoEffectsPane","closeVideoEffectsPane","isVideoEffectsPaneOpen","startCall","panelLayerProps","hostId","filteredErrorBarProps","activeErrorMessages","containerStyles","backgroundImage","url","verticalFill","grow","horizontal","logo","tokens","Logo","horizontalAlign","showDevicesButton","cameraPermissionGrantedTrampoline","micPermissionGrantedTrampoline","onClickVideoEffects","onClick","disabled","hideIcon","hasCloseButton","isBlocking","isHiddenOnDismiss","focusTrapZoneProps","layerProps","customWidth","ariaLabel","videoEffectsPaneAriaLabel","maxWidth","minWidth","videoState","audioState","shape","src","alt","HoldPage","_c","_d","_e","LobbyPage","_f","inLobby","participants","showLocalVideoCameraCycleButton","overlayProps","outboundCallParticipant","includes","state","overlayPropsWaitingToBeAdmitted","overlayPropsOutboundCall","overlayPropsConnectingToCall","lobbyScreenConnectingToCallTitle","moreDetails","lobbyScreenConnectingToCallMoreDetails","overlayIcon","iconName","lobbyScreenWaitingToBeAdmittedTitle","lobbyScreenWaitingToBeAdmittedMoreDetails","participant","outboundCallingNoticeString","NoticePage","pageStyle","joinCall","rejoinCall","autoFocus","SurveyPage","handlers","onSurveySubmittedCustom","surveyOptions","onSurveySubmitted","onSurveyClosed","ThankYouForFeedbackPage","endOfSurveyText","pageContainer","avatarStyles","opacity","tileContainerStyles","position","top","left","minHeight","objectPosition","objectFit","zIndex","tileContentStyles","transform","display","justifyContent","defaultPersonaStyles","displayNameStyles","textAlign","spinnerStyles","circle","borderWidth","statusTextStyles","TransferPage","_g","transferCall","announcerString","setAnnouncerString","transferor","transferTarget","pageSubject","displayName","transferPageNoticeString","transferTileParticipant","transferParticipantDisplayName","transferPageUnknownTransferorDisplayName","transferPageUnknownTransferTargetDisplayName","Announcer","announcementString","ariaLive","TransferTile","userId","initialsName","statusText","transferPageTransferTargetText","transferPageTransferorText","personaSize","setPersonaSize","tileRef","useRef","observer","ResizeObserver","entries","contentRect","min","max","useLayoutEffect","current","observe","currentObserver","disconnect","placeholderOptions","coinSize","hidePersonaDetails","defaultOnRenderAvatar","AvatarPersona","dataProvider","defaultAvatar","ref","childrenGap","Spinner","size","localVideoCameraCycleButtonSelector","deviceManager","cameras","selectedCamera","activeVideoBackgroundEffectSelector","selectedVideoBackgroundEffect","effectName","key","getDisplayName","getEndedCall","endedCall","getCallStatus","getDeviceManager","devices","getIsScreenShareOn","isScreenSharingOn","getLocalParticipantRaisedHand","raiseHand","localParticipantRaisedHand","getCapabilites","capabilitiesFeature","capabilities","getMicrophones","getCameras","getRole","getPage","page","getTransferCall","acceptedTransferCallState","getLocalMicrophoneEnabled","isLocalPreviewMicrophoneEnabled","getLocalVideoStreams","localVideoStreams","getIsTranscriptionActive","transcription","isTranscriptionActive","getIsRecordingActive","recording","isRecordingActive","getUserFacingDiagnostics","getDominantSpeakerInfo","dominantSpeakers","getRemoteParticipants","getEnvironmentInfo","getSelectedVideoEffect","getCaptionsKind","captionsFeature","captionsKind","getCaptionsStatus","isCaptionsFeatureActive","getIsTeamsCall","isTeamsCall","getIsTeamsMeeting","isTeamsMeeting","getTeamsMeetingCoordinates","meetingConference","conferencePhones","getLatestCapabilitiesChangedInfo","latestCapabilitiesChangeInfo","getTargetCallees","getStartTime","getSpotlightedParticipants","spotlightedParticipants","getVideoEffectsDependency","onResolveVideoEffectDependency","getDeepNoiseSuppresionEffectsDependency","onResolveDeepNoiseSuppressionDependency","getDeepNoiseSuppresionIsOnByDefault","deepNoiseSuppressionOnByDefault","getHideDeepNoiseSupressionButton","hideDeepNoiseSuppressionButton","getReactionResources","reactions","getAlternateCallerId","alternateCallerId","getIsRoomsCall","isRoomsCall","getVideoBackgroundImages","videoBackgroundImages","isScreenShareOn","capabilitiesChangedInfoAndRoleSelector","capabilitiesChangeInfo","participantRole","capabilitySelector","callTranscribeState","callRecordState","deviceCountSelector","camerasCount","microphonesCount","devicePermissionSelector","deviceAccess","localVideoStreamInfo","dominantRemoteParticipantSelector","dominantSpeakerInfo","keys","findDominantRemoteParticipant","dominantSpeakerIds","dominantRemoteParticipantId","remoteParticipantIds","getFirstSpotlightedRemoteParticipant","spotlightedParticipantUserIds","map","findFirstSpotlightedRemoteParticipant","spotlightedRemoteParticipantUserIds","localAndRemotePIPSelector","dominantRemoteParticipantState","raisedHand","firstSpotlightedRemoteParticipantState","remoteParticipantState","localParticipant","videoStream","localPreviewSelector","view","unparentedViews","videoStreamElement","target","localVideoSelector","localVideoStream","i","mediaStreamType","isMirrored","renderElement","activeVideoEffects","videoEffects","isVideoStreamOn","stream","getRemoteParticipantsConnectedSelector","groupCallLeaveButtonStyle","border","borderRadius","flexContainer","flexFlow","groupCallLeaveButtonCompressedStyle","buttonFlyoutIncreasedSizeStyles","maxHeight","overflow","linkContent","icon","checkmarkIcon","participantButtonWithIncreasedTouchTargets","menuStyles","menuItemStyles","participantListStyles","participantItemStyles","participantSubMenuItemsStyles","devicesButtonWithIncreasedTouchTargets","controlButtonBaseStyle","label","concatButtonBaseStyles","forEach","mainScreenContainerStyle","mainScreenContainerStyleDesktop","mainScreenContainerStyleMobile","drawerContainerStyles","leavingPageStyle","neutralLighterAlt","CONFIGURATION_PAGE_SECTION_MIN_WIDTH_REM","CONFIGURATION_PAGE_SECTION_MAX_WIDTH_REM","CONFIGURATION_PAGE_SECTION_HEIGHT_REM","configurationStackTokensDesktop","configurationStackTokensMobile","deviceConfigurationStackTokens","configurationContainerStyle","desktop","backgroundImageUrl","padding","content","backgroundSize","backgroundPosition","configurationSectionStyle","selectionContainerStyle","noSpeakerDropdownShown","effects","roundedCorner6","neutralLight","boxShadow","elevation4","bottom","right","titleContainerStyleDesktop","configurationPageTextDecoration","titleContainerStyleMobile","textShadow","whiteTranslucent40","fill","semanticColors","bodyText","svg","stroke","paintOrder","strokeWidth","letterSpacing","callDetailsContainerStyles","alignSelf","callDetailsStyle","marginTop","callDetailsStyleDesktop","callDetailsStyleMobile","marginBottom","startCallButtonContainerStyleDesktop","paddingTop","startCallButtonContainerStyleMobile","startCallButtonStyleMobile","startCallButtonStyleDesktop","cameraAndVideoEffectsContainerStyleDesktop","alignItems","effectsButtonStyles","themePrimary","labelHovered","rootChecked","rootHovered","rootPressed","rootFocused","fillWidth","configurationCenteredContent","fillsHeight","hasLogo","panelStyles","flexBasis","paddingLeft","paddingRight","commands","scrollableContent","flexDirection","panelFocusProps","forceFocusInsideTrap","logoStyles","image","aspectRatio","controlBarContainerStyles","paddingBottom","CONTROL_BAR_Z_INDEX","VIDEO_GALLERY_Z_INDEX","NOTIFICATION_CONTAINER_Z_INDEX","DRAWER_Z_INDEX","callControlsContainerStyles","containerStyle","containerStyleDesktop","containerStyleMobile","galleryParentContainerStyles","backgroundColor","mediaGalleryContainerStyles","notificationsContainerStyles","pointerEvents","bannerNotificationStyles","notificationStackStyles","callArrangementContainerStyles","verticalControlBar","overlayBackgroundStyles","isVideoReady","overlayContentStyles","OVERLAY_BACKGROUND_ZINDEX","videoTileStyles","resumeButtonStyles","labelDisabled","holdPaneLabelStyles","fontHeight","holdPaneTimerStyles","paneStyles","holdPaneContentStyles","alignContent","overlayContainerStyle","titleStyle","moreDetailsStyle","localCameraSwitcherContainerStyles","mainStackTokens","soundStackTokens","dropDownStyles","caretDownWrapper","dropdownItem","dropdown","neutralQuaternaryAlt","errorMessage","dropDownTitleIconStyles","textOverflow","overflowWrap","optionIconStyles","marginRight","deviceSelectionContainerStyles","localPreviewContainerStyle","localPreviewContainerStyleDesktop","localPreviewContainerStyleMobile","cameraOffLabelStyle","localPreviewTileStyle","borderColor","localPreviewButtonStyle","outline","gap","headerContainerStyle","titleContainerStyle","neutralPrimary","containerItemGap","rejoinCallButtonContainerStyles","titleStyles","moreDetailsStyles","videoCameraIconStyle","buttonStyle","buttonWithIconStyles","textContainer","useParticipantChangedAnnouncement","participantJoinedNoticeString","twoParticipantJoinedNoticeString","threeParticipantJoinedNoticeString","participantLeftNoticeString","twoParticipantLeftNoticeString","threeParticipantLeftNoticeString","unnamedParticipantString","manyParticipantsJoined","manyParticipantsLeft","manyUnnamedParticipantsJoined","manyUnnamedParticipantsLeft","currentParticipants","previousParticipants","resetAnnoucement","string","currentIds","previousIds","whoJoined","whoLeft","createAnnouncementString","direction","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","unnamedParticipants","sortedParticipants","concat","numOfParticipants","displayName1","displayName2","displayName3","numberOfExtraParticipants","showDtmfDialer","dialerOptions","showDtmfDialerAuto","hideDtmfDialerAlways","showDtmfDialerAlways","callee","useTrackedCapabilityChangedNotifications","capabilitiesChangedAndRoleInfo","trackedCapabilityChangedNotifications","setTrackedCapabilityChangedNotifications","activeNotifications","updateLatestCapabilityChangedNotificationMap","prev","updateTrackedCapabilityChangedNotificationsWithActiveNotifications","onDismissCapabilityChangedNotification","notification","trackCapabilityChangedNotificationAsDismissed","capabilityName","capabilitiesChangedNotifications","filterLatestCapabilityChangedNotifications","trackedNotifications","activeNotification","trackedNotification","lastDismissedAt","mostRecentlyActive","existingTrackedNotifications","existingTrackedNotification","timestamp","existingNotification","capabilitiesChangedInfoAndRole","capabilityKey","newCapabilityValue","newValue","isPresent","reason","changedReason","oldCapabilityValue","oldValue","newCapabilityChangeNotification","filterLatestNotifications","updateTrackedNotificationsWithActiveNotifications","trackNotificationAsDismissed","notificationType","REMOTE_PSTN_USER_HUNG_UP","REMOVED_FROM_CALL_SUB_CODES","ROOM_NOT_FOUND_SUB_CODE","ROOM_NOT_VALID_SUB_CODE","NOT_INVITED_TO_ROOM_SUB_CODE","INVITE_TO_ROOM_REMOVED_SUB_CODE","reduceCallControlsForMobile","reduceCallControlOptions","displayType","screenShareButton","CallEndReasons","getEndedCallPageProps","leftCallTitle","leftCallMoreDetails","callEndReason","subCode","roomNotFoundTitle","roomNotFoundDetails","roomNotValidTitle","roomNotValidDetails","notInvitedToRoomTitle","notInvitedToRoomDetails","inviteToRoomRemovedTitle","inviteToRoomRemovedDetails","code","callTimeoutTitle","callTimeoutDetails","callTimeoutBotTitle","callTimeoutBotDetails","callRejectedTitle","callRejectedMoreDetails","participantCouldNotBeReachedTitle","participantCouldNotBeReachedMoreDetails","permissionToReachTargetParticipantNotAllowedTitle","permissionToReachTargetParticipantNotAllowedMoreDetails","unableToResolveTenantTitle","unableToResolveTenantMoreDetails","participantIdIsMalformedTitle","participantIdIsMalformedMoreDetails","invalidMeetingIdentifier","getCallCompositePage","previousCall","originCall","unsupportedBrowserInfo","remoteParticipantsEndedArray","Array","from","remoteParticipantsEnded","LEFT_CALL","ACCESS_DENIED","REMOVED_FROM_CALL","BAD_REQUEST","Error","getCallEndReason","noNetwork","IsCallEndedPage","disableCallControls","disabledControls","newOptions","reduce","acc","isDisabled","option","_isSafari","environment","browser","toLowerCase","createParticipantModifier","createModifiedParticipant","previousParticipantState","modifiedParticipants","memoizedParticipants","originalParticipants","originalParticipant","modifiedParticipant","originalRef","newParticipant","memoizedParticipant","getBackgroundEffectFromSelectedEffect","selectedEffect","VideoBackgroundEffectsDependency","createBackgroundBlurEffect","createBackgroundReplacementEffect","getSelectedCameraFromAdapterState","getLocatorOrTargetCallees","locatorOrTargetCallees","isArray","computeVariant","determineStates","previous","ComplianceNotificationOffDebounceTimeMs","computeComplianceNotification","complianceProps","cachedProps","shouldUpdateCached","latestBooleanState","latestStringState","lastUpdated","variant","useLocalSpotlightCallbacksWithPrompt","onStartLocalSpotlight","onStopLocalSpotlight","onStartLocalSpotlightWithPrompt","getStartLocalSpotlightWithPromptCallback","onStopLocalSpotlightWithPrompt","getStopLocalSpotlightWithPromptCallback","onStartSpotlight","heading","spotlightPrompt","startSpotlightHeading","startSpotlightOnSelfText","confirmButtonLabel","startSpotlightConfirmButtonLabel","cancelButtonLabel","startSpotlightCancelButtonLabel","closeButtonLabel","closeSpotlightPromptButtonLabel","onConfirm","onCancel","onStopSpotlight","stopSpotlightOnSelfHeading","stopSpotlightOnSelfText","stopSpotlightOnSelfConfirmButtonLabel","stopSpotlightCancelButtonLabel","useRemoteSpotlightCallbacksWithPrompt","onStartRemoteSpotlight","onStopRemoteSpotlight","onStartRemoteSpotlightWithPrompt","getStartRemoteSpotlightWithPromptCallback","onStopRemoteSpotlightWithPrompt","getStopRemoteSpotlightWithPromptCallback","userIds","startSpotlightText","stopSpotlightHeading","stopSpotlightText","stopSpotlightConfirmButtonLabel","useStopAllSpotlightCallbackWithPrompt","stopAllSpotlight","stopAllSpotlightWithPrompt","getStopAllSpotlightCallbackWithPromptCallback","stopAllSpotlightHeading","stopAllSpotlightText","useEndedCallConsoleErrors","console","error","useCallWithChatCompositeStrings","callWithChat","moreDrawerSelector","speakers","selectedMicrophone","selectedSpeaker"],"sourceRoot":""}