{"version":3,"file":"static/js/4459_f5c7f867ce42700e0a21.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/adapter/ParticipantSubcriber.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/adapter/DiagnosticsForwarder.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/adapter/createHandlers.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/adapter/OnFetchProfileCallback.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/adapter/CallingSoundSubscriber.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/adapter/AzureCommunicationCallAdapter.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/adapter/CallAdapter.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/adapter/CallAdapterProvider.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/components/buttons/Devices.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/components/buttons/Participants.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/components/buttons/People.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/components/CallControls.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/components/SidePane/usePeoplePane.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/components/SidePane/useMeetingPhoneInfo.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/components/CapabilitiesChangedNotificationBar.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/components/CallArrangement.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/components/ConfigurationPageErrorBar.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/components/ExpandedLocalVideoTile.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/components/HoldPane.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/components/LobbyTile.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/components/LocalAndRemotePIP.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/components/ConfigurationPageCameraDropdown.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/components/ConfigurationPageMicDropdown.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/components/LocalDeviceSettings.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/components/LocalPreview.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/components/MediaGallery.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/components/NetworkReconnectTile.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/components/Prompt.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/components/SidePane/SidePane.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/components/SidePane/SidePaneProvider.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/components/SidePane/useVideoEffectsPane.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/components/StartCallButton.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/components/SvgWithWordWrapping.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/components/buttons/Camera.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/components/buttons/EndCall.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/components/buttons/Microphone.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/components/buttons/RaiseHand.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/components/buttons/Reaction.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/components/buttons/ScreenShare.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/hooks/useAdaptedSelector.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/hooks/useHandlers.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/hooks/usePropsFor.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/hooks/useSelector.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport class ParticipantSubscriber {\n constructor(participant, emitter) {\n this.isMutedChangedHandler = () => {\n this.emitter.emit('isMutedChanged', {\n participantId: this.participant.identifier,\n isMuted: this.participant.isMuted\n });\n };\n this.displayNameChangedHandler = () => {\n this.emitter.emit('displayNameChanged', {\n participantId: this.participant.identifier,\n displayName: this.participant.displayName\n });\n };\n this.isSpeakingChangedHandler = () => {\n this.emitter.emit('isSpeakingChanged', {\n participantId: this.participant.identifier,\n isSpeaking: this.participant.isSpeaking\n });\n };\n this.videoStreamsUpdatedHandler = (event) => {\n this.emitter.emit('videoStreamsUpdated', event);\n };\n this.participant = participant;\n this.emitter = emitter;\n this.subscribeParticipantEvents();\n }\n subscribeParticipantEvents() {\n this.participant.on('isMutedChanged', this.isMutedChangedHandler);\n this.participant.on('displayNameChanged', this.displayNameChangedHandler);\n this.participant.on('isSpeakingChanged', this.isSpeakingChangedHandler);\n this.participant.on('videoStreamsUpdated', this.videoStreamsUpdatedHandler);\n }\n unsubscribeAll() {\n this.participant.off('isMutedChanged', this.isMutedChangedHandler);\n this.participant.off('displayNameChanged', this.displayNameChangedHandler);\n this.participant.off('isSpeakingChanged', this.isSpeakingChangedHandler);\n this.participant.off('videoStreamsUpdated', this.videoStreamsUpdatedHandler);\n }\n}\n//# sourceMappingURL=ParticipantSubcriber.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Features } from '@azure/communication-calling';\n/**\n * @private\n */\nexport class DiagnosticsForwarder {\n constructor(emitter, call) {\n this.unsubscribe = () => {\n this._diagnostics.network.off('diagnosticChanged', this.networkDiagnosticsChanged.bind(this));\n this._diagnostics.media.off('diagnosticChanged', this.mediaDiagnosticsChanged.bind(this));\n };\n this._diagnostics = call.feature(Features.UserFacingDiagnostics);\n this._emitter = emitter;\n this.subscribe();\n }\n subscribe() {\n this._diagnostics.network.on('diagnosticChanged', this.networkDiagnosticsChanged.bind(this));\n this._diagnostics.media.on('diagnosticChanged', this.mediaDiagnosticsChanged.bind(this));\n }\n networkDiagnosticsChanged(args) {\n const event = Object.assign({ type: 'network' }, args);\n this._emitter.emit('diagnosticChanged', event);\n }\n mediaDiagnosticsChanged(args) {\n const event = Object.assign({ type: 'media' }, args);\n this._emitter.emit('diagnosticChanged', event);\n }\n}\n//# sourceMappingURL=DiagnosticsForwarder.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createDefaultCallingHandlers } from \"../../../../../calling-component-bindings/src\";\nimport { createDefaultTeamsCallingHandlers } from \"../../../../../calling-component-bindings/src\";\nimport { _isACSCall, _isACSCallAgent, _isTeamsCall, _isTeamsCallAgent } from \"../../../../../calling-stateful-client/src\";\n/**\n * @private\n *\n * This is used to create correct handler for generic agent type\n */\nexport function createHandlers(callClient, callAgent, deviceManager, call, options) {\n // Call can be either undefined or ACS Call\n if (_isACSCallAgent(callAgent) && (!call || call && _isACSCall(call))) {\n return createDefaultCallingHandlers(callClient, callAgent, deviceManager, call, options);\n }\n if (_isTeamsCallAgent(callAgent) && (!call || call && _isTeamsCall(call))) {\n return createDefaultTeamsCallingHandlers(callClient, callAgent, deviceManager, call, options);\n }\n throw new Error('Unhandled agent type');\n}\n//# sourceMappingURL=createHandlers.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 { createParticipantModifier } from '../utils';\n/**\n * @private\n */\nexport const createProfileStateModifier = (onFetchProfile, notifyUpdate) => {\n const cachedDisplayName = {};\n return (state) => {\n var _a;\n const originalParticipants = (_a = state.call) === null || _a === void 0 ? void 0 : _a.remoteParticipants;\n (() => __awaiter(void 0, void 0, void 0, function* () {\n let shouldNotifyUpdates = false;\n if (!originalParticipants) {\n return;\n }\n for (const [key, participant] of Object.entries(originalParticipants)) {\n if (cachedDisplayName[key]) {\n continue;\n }\n const profile = yield onFetchProfile(key, {\n displayName: participant.displayName\n });\n if ((profile === null || profile === void 0 ? void 0 : profile.displayName) && participant.displayName !== (profile === null || profile === void 0 ? void 0 : profile.displayName)) {\n cachedDisplayName[key] = profile === null || profile === void 0 ? void 0 : profile.displayName;\n shouldNotifyUpdates = true;\n }\n }\n // notify update only when there is a change, which most likely will trigger modifier and setState again\n if (shouldNotifyUpdates) {\n notifyUpdate();\n }\n }))();\n const participantsModifier = createParticipantModifier((id, participant) => {\n if (cachedDisplayName[id]) {\n return Object.assign(Object.assign({}, participant), { displayName: cachedDisplayName[id] });\n }\n return undefined;\n });\n return participantsModifier(state);\n };\n};\n//# sourceMappingURL=OnFetchProfileCallback.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { isPhoneNumberIdentifier } from '@azure/communication-common';\nconst CALL_REJECTED_CODE = 603;\nconst CALL_ENDED_CODE = 0;\nconst CALL_TRANSFER_SUBCODE = 7015;\n/**\n * @private\n */\nexport class CallingSoundSubscriber {\n constructor(call, callees, sounds) {\n this.playingSounds = false;\n this.onCallStateChanged = () => {\n this.call.on('stateChanged', () => {\n var _a, _b, _c, _d, _e, _f, _g;\n if (shouldPlayRinging(this.call, this.callees) && ((_a = this.soundsLoaded) === null || _a === void 0 ? void 0 : _a.callRingingSound)) {\n this.soundsLoaded.callRingingSound.loop = true;\n this.playSound(this.soundsLoaded.callRingingSound);\n this.playingSounds = true;\n }\n if (!shouldPlayRinging(this.call, this.callees) && ((_b = this.soundsLoaded) === null || _b === void 0 ? void 0 : _b.callRingingSound)) {\n this.soundsLoaded.callRingingSound.loop = false;\n this.soundsLoaded.callRingingSound.pause();\n this.playingSounds = false;\n }\n if (this.call.state === 'Disconnected') {\n if (((_c = this.soundsLoaded) === null || _c === void 0 ? void 0 : _c.callBusySound) && ((_d = this.call.callEndReason) === null || _d === void 0 ? void 0 : _d.code) === CALL_REJECTED_CODE) {\n this.playSound(this.soundsLoaded.callBusySound);\n this.playingSounds = true;\n }\n else if (((_e = this.soundsLoaded) === null || _e === void 0 ? void 0 : _e.callEndedSound) && ((_f = this.call.callEndReason) === null || _f === void 0 ? void 0 : _f.code) === CALL_ENDED_CODE && ((_g = this.call.callEndReason) === null || _g === void 0 ? void 0 : _g.subCode) !== CALL_TRANSFER_SUBCODE) {\n this.playSound(this.soundsLoaded.callEndedSound);\n this.playingSounds = true;\n }\n }\n });\n };\n this.call = call;\n this.callees = callees;\n if (sounds) {\n this.soundsLoaded = this.loadSounds(sounds);\n this.subscribeCallSoundEvents();\n }\n }\n subscribeCallSoundEvents() {\n this.onCallStateChanged();\n }\n unsubscribeAll() {\n var _a, _b;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.off('stateChanged', this.onCallStateChanged);\n if ((_b = this.soundsLoaded) === null || _b === void 0 ? void 0 : _b.callRingingSound) {\n this.soundsLoaded.callRingingSound.pause();\n }\n }\n pauseSounds() {\n var _a, _b, _c;\n if ((_a = this.soundsLoaded) === null || _a === void 0 ? void 0 : _a.callRingingSound) {\n this.soundsLoaded.callRingingSound.pause();\n this.playingSounds = false;\n }\n if ((_b = this.soundsLoaded) === null || _b === void 0 ? void 0 : _b.callEndedSound) {\n this.soundsLoaded.callEndedSound.pause();\n this.playingSounds = false;\n }\n if ((_c = this.soundsLoaded) === null || _c === void 0 ? void 0 : _c.callBusySound) {\n this.soundsLoaded.callBusySound.pause();\n this.playingSounds = false;\n }\n }\n loadSounds(sounds) {\n var _a, _b, _c;\n let callEndedSound;\n if (sounds === null || sounds === void 0 ? void 0 : sounds.callEnded) {\n callEndedSound = new Audio((_a = sounds === null || sounds === void 0 ? void 0 : sounds.callEnded) === null || _a === void 0 ? void 0 : _a.url);\n callEndedSound.preload = 'auto';\n }\n let callRingingSound;\n if (sounds === null || sounds === void 0 ? void 0 : sounds.callRinging) {\n callRingingSound = new Audio((_b = sounds === null || sounds === void 0 ? void 0 : sounds.callRinging) === null || _b === void 0 ? void 0 : _b.url);\n callRingingSound.preload = 'auto';\n }\n let callBusySound;\n if (sounds === null || sounds === void 0 ? void 0 : sounds.callBusy) {\n callBusySound = new Audio((_c = sounds === null || sounds === void 0 ? void 0 : sounds.callBusy) === null || _c === void 0 ? void 0 : _c.url);\n callBusySound.preload = 'auto';\n }\n return {\n callEndedSound,\n callRingingSound,\n callBusySound\n };\n }\n playSound(sound) {\n sound.play().catch(e => {\n console.error(e, 'Failed to play sound, check loader config to make sure it is correct');\n });\n }\n}\n/**\n * Helper function to allow the calling sound subscriber to determine when to play the ringing\n * sound when making an outbound call.\n */\nconst shouldPlayRinging = (call, callees) => {\n if (callees && callees[0] && !isPhoneNumberIdentifier(callees[0]) && (call.state === 'Ringing' || call.state === 'Connecting')) {\n return true;\n }\n else {\n return false;\n }\n};\n//# sourceMappingURL=CallingSoundSubscriber.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 { compositeLogger } from '../../../Logger';\nimport { _isInCall, _isInLobbyOrConnecting } from \"../../../../../calling-component-bindings/src\";\nimport { _createStatefulCallClientInner } from \"../../../../../calling-stateful-client/src\";\nimport { _isTeamsCallAgent } from \"../../../../../calling-stateful-client/src\";\nimport { LocalVideoStream as SDKLocalVideoStream } from '@azure/communication-calling';\nimport { Features } from '@azure/communication-calling';\nimport { EventEmitter } from 'events';\nimport { getCallCompositePage, getLocatorOrTargetCallees, IsCallEndedPage, isCameraOn } from '../utils';\nimport { toFlatCommunicationIdentifier, _toCommunicationIdentifier, _isValidIdentifier } from \"../../../../../acs-ui-common/src\";\nimport { isMicrosoftTeamsUserIdentifier, isMicrosoftTeamsAppIdentifier } from '@azure/communication-common';\nimport { isCommunicationUserIdentifier } from '@azure/communication-common';\nimport { isPhoneNumberIdentifier } from '@azure/communication-common';\nimport { ParticipantSubscriber } from './ParticipantSubcriber';\nimport { DiagnosticsForwarder } from './DiagnosticsForwarder';\nimport { useEffect, useRef, useState } from 'react';\nimport { createHandlers } from './createHandlers';\nimport { createProfileStateModifier } from './OnFetchProfileCallback';\nimport { getBackgroundEffectFromSelectedEffect } from '../utils';\nimport { getSelectedCameraFromAdapterState } from '../utils';\nimport { CallingSoundSubscriber } from './CallingSoundSubscriber';\n/** Context of call, which is a centralized context for all state updates */\nclass CallContext {\n constructor(clientState, isTeamsCall, isTeamsMeeting, isRoomsCall, options, targetCallees) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n this.emitter = new EventEmitter();\n this.state = {\n isLocalPreviewMicrophoneEnabled: false,\n userId: clientState.userId,\n displayName: (_a = clientState.callAgent) === null || _a === void 0 ? void 0 : _a.displayName,\n devices: clientState.deviceManager,\n call: undefined,\n targetCallees: targetCallees,\n page: 'configuration',\n latestErrors: clientState.latestErrors,\n isTeamsCall,\n isTeamsMeeting,\n isRoomsCall,\n alternateCallerId: options === null || options === void 0 ? void 0 : options.alternateCallerId,\n environmentInfo: clientState.environmentInfo,\n videoBackgroundImages: (_b = options === null || options === void 0 ? void 0 : options.videoBackgroundOptions) === null || _b === void 0 ? void 0 : _b.videoBackgroundImages,\n onResolveVideoEffectDependency: (_c = options === null || options === void 0 ? void 0 : options.videoBackgroundOptions) === null || _c === void 0 ? void 0 : _c.onResolveDependency,\n onResolveDeepNoiseSuppressionDependency: (_d = options === null || options === void 0 ? void 0 : options.deepNoiseSuppressionOptions) === null || _d === void 0 ? void 0 : _d.onResolveDependency,\n deepNoiseSuppressionOnByDefault: (_f = (_e = options === null || options === void 0 ? void 0 : options.deepNoiseSuppressionOptions) === null || _e === void 0 ? void 0 : _e.deepNoiseSuppressionOnByDefault) !== null && _f !== void 0 ? _f : true,\n hideDeepNoiseSuppressionButton: (_h = (_g = options === null || options === void 0 ? void 0 : options.deepNoiseSuppressionOptions) === null || _g === void 0 ? void 0 : _g.hideDeepNoiseSuppressionButton) !== null && _h !== void 0 ? _h : false,\n selectedVideoBackgroundEffect: undefined,\n cameraStatus: undefined,\n sounds: options === null || options === void 0 ? void 0 : options.callingSounds,\n reactions: options === null || options === void 0 ? void 0 : options.reactionResources\n };\n this.emitter.setMaxListeners((_j = options === null || options === void 0 ? void 0 : options.maxListeners) !== null && _j !== void 0 ? _j : 50);\n this.bindPublicMethods();\n this.displayNameModifier = (options === null || options === void 0 ? void 0 : options.onFetchProfile) ? createProfileStateModifier(options.onFetchProfile, () => {\n this.setState(this.getState());\n }) : undefined;\n }\n bindPublicMethods() { }\n onStateChange(handler) {\n this.emitter.on('stateChanged', handler);\n }\n offStateChange(handler) {\n this.emitter.off('stateChanged', handler);\n }\n setState(state) {\n this.state = this.displayNameModifier ? this.displayNameModifier(state) : state;\n // This context privately tracks how captions was started to determine if captions is running only in the background.\n // If so we should not show the UI.\n this.state = captionsUIVisibilityModifier(this.state);\n this.emitter.emit('stateChanged', this.state);\n }\n updateCaptionsStartedInBackground(captionsStartedInBackground) {\n var _a;\n const captionsTriggers = (_a = this.state.captionsTriggers) !== null && _a !== void 0 ? _a : {};\n captionsTriggers.captionsStartedInBackground = captionsStartedInBackground;\n this.setState(Object.assign(Object.assign({}, this.state), { captionsTriggers }));\n }\n updateCaptionsStartedWithUI(captionsStartedWithUI) {\n var _a;\n const captionsTriggers = (_a = this.state.captionsTriggers) !== null && _a !== void 0 ? _a : {};\n captionsTriggers.captionsStartedWithUI = captionsStartedWithUI;\n this.setState(Object.assign(Object.assign({}, this.state), { captionsTriggers }));\n }\n getState() {\n return this.state;\n }\n setIsLocalMicrophoneEnabled(isLocalPreviewMicrophoneEnabled) {\n this.setState(Object.assign(Object.assign({}, this.state), { isLocalPreviewMicrophoneEnabled }));\n }\n // This is the key to find current call object in client state\n setCurrentCallId(callId) {\n this.callId = callId;\n }\n setTargetCallee(targetCallees) {\n this.setState(Object.assign(Object.assign({}, this.state), { targetCallees }));\n }\n onCallEnded(handler) {\n this.emitter.on('callEnded', handler);\n }\n offCallEnded(handler) {\n this.emitter.off('callEnded', handler);\n }\n updateClientState(clientState) {\n var _a;\n let call = this.callId ? clientState.calls[this.callId] : undefined;\n const latestEndedCall = clientState.callsEnded ? findLatestEndedCall(clientState.callsEnded) : undefined;\n // As the state is transitioning to a new state, trigger appropriate callback events.\n const oldPage = this.state.page;\n const latestAcceptedTransfer = (call === null || call === void 0 ? void 0 : call.transfer.acceptedTransfers) ? findLatestAcceptedTransfer(call.transfer.acceptedTransfers) : undefined;\n const transferCall = latestAcceptedTransfer ? clientState.calls[latestAcceptedTransfer.callId] : undefined;\n const newPage = getCallCompositePage(call, latestEndedCall, transferCall);\n if (!IsCallEndedPage(oldPage) && IsCallEndedPage(newPage)) {\n this.emitter.emit('callEnded', {\n callId: this.callId\n });\n // Reset the callId to undefined as the call has ended.\n this.setCurrentCallId(undefined);\n // Make sure that the call is set to undefined in the state.\n call = undefined;\n }\n if (this.state.page) {\n this.setState(Object.assign(Object.assign({}, this.state), { userId: clientState.userId, displayName: (_a = clientState.callAgent) === null || _a === void 0 ? void 0 : _a.displayName, call, page: newPage, endedCall: latestEndedCall, devices: clientState.deviceManager, latestErrors: clientState.latestErrors, cameraStatus: (call === null || call === void 0 ? void 0 : call.localVideoStreams.find(s => s.mediaStreamType === 'Video')) || clientState.deviceManager.unparentedViews.find(s => s.mediaStreamType === 'Video') ? 'On' : 'Off', acceptedTransferCallState: transferCall }));\n }\n }\n setBackroundPickerImages(videoBackgroundImages) {\n this.setState(Object.assign(Object.assign({}, this.state), { videoBackgroundImages }));\n }\n setSelectedVideoBackgroundEffect(selectedVideoBackgroundEffect) {\n this.setState(Object.assign(Object.assign({}, this.state), { selectedVideoBackgroundEffect }));\n }\n setAcceptedTransferCall(call) {\n this.setState(Object.assign(Object.assign({}, this.state), { acceptedTransferCallState: call }));\n }\n}\nconst findLatestEndedCall = (calls) => {\n var _a, _b, _c, _d;\n const callStates = Object.values(calls);\n if (callStates.length === 0) {\n return undefined;\n }\n let latestCall = callStates[0];\n for (const call of callStates.slice(1)) {\n if (((_b = (_a = call.endTime) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : 0) > ((_d = (_c = latestCall === null || latestCall === void 0 ? void 0 : latestCall.endTime) === null || _c === void 0 ? void 0 : _c.getTime()) !== null && _d !== void 0 ? _d : 0)) {\n latestCall = call;\n }\n }\n return latestCall;\n};\nconst findLatestAcceptedTransfer = (acceptedTransfers) => {\n var _a, _b, _c, _d;\n const acceptedTransferValues = Object.values(acceptedTransfers);\n if (acceptedTransferValues.length === 0) {\n return undefined;\n }\n let latestAcceptedTransfer = acceptedTransferValues[0];\n for (const acceptedTransfer of acceptedTransferValues.slice(1)) {\n if (((_b = (_a = acceptedTransfer.timestamp) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : 0) > ((_d = (_c = latestAcceptedTransfer === null || latestAcceptedTransfer === void 0 ? void 0 : latestAcceptedTransfer.timestamp) === null || _c === void 0 ? void 0 : _c.getTime()) !== null && _d !== void 0 ? _d : 0)) {\n latestAcceptedTransfer = acceptedTransfer;\n }\n }\n return latestAcceptedTransfer;\n};\n/**\n * @private\n */\nexport class AzureCommunicationCallAdapter {\n get call() {\n return this._call;\n }\n set call(newCall) {\n this.resetDiagnosticsForwarder(newCall);\n this._call = newCall;\n }\n constructor(callClient, locatorOrTargetCalless, callAgent, deviceManager, options) {\n var _a, _b, _c;\n this.participantSubscribers = new Map();\n this.emitter = new EventEmitter();\n this.isMyMutedChanged = () => {\n var _a;\n this.emitter.emit('isMutedChanged', {\n participantId: this.getState().userId,\n isMuted: (_a = this.call) === null || _a === void 0 ? void 0 : _a.isMuted\n });\n };\n this.bindPublicMethods();\n this.callClient = callClient;\n this.callAgent = callAgent;\n this.targetCallees = getLocatorOrTargetCallees(locatorOrTargetCalless) === true ? locatorOrTargetCalless : undefined;\n this.locator = getLocatorOrTargetCallees(locatorOrTargetCalless) === false ? locatorOrTargetCalless : undefined;\n this.deviceManager = deviceManager;\n const isTeamsMeeting = this.locator ? 'meetingLink' in this.locator || 'meetingId' in this.locator : false;\n let isTeamsCall;\n (_a = this.targetCallees) === null || _a === void 0 ? void 0 : _a.forEach(callee => {\n if (isMicrosoftTeamsUserIdentifier(callee) || isMicrosoftTeamsAppIdentifier(callee)) {\n isTeamsCall = true;\n }\n });\n const isRoomsCall = this.locator ? 'roomId' in this.locator : false;\n this.onResolveVideoBackgroundEffectsDependency = (_b = options === null || options === void 0 ? void 0 : options.videoBackgroundOptions) === null || _b === void 0 ? void 0 : _b.onResolveDependency;\n this.onResolveDeepNoiseSuppressionDependency = (_c = options === null || options === void 0 ? void 0 : options.deepNoiseSuppressionOptions) === null || _c === void 0 ? void 0 : _c.onResolveDependency;\n this.context = new CallContext(callClient.getState(), !!isTeamsCall, isTeamsMeeting, isRoomsCall, options, this.targetCallees);\n this.context.onCallEnded(endCallData => this.emitter.emit('callEnded', endCallData));\n const onStateChange = (clientState) => {\n var _a, _b, _c, _d, _e;\n // unsubscribe when the instance gets disposed\n if (!this) {\n callClient.offStateChange(onStateChange);\n return;\n }\n // `updateClientState` searches for the current call from all the calls in the state using a cached `call.id`\n // from the call object. `call.id` can change during a call. We must update the cached `call.id` before\n // calling `updateClientState` so that we find the correct state object for the call even when `call.id`\n // has changed.\n // https://github.com/Azure/communication-ui-library/pull/1820\n if ((_a = this.call) === null || _a === void 0 ? void 0 : _a.id) {\n this.context.setCurrentCallId(this.call.id);\n }\n // if the call hits the connected state we want to pause all calling sounds if playing.\n if (((_b = this.call) === null || _b === void 0 ? void 0 : _b.state) === 'Connected' && ((_c = this.callingSoundSubscriber) === null || _c === void 0 ? void 0 : _c.playingSounds)) {\n this.callingSoundSubscriber.pauseSounds();\n }\n // If the call connects we need to clean up any previous unparentedViews\n if ((((_d = this.call) === null || _d === void 0 ? void 0 : _d.state) === 'InLobby' || ((_e = this.call) === null || _e === void 0 ? void 0 : _e.state) === 'Connected') && this.callClient.getState().deviceManager.unparentedViews.length > 0) {\n this.callClient.getState().deviceManager.unparentedViews.forEach(view => {\n this.callClient.disposeView(undefined, undefined, view);\n });\n }\n this.context.updateClientState(clientState);\n };\n this.handlers = createHandlers(callClient, callAgent, deviceManager, undefined, {\n onResolveVideoBackgroundEffectsDependency: this.onResolveVideoBackgroundEffectsDependency,\n onResolveDeepNoiseSuppressionDependency: this.onResolveDeepNoiseSuppressionDependency\n });\n this.onClientStateChange = onStateChange;\n this.subscribeDeviceManagerEvents();\n this.callClient.onStateChange(onStateChange);\n if (this.callAgent.kind === 'CallAgent') {\n const onCallsUpdated = (args) => {\n var _a;\n if (!((_a = this.call) === null || _a === void 0 ? void 0 : _a.id)) {\n return;\n }\n const removedCall = args.removed.find(call => { var _a; return call.id === ((_a = this.call) === null || _a === void 0 ? void 0 : _a.id); });\n if (!removedCall) {\n return;\n }\n const removedCallState = this.callClient.getState().callsEnded[removedCall.id];\n if (!removedCallState) {\n return;\n }\n const latestAcceptedTransfer = findLatestAcceptedTransfer(removedCallState.transfer.acceptedTransfers);\n const _callAgent = callAgent;\n const transferCall = _callAgent.calls.find((call) => call.id === (latestAcceptedTransfer === null || latestAcceptedTransfer === void 0 ? void 0 : latestAcceptedTransfer.callId));\n if (!transferCall) {\n return;\n }\n this.processNewCall(transferCall);\n };\n this.callAgent.on('callsUpdated', onCallsUpdated);\n }\n if (this.callAgent.kind === 'TeamsCallAgent') {\n const onTeamsCallsUpdated = (args) => {\n var _a;\n if (!((_a = this.call) === null || _a === void 0 ? void 0 : _a.id)) {\n return;\n }\n const removedCall = args.removed.find(call => { var _a; return call.id === ((_a = this.call) === null || _a === void 0 ? void 0 : _a.id); });\n if (!removedCall) {\n return;\n }\n const removedCallState = this.callClient.getState().callsEnded[removedCall.id];\n if (!removedCallState) {\n return;\n }\n const latestAcceptedTransfer = findLatestAcceptedTransfer(removedCallState.transfer.acceptedTransfers);\n const _callAgent = callAgent;\n const transferCall = _callAgent.calls.find((call) => call.id === (latestAcceptedTransfer === null || latestAcceptedTransfer === void 0 ? void 0 : latestAcceptedTransfer.callId));\n if (!transferCall) {\n return;\n }\n this.processNewCall(transferCall);\n };\n this.callAgent.on('callsUpdated', onTeamsCallsUpdated);\n }\n }\n // TODO: update this to include the 'selectedCameraChanged' when calling adds it to the device manager\n subscribeDeviceManagerEvents() {\n this.deviceManager.on('selectedMicrophoneChanged', () => {\n this.emitter.emit('selectedMicrophoneChanged');\n });\n this.deviceManager.on('selectedSpeakerChanged', () => {\n this.emitter.emit('selectedSpeakerChanged');\n });\n }\n bindPublicMethods() {\n this.onStateChange.bind(this);\n this.offStateChange.bind(this);\n this.getState.bind(this);\n this.dispose.bind(this);\n this.joinCall.bind(this);\n this.leaveCall.bind(this);\n this.setCamera.bind(this);\n this.setMicrophone.bind(this);\n this.setSpeaker.bind(this);\n this.askDevicePermission.bind(this);\n this.queryCameras.bind(this);\n this.queryMicrophones.bind(this);\n this.querySpeakers.bind(this);\n this.startCamera.bind(this);\n this.stopCamera.bind(this);\n this.mute.bind(this);\n this.unmute.bind(this);\n this.startCall.bind(this);\n this.startScreenShare.bind(this);\n this.stopScreenShare.bind(this);\n this.raiseHand.bind(this);\n this.onReactionClick.bind(this);\n this.lowerHand.bind(this);\n this.removeParticipant.bind(this);\n this.createStreamView.bind(this);\n this.disposeStreamView.bind(this);\n this.disposeScreenShareStreamView.bind(this);\n this.disposeRemoteVideoStreamView.bind(this);\n this.disposeLocalVideoStreamView.bind(this);\n this.on.bind(this);\n this.off.bind(this);\n this.processNewCall.bind(this);\n this.addParticipant.bind(this);\n this.holdCall.bind(this);\n this.resumeCall.bind(this);\n this.sendDtmfTone.bind(this);\n this.startCaptions.bind(this);\n this.stopCaptions.bind(this);\n this.setSpokenLanguage.bind(this);\n this.setCaptionLanguage.bind(this);\n this.startVideoBackgroundEffect.bind(this);\n this.stopVideoBackgroundEffects.bind(this);\n this.updateBackgroundPickerImages.bind(this);\n this.startNoiseSuppressionEffect.bind(this);\n this.stopNoiseSuppressionEffect.bind(this);\n this.submitSurvey.bind(this);\n this.startSpotlight.bind(this);\n this.stopSpotlight.bind(this);\n this.stopAllSpotlight.bind(this);\n this.muteParticipant.bind(this);\n this.muteAllRemoteParticipants.bind(this);\n }\n dispose() {\n this.resetDiagnosticsForwarder();\n this.callClient.offStateChange(this.onClientStateChange);\n this.callAgent.dispose();\n }\n queryCameras() {\n return __awaiter(this, void 0, void 0, function* () {\n const startTime = new Date().getTime();\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n const cameras = yield this.deviceManager.getCameras();\n const endTime = new Date().getTime();\n compositeLogger.info('time to query cameras', endTime - startTime, 'ms');\n return cameras;\n }));\n });\n }\n queryMicrophones() {\n return __awaiter(this, void 0, void 0, function* () {\n const startTime = new Date().getTime();\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n const microphones = yield this.deviceManager.getMicrophones();\n const endTime = new Date().getTime();\n compositeLogger.info('time to query microphones', endTime - startTime, 'ms');\n return microphones;\n }));\n });\n }\n querySpeakers() {\n return __awaiter(this, void 0, void 0, function* () {\n const startTime = new Date().getTime();\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n const speakers = (yield this.deviceManager.isSpeakerSelectionAvailable) ? this.deviceManager.getSpeakers() : [];\n const endTime = new Date().getTime();\n compositeLogger.info('time to query speakers', endTime - startTime, 'ms');\n return speakers;\n }));\n });\n }\n askDevicePermission(constrain) {\n return __awaiter(this, void 0, void 0, function* () {\n const startTime = new Date().getTime();\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n const result = yield this.deviceManager.askDevicePermission(constrain);\n const endTime = new Date().getTime();\n compositeLogger.info('time to query askDevicePermissions', endTime - startTime, 'ms');\n return result;\n }));\n });\n }\n joinCall(options) {\n var _a, _b;\n if (_isInCall((_b = (_a = this.getState().call) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : 'None')) {\n throw new Error('You are already in the call!');\n }\n else if (this.locator === undefined) {\n throw new Error('Locator is not defined!');\n }\n return this.teeErrorToEventEmitter(() => {\n // Default to keeping camera/mic on if no override argument specified\n let shouldCameraBeOnInCall = this.getState().cameraStatus === 'On';\n let shouldMicrophoneBeOnInCall = this.getState().isLocalPreviewMicrophoneEnabled;\n // Apply override arguments\n if (typeof options === 'boolean') {\n // Deprecated joinCall API (boolen)\n shouldMicrophoneBeOnInCall = options;\n }\n else if (typeof options === 'object') {\n // Options bag API\n if (options.microphoneOn && options.microphoneOn !== 'keep') {\n shouldMicrophoneBeOnInCall = options.microphoneOn;\n }\n if (options.cameraOn && options.cameraOn !== 'keep') {\n shouldCameraBeOnInCall = options.cameraOn;\n }\n }\n const audioOptions = {\n muted: !shouldMicrophoneBeOnInCall\n };\n const selectedCamera = getSelectedCameraFromAdapterState(this.getState());\n const videoOptions = selectedCamera && shouldCameraBeOnInCall ? {\n localVideoStreams: [new SDKLocalVideoStream(selectedCamera)]\n } : {};\n const call = this._joinCall(audioOptions, videoOptions);\n this.processNewCall(call);\n return call;\n });\n }\n _joinCall(audioOptions, videoOptions) {\n const isTeamsMeeting = this.locator ? 'meetingLink' in this.locator : false;\n const isTeamsMeetingId = this.locator ? 'meetingId' in this.locator : false;\n const isRoomsCall = this.locator ? 'roomId' in this.locator : false;\n if (_isTeamsCallAgent(this.callAgent)) {\n if (isTeamsMeeting) {\n return this.callAgent.join(this.locator, {\n audioOptions,\n videoOptions\n });\n }\n if (isTeamsMeetingId) {\n return this.callAgent.join(this.locator, {\n audioOptions,\n videoOptions\n });\n }\n throw new Error('Locator not supported by TeamsCallAgent');\n }\n if (isTeamsMeeting) {\n return this.callAgent.join(this.locator, {\n audioOptions,\n videoOptions\n });\n }\n if (isTeamsMeetingId) {\n return this.callAgent.join(this.locator, {\n audioOptions,\n videoOptions\n });\n }\n if (isRoomsCall) {\n return this.callAgent.join(this.locator, {\n audioOptions,\n videoOptions\n });\n }\n return this.callAgent.join(this.locator, {\n audioOptions,\n videoOptions\n });\n }\n createStreamView(remoteUserId, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (remoteUserId === undefined) {\n return yield this.handlers.onCreateLocalStreamView(options);\n }\n else {\n return yield this.handlers.onCreateRemoteStreamView(remoteUserId, options);\n }\n });\n }\n disposeStreamView(remoteUserId) {\n return __awaiter(this, void 0, void 0, function* () {\n if (remoteUserId === undefined) {\n yield this.handlers.onDisposeLocalStreamView();\n }\n else {\n yield this.handlers.onDisposeRemoteStreamView(remoteUserId);\n }\n });\n }\n disposeScreenShareStreamView(remoteUserId) {\n return __awaiter(this, void 0, void 0, function* () {\n if (remoteUserId !== '') {\n yield this.handlers.onDisposeRemoteScreenShareStreamView(remoteUserId);\n }\n else {\n yield this.handlers.onDisposeLocalScreenShareStreamView();\n }\n });\n }\n disposeRemoteVideoStreamView(remoteUserId) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onDisposeRemoteVideoStreamView(remoteUserId);\n });\n }\n disposeLocalVideoStreamView() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onDisposeLocalStreamView();\n });\n }\n leaveCall(forEveryone) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.getState().page === 'transferring') {\n const transferCall = this.callAgent.calls.filter(call => { var _a; return call.id === ((_a = this.getState().acceptedTransferCallState) === null || _a === void 0 ? void 0 : _a.id); })[0];\n transferCall === null || transferCall === void 0 ? void 0 : transferCall.hangUp();\n }\n yield this.handlers.onHangUp(forEveryone);\n this.unsubscribeCallEvents();\n this.handlers = createHandlers(this.callClient, this.callAgent, this.deviceManager, this.call, {\n onResolveVideoBackgroundEffectsDependency: this.onResolveVideoBackgroundEffectsDependency,\n onResolveDeepNoiseSuppressionDependency: this.onResolveDeepNoiseSuppressionDependency\n });\n // We set the adapter.call object to undefined immediately when a call is ended.\n // We do not set the context.callId to undefined because it is a part of the immutable data flow loop.\n this.call = undefined;\n this.stopCamera();\n this.mute();\n });\n }\n setCamera(device, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onSelectCamera(device, options);\n }));\n });\n }\n setMicrophone(device) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onSelectMicrophone(device);\n }));\n });\n }\n setSpeaker(device) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onSelectSpeaker(device);\n }));\n });\n }\n startCamera(options) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n if (!isCameraOn(this.getState())) {\n // First kick off the effect on the local device before starting the camera in the call.\n // This prevents the effect not being applied for a brief moment when the camera is started.\n {\n const selectedEffect = this.getState().selectedVideoBackgroundEffect;\n const selectedCamera = getSelectedCameraFromAdapterState(this.getState());\n if (selectedEffect && selectedCamera && this.onResolveVideoBackgroundEffectsDependency) {\n const stream = new SDKLocalVideoStream(selectedCamera);\n const effect = getBackgroundEffectFromSelectedEffect(selectedEffect, yield this.onResolveVideoBackgroundEffectsDependency());\n if (effect) {\n yield stream.feature(Features.VideoEffects).startEffects(effect);\n }\n else {\n yield stream.feature(Features.VideoEffects).stopEffects();\n }\n }\n }\n yield this.handlers.onToggleCamera(options);\n }\n }));\n });\n }\n stopCamera() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n if (isCameraOn(this.getState())) {\n yield this.handlers.onToggleCamera();\n }\n }));\n });\n }\n mute() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n this.context.setIsLocalMicrophoneEnabled(false);\n if (_isInCall((_a = this.call) === null || _a === void 0 ? void 0 : _a.state) && !((_b = this.call) === null || _b === void 0 ? void 0 : _b.isMuted)) {\n yield this.handlers.onToggleMicrophone();\n }\n }));\n });\n }\n unmute() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c;\n this.context.setIsLocalMicrophoneEnabled(true);\n if ((_isInCall((_a = this.call) === null || _a === void 0 ? void 0 : _a.state) || _isInLobbyOrConnecting((_b = this.call) === null || _b === void 0 ? void 0 : _b.state)) && ((_c = this.call) === null || _c === void 0 ? void 0 : _c.isMuted)) {\n yield this.handlers.onToggleMicrophone();\n }\n }));\n });\n }\n startScreenShare() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n var _a;\n if (!((_a = this.call) === null || _a === void 0 ? void 0 : _a.isScreenSharingOn)) {\n yield this.handlers.onToggleScreenShare();\n }\n }));\n });\n }\n stopScreenShare() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n var _a;\n if ((_a = this.call) === null || _a === void 0 ? void 0 : _a.isScreenSharingOn) {\n yield this.handlers.onToggleScreenShare();\n }\n }));\n });\n }\n raiseHand() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onToggleRaiseHand();\n }));\n });\n }\n lowerHand() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onToggleRaiseHand();\n }));\n });\n }\n onReactionClick(reaction) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.asyncTeeErrorToEventEmitter(() => __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onReactionClick(reaction);\n }));\n });\n }\n startVideoBackgroundEffect(videoBackgroundEffect) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.isBlurEffect(videoBackgroundEffect)) {\n const blurConfig = videoBackgroundEffect;\n yield this.handlers.onBlurVideoBackground(blurConfig);\n }\n else if (this.isReplacementEffect(videoBackgroundEffect)) {\n const replaceConfig = videoBackgroundEffect;\n yield this.handlers.onReplaceVideoBackground(replaceConfig);\n }\n });\n }\n stopVideoBackgroundEffects() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onRemoveVideoBackgroundEffects();\n });\n }\n updateBackgroundPickerImages(backgroundImages) {\n this.context.setBackroundPickerImages(backgroundImages);\n }\n updateSelectedVideoBackgroundEffect(selectedVideoBackground) {\n this.context.setSelectedVideoBackgroundEffect(selectedVideoBackground);\n }\n startNoiseSuppressionEffect() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onStartNoiseSuppressionEffect();\n });\n }\n stopNoiseSuppressionEffect() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.handlers.onStopNoiseSuppressionEffect();\n });\n }\n startCall(participants, options) {\n var _a, _b;\n if (_isInCall((_b = (_a = this.getState().call) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : 'None')) {\n throw new Error('You are already in the call.');\n }\n const isCameraOn = this.getState().cameraStatus === 'On';\n const selectedCamera = getSelectedCameraFromAdapterState(this.getState());\n /* we only configure the video options here since the Calling SDK always unmutes the participant when starting a call */\n const startCallVideoOptions = selectedCamera ? {\n videoOptions: isCameraOn ? {\n localVideoStreams: [new SDKLocalVideoStream(selectedCamera)]\n } : undefined\n } : {};\n const combinedCallOptions = Object.assign(Object.assign({}, startCallVideoOptions), options);\n const idsToAdd = participants.map(participant => {\n const backendId = _toCommunicationIdentifier(participant);\n if ('phoneNumber' in backendId) {\n if ((options === null || options === void 0 ? void 0 : options.alternateCallerId) === undefined) {\n throw new Error('Unable to start call, PSTN user present with no alternateCallerId.');\n }\n }\n return backendId;\n });\n this.context.setTargetCallee(idsToAdd);\n const call = this.handlers.onStartCall(idsToAdd, combinedCallOptions);\n if (!call) {\n throw new Error('Unable to start call.');\n }\n this.processNewCall(call);\n return call;\n }\n processNewCall(call) {\n this.call = call;\n this.context.setCurrentCallId(call.id);\n // Resync state after callId is set\n this.context.updateClientState(this.callClient.getState());\n this.handlers = createHandlers(this.callClient, this.callAgent, this.deviceManager, this.call, {\n onResolveVideoBackgroundEffectsDependency: this.onResolveVideoBackgroundEffectsDependency,\n onResolveDeepNoiseSuppressionDependency: this.onResolveDeepNoiseSuppressionDependency\n });\n this.subscribeCallEvents();\n }\n isBlurEffect(effect) {\n return effect.effectName === 'blur';\n }\n isReplacementEffect(effect) {\n return effect.effectName === 'replacement';\n }\n removeParticipant(userId) {\n return __awaiter(this, void 0, void 0, function* () {\n let participant = userId;\n participant = _toCommunicationIdentifier(userId);\n this.handlers.onRemoveParticipant(participant);\n });\n }\n addParticipant(participant, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (isPhoneNumberIdentifier(participant) && options) {\n this.handlers.onAddParticipant(participant, options);\n }\n else if (isCommunicationUserIdentifier(participant)) {\n this.handlers.onAddParticipant(participant);\n }\n });\n }\n holdCall() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n if (((_a = this.call) === null || _a === void 0 ? void 0 : _a.state) !== 'LocalHold') {\n if ((_b = this.call) === null || _b === void 0 ? void 0 : _b.isLocalVideoStarted) {\n this.stopCamera().then(() => {\n this.handlers.onToggleHold();\n });\n }\n else {\n this.handlers.onToggleHold();\n }\n }\n });\n }\n resumeCall() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n if (((_a = this.call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold') {\n this.handlers.onToggleHold().then(() => {\n var _a;\n if (((_a = this.call) === null || _a === void 0 ? void 0 : _a.feature(Features.Capabilities).capabilities.turnVideoOn.isPresent) === false) {\n this.stopCamera();\n }\n });\n }\n });\n }\n sendDtmfTone(dtmfTone) {\n return __awaiter(this, void 0, void 0, function* () {\n this.handlers.onSendDtmfTone(dtmfTone);\n });\n }\n startCaptions(options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (options === null || options === void 0 ? void 0 : options.startInBackground) {\n this.context.updateCaptionsStartedInBackground(true);\n }\n else {\n this.context.updateCaptionsStartedWithUI(true);\n }\n this.handlers.onStartCaptions(options);\n });\n }\n stopCaptions(options) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n if (options === null || options === void 0 ? void 0 : options.stopInBackground) {\n this.context.updateCaptionsStartedInBackground(false);\n }\n this.context.updateCaptionsStartedWithUI(false);\n // Only stop captions if they are not still running in the background\n if (!((_a = this.context.getState().captionsTriggers) === null || _a === void 0 ? void 0 : _a.captionsStartedInBackground)) {\n this.handlers.onStopCaptions();\n }\n });\n }\n setCaptionLanguage(language) {\n return __awaiter(this, void 0, void 0, function* () {\n this.handlers.onSetCaptionLanguage(language);\n });\n }\n setSpokenLanguage(language) {\n return __awaiter(this, void 0, void 0, function* () {\n this.handlers.onSetSpokenLanguage(language);\n });\n }\n submitSurvey(survey) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.handlers.onSubmitSurvey(survey);\n });\n }\n muteParticipant(userId) {\n return __awaiter(this, void 0, void 0, function* () {\n this.handlers.onMuteParticipant(userId);\n });\n }\n muteAllRemoteParticipants() {\n return __awaiter(this, void 0, void 0, function* () {\n this.handlers.onMuteAllRemoteParticipants();\n });\n }\n startSpotlight(userIds) {\n return __awaiter(this, void 0, void 0, function* () {\n this.handlers.onStartSpotlight(userIds);\n });\n }\n stopSpotlight(userIds) {\n return __awaiter(this, void 0, void 0, function* () {\n this.handlers.onStopSpotlight(userIds);\n });\n }\n stopAllSpotlight() {\n return __awaiter(this, void 0, void 0, function* () {\n this.handlers.onStopAllSpotlight();\n });\n }\n getState() {\n return this.context.getState();\n }\n onStateChange(handler) {\n this.context.onStateChange(handler);\n }\n offStateChange(handler) {\n this.context.offStateChange(handler);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on(event, listener) {\n this.emitter.on(event, listener);\n }\n subscribeToCaptionEvents() {\n var _a;\n const captionsFeature = (_a = this.call) === null || _a === void 0 ? void 0 : _a.feature(Features.Captions);\n if ((captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.captions.kind) === 'TeamsCaptions' && (this.context.getState().isTeamsCall || this.context.getState().isTeamsMeeting)) {\n const teamsCaptionsFeature = captionsFeature.captions;\n teamsCaptionsFeature.on('CaptionsReceived', this.teamsCaptionsReceived.bind(this));\n teamsCaptionsFeature.on('CaptionsActiveChanged', this.isCaptionsActiveChanged.bind(this));\n teamsCaptionsFeature.on('CaptionLanguageChanged', this.isCaptionLanguageChanged.bind(this));\n teamsCaptionsFeature.on('SpokenLanguageChanged', this.isSpokenLanguageChanged.bind(this));\n }\n else {\n const acsCaptionsFeature = captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.captions;\n acsCaptionsFeature.on('CaptionsReceived', this.captionsReceived.bind(this));\n acsCaptionsFeature.on('CaptionsActiveChanged', this.isCaptionsActiveChanged.bind(this));\n acsCaptionsFeature.on('SpokenLanguageChanged', this.isSpokenLanguageChanged.bind(this));\n captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.on('CaptionsKindChanged', this.captionsKindChanged.bind(this));\n }\n }\n unsubscribeFromCaptionEvents() {\n var _a;\n const captionsFeature = (_a = this.call) === null || _a === void 0 ? void 0 : _a.feature(Features.Captions);\n if ((captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.captions.kind) === 'TeamsCaptions' && (this.context.getState().isTeamsCall || this.context.getState().isTeamsMeeting)) {\n const teamsCaptionsFeature = captionsFeature.captions;\n teamsCaptionsFeature.off('CaptionsReceived', this.teamsCaptionsReceived.bind(this));\n teamsCaptionsFeature.off('CaptionsActiveChanged', this.isCaptionsActiveChanged.bind(this));\n teamsCaptionsFeature.off('CaptionLanguageChanged', this.isCaptionLanguageChanged.bind(this));\n teamsCaptionsFeature.off('SpokenLanguageChanged', this.isSpokenLanguageChanged.bind(this));\n }\n else {\n const acsCaptionsFeature = captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.captions;\n acsCaptionsFeature.off('CaptionsReceived', this.captionsReceived.bind(this));\n acsCaptionsFeature.off('CaptionsActiveChanged', this.isCaptionsActiveChanged.bind(this));\n acsCaptionsFeature.off('SpokenLanguageChanged', this.isSpokenLanguageChanged.bind(this));\n captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.off('CaptionsKindChanged', this.captionsKindChanged.bind(this));\n }\n }\n subscribeCallEvents() {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n if (this.call) {\n this.callingSoundSubscriber = new CallingSoundSubscriber(this.call, this.getState().targetCallees, this.getState().sounds);\n }\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.on('remoteParticipantsUpdated', this.onRemoteParticipantsUpdated.bind(this));\n (_b = this.call) === null || _b === void 0 ? void 0 : _b.on('isMutedChanged', this.isMyMutedChanged.bind(this));\n (_c = this.call) === null || _c === void 0 ? void 0 : _c.on('isScreenSharingOnChanged', this.isScreenSharingOnChanged.bind(this));\n (_d = this.call) === null || _d === void 0 ? void 0 : _d.on('idChanged', this.callIdChanged.bind(this));\n (_e = this.call) === null || _e === void 0 ? void 0 : _e.on('roleChanged', this.roleChanged.bind(this));\n this.subscribeToCaptionEvents();\n (_f = this.call) === null || _f === void 0 ? void 0 : _f.feature(Features.Transfer).on('transferAccepted', this.transferAccepted.bind(this));\n (_g = this.call) === null || _g === void 0 ? void 0 : _g.feature(Features.Capabilities).on('capabilitiesChanged', this.capabilitiesChanged.bind(this));\n (_h = this.call) === null || _h === void 0 ? void 0 : _h.feature(Features.Spotlight).on('spotlightChanged', this.spotlightChanged.bind(this));\n }\n unsubscribeCallEvents() {\n var _a, _b, _c, _d, _e;\n for (const subscriber of this.participantSubscribers.values()) {\n subscriber.unsubscribeAll();\n }\n this.participantSubscribers.clear();\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.off('remoteParticipantsUpdated', this.onRemoteParticipantsUpdated.bind(this));\n (_b = this.call) === null || _b === void 0 ? void 0 : _b.off('isMutedChanged', this.isMyMutedChanged.bind(this));\n (_c = this.call) === null || _c === void 0 ? void 0 : _c.off('isScreenSharingOnChanged', this.isScreenSharingOnChanged.bind(this));\n (_d = this.call) === null || _d === void 0 ? void 0 : _d.off('idChanged', this.callIdChanged.bind(this));\n (_e = this.call) === null || _e === void 0 ? void 0 : _e.off('roleChanged', this.roleChanged.bind(this));\n this.unsubscribeFromCaptionEvents();\n if (this.callingSoundSubscriber) {\n this.callingSoundSubscriber.unsubscribeAll();\n }\n }\n captionsKindChanged() {\n var _a;\n const captionsFeature = (_a = this.call) === null || _a === void 0 ? void 0 : _a.feature(Features.Captions);\n const teamsCaptionsFeature = captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.captions;\n teamsCaptionsFeature.on('CaptionsReceived', this.teamsCaptionsReceived.bind(this));\n teamsCaptionsFeature.on('CaptionsActiveChanged', this.isCaptionsActiveChanged.bind(this));\n teamsCaptionsFeature.on('CaptionLanguageChanged', this.isCaptionLanguageChanged.bind(this));\n teamsCaptionsFeature.on('SpokenLanguageChanged', this.isSpokenLanguageChanged.bind(this));\n }\n onRemoteParticipantsUpdated({ added, removed }) {\n if (added && added.length > 0) {\n this.emitter.emit('participantsJoined', {\n joined: added\n });\n }\n if (removed && removed.length > 0) {\n this.emitter.emit('participantsLeft', {\n removed: removed\n });\n }\n added.forEach(participant => {\n this.participantSubscribers.set(toFlatCommunicationIdentifier(participant.identifier), new ParticipantSubscriber(participant, this.emitter));\n });\n removed.forEach(participant => {\n const subscriber = this.participantSubscribers.get(toFlatCommunicationIdentifier(participant.identifier));\n subscriber && subscriber.unsubscribeAll();\n this.participantSubscribers.delete(toFlatCommunicationIdentifier(participant.identifier));\n });\n }\n isScreenSharingOnChanged() {\n var _a;\n this.emitter.emit('isLocalScreenSharingActiveChanged', {\n isScreenSharingOn: (_a = this.call) === null || _a === void 0 ? void 0 : _a.isScreenSharingOn\n });\n }\n teamsCaptionsReceived(captionsInfo) {\n this.emitter.emit('captionsReceived', {\n captionsInfo\n });\n }\n captionsReceived(captionsInfo) {\n this.emitter.emit('captionsReceived', {\n captionsInfo\n });\n }\n isCaptionsActiveChanged() {\n var _a;\n const captionsFeature = (_a = this.call) === null || _a === void 0 ? void 0 : _a.feature(Features.Captions).captions;\n this.emitter.emit('isCaptionsActiveChanged', {\n isActive: captionsFeature.isCaptionsFeatureActive\n });\n }\n isSpokenLanguageChanged() {\n var _a;\n const captionsFeature = (_a = this.call) === null || _a === void 0 ? void 0 : _a.feature(Features.Captions).captions;\n this.emitter.emit('isSpokenLanguageChanged', {\n activeSpokenLanguage: captionsFeature.activeSpokenLanguage\n });\n }\n isCaptionLanguageChanged() {\n var _a;\n const captionsFeature = (_a = this.call) === null || _a === void 0 ? void 0 : _a.feature(Features.Captions).captions;\n this.emitter.emit('isCaptionLanguageChanged', {\n activeCaptionLanguage: captionsFeature.activeCaptionLanguage\n });\n }\n transferAccepted(args) {\n this.emitter.emit('transferAccepted', args);\n }\n capabilitiesChanged(data) {\n var _a, _b, _c, _d, _e;\n if (((_a = data.newValue.turnVideoOn) === null || _a === void 0 ? void 0 : _a.isPresent) === false) {\n // Only stop camera when the call state is not on hold. The Calling SDK does not allow us to stop camera when\n // the call state is on hold.\n if (((_b = this.call) === null || _b === void 0 ? void 0 : _b.state) !== 'LocalHold' && ((_c = this.call) === null || _c === void 0 ? void 0 : _c.state) !== 'RemoteHold') {\n this.stopCamera();\n }\n this.disposeLocalVideoStreamView();\n }\n if (((_d = data.newValue.unmuteMic) === null || _d === void 0 ? void 0 : _d.isPresent) === false) {\n this.mute();\n }\n if (((_e = data.newValue.shareScreen) === null || _e === void 0 ? void 0 : _e.isPresent) === false) {\n this.stopScreenShare();\n }\n this.emitter.emit('capabilitiesChanged', data);\n }\n roleChanged() {\n var _a, _b;\n if (((_a = this.call) === null || _a === void 0 ? void 0 : _a.role) === 'Consumer') {\n (_b = this.call) === null || _b === void 0 ? void 0 : _b.feature(Features.RaiseHand).lowerHand();\n }\n this.emitter.emit('roleChanged');\n }\n spotlightChanged(args) {\n this.emitter.emit('spotlightChanged', args);\n }\n callIdChanged() {\n var _a;\n ((_a = this.call) === null || _a === void 0 ? void 0 : _a.id) && this.emitter.emit('callIdChanged', {\n callId: this.call.id\n });\n }\n resetDiagnosticsForwarder(newCall) {\n if (this.diagnosticsForwarder) {\n this.diagnosticsForwarder.unsubscribe();\n }\n if (newCall) {\n this.diagnosticsForwarder = new DiagnosticsForwarder(this.emitter, newCall);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n off(event, listener) {\n this.emitter.off(event, listener);\n }\n asyncTeeErrorToEventEmitter(f) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n return yield f();\n }\n catch (error) {\n if (isCallError(error)) {\n this.emitter.emit('error', error);\n }\n throw error;\n }\n });\n }\n teeErrorToEventEmitter(f) {\n try {\n return f();\n }\n catch (error) {\n if (isCallError(error)) {\n this.emitter.emit('error', error);\n }\n throw error;\n }\n }\n}\n/**\n * @public\n */\n/**\n * Create a {@link CallAdapter} backed by Azure Communication Services.\n *\n * This is the default implementation of {@link CallAdapter} provided by this library.\n *\n * Note: `displayName` can be a maximum of 256 characters.\n *\n * @public\n */\nexport function createAzureCommunicationCallAdapter(args) {\n return __awaiter(this, void 0, void 0, function* () {\n if (isMicrosoftTeamsUserIdentifier(args.userId)) {\n throw new Error('Microsoft Teams user identifier is not supported by AzureCommunicationCallAdapter. Instead use TeamsCallAdapter.');\n }\n return _createAzureCommunicationCallAdapterInner({\n userId: args.userId,\n displayName: args.displayName,\n credential: args.credential,\n locator: args.locator,\n targetCallees: args.targetCallees,\n options: args.options\n });\n });\n}\n/**\n * This inner function is used to allow injection of TelemetryImplementationHint without changing the public API.\n *\n * @internal\n */\nexport const _createAzureCommunicationCallAdapterInner = (_a) => __awaiter(void 0, [_a], void 0, function* ({ userId, displayName, credential, locator, targetCallees, options, telemetryImplementationHint = 'Call' }) {\n if (!_isValidIdentifier(userId)) {\n throw new Error('Invalid identifier. Please provide valid identifier object.');\n }\n const callClient = _createStatefulCallClientInner({\n userId\n }, undefined, telemetryImplementationHint);\n const callAgent = yield callClient.createCallAgent(credential, {\n displayName\n });\n let adapter;\n if (locator) {\n adapter = createAzureCommunicationCallAdapterFromClient(callClient, callAgent, locator, options);\n }\n else {\n adapter = createAzureCommunicationCallAdapterFromClient(callClient, callAgent, targetCallees, options);\n }\n return adapter;\n});\n/**\n * @public\n */\nexport const createTeamsCallAdapter = (args) => __awaiter(void 0, void 0, void 0, function* () {\n const { userId, credential, options } = args;\n if (isCommunicationUserIdentifier(userId)) {\n throw new Error('Communication User identifier is not supported by TeamsCallAdapter, please use our AzureCommunicationCallAdapter.');\n }\n const callClient = _createStatefulCallClientInner({\n userId\n }, undefined, 'Call');\n const callAgent = yield callClient.createTeamsCallAgent(credential, {\n undefined\n });\n const adapter = createTeamsCallAdapterFromClient(callClient, callAgent, args.locator, options);\n return adapter;\n});\n/**\n * @private\n */\nfunction useAzureCommunicationCallAdapterGeneric(args, adapterKind = 'AzureCommunication', afterCreate, beforeDispose) {\n const { credential, userId } = args;\n const locator = 'locator' in args ? args.locator : undefined;\n const targetCallees = 'targetCallees' in args ? args.targetCallees : undefined;\n const displayName = 'displayName' in args ? args.displayName : undefined;\n const options = 'options' in args ? args.options : undefined;\n // State update needed to rerender the parent component when a new adapter is created.\n const [adapter, setAdapter] = useState(undefined);\n // Ref needed for cleanup to access the old adapter created asynchronously.\n const adapterRef = useRef(undefined);\n const creatingAdapterRef = useRef(false);\n const afterCreateRef = useRef(undefined);\n const beforeDisposeRef = useRef(undefined);\n // These refs are updated on *each* render, so that the latest values\n // are used in the `useEffect` closures below.\n // Using a Ref ensures that new values for the callbacks do not trigger the\n // useEffect blocks, and a new adapter creation / distruction is not triggered.\n afterCreateRef.current = afterCreate;\n beforeDisposeRef.current = beforeDispose;\n useEffect(() => {\n if (!credential || !locator && !targetCallees || !userId) {\n return;\n }\n if (adapterKind === 'AzureCommunication' && !displayName) {\n return;\n }\n (() => __awaiter(this, void 0, void 0, function* () {\n if (adapterRef.current) {\n // Dispose the old adapter when a new one is created.\n //\n // This clean up function uses `adapterRef` because `adapter` can not be added to the dependency array of\n // this `useEffect` -- we do not want to trigger a new adapter creation because of the first adapter\n // creation.\n if (beforeDisposeRef.current) {\n yield beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n let newAdapter = undefined;\n if (adapterKind === 'AzureCommunication') {\n // This is just the type check to ensure that displayName is defined.\n if (!displayName) {\n throw new Error('Unreachable code, displayName already checked above.');\n }\n if (creatingAdapterRef.current) {\n console.warn('Adapter is already being created, please see storybook for more information: https://azure.github.io/communication-ui-library/?path=/story/troubleshooting--page');\n return;\n }\n creatingAdapterRef.current = true;\n if (locator) {\n newAdapter = (yield createAzureCommunicationCallAdapter({\n credential,\n displayName: displayName,\n locator,\n userId: userId,\n options\n }));\n }\n else if (targetCallees) {\n newAdapter = (yield createAzureCommunicationCallAdapter({\n credential,\n displayName: displayName,\n targetCallees,\n userId: userId,\n options\n }));\n }\n }\n else if (adapterKind === 'Teams') {\n if (creatingAdapterRef.current) {\n console.warn('Adapter is already being created, skipping creation.');\n return;\n }\n creatingAdapterRef.current = true;\n if (targetCallees) { }\n else {\n newAdapter = (yield createTeamsCallAdapter({\n credential,\n locator: locator,\n userId: userId,\n options\n }));\n }\n }\n else {\n throw new Error('Unreachable code, unknown adapterKind');\n }\n if (!newAdapter) {\n throw Error('Unreachable code! Get undefined adapter');\n }\n if (afterCreateRef.current) {\n newAdapter = yield afterCreateRef.current(newAdapter);\n }\n adapterRef.current = newAdapter;\n creatingAdapterRef.current = false;\n setAdapter(newAdapter);\n }))();\n }, \n // Explicitly list all arguments so that caller doesn't have to memoize the `args` object.\n [adapterRef, afterCreateRef, beforeDisposeRef, adapterKind, credential, locator, userId, displayName, options, targetCallees]);\n // Dispose any existing adapter when the component unmounts.\n useEffect(() => {\n return () => {\n (() => __awaiter(this, void 0, void 0, function* () {\n if (adapterRef.current) {\n if (beforeDisposeRef.current) {\n yield beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n }))();\n };\n }, []);\n return adapter;\n}\n/**\n * A custom React hook to simplify the creation of {@link CallAdapter}.\n *\n * Similar to {@link createAzureCommunicationCallAdapter}, but takes care of asynchronous\n * creation of the adapter internally.\n *\n * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments\n * as they are created. The adapter is only created when all arguments are defined.\n *\n * Note that you must memoize the arguments to avoid recreating adapter on each render.\n * See storybook for typical usage examples.\n *\n * @public\n */\nexport const useAzureCommunicationCallAdapter = (args, afterCreate, beforeDispose) => {\n return useAzureCommunicationCallAdapterGeneric(args, 'AzureCommunication', afterCreate, beforeDispose);\n};\n/**\n * A custom React hook to simplify the creation of {@link TeamsCallAdapter}.\n *\n * Similar to {@link createTeamsAzureCommunicationCallAdapter}, but takes care of asynchronous\n * creation of the adapter internally.\n *\n * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments\n * as they are created. The adapter is only created when all arguments are defined.\n *\n * Note that you must memoize the arguments to avoid recreating adapter on each render.\n * See storybook for typical usage examples.\n *\n * @public\n */\nexport const useTeamsCallAdapter = (args, afterCreate, beforeDispose) => {\n return useAzureCommunicationCallAdapterGeneric(args, 'Teams', afterCreate, beforeDispose);\n};\n/**\n * Create a {@link CallAdapter} using the provided {@link StatefulCallClient}.\n *\n * Useful if you want to keep a reference to {@link StatefulCallClient}.\n * Consider using {@link createAzureCommunicationCallAdapter} for a simpler API.\n *\n * @public\n */\nexport function createAzureCommunicationCallAdapterFromClient(callClient, callAgent, locatorOrtargetCallees, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const deviceManager = (yield callClient.getDeviceManager());\n yield Promise.all([deviceManager.getCameras(), deviceManager.getMicrophones()]);\n if (deviceManager.isSpeakerSelectionAvailable) {\n yield deviceManager.getSpeakers();\n }\n if (getLocatorOrTargetCallees(locatorOrtargetCallees)) {\n return new AzureCommunicationCallAdapter(callClient, locatorOrtargetCallees, callAgent, deviceManager, options);\n }\n else {\n return new AzureCommunicationCallAdapter(callClient, locatorOrtargetCallees, callAgent, deviceManager, options);\n }\n });\n}\n/**\n * Create a {@link TeamsCallAdapter} using the provided {@link StatefulCallClient}.\n *\n * Useful if you want to keep a reference to {@link StatefulCallClient}.\n * Consider using {@link createAzureCommunicationCallAdapter} for a simpler API.\n *\n * @public\n */\nexport const createTeamsCallAdapterFromClient = (callClient, callAgent, locator, options) => __awaiter(void 0, void 0, void 0, function* () {\n const deviceManager = (yield callClient.getDeviceManager());\n yield Promise.all([deviceManager.getCameras(), deviceManager.getMicrophones()]);\n if (deviceManager.isSpeakerSelectionAvailable) {\n yield deviceManager.getSpeakers();\n }\n if (Array.isArray(locator)) {\n return new AzureCommunicationCallAdapter(callClient, locator, callAgent, deviceManager, options);\n }\n else {\n return new AzureCommunicationCallAdapter(callClient, locator, callAgent, deviceManager, options);\n }\n});\nconst captionsUIVisibilityModifier = (state) => {\n var _a, _b, _c;\n // To hide captions to the UI, set isCaptionsFeatureActive to false and startCaptionsInProgress to false\n if (((_a = state.call) === null || _a === void 0 ? void 0 : _a.captionsFeature) && ((_b = state.captionsTriggers) === null || _b === void 0 ? void 0 : _b.captionsStartedInBackground) && !((_c = state.captionsTriggers) === null || _c === void 0 ? void 0 : _c.captionsStartedWithUI)) {\n return Object.assign(Object.assign({}, state), { call: Object.assign(Object.assign({}, state.call), { captionsFeature: Object.assign(Object.assign({}, state.call.captionsFeature), { isCaptionsFeatureActive: false, startCaptionsInProgress: false }) }) });\n }\n return state;\n};\nconst isCallError = (e) => {\n return 'target' in e && 'innerError' in e;\n};\n//# sourceMappingURL=AzureCommunicationCallAdapter.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Subset of CallCompositePages that represent an end call state.\n * @private\n */\nexport const END_CALL_PAGES = ['accessDeniedTeamsMeeting', 'joinCallFailedDueToNoNetwork', 'leftCall', 'removedFromCall'];\n//# sourceMappingURL=CallAdapter.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { createContext, useContext } from 'react';\nconst CallAdapterContext = createContext(undefined);\n/**\n * @private\n */\nexport const CallAdapterProvider = (props) => {\n const { adapter } = props;\n return React.createElement(CallAdapterContext.Provider, { value: adapter }, props.children);\n};\n/**\n * @private\n */\nexport const useAdapter = () => {\n const adapter = useContext(CallAdapterContext);\n if (!adapter) {\n throw 'Cannot find adapter please initialize before usage.';\n }\n return adapter;\n};\n//# sourceMappingURL=CallAdapterProvider.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { DevicesButton } from \"../../../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { usePropsFor } from '../../hooks/usePropsFor';\nimport { concatButtonBaseStyles, devicesButtonWithIncreasedTouchTargets } from '../../styles/Buttons.styles';\nimport { useLocale } from '../../../localization';\nimport { _HighContrastAwareIcon } from \"../../../../../../react-components/src\";\nimport { useSelector } from '../../hooks/useSelector';\nimport { getRole } from '../../selectors/baseSelectors';\n/** @private */\nexport const Devices = (props) => {\n var _a;\n const devicesButtonProps = usePropsFor(DevicesButton);\n const role = (_a = useSelector(getRole)) !== null && _a !== void 0 ? _a : 'Unknown';\n const augmentedDeviceButtonProps = useMemo(() => (Object.assign(Object.assign({}, devicesButtonProps), { microphones: role === 'Consumer' ? [] : devicesButtonProps.microphones, cameras: role === 'Consumer' ? [] : devicesButtonProps.cameras })), [devicesButtonProps, role]);\n const styles = useMemo(() => { var _a; return concatButtonBaseStyles(props.increaseFlyoutItemSize ? devicesButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.increaseFlyoutItemSize, props.styles]);\n const locale = useLocale();\n const onlyManageSpeakers = role === 'Consumer';\n const onRenderDevicesIcon = () => {\n return React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"OptionsSpeaker\" });\n };\n return React.createElement(DevicesButton\n /* By setting `persistMenu?` to true, we prevent options menu from getting hidden every time a participant joins or leaves. */ , Object.assign({ \n /* By setting `persistMenu?` to true, we prevent options menu from getting hidden every time a participant joins or leaves. */ persistMenu: true }, augmentedDeviceButtonProps, { showLabel: props.displayType !== 'compact', styles: styles, \"data-ui-id\": \"calling-composite-devices-button\", disabled: props.disabled, strings: getLabelFromRole(role, locale), onRenderIcon: onlyManageSpeakers ? onRenderDevicesIcon : undefined }));\n};\nconst getLabelFromRole = (role, locale) => {\n if (role === 'Consumer') {\n return {\n label: locale.component.strings.microphoneButton.speakerMenuTitle\n };\n }\n return undefined;\n};\n//# sourceMappingURL=Devices.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ParticipantsButton } from \"../../../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { usePropsFor } from '../../hooks/usePropsFor';\nimport { concatButtonBaseStyles, participantButtonWithIncreasedTouchTargets } from '../../styles/Buttons.styles';\n/** @private */\nexport const Participants = (props) => {\n const participantsButtonProps = usePropsFor(ParticipantsButton);\n const participantsButtonStyles = useMemo(() => { var _a; return concatButtonBaseStyles(props.increaseFlyoutItemSize ? participantButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.increaseFlyoutItemSize, props.styles]);\n return React.createElement(ParticipantsButton, Object.assign({ \"data-ui-id\": \"call-composite-participants-button\" }, participantsButtonProps, { showLabel: props.displayType !== 'compact', callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, disabled: isDisabled(props.option) || props.disabled, styles: participantsButtonStyles, showParticipantOverflowTooltip: !props.isMobile }));\n};\nconst isDisabled = (option) => {\n if (option === undefined || option === true || option === false) {\n return false;\n }\n return option.disabled;\n};\n//# sourceMappingURL=Participants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useMemo } from 'react';\nimport { ControlBarButton, useTheme } from \"../../../../../../react-components/src\";\nimport { concatStyleSets } from '@fluentui/react';\nimport { CallCompositeIcon } from '../../../common/icons';\nimport { controlButtonBaseStyle } from '../../styles/Buttons.styles';\nconst icon = () => React.createElement(CallCompositeIcon, { iconName: 'ControlButtonParticipants' });\n/**\n * @private\n */\n/** @beta */\nexport const People = (props) => {\n const { strings, onRenderOnIcon, onRenderOffIcon, onClick } = props;\n const theme = useTheme();\n const styles = useMemo(() => {\n var _a;\n return concatStyleSets({\n rootChecked: {\n background: theme.palette.neutralLight\n }\n }, (_a = props.styles) !== null && _a !== void 0 ? _a : {}, controlButtonBaseStyle);\n }, [props.styles, theme.palette.neutralLight]);\n return React.createElement(ControlBarButton, Object.assign({}, props, { \"data-ui-id\": \"call-composite-participants-button\", strings: strings, labelKey: 'peopleButtonLabelKey', onRenderOnIcon: onRenderOnIcon !== null && onRenderOnIcon !== void 0 ? onRenderOnIcon : icon, onRenderOffIcon: onRenderOffIcon !== null && onRenderOffIcon !== void 0 ? onRenderOffIcon : icon, onClick: onClick, styles: styles }));\n};\n//# sourceMappingURL=People.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 { memoizeFunction, Stack, useTheme } from '@fluentui/react';\nimport { ControlBar, DevicesButton } from \"../../../../../react-components/src\";\nimport { HoldButton } from \"../../../../../react-components/src\";\nimport React, { useMemo, useCallback, useState, useEffect } from 'react';\nimport { Camera } from './buttons/Camera';\nimport { Devices } from './buttons/Devices';\nimport { EndCall } from './buttons/EndCall';\nimport { Microphone } from './buttons/Microphone';\nimport { Participants } from './buttons/Participants';\nimport { ScreenShare } from './buttons/ScreenShare';\nimport { People } from './buttons/People';\nimport { useLocale } from '../../localization';\nimport { MoreButton } from '../../common/MoreButton';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { buttonFlyoutIncreasedSizeStyles } from '../styles/Buttons.styles';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { isDisabled } from '../utils';\nimport { callControlsContainerStyles } from '../styles/CallPage.styles';\nimport { RaiseHand } from './buttons/RaiseHand';\nimport { RaiseHandButton } from \"../../../../../react-components/src\";\nimport { _generateDefaultDeviceMenuProps } from \"../../../../../react-components/src\";\nimport { CUSTOM_BUTTON_OPTIONS, generateCustomCallControlBarButton, generateCustomCallDesktopOverflowButtons, onFetchCustomButtonPropsTrampoline } from '../../common/ControlBar/CustomButton';\nimport { Reaction } from './buttons/Reaction';\nimport { useSelector } from '../hooks/useSelector';\nimport { capabilitySelector } from '../../CallComposite/selectors/capabilitySelector';\nimport { callStatusSelector } from '../../CallComposite/selectors/callStatusSelector';\nimport { _isSafari } from '../../CallComposite/utils';\nimport { getIsRoomsCall, getReactionResources, getRole, getDeepNoiseSuppresionEffectsDependency, getDeepNoiseSuppresionIsOnByDefault, getHideDeepNoiseSupressionButton, getEnvironmentInfo } from '../selectors/baseSelectors';\n// Enforce a background color on control bar to ensure it matches the composite background color.\nconst controlBarStyles = memoizeFunction((background) => ({\n root: {\n background: background\n }\n}));\nconst inferCallControlOptions = (mobileView, callControlOptions) => {\n if (callControlOptions === false) {\n return {};\n }\n const options = callControlOptions === true || callControlOptions === undefined ? {} : callControlOptions;\n if (mobileView) {\n // Set options to always not show screen share button for mobile\n options.screenShareButton = false;\n }\n return options;\n};\n/**\n * @private\n */\nexport const CallControls = (props) => {\n var _a;\n const options = useMemo(() => inferCallControlOptions(!!props.isMobile, props.options), [props.isMobile, props.options]);\n const localeStrings = useLocale();\n const [isDeepNoiseSuppressionOn, setDeepNoiseSuppressionOn] = useState(false);\n const adapter = useAdapter();\n const startDeepNoiseSuppression = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.startNoiseSuppressionEffect();\n }), [adapter]);\n const deepNoiseSuppresionEffectsDependency = useSelector(getDeepNoiseSuppresionEffectsDependency);\n const deepNoiseSuppressionOnByDefault = useSelector(getDeepNoiseSuppresionIsOnByDefault);\n useEffect(() => {\n if (deepNoiseSuppresionEffectsDependency && deepNoiseSuppressionOnByDefault) {\n startDeepNoiseSuppression();\n setDeepNoiseSuppressionOn(true);\n }\n }, [deepNoiseSuppresionEffectsDependency, deepNoiseSuppressionOnByDefault, startDeepNoiseSuppression]);\n const environmentInfo = useSelector(getEnvironmentInfo);\n const isSafari = _isSafari(environmentInfo);\n const hideDeepNoiseSuppressionButton = useSelector(getHideDeepNoiseSupressionButton);\n const showNoiseSuppressionButton = !!(deepNoiseSuppresionEffectsDependency && !hideDeepNoiseSuppressionButton && !isSafari);\n const onClickNoiseSuppression = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n if (isDeepNoiseSuppressionOn) {\n yield adapter.stopNoiseSuppressionEffect();\n setDeepNoiseSuppressionOn(false);\n }\n else {\n yield adapter.startNoiseSuppressionEffect();\n setDeepNoiseSuppressionOn(true);\n }\n }), [adapter, isDeepNoiseSuppressionOn]);\n const peopleButtonStrings = useMemo(() => ({\n label: localeStrings.strings.call.peopleButtonLabel,\n tooltipOffContent: localeStrings.strings.call.peopleButtonTooltipOpen,\n tooltipOnContent: localeStrings.strings.call.peopleButtonTooltipClose\n }), [localeStrings]);\n const moreButtonStrings = useMemo(() => ({\n label: localeStrings.strings.call.moreButtonCallingLabel,\n tooltipOffContent: localeStrings.strings.callWithChat.moreDrawerButtonTooltip\n }), [localeStrings]);\n const holdButtonProps = usePropsFor(HoldButton);\n const raiseHandButtonProps = usePropsFor(RaiseHandButton);\n const capabilitiesSelector = useSelector(capabilitySelector);\n const callState = useSelector(callStatusSelector);\n const isReactionAllowed = callState.callStatus !== 'Connected' || !(capabilitiesSelector === null || capabilitiesSelector === void 0 ? void 0 : capabilitiesSelector.capabilities) || capabilitiesSelector.capabilities.useReactions.isPresent;\n const devicesButtonProps = usePropsFor(DevicesButton);\n let numberOfButtons = 0;\n const screenShareButtonIsEnabled = isEnabled(options === null || options === void 0 ? void 0 : options.screenShareButton);\n if (screenShareButtonIsEnabled) {\n numberOfButtons++;\n }\n const microphoneButtonIsEnabled = isEnabled(options === null || options === void 0 ? void 0 : options.microphoneButton);\n if (microphoneButtonIsEnabled) {\n numberOfButtons++;\n }\n const cameraButtonIsEnabled = isEnabled(options === null || options === void 0 ? void 0 : options.cameraButton);\n if (cameraButtonIsEnabled) {\n numberOfButtons++;\n }\n if (isEnabled(options === null || options === void 0 ? void 0 : options.endCallButton)) {\n numberOfButtons++;\n }\n const showParticipantsButtonInControlBar = isEnabled(options === null || options === void 0 ? void 0 : options.participantsButton) && !props.isMobile;\n if (showParticipantsButtonInControlBar) {\n numberOfButtons++;\n }\n const showReactionButtonInControlBar = isEnabled(options === null || options === void 0 ? void 0 : options.reactionButton) && isReactionAllowed && !props.isMobile;\n if (showReactionButtonInControlBar) {\n numberOfButtons++;\n }\n const isRoomsCall = useSelector(getIsRoomsCall);\n const moreButtonContextualMenuItems = () => {\n const items = [];\n if (props.isMobile && props.onPeopleButtonClicked && isEnabled(options === null || options === void 0 ? void 0 : options.participantsButton)) {\n items.push({\n key: 'peopleButtonKey',\n text: localeStrings.component.strings.participantsButton.label,\n onClick: () => {\n if (props.onPeopleButtonClicked) {\n props.onPeopleButtonClicked();\n }\n },\n iconProps: {\n iconName: 'ControlButtonParticipantsContextualMenuItem',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n disabled: isDisabled(options === null || options === void 0 ? void 0 : options.participantsButton),\n ['data-ui-id']: 'call-composite-more-menu-people-button'\n });\n }\n if (!isRoomsCall) {\n items.push({\n key: 'holdButtonKey',\n text: localeStrings.component.strings.holdButton.tooltipOffContent,\n onClick: () => {\n holdButtonProps.onToggleHold();\n },\n iconProps: {\n iconName: 'HoldCallContextualMenuItem',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n disabled: isDisabled(options === null || options === void 0 ? void 0 : options.holdButton),\n ['data-ui-id']: 'hold-button'\n });\n }\n return items;\n };\n const customDrawerButtons = useMemo(() => generateCustomCallDesktopOverflowButtons(onFetchCustomButtonPropsTrampoline(typeof options === 'object' ? options : undefined), typeof options === 'object' ? options.displayType : undefined), [options]);\n const moreButtonMenuItems = moreButtonContextualMenuItems();\n let showMoreButton = isEnabled(options === null || options === void 0 ? void 0 : options.moreButton) && moreButtonMenuItems.length > 0;\n if (showMoreButton) {\n numberOfButtons++;\n }\n const customButtons = useMemo(() => generateCustomCallControlBarButton(onFetchCustomButtonPropsTrampoline(options), options === null || options === void 0 ? void 0 : options.displayType), [options]);\n numberOfButtons += React.Children.count(customButtons['primary']) + React.Children.count(customButtons['secondary']);\n let showDevicesButtonInControlBar = isEnabled(options === null || options === void 0 ? void 0 : options.devicesButton);\n if (showDevicesButtonInControlBar && (props.isMobile ? numberOfButtons < 5 : true)) {\n numberOfButtons++;\n }\n else {\n showDevicesButtonInControlBar = false;\n showMoreButton = isEnabled(options === null || options === void 0 ? void 0 : options.moreButton);\n }\n const reactionResources = useSelector(getReactionResources);\n const raiseHandButtonIsEnabled = isEnabled(options === null || options === void 0 ? void 0 : options.raiseHandButton);\n let showRaiseHandButtonInControlBar = raiseHandButtonIsEnabled;\n const role = useSelector(getRole);\n const hideRaiseHandButtonInRoomsCall = isRoomsCall && role && ['Consumer', 'Unknown'].includes(role);\n if (showRaiseHandButtonInControlBar && (props.isMobile ? numberOfButtons < 5 : true)) {\n numberOfButtons++;\n }\n else {\n // If more button is not present but enabled then replace previous button (devices button) with more button\n if (!showMoreButton && isEnabled(options === null || options === void 0 ? void 0 : options.moreButton)) {\n showMoreButton = true;\n showDevicesButtonInControlBar = false;\n }\n showRaiseHandButtonInControlBar = false;\n }\n if (!showDevicesButtonInControlBar) {\n const devicesButtonMenu = _generateDefaultDeviceMenuProps(devicesButtonProps, localeStrings.component.strings.devicesButton);\n moreButtonMenuItems.push({\n key: 'devicesButtonKey',\n text: localeStrings.component.strings.devicesButton.label,\n iconProps: {\n iconName: 'ControlButtonOptions',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n subMenuProps: devicesButtonMenu,\n ['data-ui-id']: 'call-composite-more-menu-devices-button'\n });\n }\n if (!showRaiseHandButtonInControlBar && !hideRaiseHandButtonInRoomsCall) {\n moreButtonMenuItems.push({\n key: 'raiseHandButtonKey',\n text: raiseHandButtonProps.checked ? localeStrings.component.strings.raiseHandButton.onLabel : localeStrings.component.strings.raiseHandButton.offLabel,\n onClick: () => {\n if (raiseHandButtonProps.onToggleRaiseHand) {\n raiseHandButtonProps.onToggleRaiseHand();\n }\n },\n iconProps: {\n iconName: 'RaiseHandContextualMenuItem',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n disabled: isDisabled(options === null || options === void 0 ? void 0 : options.raiseHandButton),\n ['data-ui-id']: 'call-composite-more-menu-raise-hand-button'\n });\n }\n // Custom Buttons in More Button Menu should always be the last items pushed into the moreButtonMenuItems array\n if (customDrawerButtons['primary']) {\n customDrawerButtons['primary'].slice(props.isMobile ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).forEach(element => {\n moreButtonMenuItems.push(Object.assign({ itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n } }, element));\n });\n }\n if (customDrawerButtons['secondary']) {\n customDrawerButtons['secondary'].forEach(element => {\n moreButtonMenuItems.push(Object.assign({ itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n } }, element));\n });\n }\n if (customDrawerButtons['overflow']) {\n customDrawerButtons['overflow'].forEach(element => {\n moreButtonMenuItems.push(Object.assign({ itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n } }, element));\n });\n }\n const theme = useTheme();\n // when props.options is false then we want to hide the whole control bar.\n if (props.options === false) {\n return React.createElement(React.Fragment, null);\n }\n return React.createElement(Stack, { horizontalAlign: \"center\", className: callControlsContainerStyles },\n React.createElement(Stack.Item, null,\n React.createElement(ControlBar, { layout: props.displayVertical ? 'vertical' : 'horizontal', styles: controlBarStyles(theme.semanticColors.bodyBackground) },\n microphoneButtonIsEnabled && React.createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.microphoneButton), onClickNoiseSuppression: onClickNoiseSuppression, isDeepNoiseSuppressionOn: isDeepNoiseSuppressionOn, showNoiseSuppressionButton: showNoiseSuppressionButton }),\n cameraButtonIsEnabled && React.createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.cameraButton) }),\n showReactionButtonInControlBar && reactionResources && React.createElement(Reaction, { displayType: options === null || options === void 0 ? void 0 : options.displayType, reactionResource: reactionResources }),\n showRaiseHandButtonInControlBar && !hideRaiseHandButtonInRoomsCall && React.createElement(RaiseHand, { displayType: options === null || options === void 0 ? void 0 : options.displayType }),\n screenShareButtonIsEnabled && React.createElement(ScreenShare, { option: options === null || options === void 0 ? void 0 : options.screenShareButton, displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.screenShareButton) }),\n showParticipantsButtonInControlBar && React.createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.participantsButton) }) && React.createElement(People, { checked: props.peopleButtonChecked, ariaLabel: peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', onClick: props.onPeopleButtonClicked, \"data-ui-id\": \"call-composite-people-button\", strings: peopleButtonStrings, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.participantsButton), disableTooltip: props.isMobile }),\n showDevicesButtonInControlBar && React.createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, disabled: isDisabled(options === null || options === void 0 ? void 0 : options.devicesButton) }), (_a = customButtons['primary']) === null || _a === void 0 ? void 0 :\n _a.slice(0, props.isMobile ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {\n return React.createElement(CustomButton, { key: `primary-custom-button-${i}`, \n // styles={commonButtonStyles}\n showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', disableTooltip: props.isMobile });\n }),\n showMoreButton && React.createElement(MoreButton, { disableTooltip: props.isMobile, \"data-ui-id\": \"common-call-composite-more-button\", strings: moreButtonStrings, menuIconProps: {\n hidden: true\n }, menuProps: {\n items: moreButtonMenuItems\n }, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact' }),\n isEnabled(options === null || options === void 0 ? void 0 : options.endCallButton) && React.createElement(EndCall, { displayType: options === null || options === void 0 ? void 0 : options.displayType }))));\n};\nconst isEnabled = (option) => option !== false;\n//# sourceMappingURL=CallControls.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\nimport { PeoplePaneContent } from '../../../common/PeoplePaneContent';\nimport { useLocale } from '../../../localization';\nimport { useSelector } from '../../hooks/useSelector';\nimport { getAlternateCallerId, getRemoteParticipants, getRole } from '../../selectors/baseSelectors';\nimport { Prompt } from '../Prompt';\nconst PEOPLE_SIDE_PANE_ID = 'people';\n/** @private */\nexport const usePeoplePane = (props) => {\n const { updateSidePaneRenderer, inviteLink, onFetchAvatarPersonaData, onFetchParticipantMenuItems, setDrawerMenuItems, mobileView, peopleButtonRef, setParticipantActioned, spotlightedParticipantUserIds, onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight, onStopAllSpotlight, maxParticipantsToSpotlight, onMuteParticipant, pinnedParticipants, onPinParticipant, onUnpinParticipant, disablePinMenuItem, onMuteAllRemoteParticipants } = props;\n const closePane = useCallback(() => {\n var _a;\n updateSidePaneRenderer(undefined);\n (_a = peopleButtonRef === null || peopleButtonRef === void 0 ? void 0 : peopleButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }, [peopleButtonRef, updateSidePaneRenderer]);\n const localeStrings = useLocale().strings.call;\n const remoteParticipants = useSelector(getRemoteParticipants);\n const [showMuteAllPrompt, setShowMuteAllPrompt] = React.useState(false);\n const muteAllPromptLabels = useMemo(() => ({\n confirmButtonLabel: localeStrings.muteAllConfirmButtonLabel,\n heading: localeStrings.muteAllDialogTitle,\n text: localeStrings.muteAllDialogContent,\n cancelButtonLabel: localeStrings.muteAllCancelButtonLabel\n }), [localeStrings.muteAllConfirmButtonLabel, localeStrings.muteAllDialogTitle, localeStrings.muteAllDialogContent, localeStrings.muteAllCancelButtonLabel]);\n const onMuteAllPromptConfirm = useCallback(() => {\n onMuteAllRemoteParticipants && onMuteAllRemoteParticipants();\n setShowMuteAllPrompt(false);\n }, [onMuteAllRemoteParticipants, setShowMuteAllPrompt]);\n const sidePaneHeaderMenuProps = useMemo(() => {\n const menuItems = [];\n if (onMuteAllRemoteParticipants && remoteParticipants) {\n let isAllMuted = true;\n if (remoteParticipants) {\n for (const participant of Object.values(remoteParticipants)) {\n if (!participant.isMuted) {\n isAllMuted = false;\n break;\n }\n }\n }\n menuItems.push({\n ['data-ui-id']: 'people-pane-mute-all-remote-participants',\n key: 'muteAllRemoteParticipants',\n text: localeStrings.muteAllMenuLabel,\n iconProps: {\n iconName: 'ContextualMenuMicMutedIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n onClick: () => {\n setShowMuteAllPrompt(true);\n },\n ariaLabel: localeStrings.muteAllMenuLabel,\n disabled: isAllMuted\n });\n }\n if (onStopAllSpotlight && spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0) {\n menuItems.push({\n key: 'stopAllSpotlightKey',\n text: localeStrings.stopAllSpotlightMenuLabel,\n iconProps: {\n iconName: 'StopAllSpotlightMenuButton',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n onClick: () => {\n onStopAllSpotlight();\n },\n ariaLabel: localeStrings.stopAllSpotlightMenuLabel\n });\n }\n return {\n items: menuItems\n };\n }, [onStopAllSpotlight, spotlightedParticipantUserIds, localeStrings.stopAllSpotlightMenuLabel, localeStrings.muteAllMenuLabel, onMuteAllRemoteParticipants, setShowMuteAllPrompt, remoteParticipants]);\n const onRenderHeader = useCallback(() => React.createElement(SidePaneHeader, { onClose: closePane, headingText: localeStrings.peoplePaneTitle, dismissSidePaneButtonAriaLabel: localeStrings.dismissSidePaneButtonLabel, mobileView: mobileView !== null && mobileView !== void 0 ? mobileView : false }), [mobileView, closePane, localeStrings]);\n const onFetchParticipantMenuItemsForCallComposite = useCallback((participantId, myUserId, defaultMenuItems) => {\n let isPinned = pinnedParticipants === null || pinnedParticipants === void 0 ? void 0 : pinnedParticipants.includes(participantId);\n const _defaultMenuItems = [];\n const isSpotlighted = spotlightedParticipantUserIds === null || spotlightedParticipantUserIds === void 0 ? void 0 : spotlightedParticipantUserIds.includes(participantId);\n const isMe = myUserId === participantId;\n isPinned = isSpotlighted ? false : isPinned;\n if (onMuteParticipant && !isMe && remoteParticipants && remoteParticipants[participantId]) {\n const participant = remoteParticipants[participantId];\n const isMuted = !!(participant === null || participant === void 0 ? void 0 : participant.isMuted);\n _defaultMenuItems.push({\n key: 'mute',\n text: 'Mute',\n iconProps: {\n iconName: 'ContextualMenuMicMutedIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n onClick: () => {\n onMuteParticipant(participantId);\n },\n 'data-ui-id': 'participant-item-mute-participant',\n ariaLabel: 'Mute',\n disabled: isMuted\n });\n }\n if (isSpotlighted) {\n const stopSpotlightMenuText = isMe ? localeStrings.stopSpotlightOnSelfMenuLabel : localeStrings.stopSpotlightMenuLabel;\n const onStopSpotlight = isMe ? onStopLocalSpotlight : onStopRemoteSpotlight ? () => {\n onStopRemoteSpotlight([participantId]);\n } : undefined;\n if (onStopSpotlight && stopSpotlightMenuText) {\n _defaultMenuItems.push({\n key: 'stop-spotlight',\n text: stopSpotlightMenuText,\n onClick: onStopSpotlight,\n iconProps: {\n iconName: 'StopSpotlightContextualMenuItem',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n ariaLabel: stopSpotlightMenuText\n });\n }\n }\n else {\n const startSpotlightMenuText = spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0 ? localeStrings.addSpotlightMenuLabel : localeStrings.startSpotlightMenuLabel;\n const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight ? spotlightedParticipantUserIds ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight : false : false;\n const onStartSpotlight = isMe ? onStartLocalSpotlight : onStartRemoteSpotlight ? () => {\n onStartRemoteSpotlight([participantId]);\n } : undefined;\n if (onStartSpotlight && startSpotlightMenuText) {\n _defaultMenuItems.push({\n key: 'start-spotlight',\n text: startSpotlightMenuText,\n onClick: onStartSpotlight,\n iconProps: {\n iconName: 'StartSpotlightContextualMenuItem',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n ariaLabel: startSpotlightMenuText,\n disabled: maxSpotlightedParticipantsReached,\n title: maxSpotlightedParticipantsReached ? localeStrings.spotlightLimitReachedMenuTitle : undefined\n });\n }\n }\n if (!isMe && isPinned !== undefined) {\n if (isPinned && onUnpinParticipant && (localeStrings === null || localeStrings === void 0 ? void 0 : localeStrings.unpinParticipantMenuLabel)) {\n _defaultMenuItems.push({\n key: 'unpin',\n text: localeStrings === null || localeStrings === void 0 ? void 0 : localeStrings.unpinParticipantMenuLabel,\n iconProps: {\n iconName: 'UnpinParticipant',\n styles: {\n root: {\n lineHeight: '1rem',\n textAlign: 'center'\n }\n }\n },\n onClick: () => {\n onUnpinParticipant === null || onUnpinParticipant === void 0 ? void 0 : onUnpinParticipant(participantId);\n },\n 'data-ui-id': 'participant-item-unpin-participant-button',\n ariaLabel: localeStrings.unpinParticipantMenuItemAriaLabel\n });\n }\n if (!isPinned && onPinParticipant && (localeStrings === null || localeStrings === void 0 ? void 0 : localeStrings.pinParticipantMenuLabel)) {\n _defaultMenuItems.push({\n key: 'pin',\n text: disablePinMenuItem ? localeStrings.pinParticipantLimitReachedMenuLabel : localeStrings.pinParticipantMenuLabel,\n iconProps: {\n iconName: 'PinParticipant',\n styles: {\n root: {\n lineHeight: '1rem',\n textAlign: 'center'\n }\n }\n },\n onClick: () => {\n onPinParticipant(participantId);\n },\n 'data-ui-id': 'participant-item-pin-participant-button',\n disabled: disablePinMenuItem || isSpotlighted,\n ariaLabel: localeStrings.pinParticipantMenuItemAriaLabel\n });\n }\n }\n if (defaultMenuItems) {\n _defaultMenuItems.push(...defaultMenuItems);\n }\n return onFetchParticipantMenuItems ? onFetchParticipantMenuItems(participantId, myUserId, _defaultMenuItems) : _defaultMenuItems;\n }, [spotlightedParticipantUserIds, onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight, onFetchParticipantMenuItems, onMuteParticipant, remoteParticipants, localeStrings.stopSpotlightMenuLabel, localeStrings.stopSpotlightOnSelfMenuLabel, localeStrings.addSpotlightMenuLabel, localeStrings.startSpotlightMenuLabel, localeStrings.spotlightLimitReachedMenuTitle, maxParticipantsToSpotlight, pinnedParticipants, onPinParticipant, onUnpinParticipant, disablePinMenuItem, localeStrings.pinParticipantMenuLabel, localeStrings.pinParticipantLimitReachedMenuLabel, localeStrings.unpinParticipantMenuLabel, localeStrings.unpinParticipantMenuItemAriaLabel, localeStrings.pinParticipantMenuItemAriaLabel]);\n const role = useSelector(getRole);\n const alternateCallerId = useSelector(getAlternateCallerId);\n const onRenderContent = useCallback(() => {\n return React.createElement(React.Fragment, null,\n React.createElement(Prompt, Object.assign({}, muteAllPromptLabels, { styles: {\n main: {\n minWidth: '22.5rem',\n padding: '1.5rem'\n }\n }, onConfirm: () => onMuteAllPromptConfirm(), isOpen: showMuteAllPrompt, onCancel: () => setShowMuteAllPrompt(false) })),\n React.createElement(PeoplePaneContent, { inviteLink: inviteLink, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItemsForCallComposite, setDrawerMenuItems: setDrawerMenuItems, mobileView: mobileView, setParticipantActioned: setParticipantActioned, participantListHeadingMoreButtonProps: sidePaneHeaderMenuProps, pinnedParticipants: pinnedParticipants, role: role, alternateCallerId: alternateCallerId }));\n }, [inviteLink, mobileView, onFetchAvatarPersonaData, onFetchParticipantMenuItemsForCallComposite, setDrawerMenuItems, setParticipantActioned, sidePaneHeaderMenuProps, pinnedParticipants, role, alternateCallerId, showMuteAllPrompt, setShowMuteAllPrompt, muteAllPromptLabels, onMuteAllPromptConfirm]);\n const sidePaneRenderer = useMemo(() => ({\n headerRenderer: onRenderHeader,\n contentRenderer: onRenderContent,\n id: PEOPLE_SIDE_PANE_ID\n }), [onRenderContent, onRenderHeader]);\n const openPane = useCallback(() => {\n updateSidePaneRenderer(sidePaneRenderer);\n }, [sidePaneRenderer, updateSidePaneRenderer]);\n const isOpen = useIsParticularSidePaneOpen(PEOPLE_SIDE_PANE_ID);\n // Update pane renderer if it is open and the openPane dep changes\n useEffect(() => {\n if (isOpen) {\n openPane();\n }\n }, [isOpen, openPane]);\n return {\n openPeoplePane: openPane,\n closePeoplePane: closePane,\n isPeoplePaneOpen: isOpen\n };\n};\n//# sourceMappingURL=usePeoplePane.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\nimport { MeetingPhoneInfoPaneContent } from '../../../common/MeetingPhoneInfoPaneContent';\nimport { useLocale } from '../../../localization';\nconst SIDE_PANE_ID = 'Meeting Phone Info';\n/** @private */\nexport const useMeetingPhoneInfoPane = (props) => {\n const { updateSidePaneRenderer, mobileView, conferencePhoneInfo } = props;\n const closePane = useCallback(() => {\n updateSidePaneRenderer(undefined);\n }, [updateSidePaneRenderer]);\n const localeStrings = useLocale().component.strings.meetingConferencePhoneInfo;\n const callStrings = useLocale().strings.call;\n const onRenderHeader = useCallback(() => React.createElement(SidePaneHeader, { onClose: closePane, headingText: localeStrings.meetingConferencePhoneInfoModalTitle, dismissSidePaneButtonAriaLabel: callStrings.dismissSidePaneButtonLabel, mobileView: mobileView !== null && mobileView !== void 0 ? mobileView : false }), [mobileView, closePane, localeStrings, callStrings]);\n const onRenderContent = useCallback(() => {\n return React.createElement(MeetingPhoneInfoPaneContent, { mobileView: mobileView, conferencePhoneInfoList: conferencePhoneInfo });\n }, [mobileView, conferencePhoneInfo]);\n const sidePaneRenderer = useMemo(() => ({\n headerRenderer: onRenderHeader,\n contentRenderer: onRenderContent,\n id: SIDE_PANE_ID\n }), [onRenderContent, onRenderHeader]);\n const openPane = useCallback(() => {\n updateSidePaneRenderer(sidePaneRenderer);\n }, [sidePaneRenderer, updateSidePaneRenderer]);\n const isOpen = useIsParticularSidePaneOpen(SIDE_PANE_ID);\n // Update pane renderer if it is open and the openPane dep changes\n useEffect(() => {\n if (isOpen) {\n openPane();\n }\n }, [isOpen, openPane]);\n return {\n openMeetingPhoneInfoPane: openPane,\n closeMeetingPhoneInfoPane: closePane,\n isMeetingPhoneInfoPaneOpen: isOpen\n };\n};\n//# sourceMappingURL=useMeetingPhoneInfo.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { MessageBar, MessageBarType, Stack } from '@fluentui/react';\nimport { useLocale } from '../../localization';\n/**\n * Notification bar for capabilities changed\n * @private\n */\nexport const CapabilitiesChangedNotificationBar = (props) => {\n const locale = useLocale();\n return React.createElement(Stack, { \"data-ui-id\": \"capabilities-changed-notification-bar-stack\" }, props.capabilitiesChangedNotifications.map(notification => {\n const message = getCapabilityChangedNotificationString(notification, locale.strings.call.capabilityChangedNotification);\n if (!message) {\n return null;\n }\n const iconProps = getCustomMessageBarIconProps(notification);\n return React.createElement(MessageBar, { key: notification.capabilityName, styles: messageBarStyles, messageBarType: MessageBarType.warning, dismissIconProps: {\n iconName: 'ErrorBarClear'\n }, onDismiss: () => props.onDismissNotification(notification), messageBarIconProps: iconProps }, message);\n }));\n};\nconst getCapabilityChangedNotificationString = (notification, strings) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n switch (notification.capabilityName) {\n case 'turnVideoOn':\n if (notification.changedReason === 'MeetingOptionOrOrganizerPolicyChanged') {\n return notification.isPresent ? (_a = strings === null || strings === void 0 ? void 0 : strings.turnVideoOn) === null || _a === void 0 ? void 0 : _a.grantedDueToMeetingOption : (_b = strings === null || strings === void 0 ? void 0 : strings.turnVideoOn) === null || _b === void 0 ? void 0 : _b.lostDueToMeetingOption;\n }\n break;\n case 'unmuteMic':\n if (notification.changedReason === 'MeetingOptionOrOrganizerPolicyChanged') {\n return notification.isPresent ? (_c = strings === null || strings === void 0 ? void 0 : strings.unmuteMic) === null || _c === void 0 ? void 0 : _c.grantedDueToMeetingOption : (_d = strings === null || strings === void 0 ? void 0 : strings.unmuteMic) === null || _d === void 0 ? void 0 : _d.lostDueToMeetingOption;\n }\n break;\n case 'shareScreen':\n if (notification.isPresent && notification.changedReason === 'RoleChanged' && notification.role === 'Presenter') {\n return (_e = strings === null || strings === void 0 ? void 0 : strings.shareScreen) === null || _e === void 0 ? void 0 : _e.grantedDueToRoleChangeToPresenter;\n }\n if (!notification.isPresent && notification.changedReason === 'RoleChanged' && notification.role === 'Attendee') {\n return (_f = strings === null || strings === void 0 ? void 0 : strings.shareScreen) === null || _f === void 0 ? void 0 : _f.lostDueToRoleChangeToAttendee;\n }\n break;\n case 'viewAttendeeNames':\n if (!notification.isPresent && notification.changedReason === 'MeetingOptionOrOrganizerPolicyChanged' && notification.role === 'Attendee') {\n return (_g = strings === null || strings === void 0 ? void 0 : strings.hideAttendeeNames) === null || _g === void 0 ? void 0 : _g.hideAttendeeNameAttendee;\n }\n if (!notification.isPresent && notification.changedReason === 'MeetingOptionOrOrganizerPolicyChanged' && notification.role === 'Presenter') {\n return (_h = strings === null || strings === void 0 ? void 0 : strings.hideAttendeeNames) === null || _h === void 0 ? void 0 : _h.hideAttendeeNamePresenter;\n }\n }\n return undefined;\n};\nconst getCustomMessageBarIconProps = (notification) => {\n let iconName = undefined;\n switch (notification.capabilityName) {\n case 'turnVideoOn':\n if (notification.isPresent) {\n iconName = 'ControlButtonCameraOn';\n }\n else {\n iconName = 'ControlButtonCameraProhibited';\n }\n break;\n case 'unmuteMic':\n if (notification.isPresent) {\n iconName = 'ControlButtonMicOn';\n }\n else {\n iconName = 'ControlButtonMicProhibited';\n }\n break;\n default:\n return undefined;\n }\n return {\n iconName,\n styles: {\n root: {\n '> *': {\n height: '1rem',\n width: '1rem'\n }\n }\n }\n };\n};\nconst messageBarStyles = {\n innerText: {\n alignSelf: 'center'\n },\n icon: {\n height: 0\n },\n content: {\n lineHeight: 'inherit'\n },\n dismissal: {\n height: 0,\n paddingTop: '0.8rem'\n }\n};\n//# sourceMappingURL=CapabilitiesChangedNotificationBar.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles, Stack } from '@fluentui/react';\nimport { _isInLobbyOrConnecting } from \"../../../../../calling-component-bindings/src\";\nimport { _DrawerMenu, _useContainerHeight, _useContainerWidth, useTheme } from \"../../../../../react-components/src\";\nimport { NotificationStack } from \"../../../../../react-components/src\";\nimport { VideoGallery } from \"../../../../../react-components/src\";\nimport React, { useMemo, useRef, useState } from 'react';\nimport { useEffect } from 'react';\nimport { useCallback } from 'react';\nimport { CallingCaptionsBanner } from '../../common/CallingCaptionsBanner';\nimport { containerDivStyles } from '../../common/ContainerRectProps';\nimport { compositeMinWidthRem } from '../../common/styles/Composite.styles';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { CallControls } from '../components/CallControls';\nimport { CommonCallControlBar } from '../../common/ControlBar/CommonCallControlBar';\nimport { callArrangementContainerStyles, notificationsContainerStyles, containerStyleDesktop, containerStyleMobile, mediaGalleryContainerStyles, galleryParentContainerStyles, bannerNotificationStyles, CONTROL_BAR_Z_INDEX, DRAWER_Z_INDEX } from '../styles/CallPage.styles';\nimport { notificationStackStyles } from '../styles/CallPage.styles';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { PreparedMoreDrawer } from '../../common/Drawer/PreparedMoreDrawer';\nimport { getCapabilites, getIsTeamsMeeting, getReactionResources, getRemoteParticipants, getRole, getVideoEffectsDependency } from '../selectors/baseSelectors';\nimport { getPage } from '../selectors/baseSelectors';\nimport { getCallStatus, getCaptionsStatus } from '../selectors/baseSelectors';\nimport { drawerContainerStyles } from '../styles/CallComposite.styles';\nimport { SidePane } from './SidePane/SidePane';\nimport { usePeoplePane } from './SidePane/usePeoplePane';\nimport { useMeetingPhoneInfoPane } from './SidePane/useMeetingPhoneInfo';\nimport { getTeamsMeetingCoordinates } from '../selectors/baseSelectors';\nimport { useVideoEffectsPane, VIDEO_EFFECTS_SIDE_PANE_ID, VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM } from './SidePane/useVideoEffectsPane';\nimport { isDisabled } from '../utils';\nimport { useIsSidePaneOpen } from './SidePane/SidePaneProvider';\nimport { useIsParticularSidePaneOpen } from './SidePane/SidePaneProvider';\nimport { ModalLocalAndRemotePIP } from '../../common/ModalLocalAndRemotePIP';\nimport { getPipStyles } from '../../common/styles/ModalLocalAndRemotePIP.styles';\nimport { useMinMaxDragPosition } from '../../common/utils';\nimport { localVideoSelector } from '../../CallComposite/selectors/localVideoStreamSelector';\nimport { CapabilitiesChangedNotificationBar } from './CapabilitiesChangedNotificationBar';\nimport { useLocale } from '../../localization';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useLocalSpotlightCallbacksWithPrompt, useRemoteSpotlightCallbacksWithPrompt, useStopAllSpotlightCallbackWithPrompt } from '../utils/spotlightUtils';\nimport { getCaptionsKind, getIsTeamsCall } from '../selectors/baseSelectors';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { MoreDrawer } from '../../common/Drawer/MoreDrawer';\n/**\n * @private\n * Maximum number of remote video tiles that can be pinned\n */\nexport const MAX_PINNED_REMOTE_VIDEO_TILES = 4;\n/**\n * @private\n */\nexport const CallArrangement = (props) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n const containerClassName = useMemo(() => {\n return props.mobileView ? containerStyleMobile : containerStyleDesktop;\n }, [props.mobileView]);\n const theme = useTheme();\n const callGalleryStyles = useMemo(() => galleryParentContainerStyles(theme.palette.neutralLighterAlt), [theme.palette.neutralLighterAlt]);\n const controlBarRef = useRef(null);\n const peopleButtonRef = useRef(null);\n const cameraButtonRef = useRef(null);\n const containerRef = useRef(null);\n const containerWidth = _useContainerWidth(containerRef);\n const containerHeight = _useContainerHeight(containerRef);\n const isInLobby = _isInLobbyOrConnecting(useSelector(callStatusSelector).callStatus);\n const { updateSidePaneRenderer } = props;\n const isInLocalHold = useSelector(getPage) === 'hold';\n const capabilities = useSelector(getCapabilites);\n const adapter = useAdapter();\n const [participantActioned, setParticipantActioned] = useState();\n const remoteParticipants = useSelector(getRemoteParticipants);\n const [drawerMenuItems, setDrawerMenuItems] = useState([]);\n useEffect(() => {\n const participantIsActionedButIsNotPresent = participantActioned && (remoteParticipants === null || remoteParticipants === void 0 ? void 0 : remoteParticipants[participantActioned]) === undefined;\n if (participantIsActionedButIsNotPresent) {\n setDrawerMenuItems([]);\n }\n }, [participantActioned, remoteParticipants]);\n const conferencePhoneInfo = useSelector(getTeamsMeetingCoordinates);\n const meetingPhoneInfoPaneProps = {\n updateSidePaneRenderer,\n mobileView: props.mobileView,\n conferencePhoneInfo: conferencePhoneInfo\n };\n const peoplePaneProps = useMemo(() => {\n var _a;\n return ({\n updateSidePaneRenderer,\n setDrawerMenuItems,\n inviteLink: props.callControlProps.callInvitationURL,\n onFetchAvatarPersonaData: props.onFetchAvatarPersonaData,\n onFetchParticipantMenuItems: (_a = props.callControlProps) === null || _a === void 0 ? void 0 : _a.onFetchParticipantMenuItems,\n mobileView: props.mobileView,\n peopleButtonRef,\n setParticipantActioned\n });\n }, [updateSidePaneRenderer, props.callControlProps.callInvitationURL, (_a = props.callControlProps) === null || _a === void 0 ? void 0 : _a.onFetchParticipantMenuItems, props.onFetchAvatarPersonaData, props.mobileView, peopleButtonRef, setParticipantActioned]);\n const locale = useLocale();\n const role = useSelector(getRole);\n const videoGalleryProps = usePropsFor(VideoGallery);\n const muteAllHandlers = useHandlers(MoreDrawer);\n const { setPromptProps, setIsPromptOpen, hideSpotlightButtons } = props;\n const { onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight, onMuteParticipant, spotlightedParticipants, maxParticipantsToSpotlight, localParticipant } = videoGalleryProps;\n const [showTeamsMeetingConferenceModal, setShowTeamsMeetingConferenceModal] = useState(false);\n const toggleTeamsMeetingConferenceModal = useCallback(() => {\n setShowTeamsMeetingConferenceModal(!showTeamsMeetingConferenceModal);\n }, [showTeamsMeetingConferenceModal]);\n const { isMeetingPhoneInfoPaneOpen, openMeetingPhoneInfoPane, closeMeetingPhoneInfoPane } = useMeetingPhoneInfoPane(Object.assign({}, meetingPhoneInfoPaneProps));\n const toggleMeetingPhoneInfoPane = useCallback(() => {\n if (isMeetingPhoneInfoPaneOpen) {\n closeMeetingPhoneInfoPane();\n }\n else {\n openMeetingPhoneInfoPane();\n }\n }, [closeMeetingPhoneInfoPane, isMeetingPhoneInfoPaneOpen, openMeetingPhoneInfoPane]);\n const onMeetingPhoneInfoClicked = useCallback(() => {\n setShowDrawer(false);\n toggleMeetingPhoneInfoPane();\n }, [toggleMeetingPhoneInfoPane]);\n const { pinnedParticipants, setPinnedParticipants } = props;\n const onPinParticipant = useCallback((userId) => {\n if (pinnedParticipants && pinnedParticipants.length >= MAX_PINNED_REMOTE_VIDEO_TILES) {\n return;\n }\n if (pinnedParticipants && setPinnedParticipants && !pinnedParticipants.includes(userId)) {\n setPinnedParticipants(pinnedParticipants.concat(userId));\n }\n }, [pinnedParticipants, setPinnedParticipants]);\n const onUnpinParticipant = useCallback((userId) => {\n if (pinnedParticipants && setPinnedParticipants) {\n setPinnedParticipants(pinnedParticipants.filter(participantId => participantId !== userId));\n }\n }, [setPinnedParticipants, pinnedParticipants]);\n const pinPeoplePaneProps = useMemo(() => {\n return {\n pinnedParticipants: pinnedParticipants,\n onPinParticipant: onPinParticipant,\n onUnpinParticipant: onUnpinParticipant,\n disablePinMenuItem: pinnedParticipants && pinnedParticipants.length >= MAX_PINNED_REMOTE_VIDEO_TILES\n };\n }, [onPinParticipant, onUnpinParticipant, pinnedParticipants]);\n const { onStartLocalSpotlightWithPrompt, onStopLocalSpotlightWithPrompt } = useLocalSpotlightCallbacksWithPrompt(onStartLocalSpotlight, onStopLocalSpotlight, setIsPromptOpen, setPromptProps);\n const { onStartRemoteSpotlightWithPrompt, onStopRemoteSpotlightWithPrompt } = useRemoteSpotlightCallbacksWithPrompt(onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps);\n const canRemoveSpotlight = capabilities === null || capabilities === void 0 ? void 0 : capabilities.removeParticipantsSpotlight.isPresent;\n const stopAllSpotlight = useMemo(() => canRemoveSpotlight ? () => adapter.stopAllSpotlight() : undefined, [canRemoveSpotlight, adapter]);\n const { stopAllSpotlightWithPrompt } = useStopAllSpotlightCallbackWithPrompt(stopAllSpotlight, setIsPromptOpen, setPromptProps);\n const onMuteParticipantPeoplePaneProps = useMemo(() => {\n var _a, _b;\n return {\n onMuteParticipant: ((_a = capabilities === null || capabilities === void 0 ? void 0 : capabilities.muteOthers) === null || _a === void 0 ? void 0 : _a.isPresent) || role === 'Unknown' ? onMuteParticipant : undefined,\n onMuteAllRemoteParticipants: ((_b = capabilities === null || capabilities === void 0 ? void 0 : capabilities.muteOthers) === null || _b === void 0 ? void 0 : _b.isPresent) || role === 'Unknown' ? muteAllHandlers.onMuteAllRemoteParticipants : undefined\n };\n }, [onMuteParticipant, role, capabilities === null || capabilities === void 0 ? void 0 : capabilities.muteOthers, muteAllHandlers.onMuteAllRemoteParticipants]);\n const spotlightPeoplePaneProps = useMemo(() => {\n return {\n spotlightedParticipantUserIds: spotlightedParticipants,\n onStartLocalSpotlight: hideSpotlightButtons ? undefined : onStartLocalSpotlightWithPrompt,\n onStopLocalSpotlight: hideSpotlightButtons ? undefined : onStopLocalSpotlightWithPrompt,\n onStartRemoteSpotlight: hideSpotlightButtons ? undefined : onStartRemoteSpotlightWithPrompt,\n onStopRemoteSpotlight: hideSpotlightButtons ? undefined : onStopRemoteSpotlightWithPrompt,\n onStopAllSpotlight: hideSpotlightButtons ? undefined : stopAllSpotlightWithPrompt,\n maxParticipantsToSpotlight\n };\n return {};\n }, [hideSpotlightButtons, maxParticipantsToSpotlight, onStartLocalSpotlightWithPrompt, onStartRemoteSpotlightWithPrompt, onStopLocalSpotlightWithPrompt, onStopRemoteSpotlightWithPrompt, stopAllSpotlightWithPrompt, spotlightedParticipants]);\n const { isPeoplePaneOpen, openPeoplePane, closePeoplePane } = usePeoplePane(Object.assign(Object.assign(Object.assign(Object.assign({}, peoplePaneProps), spotlightPeoplePaneProps), onMuteParticipantPeoplePaneProps), pinPeoplePaneProps));\n const togglePeoplePane = useCallback(() => {\n if (isPeoplePaneOpen) {\n closePeoplePane();\n }\n else {\n openPeoplePane();\n }\n }, [closePeoplePane, isPeoplePaneOpen, openPeoplePane]);\n useEffect(() => {\n if (isInLocalHold) {\n // close side pane on local hold\n updateSidePaneRenderer(undefined);\n }\n }, [updateSidePaneRenderer, isInLocalHold, isPeoplePaneOpen, closePeoplePane]);\n const isSidePaneOpen = useIsSidePaneOpen();\n const [renderGallery, setRenderGallery] = useState(!isSidePaneOpen && props.mobileView);\n useEffect(() => {\n if (isSidePaneOpen && props.mobileView) {\n setRenderGallery(false);\n }\n else {\n setRenderGallery(true);\n }\n }, [props.mobileView, isSidePaneOpen]);\n const modalStrings = {\n dismissModalAriaLabel: locale.strings.call.dismissModalAriaLabel\n };\n const isMobileWithActivePane = props.mobileView && isSidePaneOpen;\n const callCompositeContainerCSS = useMemo(() => {\n return {\n display: isMobileWithActivePane ? 'none' : 'flex',\n minWidth: props.mobileView ? 'unset' : `${compositeMinWidthRem}rem`,\n width: '100%',\n height: '100%',\n position: 'relative'\n };\n }, [isMobileWithActivePane, props.mobileView]);\n const onResolveVideoEffectDependency = useSelector(getVideoEffectsDependency);\n const { openVideoEffectsPane, isVideoEffectsPaneOpen } = useVideoEffectsPane(props.updateSidePaneRenderer, props.mobileView, props.latestErrors, props.onDismissError, cameraButtonRef);\n const [showDrawer, setShowDrawer] = useState(false);\n const onMoreButtonClicked = useCallback(() => {\n setShowDrawer(true);\n }, []);\n const closeDrawer = useCallback(() => {\n setShowDrawer(false);\n }, []);\n const onMoreDrawerPeopleClicked = useCallback(() => {\n setShowDrawer(false);\n togglePeoplePane();\n }, [togglePeoplePane]);\n const drawerContainerStylesValue = useMemo(() => drawerContainerStyles(DRAWER_Z_INDEX), []);\n let filteredLatestErrorNotifications = props.showErrorNotifications ? props.latestErrors : [];\n const isCameraOn = useSelector(localVideoSelector).isAvailable;\n // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK\n if (role === 'Consumer' && (props.errorBarProps || props.showErrorNotifications)) {\n filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter(e => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari');\n }\n if (props.doNotShowCameraAccessNotifications) {\n filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter(e => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari');\n }\n const isVideoPaneOpen = useIsParticularSidePaneOpen(VIDEO_EFFECTS_SIDE_PANE_ID);\n if ((isVideoPaneOpen || !isCameraOn) && (props.errorBarProps || props.showErrorNotifications)) {\n filteredLatestErrorNotifications = filteredLatestErrorNotifications.filter(e => e.type !== 'unableToStartVideoEffect');\n }\n const isTeamsCaptions = useSelector(getCaptionsKind) === 'TeamsCaptions';\n const isTeamsMeeting = useSelector(getIsTeamsMeeting);\n const isTeamsCall = useSelector(getIsTeamsCall);\n const useTeamsCaptions = isTeamsMeeting || isTeamsCall || isTeamsCaptions;\n const hasJoinedCall = useSelector(getCallStatus) === 'Connected';\n const isCaptionsOn = useSelector(getCaptionsStatus);\n const minMaxDragPosition = useMinMaxDragPosition(props.modalLayerHostId);\n const pipStyles = useMemo(() => getPipStyles(theme), [theme]);\n const galleryContainerStyles = useMemo(() => {\n var _a;\n return Object.assign(Object.assign({}, mediaGalleryContainerStyles), (((_a = props === null || props === void 0 ? void 0 : props.captionsOptions) === null || _a === void 0 ? void 0 : _a.height) === 'full' ? {\n root: {\n postion: 'absolute'\n }\n } : {}));\n }, [(_b = props === null || props === void 0 ? void 0 : props.captionsOptions) === null || _b === void 0 ? void 0 : _b.height]);\n if (isTeamsMeeting) {\n filteredLatestErrorNotifications.filter(notification => notification.type === 'teamsMeetingCallNetworkQualityLow').forEach(notification => {\n notification.onClickPrimaryButton = props.mobileView ? toggleMeetingPhoneInfoPane : toggleTeamsMeetingConferenceModal;\n });\n }\n const verticalControlBar = props.mobileView && containerWidth && containerHeight && containerWidth / containerHeight > 1 ? true : false;\n // Filter out shareScreen capability notifications if on mobile\n const filteredCapabilitesChangedNotifications = props.mobileView ? (_c = props.capabilitiesChangedNotificationBarProps) === null || _c === void 0 ? void 0 : _c.capabilitiesChangedNotifications.filter(notification => notification.capabilityName !== 'shareScreen') : (_d = props.capabilitiesChangedNotificationBarProps) === null || _d === void 0 ? void 0 : _d.capabilitiesChangedNotifications;\n let latestNotifications = props.latestNotifications;\n const reactionResources = useSelector(getReactionResources);\n return React.createElement(\"div\", { ref: containerRef, className: mergeStyles(containerDivStyles), id: props.id },\n React.createElement(Stack, { verticalFill: true, horizontalAlign: \"stretch\", className: containerClassName, \"data-ui-id\": props.dataUiId },\n React.createElement(Stack, { reversed: true, horizontal: verticalControlBar, grow: true, styles: callArrangementContainerStyles(verticalControlBar) },\n ((_e = props.callControlProps) === null || _e === void 0 ? void 0 : _e.options) !== false && !isMobileWithActivePane && React.createElement(Stack, { verticalAlign: 'center', className: mergeStyles({\n zIndex: CONTROL_BAR_Z_INDEX,\n padding: verticalControlBar ? '0.25rem' : 'unset'\n }) }, isLegacyCallControlEnabled((_f = props.callControlProps) === null || _f === void 0 ? void 0 : _f.options) ? React.createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView, peopleButtonChecked: isPeoplePaneOpen, onPeopleButtonClicked: togglePeoplePane, displayVertical: verticalControlBar })) : React.createElement(CommonCallControlBar, Object.assign({}, props.callControlProps, { ref: controlBarRef, callControls: props.callControlProps.options, callAdapter: adapter, mobileView: props.mobileView, disableButtonsForLobbyPage: isInLobby, disableButtonsForHoldScreen: isInLocalHold, peopleButtonChecked: isPeoplePaneOpen, onPeopleButtonClicked: togglePeoplePane, onMoreButtonClicked: onMoreButtonClicked, isCaptionsSupported: useTeamsCaptions && hasJoinedCall || hasJoinedCall, useTeamsCaptions: useTeamsCaptions, isCaptionsOn: isCaptionsOn, onClickVideoEffects: onResolveVideoEffectDependency ? openVideoEffectsPane : undefined, displayVertical: verticalControlBar, onUserSetOverflowGalleryPositionChange: props.onUserSetOverflowGalleryPositionChange, onUserSetGalleryLayout: props.onUserSetGalleryLayoutChange, userSetGalleryLayout: props.userSetGalleryLayout, onSetDialpadPage: props.onSetDialpadPage, dtmfDialerPresent: props.dtmfDialerPresent, peopleButtonRef: peopleButtonRef, cameraButtonRef: cameraButtonRef, onStopLocalSpotlight: !hideSpotlightButtons && localParticipant.spotlight ? onStopLocalSpotlightWithPrompt : undefined, onToggleTeamsMeetingConferenceModal: toggleTeamsMeetingConferenceModal, teamsMeetingConferenceModalPresent: showTeamsMeetingConferenceModal }))),\n ((_g = props.callControlProps) === null || _g === void 0 ? void 0 : _g.options) !== false && showDrawer && React.createElement(Stack, { styles: drawerContainerStylesValue },\n React.createElement(PreparedMoreDrawer, { callControls: props.callControlProps.options, onLightDismiss: closeDrawer, onPeopleButtonClicked: onMoreDrawerPeopleClicked, disableButtonsForHoldScreen: isInLocalHold, isCaptionsSupported: useTeamsCaptions && hasJoinedCall || hasJoinedCall, useTeamsCaptions: useTeamsCaptions, onUserSetGalleryLayout: props.onUserSetGalleryLayoutChange, userSetGalleryLayout: props.userSetGalleryLayout, onSetDialpadPage: props.onSetDialpadPage, dtmfDialerPresent: props.dtmfDialerPresent, dtmfDialerOptions: props.dtmfDialerOptions, reactionResources: reactionResources, onClickMeetingPhoneInfo: onMeetingPhoneInfoClicked })),\n React.createElement(Stack, { horizontal: true, grow: true },\n React.createElement(Stack.Item, { style: callCompositeContainerCSS },\n React.createElement(Stack.Item, { styles: callGalleryStyles, grow: true },\n React.createElement(Stack, { verticalFill: true, styles: galleryContainerStyles },\n React.createElement(Stack.Item, { styles: notificationsContainerStyles },\n props.showErrorNotifications && React.createElement(Stack, { styles: notificationStackStyles, horizontalAlign: \"center\", verticalAlign: \"center\" },\n React.createElement(NotificationStack, { onDismissNotification: props.onDismissError, activeNotifications: filteredLatestErrorNotifications })),\n latestNotifications && React.createElement(Stack, { styles: notificationStackStyles, horizontalAlign: \"center\", verticalAlign: \"center\" },\n React.createElement(NotificationStack, { activeNotifications: latestNotifications, onDismissNotification: props.onDismissNotification })),\n props.capabilitiesChangedNotificationBarProps && props.capabilitiesChangedNotificationBarProps.capabilitiesChangedNotifications.length > 0 && React.createElement(Stack, { styles: bannerNotificationStyles },\n React.createElement(CapabilitiesChangedNotificationBar, Object.assign({}, props.capabilitiesChangedNotificationBarProps, { capabilitiesChangedNotifications: filteredCapabilitesChangedNotifications !== null && filteredCapabilitesChangedNotifications !== void 0 ? filteredCapabilitesChangedNotifications : [] })))),\n renderGallery && props.onRenderGalleryContent && props.onRenderGalleryContent(),\n !isInLocalHold && React.createElement(CallingCaptionsBanner, { captionsOptions: props.captionsOptions, isMobile: props.mobileView, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, useTeamsCaptions: useTeamsCaptions, returnFocusRef: controlBarRef })))),\n React.createElement(SidePane, { mobileView: props.mobileView, maxWidth: isVideoPaneOpen ? `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` : undefined, minWidth: isVideoPaneOpen ? `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` : undefined, updateSidePaneRenderer: props.updateSidePaneRenderer, onPeopleButtonClicked: props.mobileView && !shouldShowPeopleTabHeaderButton(props.callControlProps.options) ? undefined : togglePeoplePane, disablePeopleButton: typeof props.callControlProps.options !== 'boolean' && isDisabled((_h = props.callControlProps.options) === null || _h === void 0 ? void 0 : _h.participantsButton), onChatButtonClicked: (_j = props.mobileChatTabHeader) === null || _j === void 0 ? void 0 : _j.onClick, disableChatButton: (_k = props.mobileChatTabHeader) === null || _k === void 0 ? void 0 : _k.disabled, showAddPeopleButton: !!props.callControlProps.callInvitationURL, ariaLabel: isVideoEffectsPaneOpen ? locale.strings.call.videoEffectsPaneAriaLabel : undefined }),\n props.mobileView && React.createElement(ModalLocalAndRemotePIP, { modalLayerHostId: props.modalLayerHostId, hidden: !isSidePaneOpen, styles: pipStyles, strings: modalStrings, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition, onDismissSidePane: () => {\n closePeoplePane();\n if (props.onCloseChatPane) {\n props.onCloseChatPane();\n }\n } }),\n drawerMenuItems.length > 0 && React.createElement(Stack, { styles: drawerContainerStyles() },\n React.createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItems([]), items: drawerMenuItems }))))));\n};\nconst isLegacyCallControlEnabled = (options) => {\n return !!options && options !== true && (options === null || options === void 0 ? void 0 : options.legacyControlBarExperience) === true;\n};\nconst shouldShowPeopleTabHeaderButton = (callControls) => {\n if (callControls === undefined || callControls === true) {\n return true;\n }\n if (callControls === false) {\n return false;\n }\n return callControls.participantsButton !== false && callControls.peopleButton !== false;\n};\n//# sourceMappingURL=CallArrangement.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { ErrorBar } from \"../../../../../react-components/src\";\nimport { FocusZone } from '@fluentui/react';\n/**\n * @private\n */\nexport const ConfigurationPageErrorBar = (props) => {\n const { errorBarProps } = props;\n if (errorBarProps.activeErrorMessages.length === 0) {\n return React.createElement(React.Fragment, null);\n }\n return React.createElement(FocusZone, { shouldFocusOnMount: true },\n React.createElement(ErrorBar, Object.assign({}, errorBarProps, { onDismissError: props.onDismissError })));\n};\n//# sourceMappingURL=ConfigurationPageErrorBar.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useEffect } from 'react';\nimport { mergeStyles, Stack } from '@fluentui/react';\nimport { StreamMedia, VideoTile } from \"../../../../../react-components/src\";\nimport { containerStyles, overlayBackgroundStyles, overlayContentStyles, videoTileStyles } from '../styles/ExpandedLocalVideoTile.styles';\nconst onRenderEmptyPlaceholder = () => React.createElement(React.Fragment, null);\nconst localVideoViewOptions = {\n scalingMode: 'Crop',\n isMirrored: true\n};\n/**\n * @private\n */\nexport const ExpandedLocalVideoTile = (props) => {\n var _a;\n const videoStream = props.localParticipantVideoStream;\n const isVideoReady = (_a = videoStream === null || videoStream === void 0 ? void 0 : videoStream.isAvailable) !== null && _a !== void 0 ? _a : false;\n const renderElement = videoStream === null || videoStream === void 0 ? void 0 : videoStream.renderElement;\n useEffect(() => {\n if (videoStream && isVideoReady) {\n props.onCreateLocalStreamView && props.onCreateLocalStreamView(localVideoViewOptions).catch(err => console.log('Can not render video', err));\n }\n }, [isVideoReady, videoStream, props, renderElement]);\n return React.createElement(Stack, { horizontalAlign: \"center\", verticalAlign: \"center\", styles: containerStyles, grow: true },\n React.createElement(VideoTile, { styles: videoTileStyles, renderElement: renderElement ? React.createElement(StreamMedia, { videoStreamElement: renderElement }) : undefined, onRenderPlaceholder: onRenderEmptyPlaceholder }, props.overlayContent && React.createElement(React.Fragment, null,\n React.createElement(Stack, { className: mergeStyles(overlayBackgroundStyles(isVideoReady)) }),\n React.createElement(Stack, { horizontalAlign: \"center\", verticalAlign: \"center\", className: mergeStyles(overlayContentStyles) }, props.overlayContent))));\n};\n//# sourceMappingURL=ExpandedLocalVideoTile.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 { PrimaryButton, Stack, Text } from '@fluentui/react';\nimport React, { useRef, useState } from 'react';\nimport { useLocale } from '../../localization';\nimport { HoldButton } from \"../../../../../react-components/src\";\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { holdPaneContentStyles, holdPaneLabelStyles, holdPaneTimerStyles, paneStyles, resumeButtonStyles } from '../styles/HoldPane.styles';\n/**\n * Hold pane to display when the user places themselves on hold\n *\n * @beta\n */\nexport const HoldPane = () => {\n var _a, _b, _c, _d, _e;\n const holdButtonProps = usePropsFor(HoldButton);\n const locale = useLocale();\n const strings = {\n holdScreenLabel: (_a = locale.strings.call.holdScreenLabel) !== null && _a !== void 0 ? _a : '',\n resumeCallButtonLabel: (_b = locale.strings.call.resumeCallButtonLabel) !== null && _b !== void 0 ? _b : '',\n resumeCallButtonAriaLabel: (_c = locale.strings.call.resumeCallButtonAriaLabel) !== null && _c !== void 0 ? _c : '',\n resumingCallButtonLabel: (_d = locale.strings.call.resumingCallButtonLabel) !== null && _d !== void 0 ? _d : '',\n resumingCallButtonAriaLabel: (_e = locale.strings.call.resumingCallButtonAriaLabel) !== null && _e !== void 0 ? _e : ''\n };\n const [time, setTime] = useState(0);\n const elapsedTime = getReadableTime(time);\n const startTime = useRef(performance.now());\n const [resumingCall, setResumingCall] = useState(false);\n React.useEffect(() => {\n const interval = setInterval(() => {\n setTime(performance.now() - startTime.current);\n }, 10);\n return () => {\n clearInterval(interval);\n };\n }, [startTime]);\n return React.createElement(Stack, { styles: paneStyles },\n React.createElement(Stack, { horizontal: true, styles: holdPaneContentStyles },\n React.createElement(Text, { styles: holdPaneTimerStyles }, elapsedTime),\n React.createElement(Text, { styles: holdPaneLabelStyles, role: \"alert\", \"aria-live\": \"assertive\" }, strings.holdScreenLabel),\n React.createElement(PrimaryButton, { text: !resumingCall ? strings.resumeCallButtonLabel : strings.resumingCallButtonLabel, ariaLabel: !resumingCall ? strings.resumeCallButtonAriaLabel : strings.resumingCallButtonAriaLabel, styles: resumeButtonStyles, disabled: resumingCall, onClick: () => __awaiter(void 0, void 0, void 0, function* () {\n setResumingCall(true);\n try {\n yield holdButtonProps.onToggleHold();\n }\n catch (e) {\n setResumingCall(false);\n throw e;\n }\n }), \"data-ui-id\": \"hold-page-resume-call-button\", autoFocus: true })));\n};\nconst getMinutes = (time) => {\n return Math.floor(getSeconds(time) / 60);\n};\nconst getSeconds = (time) => {\n return Math.floor(time / 1000);\n};\nconst 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=HoldPane.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { mergeStyles, Stack, Text } from '@fluentui/react';\nimport { LocalVideoCameraCycleButton, useTheme } from \"../../../../../react-components/src\";\nimport { localCameraSwitcherContainerStyles, moreDetailsStyle, overlayContainerStyle, titleStyle } from '../styles/LobbyTile.styles';\nimport { ExpandedLocalVideoTile } from './ExpandedLocalVideoTile';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { localVideoCameraCycleButtonSelector } from '../selectors/LocalVideoTileSelector';\nimport { useSelector } from '../hooks/useSelector';\n/**\n * @private\n */\nexport const LobbyTile = (props) => {\n var _a;\n const videoStream = props.localParticipantVideoStream;\n const isVideoReady = (_a = videoStream === null || videoStream === void 0 ? void 0 : videoStream.isAvailable) !== null && _a !== void 0 ? _a : false;\n const cameraSwitcherCameras = useSelector(localVideoCameraCycleButtonSelector);\n const cameraSwitcherCallback = useHandlers(LocalVideoCameraCycleButton);\n const palette = useTheme().palette;\n const handlers = useHandlers(ExpandedLocalVideoTile);\n return React.createElement(ExpandedLocalVideoTile, Object.assign({ localParticipantVideoStream: props.localParticipantVideoStream, overlayContent: props.overlayProps ? React.createElement(Stack, { verticalFill: true, horizontalAlign: \"center\", verticalAlign: \"center\", className: mergeStyles(overlayContainerStyle), \"aria-atomic\": true },\n props.showLocalVideoCameraCycleButton && isVideoReady && React.createElement(Stack.Item, { styles: localCameraSwitcherContainerStyles },\n React.createElement(LocalVideoCameraCycleButton, Object.assign({}, cameraSwitcherCallback, cameraSwitcherCameras, { size: 'large' }))),\n React.createElement(Stack.Item, { className: mergeStyles(titleStyle(palette, isVideoReady)) }, props.overlayProps.overlayIcon),\n React.createElement(Text, { className: mergeStyles(titleStyle(palette, isVideoReady)), \"aria-live\": \"assertive\", \"data-ui-id\": \"lobbyScreenTitle\", role: \"alert\" }, props.overlayProps.title),\n props.overlayProps.moreDetails && React.createElement(Text, { className: mergeStyles(moreDetailsStyle(palette, isVideoReady)), \"aria-live\": \"assertive\" }, props.overlayProps.moreDetails)) : undefined }, handlers));\n};\n//# sourceMappingURL=LobbyTile.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useMemo } from 'react';\nimport { _LocalVideoTile, _RemoteVideoTile, _PictureInPictureInPicture } from \"../../../../../react-components/src\";\nimport { useLocale } from '../../localization';\n/**\n * @private\n */\nexport const LocalAndRemotePIP = (props) => {\n var _a, _b;\n const { localParticipant, remoteParticipant, onCreateLocalStreamView, onDisposeLocalStreamView, onCreateRemoteStreamView, onDisposeRemoteStreamView } = props;\n const localVideoTileProps = useMemo(() => {\n var _a, _b;\n return ({\n onCreateLocalStreamView,\n onDisposeLocalStreamView,\n localVideoViewOptions,\n displayName: localParticipant.displayName,\n showLabel: false,\n showMuteIndicator: false,\n showCameraSwitcherInLocalPreview: false,\n isAvailable: (_a = localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable,\n renderElement: (_b = localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement,\n raisedHand: localParticipant.raisedHand\n });\n }, [localParticipant.displayName, (_a = localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, (_b = localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, onCreateLocalStreamView, onDisposeLocalStreamView, localParticipant.raisedHand]);\n const remoteVideoTileProps = useMemo(() => {\n var _a, _b, _c;\n return !remoteParticipant ? undefined : {\n remoteParticipant: remoteParticipant,\n onCreateRemoteStreamView,\n onDisposeRemoteStreamView,\n remoteVideoViewOptions,\n displayName: remoteParticipant === null || remoteParticipant === void 0 ? void 0 : remoteParticipant.displayName,\n showLabel: false,\n showMuteIndicator: false,\n isAvailable: (_a = remoteParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable,\n isReceiving: (_b = remoteParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.isReceiving,\n renderElement: (_c = remoteParticipant.videoStream) === null || _c === void 0 ? void 0 : _c.renderElement,\n userId: remoteParticipant.userId,\n key: remoteParticipant.userId\n };\n }, [remoteParticipant, onCreateRemoteStreamView, onDisposeRemoteStreamView]);\n const locale = useLocale();\n const ariaLabel = locale.strings.callWithChat.pictureInPictureTileAriaLabel;\n const strings = useMemo(() => ({\n rootAriaLabel: ariaLabel\n }), [ariaLabel]);\n // If there are no remote participants, show the local participant as the primary tile\n const primaryTileProps = useMemo(() => ({\n children: remoteVideoTileProps ? React.createElement(_RemoteVideoTile, Object.assign({}, remoteVideoTileProps, { strings: locale.component.strings.videoGallery, onLongTouch: () => { } })) : React.createElement(_LocalVideoTile, Object.assign({}, localVideoTileProps)),\n // TODO: when the calling SDK provides height/width stream information - update this to reflect the stream orientation.\n orientation: 'portrait'\n }), [localVideoTileProps, remoteVideoTileProps, locale.component.strings.videoGallery]);\n // If we are showing the local participant as the primary tile, show nothing for the secondary tile\n const secondaryTileProps = useMemo(() => remoteVideoTileProps ? {\n children: React.createElement(_LocalVideoTile, Object.assign({}, localVideoTileProps, { personaMinSize: 20 })),\n // TODO: when the calling SDK provides height/width stream information - update this to reflect the stream orientation.\n orientation: 'portrait'\n } : undefined, [localVideoTileProps, remoteVideoTileProps]);\n return React.createElement(_PictureInPictureInPicture, { onClick: props.onClick, strings: strings, primaryTile: primaryTileProps, secondaryTile: secondaryTileProps });\n};\nconst localVideoViewOptions = {\n scalingMode: 'Crop',\n isMirrored: true\n};\nconst remoteVideoViewOptions = {\n scalingMode: 'Crop',\n isMirrored: false\n};\n//# sourceMappingURL=LocalAndRemotePIP.js.map","/**\n * @private\n */\nexport const ConfigurationPageCameraDropdown = (props) => {\n return props.cameraGrantedDropdown;\n};\n//# sourceMappingURL=ConfigurationPageCameraDropdown.js.map","/**\n * @private\n */\nexport const ConfigurationPageMicDropdown = (props) => {\n return props.micGrantedDropdown;\n};\n//# sourceMappingURL=ConfigurationPageMicDropdown.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 { Dropdown, Label, mergeStyles, Stack } from '@fluentui/react';\nimport { DefaultButton } from '@fluentui/react';\nimport { useEffect } from 'react';\nimport { useTheme } from \"../../../../../react-components/src\";\nimport React from 'react';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { useLocale } from '../../localization';\nimport { deviceSelectionContainerStyles, dropDownStyles, dropDownTitleIconStyles, mainStackTokens, optionIconStyles, soundStackTokens } from '../styles/LocalDeviceSettings.styles';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { ConfigurationPageCameraDropdown } from './ConfigurationPageCameraDropdown';\nimport { ConfigurationPageMicDropdown } from './ConfigurationPageMicDropdown';\nimport { cameraAndVideoEffectsContainerStyleDesktop } from '../styles/CallConfiguration.styles';\nimport { effectsButtonStyles } from '../styles/CallConfiguration.styles';\nimport { useSelector } from '../hooks/useSelector';\nimport { getRole, getVideoEffectsDependency } from '../selectors/baseSelectors';\nimport { getEnvironmentInfo } from '../selectors/baseSelectors';\nimport { _isSafari } from '../utils';\nimport { useId } from '@fluentui/react-hooks';\nconst getDropDownList = (list) => {\n // Remove duplicates\n const noDuplicates = new Map();\n for (const item of list) {\n noDuplicates.set(item.id, item);\n }\n const dropdownList = [];\n for (const item of noDuplicates.values()) {\n dropdownList.push({\n key: item.id,\n text: item.name === '' ? item.deviceType : item.name\n });\n }\n return dropdownList;\n};\nconst getOptionIcon = (type) => {\n if (type === 'Camera') {\n return React.createElement(CallCompositeIcon, { iconName: \"LocalDeviceSettingsCamera\", className: optionIconStyles });\n }\n else if (type === 'Microphone') {\n return React.createElement(CallCompositeIcon, { iconName: \"LocalDeviceSettingsMic\", className: optionIconStyles });\n }\n else if (type === 'Speaker') {\n return React.createElement(CallCompositeIcon, { iconName: \"LocalDeviceSettingsSpeaker\", className: optionIconStyles });\n }\n else {\n return undefined;\n }\n};\nconst onRenderTitle = (iconType, props) => {\n var _a;\n return props ? React.createElement(\"div\", { className: dropDownTitleIconStyles },\n getOptionIcon(iconType),\n React.createElement(\"span\", null, (_a = props[0]) === null || _a === void 0 ? void 0 : _a.text)) : React.createElement(React.Fragment, null);\n};\nconst localVideoViewOptions = {\n scalingMode: 'Crop',\n isMirrored: true\n};\n/**\n * @private\n */\nexport const LocalDeviceSettings = (props) => {\n var _a;\n const theme = useTheme();\n const locale = useLocale();\n const adapter = useAdapter();\n const onResolveVideoEffectDependency = useSelector(getVideoEffectsDependency);\n const defaultPlaceHolder = locale.strings.call.defaultPlaceHolder;\n const cameraLabel = locale.strings.call.cameraLabel;\n const soundLabel = locale.strings.call.soundLabel;\n const noSpeakersLabel = locale.strings.call.noSpeakersLabel;\n const noCameraLabel = locale.strings.call.noCamerasLabel;\n const noMicLabel = locale.strings.call.noMicrophonesLabel;\n const role = useSelector(getRole);\n const cameraPermissionGranted = props.cameraPermissionGranted;\n const micPermissionGranted = props.microphonePermissionGranted;\n const roleCanUseCamera = role !== 'Consumer';\n const roleCanUseMic = role !== 'Consumer';\n // TODO: speaker permission is tied to microphone permission (when you request 'audio' permission using the SDK) its\n // actually granting access to query both microphone and speaker. However the browser popup asks you explicity for\n // 'microphone'. This needs investigation on how we want to handle this and maybe needs follow up with SDK team.\n useEffect(() => {\n if (cameraPermissionGranted) {\n adapter.queryCameras();\n }\n if (micPermissionGranted) {\n adapter.queryMicrophones();\n }\n adapter.querySpeakers();\n }, [adapter, cameraPermissionGranted, micPermissionGranted]);\n const hasCameras = props.cameras.length > 0;\n const hasMicrophones = props.microphones.length > 0;\n const hasSpeakers = props.speakers.length > 0;\n const environmentInfo = useSelector(getEnvironmentInfo);\n const isSafariWithNoSpeakers = _isSafari(environmentInfo) && !hasSpeakers;\n const cameraLabelId = useId('camera-label');\n const soundLabelId = useId('sound-label');\n const cameraGrantedDropdown = React.createElement(Dropdown, { \"data-ui-id\": \"call-composite-local-camera-settings\", \"aria-labelledby\": cameraLabelId, placeholder: hasCameras ? defaultPlaceHolder : noCameraLabel, options: cameraPermissionGranted ? getDropDownList(props.cameras) : [{\n key: 'deniedOrUnknown',\n text: ''\n }], styles: dropDownStyles(theme), disabled: !cameraPermissionGranted || !hasCameras, errorMessage: props.cameraPermissionGranted === undefined || props.cameraPermissionGranted ? undefined : locale.strings.call.cameraPermissionDenied, defaultSelectedKey: micPermissionGranted ? props.selectedCamera ? props.selectedCamera.id : props.cameras ? (_a = props.cameras[0]) === null || _a === void 0 ? void 0 : _a.id : '' : 'deniedOrUnknown', onChange: (event, option, index) => __awaiter(void 0, void 0, void 0, function* () {\n const camera = props.cameras[index !== null && index !== void 0 ? index : 0];\n if (camera) {\n yield props.onSelectCamera(camera, localVideoViewOptions);\n }\n else {\n console.error('No cameras available');\n }\n }), onRenderTitle: (props) => onRenderTitle('Camera', props) });\n const micGrantedDropdown = React.createElement(React.Fragment, null, roleCanUseMic && React.createElement(Dropdown, { \"aria-labelledby\": soundLabelId, placeholder: hasMicrophones ? defaultPlaceHolder : noMicLabel, styles: dropDownStyles(theme), disabled: !micPermissionGranted || !hasMicrophones, errorMessage: props.microphonePermissionGranted === undefined || props.microphonePermissionGranted ? undefined : locale.strings.call.microphonePermissionDenied, options: micPermissionGranted ? getDropDownList(props.microphones) : [{\n key: 'deniedOrUnknown',\n text: ''\n }], defaultSelectedKey: micPermissionGranted ? props.selectedMicrophone ? props.selectedMicrophone.id : defaultDeviceId(props.microphones) : 'deniedOrUnknown', onChange: (event, option, index) => {\n const microphone = props.microphones[index !== null && index !== void 0 ? index : 0];\n if (microphone) {\n props.onSelectMicrophone(microphone);\n }\n else {\n console.error('No microphones available');\n }\n }, onRenderTitle: (props) => onRenderTitle('Microphone', props) }));\n const speakerDropdown = React.createElement(Dropdown, { \"aria-labelledby\": soundLabelId, placeholder: hasSpeakers ? defaultPlaceHolder : noSpeakersLabel, styles: dropDownStyles(theme), disabled: props.speakers.length === 0, options: getDropDownList(props.speakers), defaultSelectedKey: props.selectedSpeaker ? props.selectedSpeaker.id : defaultDeviceId(props.speakers), onChange: (event, option, index) => {\n const speaker = props.speakers[index !== null && index !== void 0 ? index : 0];\n if (speaker) {\n props.onSelectSpeaker(speaker);\n }\n else {\n console.error('No speakers available');\n }\n }, onRenderTitle: (props) => onRenderTitle('Speaker', props) });\n return React.createElement(Stack, { \"data-ui-id\": \"call-composite-device-settings\", tokens: mainStackTokens, styles: deviceSelectionContainerStyles },\n roleCanUseCamera && React.createElement(Stack, null,\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\", styles: cameraAndVideoEffectsContainerStyleDesktop },\n React.createElement(Label, { id: cameraLabelId, className: mergeStyles(dropDownStyles(theme).label) }, cameraLabel),\n onResolveVideoEffectDependency && React.createElement(DefaultButton, { iconProps: {\n iconName: 'ConfigurationScreenVideoEffectsButton'\n }, styles: effectsButtonStyles(theme, !cameraPermissionGranted), onClick: props.onClickVideoEffects, disabled: !cameraPermissionGranted, \"data-ui-id\": 'call-config-video-effects-button' }, locale.strings.call.configurationPageVideoEffectsButtonLabel)),\n React.createElement(ConfigurationPageCameraDropdown, { cameraGrantedDropdown: cameraGrantedDropdown, cameraPermissionGranted: cameraPermissionGranted !== null && cameraPermissionGranted !== void 0 ? cameraPermissionGranted : false, ariaLabelledby: cameraLabelId })),\n React.createElement(Stack, null,\n React.createElement(Label, { id: soundLabelId, className: mergeStyles(dropDownStyles(theme).label) }, soundLabel),\n React.createElement(Stack, { \"data-ui-id\": \"call-composite-sound-settings\", tokens: soundStackTokens },\n React.createElement(ConfigurationPageMicDropdown, { micGrantedDropdown: micGrantedDropdown, micPermissionGranted: micPermissionGranted !== null && micPermissionGranted !== void 0 ? micPermissionGranted : false, ariaLabelledby: soundLabelId }),\n isSafariWithNoSpeakers ? React.createElement(React.Fragment, null) : speakerDropdown)));\n};\nconst defaultDeviceId = (devices) => {\n var _a;\n if (devices.length === 0) {\n return undefined;\n }\n const defaultDevice = devices.find(device => device.isSystemDefault);\n if (defaultDevice) {\n return defaultDevice.id;\n }\n return (_a = devices[0]) === null || _a === void 0 ? void 0 : _a.id;\n};\n//# sourceMappingURL=LocalDeviceSettings.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 { mergeStyles, Stack, Text } from '@fluentui/react';\nimport { CameraButton, ControlBar, MicrophoneButton, DevicesButton, StreamMedia, useTheme, VideoTile } from \"../../../../../react-components/src\";\nimport React, { useCallback } from 'react';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { useLocale } from '../../localization';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { getLocalMicrophoneEnabled } from '../selectors/baseSelectors';\nimport { devicePermissionSelector } from '../selectors/devicePermissionSelector';\nimport { localPreviewSelector } from '../selectors/localPreviewSelector';\nimport { buttonFlyoutIncreasedSizeStyles } from '../styles/Buttons.styles';\nimport { cameraOffLabelStyle, localPreviewButtonStyle, localPreviewContainerStyleDesktop, localPreviewContainerStyleMobile, localPreviewTileStyle } from '../styles/LocalPreview.styles';\n/**\n * @private\n */\nexport const LocalPreview = (props) => {\n var _a;\n const locale = useLocale();\n const cameraButtonProps = usePropsFor(CameraButton);\n const localPreviewProps = useSelector(localPreviewSelector);\n const devicesButtonProps = usePropsFor(DevicesButton);\n const { audio: microphonePermissionGranted, video: cameraPermissionGranted } = useSelector(devicePermissionSelector);\n const isLocalMicrophoneEnabled = useSelector(getLocalMicrophoneEnabled);\n const adapter = useAdapter();\n const onToggleMic = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n isLocalMicrophoneEnabled ? adapter.mute() : adapter.unmute();\n }), [adapter, isLocalMicrophoneEnabled]);\n const hasNoSpeakers = !devicesButtonProps.speakers.length;\n const hasNoDevices = devicesButtonProps.cameras.length === 0 && devicesButtonProps.microphones.length === 0 && devicesButtonProps.speakers.length === 0;\n const hasCameras = devicesButtonProps.cameras.length > 0;\n const hasMicrophones = devicesButtonProps.microphones.length > 0;\n const cameraLoadingString = (_a = locale.strings.call.configurationPageCameraIsLoadingLabel) !== null && _a !== void 0 ? _a : locale.strings.call.cameraTurnedOff;\n const previewCameraString = props.cameraLoading ? cameraLoadingString : locale.strings.call.cameraTurnedOff;\n const theme = useTheme();\n const onRenderPlaceholder = useCallback(() => {\n return React.createElement(Stack, { className: mergeStyles({\n width: '100%',\n height: '100%',\n // The text should be centered in the local preview with the camera icon\n // appearing above the text. To compensate for the camera icon's height,\n // we add a negative margin to the top of the container.\n marginTop: '-0.8rem'\n }), verticalAlign: \"center\" },\n React.createElement(Stack.Item, { align: \"center\" },\n React.createElement(CallCompositeIcon, { iconName: \"LocalPreviewPlaceholder\", className: mergeStyles(cameraOffLabelStyle, {\n color: theme.palette.neutralTertiary\n }) })),\n React.createElement(Stack.Item, { align: \"center\" },\n React.createElement(Text, { className: mergeStyles(cameraOffLabelStyle, {\n color: theme.palette.neutralSecondary\n }) }, previewCameraString)));\n }, [theme, previewCameraString]);\n const devicesButtonStyles = props.mobileView ? {\n menuStyles: {\n menuItemStyles: buttonFlyoutIncreasedSizeStyles\n }\n } : undefined;\n return React.createElement(Stack, { \"data-ui-id\": \"call-composite-local-preview\", className: props.mobileView ? localPreviewContainerStyleMobile(theme) : localPreviewContainerStyleDesktop(theme) },\n React.createElement(VideoTile, { styles: localPreviewTileStyle, renderElement: (localPreviewProps === null || localPreviewProps === void 0 ? void 0 : localPreviewProps.videoStreamElement) ? React.createElement(StreamMedia, { videoStreamElement: localPreviewProps.videoStreamElement }) : undefined, onRenderPlaceholder: onRenderPlaceholder },\n React.createElement(ControlBar, { layout: \"floatingBottom\" },\n React.createElement(MicrophoneButton, { \"data-ui-id\": \"call-composite-local-device-settings-microphone-button\", checked: isLocalMicrophoneEnabled, onToggleMicrophone: onToggleMic, disabled: !microphonePermissionGranted || !hasMicrophones, showLabel: true, \n // disable tooltip as it obscures list of devices on mobile\n strings: props.mobileView ? {\n tooltipOnContent: '',\n tooltipOffContent: '',\n tooltipDisabledContent: ''\n } : {}, styles: localPreviewButtonStyle(props.mobileView) }),\n React.createElement(CameraButton, Object.assign({ \"data-ui-id\": \"call-composite-local-device-settings-camera-button\" }, cameraButtonProps, { onToggleCamera: props.onToggleCamera, showLabel: true, disabled: !cameraPermissionGranted || !hasCameras || props.cameraLoading, \n // disable tooltip as it obscures list of devices on mobile\n strings: props.mobileView ? {\n tooltipOnContent: '',\n tooltipOffContent: '',\n tooltipDisabledContent: '',\n tooltipVideoLoadingContent: ''\n } : {}, styles: localPreviewButtonStyle(props.mobileView) })),\n props.showDevicesButton && React.createElement(DevicesButton, Object.assign({ \"data-ui-id\": \"call-composite-local-device-settings-options-button\" }, devicesButtonProps, { \n // disable button whilst all other buttons are disabled\n disabled: !microphonePermissionGranted && !cameraPermissionGranted && hasNoSpeakers || hasNoDevices, showLabel: true, \n // disable tooltip as it obscures list of devices on mobile\n strings: props.mobileView ? {\n tooltipContent: ''\n } : {}, styles: devicesButtonStyles })))));\n};\n//# sourceMappingURL=LocalPreview.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useCallback, useMemo } from 'react';\nimport { useRef } from 'react';\nimport { VideoGallery, Announcer } from \"../../../../../react-components/src\";\nimport { _useContainerWidth, _useContainerHeight } from \"../../../../../react-components/src\";\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { AvatarPersona } from '../../common/AvatarPersona';\nimport { mergeStyles, Stack } from '@fluentui/react';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { useSelector } from '../hooks/useSelector';\nimport { localVideoCameraCycleButtonSelector } from '../selectors/LocalVideoTileSelector';\nimport { LocalVideoCameraCycleButton } from \"../../../../../react-components/src\";\nimport { useParticipantChangedAnnouncement } from '../utils/MediaGalleryUtils';\nimport { useLocalSpotlightCallbacksWithPrompt, useRemoteSpotlightCallbacksWithPrompt } from '../utils/spotlightUtils';\nimport { getCapabilites, getIsRoomsCall, getReactionResources, getRole } from '../selectors/baseSelectors';\nconst VideoGalleryStyles = {\n root: {\n height: '100%',\n minHeight: '10rem',\n // space affordance to ensure media gallery is never collapsed\n minWidth: '6rem'\n }\n};\nconst localVideoViewOptions = {\n scalingMode: 'Crop',\n isMirrored: true\n};\nconst remoteVideoViewOptions = {\n scalingMode: 'Crop'\n};\n/**\n * @private\n */\nexport const MediaGallery = (props) => {\n var _a, _b;\n const { pinnedParticipants = [], setPinnedParticipants, setIsPromptOpen, setPromptProps, hideSpotlightButtons, videoTilesOptions, captionsOptions } = props;\n const videoGalleryProps = usePropsFor(VideoGallery);\n const cameraSwitcherCameras = useSelector(localVideoCameraCycleButtonSelector);\n const cameraSwitcherCallback = useHandlers(LocalVideoCameraCycleButton);\n const announcerString = useParticipantChangedAnnouncement();\n const userRole = useSelector(getRole);\n const capabilities = useSelector(getCapabilites);\n const isRoomsCall = useSelector(getIsRoomsCall);\n const containerRef = useRef(null);\n const containerWidth = _useContainerWidth(containerRef);\n const containerHeight = _useContainerHeight(containerRef);\n const containerAspectRatio = containerWidth && containerHeight ? containerWidth / containerHeight : 0;\n const reactionResources = useSelector(getReactionResources);\n const layoutBasedOnTilePosition = getVideoGalleryLayoutBasedOnLocalOptions((_a = props.localVideoTileOptions) === null || _a === void 0 ? void 0 : _a.position);\n const cameraSwitcherProps = useMemo(() => {\n return Object.assign(Object.assign({}, cameraSwitcherCallback), cameraSwitcherCameras);\n }, [cameraSwitcherCallback, cameraSwitcherCameras]);\n const onRenderAvatar = useCallback((userId, options) => {\n return React.createElement(Stack, { className: mergeStyles({\n position: 'absolute',\n height: '100%',\n width: '100%'\n }) },\n React.createElement(Stack, { styles: {\n root: {\n margin: 'auto',\n maxHeight: '100%'\n }\n } }, (options === null || options === void 0 ? void 0 : options.coinSize) && React.createElement(AvatarPersona, Object.assign({ userId: userId }, options, { dataProvider: props.onFetchAvatarPersonaData }))));\n }, [props.onFetchAvatarPersonaData]);\n const remoteVideoTileMenuOptions = useMemo(() => {\n var _a;\n return ((_a = props.remoteVideoTileMenuOptions) === null || _a === void 0 ? void 0 : _a.isHidden) ? false : props.isMobile ? {\n kind: 'drawer',\n hostId: props.drawerMenuHostId\n } : {\n kind: 'contextual'\n };\n }, [(_b = props.remoteVideoTileMenuOptions) === null || _b === void 0 ? void 0 : _b.isHidden, props.isMobile, props.drawerMenuHostId]);\n const overflowGalleryPosition = useMemo(() => {\n return containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9 ? 'verticalRight' : 'horizontalBottom';\n }, [containerWidth, containerHeight]);\n const { onStartLocalSpotlight, onStopLocalSpotlight, onStartRemoteSpotlight, onStopRemoteSpotlight } = videoGalleryProps;\n const { onStartLocalSpotlightWithPrompt, onStopLocalSpotlightWithPrompt } = useLocalSpotlightCallbacksWithPrompt(onStartLocalSpotlight, onStopLocalSpotlight, setIsPromptOpen, setPromptProps);\n const { onStartRemoteSpotlightWithPrompt, onStopRemoteSpotlightWithPrompt } = useRemoteSpotlightCallbacksWithPrompt(onStartRemoteSpotlight, onStopRemoteSpotlight, setIsPromptOpen, setPromptProps);\n const galleryStyles = useMemo(() => {\n return Object.assign(Object.assign({}, VideoGalleryStyles), ((captionsOptions === null || captionsOptions === void 0 ? void 0 : captionsOptions.height) === 'full' ? {\n root: {\n postion: 'absolute'\n }\n } : {}));\n }, [captionsOptions === null || captionsOptions === void 0 ? void 0 : captionsOptions.height]);\n const onPinParticipant = useMemo(() => {\n return setPinnedParticipants ? (userId) => {\n if (!pinnedParticipants.includes(userId)) {\n setPinnedParticipants(pinnedParticipants.concat(userId));\n }\n } : undefined;\n }, [setPinnedParticipants, pinnedParticipants]);\n const onUnpinParticipant = useMemo(() => {\n return setPinnedParticipants ? (userId) => {\n setPinnedParticipants(pinnedParticipants.filter(participantId => participantId !== userId));\n } : undefined;\n }, [setPinnedParticipants, pinnedParticipants]);\n const VideoGalleryMemoized = useMemo(() => {\n var _a;\n const layoutBasedOnUserSelection = () => {\n return props.localVideoTileOptions ? layoutBasedOnTilePosition : props.userSetGalleryLayout;\n return layoutBasedOnTilePosition;\n };\n return React.createElement(VideoGallery, Object.assign({}, videoGalleryProps, { videoTilesOptions: videoTilesOptions, localVideoViewOptions: localVideoViewOptions, remoteVideoViewOptions: remoteVideoViewOptions, styles: galleryStyles, layout: layoutBasedOnUserSelection(), showCameraSwitcherInLocalPreview: props.isMobile, localVideoCameraCycleButtonProps: cameraSwitcherProps, onRenderAvatar: onRenderAvatar, remoteVideoTileMenu: remoteVideoTileMenuOptions, overflowGalleryPosition: overflowGalleryPosition, localVideoTileSize: props.localVideoTileOptions === false || userRole === 'Consumer' || isRoomsCall && userRole === 'Unknown' ? 'hidden' : props.isMobile && containerAspectRatio < 1 ? '9:16' : '16:9', pinnedParticipants: pinnedParticipants, onPinParticipant: onPinParticipant, onUnpinParticipant: onUnpinParticipant, reactionResources: reactionResources, onStartLocalSpotlight: hideSpotlightButtons ? undefined : onStartLocalSpotlightWithPrompt, onStopLocalSpotlight: hideSpotlightButtons ? undefined : onStopLocalSpotlightWithPrompt, onStartRemoteSpotlight: hideSpotlightButtons ? undefined : onStartRemoteSpotlightWithPrompt, onStopRemoteSpotlight: hideSpotlightButtons ? undefined : onStopRemoteSpotlightWithPrompt, onMuteParticipant: ((_a = capabilities === null || capabilities === void 0 ? void 0 : capabilities.muteOthers) === null || _a === void 0 ? void 0 : _a.isPresent) || userRole === 'Unknown' ? videoGalleryProps.onMuteParticipant : undefined }));\n }, [videoGalleryProps, videoTilesOptions, galleryStyles, props.isMobile, props.localVideoTileOptions, props.userSetGalleryLayout, cameraSwitcherProps, onRenderAvatar, remoteVideoTileMenuOptions, overflowGalleryPosition, userRole, isRoomsCall, containerAspectRatio, pinnedParticipants, onPinParticipant, onUnpinParticipant, reactionResources, hideSpotlightButtons, onStartLocalSpotlightWithPrompt, onStopLocalSpotlightWithPrompt, onStartRemoteSpotlightWithPrompt, onStopRemoteSpotlightWithPrompt, layoutBasedOnTilePosition, capabilities === null || capabilities === void 0 ? void 0 : capabilities.muteOthers]);\n return React.createElement(\"div\", { ref: containerRef, style: mediaGalleryContainerStyles },\n React.createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),\n VideoGalleryMemoized);\n};\nconst mediaGalleryContainerStyles = {\n width: '100%',\n height: '100%'\n};\nconst getVideoGalleryLayoutBasedOnLocalOptions = (localTileOptions) => {\n return localTileOptions === 'grid' ? 'default' : 'floatingLocalVideo';\n};\n//# sourceMappingURL=MediaGallery.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { useTheme } from \"../../../../../react-components/src\";\nimport { ExpandedLocalVideoTile } from './ExpandedLocalVideoTile';\nimport { mergeStyles, Stack, Text } from '@fluentui/react';\n// eslint-disable-next-line no-restricted-imports\nimport { Icon } from '@fluentui/react';\nimport { useLocale } from '../../localization';\nimport { containerStyle, headerContainerStyle, moreDetailsStyle, titleContainerStyle, titleStyle } from '../styles/NetworkReconnectTile.styles';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { getTeamsMeetingCoordinates, getIsTeamsMeeting } from '../selectors/baseSelectors';\nimport { useSelector } from '../hooks/useSelector';\nimport { phoneInfoTextStyle, phoneInfoIcon, phoneInfoInstructionLine, phoneInfoStep, phoneInfoIconStyle, phoneInfoLabelStyle, titleClassName, titleContainerClassName, infoConnectionLinkStyle } from '../../common/styles/TeamsMeetingConferenceInfo.style';\nimport { formatPhoneNumberInfo, _formatPhoneNumber, formatPhoneNumberLink } from \"../../../../../react-components/src\";\nimport { _pxToRem } from \"../../../../../acs-ui-common/src\";\nimport { Link } from '@fluentui/react';\n/**\n * @private\n */\nexport const NetworkReconnectTile = (props) => {\n var _a;\n const videoStream = props.localParticipantVideoStream;\n const isVideoReady = (_a = videoStream === null || videoStream === void 0 ? void 0 : videoStream.isAvailable) !== null && _a !== void 0 ? _a : false;\n const palette = useTheme().palette;\n const strings = useLocale().strings.call;\n const localeStrings = useLocale().component.strings.meetingConferencePhoneInfo;\n const theme = useTheme();\n const handlers = useHandlers(ExpandedLocalVideoTile);\n const isTeamsMeeting = useSelector(getIsTeamsMeeting);\n const meetingCoordinates = useSelector(getTeamsMeetingCoordinates);\n return React.createElement(ExpandedLocalVideoTile, Object.assign({ localParticipantVideoStream: props.localParticipantVideoStream, overlayContent: React.createElement(Stack, { verticalFill: true, horizontalAlign: \"center\", verticalAlign: \"center\", className: mergeStyles(containerStyle), \"aria-atomic\": true },\n React.createElement(Stack, { role: \"alert\", verticalFill: true, horizontalAlign: \"center\", verticalAlign: \"center\", className: mergeStyles(headerContainerStyle) },\n React.createElement(Stack, { horizontal: true, className: mergeStyles(titleContainerStyle) },\n React.createElement(CallCompositeIcon, { iconName: \"NetworkReconnectIcon\", className: mergeStyles(titleStyle(palette, isVideoReady)) }),\n React.createElement(Text, { className: mergeStyles(titleStyle(palette, isVideoReady)) }, strings.networkReconnectTitle)),\n React.createElement(Text, { className: mergeStyles(moreDetailsStyle(palette, isVideoReady)) }, strings.networkReconnectMoreDetails)),\n isTeamsMeeting && meetingCoordinates && meetingCoordinates[0] && React.createElement(Stack, null,\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"center\", verticalAlign: \"center\", className: titleContainerClassName },\n React.createElement(Text, { className: titleClassName }, localeStrings.meetingConferencePhoneInfoModalTitle)),\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\", className: phoneInfoInstructionLine },\n React.createElement(Stack, { className: infoConnectionLinkStyle(theme) }),\n React.createElement(Stack.Item, null,\n React.createElement(Stack, { horizontal: true, className: phoneInfoStep },\n React.createElement(Stack.Item, { className: phoneInfoIcon(theme) },\n React.createElement(Stack, { verticalAlign: \"center\", horizontalAlign: \"center\" },\n React.createElement(Icon, { iconName: \"JoinByPhoneDialStepIcon\", className: phoneInfoIconStyle(theme) }))),\n React.createElement(Stack.Item, null,\n React.createElement(Text, { className: phoneInfoLabelStyle }, localeStrings.meetingConferencePhoneInfoModalDialIn)))),\n React.createElement(Stack.Item, { className: phoneInfoStep }, meetingCoordinates.map((phoneNumber, index) => React.createElement(Stack.Item, { key: index },\n React.createElement(Text, { className: phoneInfoTextStyle },\n props.isMobile && React.createElement(Link, { className: phoneInfoTextStyle, href: formatPhoneNumberLink(phoneNumber) }, _formatPhoneNumber(phoneNumber.phoneNumber, true)),\n !props.isMobile && React.createElement(Text, { className: phoneInfoTextStyle }, _formatPhoneNumber(phoneNumber.phoneNumber, true)),\n ' ',\n phoneNumber.isTollFree ? localeStrings.meetingConferencePhoneInfoModalTollFree : localeStrings.meetingConferencePhoneInfoModalToll),\n React.createElement(\"br\", null),\n React.createElement(Text, { className: phoneInfoTextStyle },\n \" \",\n formatPhoneNumberInfo(phoneNumber, localeStrings)))))),\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\", verticalAlign: \"center\", className: phoneInfoInstructionLine },\n React.createElement(Stack.Item, null,\n React.createElement(Stack, { horizontal: true },\n !props.isMobile && React.createElement(Stack, { className: infoConnectionLinkStyle(theme) }),\n React.createElement(Stack.Item, { className: phoneInfoIcon(theme) },\n React.createElement(Icon, { iconName: \"JoinByPhoneConferenceIdIcon\", className: phoneInfoIconStyle(theme) })),\n React.createElement(Stack.Item, null,\n React.createElement(Text, { className: phoneInfoLabelStyle }, localeStrings.meetingConferencePhoneInfoModalMeetingId)))),\n React.createElement(Text, { className: phoneInfoTextStyle },\n meetingCoordinates[0].conferenceId,\n \"#\")),\n !props.isMobile && React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\", verticalAlign: \"center\", className: phoneInfoInstructionLine },\n React.createElement(Stack, { horizontal: true },\n React.createElement(Stack.Item, { className: phoneInfoIcon(theme), style: {\n marginLeft: _pxToRem(2)\n } },\n React.createElement(Icon, { iconName: \"JoinByPhoneWaitToBeAdmittedIcon\", className: phoneInfoIconStyle(theme) })),\n React.createElement(Stack.Item, null,\n React.createElement(Text, { className: phoneInfoLabelStyle }, localeStrings.meetingConferencePhoneInfoModalWait)))))) }, handlers));\n};\n//# sourceMappingURL=NetworkReconnectTile.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { DefaultButton, IconButton, Modal, PrimaryButton, Stack, Text, mergeStyles, concatStyleSets } from '@fluentui/react';\nimport { useTheme } from \"../../../../../react-components/src\";\nimport React from 'react';\n/**\n * @private\n */\nexport const Prompt = (props) => {\n var _a;\n const theme = useTheme();\n const styles = concatStyleSets(modalStyles, (_a = props.styles) !== null && _a !== void 0 ? _a : {});\n return React.createElement(Modal, { styles: styles, isOpen: props.isOpen, onDismiss: props.onDismiss, isBlocking: false },\n React.createElement(Stack, { className: mergeStyles({\n position: 'relative'\n }) },\n React.createElement(Text, { className: mergeStyles({\n fontWeight: 600,\n fontSize: '1.25rem'\n }) }, props.heading),\n React.createElement(IconButton, { styles: iconButtonStyles(theme), iconProps: {\n iconName: 'Cancel'\n }, onClick: props.onCancel, ariaLabel: props.closeButtonLabel })),\n React.createElement(Stack, { verticalAlign: \"center\", className: mergeStyles({\n minHeight: '6rem'\n }) },\n React.createElement(Text, { className: mergeStyles({\n fontSize: '0.875rem'\n }) }, props.text)),\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"end\", tokens: {\n childrenGap: '0.5rem'\n } },\n React.createElement(PrimaryButton, { styles: buttonTextStyles, text: props.confirmButtonLabel, onClick: props.onConfirm }),\n React.createElement(DefaultButton, { styles: buttonTextStyles, text: props.cancelButtonLabel, onClick: props.onCancel })));\n};\nconst iconButtonStyles = (theme) => ({\n root: {\n position: 'absolute',\n top: 0,\n right: 0,\n color: theme.palette.neutralPrimary\n },\n rootHovered: {\n color: theme.palette.neutralDark\n }\n});\nconst modalStyles = {\n main: {\n padding: '1.5rem ',\n maxWidth: '30rem'\n }\n};\nconst buttonTextStyles = {\n label: {\n fontSize: '0.875rem'\n }\n};\n//# sourceMappingURL=Prompt.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useCallback, useMemo } from 'react';\nimport { Stack } from '@fluentui/react';\nimport { containerContextStyles, paneBodyContainer, scrollableContainer, scrollableContainerContents } from '../../../common/styles/ParticipantContainer.styles';\nimport { availableSpaceStyles, paneHighContrastStyles, sidePaneStyles, sidePaneTokens } from '../../../common/styles/Pane.styles';\nimport { useSidePaneContext } from './SidePaneProvider';\nimport { PeopleAndChatHeader } from '../../../common/TabHeader';\nimport { hiddenStyles } from '../../../common/styles/Pane.styles';\nimport { useTheme } from \"../../../../../../react-components/src\";\n/** @private */\nexport const SidePane = (props) => {\n var _a;\n const { sidePaneRenderer, overrideSidePane } = useSidePaneContext();\n const renderingHiddenOverrideContent = (overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.renderer.contentRenderer) && overrideSidePane.persistRenderingWhenClosed && !overrideSidePane.isActive;\n const renderingOnlyHiddenContent = renderingHiddenOverrideContent && !sidePaneRenderer;\n const widthConstrainedStyles = useMemo(() => sidePaneStyles(props.maxWidth, props.minWidth), [props.maxWidth, props.minWidth]);\n const paneStyles = renderingOnlyHiddenContent ? hiddenStyles : props.mobileView ? availableSpaceStyles : widthConstrainedStyles;\n const Header = (_a = ((overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.isActive) ? overrideSidePane.renderer.headerRenderer : sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.headerRenderer)) !== null && _a !== void 0 ? _a : EmptyElement;\n /**\n * Legacy code to support old behavior of showing chat and people tab headers on mobile side pane.\n * To be removed in breaking change.\n */\n const overrideSidePaneId = (overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.isActive) ? overrideSidePane.renderer.id : undefined;\n const { updateSidePaneRenderer } = props;\n const closePane = useCallback(() => {\n updateSidePaneRenderer(undefined);\n }, [updateSidePaneRenderer]);\n const LegacyHeader = useMemo(() => {\n var _a;\n return React.createElement(PeopleAndChatHeader, { onClose: overrideSidePaneId === 'chat' ? (_a = props.onChatButtonClicked) !== null && _a !== void 0 ? _a : noop : closePane, activeTab: (sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.id) === 'people' ? 'people' : 'chat', \n // legacy arguments to be removed in breaking change:\n disablePeopleButton: props.disablePeopleButton, disableChatButton: props.disableChatButton, onPeopleButtonClicked: (sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.id) === 'people' ? noop : props.onPeopleButtonClicked, onChatButtonClicked: overrideSidePaneId === 'chat' ? noop : props.onChatButtonClicked });\n }, [overrideSidePaneId, props.onChatButtonClicked, props.onPeopleButtonClicked, props.disablePeopleButton, props.disableChatButton, sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.id, closePane]);\n const HeaderToRender = props.mobileView && (overrideSidePaneId === 'chat' || (sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.id) === 'people') ? LegacyHeader : Header();\n const ContentRenderer = (overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.isActive) ? undefined : sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.contentRenderer;\n const OverrideContentRenderer = (overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.isActive) || (overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.persistRenderingWhenClosed) ? overrideSidePane.renderer.contentRenderer : undefined;\n const theme = useTheme();\n if (!ContentRenderer && !OverrideContentRenderer) {\n return React.createElement(EmptyElement, null);\n }\n return React.createElement(Stack, { \"aria-label\": props.ariaLabel, \"data-is-focusable\": !!props.ariaLabel, role: props.ariaLabel ? 'navigation' : undefined, tabIndex: props.ariaLabel ? 0 : undefined, verticalFill: true, grow: true, styles: paneStyles, \"data-ui-id\": \"SidePane\", tokens: props.mobileView || !props.showAddPeopleButton && (sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.id) === 'people' ? {} : sidePaneTokens, className: paneHighContrastStyles(theme) },\n HeaderToRender,\n React.createElement(Stack.Item, { verticalFill: true, grow: true, styles: paneBodyContainer },\n React.createElement(Stack, { verticalFill: true, styles: scrollableContainer },\n ContentRenderer && React.createElement(Stack.Item, { verticalFill: true, styles: scrollableContainerContents },\n React.createElement(Stack, { styles: containerContextStyles }, ContentRenderer === null || ContentRenderer === void 0 ? void 0 : ContentRenderer())),\n OverrideContentRenderer && React.createElement(Stack.Item, { verticalFill: true, styles: !(overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.isActive) && (overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.persistRenderingWhenClosed) ? hiddenStyles : scrollableContainerContents },\n React.createElement(Stack, { styles: containerContextStyles }, OverrideContentRenderer === null || OverrideContentRenderer === void 0 ? void 0 : OverrideContentRenderer())))));\n};\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => { };\nconst EmptyElement = () => React.createElement(React.Fragment, null);\n//# sourceMappingURL=SidePane.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { createContext, useContext } from 'react';\n/**\n * Context for side pane interaction\n *\n * @private\n */\nexport const SidePaneContext = createContext({});\n/**\n * Provider to provide localized strings for this library's composites.\n *\n * @private\n */\nexport const SidePaneProvider = (props) => {\n return React.createElement(SidePaneContext.Provider, { value: props }, props.children);\n};\n/** @private */\nexport const useSidePaneContext = () => useContext(SidePaneContext);\n/** @private */\nexport const useIsSidePaneOpen = () => {\n const { sidePaneRenderer, overrideSidePane } = useSidePaneContext();\n return !!(sidePaneRenderer || (overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.isActive));\n};\n/** @private */\nexport const useIsParticularSidePaneOpen = (sidePaneId) => {\n const isSidePaneOpen = useIsSidePaneOpen();\n const { sidePaneRenderer } = useSidePaneContext();\n return isSidePaneOpen && (sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.id) === sidePaneId;\n};\n//# sourceMappingURL=SidePaneProvider.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { createRef, useCallback, useEffect, useMemo } from 'react';\nimport { useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\nimport { useLocale } from '../../../localization';\nimport { VideoEffectsPaneContent } from '../../../common/VideoEffectsPane';\nimport { useSelector } from '../../hooks/useSelector';\nimport { getVideoBackgroundImages } from '../../selectors/baseSelectors';\n/** @private */\nexport const VIDEO_EFFECTS_SIDE_PANE_ID = 'videoeffects';\n/** @private */\nexport const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 17.5;\n/** @private */\nexport const useVideoEffectsPane = (updateSidePaneRenderer, mobileView, latestErrors, onDismissError, cameraButtonRef) => {\n const closePane = useCallback(() => {\n var _a;\n updateSidePaneRenderer(undefined);\n (_a = cameraButtonRef === null || cameraButtonRef === void 0 ? void 0 : cameraButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }, [cameraButtonRef, updateSidePaneRenderer]);\n const locale = useLocale();\n const onRenderHeader = useCallback(() => {\n var _a, _b;\n return React.createElement(SidePaneHeader, { onClose: closePane, headingText: locale.strings.call.videoEffectsPaneTitle, dismissSidePaneButtonAriaLabel: (_b = (_a = locale.strings.call.dismissSidePaneButtonLabel) !== null && _a !== void 0 ? _a : locale.strings.callWithChat.dismissSidePaneButtonLabel) !== null && _b !== void 0 ? _b : 'Close', mobileView: mobileView });\n }, [closePane, locale.strings, mobileView]);\n const latestVideoEffectError = latestErrors.find(error => error.type === 'unableToStartVideoEffect');\n const updateFocusHandle = useMemo(() => createRef(), []);\n const backgroundImages = useSelector(getVideoBackgroundImages);\n const onRenderContent = useCallback(() => {\n return React.createElement(VideoEffectsPaneContent, { onDismissError: onDismissError, activeVideoEffectError: latestVideoEffectError, activeVideoEffectChange: () => {\n // Clear any existing video effects error when the user clicks on a new video effect\n latestVideoEffectError && (onDismissError === null || onDismissError === void 0 ? void 0 : onDismissError(latestVideoEffectError));\n }, updateFocusHandle: updateFocusHandle, backgroundImages: backgroundImages });\n }, [latestVideoEffectError, onDismissError, updateFocusHandle, backgroundImages]);\n const sidePaneRenderer = useMemo(() => ({\n headerRenderer: onRenderHeader,\n contentRenderer: onRenderContent,\n id: VIDEO_EFFECTS_SIDE_PANE_ID\n }), [onRenderContent, onRenderHeader]);\n const openPane = useCallback(() => {\n updateSidePaneRenderer(sidePaneRenderer);\n // Run in a setTimeout as it must be called only once the imperative handle is available\n setTimeout(() => { var _a; return (_a = updateFocusHandle.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 0);\n }, [sidePaneRenderer, updateSidePaneRenderer, updateFocusHandle]);\n const isOpen = useIsParticularSidePaneOpen(VIDEO_EFFECTS_SIDE_PANE_ID);\n // Update pane renderer if it is open and the openPane dep changes\n useEffect(() => {\n if (isOpen) {\n openPane();\n }\n }, [isOpen, openPane]);\n const togglePane = useCallback(() => {\n if (isOpen) {\n closePane();\n }\n else {\n openPane();\n }\n }, [closePane, isOpen, openPane]);\n return {\n openVideoEffectsPane: openPane,\n closeVideoEffectsPane: closePane,\n toggleVideoEffectsPane: togglePane,\n isVideoEffectsPaneOpen: isOpen\n };\n};\n//# sourceMappingURL=useVideoEffectsPane.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { PrimaryButton, mergeStyles } from '@fluentui/react';\nimport React from 'react';\nimport { buttonStyle, buttonWithIconStyles, videoCameraIconStyle } from '../styles/StartCallButton.styles';\nimport { Video20Filled } from '@fluentui/react-icons';\nimport { useLocale } from '../../localization';\n/**\n * @private\n */\nexport const StartCallButton = (props) => {\n const { rejoinCall } = props;\n const locale = useLocale();\n return React.createElement(PrimaryButton, Object.assign({}, props, { \"data-ui-id\": \"call-composite-start-call-button\", className: mergeStyles(buttonStyle, props.className), styles: buttonWithIconStyles, text: rejoinCall ? locale.strings.call.rejoinCallButtonLabel : locale.strings.call.startCallButtonLabel, onRenderIcon: props.hideIcon ? undefined : () => React.createElement(Video20Filled, { className: videoCameraIconStyle }) }));\n};\n//# sourceMappingURL=StartCallButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useLayoutEffect, useRef, useState } from 'react';\n/**\n * An SVG element component that wraps inner text to fit the width of the SVG.\n * @private\n */\nexport const SvgWithWordWrapping = (props) => {\n const { width, text, lineHeightPx, bufferHeightPx, role } = props;\n const svgRef = useRef(null);\n const calculationTextElement = useRef(null);\n const visibleTextElement = useRef(null);\n const [height, setHeight] = useState(0);\n // useLayoutEffect ensures that the calculationTextElement is rendered before being used for calculations.\n // Using useLayoutEffect over useEffect ensures we do not get a layout shift when the visibleTextElement is rendered\n // and the height is updated. This is because useLayoutEffect runs synchronously after DOM mutations but\n // before the browser has a chance to paint. See https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n // for more details.\n useLayoutEffect(() => {\n if (text && calculationTextElement.current && visibleTextElement.current) {\n const numLines = convertTextToWrappedText(calculationTextElement.current, visibleTextElement.current, width, lineHeightPx);\n setHeight(numLines * lineHeightPx);\n }\n }, [width, lineHeightPx, text]);\n return React.createElement(\"svg\", { role: role, width: width, height: height + bufferHeightPx, ref: svgRef, xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"text\", { height: 0, ref: calculationTextElement, style: {\n visibility: 'hidden'\n } }, text),\n React.createElement(\"text\", { ref: visibleTextElement, x: \"0\", y: bufferHeightPx / 4, role: \"heading\", \"aria-level\": 1 }));\n};\n/**\n * Wrap text in tspan elements to fit the width of the SVG\n * @param baseTextElement The text element to create the wrapped text from.\n * @param outputTextElement The text element to insert the wrapped text into.\n * @param maxWidth The maximum width of the text element.\n * @param lineHeightPx The height of each line in pixels.\n * @returns The number of lines of text.\n */\nconst convertTextToWrappedText = (inputTextElement, outputTextElement, maxWidth, lineHeightPx) => {\n var _a, _b;\n const words = (_b = (_a = inputTextElement.textContent) === null || _a === void 0 ? void 0 : _a.split(' ')) !== null && _b !== void 0 ? _b : [];\n if (words.length === 0 || words[0] === '') {\n throw new Error('Text element must contain text');\n }\n // The current line being built.\n let line = '';\n // Running total of the number of lines.\n let numLines = 0;\n // First, clear the output text element.\n outputTextElement.textContent = '';\n // Iterate through each word and create a tspan element for each line.\n for (let i = 0; i < words.length; i++) {\n const testLine = line + words[i] + ' ';\n const testWidth = inputTextElement.getSubStringLength(0, testLine.length);\n if (testWidth > maxWidth && i > 0) {\n const newLine = constructTSpanLine(line, lineHeightPx);\n outputTextElement.appendChild(newLine);\n line = words[i] + ' ';\n numLines++;\n }\n else {\n line = testLine;\n }\n }\n // Add the last line.\n const newLine = constructTSpanLine(line, lineHeightPx);\n outputTextElement.appendChild(newLine);\n numLines++;\n // Return the number of lines to calculate the height of the SVG.\n return numLines;\n};\n/**\n * Create a tspan element for a line of text, with text set to be centered.\n * @param line The line of text.\n * @param lineHeightPx The height of each line in pixels.\n * @returns The tspan element.\n */\nconst constructTSpanLine = (line, lineHeightPx) => {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.textContent = line;\n tspan.setAttribute('x', '50%');\n tspan.setAttribute('dy', `${lineHeightPx}px`);\n tspan.setAttribute('text-anchor', 'middle');\n return tspan;\n};\n//# sourceMappingURL=SvgWithWordWrapping.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { CameraButton } from \"../../../../../../react-components/src\";\nimport { _HighContrastAwareIcon } from \"../../../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { usePropsFor } from '../../hooks/usePropsFor';\nimport { concatButtonBaseStyles } from '../../styles/Buttons.styles';\nimport { useSelector } from '../../hooks/useSelector';\nimport { getCapabilites, getIsRoomsCall, getRole } from '../../selectors/baseSelectors';\n/**\n * @private\n */\nexport const Camera = (props) => {\n var _a;\n const cameraButtonProps = usePropsFor(CameraButton);\n const styles = useMemo(() => { var _a; return concatButtonBaseStyles((_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.styles]);\n const isRoomsCall = useSelector(getIsRoomsCall);\n const role = useSelector(getRole);\n const turnVideoOnCapability = (_a = useSelector(getCapabilites)) === null || _a === void 0 ? void 0 : _a.turnVideoOn;\n return React.createElement(CameraButton, Object.assign({ \"data-ui-id\": \"call-composite-camera-button\" }, cameraButtonProps, { showLabel: props.displayType !== 'compact', styles: styles, enableDeviceSelectionMenu: props.splitButtonsForDeviceSelection, disableTooltip: props.disableTooltip, disabled: cameraButtonProps.disabled || props.disabled || !!(isRoomsCall && role === 'Unknown'), onRenderOffIcon: turnVideoOnCapability && !turnVideoOnCapability.isPresent ? () => React.createElement(_HighContrastAwareIcon, { disabled: true, iconName: 'ControlButtonCameraProhibited' }) : undefined, onClickVideoEffects: props.onClickVideoEffects, componentRef: props.componentRef }));\n};\n//# sourceMappingURL=Camera.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 { concatStyleSets, Stack } from '@fluentui/react';\nimport { EndCallButton } from \"../../../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { useState, useCallback } from 'react';\nimport { usePropsFor } from '../../hooks/usePropsFor';\nimport { groupCallLeaveButtonCompressedStyle, groupCallLeaveButtonStyle } from '../../styles/Buttons.styles';\nimport { Prompt } from '../Prompt';\nimport { useLocale } from '../../../localization';\n/** @private */\nexport const EndCall = (props) => {\n var _a;\n const compactMode = props.displayType === 'compact';\n const hangUpButtonProps = usePropsFor(EndCallButton);\n const localeStrings = useLocale().strings;\n const endCallDiaglogLabels = useMemo(() => ({\n confirmButtonLabel: localeStrings.call.endCallConfirmButtonLabel,\n heading: localeStrings.call.endCallConfirmDialogTitle,\n text: localeStrings.call.leaveConfirmDialogContent,\n closeButtonLabel: localeStrings.call.close\n }), [localeStrings.call.endCallConfirmButtonLabel, localeStrings.call.endCallConfirmDialogTitle, localeStrings.call.leaveConfirmDialogContent, localeStrings.call.close]);\n const leaveDiaglogLabels = useMemo(() => ({\n confirmButtonLabel: localeStrings.call.leaveConfirmButtonLabel,\n heading: localeStrings.call.leaveConfirmDialogTitle,\n text: localeStrings.call.leaveConfirmDialogContent,\n closeButtonLabel: localeStrings.call.close\n }), [localeStrings.call.leaveConfirmButtonLabel, localeStrings.call.leaveConfirmDialogContent, localeStrings.call.leaveConfirmDialogTitle, localeStrings.call.close]);\n const [dialogLabels, setDialogLabels] = useState(leaveDiaglogLabels);\n const { onHangUp } = hangUpButtonProps;\n const [showHangUpConfirm, setShowHangUpConfirm] = React.useState(false);\n const toggleConfirm = useCallback(() => {\n setShowHangUpConfirm(!showHangUpConfirm);\n }, [showHangUpConfirm]);\n const onHangUpConfirm = useCallback((hangUpForEveryone) => {\n onHangUp && onHangUp(hangUpForEveryone);\n toggleConfirm();\n }, [onHangUp, toggleConfirm]);\n const hangUpOverride = useCallback((forEveryone) => __awaiter(void 0, void 0, void 0, function* () {\n if (props.mobileView || forEveryone === false /* value being false(not undefined) because it comes from endCall option */) {\n onHangUp();\n return;\n }\n setDialogLabels(forEveryone ? endCallDiaglogLabels : leaveDiaglogLabels);\n toggleConfirm();\n }), [endCallDiaglogLabels, leaveDiaglogLabels, onHangUp, props.mobileView, toggleConfirm]);\n const styles = useMemo(() => { var _a; return concatStyleSets(compactMode ? groupCallLeaveButtonCompressedStyle : groupCallLeaveButtonStyle, (_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [compactMode, props.styles]);\n return React.createElement(Stack, null,\n React.createElement(EndCallButton, Object.assign({ \"data-ui-id\": \"call-composite-hangup-button\" }, hangUpButtonProps, { onHangUp: props.disableEndCallModal ? onHangUp : hangUpOverride, styles: styles, showLabel: !compactMode, enableEndCallMenu: (_a = props.enableEndCallMenu) !== null && _a !== void 0 ? _a : false })),\n React.createElement(Prompt, Object.assign({}, dialogLabels, { styles: {\n main: {\n minWidth: '22.5rem',\n padding: '1.5rem'\n }\n }, cancelButtonLabel: localeStrings.call.hangUpCancelButtonLabel, onConfirm: () => onHangUpConfirm(props.enableEndCallMenu), isOpen: showHangUpConfirm, onCancel: toggleConfirm })));\n};\n//# sourceMappingURL=EndCall.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { MicrophoneButton } from \"../../../../../../react-components/src\";\nimport { _HighContrastAwareIcon } from \"../../../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { usePropsFor } from '../../hooks/usePropsFor';\nimport { useSelector } from '../../hooks/useSelector';\nimport { getCallStatus, getCapabilites, getIsRoomsCall, getLocalMicrophoneEnabled, getRole } from '../../selectors/baseSelectors';\nimport { concatButtonBaseStyles } from '../../styles/Buttons.styles';\n/**\n * @private\n */\nexport const Microphone = (props) => {\n var _a;\n const microphoneButtonProps = usePropsFor(MicrophoneButton);\n const callStatus = useSelector(getCallStatus);\n const isLocalMicrophoneEnabled = useSelector(getLocalMicrophoneEnabled);\n const isRoomsCall = useSelector(getIsRoomsCall);\n const role = useSelector(getRole);\n const unmuteMicCapability = (_a = useSelector(getCapabilites)) === null || _a === void 0 ? void 0 : _a.unmuteMic;\n /**\n * When call is in connecting state, microphone button should be disabled.\n * This is due to to headless limitation where a call can not be muted/unmuted in lobby.\n */\n if (callStatus === 'Connecting') {\n // Lobby page should show the microphone status that was set on the local preview/configuration\n // page until the user successfully joins the call.\n microphoneButtonProps.checked = isLocalMicrophoneEnabled;\n }\n const styles = useMemo(() => { var _a; return concatButtonBaseStyles((_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.styles]);\n // tab focus on MicrophoneButton on page load\n return React.createElement(MicrophoneButton, Object.assign({ \"data-ui-id\": \"call-composite-microphone-button\" }, microphoneButtonProps, { isDeepNoiseSuppressionOn: props.isDeepNoiseSuppressionOn, onClickNoiseSuppression: props.onClickNoiseSuppression, showNoiseSuppressionButton: props.showNoiseSuppressionButton, showLabel: props.displayType !== 'compact', disableTooltip: props.disableTooltip, styles: styles, enableDeviceSelectionMenu: props.splitButtonsForDeviceSelection, disabled: microphoneButtonProps.disabled || props.disabled || !!(isRoomsCall && role === 'Unknown'), onRenderOffIcon: unmuteMicCapability && !unmuteMicCapability.isPresent ? () => React.createElement(_HighContrastAwareIcon, { disabled: true, iconName: 'ControlButtonMicProhibited' }) : undefined }));\n};\n//# sourceMappingURL=Microphone.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { RaiseHandButton } from \"../../../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { usePropsFor } from '../../hooks/usePropsFor';\nimport { concatButtonBaseStyles } from '../../styles/Buttons.styles';\nimport { useSelector } from '../../hooks/useSelector';\nimport { getCallStatus } from '../../selectors/baseSelectors';\nimport { _isInLobbyOrConnecting } from \"../../../../../../calling-component-bindings/src\";\n/** @private */\nexport const RaiseHand = (props) => {\n const raiseHandButtonProps = usePropsFor(RaiseHandButton);\n const callStatus = useSelector(getCallStatus);\n const styles = useMemo(() => { var _a; return concatButtonBaseStyles((_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.styles]);\n let raiseHandButtonDisabled = isDisabled(props.option);\n if (_isInLobbyOrConnecting(callStatus)) {\n raiseHandButtonDisabled = true;\n }\n return React.createElement(RaiseHandButton, Object.assign({ \"data-ui-id\": \"call-composite-raisehand-button\" }, raiseHandButtonProps, { showLabel: props.displayType !== 'compact', disabled: raiseHandButtonDisabled || props.disabled, styles: styles }));\n};\nconst isDisabled = (option) => {\n if (option === undefined || option === true || option === false) {\n return false;\n }\n return option.disabled;\n};\n//# sourceMappingURL=RaiseHand.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ReactionButton } from \"../../../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { usePropsFor } from '../../hooks/usePropsFor';\nimport { concatButtonBaseStyles } from '../../styles/Buttons.styles';\n/** @private */\nexport const Reaction = (props) => {\n const reactionButtonProps = usePropsFor(ReactionButton);\n const styles = useMemo(() => { var _a; return concatButtonBaseStyles((_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.styles]);\n const reactionButtonDisabled = isDisabled(props.option) || reactionButtonProps.disabled;\n return React.createElement(ReactionButton, Object.assign({ \"data-ui-id\": \"call-composite-reaction-button\" }, reactionButtonProps, { showLabel: props.displayType !== 'compact', disabled: reactionButtonDisabled || props.disabled, styles: styles, disableTooltip: props.disableTooltip, persistMenu: true, reactionResources: props.reactionResource }));\n};\nconst isDisabled = (option) => {\n if (option === undefined || option === true || option === false) {\n return false;\n }\n return option.disabled;\n};\n//# sourceMappingURL=Reaction.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ScreenShareButton } from \"../../../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { usePropsFor } from '../../hooks/usePropsFor';\nimport { concatButtonBaseStyles } from '../../styles/Buttons.styles';\nimport { getIsRoomsCall, getRole } from '../../selectors/baseSelectors';\nimport { useSelector } from '../../hooks/useSelector';\n/** @private */\nexport const ScreenShare = (props) => {\n const screenShareButtonProps = usePropsFor(ScreenShareButton);\n const styles = useMemo(() => { var _a; return concatButtonBaseStyles((_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.styles]);\n const isRoomsCall = useSelector(getIsRoomsCall);\n const role = useSelector(getRole);\n const screenShareButtonDisabled = () => {\n var _a;\n return (_a = screenShareButtonProps === null || screenShareButtonProps === void 0 ? void 0 : screenShareButtonProps.disabled) !== null && _a !== void 0 ? _a : isDisabled(props.option);\n return isDisabled(props.option);\n };\n return React.createElement(ScreenShareButton, Object.assign({ \"data-ui-id\": \"call-composite-screenshare-button\" }, screenShareButtonProps, { showLabel: props.displayType !== 'compact', disabled: screenShareButtonDisabled() || props.disabled || !!(isRoomsCall && role === 'Unknown'), styles: styles }));\n};\nconst isDisabled = (option) => {\n if (option === undefined || option === true || option === false) {\n return false;\n }\n return option.disabled;\n};\n//# sourceMappingURL=ScreenShare.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState, useEffect, useRef, useMemo } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\n/**\n * @private\n */\nexport const useAdaptedSelector = (selector, selectorProps) => {\n return useSelectorWithAdaptation(selector, adaptCompositeState, selectorProps);\n};\n/**\n * @private\n */\nexport const useSelectorWithAdaptation = (selector, adaptState, selectorProps) => {\n var _a;\n const adapter = useAdapter();\n // Keeps track of whether the current component is mounted or not. If it has unmounted, make sure we do not modify the\n // state or it will cause React warnings in the console. https://skype.visualstudio.com/SPOOL/_workitems/edit/2453212\n const mounted = useRef(false);\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n });\n const callId = (_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.id;\n const callConfigProps = useMemo(() => ({\n callId\n }), [callId]);\n const [props, setProps] = useState(selector(adaptState(adapter.getState()), selectorProps !== null && selectorProps !== void 0 ? selectorProps : callConfigProps));\n const propRef = useRef(props);\n propRef.current = props;\n useEffect(() => {\n const onStateChange = (state) => {\n if (!mounted.current) {\n return;\n }\n const newProps = selector(adaptState(state), selectorProps !== null && selectorProps !== void 0 ? selectorProps : callConfigProps);\n if (propRef.current !== newProps) {\n setProps(newProps);\n }\n };\n adapter.onStateChange(onStateChange);\n return () => {\n adapter.offStateChange(onStateChange);\n };\n }, [adaptState, adapter, selector, selectorProps, callConfigProps]);\n return props;\n};\nconst memoizeState = memoizeOne((userId, deviceManager, calls, latestErrors, latestNotifications, displayName, alternateCallerId, environmentInfo) => ({\n userId,\n incomingCalls: {},\n incomingCallsEnded: {},\n callsEnded: {},\n deviceManager,\n callAgent: {\n displayName\n },\n calls,\n latestErrors,\n alternateCallerId,\n environmentInfo\n}));\nconst memoizeCalls = memoizeOne((call) => call ? {\n [call.id]: call\n} : {});\nconst adaptCompositeState = (compositeState) => {\n return memoizeState(compositeState.userId, compositeState.devices, memoizeCalls(compositeState.call), \n // This is an unsafe type expansion.\n // compositeState.latestErrors can contain properties that are not valid in CallErrors.\n //\n // But there is no way to check for valid property names at runtime:\n // - The set of valid property names is built from types in the @azure/communication-calling.\n // Thus we don't have a literal array of allowed strings at runtime.\n // - Due to minification / uglification, the property names from the objects at runtime can't be used\n // to compare against permissible values inferred from the types.\n //\n // This is not a huge problem -- it simply means that our adapted selector will include some extra operations\n // that are unknown to the UI component and data binding libraries. Generic handling of the errors (e.g.,\n // just displaying them in some UI surface) will continue to work for these operations. Handling of\n // specific operations (e.g., acting on errors related to permission issues) will ignore these operations.\n compositeState.latestErrors, undefined, compositeState.displayName, compositeState.alternateCallerId, compositeState.environmentInfo);\n};\n//# sourceMappingURL=useAdaptedSelector.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 { toFlatCommunicationIdentifier } from \"../../../../../acs-ui-common/src\";\nimport memoizeOne from 'memoize-one';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { isCameraOn } from '../utils';\nimport { _toCommunicationIdentifier } from \"../../../../../acs-ui-common/src\";\nimport { useSelector } from './useSelector';\nimport { getCapabilites } from '../selectors/baseSelectors';\n/**\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type\nexport const useHandlers = (_component) => {\n const adapter = useAdapter();\n const capabilities = useSelector(getCapabilites);\n return createCompositeHandlers(adapter, capabilities);\n};\nconst createCompositeHandlers = memoizeOne((adapter, capabilities) => {\n return {\n onCreateLocalStreamView: (options) => __awaiter(void 0, void 0, void 0, function* () {\n return yield adapter.createStreamView(undefined, options);\n }),\n onCreateRemoteStreamView: (userId, options) => __awaiter(void 0, void 0, void 0, function* () {\n return yield adapter.createStreamView(userId, options);\n }),\n onHangUp: (forEveryone) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.leaveCall(forEveryone);\n }),\n onToggleHold: () => __awaiter(void 0, void 0, void 0, function* () {\n var _a;\n return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();\n }),\n onAddParticipant: (participant, options) => __awaiter(void 0, void 0, void 0, function* () {\n if ('communicationUserId' in participant) {\n return yield adapter.addParticipant(participant);\n }\n else if ('phoneNumber' in participant) {\n return yield adapter.addParticipant(participant, options);\n }\n }),\n onSendDtmfTone: (dtmfTone) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.sendDtmfTone(dtmfTone);\n }),\n onRemoveParticipant: (userId) => __awaiter(void 0, void 0, void 0, function* () {\n if (typeof userId === 'string') {\n yield adapter.removeParticipant(userId);\n }\n else {\n yield adapter.removeParticipant(_toCommunicationIdentifier(userId));\n }\n }),\n onRaiseHand: () => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.raiseHand();\n }),\n onLowerHand: () => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.lowerHand();\n }),\n onToggleRaiseHand: () => __awaiter(void 0, void 0, void 0, function* () {\n var _b;\n ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.raiseHand.localParticipantRaisedHand) ? yield adapter.lowerHand() : yield adapter.raiseHand();\n }),\n onReactionClick: (reaction) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.onReactionClick(reaction);\n }),\n onSelectCamera: (deviceInfo, options) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.setCamera(deviceInfo, options);\n }),\n onSelectMicrophone: (deviceInfo) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.setMicrophone(deviceInfo);\n }),\n onSelectSpeaker: (deviceInfo) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.setSpeaker(deviceInfo);\n }),\n onStartCall: (participants, options) => {\n const rawIds = participants.map(participant => toFlatCommunicationIdentifier(participant));\n return adapter.startCall(rawIds, options);\n },\n onStartScreenShare: () => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.startScreenShare();\n }),\n onStopScreenShare: () => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.stopScreenShare();\n }),\n onToggleCamera: (options) => __awaiter(void 0, void 0, void 0, function* () {\n isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);\n }),\n onToggleMicrophone: () => __awaiter(void 0, void 0, void 0, function* () {\n var _c;\n return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isMuted) ? yield adapter.unmute() : yield adapter.mute();\n }),\n onToggleScreenShare: () => __awaiter(void 0, void 0, void 0, function* () {\n var _d;\n return ((_d = adapter.getState().call) === null || _d === void 0 ? void 0 : _d.isScreenSharingOn) ? yield adapter.stopScreenShare() : yield adapter.startScreenShare();\n }),\n onStartLocalVideo: () => __awaiter(void 0, void 0, void 0, function* () {\n if (adapter.getState().call) {\n return adapter.startCamera();\n }\n }),\n onDisposeLocalStreamView: () => __awaiter(void 0, void 0, void 0, function* () {\n return adapter.disposeLocalVideoStreamView();\n }),\n onDisposeRemoteStreamView: (userId) => __awaiter(void 0, void 0, void 0, function* () {\n return adapter.disposeStreamView(userId);\n }),\n onDisposeRemoteScreenShareStreamView: (userId) => __awaiter(void 0, void 0, void 0, function* () {\n return adapter.disposeScreenShareStreamView(userId);\n }),\n onDisposeLocalScreenShareStreamView: () => __awaiter(void 0, void 0, void 0, function* () {\n return adapter.disposeScreenShareStreamView('');\n }),\n onDisposeRemoteVideoStreamView: (userId) => __awaiter(void 0, void 0, void 0, function* () {\n return adapter.disposeRemoteVideoStreamView(userId);\n }),\n onRemoveVideoBackgroundEffects: () => __awaiter(void 0, void 0, void 0, function* () {\n return yield adapter.stopVideoBackgroundEffects();\n }),\n onBlurVideoBackground: (backgroundBlurConfig) => __awaiter(void 0, void 0, void 0, function* () {\n const blurConfig = Object.assign({ effectName: 'blur' }, backgroundBlurConfig);\n return yield adapter.startVideoBackgroundEffect(blurConfig);\n }),\n onReplaceVideoBackground: (backgroundReplacementConfig) => __awaiter(void 0, void 0, void 0, function* () {\n const replacementConfig = Object.assign({ effectName: 'replacement' }, backgroundReplacementConfig);\n return yield adapter.startVideoBackgroundEffect(replacementConfig);\n }),\n onStartNoiseSuppressionEffect: () => __awaiter(void 0, void 0, void 0, function* () {\n return yield adapter.startNoiseSuppressionEffect();\n }),\n onStopNoiseSuppressionEffect: () => __awaiter(void 0, void 0, void 0, function* () {\n return yield adapter.stopNoiseSuppressionEffect();\n }),\n onStartCaptions: (options) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.startCaptions(options);\n }),\n onStopCaptions: () => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.stopCaptions();\n }),\n onSetSpokenLanguage: (language) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.setSpokenLanguage(language);\n }),\n onSetCaptionLanguage: (language) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.setCaptionLanguage(language);\n }),\n onSubmitSurvey: (survey) => __awaiter(void 0, void 0, void 0, function* () {\n return yield adapter.submitSurvey(survey);\n }),\n onStartSpotlight: (userIds) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.startSpotlight(userIds);\n }),\n onStopSpotlight: (userIds) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.stopSpotlight(userIds);\n }),\n onStopAllSpotlight: () => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.stopAllSpotlight();\n }),\n onStartLocalSpotlight: (capabilities === null || capabilities === void 0 ? void 0 : capabilities.spotlightParticipant.isPresent) ? () => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.startSpotlight();\n }) : undefined,\n onStopLocalSpotlight: () => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.stopSpotlight();\n }),\n onStartRemoteSpotlight: (capabilities === null || capabilities === void 0 ? void 0 : capabilities.spotlightParticipant.isPresent) ? (userIds) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.startSpotlight(userIds);\n }) : undefined,\n onStopRemoteSpotlight: (capabilities === null || capabilities === void 0 ? void 0 : capabilities.removeParticipantsSpotlight.isPresent) ? (userIds) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.stopSpotlight(userIds);\n }) : undefined,\n onMuteParticipant: (userId) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.muteParticipant(userId);\n }),\n onMuteAllRemoteParticipants: () => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.muteAllRemoteParticipants();\n })\n };\n});\n//# sourceMappingURL=useHandlers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { getCallingSelector } from \"../../../../../calling-component-bindings/src\";\nimport { useAdaptedSelector } from './useAdaptedSelector';\nimport { useHandlers } from './useHandlers';\n/**\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type\nexport const usePropsFor = (component) => {\n const selector = getCallingSelector(component);\n if (!selector) {\n throw new Error(\"Can't find the selector for component, please check supported component list\");\n }\n return Object.assign(Object.assign({}, useAdaptedSelector(selector)), useHandlers(component));\n};\n//# sourceMappingURL=usePropsFor.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { useSelectorWithAdaptation } from './useAdaptedSelector';\n/**\n * @private\n */\nexport const useSelector = (selector, selectorProps) => {\n // use selector with no adaptation\n return useSelectorWithAdaptation(selector, state => state, selectorProps);\n};\n//# sourceMappingURL=useSelector.js.map"],"names":["ParticipantSubscriber","constructor","participant","emitter","this","isMutedChangedHandler","emit","participantId","identifier","isMuted","displayNameChangedHandler","displayName","isSpeakingChangedHandler","isSpeaking","videoStreamsUpdatedHandler","event","subscribeParticipantEvents","on","unsubscribeAll","off","DiagnosticsForwarder","call","unsubscribe","_diagnostics","network","networkDiagnosticsChanged","bind","media","mediaDiagnosticsChanged","feature","Features","_emitter","subscribe","args","Object","assign","type","callClient","callAgent","deviceManager","options","Error","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","CallingSoundSubscriber","callees","sounds","playingSounds","onCallStateChanged","_a","_b","_c","_d","_e","_f","_g","shouldPlayRinging","soundsLoaded","callRingingSound","loop","playSound","pause","state","callBusySound","callEndReason","code","callEndedSound","subCode","loadSounds","subscribeCallSoundEvents","pauseSounds","callEnded","Audio","url","preload","callRinging","callBusy","sound","play","catch","console","error","CallContext","clientState","isTeamsCall","isTeamsMeeting","isRoomsCall","targetCallees","_h","_j","EventEmitter","isLocalPreviewMicrophoneEnabled","userId","devices","undefined","page","latestErrors","alternateCallerId","environmentInfo","videoBackgroundImages","videoBackgroundOptions","onResolveVideoEffectDependency","onResolveDependency","onResolveDeepNoiseSuppressionDependency","deepNoiseSuppressionOptions","deepNoiseSuppressionOnByDefault","hideDeepNoiseSuppressionButton","selectedVideoBackgroundEffect","cameraStatus","callingSounds","reactions","reactionResources","setMaxListeners","maxListeners","bindPublicMethods","displayNameModifier","onFetchProfile","notifyUpdate","cachedDisplayName","originalParticipants","remoteParticipants","shouldNotifyUpdates","key","entries","profile","id","participantsModifier","createProfileStateModifier","setState","getState","onStateChange","handler","offStateChange","captionsUIVisibilityModifier","updateCaptionsStartedInBackground","captionsStartedInBackground","captionsTriggers","updateCaptionsStartedWithUI","captionsStartedWithUI","setIsLocalMicrophoneEnabled","setCurrentCallId","callId","setTargetCallee","onCallEnded","offCallEnded","updateClientState","calls","latestEndedCall","callsEnded","findLatestEndedCall","oldPage","latestAcceptedTransfer","transfer","acceptedTransfers","findLatestAcceptedTransfer","transferCall","newPage","endedCall","localVideoStreams","find","s","mediaStreamType","unparentedViews","acceptedTransferCallState","setBackroundPickerImages","setSelectedVideoBackgroundEffect","setAcceptedTransferCall","callStates","values","length","latestCall","slice","endTime","getTime","acceptedTransferValues","acceptedTransfer","timestamp","AzureCommunicationCallAdapter","_call","newCall","resetDiagnosticsForwarder","locatorOrTargetCalless","participantSubscribers","Map","isMyMutedChanged","locator","forEach","callee","onResolveVideoBackgroundEffectsDependency","context","endCallData","callingSoundSubscriber","view","disposeView","handlers","onClientStateChange","subscribeDeviceManagerEvents","kind","onCallsUpdated","removedCall","removed","removedCallState","processNewCall","onTeamsCallsUpdated","dispose","joinCall","leaveCall","setCamera","setMicrophone","setSpeaker","askDevicePermission","queryCameras","queryMicrophones","querySpeakers","startCamera","stopCamera","mute","unmute","startCall","startScreenShare","stopScreenShare","raiseHand","onReactionClick","lowerHand","removeParticipant","createStreamView","disposeStreamView","disposeScreenShareStreamView","disposeRemoteVideoStreamView","disposeLocalVideoStreamView","addParticipant","holdCall","resumeCall","sendDtmfTone","startCaptions","stopCaptions","setSpokenLanguage","setCaptionLanguage","startVideoBackgroundEffect","stopVideoBackgroundEffects","updateBackgroundPickerImages","startNoiseSuppressionEffect","stopNoiseSuppressionEffect","submitSurvey","startSpotlight","stopSpotlight","stopAllSpotlight","muteParticipant","muteAllRemoteParticipants","startTime","Date","asyncTeeErrorToEventEmitter","cameras","getCameras","microphones","getMicrophones","speakers","isSpeakerSelectionAvailable","getSpeakers","constrain","teeErrorToEventEmitter","shouldCameraBeOnInCall","shouldMicrophoneBeOnInCall","microphoneOn","cameraOn","audioOptions","muted","selectedCamera","videoOptions","_joinCall","isTeamsMeetingId","join","remoteUserId","onCreateLocalStreamView","onCreateRemoteStreamView","onDisposeLocalStreamView","onDisposeRemoteStreamView","onDisposeRemoteScreenShareStreamView","onDisposeLocalScreenShareStreamView","onDisposeRemoteVideoStreamView","forEveryone","filter","hangUp","onHangUp","unsubscribeCallEvents","device","onSelectCamera","onSelectMicrophone","onSelectSpeaker","selectedEffect","stream","effect","startEffects","stopEffects","onToggleCamera","onToggleMicrophone","isScreenSharingOn","onToggleScreenShare","onToggleRaiseHand","reaction","videoBackgroundEffect","isBlurEffect","blurConfig","onBlurVideoBackground","isReplacementEffect","replaceConfig","onReplaceVideoBackground","onRemoveVideoBackgroundEffects","backgroundImages","updateSelectedVideoBackgroundEffect","selectedVideoBackground","onStartNoiseSuppressionEffect","onStopNoiseSuppressionEffect","participants","isCameraOn","startCallVideoOptions","combinedCallOptions","idsToAdd","map","backendId","onStartCall","subscribeCallEvents","effectName","onRemoveParticipant","onAddParticipant","isLocalVideoStarted","onToggleHold","capabilities","turnVideoOn","isPresent","dtmfTone","onSendDtmfTone","startInBackground","onStartCaptions","stopInBackground","onStopCaptions","language","onSetCaptionLanguage","onSetSpokenLanguage","survey","onSubmitSurvey","onMuteParticipant","onMuteAllRemoteParticipants","userIds","onStartSpotlight","onStopSpotlight","onStopAllSpotlight","listener","subscribeToCaptionEvents","captionsFeature","captions","teamsCaptionsFeature","teamsCaptionsReceived","isCaptionsActiveChanged","isCaptionLanguageChanged","isSpokenLanguageChanged","acsCaptionsFeature","captionsReceived","captionsKindChanged","unsubscribeFromCaptionEvents","onRemoteParticipantsUpdated","isScreenSharingOnChanged","callIdChanged","roleChanged","transferAccepted","capabilitiesChanged","spotlightChanged","subscriber","clear","added","joined","set","get","delete","captionsInfo","isActive","isCaptionsFeatureActive","activeSpokenLanguage","activeCaptionLanguage","data","newValue","unmuteMic","shareScreen","role","diagnosticsForwarder","f","isCallError","createAzureCommunicationCallAdapter","_createAzureCommunicationCallAdapterInner","credential","telemetryImplementationHint","createCallAgent","adapter","createAzureCommunicationCallAdapterFromClient","useAzureCommunicationCallAdapterGeneric","adapterKind","afterCreate","beforeDispose","setAdapter","useState","adapterRef","useRef","creatingAdapterRef","afterCreateRef","beforeDisposeRef","current","useEffect","newAdapter","warn","createTeamsCallAgent","createTeamsCallAdapterFromClient","createTeamsCallAdapter","useAzureCommunicationCallAdapter","locatorOrtargetCallees","getDeviceManager","all","Array","isArray","startCaptionsInProgress","END_CALL_PAGES","CallAdapterContext","createContext","CallAdapterProvider","props","Provider","children","useAdapter","useContext","Devices","devicesButtonProps","usePropsFor","DevicesButton","D","useSelector","augmentedDeviceButtonProps","useMemo","styles","increaseFlyoutItemSize","locale","onlyManageSpeakers","persistMenu","showLabel","displayType","disabled","strings","getLabelFromRole","onRenderIcon","iconName","label","component","microphoneButton","speakerMenuTitle","Participants","participantsButtonProps","ParticipantsButton","participantsButtonStyles","callInvitationURL","onFetchParticipantMenuItems","isDisabled","option","showParticipantOverflowTooltip","isMobile","icon","People","onRenderOnIcon","onRenderOffIcon","onClick","theme","rootChecked","background","palette","neutralLight","ControlBarButton","labelKey","controlBarStyles","memoize","root","CallControls","mobileView","callControlOptions","screenShareButton","inferCallControlOptions","localeStrings","isDeepNoiseSuppressionOn","setDeepNoiseSuppressionOn","startDeepNoiseSuppression","useCallback","deepNoiseSuppresionEffectsDependency","isSafari","showNoiseSuppressionButton","onClickNoiseSuppression","peopleButtonStrings","peopleButtonLabel","tooltipOffContent","peopleButtonTooltipOpen","tooltipOnContent","peopleButtonTooltipClose","moreButtonStrings","moreButtonCallingLabel","callWithChat","moreDrawerButtonTooltip","holdButtonProps","HoldButton","raiseHandButtonProps","RaiseHandButton","capabilitiesSelector","capabilitySelector","isReactionAllowed","callStatusSelector","callStatus","useReactions","numberOfButtons","screenShareButtonIsEnabled","isEnabled","microphoneButtonIsEnabled","cameraButtonIsEnabled","cameraButton","endCallButton","showParticipantsButtonInControlBar","participantsButton","showReactionButtonInControlBar","reactionButton","customDrawerButtons","moreButtonMenuItems","items","onPeopleButtonClicked","push","text","iconProps","lineHeight","itemProps","holdButton","moreButtonContextualMenuItems","showMoreButton","moreButton","customButtons","showDevicesButtonInControlBar","devicesButton","showRaiseHandButtonInControlBar","raiseHandButton","hideRaiseHandButtonInRoomsCall","includes","devicesButtonMenu","subMenuProps","checked","onLabel","offLabel","element","useTheme","Stack","horizontalAlign","className","ControlBar","layout","displayVertical","semanticColors","bodyBackground","Microphone","Camera","Reaction","reactionResource","RaiseHand","ScreenShare","peopleButtonChecked","ariaLabel","disableTooltip","CustomButton","i","MoreButton","menuIconProps","hidden","menuProps","EndCall","PEOPLE_SIDE_PANE_ID","SIDE_PANE_ID","CapabilitiesChangedNotificationBar","capabilitiesChangedNotifications","notification","message","getCapabilityChangedNotificationString","capabilityChangedNotification","getCustomMessageBarIconProps","MessageBar","capabilityName","messageBarStyles","messageBarType","dismissIconProps","onDismiss","onDismissNotification","messageBarIconProps","changedReason","grantedDueToMeetingOption","lostDueToMeetingOption","grantedDueToRoleChangeToPresenter","lostDueToRoleChangeToAttendee","hideAttendeeNames","hideAttendeeNameAttendee","hideAttendeeNamePresenter","height","width","innerText","alignSelf","content","dismissal","paddingTop","CallArrangement","_k","containerClassName","callGalleryStyles","neutralLighterAlt","controlBarRef","peopleButtonRef","cameraButtonRef","containerRef","containerWidth","containerHeight","isInLobby","updateSidePaneRenderer","isInLocalHold","participantActioned","setParticipantActioned","drawerMenuItems","setDrawerMenuItems","conferencePhoneInfo","meetingPhoneInfoPaneProps","peoplePaneProps","inviteLink","callControlProps","onFetchAvatarPersonaData","videoGalleryProps","VideoGallery","muteAllHandlers","useHandlers","MoreDrawer","setPromptProps","setIsPromptOpen","hideSpotlightButtons","onStartLocalSpotlight","onStopLocalSpotlight","onStartRemoteSpotlight","onStopRemoteSpotlight","spotlightedParticipants","maxParticipantsToSpotlight","localParticipant","showTeamsMeetingConferenceModal","setShowTeamsMeetingConferenceModal","toggleTeamsMeetingConferenceModal","isMeetingPhoneInfoPaneOpen","openMeetingPhoneInfoPane","closeMeetingPhoneInfoPane","closePane","meetingConferencePhoneInfo","callStrings","onRenderHeader","SidePaneHeader","onClose","headingText","meetingConferencePhoneInfoModalTitle","dismissSidePaneButtonAriaLabel","dismissSidePaneButtonLabel","onRenderContent","MeetingPhoneInfoPaneContent","conferencePhoneInfoList","sidePaneRenderer","headerRenderer","contentRenderer","openPane","isOpen","useMeetingPhoneInfoPane","toggleMeetingPhoneInfoPane","onMeetingPhoneInfoClicked","setShowDrawer","pinnedParticipants","setPinnedParticipants","onPinParticipant","concat","onUnpinParticipant","pinPeoplePaneProps","disablePinMenuItem","onStartLocalSpotlightWithPrompt","onStopLocalSpotlightWithPrompt","onStartRemoteSpotlightWithPrompt","onStopRemoteSpotlightWithPrompt","canRemoveSpotlight","removeParticipantsSpotlight","stopAllSpotlightWithPrompt","onMuteParticipantPeoplePaneProps","muteOthers","spotlightPeoplePaneProps","spotlightedParticipantUserIds","isPeoplePaneOpen","openPeoplePane","closePeoplePane","focus","showMuteAllPrompt","setShowMuteAllPrompt","muteAllPromptLabels","confirmButtonLabel","muteAllConfirmButtonLabel","heading","muteAllDialogTitle","muteAllDialogContent","cancelButtonLabel","muteAllCancelButtonLabel","onMuteAllPromptConfirm","sidePaneHeaderMenuProps","menuItems","isAllMuted","muteAllMenuLabel","stopAllSpotlightMenuLabel","peoplePaneTitle","onFetchParticipantMenuItemsForCallComposite","myUserId","defaultMenuItems","isPinned","_defaultMenuItems","isSpotlighted","isMe","stopSpotlightMenuText","stopSpotlightOnSelfMenuLabel","stopSpotlightMenuLabel","startSpotlightMenuText","addSpotlightMenuLabel","startSpotlightMenuLabel","maxSpotlightedParticipantsReached","title","spotlightLimitReachedMenuTitle","unpinParticipantMenuLabel","textAlign","unpinParticipantMenuItemAriaLabel","pinParticipantMenuLabel","pinParticipantLimitReachedMenuLabel","pinParticipantMenuItemAriaLabel","Prompt","main","minWidth","padding","onConfirm","onCancel","PeoplePaneContent","participantListHeadingMoreButtonProps","usePeoplePane","togglePeoplePane","isSidePaneOpen","renderGallery","setRenderGallery","modalStrings","dismissModalAriaLabel","isMobileWithActivePane","callCompositeContainerCSS","display","position","openVideoEffectsPane","isVideoEffectsPaneOpen","useVideoEffectsPane","onDismissError","showDrawer","onMoreButtonClicked","closeDrawer","onMoreDrawerPeopleClicked","drawerContainerStylesValue","filteredLatestErrorNotifications","showErrorNotifications","isAvailable","errorBarProps","doNotShowCameraAccessNotifications","isVideoPaneOpen","isTeamsCaptions","useTeamsCaptions","hasJoinedCall","isCaptionsOn","minMaxDragPosition","modalLayerHostId","pipStyles","galleryContainerStyles","captionsOptions","postion","onClickPrimaryButton","verticalControlBar","filteredCapabilitesChangedNotifications","capabilitiesChangedNotificationBarProps","latestNotifications","ref","verticalFill","dataUiId","reversed","horizontal","grow","verticalAlign","zIndex","isLegacyCallControlEnabled","CommonCallControlBar","callControls","callAdapter","disableButtonsForLobbyPage","disableButtonsForHoldScreen","isCaptionsSupported","onClickVideoEffects","onUserSetOverflowGalleryPositionChange","onUserSetGalleryLayout","onUserSetGalleryLayoutChange","userSetGalleryLayout","onSetDialpadPage","dtmfDialerPresent","spotlight","onToggleTeamsMeetingConferenceModal","teamsMeetingConferenceModalPresent","PreparedMoreDrawer","onLightDismiss","dtmfDialerOptions","onClickMeetingPhoneInfo","style","NotificationStack","activeNotifications","onRenderGalleryContent","CallingCaptionsBanner","returnFocusRef","SidePane","maxWidth","shouldShowPeopleTabHeaderButton","disablePeopleButton","onChatButtonClicked","mobileChatTabHeader","disableChatButton","showAddPeopleButton","videoEffectsPaneAriaLabel","ModalLocalAndRemotePIP","minDragPosition","maxDragPosition","onDismissSidePane","onCloseChatPane","legacyControlBarExperience","peopleButton","ConfigurationPageErrorBar","activeErrorMessages","shouldFocusOnMount","onRenderEmptyPlaceholder","localVideoViewOptions","scalingMode","isMirrored","ExpandedLocalVideoTile","videoStream","localParticipantVideoStream","isVideoReady","renderElement","err","log","videoStreamElement","onRenderPlaceholder","overlayContent","HoldPane","holdScreenLabel","resumeCallButtonLabel","resumeCallButtonAriaLabel","resumingCallButtonLabel","resumingCallButtonAriaLabel","time","setTime","elapsedTime","getReadableTime","performance","now","resumingCall","setResumingCall","interval","setInterval","clearInterval","autoFocus","getMinutes","Math","floor","getSeconds","hours","getHours","LobbyTile","cameraSwitcherCameras","cameraSwitcherCallback","overlayProps","showLocalVideoCameraCycleButton","size","overlayIcon","moreDetails","LocalAndRemotePIP","remoteParticipant","localVideoTileProps","showMuteIndicator","showCameraSwitcherInLocalPreview","raisedHand","remoteVideoTileProps","remoteVideoViewOptions","isReceiving","pictureInPictureTileAriaLabel","rootAriaLabel","primaryTileProps","videoGallery","onLongTouch","orientation","secondaryTileProps","personaMinSize","primaryTile","secondaryTile","ConfigurationPageCameraDropdown","cameraGrantedDropdown","ConfigurationPageMicDropdown","micGrantedDropdown","getDropDownList","list","noDuplicates","item","dropdownList","name","deviceType","onRenderTitle","iconType","LocalDeviceSettings","defaultPlaceHolder","cameraLabel","soundLabel","noSpeakersLabel","noCameraLabel","noCamerasLabel","noMicLabel","noMicrophonesLabel","cameraPermissionGranted","micPermissionGranted","microphonePermissionGranted","roleCanUseCamera","roleCanUseMic","hasCameras","hasMicrophones","hasSpeakers","isSafariWithNoSpeakers","cameraLabelId","useId","soundLabelId","Dropdown","placeholder","errorMessage","cameraPermissionDenied","defaultSelectedKey","onChange","index","camera","microphonePermissionDenied","selectedMicrophone","defaultDeviceId","microphone","speakerDropdown","selectedSpeaker","speaker","tokens","Label","DefaultButton","configurationPageVideoEffectsButtonLabel","ariaLabelledby","defaultDevice","isSystemDefault","LocalPreview","cameraButtonProps","localPreviewProps","audio","video","isLocalMicrophoneEnabled","onToggleMic","hasNoSpeakers","hasNoDevices","cameraLoadingString","configurationPageCameraIsLoadingLabel","cameraTurnedOff","previewCameraString","cameraLoading","marginTop","align","color","neutralTertiary","neutralSecondary","devicesButtonStyles","menuStyles","menuItemStyles","M","tooltipDisabledContent","tooltipVideoLoadingContent","showDevicesButton","tooltipContent","VideoGalleryStyles","minHeight","MediaGallery","videoTilesOptions","announcerString","userRole","containerAspectRatio","layoutBasedOnTilePosition","getVideoGalleryLayoutBasedOnLocalOptions","localVideoTileOptions","cameraSwitcherProps","onRenderAvatar","margin","maxHeight","coinSize","dataProvider","remoteVideoTileMenuOptions","isHidden","hostId","drawerMenuHostId","overflowGalleryPosition","galleryStyles","VideoGalleryMemoized","localVideoCameraCycleButtonProps","remoteVideoTileMenu","localVideoTileSize","mediaGalleryContainerStyles","announcementString","ariaLive","localTileOptions","NetworkReconnectTile","meetingCoordinates","networkReconnectTitle","networkReconnectMoreDetails","meetingConferencePhoneInfoModalDialIn","phoneNumber","href","isTollFree","meetingConferencePhoneInfoModalTollFree","meetingConferencePhoneInfoModalToll","meetingConferencePhoneInfoModalMeetingId","conferenceId","marginLeft","meetingConferencePhoneInfoModalWait","modalStyles","isBlocking","fontWeight","fontSize","iconButtonStyles","closeButtonLabel","childrenGap","buttonTextStyles","top","right","neutralPrimary","rootHovered","neutralDark","overrideSidePane","renderingOnlyHiddenContent","renderer","persistRenderingWhenClosed","widthConstrainedStyles","paneStyles","Header","EmptyElement","overrideSidePaneId","LegacyHeader","noop","activeTab","HeaderToRender","ContentRenderer","OverrideContentRenderer","tabIndex","SidePaneContext","SidePaneProvider","useSidePaneContext","useIsSidePaneOpen","useIsParticularSidePaneOpen","sidePaneId","VIDEO_EFFECTS_SIDE_PANE_ID","VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM","videoEffectsPaneTitle","latestVideoEffectError","updateFocusHandle","createRef","activeVideoEffectError","activeVideoEffectChange","setTimeout","togglePane","closeVideoEffectsPane","toggleVideoEffectsPane","StartCallButton","rejoinCall","rejoinCallButtonLabel","startCallButtonLabel","hideIcon","SvgWithWordWrapping","lineHeightPx","bufferHeightPx","svgRef","calculationTextElement","visibleTextElement","setHeight","useLayoutEffect","numLines","convertTextToWrappedText","xmlns","visibility","x","y","inputTextElement","outputTextElement","words","textContent","split","line","testLine","getSubStringLength","newLine","constructTSpanLine","appendChild","tspan","document","createElementNS","setAttribute","turnVideoOnCapability","enableDeviceSelectionMenu","splitButtonsForDeviceSelection","componentRef","compactMode","hangUpButtonProps","endCallDiaglogLabels","endCallConfirmButtonLabel","endCallConfirmDialogTitle","leaveConfirmDialogContent","close","leaveDiaglogLabels","leaveConfirmButtonLabel","leaveConfirmDialogTitle","dialogLabels","setDialogLabels","showHangUpConfirm","setShowHangUpConfirm","toggleConfirm","onHangUpConfirm","hangUpForEveryone","hangUpOverride","disableEndCallModal","enableEndCallMenu","hangUpCancelButtonLabel","microphoneButtonProps","unmuteMicCapability","raiseHandButtonDisabled","reactionButtonProps","reactionButtonDisabled","screenShareButtonProps","useAdaptedSelector","selector","selectorProps","useSelectorWithAdaptation","adaptCompositeState","adaptState","mounted","callConfigProps","setProps","propRef","newProps","memoizeState","incomingCalls","incomingCallsEnded","memoizeCalls","compositeState","_component","createCompositeHandlers","onRaiseHand","onLowerHand","localParticipantRaisedHand","deviceInfo","rawIds","onStartScreenShare","onStopScreenShare","onStartLocalVideo","backgroundBlurConfig","backgroundReplacementConfig","replacementConfig","spotlightParticipant"],"sourceRoot":""}